@next-bricks/diagram 0.62.0 → 0.62.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/dist/bricks.json +5 -5
  2. package/dist/chunks/{1889.84d5fe0f.js → 1889.a5a21c16.js} +2 -2
  3. package/dist/chunks/1889.a5a21c16.js.map +1 -0
  4. package/dist/chunks/{5552.6136a8f6.js → 3171.5a8dfbd7.js} +2 -2
  5. package/dist/chunks/{5552.6136a8f6.js.map → 3171.5a8dfbd7.js.map} +1 -1
  6. package/dist/chunks/3233.941a4709.js +3 -0
  7. package/dist/chunks/{3233.e54dfc18.js.map → 3233.941a4709.js.map} +1 -1
  8. package/dist/chunks/{3933.14b96cfd.js → 3933.a17e8eee.js} +2 -2
  9. package/dist/chunks/{3933.14b96cfd.js.map → 3933.a17e8eee.js.map} +1 -1
  10. package/dist/chunks/4306.ace26fca.js +2 -0
  11. package/dist/chunks/4306.ace26fca.js.map +1 -0
  12. package/dist/chunks/{7218.9c885a02.js → 4837.c9d5ffd2.js} +2 -2
  13. package/dist/chunks/{4837.261ba274.js.map → 4837.c9d5ffd2.js.map} +1 -1
  14. package/dist/chunks/{3171.220e6979.js → 5552.5435b269.js} +2 -2
  15. package/dist/chunks/{3171.220e6979.js.map → 5552.5435b269.js.map} +1 -1
  16. package/dist/chunks/{6314.dda14136.js → 6314.d7fb300d.js} +2 -2
  17. package/dist/chunks/{6314.dda14136.js.map → 6314.d7fb300d.js.map} +1 -1
  18. package/dist/chunks/{4837.261ba274.js → 7218.84b9d5ad.js} +2 -2
  19. package/dist/chunks/{7218.9c885a02.js.map → 7218.84b9d5ad.js.map} +1 -1
  20. package/dist/chunks/{7721.ee387dd7.js → 7721.e7aaf5c2.js} +3 -3
  21. package/dist/chunks/7721.e7aaf5c2.js.map +1 -0
  22. package/dist/chunks/7770.c839e46e.js +2 -0
  23. package/dist/chunks/7770.c839e46e.js.map +1 -0
  24. package/dist/chunks/9140.6ada4433.js +3 -0
  25. package/dist/chunks/9140.6ada4433.js.map +1 -0
  26. package/dist/chunks/{9515.2b74919b.js → 9515.fa372b62.js} +2 -2
  27. package/dist/chunks/9515.fa372b62.js.map +1 -0
  28. package/dist/chunks/9711.756e94c9.js +2 -0
  29. package/dist/chunks/{9711.7749f54b.js.map → 9711.756e94c9.js.map} +1 -1
  30. package/dist/chunks/{4731.f7228bc1.js → 9789.61a352b0.js} +2 -2
  31. package/dist/chunks/{4731.f7228bc1.js.map → 9789.61a352b0.js.map} +1 -1
  32. package/dist/chunks/{9844.4ab00110.js → 9844.4a3a83f7.js} +2 -2
  33. package/dist/chunks/{9844.4ab00110.js.map → 9844.4a3a83f7.js.map} +1 -1
  34. package/dist/chunks/eo-display-canvas.2c6cf897.js +2 -0
  35. package/dist/chunks/{eo-display-canvas.35e32036.js.map → eo-display-canvas.2c6cf897.js.map} +1 -1
  36. package/dist/chunks/eo-draw-canvas.b0a01d80.js +2 -0
  37. package/dist/chunks/{eo-draw-canvas.dec82ab5.js.map → eo-draw-canvas.b0a01d80.js.map} +1 -1
  38. package/dist/chunks/main.76d93db0.js +2 -0
  39. package/dist/chunks/{main.01356045.js.map → main.76d93db0.js.map} +1 -1
  40. package/dist/examples.json +3 -3
  41. package/dist/{index.71efca51.js → index.8b26701d.js} +2 -2
  42. package/dist/{index.71efca51.js.map → index.8b26701d.js.map} +1 -1
  43. package/dist/manifest.json +165 -165
  44. package/dist/types.json +4961 -4961
  45. package/package.json +2 -2
  46. package/dist/chunks/1889.84d5fe0f.js.map +0 -1
  47. package/dist/chunks/3233.e54dfc18.js +0 -3
  48. package/dist/chunks/4185.5980959e.js +0 -3
  49. package/dist/chunks/4185.5980959e.js.map +0 -1
  50. package/dist/chunks/4306.af11344a.js +0 -2
  51. package/dist/chunks/4306.af11344a.js.map +0 -1
  52. package/dist/chunks/7721.ee387dd7.js.map +0 -1
  53. package/dist/chunks/7770.1b0932eb.js +0 -2
  54. package/dist/chunks/7770.1b0932eb.js.map +0 -1
  55. package/dist/chunks/9515.2b74919b.js.map +0 -1
  56. package/dist/chunks/9711.7749f54b.js +0 -2
  57. package/dist/chunks/eo-display-canvas.35e32036.js +0 -2
  58. package/dist/chunks/eo-draw-canvas.dec82ab5.js +0 -2
  59. package/dist/chunks/main.01356045.js +0 -2
  60. /package/dist/chunks/{3233.e54dfc18.js.LICENSE.txt → 3233.941a4709.js.LICENSE.txt} +0 -0
  61. /package/dist/chunks/{7721.ee387dd7.js.LICENSE.txt → 7721.e7aaf5c2.js.LICENSE.txt} +0 -0
  62. /package/dist/chunks/{4185.5980959e.js.LICENSE.txt → 9140.6ada4433.js.LICENSE.txt} +0 -0
@@ -1,2 +1,2 @@
1
- "use strict";(globalThis.webpackChunk_next_bricks_diagram=globalThis.webpackChunk_next_bricks_diagram||[]).push([[4731],{733:(t,e,r)=>{function i(t,e,r,i){const o=r?n(t,r):t,h=i?n(e,i):e,s=Math.min(o.x-o.width/2,h.x-h.width/2),y=Math.max(o.x+o.width/2,h.x+h.width/2),x=Math.min(o.y-o.height/2,h.y-h.height/2),a=Math.max(o.y+o.height/2,h.y+h.height/2);return y-s<o.width+h.width&&a-x<o.height+h.height}function n(t,e){return{x:t.x-t.width/2-e,y:t.y-t.height/2-e,width:t.width+2*e,height:t.height+2*e}}r.d(e,{w:()=>i})},3188:(t,e,r)=>{r.d(e,{h:()=>o});var i=r(733),n=r(4525);function o(t,e,r,n){const o=!(null==n||!n.exitPosition),s=!(null==n||!n.entryPosition);if(t===e||(0,i.w)(t,e,0,0)&&!o&&!s)return null;let y,x,a=0,c=0;if(r){const i=e.x-t.x,n=e.y-t.y,o=Math.atan2(n,i);a=r/2*Math.cos(o+Math.PI/2),c=r/2*Math.sin(o+Math.PI/2)}const l=[o?[t.x+(n.exitPosition.x-.5)*t.width,t.y+(n.exitPosition.y-.5)*t.height]:[t.x+a,t.y+c],s?[e.x+(n.entryPosition.x-.5)*e.width,e.y+(n.entryPosition.y-.5)*e.height]:[e.x+a,e.y+c]];if(o)y=l[0];else{const e=h(t,l);y=e.length>0?e[0]:[t.x,t.y]}if(s)x=l[1];else{const t=h(e,l);x=t.length>0?t[0]:[e.x,e.y]}return[{x:y[0],y:y[1]},{x:x[0],y:x[1]}]}function h(t,e){const r=[[t.x-t.width/2,t.y-t.height/2],[t.x+t.width/2,t.y-t.height/2],[t.x+t.width/2,t.y+t.height/2],[t.x-t.width/2,t.y+t.height/2]],i=[];for(let t=0;t<4;t++)i.push([r[t],r[(t+1)%4]]);const o=[];for(const t of i){const r=(0,n.y)(e[0],e[1],t[0],t[1]);r&&o.push(r)}return o}},3739:(t,e,r)=>{r.d(e,{c:()=>o});var i=r(8769),n=r.n(i);function o(t){let e,{id:r,type:i,strokeColor:o}=t;switch(i){case"0..1":e=y;break;case"0..N":e=x;break;case"circle":e=h;break;default:e=s}return n().createElement(e,{id:r,strokeColor:o})}function h(t){let{id:e,strokeColor:r}=t;return n().createElement("marker",{viewBox:"0 0 9 9",refX:3,refY:3,id:e,overflow:"visible",markerWidth:9,markerHeight:9},n().createElement("circle",{stroke:"none",fill:r,cx:3,cy:3,r:3}))}function s(t){let{id:e,strokeColor:r}=t;return n().createElement("marker",{id:e,viewBox:"0 0 6 6",refX:5,refY:3,markerWidth:6,markerHeight:6,orient:"auto-start-reverse",strokeLinejoin:"round"},n().createElement("path",{d:"M 0.5 0.5 L 5.5 3 L 0.5 5.5 z",stroke:r,strokeWidth:1,fill:r}))}function y(t){let{id:e,strokeColor:r}=t;return n().createElement("marker",{id:e,viewBox:"0 0 21 11",refX:.5,refY:5.5,markerWidth:21,markerHeight:11,orient:"auto-start-reverse"},n().createElement("path",{d:"M 5.5 5.5 m 5 0 a 5 5 0 1 0 -10 0 a 5 5 0 1 0 10 0 M 15.5 0.5 V 10.5 M 10.5 5.5 H 20.5",stroke:r,strokeWidth:1,fill:"none"}))}function x(t){let{id:e,strokeColor:r}=t;return n().createElement("marker",{id:e,viewBox:"0 0 21 11",refX:.5,refY:5.5,markerWidth:21,markerHeight:11,orient:"auto-start-reverse"},n().createElement("path",{d:"M 5.5 5.5 m 5 0 a 5 5 0 1 0 -10 0 a 5 5 0 1 0 10 0 M 20.5 0.5 L 10.5 5.5 L 20.5 10.5 M 10.5 5.5 H 20.5",stroke:r,strokeWidth:1,fill:"none"}))}},4059:(t,e,r)=>{r.d(e,{o:()=>n});const i=20;function n(t,e,r,n,h,s){const y=o(t,r,h),x=o(e,n,s);let a=[],c=!1;const l="top"===r||"bottom"===r;if(l!==("top"===n||"bottom"===n)){let o,h,s,u,f,d;l?(o=e,h=t,s="right"===n?1:-1,u="bottom"===r?1:-1,f=x,d=y):(o=t,h=e,s="right"===r?1:-1,u="bottom"===n?1:-1,f=y,d=x,c=!0);const g=f.x+i*s,k=d.y+i*u;if((o.x-h.x)*s>=0)if((h.y-o.y)*u>=0)a=[{x:d.x,y:k},{x:g,y:k},{x:g,y:f.y}];else{const t=h.y+(h.height/2+i)*u,e=o.y-(o.height/2+i)*u;if((e-t)*u>=0){const r=(t+e)/2;a=[{x:d.x,y:r},{x:g,y:r},{x:g,y:f.y}]}else{const r=(h.x+h.width/2*s+o.x-o.width/2*s)/2;a=[{x:d.x,y:t},{x:r,y:t},{x:r,y:e},{x:g,y:e},{x:g,y:f.y}]}}else if((f.y-k)*u>=0)if((d.x-g)*s>=0)a=[{x:d.x,y:f.y}];else{const t=(h.y+(h.height/2+i)*u+(o.y-(o.height/2+i)*u))/2;a=[{x:d.x,y:t},{x:g,y:t},{x:g,y:f.y}]}else{const t=h.x-(h.width/2+i)*s;if((t-g)*s>=0){const e=(t+g)/2;a=[{x:d.x,y:k},{x:e,y:k},{x:e,y:f.y}]}else{const e=(h.y-h.height/2*u+o.y+o.height/2*u)/2;a=[{x:d.x,y:k},{x:t,y:k},{x:t,y:e},{x:g,y:e},{x:g,y:f.y}]}}}else if(r===n){const n="bottom"===r||"right"===r?1:-1;let o,h,s,u;const f=l?"y":"x",d=l?"x":"y";let g,k,m,w;e[f]<t[f]?(o=e,h=t,s=x,u=y,c=1===n):(o=t,h=e,s=y,u=x,c=1!==n),1===n?(g=h,k=o,m=u,w=s):(g=o,k=h,m=s,w=u);const M=g===(e[d]<t[d]?t:e)?1:-1;if(l){const t=g.x-(g.width/2+i)*M,e=m.y+i*n;if((t-w.x)*M>=0)a=[{x:w.x,y:e},{x:m.x,y:e}];else{const r=(k.y+k.height/2*n+g.y-g.height/2*n)/2;a=[{x:w.x,y:r},{x:t,y:r},{x:t,y:e},{x:m.x,y:e}]}}else{const t=m.x+i*n,e=g.y-(g.height/2+i)*M;if((e-w.y)*M>=0)a=[{x:t,y:w.y},{x:t,y:m.y}];else{const r=(k.x+k.width/2*n+g.x-g.width/2*n)/2;a=[{x:r,y:w.y},{x:r,y:e},{x:t,y:e},{x:t,y:m.y}]}}}else{const r="bottom"===n||"right"===n?1:-1;let o,h,s,c;l?(o="y",h="x",s="height",c="width"):(o="x",h="y",s="width",c="height");const u=e[o]+e[s]/2*r,f=t[o]-t[s]/2*r,d=u+i*r,g=f-i*r,k=y[h]===x[h];if((g-d)*r>=0){const t=(g+d)/2;a=k?[]:[{[h]:y[h],[o]:t},{[h]:x[h],[o]:t}]}else if(k&&(f-u)*r>=0)a=[];else{const n=e[h]<t[h]?-1:1,l=t[h]+(t[c]/2+i)*n,u=e[h]-(e[c]/2+i)*n;if((u-l)*n>=0||Math.abs((g-d)*r)<i){const t=(l+u)/2;a=[{[h]:y[h],[o]:g},{[h]:t,[o]:g},{[h]:t,[o]:d},{[h]:x[h],[o]:d}]}else{const i=(t[o]+t[s]/2*r+e[o]-e[s]/2*r)/2;a=[{[h]:y[h],[o]:g},{[h]:l,[o]:g},{[h]:l,[o]:i},{[h]:u,[o]:i},{[h]:u,[o]:d},{[h]:x[h],[o]:d}]}}}return c&&a.reverse(),[y,...a,x]}function o(t,e,r){const{x:i,y:n,width:o,height:h}=t;switch(e){case"top":return{x:i-o/2+o*r,y:n-h/2};case"bottom":return{x:i-o/2+o*r,y:n+h/2};case"left":return{x:i-o/2,y:n-h/2+h*r};case"right":return{x:i+o/2,y:n-h/2+h*r}}}},4525:(t,e,r)=>{function i(t,e,r,i){let[n,o]=t,[h,s]=e,[y,x]=r,[a,c]=i;if(n===h&&o===s||y===a&&x===c)return null;const l=(c-x)*(h-n)-(a-y)*(s-o);if(0===l)return null;const u=((a-y)*(o-x)-(c-x)*(n-y))/l,f=((h-n)*(o-x)-(s-o)*(n-y))/l;return u<0||u>1||f<0||f>1?null:[n+u*(h-n),o+u*(s-o)]}r.d(e,{y:()=>i})},8653:(t,e,r)=>{r.d(e,{S:()=>x});var i=r(482),n=r(4643),o=r(3488),h=r(6066),s=r(4993),y=r(3269);function x(t,e,r,x,c){if(!Array.isArray(t))return"";let l;switch(e){case"curveLinear":l=i.A;break;case"curveBumpX":l=n.dJ;break;case"curveBumpY":l=n.kl;break;case"curveMonotoneX":l=o.G;break;case"curveMonotoneY":l=o.N;break;case"curveNatural":l=h.A;break;default:l=s.Ay}const u=a(t[1],t[0],r),f=a(t[t.length-2],t[t.length-1],x),d=(0,y.A)().x(((e,r)=>e.x-(0===r?u.x:r===t.length-1?f.x:0))).y(((e,r)=>e.y-(0===r?u.y:r===t.length-1?f.y:0))).curve(l);if(c&&"curveLinear"==e){const e=[];for(let r=0;r<t.length-1;r++){const i=t[r],n=t[r+1];0===r&&e.push(`M${i.x},${i.y}`);const o=c.get(r);if(o){const t=n.x-i.x,r=n.y-i.y,h=Math.atan2(r,t),s=Math.abs(h)<=Math.PI/2?-1:1,y=h+Math.PI/2*s,x=1.3*o.radius*Math.cos(y),a=1.3*o.radius*Math.sin(y),c=o.radius*Math.cos(h),l=o.radius*Math.sin(h);for(const t of o.jumpPoints){const r=t.x-c,i=t.y-l,n=t.x+c,o=t.y+l;e.push(`L${r},${i}`),e.push(`C${r+x},${i+a} ${n+x},${o+a} ${n},${o}`)}}e.push(`L${n.x},${n.y}`)}return e.join("")}return d(t)}function a(t,e,r){if(!r)return{x:0,y:0};const{x:i,y:n}=t,{x:o,y:h}=e,s=r/Math.sqrt(Math.pow(o-i,2)+Math.pow(h-n,2));return{x:(o-i)*s,y:(h-n)*s}}},8802:(t,e,r)=>{function i(t){if(Array.isArray(t)){const e=t[0],r=t.length>1?t[1]:e;return[e,r,t.length>2?t[2]:e,t.length>3?t[3]:r]}return new Array(4).fill(t)}r.d(e,{D:()=>i})}}]);
2
- //# sourceMappingURL=4731.f7228bc1.js.map
1
+ "use strict";(globalThis.webpackChunk_next_bricks_diagram=globalThis.webpackChunk_next_bricks_diagram||[]).push([[9789],{733:(t,e,r)=>{function i(t,e,r,i){const o=r?n(t,r):t,h=i?n(e,i):e,s=Math.min(o.x-o.width/2,h.x-h.width/2),y=Math.max(o.x+o.width/2,h.x+h.width/2),x=Math.min(o.y-o.height/2,h.y-h.height/2),a=Math.max(o.y+o.height/2,h.y+h.height/2);return y-s<o.width+h.width&&a-x<o.height+h.height}function n(t,e){return{x:t.x-t.width/2-e,y:t.y-t.height/2-e,width:t.width+2*e,height:t.height+2*e}}r.d(e,{w:()=>i})},3188:(t,e,r)=>{r.d(e,{h:()=>o});var i=r(733),n=r(4525);function o(t,e,r,n){const o=!(null==n||!n.exitPosition),s=!(null==n||!n.entryPosition);if(t===e||(0,i.w)(t,e,0,0)&&!o&&!s)return null;let y,x,a=0,c=0;if(r){const i=e.x-t.x,n=e.y-t.y,o=Math.atan2(n,i);a=r/2*Math.cos(o+Math.PI/2),c=r/2*Math.sin(o+Math.PI/2)}const l=[o?[t.x+(n.exitPosition.x-.5)*t.width,t.y+(n.exitPosition.y-.5)*t.height]:[t.x+a,t.y+c],s?[e.x+(n.entryPosition.x-.5)*e.width,e.y+(n.entryPosition.y-.5)*e.height]:[e.x+a,e.y+c]];if(o)y=l[0];else{const e=h(t,l);y=e.length>0?e[0]:[t.x,t.y]}if(s)x=l[1];else{const t=h(e,l);x=t.length>0?t[0]:[e.x,e.y]}return[{x:y[0],y:y[1]},{x:x[0],y:x[1]}]}function h(t,e){const r=[[t.x-t.width/2,t.y-t.height/2],[t.x+t.width/2,t.y-t.height/2],[t.x+t.width/2,t.y+t.height/2],[t.x-t.width/2,t.y+t.height/2]],i=[];for(let t=0;t<4;t++)i.push([r[t],r[(t+1)%4]]);const o=[];for(const t of i){const r=(0,n.y)(e[0],e[1],t[0],t[1]);r&&o.push(r)}return o}},3739:(t,e,r)=>{r.d(e,{c:()=>o});var i=r(8769),n=r.n(i);function o(t){let e,{id:r,type:i,strokeColor:o}=t;switch(i){case"0..1":e=y;break;case"0..N":e=x;break;case"circle":e=h;break;default:e=s}return n().createElement(e,{id:r,strokeColor:o})}function h(t){let{id:e,strokeColor:r}=t;return n().createElement("marker",{viewBox:"0 0 9 9",refX:3,refY:3,id:e,overflow:"visible",markerWidth:9,markerHeight:9},n().createElement("circle",{stroke:"none",fill:r,cx:3,cy:3,r:3}))}function s(t){let{id:e,strokeColor:r}=t;return n().createElement("marker",{id:e,viewBox:"0 0 6 6",refX:5,refY:3,markerWidth:6,markerHeight:6,orient:"auto-start-reverse",strokeLinejoin:"round"},n().createElement("path",{d:"M 0.5 0.5 L 5.5 3 L 0.5 5.5 z",stroke:r,strokeWidth:1,fill:r}))}function y(t){let{id:e,strokeColor:r}=t;return n().createElement("marker",{id:e,viewBox:"0 0 21 11",refX:.5,refY:5.5,markerWidth:21,markerHeight:11,orient:"auto-start-reverse"},n().createElement("path",{d:"M 5.5 5.5 m 5 0 a 5 5 0 1 0 -10 0 a 5 5 0 1 0 10 0 M 15.5 0.5 V 10.5 M 10.5 5.5 H 20.5",stroke:r,strokeWidth:1,fill:"none"}))}function x(t){let{id:e,strokeColor:r}=t;return n().createElement("marker",{id:e,viewBox:"0 0 21 11",refX:.5,refY:5.5,markerWidth:21,markerHeight:11,orient:"auto-start-reverse"},n().createElement("path",{d:"M 5.5 5.5 m 5 0 a 5 5 0 1 0 -10 0 a 5 5 0 1 0 10 0 M 20.5 0.5 L 10.5 5.5 L 20.5 10.5 M 10.5 5.5 H 20.5",stroke:r,strokeWidth:1,fill:"none"}))}},4059:(t,e,r)=>{r.d(e,{o:()=>n});const i=20;function n(t,e,r,n,h,s){const y=o(t,r,h),x=o(e,n,s);let a=[],c=!1;const l="top"===r||"bottom"===r;if(l!==("top"===n||"bottom"===n)){let o,h,s,u,f,d;l?(o=e,h=t,s="right"===n?1:-1,u="bottom"===r?1:-1,f=x,d=y):(o=t,h=e,s="right"===r?1:-1,u="bottom"===n?1:-1,f=y,d=x,c=!0);const g=f.x+i*s,k=d.y+i*u;if((o.x-h.x)*s>=0)if((h.y-o.y)*u>=0)a=[{x:d.x,y:k},{x:g,y:k},{x:g,y:f.y}];else{const t=h.y+(h.height/2+i)*u,e=o.y-(o.height/2+i)*u;if((e-t)*u>=0){const r=(t+e)/2;a=[{x:d.x,y:r},{x:g,y:r},{x:g,y:f.y}]}else{const r=(h.x+h.width/2*s+o.x-o.width/2*s)/2;a=[{x:d.x,y:t},{x:r,y:t},{x:r,y:e},{x:g,y:e},{x:g,y:f.y}]}}else if((f.y-k)*u>=0)if((d.x-g)*s>=0)a=[{x:d.x,y:f.y}];else{const t=(h.y+(h.height/2+i)*u+(o.y-(o.height/2+i)*u))/2;a=[{x:d.x,y:t},{x:g,y:t},{x:g,y:f.y}]}else{const t=h.x-(h.width/2+i)*s;if((t-g)*s>=0){const e=(t+g)/2;a=[{x:d.x,y:k},{x:e,y:k},{x:e,y:f.y}]}else{const e=(h.y-h.height/2*u+o.y+o.height/2*u)/2;a=[{x:d.x,y:k},{x:t,y:k},{x:t,y:e},{x:g,y:e},{x:g,y:f.y}]}}}else if(r===n){const n="bottom"===r||"right"===r?1:-1;let o,h,s,u;const f=l?"y":"x",d=l?"x":"y";let g,k,m,w;e[f]<t[f]?(o=e,h=t,s=x,u=y,c=1===n):(o=t,h=e,s=y,u=x,c=1!==n),1===n?(g=h,k=o,m=u,w=s):(g=o,k=h,m=s,w=u);const M=g===(e[d]<t[d]?t:e)?1:-1;if(l){const t=g.x-(g.width/2+i)*M,e=m.y+i*n;if((t-w.x)*M>=0)a=[{x:w.x,y:e},{x:m.x,y:e}];else{const r=(k.y+k.height/2*n+g.y-g.height/2*n)/2;a=[{x:w.x,y:r},{x:t,y:r},{x:t,y:e},{x:m.x,y:e}]}}else{const t=m.x+i*n,e=g.y-(g.height/2+i)*M;if((e-w.y)*M>=0)a=[{x:t,y:w.y},{x:t,y:m.y}];else{const r=(k.x+k.width/2*n+g.x-g.width/2*n)/2;a=[{x:r,y:w.y},{x:r,y:e},{x:t,y:e},{x:t,y:m.y}]}}}else{const r="bottom"===n||"right"===n?1:-1;let o,h,s,c;l?(o="y",h="x",s="height",c="width"):(o="x",h="y",s="width",c="height");const u=e[o]+e[s]/2*r,f=t[o]-t[s]/2*r,d=u+i*r,g=f-i*r,k=y[h]===x[h];if((g-d)*r>=0){const t=(g+d)/2;a=k?[]:[{[h]:y[h],[o]:t},{[h]:x[h],[o]:t}]}else if(k&&(f-u)*r>=0)a=[];else{const n=e[h]<t[h]?-1:1,l=t[h]+(t[c]/2+i)*n,u=e[h]-(e[c]/2+i)*n;if((u-l)*n>=0||Math.abs((g-d)*r)<i){const t=(l+u)/2;a=[{[h]:y[h],[o]:g},{[h]:t,[o]:g},{[h]:t,[o]:d},{[h]:x[h],[o]:d}]}else{const i=(t[o]+t[s]/2*r+e[o]-e[s]/2*r)/2;a=[{[h]:y[h],[o]:g},{[h]:l,[o]:g},{[h]:l,[o]:i},{[h]:u,[o]:i},{[h]:u,[o]:d},{[h]:x[h],[o]:d}]}}}return c&&a.reverse(),[y,...a,x]}function o(t,e,r){const{x:i,y:n,width:o,height:h}=t;switch(e){case"top":return{x:i-o/2+o*r,y:n-h/2};case"bottom":return{x:i-o/2+o*r,y:n+h/2};case"left":return{x:i-o/2,y:n-h/2+h*r};case"right":return{x:i+o/2,y:n-h/2+h*r}}}},4525:(t,e,r)=>{function i(t,e,r,i){let[n,o]=t,[h,s]=e,[y,x]=r,[a,c]=i;if(n===h&&o===s||y===a&&x===c)return null;const l=(c-x)*(h-n)-(a-y)*(s-o);if(0===l)return null;const u=((a-y)*(o-x)-(c-x)*(n-y))/l,f=((h-n)*(o-x)-(s-o)*(n-y))/l;return u<0||u>1||f<0||f>1?null:[n+u*(h-n),o+u*(s-o)]}r.d(e,{y:()=>i})},8653:(t,e,r)=>{r.d(e,{S:()=>x});var i=r(482),n=r(4643),o=r(3488),h=r(6066),s=r(4993),y=r(3269);function x(t,e,r,x,c){if(!Array.isArray(t))return"";let l;switch(e){case"curveLinear":l=i.A;break;case"curveBumpX":l=n.dJ;break;case"curveBumpY":l=n.kl;break;case"curveMonotoneX":l=o.G;break;case"curveMonotoneY":l=o.N;break;case"curveNatural":l=h.A;break;default:l=s.Ay}const u=a(t[1],t[0],r),f=a(t[t.length-2],t[t.length-1],x),d=(0,y.A)().x(((e,r)=>e.x-(0===r?u.x:r===t.length-1?f.x:0))).y(((e,r)=>e.y-(0===r?u.y:r===t.length-1?f.y:0))).curve(l);if(c&&"curveLinear"==e){const e=[];for(let r=0;r<t.length-1;r++){const i=t[r],n=t[r+1];0===r&&e.push(`M${i.x},${i.y}`);const o=c.get(r);if(o){const t=n.x-i.x,r=n.y-i.y,h=Math.atan2(r,t),s=Math.abs(h)<=Math.PI/2?-1:1,y=h+Math.PI/2*s,x=1.3*o.radius*Math.cos(y),a=1.3*o.radius*Math.sin(y),c=o.radius*Math.cos(h),l=o.radius*Math.sin(h);for(const t of o.jumpPoints){const r=t.x-c,i=t.y-l,n=t.x+c,o=t.y+l;e.push(`L${r},${i}`),e.push(`C${r+x},${i+a} ${n+x},${o+a} ${n},${o}`)}}e.push(`L${n.x},${n.y}`)}return e.join("")}return d(t)}function a(t,e,r){if(!r)return{x:0,y:0};const{x:i,y:n}=t,{x:o,y:h}=e,s=r/Math.sqrt(Math.pow(o-i,2)+Math.pow(h-n,2));return{x:(o-i)*s,y:(h-n)*s}}},8802:(t,e,r)=>{function i(t){if(Array.isArray(t)){const e=t[0],r=t.length>1?t[1]:e;return[e,r,t.length>2?t[2]:e,t.length>3?t[3]:r]}return new Array(4).fill(t)}r.d(e,{D:()=>i})}}]);
2
+ //# sourceMappingURL=9789.61a352b0.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chunks/4731.f7228bc1.js","mappings":"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","sources":["webpack:///./src/diagram/processors/doTwoNodesOverlap.ts","webpack:///./src/diagram/lines/getDirectLinePoints.ts","webpack:///./src/diagram/MarkerComponent.tsx","webpack:///./src/diagram/lines/getPolyLinePoints.ts","webpack:///./src/diagram/lines/intersect.ts","webpack:///./src/diagram/lines/curveLine.ts","webpack:///./src/diagram/processors/extractPartialRectTuple.ts"],"sourcesContent":["import type { NodeRect } from \"../interfaces\";\n\nexport function doTwoNodesOverlap(\n a: NodeRect,\n b: NodeRect,\n paddingA: number,\n paddingB: number\n): boolean {\n const A = paddingA ? getNodesWithPadding(a, paddingA) : a;\n const B = paddingB ? getNodesWithPadding(b, paddingB) : b;\n const left = Math.min(A.x - A.width / 2, B.x - B.width / 2);\n const right = Math.max(A.x + A.width / 2, B.x + B.width / 2);\n const top = Math.min(A.y - A.height / 2, B.y - B.height / 2);\n const bottom = Math.max(A.y + A.height / 2, B.y + B.height / 2);\n return right - left < A.width + B.width && bottom - top < A.height + B.height;\n}\n\nfunction getNodesWithPadding(node: NodeRect, padding: number) {\n return {\n x: node.x - node.width / 2 - padding,\n y: node.y - node.height / 2 - padding,\n width: node.width + padding * 2,\n height: node.height + padding * 2,\n };\n}\n","import type { EdgeView } from \"../../draw-canvas/interfaces\";\nimport type { NodePosition, NodeRect, PositionTuple } from \"../interfaces\";\nimport { doTwoNodesOverlap } from \"../processors/doTwoNodesOverlap\";\nimport { intersect } from \"./intersect\";\n\ntype LineTuple = [start: PositionTuple, end: PositionTuple];\n\nexport function getDirectLinePoints(\n source: NodeRect,\n target: NodeRect,\n parallelGap?: number,\n edgeView?: EdgeView\n): NodePosition[] | null {\n const hasExitPosition = !!edgeView?.exitPosition;\n const hasEntryPosition = !!edgeView?.entryPosition;\n\n // Ignore if two nodes are the same.\n // Ignore if two nodes overlap and no entry nor exit position.\n if (\n source === target ||\n (doTwoNodesOverlap(source, target, 0, 0) &&\n !(hasExitPosition || hasEntryPosition))\n ) {\n return null;\n }\n\n let p0: PositionTuple;\n let p1: PositionTuple;\n\n let xDiff = 0;\n let yDiff = 0;\n\n if (parallelGap) {\n const dx = target.x - source.x;\n const dy = target.y - source.y;\n const angle = Math.atan2(dy, dx);\n xDiff = (parallelGap / 2) * Math.cos(angle + Math.PI / 2);\n yDiff = (parallelGap / 2) * Math.sin(angle + Math.PI / 2);\n }\n\n const line: LineTuple = [\n hasExitPosition\n ? [\n source.x + (edgeView!.exitPosition!.x - 0.5) * source.width,\n source.y + (edgeView!.exitPosition!.y - 0.5) * source.height,\n ]\n : [source.x + xDiff, source.y + yDiff],\n hasEntryPosition\n ? [\n target.x + (edgeView!.entryPosition!.x - 0.5) * target.width,\n target.y + (edgeView!.entryPosition!.y - 0.5) * target.height,\n ]\n : [target.x + xDiff, target.y + yDiff],\n ];\n\n if (hasExitPosition) {\n p0 = line[0];\n } else {\n const sourceIntersections = getIntersections(source, line);\n // Todo: handle when more than one intersection\n if (sourceIntersections.length > 0) {\n p0 = sourceIntersections[0];\n } else {\n p0 = [source.x, source.y];\n }\n }\n\n if (hasEntryPosition) {\n p1 = line[1];\n } else {\n const targetIntersections = getIntersections(target, line);\n // Todo: handle when more than one intersection\n if (targetIntersections.length > 0) {\n p1 = targetIntersections[0];\n } else {\n p1 = [target.x, target.y];\n }\n }\n\n return [\n { x: p0[0], y: p0[1] },\n { x: p1[0], y: p1[1] },\n ];\n}\n\nfunction getIntersections(rect: NodeRect, line: LineTuple) {\n const vertices: PositionTuple[] = [\n [rect.x - rect.width / 2, rect.y - rect.height / 2],\n [rect.x + rect.width / 2, rect.y - rect.height / 2],\n [rect.x + rect.width / 2, rect.y + rect.height / 2],\n [rect.x - rect.width / 2, rect.y + rect.height / 2],\n ];\n const possibleLines: [start: PositionTuple, end: PositionTuple][] = [];\n for (let i = 0; i < 4; i++) {\n possibleLines.push([vertices[i], vertices[(i + 1) % 4]]);\n }\n const intersections: PositionTuple[] = [];\n for (const item of possibleLines) {\n const intersection = intersect(line[0], line[1], item[0], item[1]);\n if (intersection) {\n intersections.push(intersection);\n }\n }\n return intersections;\n}\n","import React from \"react\";\nimport type { LineMarkerType } from \"./interfaces\";\n\nexport interface MarkerComponentProps extends BaseMarkerComponentProps {\n type: LineMarkerType;\n}\n\nexport interface BaseMarkerComponentProps {\n id: string;\n strokeColor?: string;\n}\n\nexport function MarkerComponent({\n id,\n type,\n strokeColor,\n}: MarkerComponentProps): JSX.Element {\n let Component: (props: BaseMarkerComponentProps) => JSX.Element;\n\n switch (type) {\n case \"0..1\":\n Component = EntityRelationZeroOrOneMarker;\n break;\n case \"0..N\":\n Component = EntityRelationZeroOrManyMarker;\n break;\n case \"circle\":\n Component = CircleMarker;\n break;\n default:\n Component = ArrowMarker;\n }\n return <Component id={id} strokeColor={strokeColor} />;\n}\n\nfunction CircleMarker({\n id,\n strokeColor,\n}: BaseMarkerComponentProps): JSX.Element {\n const r = 3;\n const d = r * 3;\n return (\n <marker\n viewBox={`0 0 ${d} ${d}`}\n refX={r}\n refY={r}\n id={id}\n overflow=\"visible\"\n markerWidth={d}\n markerHeight={d}\n >\n <circle stroke=\"none\" fill={strokeColor} cx={r} cy={r} r={r} />\n </marker>\n );\n}\n\nfunction ArrowMarker({\n id,\n strokeColor,\n}: BaseMarkerComponentProps): JSX.Element {\n return (\n <marker\n id={id}\n viewBox=\"0 0 6 6\"\n refX={5}\n refY={3}\n markerWidth={6}\n markerHeight={6}\n orient=\"auto-start-reverse\"\n strokeLinejoin=\"round\"\n >\n <path\n d=\"M 0.5 0.5 L 5.5 3 L 0.5 5.5 z\"\n stroke={strokeColor}\n strokeWidth={1}\n fill={strokeColor}\n />\n </marker>\n );\n}\n\nfunction EntityRelationZeroOrOneMarker({\n id,\n strokeColor,\n}: BaseMarkerComponentProps): JSX.Element {\n return (\n <marker\n id={id}\n viewBox=\"0 0 21 11\"\n refX={0.5}\n refY={5.5}\n markerWidth={21}\n markerHeight={11}\n orient=\"auto-start-reverse\"\n >\n <path\n d=\"M 5.5 5.5 m 5 0 a 5 5 0 1 0 -10 0 a 5 5 0 1 0 10 0 M 15.5 0.5 V 10.5 M 10.5 5.5 H 20.5\"\n stroke={strokeColor}\n strokeWidth={1}\n fill=\"none\"\n />\n </marker>\n );\n}\n\nfunction EntityRelationZeroOrManyMarker({\n id,\n strokeColor,\n}: BaseMarkerComponentProps): JSX.Element {\n return (\n <marker\n id={id}\n viewBox=\"0 0 21 11\"\n refX={0.5}\n refY={5.5}\n markerWidth={21}\n markerHeight={11}\n orient=\"auto-start-reverse\"\n >\n <path\n d=\"M 5.5 5.5 m 5 0 a 5 5 0 1 0 -10 0 a 5 5 0 1 0 10 0 M 20.5 0.5 L 10.5 5.5 L 20.5 10.5 M 10.5 5.5 H 20.5\"\n stroke={strokeColor}\n strokeWidth={1}\n fill=\"none\"\n />\n </marker>\n );\n}\n","import type { Direction, NodePosition, NodeRect } from \"../interfaces\";\n\nconst MINIMAL_OFFSET = 20;\n\nexport function getPolyLinePoints(\n source: NodeRect,\n target: NodeRect,\n sourceDirection: Direction,\n targetDirection: Direction,\n sourcePosition: number,\n targetPosition: number\n): NodePosition[] {\n const p0 = getCoordinates(source, sourceDirection, sourcePosition);\n const p1 = getCoordinates(target, targetDirection, targetPosition);\n\n let controls: NodePosition[] = [];\n let reverseControls = false;\n\n const sourceIsVertical =\n sourceDirection === \"top\" || sourceDirection === \"bottom\";\n const targetIsVertical =\n targetDirection === \"top\" || targetDirection === \"bottom\";\n\n if (sourceIsVertical !== targetIsVertical) {\n // One is vertical and the other is horizontal\n let horizontal: NodeRect;\n let vertical: NodeRect;\n let horizontalSign: number;\n let verticalSign: number;\n let horizontalPosition: NodePosition;\n let verticalPosition: NodePosition;\n if (sourceIsVertical) {\n horizontal = target;\n vertical = source;\n horizontalSign = targetDirection === \"right\" ? 1 : -1;\n verticalSign = sourceDirection === \"bottom\" ? 1 : -1;\n horizontalPosition = p1;\n verticalPosition = p0;\n } else {\n horizontal = source;\n vertical = target;\n horizontalSign = sourceDirection === \"right\" ? 1 : -1;\n verticalSign = targetDirection === \"bottom\" ? 1 : -1;\n horizontalPosition = p0;\n verticalPosition = p1;\n reverseControls = true;\n }\n\n const defaultControlX =\n horizontalPosition.x + MINIMAL_OFFSET * horizontalSign;\n const defaultControlY = verticalPosition.y + MINIMAL_OFFSET * verticalSign;\n\n if ((horizontal.x - vertical.x) * horizontalSign >= 0) {\n if ((vertical.y - horizontal.y) * verticalSign >= 0) {\n // ┌──────────────┐\n // ┌──┴──┐ ┌─────┐ │\n // │ S │ │ T ├─┘\n // └─────┘ └─────┘\n controls = [\n { x: verticalPosition.x, y: defaultControlY },\n { x: defaultControlX, y: defaultControlY },\n { x: defaultControlX, y: horizontalPosition.y },\n ];\n } else {\n const controlY0 =\n vertical.y + (vertical.height / 2 + MINIMAL_OFFSET) * verticalSign;\n const controlY1 =\n horizontal.y -\n (horizontal.height / 2 + MINIMAL_OFFSET) * verticalSign;\n if ((controlY1 - controlY0) * verticalSign >= 0) {\n // ┌─────┐\n // │ T ├─┐\n // └─────┘ │\n // ┌────────┘\n // ┌──┴──┐\n // │ S │\n // └─────┘\n const middleY = (controlY0 + controlY1) / 2;\n controls = [\n { x: verticalPosition.x, y: middleY },\n { x: defaultControlX, y: middleY },\n { x: defaultControlX, y: horizontalPosition.y },\n ];\n } else {\n // ┌─────┐\n // ┌────┐ │ T ├─┐\n // ┌──┴──┐ │ └─────┘ │\n // │ S │ └─────────┘\n // └─────┘\n const middleX =\n (vertical.x +\n (vertical.width / 2) * horizontalSign +\n horizontal.x -\n (horizontal.width / 2) * horizontalSign) /\n 2;\n controls = [\n { x: verticalPosition.x, y: controlY0 },\n { x: middleX, y: controlY0 },\n { x: middleX, y: controlY1 },\n { x: defaultControlX, y: controlY1 },\n { x: defaultControlX, y: horizontalPosition.y },\n ];\n }\n }\n } else if ((horizontalPosition.y - defaultControlY) * verticalSign >= 0) {\n if ((verticalPosition.x - defaultControlX) * horizontalSign >= 0) {\n // ┌─────┐\n // ┌──┤ T │\n // │ └─────┘\n // ┌──┴──┐\n // │ S │\n // └─────┘\n controls = [{ x: verticalPosition.x, y: horizontalPosition.y }];\n } else {\n // ┌─────┐\n // │ T ├─┐\n // └─────┘ │\n // ┌─┘\n // ┌──┴──┐\n // │ S │\n // └─────┘\n const controlY0 =\n vertical.y + (vertical.height / 2 + MINIMAL_OFFSET) * verticalSign;\n const controlY1 =\n horizontal.y -\n (horizontal.height / 2 + MINIMAL_OFFSET) * verticalSign;\n const middleY = (controlY0 + controlY1) / 2;\n controls = [\n { x: verticalPosition.x, y: middleY },\n { x: defaultControlX, y: middleY },\n { x: defaultControlX, y: horizontalPosition.y },\n ];\n }\n } else {\n const sourceExtendX =\n vertical.x - (vertical.width / 2 + MINIMAL_OFFSET) * horizontalSign;\n if ((sourceExtendX - defaultControlX) * horizontalSign >= 0) {\n // ┌────┐\n // │ ┌──┴──┐\n // │ │ S │\n // ┌─────┐ │ └─────┘\n // │ T ├─┘\n // └─────┘\n const middleX = (sourceExtendX + defaultControlX) / 2;\n controls = [\n { x: verticalPosition.x, y: defaultControlY },\n { x: middleX, y: defaultControlY },\n { x: middleX, y: horizontalPosition.y },\n ];\n } else {\n // ┌────┐\n // │ ┌──┴──┐\n // │ │ S │\n // │ └─────┘\n // └───┐\n // ┌─────┐ │\n // │ T ├─┘\n // └─────┘\n const middleY =\n (vertical.y -\n (vertical.height / 2) * verticalSign +\n horizontal.y +\n (horizontal.height / 2) * verticalSign) /\n 2;\n controls = [\n { x: verticalPosition.x, y: defaultControlY },\n { x: sourceExtendX, y: defaultControlY },\n { x: sourceExtendX, y: middleY },\n { x: defaultControlX, y: middleY },\n { x: defaultControlX, y: horizontalPosition.y },\n ];\n }\n }\n } else if (sourceDirection === targetDirection) {\n // Same direction\n const sign =\n sourceDirection === \"bottom\" || sourceDirection === \"right\" ? 1 : -1;\n let start: NodeRect;\n let end: NodeRect;\n let startPosition: NodePosition;\n let endPosition: NodePosition;\n const axis = sourceIsVertical ? \"y\" : \"x\";\n const oppositeAxis = sourceIsVertical ? \"x\" : \"y\";\n if (target[axis] < source[axis]) {\n start = target;\n end = source;\n startPosition = p1;\n endPosition = p0;\n reverseControls = sign === 1;\n } else {\n start = source;\n end = target;\n startPosition = p0;\n endPosition = p1;\n reverseControls = sign !== 1;\n }\n const perpendicular =\n target[oppositeAxis] < source[oppositeAxis] ? source : target;\n let around: NodeRect;\n let nonAround: NodeRect;\n let aroundPosition: NodePosition;\n let nonAroundPosition: NodePosition;\n if (sign === 1) {\n around = end;\n nonAround = start;\n aroundPosition = endPosition;\n nonAroundPosition = startPosition;\n } else {\n around = start;\n nonAround = end;\n aroundPosition = startPosition;\n nonAroundPosition = endPosition;\n }\n const aroundSign = around === perpendicular ? 1 : -1;\n if (sourceIsVertical) {\n const defaultControlX =\n around.x - (around.width / 2 + MINIMAL_OFFSET) * aroundSign;\n const defaultControlY = aroundPosition.y + MINIMAL_OFFSET * sign;\n if ((defaultControlX - nonAroundPosition.x) * aroundSign >= 0) {\n // ┌─────────┐\n // │ ┌──┴──┐\n // │ │ T │\n // ┌──┴──┐ └─────┘\n // │ S │\n // └─────┘\n controls = [\n { x: nonAroundPosition.x, y: defaultControlY },\n { x: aroundPosition.x, y: defaultControlY },\n ];\n } else {\n // ┌────┐\n // │ ┌──┴──┐\n // │ │ T │\n // │ └─────┘\n // └─┐\n // ┌──┴──┐\n // │ S │\n // └─────┘\n const middleY =\n (nonAround.y +\n (nonAround.height / 2) * sign +\n around.y -\n (around.height / 2) * sign) /\n 2;\n controls = [\n { x: nonAroundPosition.x, y: middleY },\n { x: defaultControlX, y: middleY },\n { x: defaultControlX, y: defaultControlY },\n { x: aroundPosition.x, y: defaultControlY },\n ];\n }\n } else {\n const defaultControlX = aroundPosition.x + MINIMAL_OFFSET * sign;\n const defaultControlY =\n around.y - (around.height / 2 + MINIMAL_OFFSET) * aroundSign;\n if ((defaultControlY - nonAroundPosition.y) * aroundSign >= 0) {\n // ┌─────┐\n // ┌─────────┤ T │\n // │ ┌─────┐ └─────┘\n // └─┤ S │\n // └─────┘\n controls = [\n { x: defaultControlX, y: nonAroundPosition.y },\n { x: defaultControlX, y: aroundPosition.y },\n ];\n } else {\n // ┌─────────┐\n // │ ┌─────┐ │ ┌─────┐\n // └─┤ S │ └─┤ T │\n // └─────┘ └─────┘\n const middleX =\n (nonAround.x +\n (nonAround.width / 2) * sign +\n around.x -\n (around.width / 2) * sign) /\n 2;\n controls = [\n { x: middleX, y: nonAroundPosition.y },\n { x: middleX, y: defaultControlY },\n { x: defaultControlX, y: defaultControlY },\n { x: defaultControlX, y: aroundPosition.y },\n ];\n }\n }\n } else {\n // Opposite direction\n const targetSign =\n targetDirection === \"bottom\" || targetDirection === \"right\" ? 1 : -1;\n let axis: \"x\" | \"y\";\n let oppositeAxis: \"x\" | \"y\";\n let size: \"width\" | \"height\";\n let oppositeSize: \"width\" | \"height\";\n if (sourceIsVertical) {\n axis = \"y\";\n oppositeAxis = \"x\";\n size = \"height\";\n oppositeSize = \"width\";\n } else {\n axis = \"x\";\n oppositeAxis = \"y\";\n size = \"width\";\n oppositeSize = \"height\";\n }\n const targetEdge = target[axis] + (target[size] / 2) * targetSign;\n const sourceEdge = source[axis] - (source[size] / 2) * targetSign;\n const targetControl = targetEdge + MINIMAL_OFFSET * targetSign;\n const sourceControl = sourceEdge - MINIMAL_OFFSET * targetSign;\n const oppositeIsStraight = p0[oppositeAxis] === p1[oppositeAxis];\n if ((sourceControl - targetControl) * targetSign >= 0) {\n const middle = (sourceControl + targetControl) / 2;\n if (oppositeIsStraight) {\n // Straight line\n // ┌─────┐\n // │ T │\n // └──┬──┘\n // │\n // ┌──┴──┐\n // │ S │\n // └─────┘\n controls = [];\n } else {\n // ┌─────┐\n // │ T │\n // └──┬──┘\n // ┌───┘\n // ┌──┴──┐\n // │ S │\n // └─────┘\n controls = [\n { [oppositeAxis]: p0[oppositeAxis], [axis]: middle },\n { [oppositeAxis]: p1[oppositeAxis], [axis]: middle },\n ] as unknown[] as NodePosition[];\n }\n } else if (\n oppositeIsStraight &&\n (sourceEdge - targetEdge) * targetSign >= 0\n ) {\n // Straight line (very close)\n // ┌─────┐\n // │ T │\n // └──┬──┘\n // ┌──┴──┐\n // │ S │\n // └─────┘\n controls = [];\n } else {\n const targetOppositeSign =\n target[oppositeAxis] < source[oppositeAxis] ? -1 : 1;\n const sourceOppositeControl =\n source[oppositeAxis] +\n (source[oppositeSize] / 2 + MINIMAL_OFFSET) * targetOppositeSign;\n const targetOppositeControl =\n target[oppositeAxis] -\n (target[oppositeSize] / 2 + MINIMAL_OFFSET) * targetOppositeSign;\n if (\n (targetOppositeControl - sourceOppositeControl) * targetOppositeSign >=\n 0 ||\n Math.abs((sourceControl - targetControl) * targetSign) < MINIMAL_OFFSET\n ) {\n // ┌─────┐\n // ┌────┐ │ T │\n // ┌──┴──┐ │ └──┬──┘\n // │ S │ └────┘\n // └─────┘\n const oppositeMiddle =\n (sourceOppositeControl + targetOppositeControl) / 2;\n controls = [\n { [oppositeAxis]: p0[oppositeAxis], [axis]: sourceControl },\n { [oppositeAxis]: oppositeMiddle, [axis]: sourceControl },\n { [oppositeAxis]: oppositeMiddle, [axis]: targetControl },\n { [oppositeAxis]: p1[oppositeAxis], [axis]: targetControl },\n ] as unknown[] as NodePosition[];\n } else {\n // ┌────┐\n // ┌──┴──┐ │\n // │ S │ │\n // └─────┘ │\n // ┌─────────┘\n // │ ┌─────┐\n // │ │ T │\n // │ └──┬──┘\n // └────┘\n const middle =\n (source[axis] +\n (source[size] / 2) * targetSign +\n target[axis] -\n (target[size] / 2) * targetSign) /\n 2;\n controls = [\n { [oppositeAxis]: p0[oppositeAxis], [axis]: sourceControl },\n { [oppositeAxis]: sourceOppositeControl, [axis]: sourceControl },\n { [oppositeAxis]: sourceOppositeControl, [axis]: middle },\n { [oppositeAxis]: targetOppositeControl, [axis]: middle },\n { [oppositeAxis]: targetOppositeControl, [axis]: targetControl },\n { [oppositeAxis]: p1[oppositeAxis], [axis]: targetControl },\n ] as unknown[] as NodePosition[];\n }\n }\n }\n\n if (reverseControls) {\n controls.reverse();\n }\n\n return [p0, ...controls, p1] as NodePosition[];\n}\n\nfunction getCoordinates(\n node: NodeRect,\n direction: Direction,\n position: number\n): NodePosition {\n const { x, y, width, height } = node;\n switch (direction) {\n case \"top\":\n return {\n x: x - width / 2 + width * position,\n y: y - height / 2,\n };\n case \"bottom\":\n return {\n x: x - width / 2 + width * position,\n y: y + height / 2,\n };\n case \"left\":\n return {\n x: x - width / 2,\n y: y - height / 2 + height * position,\n };\n case \"right\":\n return {\n x: x + width / 2,\n y: y - height / 2 + height * position,\n };\n }\n}\n","import type { PositionTuple } from \"../interfaces\";\n\n// https://paulbourke.net/geometry/pointlineplane/javascript.txt\nexport function intersect(\n [x1, y1]: PositionTuple,\n [x2, y2]: PositionTuple,\n [x3, y3]: PositionTuple,\n [x4, y4]: PositionTuple\n): null | PositionTuple {\n // Check if none of the lines are of length 0\n if ((x1 === x2 && y1 === y2) || (x3 === x4 && y3 === y4)) {\n return null;\n }\n\n const denominator = (y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1);\n\n // Lines are parallel\n if (denominator === 0) {\n return null;\n }\n\n const ua = ((x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3)) / denominator;\n const ub = ((x2 - x1) * (y1 - y3) - (y2 - y1) * (x1 - x3)) / denominator;\n\n // is the intersection along the segments\n if (ua < 0 || ua > 1 || ub < 0 || ub > 1) {\n return null;\n }\n\n // Return a object with the x and y coordinates of the intersection\n const x = x1 + ua * (x2 - x1);\n const y = y1 + ua * (y2 - y1);\n\n return [x, y];\n}\n","import {\n curveLinear,\n line,\n curveBasis,\n curveBumpX,\n curveBumpY,\n type CurveFactory,\n curveMonotoneX,\n curveNatural,\n curveMonotoneY,\n} from \"d3-shape\";\nimport type { CurveType, NodePosition } from \"../interfaces\";\nimport type { LineSegmentJumps } from \"../../draw-canvas/interfaces\";\n\n/**\n * Generate Line from points\n */\nexport function curveLine(\n points: Array<NodePosition> | null | undefined,\n curveType: CurveType | undefined,\n startOffset: number,\n endOffset: number,\n jumpsMap?: Map<number, LineSegmentJumps> | null\n): string {\n if (!Array.isArray(points)) {\n return \"\";\n }\n let curveFactory: CurveFactory;\n switch (curveType) {\n case \"curveLinear\":\n curveFactory = curveLinear;\n break;\n case \"curveBumpX\":\n curveFactory = curveBumpX;\n break;\n case \"curveBumpY\":\n curveFactory = curveBumpY;\n break;\n case \"curveMonotoneX\":\n curveFactory = curveMonotoneX;\n break;\n case \"curveMonotoneY\":\n curveFactory = curveMonotoneY;\n break;\n case \"curveNatural\":\n curveFactory = curveNatural;\n break;\n default:\n curveFactory = curveBasis;\n }\n const startOffsets = getOffsets(points[1], points[0], startOffset);\n const endOffsets = getOffsets(\n points[points.length - 2],\n points[points.length - 1],\n endOffset\n );\n const lineFunction = line<NodePosition>()\n .x(\n (d, index) =>\n d.x -\n (index === 0\n ? startOffsets.x\n : index === points.length - 1\n ? endOffsets.x\n : 0)\n )\n .y(\n (d, index) =>\n d.y -\n (index === 0\n ? startOffsets.y\n : index === points.length - 1\n ? endOffsets.y\n : 0)\n )\n .curve(curveFactory);\n\n if (jumpsMap && curveType == \"curveLinear\") {\n const d: string[] = [];\n for (let i = 0; i < points.length - 1; i++) {\n const start = points[i];\n const end = points[i + 1];\n if (i === 0) {\n d.push(`M${start.x},${start.y}`);\n }\n // 处理交叉跨线点\n const jump = jumpsMap.get(i);\n if (jump) {\n // 跨线点近似为一段半圆,参考 draw.io 使用三次贝赛尔曲线实现。\n // 一条 jump 记录中所有的 jumpPoints 都在同一线段上,因此角度一致、尺寸一致。\n const dx = end.x - start.x;\n const dy = end.y - start.y;\n const angle = Math.atan2(dy, dx);\n const direction = Math.abs(angle) <= Math.PI / 2 ? -1 : 1;\n const verticalAngle = angle + (Math.PI / 2) * direction;\n const offsetX = jump.radius * 1.3 * Math.cos(verticalAngle);\n const offsetY = jump.radius * 1.3 * Math.sin(verticalAngle);\n const xDiff = jump.radius * Math.cos(angle);\n const yDiff = jump.radius * Math.sin(angle);\n for (const p of jump.jumpPoints) {\n const x0 = p.x - xDiff;\n const y0 = p.y - yDiff;\n const x1 = p.x + xDiff;\n const y1 = p.y + yDiff;\n d.push(`L${x0},${y0}`);\n d.push(\n `C${x0 + offsetX},${y0 + offsetY} ${x1 + offsetX},${y1 + offsetY} ${x1},${y1}`\n );\n }\n }\n d.push(`L${end.x},${end.y}`);\n }\n return d.join(\"\");\n }\n\n return lineFunction(points)!;\n}\n\nfunction getOffsets(\n start: NodePosition,\n end: NodePosition,\n offset: number\n): NodePosition {\n if (!offset) {\n return { x: 0, y: 0 };\n }\n const { x: x0, y: y0 } = start;\n const { x: x1, y: y1 } = end;\n const distance = Math.sqrt(Math.pow(x1 - x0, 2) + Math.pow(y1 - y0, 2));\n const ratio = offset / distance;\n return {\n x: (x1 - x0) * ratio,\n y: (y1 - y0) * ratio,\n };\n}\n","import type { FullRectTuple, PartialRectTuple } from \"../interfaces\";\n\nexport function extractPartialRectTuple(\n value: PartialRectTuple\n): FullRectTuple {\n if (Array.isArray(value)) {\n const v0 = value[0];\n const v1 = value.length > 1 ? value[1]! : v0;\n const v2 = value.length > 2 ? value[2]! : v0;\n const v3 = value.length > 3 ? value[3]! : v1;\n return [v0, v1, v2, v3];\n }\n return new Array(4).fill(value) as FullRectTuple;\n}\n"],"names":["doTwoNodesOverlap","a","b","paddingA","paddingB","A","getNodesWithPadding","B","left","Math","min","x","width","right","max","top","y","height","bottom","node","padding","getDirectLinePoints","source","target","parallelGap","edgeView","hasExitPosition","exitPosition","hasEntryPosition","entryPosition","p0","p1","xDiff","yDiff","dx","dy","angle","atan2","cos","PI","sin","line","sourceIntersections","getIntersections","length","targetIntersections","rect","vertices","possibleLines","i","push","intersections","item","intersection","intersect","MarkerComponent","_ref","Component","id","type","strokeColor","EntityRelationZeroOrOneMarker","EntityRelationZeroOrManyMarker","CircleMarker","ArrowMarker","React","_ref2","viewBox","refX","refY","overflow","markerWidth","r","markerHeight","stroke","fill","cx","cy","_ref3","orient","strokeLinejoin","d","strokeWidth","_ref4","_ref5","MINIMAL_OFFSET","getPolyLinePoints","sourceDirection","targetDirection","sourcePosition","targetPosition","getCoordinates","controls","reverseControls","sourceIsVertical","horizontal","vertical","horizontalSign","verticalSign","horizontalPosition","verticalPosition","defaultControlX","defaultControlY","controlY0","controlY1","middleY","middleX","sourceExtendX","sign","start","end","startPosition","endPosition","axis","oppositeAxis","around","nonAround","aroundPosition","nonAroundPosition","aroundSign","targetSign","size","oppositeSize","targetEdge","sourceEdge","targetControl","sourceControl","oppositeIsStraight","middle","targetOppositeSign","sourceOppositeControl","targetOppositeControl","abs","oppositeMiddle","reverse","direction","position","x1","y1","x2","y2","x3","y3","x4","y4","denominator","ua","ub","curveLine","points","curveType","startOffset","endOffset","jumpsMap","Array","isArray","curveFactory","curveLinear","curveBumpX","curveBumpY","curveMonotoneX","curveMonotoneY","curveNatural","curveBasis","startOffsets","getOffsets","endOffsets","lineFunction","index","curve","jump","get","verticalAngle","offsetX","radius","offsetY","p","jumpPoints","x0","y0","join","offset","ratio","sqrt","pow","extractPartialRectTuple","value","v0","v1"],"sourceRoot":""}
1
+ {"version":3,"file":"chunks/9789.61a352b0.js","mappings":"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","sources":["webpack:///./src/diagram/processors/doTwoNodesOverlap.ts","webpack:///./src/diagram/lines/getDirectLinePoints.ts","webpack:///./src/diagram/MarkerComponent.tsx","webpack:///./src/diagram/lines/getPolyLinePoints.ts","webpack:///./src/diagram/lines/intersect.ts","webpack:///./src/diagram/lines/curveLine.ts","webpack:///./src/diagram/processors/extractPartialRectTuple.ts"],"sourcesContent":["import type { NodeRect } from \"../interfaces\";\n\nexport function doTwoNodesOverlap(\n a: NodeRect,\n b: NodeRect,\n paddingA: number,\n paddingB: number\n): boolean {\n const A = paddingA ? getNodesWithPadding(a, paddingA) : a;\n const B = paddingB ? getNodesWithPadding(b, paddingB) : b;\n const left = Math.min(A.x - A.width / 2, B.x - B.width / 2);\n const right = Math.max(A.x + A.width / 2, B.x + B.width / 2);\n const top = Math.min(A.y - A.height / 2, B.y - B.height / 2);\n const bottom = Math.max(A.y + A.height / 2, B.y + B.height / 2);\n return right - left < A.width + B.width && bottom - top < A.height + B.height;\n}\n\nfunction getNodesWithPadding(node: NodeRect, padding: number) {\n return {\n x: node.x - node.width / 2 - padding,\n y: node.y - node.height / 2 - padding,\n width: node.width + padding * 2,\n height: node.height + padding * 2,\n };\n}\n","import type { EdgeView } from \"../../draw-canvas/interfaces\";\nimport type { NodePosition, NodeRect, PositionTuple } from \"../interfaces\";\nimport { doTwoNodesOverlap } from \"../processors/doTwoNodesOverlap\";\nimport { intersect } from \"./intersect\";\n\ntype LineTuple = [start: PositionTuple, end: PositionTuple];\n\nexport function getDirectLinePoints(\n source: NodeRect,\n target: NodeRect,\n parallelGap?: number,\n edgeView?: EdgeView\n): NodePosition[] | null {\n const hasExitPosition = !!edgeView?.exitPosition;\n const hasEntryPosition = !!edgeView?.entryPosition;\n\n // Ignore if two nodes are the same.\n // Ignore if two nodes overlap and no entry nor exit position.\n if (\n source === target ||\n (doTwoNodesOverlap(source, target, 0, 0) &&\n !(hasExitPosition || hasEntryPosition))\n ) {\n return null;\n }\n\n let p0: PositionTuple;\n let p1: PositionTuple;\n\n let xDiff = 0;\n let yDiff = 0;\n\n if (parallelGap) {\n const dx = target.x - source.x;\n const dy = target.y - source.y;\n const angle = Math.atan2(dy, dx);\n xDiff = (parallelGap / 2) * Math.cos(angle + Math.PI / 2);\n yDiff = (parallelGap / 2) * Math.sin(angle + Math.PI / 2);\n }\n\n const line: LineTuple = [\n hasExitPosition\n ? [\n source.x + (edgeView!.exitPosition!.x - 0.5) * source.width,\n source.y + (edgeView!.exitPosition!.y - 0.5) * source.height,\n ]\n : [source.x + xDiff, source.y + yDiff],\n hasEntryPosition\n ? [\n target.x + (edgeView!.entryPosition!.x - 0.5) * target.width,\n target.y + (edgeView!.entryPosition!.y - 0.5) * target.height,\n ]\n : [target.x + xDiff, target.y + yDiff],\n ];\n\n if (hasExitPosition) {\n p0 = line[0];\n } else {\n const sourceIntersections = getIntersections(source, line);\n // Todo: handle when more than one intersection\n if (sourceIntersections.length > 0) {\n p0 = sourceIntersections[0];\n } else {\n p0 = [source.x, source.y];\n }\n }\n\n if (hasEntryPosition) {\n p1 = line[1];\n } else {\n const targetIntersections = getIntersections(target, line);\n // Todo: handle when more than one intersection\n if (targetIntersections.length > 0) {\n p1 = targetIntersections[0];\n } else {\n p1 = [target.x, target.y];\n }\n }\n\n return [\n { x: p0[0], y: p0[1] },\n { x: p1[0], y: p1[1] },\n ];\n}\n\nfunction getIntersections(rect: NodeRect, line: LineTuple) {\n const vertices: PositionTuple[] = [\n [rect.x - rect.width / 2, rect.y - rect.height / 2],\n [rect.x + rect.width / 2, rect.y - rect.height / 2],\n [rect.x + rect.width / 2, rect.y + rect.height / 2],\n [rect.x - rect.width / 2, rect.y + rect.height / 2],\n ];\n const possibleLines: [start: PositionTuple, end: PositionTuple][] = [];\n for (let i = 0; i < 4; i++) {\n possibleLines.push([vertices[i], vertices[(i + 1) % 4]]);\n }\n const intersections: PositionTuple[] = [];\n for (const item of possibleLines) {\n const intersection = intersect(line[0], line[1], item[0], item[1]);\n if (intersection) {\n intersections.push(intersection);\n }\n }\n return intersections;\n}\n","import React from \"react\";\nimport type { LineMarkerType } from \"./interfaces\";\n\nexport interface MarkerComponentProps extends BaseMarkerComponentProps {\n type: LineMarkerType;\n}\n\nexport interface BaseMarkerComponentProps {\n id: string;\n strokeColor?: string;\n}\n\nexport function MarkerComponent({\n id,\n type,\n strokeColor,\n}: MarkerComponentProps): JSX.Element {\n let Component: (props: BaseMarkerComponentProps) => JSX.Element;\n\n switch (type) {\n case \"0..1\":\n Component = EntityRelationZeroOrOneMarker;\n break;\n case \"0..N\":\n Component = EntityRelationZeroOrManyMarker;\n break;\n case \"circle\":\n Component = CircleMarker;\n break;\n default:\n Component = ArrowMarker;\n }\n return <Component id={id} strokeColor={strokeColor} />;\n}\n\nfunction CircleMarker({\n id,\n strokeColor,\n}: BaseMarkerComponentProps): JSX.Element {\n const r = 3;\n const d = r * 3;\n return (\n <marker\n viewBox={`0 0 ${d} ${d}`}\n refX={r}\n refY={r}\n id={id}\n overflow=\"visible\"\n markerWidth={d}\n markerHeight={d}\n >\n <circle stroke=\"none\" fill={strokeColor} cx={r} cy={r} r={r} />\n </marker>\n );\n}\n\nfunction ArrowMarker({\n id,\n strokeColor,\n}: BaseMarkerComponentProps): JSX.Element {\n return (\n <marker\n id={id}\n viewBox=\"0 0 6 6\"\n refX={5}\n refY={3}\n markerWidth={6}\n markerHeight={6}\n orient=\"auto-start-reverse\"\n strokeLinejoin=\"round\"\n >\n <path\n d=\"M 0.5 0.5 L 5.5 3 L 0.5 5.5 z\"\n stroke={strokeColor}\n strokeWidth={1}\n fill={strokeColor}\n />\n </marker>\n );\n}\n\nfunction EntityRelationZeroOrOneMarker({\n id,\n strokeColor,\n}: BaseMarkerComponentProps): JSX.Element {\n return (\n <marker\n id={id}\n viewBox=\"0 0 21 11\"\n refX={0.5}\n refY={5.5}\n markerWidth={21}\n markerHeight={11}\n orient=\"auto-start-reverse\"\n >\n <path\n d=\"M 5.5 5.5 m 5 0 a 5 5 0 1 0 -10 0 a 5 5 0 1 0 10 0 M 15.5 0.5 V 10.5 M 10.5 5.5 H 20.5\"\n stroke={strokeColor}\n strokeWidth={1}\n fill=\"none\"\n />\n </marker>\n );\n}\n\nfunction EntityRelationZeroOrManyMarker({\n id,\n strokeColor,\n}: BaseMarkerComponentProps): JSX.Element {\n return (\n <marker\n id={id}\n viewBox=\"0 0 21 11\"\n refX={0.5}\n refY={5.5}\n markerWidth={21}\n markerHeight={11}\n orient=\"auto-start-reverse\"\n >\n <path\n d=\"M 5.5 5.5 m 5 0 a 5 5 0 1 0 -10 0 a 5 5 0 1 0 10 0 M 20.5 0.5 L 10.5 5.5 L 20.5 10.5 M 10.5 5.5 H 20.5\"\n stroke={strokeColor}\n strokeWidth={1}\n fill=\"none\"\n />\n </marker>\n );\n}\n","import type { Direction, NodePosition, NodeRect } from \"../interfaces\";\n\nconst MINIMAL_OFFSET = 20;\n\nexport function getPolyLinePoints(\n source: NodeRect,\n target: NodeRect,\n sourceDirection: Direction,\n targetDirection: Direction,\n sourcePosition: number,\n targetPosition: number\n): NodePosition[] {\n const p0 = getCoordinates(source, sourceDirection, sourcePosition);\n const p1 = getCoordinates(target, targetDirection, targetPosition);\n\n let controls: NodePosition[] = [];\n let reverseControls = false;\n\n const sourceIsVertical =\n sourceDirection === \"top\" || sourceDirection === \"bottom\";\n const targetIsVertical =\n targetDirection === \"top\" || targetDirection === \"bottom\";\n\n if (sourceIsVertical !== targetIsVertical) {\n // One is vertical and the other is horizontal\n let horizontal: NodeRect;\n let vertical: NodeRect;\n let horizontalSign: number;\n let verticalSign: number;\n let horizontalPosition: NodePosition;\n let verticalPosition: NodePosition;\n if (sourceIsVertical) {\n horizontal = target;\n vertical = source;\n horizontalSign = targetDirection === \"right\" ? 1 : -1;\n verticalSign = sourceDirection === \"bottom\" ? 1 : -1;\n horizontalPosition = p1;\n verticalPosition = p0;\n } else {\n horizontal = source;\n vertical = target;\n horizontalSign = sourceDirection === \"right\" ? 1 : -1;\n verticalSign = targetDirection === \"bottom\" ? 1 : -1;\n horizontalPosition = p0;\n verticalPosition = p1;\n reverseControls = true;\n }\n\n const defaultControlX =\n horizontalPosition.x + MINIMAL_OFFSET * horizontalSign;\n const defaultControlY = verticalPosition.y + MINIMAL_OFFSET * verticalSign;\n\n if ((horizontal.x - vertical.x) * horizontalSign >= 0) {\n if ((vertical.y - horizontal.y) * verticalSign >= 0) {\n // ┌──────────────┐\n // ┌──┴──┐ ┌─────┐ │\n // │ S │ │ T ├─┘\n // └─────┘ └─────┘\n controls = [\n { x: verticalPosition.x, y: defaultControlY },\n { x: defaultControlX, y: defaultControlY },\n { x: defaultControlX, y: horizontalPosition.y },\n ];\n } else {\n const controlY0 =\n vertical.y + (vertical.height / 2 + MINIMAL_OFFSET) * verticalSign;\n const controlY1 =\n horizontal.y -\n (horizontal.height / 2 + MINIMAL_OFFSET) * verticalSign;\n if ((controlY1 - controlY0) * verticalSign >= 0) {\n // ┌─────┐\n // │ T ├─┐\n // └─────┘ │\n // ┌────────┘\n // ┌──┴──┐\n // │ S │\n // └─────┘\n const middleY = (controlY0 + controlY1) / 2;\n controls = [\n { x: verticalPosition.x, y: middleY },\n { x: defaultControlX, y: middleY },\n { x: defaultControlX, y: horizontalPosition.y },\n ];\n } else {\n // ┌─────┐\n // ┌────┐ │ T ├─┐\n // ┌──┴──┐ │ └─────┘ │\n // │ S │ └─────────┘\n // └─────┘\n const middleX =\n (vertical.x +\n (vertical.width / 2) * horizontalSign +\n horizontal.x -\n (horizontal.width / 2) * horizontalSign) /\n 2;\n controls = [\n { x: verticalPosition.x, y: controlY0 },\n { x: middleX, y: controlY0 },\n { x: middleX, y: controlY1 },\n { x: defaultControlX, y: controlY1 },\n { x: defaultControlX, y: horizontalPosition.y },\n ];\n }\n }\n } else if ((horizontalPosition.y - defaultControlY) * verticalSign >= 0) {\n if ((verticalPosition.x - defaultControlX) * horizontalSign >= 0) {\n // ┌─────┐\n // ┌──┤ T │\n // │ └─────┘\n // ┌──┴──┐\n // │ S │\n // └─────┘\n controls = [{ x: verticalPosition.x, y: horizontalPosition.y }];\n } else {\n // ┌─────┐\n // │ T ├─┐\n // └─────┘ │\n // ┌─┘\n // ┌──┴──┐\n // │ S │\n // └─────┘\n const controlY0 =\n vertical.y + (vertical.height / 2 + MINIMAL_OFFSET) * verticalSign;\n const controlY1 =\n horizontal.y -\n (horizontal.height / 2 + MINIMAL_OFFSET) * verticalSign;\n const middleY = (controlY0 + controlY1) / 2;\n controls = [\n { x: verticalPosition.x, y: middleY },\n { x: defaultControlX, y: middleY },\n { x: defaultControlX, y: horizontalPosition.y },\n ];\n }\n } else {\n const sourceExtendX =\n vertical.x - (vertical.width / 2 + MINIMAL_OFFSET) * horizontalSign;\n if ((sourceExtendX - defaultControlX) * horizontalSign >= 0) {\n // ┌────┐\n // │ ┌──┴──┐\n // │ │ S │\n // ┌─────┐ │ └─────┘\n // │ T ├─┘\n // └─────┘\n const middleX = (sourceExtendX + defaultControlX) / 2;\n controls = [\n { x: verticalPosition.x, y: defaultControlY },\n { x: middleX, y: defaultControlY },\n { x: middleX, y: horizontalPosition.y },\n ];\n } else {\n // ┌────┐\n // │ ┌──┴──┐\n // │ │ S │\n // │ └─────┘\n // └───┐\n // ┌─────┐ │\n // │ T ├─┘\n // └─────┘\n const middleY =\n (vertical.y -\n (vertical.height / 2) * verticalSign +\n horizontal.y +\n (horizontal.height / 2) * verticalSign) /\n 2;\n controls = [\n { x: verticalPosition.x, y: defaultControlY },\n { x: sourceExtendX, y: defaultControlY },\n { x: sourceExtendX, y: middleY },\n { x: defaultControlX, y: middleY },\n { x: defaultControlX, y: horizontalPosition.y },\n ];\n }\n }\n } else if (sourceDirection === targetDirection) {\n // Same direction\n const sign =\n sourceDirection === \"bottom\" || sourceDirection === \"right\" ? 1 : -1;\n let start: NodeRect;\n let end: NodeRect;\n let startPosition: NodePosition;\n let endPosition: NodePosition;\n const axis = sourceIsVertical ? \"y\" : \"x\";\n const oppositeAxis = sourceIsVertical ? \"x\" : \"y\";\n if (target[axis] < source[axis]) {\n start = target;\n end = source;\n startPosition = p1;\n endPosition = p0;\n reverseControls = sign === 1;\n } else {\n start = source;\n end = target;\n startPosition = p0;\n endPosition = p1;\n reverseControls = sign !== 1;\n }\n const perpendicular =\n target[oppositeAxis] < source[oppositeAxis] ? source : target;\n let around: NodeRect;\n let nonAround: NodeRect;\n let aroundPosition: NodePosition;\n let nonAroundPosition: NodePosition;\n if (sign === 1) {\n around = end;\n nonAround = start;\n aroundPosition = endPosition;\n nonAroundPosition = startPosition;\n } else {\n around = start;\n nonAround = end;\n aroundPosition = startPosition;\n nonAroundPosition = endPosition;\n }\n const aroundSign = around === perpendicular ? 1 : -1;\n if (sourceIsVertical) {\n const defaultControlX =\n around.x - (around.width / 2 + MINIMAL_OFFSET) * aroundSign;\n const defaultControlY = aroundPosition.y + MINIMAL_OFFSET * sign;\n if ((defaultControlX - nonAroundPosition.x) * aroundSign >= 0) {\n // ┌─────────┐\n // │ ┌──┴──┐\n // │ │ T │\n // ┌──┴──┐ └─────┘\n // │ S │\n // └─────┘\n controls = [\n { x: nonAroundPosition.x, y: defaultControlY },\n { x: aroundPosition.x, y: defaultControlY },\n ];\n } else {\n // ┌────┐\n // │ ┌──┴──┐\n // │ │ T │\n // │ └─────┘\n // └─┐\n // ┌──┴──┐\n // │ S │\n // └─────┘\n const middleY =\n (nonAround.y +\n (nonAround.height / 2) * sign +\n around.y -\n (around.height / 2) * sign) /\n 2;\n controls = [\n { x: nonAroundPosition.x, y: middleY },\n { x: defaultControlX, y: middleY },\n { x: defaultControlX, y: defaultControlY },\n { x: aroundPosition.x, y: defaultControlY },\n ];\n }\n } else {\n const defaultControlX = aroundPosition.x + MINIMAL_OFFSET * sign;\n const defaultControlY =\n around.y - (around.height / 2 + MINIMAL_OFFSET) * aroundSign;\n if ((defaultControlY - nonAroundPosition.y) * aroundSign >= 0) {\n // ┌─────┐\n // ┌─────────┤ T │\n // │ ┌─────┐ └─────┘\n // └─┤ S │\n // └─────┘\n controls = [\n { x: defaultControlX, y: nonAroundPosition.y },\n { x: defaultControlX, y: aroundPosition.y },\n ];\n } else {\n // ┌─────────┐\n // │ ┌─────┐ │ ┌─────┐\n // └─┤ S │ └─┤ T │\n // └─────┘ └─────┘\n const middleX =\n (nonAround.x +\n (nonAround.width / 2) * sign +\n around.x -\n (around.width / 2) * sign) /\n 2;\n controls = [\n { x: middleX, y: nonAroundPosition.y },\n { x: middleX, y: defaultControlY },\n { x: defaultControlX, y: defaultControlY },\n { x: defaultControlX, y: aroundPosition.y },\n ];\n }\n }\n } else {\n // Opposite direction\n const targetSign =\n targetDirection === \"bottom\" || targetDirection === \"right\" ? 1 : -1;\n let axis: \"x\" | \"y\";\n let oppositeAxis: \"x\" | \"y\";\n let size: \"width\" | \"height\";\n let oppositeSize: \"width\" | \"height\";\n if (sourceIsVertical) {\n axis = \"y\";\n oppositeAxis = \"x\";\n size = \"height\";\n oppositeSize = \"width\";\n } else {\n axis = \"x\";\n oppositeAxis = \"y\";\n size = \"width\";\n oppositeSize = \"height\";\n }\n const targetEdge = target[axis] + (target[size] / 2) * targetSign;\n const sourceEdge = source[axis] - (source[size] / 2) * targetSign;\n const targetControl = targetEdge + MINIMAL_OFFSET * targetSign;\n const sourceControl = sourceEdge - MINIMAL_OFFSET * targetSign;\n const oppositeIsStraight = p0[oppositeAxis] === p1[oppositeAxis];\n if ((sourceControl - targetControl) * targetSign >= 0) {\n const middle = (sourceControl + targetControl) / 2;\n if (oppositeIsStraight) {\n // Straight line\n // ┌─────┐\n // │ T │\n // └──┬──┘\n // │\n // ┌──┴──┐\n // │ S │\n // └─────┘\n controls = [];\n } else {\n // ┌─────┐\n // │ T │\n // └──┬──┘\n // ┌───┘\n // ┌──┴──┐\n // │ S │\n // └─────┘\n controls = [\n { [oppositeAxis]: p0[oppositeAxis], [axis]: middle },\n { [oppositeAxis]: p1[oppositeAxis], [axis]: middle },\n ] as unknown[] as NodePosition[];\n }\n } else if (\n oppositeIsStraight &&\n (sourceEdge - targetEdge) * targetSign >= 0\n ) {\n // Straight line (very close)\n // ┌─────┐\n // │ T │\n // └──┬──┘\n // ┌──┴──┐\n // │ S │\n // └─────┘\n controls = [];\n } else {\n const targetOppositeSign =\n target[oppositeAxis] < source[oppositeAxis] ? -1 : 1;\n const sourceOppositeControl =\n source[oppositeAxis] +\n (source[oppositeSize] / 2 + MINIMAL_OFFSET) * targetOppositeSign;\n const targetOppositeControl =\n target[oppositeAxis] -\n (target[oppositeSize] / 2 + MINIMAL_OFFSET) * targetOppositeSign;\n if (\n (targetOppositeControl - sourceOppositeControl) * targetOppositeSign >=\n 0 ||\n Math.abs((sourceControl - targetControl) * targetSign) < MINIMAL_OFFSET\n ) {\n // ┌─────┐\n // ┌────┐ │ T │\n // ┌──┴──┐ │ └──┬──┘\n // │ S │ └────┘\n // └─────┘\n const oppositeMiddle =\n (sourceOppositeControl + targetOppositeControl) / 2;\n controls = [\n { [oppositeAxis]: p0[oppositeAxis], [axis]: sourceControl },\n { [oppositeAxis]: oppositeMiddle, [axis]: sourceControl },\n { [oppositeAxis]: oppositeMiddle, [axis]: targetControl },\n { [oppositeAxis]: p1[oppositeAxis], [axis]: targetControl },\n ] as unknown[] as NodePosition[];\n } else {\n // ┌────┐\n // ┌──┴──┐ │\n // │ S │ │\n // └─────┘ │\n // ┌─────────┘\n // │ ┌─────┐\n // │ │ T │\n // │ └──┬──┘\n // └────┘\n const middle =\n (source[axis] +\n (source[size] / 2) * targetSign +\n target[axis] -\n (target[size] / 2) * targetSign) /\n 2;\n controls = [\n { [oppositeAxis]: p0[oppositeAxis], [axis]: sourceControl },\n { [oppositeAxis]: sourceOppositeControl, [axis]: sourceControl },\n { [oppositeAxis]: sourceOppositeControl, [axis]: middle },\n { [oppositeAxis]: targetOppositeControl, [axis]: middle },\n { [oppositeAxis]: targetOppositeControl, [axis]: targetControl },\n { [oppositeAxis]: p1[oppositeAxis], [axis]: targetControl },\n ] as unknown[] as NodePosition[];\n }\n }\n }\n\n if (reverseControls) {\n controls.reverse();\n }\n\n return [p0, ...controls, p1] as NodePosition[];\n}\n\nfunction getCoordinates(\n node: NodeRect,\n direction: Direction,\n position: number\n): NodePosition {\n const { x, y, width, height } = node;\n switch (direction) {\n case \"top\":\n return {\n x: x - width / 2 + width * position,\n y: y - height / 2,\n };\n case \"bottom\":\n return {\n x: x - width / 2 + width * position,\n y: y + height / 2,\n };\n case \"left\":\n return {\n x: x - width / 2,\n y: y - height / 2 + height * position,\n };\n case \"right\":\n return {\n x: x + width / 2,\n y: y - height / 2 + height * position,\n };\n }\n}\n","import type { PositionTuple } from \"../interfaces\";\n\n// https://paulbourke.net/geometry/pointlineplane/javascript.txt\nexport function intersect(\n [x1, y1]: PositionTuple,\n [x2, y2]: PositionTuple,\n [x3, y3]: PositionTuple,\n [x4, y4]: PositionTuple\n): null | PositionTuple {\n // Check if none of the lines are of length 0\n if ((x1 === x2 && y1 === y2) || (x3 === x4 && y3 === y4)) {\n return null;\n }\n\n const denominator = (y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1);\n\n // Lines are parallel\n if (denominator === 0) {\n return null;\n }\n\n const ua = ((x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3)) / denominator;\n const ub = ((x2 - x1) * (y1 - y3) - (y2 - y1) * (x1 - x3)) / denominator;\n\n // is the intersection along the segments\n if (ua < 0 || ua > 1 || ub < 0 || ub > 1) {\n return null;\n }\n\n // Return a object with the x and y coordinates of the intersection\n const x = x1 + ua * (x2 - x1);\n const y = y1 + ua * (y2 - y1);\n\n return [x, y];\n}\n","import {\n curveLinear,\n line,\n curveBasis,\n curveBumpX,\n curveBumpY,\n type CurveFactory,\n curveMonotoneX,\n curveNatural,\n curveMonotoneY,\n} from \"d3-shape\";\nimport type { CurveType, NodePosition } from \"../interfaces\";\nimport type { LineSegmentJumps } from \"../../draw-canvas/interfaces\";\n\n/**\n * Generate Line from points\n */\nexport function curveLine(\n points: Array<NodePosition> | null | undefined,\n curveType: CurveType | undefined,\n startOffset: number,\n endOffset: number,\n jumpsMap?: Map<number, LineSegmentJumps> | null\n): string {\n if (!Array.isArray(points)) {\n return \"\";\n }\n let curveFactory: CurveFactory;\n switch (curveType) {\n case \"curveLinear\":\n curveFactory = curveLinear;\n break;\n case \"curveBumpX\":\n curveFactory = curveBumpX;\n break;\n case \"curveBumpY\":\n curveFactory = curveBumpY;\n break;\n case \"curveMonotoneX\":\n curveFactory = curveMonotoneX;\n break;\n case \"curveMonotoneY\":\n curveFactory = curveMonotoneY;\n break;\n case \"curveNatural\":\n curveFactory = curveNatural;\n break;\n default:\n curveFactory = curveBasis;\n }\n const startOffsets = getOffsets(points[1], points[0], startOffset);\n const endOffsets = getOffsets(\n points[points.length - 2],\n points[points.length - 1],\n endOffset\n );\n const lineFunction = line<NodePosition>()\n .x(\n (d, index) =>\n d.x -\n (index === 0\n ? startOffsets.x\n : index === points.length - 1\n ? endOffsets.x\n : 0)\n )\n .y(\n (d, index) =>\n d.y -\n (index === 0\n ? startOffsets.y\n : index === points.length - 1\n ? endOffsets.y\n : 0)\n )\n .curve(curveFactory);\n\n if (jumpsMap && curveType == \"curveLinear\") {\n const d: string[] = [];\n for (let i = 0; i < points.length - 1; i++) {\n const start = points[i];\n const end = points[i + 1];\n if (i === 0) {\n d.push(`M${start.x},${start.y}`);\n }\n // 处理交叉跨线点\n const jump = jumpsMap.get(i);\n if (jump) {\n // 跨线点近似为一段半圆,参考 draw.io 使用三次贝赛尔曲线实现。\n // 一条 jump 记录中所有的 jumpPoints 都在同一线段上,因此角度一致、尺寸一致。\n const dx = end.x - start.x;\n const dy = end.y - start.y;\n const angle = Math.atan2(dy, dx);\n const direction = Math.abs(angle) <= Math.PI / 2 ? -1 : 1;\n const verticalAngle = angle + (Math.PI / 2) * direction;\n const offsetX = jump.radius * 1.3 * Math.cos(verticalAngle);\n const offsetY = jump.radius * 1.3 * Math.sin(verticalAngle);\n const xDiff = jump.radius * Math.cos(angle);\n const yDiff = jump.radius * Math.sin(angle);\n for (const p of jump.jumpPoints) {\n const x0 = p.x - xDiff;\n const y0 = p.y - yDiff;\n const x1 = p.x + xDiff;\n const y1 = p.y + yDiff;\n d.push(`L${x0},${y0}`);\n d.push(\n `C${x0 + offsetX},${y0 + offsetY} ${x1 + offsetX},${y1 + offsetY} ${x1},${y1}`\n );\n }\n }\n d.push(`L${end.x},${end.y}`);\n }\n return d.join(\"\");\n }\n\n return lineFunction(points)!;\n}\n\nfunction getOffsets(\n start: NodePosition,\n end: NodePosition,\n offset: number\n): NodePosition {\n if (!offset) {\n return { x: 0, y: 0 };\n }\n const { x: x0, y: y0 } = start;\n const { x: x1, y: y1 } = end;\n const distance = Math.sqrt(Math.pow(x1 - x0, 2) + Math.pow(y1 - y0, 2));\n const ratio = offset / distance;\n return {\n x: (x1 - x0) * ratio,\n y: (y1 - y0) * ratio,\n };\n}\n","import type { FullRectTuple, PartialRectTuple } from \"../interfaces\";\n\nexport function extractPartialRectTuple(\n value: PartialRectTuple\n): FullRectTuple {\n if (Array.isArray(value)) {\n const v0 = value[0];\n const v1 = value.length > 1 ? value[1]! : v0;\n const v2 = value.length > 2 ? value[2]! : v0;\n const v3 = value.length > 3 ? value[3]! : v1;\n return [v0, v1, v2, v3];\n }\n return new Array(4).fill(value) as FullRectTuple;\n}\n"],"names":["doTwoNodesOverlap","a","b","paddingA","paddingB","A","getNodesWithPadding","B","left","Math","min","x","width","right","max","top","y","height","bottom","node","padding","getDirectLinePoints","source","target","parallelGap","edgeView","hasExitPosition","exitPosition","hasEntryPosition","entryPosition","p0","p1","xDiff","yDiff","dx","dy","angle","atan2","cos","PI","sin","line","sourceIntersections","getIntersections","length","targetIntersections","rect","vertices","possibleLines","i","push","intersections","item","intersection","intersect","MarkerComponent","_ref","Component","id","type","strokeColor","EntityRelationZeroOrOneMarker","EntityRelationZeroOrManyMarker","CircleMarker","ArrowMarker","React","_ref2","viewBox","refX","refY","overflow","markerWidth","r","markerHeight","stroke","fill","cx","cy","_ref3","orient","strokeLinejoin","d","strokeWidth","_ref4","_ref5","MINIMAL_OFFSET","getPolyLinePoints","sourceDirection","targetDirection","sourcePosition","targetPosition","getCoordinates","controls","reverseControls","sourceIsVertical","horizontal","vertical","horizontalSign","verticalSign","horizontalPosition","verticalPosition","defaultControlX","defaultControlY","controlY0","controlY1","middleY","middleX","sourceExtendX","sign","start","end","startPosition","endPosition","axis","oppositeAxis","around","nonAround","aroundPosition","nonAroundPosition","aroundSign","targetSign","size","oppositeSize","targetEdge","sourceEdge","targetControl","sourceControl","oppositeIsStraight","middle","targetOppositeSign","sourceOppositeControl","targetOppositeControl","abs","oppositeMiddle","reverse","direction","position","x1","y1","x2","y2","x3","y3","x4","y4","denominator","ua","ub","curveLine","points","curveType","startOffset","endOffset","jumpsMap","Array","isArray","curveFactory","curveLinear","curveBumpX","curveBumpY","curveMonotoneX","curveMonotoneY","curveNatural","curveBasis","startOffsets","getOffsets","endOffsets","lineFunction","index","curve","jump","get","verticalAngle","offsetX","radius","offsetY","p","jumpPoints","x0","y0","join","offset","ratio","sqrt","pow","extractPartialRectTuple","value","v0","v1"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- (globalThis.webpackChunk_next_bricks_diagram=globalThis.webpackChunk_next_bricks_diagram||[]).push([[9844],{9844:(n,e,s)=>{var r={"./en-au":4073,"./en-au.js":4073,"./en-ca":1387,"./en-ca.js":1387,"./en-gb":1386,"./en-gb.js":1386,"./en-ie":3537,"./en-ie.js":3537,"./en-il":7050,"./en-il.js":7050,"./en-in":3008,"./en-in.js":3008,"./en-nz":6963,"./en-nz.js":6963,"./en-sg":4865,"./en-sg.js":4865,"./zh-cn":3710,"./zh-cn.js":3710,"./zh-hk":3005,"./zh-hk.js":3005,"./zh-mo":7696,"./zh-mo.js":7696,"./zh-tw":5861,"./zh-tw.js":5861};function i(n){var e=a(n);return s(e)}function a(n){if(!s.o(r,n)){var e=new Error("Cannot find module '"+n+"'");throw e.code="MODULE_NOT_FOUND",e}return r[n]}i.keys=function(){return Object.keys(r)},i.resolve=a,n.exports=i,i.id=9844}}]);
2
- //# sourceMappingURL=9844.4ab00110.js.map
1
+ (globalThis.webpackChunk_next_bricks_diagram=globalThis.webpackChunk_next_bricks_diagram||[]).push([[9844],{9844:(n,e,s)=>{var r={"./en-au":4073,"./en-au.js":4073,"./en-ca":1387,"./en-ca.js":1387,"./en-gb":1386,"./en-gb.js":1386,"./en-ie":3537,"./en-ie.js":3537,"./en-il":7050,"./en-il.js":7050,"./en-in":3008,"./en-in.js":3008,"./en-nz":6963,"./en-nz.js":6963,"./en-sg":4865,"./en-sg.js":4865,"./zh-cn":1329,"./zh-cn.js":1329,"./zh-hk":3005,"./zh-hk.js":3005,"./zh-mo":7696,"./zh-mo.js":7696,"./zh-tw":5861,"./zh-tw.js":5861};function i(n){var e=a(n);return s(e)}function a(n){if(!s.o(r,n)){var e=new Error("Cannot find module '"+n+"'");throw e.code="MODULE_NOT_FOUND",e}return r[n]}i.keys=function(){return Object.keys(r)},i.resolve=a,n.exports=i,i.id=9844}}]);
2
+ //# sourceMappingURL=9844.4a3a83f7.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chunks/9844.4ab00110.js","mappings":"2HAAA,IAAIA,EAAM,CACT,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,MAIf,SAASC,EAAeC,GACvB,IAAIC,EAAKC,EAAsBF,GAC/B,OAAOG,EAAoBF,EAC5B,CACA,SAASC,EAAsBF,GAC9B,IAAIG,EAAoBC,EAAEN,EAAKE,GAAM,CACpC,IAAIK,EAAI,IAAIC,MAAM,uBAAyBN,EAAM,KAEjD,MADAK,EAAEE,KAAO,mBACHF,CACP,CACA,OAAOP,EAAIE,EACZ,CACAD,EAAeS,KAAO,WACrB,OAAOC,OAAOD,KAAKV,EACpB,EACAC,EAAeW,QAAUR,EACzBS,EAAOC,QAAUb,EACjBA,EAAeE,GAAK,I","sources":["webpack:///../../node_modules/moment/locale/ sync zh%7Cen"],"sourcesContent":["var map = {\n\t\"./en-au\": 4073,\n\t\"./en-au.js\": 4073,\n\t\"./en-ca\": 1387,\n\t\"./en-ca.js\": 1387,\n\t\"./en-gb\": 1386,\n\t\"./en-gb.js\": 1386,\n\t\"./en-ie\": 3537,\n\t\"./en-ie.js\": 3537,\n\t\"./en-il\": 7050,\n\t\"./en-il.js\": 7050,\n\t\"./en-in\": 3008,\n\t\"./en-in.js\": 3008,\n\t\"./en-nz\": 6963,\n\t\"./en-nz.js\": 6963,\n\t\"./en-sg\": 4865,\n\t\"./en-sg.js\": 4865,\n\t\"./zh-cn\": 3710,\n\t\"./zh-cn.js\": 3710,\n\t\"./zh-hk\": 3005,\n\t\"./zh-hk.js\": 3005,\n\t\"./zh-mo\": 7696,\n\t\"./zh-mo.js\": 7696,\n\t\"./zh-tw\": 5861,\n\t\"./zh-tw.js\": 5861\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 9844;"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports"],"sourceRoot":""}
1
+ {"version":3,"file":"chunks/9844.4a3a83f7.js","mappings":"2HAAA,IAAIA,EAAM,CACT,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,MAIf,SAASC,EAAeC,GACvB,IAAIC,EAAKC,EAAsBF,GAC/B,OAAOG,EAAoBF,EAC5B,CACA,SAASC,EAAsBF,GAC9B,IAAIG,EAAoBC,EAAEN,EAAKE,GAAM,CACpC,IAAIK,EAAI,IAAIC,MAAM,uBAAyBN,EAAM,KAEjD,MADAK,EAAEE,KAAO,mBACHF,CACP,CACA,OAAOP,EAAIE,EACZ,CACAD,EAAeS,KAAO,WACrB,OAAOC,OAAOD,KAAKV,EACpB,EACAC,EAAeW,QAAUR,EACzBS,EAAOC,QAAUb,EACjBA,EAAeE,GAAK,I","sources":["webpack:///../../node_modules/moment/locale/ sync zh%7Cen"],"sourcesContent":["var map = {\n\t\"./en-au\": 4073,\n\t\"./en-au.js\": 4073,\n\t\"./en-ca\": 1387,\n\t\"./en-ca.js\": 1387,\n\t\"./en-gb\": 1386,\n\t\"./en-gb.js\": 1386,\n\t\"./en-ie\": 3537,\n\t\"./en-ie.js\": 3537,\n\t\"./en-il\": 7050,\n\t\"./en-il.js\": 7050,\n\t\"./en-in\": 3008,\n\t\"./en-in.js\": 3008,\n\t\"./en-nz\": 6963,\n\t\"./en-nz.js\": 6963,\n\t\"./en-sg\": 4865,\n\t\"./en-sg.js\": 4865,\n\t\"./zh-cn\": 1329,\n\t\"./zh-cn.js\": 1329,\n\t\"./zh-hk\": 3005,\n\t\"./zh-hk.js\": 3005,\n\t\"./zh-mo\": 7696,\n\t\"./zh-mo.js\": 7696,\n\t\"./zh-tw\": 5861,\n\t\"./zh-tw.js\": 5861\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 9844;"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(globalThis.webpackChunk_next_bricks_diagram=globalThis.webpackChunk_next_bricks_diagram||[]).push([[9823],{6094:(e,t,a)=>{a.r(t),a.d(t,{EoDisplayCanvas:()=>Oe});var s,l=a(4635),i=a(918),o=a(6902),n=a(5536),r=a(6121),h=a(829),d=a(2740),c=a(8769),u=a.n(c),g=a(6192),A=a(9859),p=(a(6477),a(1030)),C=a(3373),k=a.n(C),b=a(7566),y=a(3739),v=a(8185),f=a(3906),m=a(3783),N=a(3033),T=a(8091),W=a(1819),R=a(5748),w=a(227),M=a(531),E=a(7099),S=a(1484),z=a(8197),B=a(7531),L=a(2098),x=a(3012),O=a(6237),$=a(4117);let F,Z,U,_,H,K,P,D,I,Y,q,J,j,G,Q,V,X,ee,te,ae,se,le,ie,oe,ne,re,he,de,ce,ue,ge,Ae,pe,Ce,ke,be,ye,ve,fe,me,Ne,Te,We,Re,we,Me,Ee,Se,ze;const{defineElement:Be,property:Le,event:xe}=(0,g.createDecorators)();let Oe;var $e=new WeakMap,Fe=new WeakMap,Ze=new WeakMap,Ue=new WeakMap,_e=new WeakMap,He=new WeakMap,Ke=new WeakMap,Pe=new WeakMap,De=new WeakMap,Ie=new WeakMap,Ye=new WeakMap,qe=new WeakMap,Je=new WeakMap,je=new WeakMap,Ge=new WeakMap,Qe=new WeakMap,Ve=new WeakMap,Xe=new WeakMap,et=new WeakMap,tt=new WeakSet,at=new WeakMap,st=new WeakMap,lt=new WeakMap,it=new WeakMap,ot=new WeakMap,nt=new WeakMap;class rt extends A.ReactNextElement{constructor(){super(...arguments),(0,l.A)(this,tt),(0,i.A)(this,$e,Z(this)),(0,i.A)(this,Fe,(U(this),_(this))),(0,i.A)(this,Ze,(H(this),K(this))),(0,i.A)(this,Ue,(P(this),D(this,[N.HP,N.HP]))),(0,i.A)(this,_e,(I(this),Y(this))),(0,i.A)(this,He,(q(this),J(this))),(0,i.A)(this,Ke,(j(this),G(this))),(0,i.A)(this,Pe,(Q(this),V(this))),(0,i.A)(this,De,(X(this),ee(this))),(0,i.A)(this,Ie,(te(this),ae(this))),(0,i.A)(this,Ye,(se(this),le(this,!0))),(0,i.A)(this,qe,(ie(this),oe(this,!0))),(0,i.A)(this,Je,(ne(this),re(this,!0))),(0,i.A)(this,je,(he(this),de(this))),(0,i.A)(this,Ge,(ce(this),ue(this))),(0,i.A)(this,Qe,(ge(this),Ae(this))),(0,i.A)(this,Ve,(pe(this),Ce(this))),(0,i.A)(this,Xe,(ke(this),be(this))),(0,i.A)(this,et,(ye(this),ve(this))),(0,i.A)(this,at,(Ne(this),e=>{(0,n.A)(tt,this,fe).emit(e)})),(0,i.A)(this,st,(e=>{(0,v.c)(e,this.activeTarget)||(this.activeTarget=e)})),(0,i.A)(this,lt,Te(this)),(0,i.A)(this,it,(we(this),e=>{(0,n.A)(tt,this,We).emit(e)})),(0,i.A)(this,ot,Me(this)),(0,i.A)(this,nt,(ze(this),e=>{(0,n.A)(tt,this,Ee).emit(e)}))}get cells(){return(0,h.A)($e,this)}set cells(e){(0,r.A)($e,this,e)}get layout(){return(0,h.A)(Fe,this)}set layout(e){(0,r.A)(Fe,this,e)}get layoutOptions(){return(0,h.A)(Ze,this)}set layoutOptions(e){(0,r.A)(Ze,this,e)}get defaultNodeSize(){return(0,h.A)(Ue,this)}set defaultNodeSize(e){(0,r.A)(Ue,this,e)}get defaultNodeBricks(){return(0,h.A)(_e,this)}set defaultNodeBricks(e){(0,r.A)(_e,this,e)}get degradedThreshold(){return(0,h.A)(He,this)}set degradedThreshold(e){(0,r.A)(He,this,e)}get degradedNodeLabel(){return(0,h.A)(Ke,this)}set degradedNodeLabel(e){(0,r.A)(Ke,this,e)}get defaultEdgeLines(){return(0,h.A)(Pe,this)}set defaultEdgeLines(e){(0,r.A)(Pe,this,e)}get activeTarget(){return(0,h.A)(De,this)}set activeTarget(e){(0,r.A)(De,this,e)}get fadeUnrelatedCells(){return(0,h.A)(Ie,this)}set fadeUnrelatedCells(e){(0,r.A)(Ie,this,e)}get zoomable(){return(0,h.A)(Ye,this)}set zoomable(e){(0,r.A)(Ye,this,e)}get scrollable(){return(0,h.A)(qe,this)}set scrollable(e){(0,r.A)(qe,this,e)}get pannable(){return(0,h.A)(Je,this)}set pannable(e){(0,r.A)(Je,this,e)}get scaleRange(){return(0,h.A)(je,this)}set scaleRange(e){(0,r.A)(je,this,e)}get hideZoomBar(){return(0,h.A)(Ge,this)}set hideZoomBar(e){(0,r.A)(Ge,this,e)}get autoCenterWhenCellsChange(){return(0,h.A)(Qe,this)}set autoCenterWhenCellsChange(e){(0,r.A)(Qe,this,e)}get doNotResetActiveTargetForSelector(){return(0,h.A)(Ve,this)}set doNotResetActiveTargetForSelector(e){(0,r.A)(Ve,this,e)}get doNotResetActiveTargetOutsideCanvas(){return(0,h.A)(Xe,this)}set doNotResetActiveTargetOutsideCanvas(e){(0,r.A)(Xe,this,e)}render(){return u().createElement(ht,{shadowRoot:this.shadowRoot,cells:this.cells,layout:this.layout,layoutOptions:this.layoutOptions,defaultNodeSize:this.defaultNodeSize,defaultNodeBricks:this.defaultNodeBricks,defaultEdgeLines:this.defaultEdgeLines,degradedThreshold:this.degradedThreshold,degradedNodeLabel:this.degradedNodeLabel,activeTarget:this.activeTarget,fadeUnrelatedCells:this.fadeUnrelatedCells,zoomable:this.zoomable,scrollable:this.scrollable,pannable:this.pannable,scaleRange:this.scaleRange,hideZoomBar:this.hideZoomBar,doNotResetActiveTargetForSelector:this.doNotResetActiveTargetForSelector,doNotResetActiveTargetOutsideCanvas:this.doNotResetActiveTargetOutsideCanvas,autoCenterWhenCellsChange:this.autoCenterWhenCellsChange,onActiveTargetChange:(0,h.A)(at,this),onSwitchActiveTarget:(0,h.A)(st,this),onCellContextMenu:(0,h.A)(it,this),onCellClick:(0,h.A)(nt,this)})}}function ht(e){let{shadowRoot:t,cells:a,layout:s,layoutOptions:l,defaultNodeSize:i,defaultNodeBricks:o,defaultEdgeLines:n,degradedThreshold:r,degradedNodeLabel:h,activeTarget:d,fadeUnrelatedCells:g,zoomable:A,scrollable:C,pannable:v,scaleRange:x,hideZoomBar:O,autoCenterWhenCellsChange:F,doNotResetActiveTargetForSelector:Z,doNotResetActiveTargetOutsideCanvas:U,onActiveTargetChange:_,onSwitchActiveTarget:H,onCellContextMenu:K,onCellClick:P}=e;const[{cells:D,layoutKey:I},Y]=(0,c.useReducer)(R.d,a,(e=>({cells:(0,m.C)(e,{defaultNodeSize:i}),layoutKey:1}))),q=(0,c.useMemo)((()=>D.filter(M.N).length>=(null!=r?r:N.pC)),[D,r]),J=(0,c.useRef)(null),{grabbing:j,transform:G,zoomer:Q,scaleRange:V}=(0,T.f)({rootRef:J,zoomable:A,scrollable:C,pannable:v,draggable:!0,scaleRange:x,onSwitchActiveTarget:H}),{centered:X,setCentered:ee,getNextLayoutKey:te}=(0,S.g)({layout:s,layoutOptions:l,rootRef:J,cells:D,zoomable:A,zoomer:Q,scaleRange:V,layoutKey:I,autoCenterWhenCellsChange:F,dispatch:Y}),ae=(0,c.useCallback)((()=>{ee(!1)}),[ee]),se=(0,c.useRef)(a);(0,c.useEffect)((()=>{if(a!==se.current){se.current=a;const e=(0,L.L)({canvasWidth:t.host.clientWidth,canvasHeight:t.host.clientHeight,defaultNodeSize:i,layout:s,previousCells:D,cells:a,scaleRange:V,transform:G});Y({type:"update-cells",payload:e.cells})}}),[D,i,a,s,V,t,G]);const le=(0,W.J)({rootRef:J,activeTarget:d,doNotResetActiveTargetForSelector:Z,doNotResetActiveTargetOutsideCanvas:U,onActiveTargetChange:_}),ie=`${(0,c.useMemo)((()=>`${(0,p.uniqueId)("diagram-")}-`),[])}line-arrow-`,oe=(0,c.useCallback)(((e,t)=>{Y({type:"update-node-size",payload:{id:e,size:t},layoutKey:te()})}),[te]),[ne,re]=(0,c.useState)(null),he=(0,c.useCallback)((e=>{re(e)}),[]),de=(0,c.useCallback)((e=>{re((t=>t===e?null:t))}),[]),[ce,ue]=(0,c.useState)([]);(0,c.useEffect)((()=>{const e=g?(0,w.Y)(D,null,ne):[];ue((t=>0===t.length&&0===e.length?t:e))}),[D,g,ne]);const ge=(0,c.useCallback)((e=>{Q.scaleTo((0,b.A)(J.current),e/100)}),[Q]),{lineConfMap:Ae,markers:pe}=(0,B.d)({cells:D,defaultEdgeLines:n,markerPrefix:ie}),Ce=(0,$.A)({cells:D,lineConfMap:Ae}),ke=(0,z.H)({cells:D,layout:s,centered:X});return u().createElement(u().Fragment,null,u().createElement("svg",{width:"100%",height:"100%",ref:J,className:k()("root",{grabbing:j,pannable:v,ready:ke}),tabIndex:-1},u().createElement("defs",null,pe.map(((e,t)=>u().createElement(y.c,{key:t,id:`${ie}${t}`,type:e.markerType,strokeColor:e.strokeColor})))),u().createElement("g",{transform:`translate(${G.x} ${G.y}) scale(${G.k})`},u().createElement("g",{className:"cells"},D.map((e=>u().createElement(f.m,{key:`${e.type}:${(0,M.WW)(e)?`${e.source}~${e.target}`:e.id}`,layout:s,cell:e,cells:D,degraded:q,degradedNodeLabel:h,defaultNodeBricks:o,lineConfMap:Ae,editableLineMap:Ce,transform:G,activeTarget:le,readOnly:!0,hoverCell:ne,unrelatedCells:ce,onSwitchActiveTarget:H,onCellContextMenu:K,onCellClick:P,onNodeBrickResize:oe,onCellMouseEnter:g&&((0,M.N)(e)||(0,M.WW)(e))?he:void 0,onCellMouseLeave:g&&((0,M.N)(e)||(0,M.WW)(e))?de:void 0})))))),!O&&u().createElement(E.Y,{shadowRoot:t,scale:G.k,scaleRange:V,onZoomChange:ge,onReCenter:ae}))}s=rt,({e:[Z,U,_,H,K,P,D,I,Y,q,J,j,G,Q,V,X,ee,te,ae,se,le,ie,oe,ne,re,he,de,ce,ue,ge,Ae,pe,Ce,ke,be,ye,ve,fe,me,Ne,Te,We,Re,we,Me,Ee,Se,ze],c:[Oe,F]}=(0,d.A)(s,[Be("eo-display-canvas",{styleTexts:[x.A,O.A]})],[[Le({attribute:!1}),1,"cells"],[Le({type:String}),1,"layout"],[Le({attribute:!1}),1,"layoutOptions"],[Le({attribute:!1}),1,"defaultNodeSize"],[Le({attribute:!1}),1,"defaultNodeBricks"],[Le({type:Number}),1,"degradedThreshold"],[Le({attribute:!1}),1,"degradedNodeLabel"],[Le({attribute:!1}),1,"defaultEdgeLines"],[Le({attribute:!1}),1,"activeTarget"],[Le({type:Boolean}),1,"fadeUnrelatedCells"],[Le({type:Boolean}),1,"zoomable"],[Le({type:Boolean}),1,"scrollable"],[Le({type:Boolean}),1,"pannable"],[Le({attribute:!1}),1,"scaleRange"],[Le({type:Boolean}),1,"hideZoomBar"],[Le({type:Boolean}),1,"autoCenterWhenCellsChange"],[Le(),1,"doNotResetActiveTargetForSelector"],[Le({type:Boolean}),1,"doNotResetActiveTargetOutsideCanvas"],[xe({type:"activeTarget.change"}),1,"activeTargetChangeEvent",e=>(0,h.A)(et,e),(e,t)=>(0,r.A)(et,e,t)],[xe({type:"cell.contextmenu"}),1,"cellContextMenu",e=>(0,h.A)(lt,e),(e,t)=>(0,r.A)(lt,e,t)],[xe({type:"cell.click"}),1,"cellClick",e=>(0,h.A)(ot,e),(e,t)=>(0,r.A)(ot,e,t)]],0,(e=>nt.has((0,o.A)(e))),A.ReactNextElement)),F()}}]);
2
+ //# sourceMappingURL=eo-display-canvas.2c6cf897.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chunks/eo-display-canvas.35e32036.js","mappings":"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","sources":["webpack:///./src/display-canvas/index.tsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { uniqueId } from \"lodash\";\nimport classNames from \"classnames\";\nimport { select } from \"d3-selection\";\nimport type { RangeTuple, SizeTuple } from \"../diagram/interfaces\";\nimport type {\n ActiveTarget,\n InitialCell,\n NodeBrickConf,\n CellContextMenuDetail,\n EdgeLineConf,\n Cell,\n LayoutType,\n LayoutOptions,\n} from \"../draw-canvas/interfaces\";\nimport { MarkerComponent } from \"../diagram/MarkerComponent\";\nimport { sameTarget } from \"../draw-canvas/processors/sameTarget\";\nimport { CellComponent } from \"../draw-canvas/CellComponent\";\nimport { initializeCells } from \"../draw-canvas/processors/initializeCells\";\nimport {\n DEFAULT_DEGRADED_THRESHOLD,\n DEFAULT_NODE_SIZE,\n} from \"../draw-canvas/constants\";\nimport { useZoom } from \"../shared/canvas/useZoom\";\nimport { useActiveTarget } from \"../shared/canvas/useActiveTarget\";\nimport { rootReducer } from \"../draw-canvas/reducers\";\nimport { getUnrelatedCells } from \"../draw-canvas/processors/getUnrelatedCells\";\nimport { isEdgeCell, isNodeCell } from \"../draw-canvas/processors/asserts\";\nimport { ZoomBarComponent } from \"../shared/canvas/ZoomBarComponent\";\nimport { useLayout } from \"../shared/canvas/useLayout\";\nimport { useReady } from \"../shared/canvas/useReady\";\nimport { useLineMarkers } from \"../shared/canvas/useLineMarkers\";\nimport { updateCells } from \"../draw-canvas/processors/updateCells\";\nimport styleText from \"../shared/canvas/styles.shadow.css\";\nimport zoomBarStyleText from \"../shared/canvas/ZoomBarComponent.shadow.css\";\nimport { useEditableLineMap } from \"../shared/canvas/useEditableLineMap\";\n\nconst { defineElement, property, event } = createDecorators();\n\nexport interface EoDisplayCanvasProps {\n cells: InitialCell[] | undefined;\n layout: LayoutType;\n layoutOptions?: LayoutOptions;\n defaultNodeSize: SizeTuple;\n defaultNodeBricks?: NodeBrickConf[];\n defaultEdgeLines?: EdgeLineConf[];\n degradedThreshold?: number;\n degradedNodeLabel?: string;\n activeTarget?: ActiveTarget | null;\n fadeUnrelatedCells?: boolean;\n zoomable?: boolean;\n scrollable?: boolean;\n pannable?: boolean;\n scaleRange?: RangeTuple;\n hideZoomBar?: boolean;\n autoCenterWhenCellsChange?: boolean;\n doNotResetActiveTargetForSelector?: string;\n doNotResetActiveTargetOutsideCanvas?: boolean;\n}\n\n/**\n * 用于展示查看的画布。\n */\nexport\n@defineElement(\"eo-display-canvas\", {\n styleTexts: [styleText, zoomBarStyleText],\n})\nclass EoDisplayCanvas extends ReactNextElement implements EoDisplayCanvasProps {\n /**\n * 用于查看的画布可以更新 `cells` 属性。\n */\n @property({ attribute: false })\n accessor cells: InitialCell[] | undefined;\n\n @property({ type: String })\n accessor layout: LayoutType;\n\n @property({ attribute: false })\n accessor layoutOptions: LayoutOptions | undefined;\n\n @property({ attribute: false })\n accessor defaultNodeSize: SizeTuple = [DEFAULT_NODE_SIZE, DEFAULT_NODE_SIZE];\n\n @property({ attribute: false })\n accessor defaultNodeBricks: NodeBrickConf[] | undefined;\n\n /**\n * 当节点数量达到或超过 `degradedThreshold` 时,节点将被降级展示。\n *\n * @default 500\n */\n @property({ type: Number })\n accessor degradedThreshold: number | undefined;\n\n // Set `attribute` to `false` event if it accepts string value.\n // Because when passing like \"<% DATA.node.data.name %>\", it will be\n // evaluated as object temporarily.\n /**\n * 设置节点将降级展示时显示的名称。\n *\n * @default \"<% DATA.node.id %>\"\n */\n @property({ attribute: false })\n accessor degradedNodeLabel: string | undefined;\n\n /**\n * 使用条件判断设置默认的边对应的连线。在 `if` 表达式中 `DATA` 为 `{ edge }`,例如:\n *\n * ```yaml\n * defaultEdgeLines:\n * - if: <% DATA.edge.data?.virtual %>\n * dashed: true\n * ```\n */\n @property({ attribute: false })\n accessor defaultEdgeLines: EdgeLineConf[] | undefined;\n\n @property({ attribute: false })\n accessor activeTarget: ActiveTarget | null | undefined;\n\n /**\n * 当鼠标悬浮到某节点上时,隐藏其他跟该节点无关的元素。\n */\n @property({ type: Boolean })\n accessor fadeUnrelatedCells: boolean | undefined;\n\n @property({ type: Boolean })\n accessor zoomable: boolean | undefined = true;\n\n @property({ type: Boolean })\n accessor scrollable: boolean | undefined = true;\n\n @property({ type: Boolean })\n accessor pannable: boolean | undefined = true;\n\n @property({ attribute: false })\n accessor scaleRange: RangeTuple | undefined;\n\n /**\n * 隐藏右下角放大缩小的控制栏\n */\n @property({ type: Boolean })\n accessor hideZoomBar: boolean | undefined;\n\n /**\n * 每当 cells 改变时,重新自动居中\n */\n @property({ type: Boolean })\n accessor autoCenterWhenCellsChange: boolean | undefined;\n\n /**\n * 选择器,点击该选择器对应的元素时不重置 `activeTarget`。\n */\n @property()\n accessor doNotResetActiveTargetForSelector: string | undefined;\n\n /**\n * 在画布外点击时不重置 `activeTarget`。\n */\n @property({ type: Boolean })\n accessor doNotResetActiveTargetOutsideCanvas: boolean | undefined;\n\n @event({ type: \"activeTarget.change\" })\n accessor #activeTargetChangeEvent!: EventEmitter<ActiveTarget | null>;\n\n #handleActiveTargetChange = (target: ActiveTarget | null) => {\n this.#activeTargetChangeEvent.emit(target);\n };\n\n #handleSwitchActiveTarget = (target: ActiveTarget | null) => {\n if (!sameTarget(target, this.activeTarget)) {\n this.activeTarget = target;\n }\n };\n\n @event({ type: \"cell.contextmenu\" })\n accessor #cellContextMenu!: EventEmitter<CellContextMenuDetail>;\n\n #handleCellContextMenu = (detail: CellContextMenuDetail) => {\n this.#cellContextMenu.emit(detail);\n };\n\n @event({ type: \"cell.click\" })\n accessor #cellClick!: EventEmitter<CellContextMenuDetail>;\n\n #handleCellClick = (detail: CellContextMenuDetail) => {\n this.#cellClick.emit(detail);\n };\n\n render() {\n return (\n <EoDisplayCanvasComponent\n shadowRoot={this.shadowRoot!}\n cells={this.cells}\n layout={this.layout}\n layoutOptions={this.layoutOptions}\n defaultNodeSize={this.defaultNodeSize}\n defaultNodeBricks={this.defaultNodeBricks}\n defaultEdgeLines={this.defaultEdgeLines}\n degradedThreshold={this.degradedThreshold}\n degradedNodeLabel={this.degradedNodeLabel}\n activeTarget={this.activeTarget}\n fadeUnrelatedCells={this.fadeUnrelatedCells}\n zoomable={this.zoomable}\n scrollable={this.scrollable}\n pannable={this.pannable}\n scaleRange={this.scaleRange}\n hideZoomBar={this.hideZoomBar}\n doNotResetActiveTargetForSelector={\n this.doNotResetActiveTargetForSelector\n }\n doNotResetActiveTargetOutsideCanvas={\n this.doNotResetActiveTargetOutsideCanvas\n }\n autoCenterWhenCellsChange={this.autoCenterWhenCellsChange}\n onActiveTargetChange={this.#handleActiveTargetChange}\n onSwitchActiveTarget={this.#handleSwitchActiveTarget}\n onCellContextMenu={this.#handleCellContextMenu}\n onCellClick={this.#handleCellClick}\n />\n );\n }\n}\n\nexport interface EoDisplayCanvasComponentProps extends EoDisplayCanvasProps {\n shadowRoot: ShadowRoot;\n onActiveTargetChange(target: ActiveTarget | null): void;\n onSwitchActiveTarget(target: ActiveTarget | null): void;\n onCellContextMenu(detail: CellContextMenuDetail): void;\n onCellClick(detail: CellContextMenuDetail): void;\n}\n\nfunction EoDisplayCanvasComponent({\n shadowRoot,\n cells: initialCells,\n layout,\n layoutOptions,\n defaultNodeSize,\n defaultNodeBricks,\n defaultEdgeLines,\n degradedThreshold,\n degradedNodeLabel,\n activeTarget: _activeTarget,\n fadeUnrelatedCells,\n zoomable,\n scrollable,\n pannable,\n scaleRange: _scaleRange,\n hideZoomBar,\n autoCenterWhenCellsChange,\n doNotResetActiveTargetForSelector,\n doNotResetActiveTargetOutsideCanvas,\n onActiveTargetChange,\n onSwitchActiveTarget,\n onCellContextMenu,\n onCellClick,\n}: EoDisplayCanvasComponentProps) {\n const [{ cells, layoutKey }, dispatch] = useReducer(\n rootReducer,\n initialCells,\n (initialCells) => ({\n cells: initializeCells(initialCells, { defaultNodeSize }),\n layoutKey: 1,\n })\n );\n\n // When nodes are greater or equal to threshold, the diagram will be degraded.\n // Thus all nodes will be displayed as simple svg elements instead of bricks.\n const degraded = useMemo(\n () =>\n cells.filter(isNodeCell).length >=\n (degradedThreshold ?? DEFAULT_DEGRADED_THRESHOLD),\n [cells, degradedThreshold]\n );\n\n const rootRef = useRef<SVGSVGElement>(null);\n\n const { grabbing, transform, zoomer, scaleRange } = useZoom({\n rootRef,\n zoomable,\n scrollable,\n pannable,\n draggable: true,\n scaleRange: _scaleRange,\n onSwitchActiveTarget,\n });\n\n const { centered, setCentered, getNextLayoutKey } = useLayout({\n layout,\n layoutOptions,\n rootRef,\n cells,\n zoomable,\n zoomer,\n scaleRange,\n layoutKey,\n autoCenterWhenCellsChange,\n dispatch,\n });\n\n const reCenter = useCallback(() => {\n setCentered(false);\n }, [setCentered]);\n\n const previousCellsRef = useRef(initialCells);\n\n useEffect(() => {\n if (initialCells !== previousCellsRef.current) {\n previousCellsRef.current = initialCells;\n const result = updateCells({\n canvasWidth: shadowRoot.host.clientWidth,\n canvasHeight: shadowRoot.host.clientHeight,\n defaultNodeSize,\n layout,\n previousCells: cells,\n cells: initialCells,\n scaleRange,\n transform,\n });\n dispatch({ type: \"update-cells\", payload: result.cells });\n }\n }, [\n cells,\n defaultNodeSize,\n initialCells,\n layout,\n scaleRange,\n shadowRoot,\n transform,\n ]);\n\n const activeTarget = useActiveTarget({\n rootRef,\n activeTarget: _activeTarget,\n doNotResetActiveTargetForSelector,\n doNotResetActiveTargetOutsideCanvas,\n onActiveTargetChange,\n });\n\n const defPrefix = useMemo(() => `${uniqueId(\"diagram-\")}-`, []);\n const markerPrefix = `${defPrefix}line-arrow-`;\n\n const handleNodeBrickResize = useCallback(\n (id: string, size: SizeTuple | null) => {\n dispatch({\n type: \"update-node-size\",\n payload: { id, size },\n layoutKey: getNextLayoutKey(),\n });\n },\n [getNextLayoutKey]\n );\n\n const [hoverCell, setHoverCell] = useState<Cell | null>(null);\n const handleCellMouseEnter = useCallback((cell: Cell) => {\n setHoverCell(cell);\n }, []);\n const handleCellMouseLeave = useCallback((cell: Cell) => {\n setHoverCell((prev) => (prev === cell ? null : prev));\n }, []);\n\n const [unrelatedCells, setUnrelatedCells] = useState<Cell[]>([]);\n useEffect(() => {\n const nextUnrelated = fadeUnrelatedCells\n ? getUnrelatedCells(cells, null, hoverCell)\n : [];\n // Do not update the state when prev and next are both empty.\n setUnrelatedCells((prev) =>\n prev.length === 0 && nextUnrelated.length === 0 ? prev : nextUnrelated\n );\n }, [cells, fadeUnrelatedCells, hoverCell]);\n\n const handleZoomSlide = useCallback(\n (value: number) => {\n // istanbul ignore next\n if (process.env.NODE_ENV !== \"test\") {\n zoomer.scaleTo(select(rootRef.current!), value / 100);\n }\n },\n [zoomer]\n );\n\n const { lineConfMap, markers } = useLineMarkers({\n cells,\n defaultEdgeLines,\n markerPrefix,\n });\n const editableLineMap = useEditableLineMap({ cells, lineConfMap });\n\n const ready = useReady({ cells, layout, centered });\n\n return (\n <>\n <svg\n width=\"100%\"\n height=\"100%\"\n ref={rootRef}\n className={classNames(\"root\", { grabbing, pannable, ready })}\n tabIndex={-1}\n >\n <defs>\n {markers.map((marker, index) => (\n <MarkerComponent\n key={index}\n id={`${markerPrefix}${index}`}\n type={marker.markerType}\n strokeColor={marker.strokeColor}\n />\n ))}\n </defs>\n <g\n transform={`translate(${transform.x} ${transform.y}) scale(${transform.k})`}\n >\n <g className=\"cells\">\n {cells.map((cell) => (\n <CellComponent\n key={`${cell.type}:${isEdgeCell(cell) ? `${cell.source}~${cell.target}` : cell.id}`}\n layout={layout}\n cell={cell}\n cells={cells}\n degraded={degraded}\n degradedNodeLabel={degradedNodeLabel}\n defaultNodeBricks={defaultNodeBricks}\n lineConfMap={lineConfMap}\n editableLineMap={editableLineMap}\n transform={transform}\n activeTarget={activeTarget}\n readOnly\n hoverCell={hoverCell}\n unrelatedCells={unrelatedCells}\n onSwitchActiveTarget={onSwitchActiveTarget}\n onCellContextMenu={onCellContextMenu}\n onCellClick={onCellClick}\n onNodeBrickResize={handleNodeBrickResize}\n onCellMouseEnter={\n fadeUnrelatedCells && (isNodeCell(cell) || isEdgeCell(cell))\n ? handleCellMouseEnter\n : undefined\n }\n onCellMouseLeave={\n fadeUnrelatedCells && (isNodeCell(cell) || isEdgeCell(cell))\n ? handleCellMouseLeave\n : undefined\n }\n />\n ))}\n </g>\n </g>\n </svg>\n {!hideZoomBar && (\n <ZoomBarComponent\n shadowRoot={shadowRoot}\n scale={transform.k}\n scaleRange={scaleRange}\n onZoomChange={handleZoomSlide}\n onReCenter={reCenter}\n />\n )}\n </>\n );\n}\n"],"names":["defineElement","property","event","createDecorators","_EoDisplayCanvas","_A","WeakMap","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_R","_S","_EoDisplayCanvas_brand","WeakSet","_handleActiveTargetChange","_handleSwitchActiveTarget","_T","_handleCellContextMenu","_U","_handleCellClick","EoDisplayCanvas","ReactNextElement","constructor","arguments","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","_init_cells","_init_extra_cells","_init_layout","_init_extra_layout","_init_layoutOptions","_init_extra_layoutOptions","_init_defaultNodeSize","DEFAULT_NODE_SIZE","_init_extra_defaultNodeSize","_init_defaultNodeBricks","_init_extra_defaultNodeBricks","_init_degradedThreshold","_init_extra_degradedThreshold","_init_degradedNodeLabel","_init_extra_degradedNodeLabel","_init_defaultEdgeLines","_init_extra_defaultEdgeLines","_init_activeTarget","_init_extra_activeTarget","_init_fadeUnrelatedCells","_init_extra_fadeUnrelatedCells","_init_zoomable","_init_extra_zoomable","_init_scrollable","_init_extra_scrollable","_init_pannable","_init_extra_pannable","_init_scaleRange","_init_extra_scaleRange","_init_hideZoomBar","_init_extra_hideZoomBar","_init_autoCenterWhenCellsChange","_init_extra_autoCenterWhenCellsChange","_init_doNotResetActiveTargetForSelector","_init_extra_doNotResetActiveTargetForSelector","_init_doNotResetActiveTargetOutsideCanvas","_init_extra_doNotResetActiveTargetOutsideCanvas","_init_activeTargetChangeEvent","_init_extra_activeTargetChangeEvent","target","_classPrivateGetter","this","_get_activeTargetChangeEvent","emit","sameTarget","activeTarget","_init_cellContextMenu","_init_extra_cellContextMenu","detail","_get_cellContextMenu","_init_cellClick","_init_extra_cellClick","_get_cellClick","cells","_classPrivateFieldGet","v","_classPrivateFieldSet","layout","layoutOptions","defaultNodeSize","defaultNodeBricks","degradedThreshold","degradedNodeLabel","defaultEdgeLines","fadeUnrelatedCells","zoomable","scrollable","pannable","scaleRange","hideZoomBar","autoCenterWhenCellsChange","doNotResetActiveTargetForSelector","doNotResetActiveTargetOutsideCanvas","render","React","EoDisplayCanvasComponent","shadowRoot","onActiveTargetChange","onSwitchActiveTarget","onCellContextMenu","onCellClick","_ref","initialCells","_activeTarget","_scaleRange","layoutKey","dispatch","useReducer","rootReducer","initializeCells","degraded","useMemo","filter","isNodeCell","length","DEFAULT_DEGRADED_THRESHOLD","rootRef","useRef","grabbing","transform","zoomer","useZoom","draggable","centered","setCentered","getNextLayoutKey","useLayout","reCenter","useCallback","previousCellsRef","useEffect","current","result","updateCells","canvasWidth","host","clientWidth","canvasHeight","clientHeight","previousCells","type","payload","useActiveTarget","markerPrefix","uniqueId","handleNodeBrickResize","id","size","hoverCell","setHoverCell","useState","handleCellMouseEnter","cell","handleCellMouseLeave","prev","unrelatedCells","setUnrelatedCells","nextUnrelated","getUnrelatedCells","handleZoomSlide","value","scaleTo","select","lineConfMap","markers","useLineMarkers","editableLineMap","useEditableLineMap","ready","useReady","width","height","ref","className","classNames","tabIndex","map","marker","index","MarkerComponent","key","markerType","strokeColor","x","y","k","CellComponent","isEdgeCell","source","readOnly","onNodeBrickResize","onCellMouseEnter","undefined","onCellMouseLeave","ZoomBarComponent","scale","onZoomChange","onReCenter","_EoDisplayCanvas2","e","_set_activeTargetChangeEvent","_set_cellContextMenu","_set_cellClick","c","_initClass","_applyDecs","styleTexts","styleText","zoomBarStyleText","attribute","String","Number","Boolean","o","_","has","_checkInRHS"],"sourceRoot":""}
1
+ {"version":3,"file":"chunks/eo-display-canvas.2c6cf897.js","mappings":"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","sources":["webpack:///./src/display-canvas/index.tsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { uniqueId } from \"lodash\";\nimport classNames from \"classnames\";\nimport { select } from \"d3-selection\";\nimport type { RangeTuple, SizeTuple } from \"../diagram/interfaces\";\nimport type {\n ActiveTarget,\n InitialCell,\n NodeBrickConf,\n CellContextMenuDetail,\n EdgeLineConf,\n Cell,\n LayoutType,\n LayoutOptions,\n} from \"../draw-canvas/interfaces\";\nimport { MarkerComponent } from \"../diagram/MarkerComponent\";\nimport { sameTarget } from \"../draw-canvas/processors/sameTarget\";\nimport { CellComponent } from \"../draw-canvas/CellComponent\";\nimport { initializeCells } from \"../draw-canvas/processors/initializeCells\";\nimport {\n DEFAULT_DEGRADED_THRESHOLD,\n DEFAULT_NODE_SIZE,\n} from \"../draw-canvas/constants\";\nimport { useZoom } from \"../shared/canvas/useZoom\";\nimport { useActiveTarget } from \"../shared/canvas/useActiveTarget\";\nimport { rootReducer } from \"../draw-canvas/reducers\";\nimport { getUnrelatedCells } from \"../draw-canvas/processors/getUnrelatedCells\";\nimport { isEdgeCell, isNodeCell } from \"../draw-canvas/processors/asserts\";\nimport { ZoomBarComponent } from \"../shared/canvas/ZoomBarComponent\";\nimport { useLayout } from \"../shared/canvas/useLayout\";\nimport { useReady } from \"../shared/canvas/useReady\";\nimport { useLineMarkers } from \"../shared/canvas/useLineMarkers\";\nimport { updateCells } from \"../draw-canvas/processors/updateCells\";\nimport styleText from \"../shared/canvas/styles.shadow.css\";\nimport zoomBarStyleText from \"../shared/canvas/ZoomBarComponent.shadow.css\";\nimport { useEditableLineMap } from \"../shared/canvas/useEditableLineMap\";\n\nconst { defineElement, property, event } = createDecorators();\n\nexport interface EoDisplayCanvasProps {\n cells: InitialCell[] | undefined;\n layout: LayoutType;\n layoutOptions?: LayoutOptions;\n defaultNodeSize: SizeTuple;\n defaultNodeBricks?: NodeBrickConf[];\n defaultEdgeLines?: EdgeLineConf[];\n degradedThreshold?: number;\n degradedNodeLabel?: string;\n activeTarget?: ActiveTarget | null;\n fadeUnrelatedCells?: boolean;\n zoomable?: boolean;\n scrollable?: boolean;\n pannable?: boolean;\n scaleRange?: RangeTuple;\n hideZoomBar?: boolean;\n autoCenterWhenCellsChange?: boolean;\n doNotResetActiveTargetForSelector?: string;\n doNotResetActiveTargetOutsideCanvas?: boolean;\n}\n\n/**\n * 用于展示查看的画布。\n */\nexport\n@defineElement(\"eo-display-canvas\", {\n styleTexts: [styleText, zoomBarStyleText],\n})\nclass EoDisplayCanvas extends ReactNextElement implements EoDisplayCanvasProps {\n /**\n * 用于查看的画布可以更新 `cells` 属性。\n */\n @property({ attribute: false })\n accessor cells: InitialCell[] | undefined;\n\n @property({ type: String })\n accessor layout: LayoutType;\n\n @property({ attribute: false })\n accessor layoutOptions: LayoutOptions | undefined;\n\n @property({ attribute: false })\n accessor defaultNodeSize: SizeTuple = [DEFAULT_NODE_SIZE, DEFAULT_NODE_SIZE];\n\n @property({ attribute: false })\n accessor defaultNodeBricks: NodeBrickConf[] | undefined;\n\n /**\n * 当节点数量达到或超过 `degradedThreshold` 时,节点将被降级展示。\n *\n * @default 500\n */\n @property({ type: Number })\n accessor degradedThreshold: number | undefined;\n\n // Set `attribute` to `false` event if it accepts string value.\n // Because when passing like \"<% DATA.node.data.name %>\", it will be\n // evaluated as object temporarily.\n /**\n * 设置节点将降级展示时显示的名称。\n *\n * @default \"<% DATA.node.id %>\"\n */\n @property({ attribute: false })\n accessor degradedNodeLabel: string | undefined;\n\n /**\n * 使用条件判断设置默认的边对应的连线。在 `if` 表达式中 `DATA` 为 `{ edge }`,例如:\n *\n * ```yaml\n * defaultEdgeLines:\n * - if: <% DATA.edge.data?.virtual %>\n * dashed: true\n * ```\n */\n @property({ attribute: false })\n accessor defaultEdgeLines: EdgeLineConf[] | undefined;\n\n @property({ attribute: false })\n accessor activeTarget: ActiveTarget | null | undefined;\n\n /**\n * 当鼠标悬浮到某节点上时,隐藏其他跟该节点无关的元素。\n */\n @property({ type: Boolean })\n accessor fadeUnrelatedCells: boolean | undefined;\n\n @property({ type: Boolean })\n accessor zoomable: boolean | undefined = true;\n\n @property({ type: Boolean })\n accessor scrollable: boolean | undefined = true;\n\n @property({ type: Boolean })\n accessor pannable: boolean | undefined = true;\n\n @property({ attribute: false })\n accessor scaleRange: RangeTuple | undefined;\n\n /**\n * 隐藏右下角放大缩小的控制栏\n */\n @property({ type: Boolean })\n accessor hideZoomBar: boolean | undefined;\n\n /**\n * 每当 cells 改变时,重新自动居中\n */\n @property({ type: Boolean })\n accessor autoCenterWhenCellsChange: boolean | undefined;\n\n /**\n * 选择器,点击该选择器对应的元素时不重置 `activeTarget`。\n */\n @property()\n accessor doNotResetActiveTargetForSelector: string | undefined;\n\n /**\n * 在画布外点击时不重置 `activeTarget`。\n */\n @property({ type: Boolean })\n accessor doNotResetActiveTargetOutsideCanvas: boolean | undefined;\n\n @event({ type: \"activeTarget.change\" })\n accessor #activeTargetChangeEvent!: EventEmitter<ActiveTarget | null>;\n\n #handleActiveTargetChange = (target: ActiveTarget | null) => {\n this.#activeTargetChangeEvent.emit(target);\n };\n\n #handleSwitchActiveTarget = (target: ActiveTarget | null) => {\n if (!sameTarget(target, this.activeTarget)) {\n this.activeTarget = target;\n }\n };\n\n @event({ type: \"cell.contextmenu\" })\n accessor #cellContextMenu!: EventEmitter<CellContextMenuDetail>;\n\n #handleCellContextMenu = (detail: CellContextMenuDetail) => {\n this.#cellContextMenu.emit(detail);\n };\n\n @event({ type: \"cell.click\" })\n accessor #cellClick!: EventEmitter<CellContextMenuDetail>;\n\n #handleCellClick = (detail: CellContextMenuDetail) => {\n this.#cellClick.emit(detail);\n };\n\n render() {\n return (\n <EoDisplayCanvasComponent\n shadowRoot={this.shadowRoot!}\n cells={this.cells}\n layout={this.layout}\n layoutOptions={this.layoutOptions}\n defaultNodeSize={this.defaultNodeSize}\n defaultNodeBricks={this.defaultNodeBricks}\n defaultEdgeLines={this.defaultEdgeLines}\n degradedThreshold={this.degradedThreshold}\n degradedNodeLabel={this.degradedNodeLabel}\n activeTarget={this.activeTarget}\n fadeUnrelatedCells={this.fadeUnrelatedCells}\n zoomable={this.zoomable}\n scrollable={this.scrollable}\n pannable={this.pannable}\n scaleRange={this.scaleRange}\n hideZoomBar={this.hideZoomBar}\n doNotResetActiveTargetForSelector={\n this.doNotResetActiveTargetForSelector\n }\n doNotResetActiveTargetOutsideCanvas={\n this.doNotResetActiveTargetOutsideCanvas\n }\n autoCenterWhenCellsChange={this.autoCenterWhenCellsChange}\n onActiveTargetChange={this.#handleActiveTargetChange}\n onSwitchActiveTarget={this.#handleSwitchActiveTarget}\n onCellContextMenu={this.#handleCellContextMenu}\n onCellClick={this.#handleCellClick}\n />\n );\n }\n}\n\nexport interface EoDisplayCanvasComponentProps extends EoDisplayCanvasProps {\n shadowRoot: ShadowRoot;\n onActiveTargetChange(target: ActiveTarget | null): void;\n onSwitchActiveTarget(target: ActiveTarget | null): void;\n onCellContextMenu(detail: CellContextMenuDetail): void;\n onCellClick(detail: CellContextMenuDetail): void;\n}\n\nfunction EoDisplayCanvasComponent({\n shadowRoot,\n cells: initialCells,\n layout,\n layoutOptions,\n defaultNodeSize,\n defaultNodeBricks,\n defaultEdgeLines,\n degradedThreshold,\n degradedNodeLabel,\n activeTarget: _activeTarget,\n fadeUnrelatedCells,\n zoomable,\n scrollable,\n pannable,\n scaleRange: _scaleRange,\n hideZoomBar,\n autoCenterWhenCellsChange,\n doNotResetActiveTargetForSelector,\n doNotResetActiveTargetOutsideCanvas,\n onActiveTargetChange,\n onSwitchActiveTarget,\n onCellContextMenu,\n onCellClick,\n}: EoDisplayCanvasComponentProps) {\n const [{ cells, layoutKey }, dispatch] = useReducer(\n rootReducer,\n initialCells,\n (initialCells) => ({\n cells: initializeCells(initialCells, { defaultNodeSize }),\n layoutKey: 1,\n })\n );\n\n // When nodes are greater or equal to threshold, the diagram will be degraded.\n // Thus all nodes will be displayed as simple svg elements instead of bricks.\n const degraded = useMemo(\n () =>\n cells.filter(isNodeCell).length >=\n (degradedThreshold ?? DEFAULT_DEGRADED_THRESHOLD),\n [cells, degradedThreshold]\n );\n\n const rootRef = useRef<SVGSVGElement>(null);\n\n const { grabbing, transform, zoomer, scaleRange } = useZoom({\n rootRef,\n zoomable,\n scrollable,\n pannable,\n draggable: true,\n scaleRange: _scaleRange,\n onSwitchActiveTarget,\n });\n\n const { centered, setCentered, getNextLayoutKey } = useLayout({\n layout,\n layoutOptions,\n rootRef,\n cells,\n zoomable,\n zoomer,\n scaleRange,\n layoutKey,\n autoCenterWhenCellsChange,\n dispatch,\n });\n\n const reCenter = useCallback(() => {\n setCentered(false);\n }, [setCentered]);\n\n const previousCellsRef = useRef(initialCells);\n\n useEffect(() => {\n if (initialCells !== previousCellsRef.current) {\n previousCellsRef.current = initialCells;\n const result = updateCells({\n canvasWidth: shadowRoot.host.clientWidth,\n canvasHeight: shadowRoot.host.clientHeight,\n defaultNodeSize,\n layout,\n previousCells: cells,\n cells: initialCells,\n scaleRange,\n transform,\n });\n dispatch({ type: \"update-cells\", payload: result.cells });\n }\n }, [\n cells,\n defaultNodeSize,\n initialCells,\n layout,\n scaleRange,\n shadowRoot,\n transform,\n ]);\n\n const activeTarget = useActiveTarget({\n rootRef,\n activeTarget: _activeTarget,\n doNotResetActiveTargetForSelector,\n doNotResetActiveTargetOutsideCanvas,\n onActiveTargetChange,\n });\n\n const defPrefix = useMemo(() => `${uniqueId(\"diagram-\")}-`, []);\n const markerPrefix = `${defPrefix}line-arrow-`;\n\n const handleNodeBrickResize = useCallback(\n (id: string, size: SizeTuple | null) => {\n dispatch({\n type: \"update-node-size\",\n payload: { id, size },\n layoutKey: getNextLayoutKey(),\n });\n },\n [getNextLayoutKey]\n );\n\n const [hoverCell, setHoverCell] = useState<Cell | null>(null);\n const handleCellMouseEnter = useCallback((cell: Cell) => {\n setHoverCell(cell);\n }, []);\n const handleCellMouseLeave = useCallback((cell: Cell) => {\n setHoverCell((prev) => (prev === cell ? null : prev));\n }, []);\n\n const [unrelatedCells, setUnrelatedCells] = useState<Cell[]>([]);\n useEffect(() => {\n const nextUnrelated = fadeUnrelatedCells\n ? getUnrelatedCells(cells, null, hoverCell)\n : [];\n // Do not update the state when prev and next are both empty.\n setUnrelatedCells((prev) =>\n prev.length === 0 && nextUnrelated.length === 0 ? prev : nextUnrelated\n );\n }, [cells, fadeUnrelatedCells, hoverCell]);\n\n const handleZoomSlide = useCallback(\n (value: number) => {\n // istanbul ignore next\n if (process.env.NODE_ENV !== \"test\") {\n zoomer.scaleTo(select(rootRef.current!), value / 100);\n }\n },\n [zoomer]\n );\n\n const { lineConfMap, markers } = useLineMarkers({\n cells,\n defaultEdgeLines,\n markerPrefix,\n });\n const editableLineMap = useEditableLineMap({ cells, lineConfMap });\n\n const ready = useReady({ cells, layout, centered });\n\n return (\n <>\n <svg\n width=\"100%\"\n height=\"100%\"\n ref={rootRef}\n className={classNames(\"root\", { grabbing, pannable, ready })}\n tabIndex={-1}\n >\n <defs>\n {markers.map((marker, index) => (\n <MarkerComponent\n key={index}\n id={`${markerPrefix}${index}`}\n type={marker.markerType}\n strokeColor={marker.strokeColor}\n />\n ))}\n </defs>\n <g\n transform={`translate(${transform.x} ${transform.y}) scale(${transform.k})`}\n >\n <g className=\"cells\">\n {cells.map((cell) => (\n <CellComponent\n key={`${cell.type}:${isEdgeCell(cell) ? `${cell.source}~${cell.target}` : cell.id}`}\n layout={layout}\n cell={cell}\n cells={cells}\n degraded={degraded}\n degradedNodeLabel={degradedNodeLabel}\n defaultNodeBricks={defaultNodeBricks}\n lineConfMap={lineConfMap}\n editableLineMap={editableLineMap}\n transform={transform}\n activeTarget={activeTarget}\n readOnly\n hoverCell={hoverCell}\n unrelatedCells={unrelatedCells}\n onSwitchActiveTarget={onSwitchActiveTarget}\n onCellContextMenu={onCellContextMenu}\n onCellClick={onCellClick}\n onNodeBrickResize={handleNodeBrickResize}\n onCellMouseEnter={\n fadeUnrelatedCells && (isNodeCell(cell) || isEdgeCell(cell))\n ? handleCellMouseEnter\n : undefined\n }\n onCellMouseLeave={\n fadeUnrelatedCells && (isNodeCell(cell) || isEdgeCell(cell))\n ? handleCellMouseLeave\n : undefined\n }\n />\n ))}\n </g>\n </g>\n </svg>\n {!hideZoomBar && (\n <ZoomBarComponent\n shadowRoot={shadowRoot}\n scale={transform.k}\n scaleRange={scaleRange}\n onZoomChange={handleZoomSlide}\n onReCenter={reCenter}\n />\n )}\n </>\n );\n}\n"],"names":["defineElement","property","event","createDecorators","_EoDisplayCanvas","_A","WeakMap","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_R","_S","_EoDisplayCanvas_brand","WeakSet","_handleActiveTargetChange","_handleSwitchActiveTarget","_T","_handleCellContextMenu","_U","_handleCellClick","EoDisplayCanvas","ReactNextElement","constructor","arguments","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","_init_cells","_init_extra_cells","_init_layout","_init_extra_layout","_init_layoutOptions","_init_extra_layoutOptions","_init_defaultNodeSize","DEFAULT_NODE_SIZE","_init_extra_defaultNodeSize","_init_defaultNodeBricks","_init_extra_defaultNodeBricks","_init_degradedThreshold","_init_extra_degradedThreshold","_init_degradedNodeLabel","_init_extra_degradedNodeLabel","_init_defaultEdgeLines","_init_extra_defaultEdgeLines","_init_activeTarget","_init_extra_activeTarget","_init_fadeUnrelatedCells","_init_extra_fadeUnrelatedCells","_init_zoomable","_init_extra_zoomable","_init_scrollable","_init_extra_scrollable","_init_pannable","_init_extra_pannable","_init_scaleRange","_init_extra_scaleRange","_init_hideZoomBar","_init_extra_hideZoomBar","_init_autoCenterWhenCellsChange","_init_extra_autoCenterWhenCellsChange","_init_doNotResetActiveTargetForSelector","_init_extra_doNotResetActiveTargetForSelector","_init_doNotResetActiveTargetOutsideCanvas","_init_extra_doNotResetActiveTargetOutsideCanvas","_init_activeTargetChangeEvent","_init_extra_activeTargetChangeEvent","target","_classPrivateGetter","this","_get_activeTargetChangeEvent","emit","sameTarget","activeTarget","_init_cellContextMenu","_init_extra_cellContextMenu","detail","_get_cellContextMenu","_init_cellClick","_init_extra_cellClick","_get_cellClick","cells","_classPrivateFieldGet","v","_classPrivateFieldSet","layout","layoutOptions","defaultNodeSize","defaultNodeBricks","degradedThreshold","degradedNodeLabel","defaultEdgeLines","fadeUnrelatedCells","zoomable","scrollable","pannable","scaleRange","hideZoomBar","autoCenterWhenCellsChange","doNotResetActiveTargetForSelector","doNotResetActiveTargetOutsideCanvas","render","React","EoDisplayCanvasComponent","shadowRoot","onActiveTargetChange","onSwitchActiveTarget","onCellContextMenu","onCellClick","_ref","initialCells","_activeTarget","_scaleRange","layoutKey","dispatch","useReducer","rootReducer","initializeCells","degraded","useMemo","filter","isNodeCell","length","DEFAULT_DEGRADED_THRESHOLD","rootRef","useRef","grabbing","transform","zoomer","useZoom","draggable","centered","setCentered","getNextLayoutKey","useLayout","reCenter","useCallback","previousCellsRef","useEffect","current","result","updateCells","canvasWidth","host","clientWidth","canvasHeight","clientHeight","previousCells","type","payload","useActiveTarget","markerPrefix","uniqueId","handleNodeBrickResize","id","size","hoverCell","setHoverCell","useState","handleCellMouseEnter","cell","handleCellMouseLeave","prev","unrelatedCells","setUnrelatedCells","nextUnrelated","getUnrelatedCells","handleZoomSlide","value","scaleTo","select","lineConfMap","markers","useLineMarkers","editableLineMap","useEditableLineMap","ready","useReady","width","height","ref","className","classNames","tabIndex","map","marker","index","MarkerComponent","key","markerType","strokeColor","x","y","k","CellComponent","isEdgeCell","source","readOnly","onNodeBrickResize","onCellMouseEnter","undefined","onCellMouseLeave","ZoomBarComponent","scale","onZoomChange","onReCenter","_EoDisplayCanvas2","e","_set_activeTargetChangeEvent","_set_cellContextMenu","_set_cellClick","c","_initClass","_applyDecs","styleTexts","styleText","zoomBarStyleText","attribute","String","Number","Boolean","o","_","has","_checkInRHS"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(globalThis.webpackChunk_next_bricks_diagram=globalThis.webpackChunk_next_bricks_diagram||[]).push([[8939],{9068:(e,t,a)=>{a.r(t),a.d(t,{EoDrawCanvas:()=>ga,EoDrawCanvasComponent:()=>ua,uuidV4:()=>fi});var i,n=a(4635),l=a(918),s=a(6902),o=a(2559),r=a(5536),d=a(6121),c=a(829),h=a(2740),u=a(8769),g=a.n(u),A=a(6192),p=a(9859),v=a(4427),y=(a(6477),a(1030)),C=a(3373),w=a.n(C),k=a(7566),m=a(5748),f=a(3739),M=a(531),b=a(8185),x=a(2733),E=a(3906),W=a(3639),T=a(3783),N=a(2098),S=a(227),R=a(3033),L=a(8091),z=a(1819),B=a(7099),D=a(1484),P=a(8197),O=a(7531),$=a(8875),H=a(2722),F=a(9978),_=a(2219),K=a(3012),V=a(6237),I=a(1103),U=a(9386),j=a(1991),X=a(2202),Y=a(1825),q=a(4117),G=a(4197),J=a(8944),Q=a(2969);let Z,ee,te,ae,ie,ne,le,se,oe,re,de,ce,he,ue,ge,Ae,pe,ve,ye,Ce,we,ke,me,fe,Me,be,xe,Ee,We,Te,Ne,Se,Re,Le,ze,Be,De,Pe,Oe,$e,He,Fe,_e,Ke,Ve,Ie,Ue,je,Xe,Ye,qe,Ge,Je,Qe,Ze,et,tt,at,it,nt,lt,st,ot,rt,dt,ct,ht,ut,gt,At,pt,vt,yt,Ct,wt,kt,mt,ft,Mt,bt,xt,Et,Wt,Tt,Nt,St,Rt,Lt,zt,Bt,Dt,Pt,Ot,$t,Ht,Ft,_t,Kt,Vt,It,Ut,jt,Xt,Yt,qt,Gt,Jt,Qt,Zt,ea,ta,aa,ia,na,la,sa;const oa=(0,v.unwrapProvider)("basic.lock-body-scroll"),{defineElement:ra,property:da,method:ca,event:ha}=(0,A.createDecorators)(),ua=g().forwardRef(mi);let ga;var Aa=new WeakMap,pa=new WeakMap,va=new WeakMap,ya=new WeakMap,Ca=new WeakMap,wa=new WeakMap,ka=new WeakMap,ma=new WeakMap,fa=new WeakMap,Ma=new WeakMap,ba=new WeakMap,xa=new WeakMap,Ea=new WeakMap,Wa=new WeakMap,Ta=new WeakMap,Na=new WeakMap,Sa=new WeakMap,Ra=new WeakMap,La=new WeakMap,za=new WeakMap,Ba=new WeakMap,Da=new WeakMap,Pa=new WeakSet,Oa=new WeakMap,$a=new WeakMap,Ha=new WeakMap,Fa=new WeakMap,_a=new WeakMap,Ka=new WeakMap,Va=new WeakMap,Ia=new WeakMap,Ua=new WeakMap,ja=new WeakMap,Xa=new WeakMap,Ya=new WeakMap,qa=new WeakMap,Ga=new WeakMap,Ja=new WeakMap,Qa=new WeakMap,Za=new WeakMap,ei=new WeakMap,ti=new WeakMap,ai=new WeakMap,ii=new WeakMap,ni=new WeakMap,li=new WeakMap,si=new WeakMap,oi=new WeakMap,ri=new WeakMap,di=new WeakMap,ci=new WeakMap,hi=new WeakMap,ui=new WeakMap,gi=new WeakMap,Ai=new WeakMap,pi=new WeakMap,vi=new WeakMap,yi=new WeakMap;class Ci extends p.ReactNextElement{constructor(){super(...arguments),(0,n.A)(this,Pa),(0,l.A)(this,Aa,(Z(this),te(this))),(0,l.A)(this,pa,(ae(this),ie(this))),(0,l.A)(this,va,(ne(this),le(this))),(0,l.A)(this,ya,(se(this),oe(this,[R.HP,R.HP]))),(0,l.A)(this,Ca,(re(this),de(this))),(0,l.A)(this,wa,(ce(this),he(this))),(0,l.A)(this,ka,(ue(this),ge(this))),(0,l.A)(this,ma,(Ae(this),pe(this))),(0,l.A)(this,fa,(ve(this),ye(this))),(0,l.A)(this,Ma,(Ce(this),we(this))),(0,l.A)(this,ba,(ke(this),me(this,!0))),(0,l.A)(this,xa,(fe(this),Me(this,!0))),(0,l.A)(this,Ea,(be(this),xe(this,!0))),(0,l.A)(this,Wa,(Ee(this),We(this,!1))),(0,l.A)(this,Ta,(Te(this),Ne(this))),(0,l.A)(this,Na,(Se(this),Re(this))),(0,l.A)(this,Sa,(Le(this),ze(this))),(0,l.A)(this,Ra,(Be(this),De(this))),(0,l.A)(this,La,(Pe(this),Oe(this))),(0,l.A)(this,za,($e(this),He(this))),(0,l.A)(this,Ba,(Fe(this),_e(this))),(0,l.A)(this,Da,(Ke(this),Ve(this))),(0,l.A)(this,Oa,(je(this),e=>{(0,r.A)(Pa,this,Ie).emit(e)})),(0,l.A)(this,$a,(e=>{(0,b.c)(e,this.activeTarget)||(this.activeTarget=e)})),(0,l.A)(this,Ha,Xe(this)),(0,l.A)(this,Fa,(Ge(this),Je(this))),(0,l.A)(this,_a,(et(this),e=>{(0,r.A)(Pa,this,Qe).emit(e),"node"===e.type&&(0,r.A)(Pa,this,Ye).emit(e)})),(0,l.A)(this,Ka,tt(this)),(0,l.A)(this,Va,(nt(this),e=>{(0,r.A)(Pa,this,at).emit(e)})),(0,l.A)(this,Ia,lt(this)),(0,l.A)(this,Ua,(rt(this),e=>{(0,r.A)(Pa,this,st).emit(e)})),(0,l.A)(this,ja,dt(this)),(0,l.A)(this,Xa,(ut(this),gt(this))),(0,l.A)(this,Ya,(vt(this),e=>{(0,r.A)(Pa,this,At).emit(e),"node"===e.type&&(0,r.A)(Pa,this,ct).emit(e)})),(0,l.A)(this,qa,yt(this)),(0,l.A)(this,Ga,(kt(this),e=>{(0,r.A)(Pa,this,Ct).emit(e)})),(0,l.A)(this,Ja,mt(this)),(0,l.A)(this,Qa,(bt(this),e=>{(0,r.A)(Pa,this,ft).emit(e)})),(0,l.A)(this,Za,xt(this)),(0,l.A)(this,ei,(Tt(this),e=>{(0,r.A)(Pa,this,Et).emit(e)})),(0,l.A)(this,ti,Nt(this)),(0,l.A)(this,ai,(Lt(this),e=>{(0,r.A)(Pa,this,St).emit(e)})),(0,l.A)(this,ii,zt(this)),(0,l.A)(this,ni,(Pt(this),e=>{(0,r.A)(Pa,this,Bt).emit(e)})),(0,l.A)(this,li,Ot(this)),(0,l.A)(this,si,(Ft(this),e=>{(0,r.A)(Pa,this,$t).emit(e)})),(0,l.A)(this,oi,_t(this)),(0,l.A)(this,ri,(It(this),e=>{(0,r.A)(Pa,this,Kt).emit(e)})),(0,l.A)(this,di,Ut(this)),(0,l.A)(this,ci,(Yt(this),e=>{(0,r.A)(Pa,this,jt).emit(e)})),(0,l.A)(this,hi,qt(this)),(0,l.A)(this,ui,(Qt(this),e=>{(0,r.A)(Pa,this,Gt).emit({clientX:e[0],clientY:e[1],view:(0,o.A)(Pa,this,wi).call(this,e)})})),(0,l.A)(this,gi,Zt(this)),(0,l.A)(this,Ai,(aa(this),()=>{(0,r.A)(Pa,this,ea).emit()})),(0,l.A)(this,pi,ia(this)),(0,l.A)(this,vi,(sa(this),()=>{(0,r.A)(Pa,this,na).emit()})),(0,l.A)(this,yi,(0,u.createRef)())}get cells(){return(0,c.A)(Aa,this)}set cells(e){(0,d.A)(Aa,this,e)}get layout(){return(0,c.A)(pa,this)}set layout(e){(0,d.A)(pa,this,e)}get layoutOptions(){return(0,c.A)(va,this)}set layoutOptions(e){(0,d.A)(va,this,e)}get defaultNodeSize(){return(0,c.A)(ya,this)}set defaultNodeSize(e){(0,d.A)(ya,this,e)}get defaultNodeBricks(){return(0,c.A)(Ca,this)}set defaultNodeBricks(e){(0,d.A)(Ca,this,e)}get degradedThreshold(){return(0,c.A)(wa,this)}set degradedThreshold(e){(0,d.A)(wa,this,e)}get degradedNodeLabel(){return(0,c.A)(ka,this)}set degradedNodeLabel(e){(0,d.A)(ka,this,e)}get defaultEdgeLines(){return(0,c.A)(ma,this)}set defaultEdgeLines(e){(0,d.A)(ma,this,e)}get activeTarget(){return(0,c.A)(fa,this)}set activeTarget(e){(0,d.A)(fa,this,e)}get fadeUnrelatedCells(){return(0,c.A)(Ma,this)}set fadeUnrelatedCells(e){(0,d.A)(Ma,this,e)}get zoomable(){return(0,c.A)(ba,this)}set zoomable(e){(0,d.A)(ba,this,e)}get scrollable(){return(0,c.A)(xa,this)}set scrollable(e){(0,d.A)(xa,this,e)}get pannable(){return(0,c.A)(Ea,this)}set pannable(e){(0,d.A)(Ea,this,e)}get allowEdgeToArea(){return(0,c.A)(Wa,this)}set allowEdgeToArea(e){(0,d.A)(Wa,this,e)}get dragBehavior(){return(0,c.A)(Ta,this)}set dragBehavior(e){(0,d.A)(Ta,this,e)}get ctrlDragBehavior(){return(0,c.A)(Na,this)}set ctrlDragBehavior(e){(0,d.A)(Na,this,e)}get scaleRange(){return(0,c.A)(Sa,this)}set scaleRange(e){(0,d.A)(Sa,this,e)}get lineSettings(){return(0,c.A)(Ra,this)}set lineSettings(e){(0,d.A)(Ra,this,e)}get lineConnector(){return(0,c.A)(La,this)}set lineConnector(e){(0,d.A)(La,this,e)}get doNotResetActiveTargetForSelector(){return(0,c.A)(za,this)}set doNotResetActiveTargetForSelector(e){(0,d.A)(za,this,e)}get doNotResetActiveTargetOutsideCanvas(){return(0,c.A)(Ba,this)}set doNotResetActiveTargetOutsideCanvas(e){(0,d.A)(Ba,this,e)}async dropNode(e){var t,a;let{id:i,position:n,size:l,data:s,useBrick:r}=e;if(null===(t=(a=document).elementsFromPoint)||void 0===t||null===(t=t.call(a,n[0],n[1]))||void 0===t?void 0:t.includes(this)){var d,h,u;const e={type:"node",id:i,view:{..."force"===this.layout||"dagre"===this.layout?null:(0,o.A)(Pa,this,wi).call(this,n),width:null!==(d=null==l?void 0:l[0])&&void 0!==d?d:this.defaultNodeSize[0],height:null!==(h=null==l?void 0:l[1])&&void 0!==h?h:this.defaultNodeSize[0]},data:s,useBrick:r};return null===(u=(0,c.A)(yi,this).current)||void 0===u||u.dropNode(e),e}return null}async dropDecorator(e){var t,a;let{position:i,decorator:n,text:l,direction:s,source:o,target:r,view:d}=e;if(null===(t=(a=document).elementsFromPoint)||void 0===t||null===(t=t.call(a,i[0],i[1]))||void 0===t?void 0:t.includes(this)){var h,u,g,A,p;const e=this.getBoundingClientRect(),t=(0,c.A)(yi,this).current.getTransform(),a=(i[0]-e.left-t.x)/t.k,v=(i[1]-e.top-t.y)/t.k,y={type:"decorator",decorator:n,id:fi(),view:"line"===n?{source:{x:a+(null!==(h=null==o?void 0:o.x)&&void 0!==h?h:-30),y:v+(null!==(u=null==o?void 0:o.y)&&void 0!==u?u:30)},target:{x:a+(null!==(g=null==r?void 0:r.x)&&void 0!==g?g:30),y:v+(null!==(A=null==r?void 0:r.y)&&void 0!==A?A:-30)},...d}:{width:R.N8,height:R.w1,x:a,y:v,text:l,direction:s,...d}};return null===(p=(0,c.A)(yi,this).current)||void 0===p||p.dropDecorator(y),y}return null}async addNodes(e){if(0===e.length)return[];const t=e.map((e=>{var t,a;let{size:i,useBrick:n,id:l,data:s}=e;return{type:"node",id:l,data:s,view:{width:null!==(t=null==i?void 0:i[0])&&void 0!==t?t:this.defaultNodeSize[0],height:null!==(a=null==i?void 0:i[1])&&void 0!==a?a:this.defaultNodeSize[0]},useBrick:n}}));return(0,c.A)(yi,this).current.addNodes(t,{defaultNodeSize:this.defaultNodeSize,canvasWidth:this.clientWidth,canvasHeight:this.clientHeight})}async addEdge(e){var t;let{source:a,target:i,data:n}=e;const l={type:"edge",source:a,target:i,data:n,view:this.lineSettings};return null===(t=(0,c.A)(yi,this).current)||void 0===t||t.addEdge(l),l}manuallyConnectNodes(e){return(0,c.A)(yi,this).current.manuallyConnectNodes(e)}async updateCells(e,t){await(0,o.A)(Pa,this,ki).call(this);const{updated:a}=(0,c.A)(yi,this).current.updateCells(e,{...t,defaultNodeSize:this.defaultNodeSize,canvasWidth:this.clientWidth,canvasHeight:this.clientHeight});return{updated:a}}async reCenter(){var e;null===(e=(0,c.A)(yi,this).current)||void 0===e||e.reCenter()}async toggleLock(e){return(0,c.A)(yi,this).current.toggleLock(e,"toggle")}async lock(e){return(0,c.A)(yi,this).current.toggleLock(e,"lock")}async unlock(e){return(0,c.A)(yi,this).current.toggleLock(e,"unlock")}disconnectedCallback(){super.disconnectedCallback(),oa(this,!1)}render(){return g().createElement(ua,{host:this,ref:(0,c.A)(yi,this),layout:this.layout,layoutOptions:this.layoutOptions,cells:this.cells,defaultNodeSize:this.defaultNodeSize,defaultNodeBricks:this.defaultNodeBricks,defaultEdgeLines:this.defaultEdgeLines,degradedThreshold:this.degradedThreshold,degradedNodeLabel:this.degradedNodeLabel,activeTarget:this.activeTarget,fadeUnrelatedCells:this.fadeUnrelatedCells,zoomable:this.zoomable,scrollable:this.scrollable,pannable:this.pannable,dragBehavior:this.dragBehavior,ctrlDragBehavior:this.ctrlDragBehavior,scaleRange:this.scaleRange,lineSettings:this.lineSettings,lineConnector:this.lineConnector,allowEdgeToArea:this.allowEdgeToArea,doNotResetActiveTargetForSelector:this.doNotResetActiveTargetForSelector,doNotResetActiveTargetOutsideCanvas:this.doNotResetActiveTargetOutsideCanvas,onActiveTargetChange:(0,c.A)(Oa,this),onSwitchActiveTarget:(0,c.A)($a,this),onCellMove:(0,c.A)(_a,this),onCellsMove:(0,c.A)(Va,this),onCellResize:(0,c.A)(Ua,this),onCellDelete:(0,c.A)(Ya,this),onCellsDelete:(0,c.A)(Ga,this),onEdgeAdd:(0,c.A)(ei,this),onCellContextMenu:(0,c.A)(Qa,this),onCanvasContextMenu:(0,c.A)(ui,this),onDecoratorTextChange:(0,c.A)(si,this),onContainerContainerChange:(0,c.A)(ri,this),onScaleChange:(0,c.A)(ci,this),onEdgeViewChange:(0,c.A)(ai,this),onDecoratorViewChange:(0,c.A)(ni,this),onCanvasCopy:(0,c.A)(Ai,this),onCanvasPaste:(0,c.A)(vi,this)})}}function wi(e){const t=this.getBoundingClientRect(),a=(0,c.A)(yi,this).current.getTransform();return{x:(e[0]-t.left-a.x)/a.k,y:(e[1]-t.top-a.y)/a.k}}function ki(){return new Promise((e=>{const t=()=>{(0,c.A)(yi,this).current?e():setTimeout(t,10)};t()}))}function mi(e,t){let{host:a,layout:i,layoutOptions:n,cells:l,defaultNodeSize:s,defaultNodeBricks:o,defaultEdgeLines:r,degradedThreshold:d,degradedNodeLabel:c,activeTarget:h,fadeUnrelatedCells:A,zoomable:p,scrollable:v,pannable:C,dragBehavior:b,ctrlDragBehavior:K,scaleRange:V,lineSettings:Z,lineConnector:ee,allowEdgeToArea:te,doNotResetActiveTargetForSelector:ae,doNotResetActiveTargetOutsideCanvas:ie,onActiveTargetChange:ne,onSwitchActiveTarget:le,onCellMove:se,onCellResize:oe,onCellDelete:re,onCellsMove:de,onCellsDelete:ce,onCellContextMenu:he,onEdgeAdd:ue,onDecoratorTextChange:ge,onScaleChange:Ae,onContainerContainerChange:pe,onEdgeViewChange:ve,onDecoratorViewChange:ye,onCanvasContextMenu:Ce,onCanvasCopy:we,onCanvasPaste:ke}=e;const[{cells:me,layoutKey:fe},Me]=(0,u.useReducer)(m.d,l,(e=>({cells:(0,T.C)(e,{defaultNodeSize:s}),layoutKey:0}))),be=(0,u.useMemo)((()=>me.filter(M.N).length>=(null!=d?d:R.pC)),[me,d]),xe=(0,u.useRef)(null),Ee=(0,u.useRef)(null),[We,Te]=(0,u.useState)([]),[Ne,Se]=(0,u.useState)([]),[Re,Le]=(0,u.useState)(null),{grabbing:ze,transform:Be,zoomer:De,scaleRange:Pe}=(0,L.f)({rootRef:xe,zoomable:p,scrollable:v,pannable:C,draggable:"grab"===b,ctrlDraggable:"grab"===K,scaleRange:V,onSwitchActiveTarget:le});(0,u.useEffect)((()=>{Ae(Be.k)}),[Ae,Be.k]);const[Oe,$e]=(0,u.useState)(null),[He,Fe]=(0,u.useState)(null),{centered:_e,setCentered:Ke,getNextLayoutKey:Ve}=(0,D.g)({layout:i,layoutOptions:n,rootRef:xe,cells:me,zoomable:p,zoomer:De,scaleRange:Pe,layoutKey:fe,allowEdgeToArea:te,dispatch:Me}),Ie=(0,u.useCallback)((()=>{Ke(!1)}),[Ke]),Ue=(0,u.useMemo)((()=>(0,J.E)(me)),[me]);(0,u.useImperativeHandle)(t,(()=>({dropNode(e){"dagre"!==i&&"force"!==i&&Ke(!0),Me({type:"drop-node",payload:e})},dropDecorator(e){"dagre"!==i&&"force"!==i&&Ke(!0),Me({type:"drop-decorator",payload:e})},addNodes(e,t){let{defaultNodeSize:a,canvasWidth:n,canvasHeight:l}=t;const s=me.findLastIndex((e=>!("decorator"===e.type&&"text"===e.decorator)))+1,o=[...me.slice(0,s),...e,...me.slice(s)],{cells:r,updated:d,shouldReCenter:c}=(0,N.L)({cells:o,layout:i,previousCells:me,defaultNodeSize:a,canvasWidth:n,canvasHeight:l,scaleRange:Pe,transform:Be,allowEdgeToArea:te});return c&&Ke(!1),Me({type:"update-cells",payload:r}),d.filter((t=>e.includes(t)))},addEdge(e){Me({type:"add-edge",payload:e})},updateCells(e,t){const{shouldReCenter:a,...n}=(0,N.L)({...t,layout:i,previousCells:me,cells:e,scaleRange:Pe,transform:Be,allowEdgeToArea:te});return a&&Ke(!1),Me({type:"update-cells",payload:n.cells}),n},getTransform:()=>Be,manuallyConnectNodes(e){const t=me.find((t=>(0,M.bo)(t,te)&&t.id===e));if(t){const e=xe.current.getBoundingClientRect();return Fe({source:t,from:[t.view.x+t.view.width/2,t.view.y+t.view.height/2],offset:[e.left,e.top]}),new Promise(((e,t)=>{Ee.current={resolve:e,reject:t}}))}return Promise.reject(null)},reCenter:Ie,toggleLock(e,t){const{newCells:a,updates:i}=(0,Q.A)(e,t,me,Ue);return a?(Me({type:"update-cells",payload:a}),i):null}})),[me,i,Pe,Ke,Be,te,Ie,Ue]);const je=(0,u.useCallback)(((e,t)=>{var a;for(let a=me.length-1;a>=0;a--){const n=me[a];if((0,M.bo)(n,te)&&n.id!==e.source.id&&n.view.x<t[0]&&n.view.x+n.view.width>t[0]&&n.view.y<t[1]&&n.view.y+n.view.height>t[1]){var i;null===(i=Ee.current)||void 0===i||i.resolve({source:e.source,target:n});break}}null===(a=Ee.current)||void 0===a||a.reject(null),Fe(null)}),[te,me]),[Xe,Ye]=(0,u.useState)(null);(0,u.useEffect)((()=>{oa(a,!!(He||Xe||Oe))}),[He,a,Xe,Oe]);const qe=(0,z.J)({rootRef:xe,activeTarget:h,doNotResetActiveTargetForSelector:ae,doNotResetActiveTargetOutsideCanvas:ie,onActiveTargetChange:ne}),[Ge,Je]=(0,u.useState)([]);(0,u.useEffect)((()=>{const e=A?(0,S.Y)(me,He,qe,te):[];Je((t=>0===t.length&&0===e.length?t:e))}),[qe,me,He,A,te]),(0,u.useEffect)((()=>{const e=xe.current;if(!e||We.length>0)return;const t=e=>{const t=(0,x.a)(e,{cells:me,activeTarget:qe,lockedContainerIds:Ue});"delete-cells"===(null==t?void 0:t.action)&&(ce(t.cells),1===t.cells.length&&re(t.cells[0]))};return e.addEventListener("keydown",t),()=>{e.removeEventListener("keydown",t)}}),[qe,me,We.length,Ue,re,ce]);const Qe=`${(0,u.useMemo)((()=>`${(0,y.uniqueId)("diagram-")}-`),[])}line-arrow-`,[Ze,et]=(0,u.useState)([]),[tt,at]=(0,u.useState)(!1),[it,nt]=(0,u.useState)(!1),[lt,st]=(0,u.useState)(!1),ot=(0,u.useCallback)((e=>{Me({type:"move-cells",payload:e});const t=[];(0,j._)(e,me).forEach((e=>{var a,i;null!==(a=e.containerCell)&&void 0!==a&&a.id&&t.push(null===(i=e.containerCell)||void 0===i?void 0:i.id)})),Se(t),et(e.flatMap((e=>{var t;return null!==(t=e.guideLines)&&void 0!==t?t:[]}))),at(!0),e.some((e=>(0,M._m)(e)))||st(!0)}),[me]),rt=(0,u.useCallback)((e=>{Me({type:"move-cells",payload:e}),de(e),1===e.length&&se(e[0]),(0,j._)(e,me,pe),Se([]),et([]),at(!1),st(!1)}),[se,de,me,pe]),dt=(0,u.useCallback)((e=>{Me({type:"resize-cell",payload:e}),nt(!0)}),[]),ct=(0,u.useCallback)((e=>{Me({type:"resize-cell",payload:e}),oe(e),nt(!1)}),[oe]),ht=(0,u.useCallback)((e=>{let{id:t,editing:a}=e;Te(a?e=>e.includes(t)?e:[...e,t]:e=>e.filter((e=>e!==t)))}),[]),ut=(0,u.useCallback)(((e,t)=>{const a=Ve();Me({type:"update-node-size",payload:{id:e,size:t},layoutKey:a})}),[Ve]),gt=(0,u.useCallback)((e=>{De.scaleTo((0,k.A)(xe.current),e/100)}),[De]),{lineConfMap:At,lineConnectorConf:pt,markers:vt}=(0,O.d)({cells:me,defaultEdgeLines:r,lineConnector:ee,markerPrefix:Qe,useMemoizedResult:lt||it}),yt=(0,q.A)({cells:me,lineConfMap:At}),Ct=(0,u.useMemo)((()=>{let e=[];return e=me.filter((e=>!(0,J.l)(e,Ue)&&(0,G.Q)(e,qe)&&((0,M.WW)(e)||(0,M._m)(e))&&yt.has(e))),e}),[qe,me,yt,Ue]),wt=(0,P.H)({cells:me,layout:i,centered:_e}),[kt,mt]=(0,u.useState)(null),ft=(0,u.useRef)(null),[Mt,bt]=(0,u.useState)(null),xt=(0,u.useCallback)((e=>{if(pt&&!(0,J.l)(e,Ue)&&(0,M.bo)(e,te)&&(!Mt||"control"!==Mt.type)){null!==ft.current&&(clearTimeout(ft.current),ft.current=null);const t=(0,$.G)();mt({cell:e,relativePoints:t,points:Mi(t,e.view)})}}),[te,pt,Mt,Ue]),Et=(0,u.useCallback)((e=>{pt&&(0,M.N)(e)&&(ft.current=setTimeout((()=>{mt(null)})))}),[pt]),Wt=(0,u.useCallback)(((e,t,a,i)=>{const n={source:e.id,target:t.id,view:{...Z,exitPosition:a,entryPosition:i,vertices:null}};if(me.find((a=>"edge"===a.type&&a.source===e.id&&a.target===t.id)))Me({type:"change-edge-view",payload:n}),null==ve||ve(n);else{const a={type:"edge",...n};Me({type:"add-edge",payload:a}),ue({source:e,target:t,view:a.view})}}),[me,Z,ue,ve]),Tt=(0,u.useCallback)(((e,t,a)=>{const i={source:e.id,target:t.id,view:a};Me({type:"change-edge-view",payload:i}),null==ve||ve(i)}),[ve]),Nt=(0,u.useCallback)(((e,t)=>{const a={id:e.id,view:t};Me({type:"change-decorator-view",payload:a}),null==ye||ye(a)}),[ye]),St=(0,u.useMemo)((()=>({rootRef:xe,smartConnectLineState:Xe,unsetHoverStateTimeoutRef:ft,hoverState:kt,activeEditableLines:Ct,lineEditorState:Mt,movingCells:tt,setLineEditorState:bt,setHoverState:mt,setSmartConnectLineState:Ye,onConnect:Wt,onChangeEdgeView:Tt,onChangeDecoratorView:Nt})),[Ct,Tt,Nt,Wt,kt,Mt,Xe,tt]),Rt=(0,u.useCallback)((e=>{e.preventDefault(),Ce([e.clientX,e.clientY]),null==le||le(null)}),[Ce,le]),Lt=(0,u.useCallback)((e=>{e[/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"metaKey":"ctrlKey"]&&("c"===e.key?(we(),e.preventDefault()):"v"===e.key&&(ke(),e.preventDefault()))}),[we,ke]);return(0,u.useEffect)((()=>{const e=xe.current;if(!e||"lasso"!==b)return;const t=e.getBoundingClientRect(),a=e=>{(0,_.F)(e,{transform:Be,offset:[t.left,t.top],onLassoing(e){$e(e)},onLassoed(e){$e(null);const t=[];for(const a of me)if((0,M.WW)(a)||(0,M.N)(a)||(0,M.mH)(a)){const i=(0,y.get)(a,"view.x",0),n=(0,y.get)(a,"view.y",0),l=(0,y.get)(a,"view.width",0),s=(0,y.get)(a,"view.height",0);i>=e.x&&i+l<=e.x+e.width&&n>=e.y&&n+s<=e.y+e.height&&t.push(a)}null==le||le(t.length>1?{type:"multi",targets:t.map(U.P)}:1===t.length?(0,U.P)(t[0]):null)}})};return e.addEventListener("mousedown",a),()=>{e.removeEventListener("mousedown",a)}}),[Be,me,b,le]),g().createElement(F.H.Provider,{value:St},g().createElement("svg",{onKeyDown:Lt,onContextMenu:Rt,width:"100%",height:"100%",ref:xe,className:w()("root",{grabbing:ze,pannable:C,ready:wt}),tabIndex:-1},g().createElement("defs",null,vt.map(((e,t)=>g().createElement(f.c,{key:t,id:`${Qe}${t}`,type:e.markerType,strokeColor:e.strokeColor})))),g().createElement("g",{transform:`translate(${Be.x} ${Be.y}) scale(${Be.k})`},g().createElement("g",{className:w()("cells",{allowEdgeToArea:te})},me.map((e=>g().createElement(E.m,{key:`${e.type}:${(0,M.WW)(e)?`${e.source}~${e.target}`:e.id}`,dragoverContainer:!(0,M.WW)(e)&&Ne.includes(e.id),layout:i,layoutOptions:n,cell:e,cells:me,degraded:be,degradedNodeLabel:c,defaultNodeBricks:o,transform:Be,lineConfMap:At,editableLineMap:yt,activeTarget:qe,unrelatedCells:Ge,allowEdgeToArea:te,curActiveEditableLine:Re,locked:(0,J.l)(e,Ue),containerLocked:(0,M.N)(e)&&!!e.containerId&&Ue.includes(e.containerId),updateCurActiveEditableLine:Le,onCellsMoving:ot,onCellsMoved:rt,onCellResizing:dt,onCellResized:ct,onSwitchActiveTarget:le,onCellContextMenu:he,onDecoratorTextChange:ge,onDecoratorTextEditing:ht,onNodeBrickResize:ut,onCellMouseEnter:xt,onCellMouseLeave:Et})))),g().createElement("g",null,g().createElement(W.w,{connectLineState:He,transform:Be,markerEnd:`${Qe}0`,onConnect:je})),Oe&&g().createElement("rect",{x:Oe.x,y:Oe.y,width:Oe.width,height:Oe.height,fill:"var(--palette-gray-5)",fillOpacity:.3,stroke:"var(--palette-gray-5)",strokeDasharray:2}),pt&&g().createElement("g",null,g().createElement(I.X,{transform:Be,lineSettings:Z,options:pt}),g().createElement(Y.W,{cells:me,editableLineMap:yt,transform:Be,options:pt,activeEditableLine:Re})),g().createElement("g",null,Ze.map(((e,t)=>g().createElement("path",{key:t,d:`M${e[0].join(" ")} L${e[1].join(" ")}`,stroke:"var(--palette-orange-5)",fill:"none",strokeWidth:1/Be.k})))),g().createElement("g",null,pt&&(null==Ct?void 0:Ct.map((e=>g().createElement(X.F,{editableLineMap:yt,scale:Be.k,activeEditableLine:e,updateCurActiveEditableLine:Le,key:(0,M.WW)(e)?`${e.source}-${e.target}`:e.id}))))),pt&&g().createElement(H.T,{activeTarget:qe,editableLineMap:yt,scale:Be.k,activeEditableLine:Re,disabled:!!He}))),g().createElement(B.Y,{shadowRoot:a.shadowRoot,scale:Be.k,scaleRange:Pe,onZoomChange:gt,onReCenter:Ie}))}function fi(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){const t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))}function Mi(e,t){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const i=R.XK,n=i/2,l=t.x+a/2-n,s=t.y+a/2-n,o=t.width-a+i,r=t.height-a+i;return e.map((e=>({x:l+e.x*o,y:s+e.y*r})))}i=Ci,({e:[te,ae,ie,ne,le,se,oe,re,de,ce,he,ue,ge,Ae,pe,ve,ye,Ce,we,ke,me,fe,Me,be,xe,Ee,We,Te,Ne,Se,Re,Le,ze,Be,De,Pe,Oe,$e,He,Fe,_e,Ke,Ve,Ie,Ue,je,Xe,Ye,qe,Ge,Je,Qe,Ze,et,tt,at,it,nt,lt,st,ot,rt,dt,ct,ht,ut,gt,At,pt,vt,yt,Ct,wt,kt,mt,ft,Mt,bt,xt,Et,Wt,Tt,Nt,St,Rt,Lt,zt,Bt,Dt,Pt,Ot,$t,Ht,Ft,_t,Kt,Vt,It,Ut,jt,Xt,Yt,qt,Gt,Jt,Qt,Zt,ea,ta,aa,ia,na,la,sa,Z],c:[ga,ee]}=(0,h.A)(i,[ra("eo-draw-canvas",{styleTexts:[K.A,V.A]})],[[da({attribute:!1}),1,"cells"],[da({type:String}),1,"layout"],[da({attribute:!1}),1,"layoutOptions"],[da({attribute:!1}),1,"defaultNodeSize"],[da({attribute:!1}),1,"defaultNodeBricks"],[da({type:Number}),1,"degradedThreshold"],[da({attribute:!1}),1,"degradedNodeLabel"],[da({attribute:!1}),1,"defaultEdgeLines"],[da({attribute:!1}),1,"activeTarget"],[da({type:Boolean}),1,"fadeUnrelatedCells"],[da({type:Boolean}),1,"zoomable"],[da({type:Boolean}),1,"scrollable"],[da({type:Boolean}),1,"pannable"],[da({type:Boolean}),1,"allowEdgeToArea"],[da(),1,"dragBehavior"],[da(),1,"ctrlDragBehavior"],[da({attribute:!1}),1,"scaleRange"],[da({attribute:!1}),1,"lineSettings"],[da({attribute:!1}),1,"lineConnector"],[da(),1,"doNotResetActiveTargetForSelector"],[da({type:Boolean}),1,"doNotResetActiveTargetOutsideCanvas"],[ha({type:"activeTarget.change"}),1,"activeTargetChangeEvent",e=>(0,c.A)(Da,e),(e,t)=>(0,d.A)(Da,e,t)],[ha({type:"node.move"}),1,"nodeMoveEvent",e=>(0,c.A)(Ha,e),(e,t)=>(0,d.A)(Ha,e,t)],[ha({type:"cell.move"}),1,"cellMoveEvent",e=>(0,c.A)(Fa,e),(e,t)=>(0,d.A)(Fa,e,t)],[ha({type:"cells.move"}),1,"cellsMoveEvent",e=>(0,c.A)(Ka,e),(e,t)=>(0,d.A)(Ka,e,t)],[ha({type:"cell.resize"}),1,"cellResizeEvent",e=>(0,c.A)(Ia,e),(e,t)=>(0,d.A)(Ia,e,t)],[ha({type:"node.delete"}),1,"nodeDelete",e=>(0,c.A)(ja,e),(e,t)=>(0,d.A)(ja,e,t)],[ha({type:"cell.delete"}),1,"cellDelete",e=>(0,c.A)(Xa,e),(e,t)=>(0,d.A)(Xa,e,t)],[ha({type:"cells.delete"}),1,"cellsDelete",e=>(0,c.A)(qa,e),(e,t)=>(0,d.A)(qa,e,t)],[ha({type:"cell.contextmenu"}),1,"cellContextMenu",e=>(0,c.A)(Ja,e),(e,t)=>(0,d.A)(Ja,e,t)],[ha({type:"edge.add"}),1,"edgeAdd",e=>(0,c.A)(Za,e),(e,t)=>(0,d.A)(Za,e,t)],[ha({type:"edge.view.change"}),1,"edgeViewChange",e=>(0,c.A)(ti,e),(e,t)=>(0,d.A)(ti,e,t)],[ha({type:"decorator.view.change"}),1,"decoratorViewChange",e=>(0,c.A)(ii,e),(e,t)=>(0,d.A)(ii,e,t)],[ha({type:"decorator.text.change"}),1,"decoratorTextChange",e=>(0,c.A)(li,e),(e,t)=>(0,d.A)(li,e,t)],[ha({type:"node.container.change"}),1,"containerContainerChange",e=>(0,c.A)(oi,e),(e,t)=>(0,d.A)(oi,e,t)],[ha({type:"scale.change"}),1,"scaleChange",e=>(0,c.A)(di,e),(e,t)=>(0,d.A)(di,e,t)],[ha({type:"canvas.contextmenu"}),1,"canvasContextMenu",e=>(0,c.A)(hi,e),(e,t)=>(0,d.A)(hi,e,t)],[ha({type:"canvas.copy"}),1,"canvasCopy",e=>(0,c.A)(gi,e),(e,t)=>(0,d.A)(gi,e,t)],[ha({type:"canvas.paste"}),1,"canvasPaste",e=>(0,c.A)(pi,e),(e,t)=>(0,d.A)(pi,e,t)],[ca(),2,"dropNode"],[ca(),2,"dropDecorator"],[ca(),2,"addNodes"],[ca(),2,"addEdge"],[ca(),2,"manuallyConnectNodes"],[ca(),2,"updateCells"],[ca(),2,"reCenter"],[ca(),2,"toggleLock"],[ca(),2,"lock"],[ca(),2,"unlock"]],0,(e=>yi.has((0,s.A)(e))),p.ReactNextElement)),ee()}}]);
2
+ //# sourceMappingURL=eo-draw-canvas.b0a01d80.js.map