@next-bricks/diagram 0.43.2 → 0.45.0

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 (54) hide show
  1. package/dist/bricks.json +3 -3
  2. package/dist/chunks/2408.fb68feb4.js +2 -0
  3. package/dist/chunks/2408.fb68feb4.js.map +1 -0
  4. package/dist/chunks/6055.b4910896.js +2 -0
  5. package/dist/chunks/6055.b4910896.js.map +1 -0
  6. package/dist/chunks/9711.53cc8f27.js +2 -0
  7. package/dist/chunks/9711.53cc8f27.js.map +1 -0
  8. package/dist/chunks/eo-diagram.e1ace5a5.js +2 -0
  9. package/dist/chunks/eo-diagram.e1ace5a5.js.map +1 -0
  10. package/dist/chunks/eo-display-canvas.e3d73902.js +2 -0
  11. package/dist/chunks/eo-display-canvas.e3d73902.js.map +1 -0
  12. package/dist/chunks/eo-draw-canvas.72086195.js +2 -0
  13. package/dist/chunks/eo-draw-canvas.72086195.js.map +1 -0
  14. package/dist/chunks/main.7aa44cbf.js +2 -0
  15. package/dist/chunks/{main.1a8affb8.js.map → main.7aa44cbf.js.map} +1 -1
  16. package/dist/examples.json +2 -2
  17. package/dist/index.89f5ea83.js +2 -0
  18. package/dist/{index.05f1b5e3.js.map → index.89f5ea83.js.map} +1 -1
  19. package/dist/manifest.json +51 -44
  20. package/dist/types.json +790 -625
  21. package/dist-types/diagram/lines/getDirectLinePoints.d.ts +2 -1
  22. package/dist-types/draw-canvas/CellComponent.d.ts +2 -1
  23. package/dist-types/draw-canvas/EdgeComponent.d.ts +2 -1
  24. package/dist-types/draw-canvas/EditingLineComponent.d.ts +7 -0
  25. package/dist-types/draw-canvas/HoverStateContext.d.ts +15 -5
  26. package/dist-types/draw-canvas/LineConnectorComponent.d.ts +3 -5
  27. package/dist-types/draw-canvas/LineEditorComponent.d.ts +4 -0
  28. package/dist-types/draw-canvas/SmartConnectLineComponent.d.ts +2 -3
  29. package/dist-types/draw-canvas/constants.d.ts +5 -0
  30. package/dist-types/draw-canvas/index.d.ts +6 -2
  31. package/dist-types/draw-canvas/interfaces.d.ts +50 -6
  32. package/dist-types/draw-canvas/processors/asserts.d.ts +1 -0
  33. package/dist-types/draw-canvas/reducers/interfaces.d.ts +6 -1
  34. package/dist-types/shared/canvas/processors/getEditingLinePoints.d.ts +5 -0
  35. package/dist-types/shared/canvas/processors/getEditingLinePoints.spec.d.ts +1 -0
  36. package/dist-types/shared/canvas/processors/getSmartLinePoints.d.ts +2 -1
  37. package/dist-types/shared/canvas/processors/getSmartLinePoints.spec.d.ts +1 -0
  38. package/dist-types/shared/canvas/shapes/Rectangle.d.ts +3 -1
  39. package/dist-types/shared/canvas/useActiveTarget.d.ts +2 -2
  40. package/docs/eo-display-canvas.md +9 -0
  41. package/docs/eo-draw-canvas.md +5 -0
  42. package/package.json +2 -2
  43. package/dist/chunks/3252.d94ce52c.js +0 -2
  44. package/dist/chunks/3252.d94ce52c.js.map +0 -1
  45. package/dist/chunks/9711.2d99e6d9.js +0 -2
  46. package/dist/chunks/9711.2d99e6d9.js.map +0 -1
  47. package/dist/chunks/eo-diagram.1934f2b2.js +0 -2
  48. package/dist/chunks/eo-diagram.1934f2b2.js.map +0 -1
  49. package/dist/chunks/eo-display-canvas.2b754ef1.js +0 -2
  50. package/dist/chunks/eo-display-canvas.2b754ef1.js.map +0 -1
  51. package/dist/chunks/eo-draw-canvas.79b100f8.js +0 -2
  52. package/dist/chunks/eo-draw-canvas.79b100f8.js.map +0 -1
  53. package/dist/chunks/main.1a8affb8.js +0 -2
  54. package/dist/index.05f1b5e3.js +0 -2
package/dist/bricks.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "id": "bricks/diagram",
3
3
  "bricks": [
4
- "diagram.editable-label",
5
- "diagram.experimental-node"
4
+ "diagram.experimental-node",
5
+ "diagram.editable-label"
6
6
  ],
7
7
  "elements": [
8
8
  "eo-diagram",
@@ -16,5 +16,5 @@
16
16
  "basic.lock-body-scroll"
17
17
  ]
18
18
  },
19
- "filePath": "bricks/diagram/dist/index.05f1b5e3.js"
19
+ "filePath": "bricks/diagram/dist/index.89f5ea83.js"
20
20
  }
@@ -0,0 +1,2 @@
1
+ "use strict";(globalThis.webpackChunk_next_bricks_diagram=globalThis.webpackChunk_next_bricks_diagram||[]).push([[2408],{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=s;break;case"0..N":e=y;break;default:e=h}return n().createElement(e,{id:r,strokeColor:o})}function h(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 s(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 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 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"}))}},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){if(!Array.isArray(t))return"";let a;switch(e){case"curveLinear":a=i.A;break;case"curveBumpX":a=n.dJ;break;case"curveBumpY":a=n.kl;break;case"curveMonotoneX":a=o.G;break;case"curveMonotoneY":a=o.N;break;case"curveNatural":a=h.A;break;default:a=s.Ay}const l=c(t[1],t[0],r),u=c(t[t.length-2],t[t.length-1],x);return(0,y.A)().x(((e,r)=>e.x-(0===r?l.x:r===t.length-1?u.x:0))).y(((e,r)=>e.y-(0===r?l.y:r===t.length-1?u.y:0))).curve(a)(t)}function c(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}}},3188:(t,e,r)=>{r.d(e,{h:()=>n});var i=r(733);function n(t,e,r,n){const h=!(null==n||!n.exitPosition),s=!(null==n||!n.entryPosition);if(t===e||(0,i.w)(t,e,0,0)&&!h&&!s)return null;let y,x,c=0,a=0;if(r){const i=e.x-t.x,n=e.y-t.y,o=Math.atan2(n,i);c=r/2*Math.cos(o+Math.PI/2),a=r/2*Math.sin(o+Math.PI/2)}const l=[h?[t.x+(n.exitPosition.x-.5)*t.width,t.y+(n.exitPosition.y-.5)*t.height]:[t.x+c,t.y+a],s?[e.x+(n.entryPosition.x-.5)*e.width,e.y+(n.entryPosition.y-.5)*e.height]:[e.x+c,e.y+a]];if(h)y=l[0];else{const e=o(t,l);y=e.length>0?e[0]:[t.x,t.y]}if(s)x=l[1];else{const t=o(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 o(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 n=[];for(const t of i){const r=h(e[0],e[1],t[0],t[1]);r&&n.push(r)}return n}function h(t,e,r,i){let[n,o]=t,[h,s]=e,[y,x]=r,[c,a]=i;if(n===h&&o===s||y===c&&x===a)return null;const l=(a-x)*(h-n)-(c-y)*(s-o);if(0===l)return null;const u=((c-y)*(o-x)-(a-x)*(n-y))/l,d=((h-n)*(o-x)-(s-o)*(n-y))/l;return u<0||u>1||d<0||d>1?null:[n+u*(h-n),o+u*(s-o)]}},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 c=[],a=!1;const l="top"===r||"bottom"===r;if(l!==("top"===n||"bottom"===n)){let o,h,s,u,d,f;l?(o=e,h=t,s="right"===n?1:-1,u="bottom"===r?1:-1,d=x,f=y):(o=t,h=e,s="right"===r?1:-1,u="bottom"===n?1:-1,d=y,f=x,a=!0);const g=d.x+i*s,w=f.y+i*u;if((o.x-h.x)*s>=0)if((h.y-o.y)*u>=0)c=[{x:f.x,y:w},{x:g,y:w},{x:g,y:d.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;c=[{x:f.x,y:r},{x:g,y:r},{x:g,y:d.y}]}else{const r=(h.x+h.width/2*s+o.x-o.width/2*s)/2;c=[{x:f.x,y:t},{x:r,y:t},{x:r,y:e},{x:g,y:e},{x:g,y:d.y}]}}else if((d.y-w)*u>=0)if((f.x-g)*s>=0)c=[{x:f.x,y:d.y}];else{const t=(h.y+(h.height/2+i)*u+(o.y-(o.height/2+i)*u))/2;c=[{x:f.x,y:t},{x:g,y:t},{x:g,y:d.y}]}else{const t=h.x-(h.width/2+i)*s;if((t-g)*s>=0){const e=(t+g)/2;c=[{x:f.x,y:w},{x:e,y:w},{x:e,y:d.y}]}else{const e=(h.y-h.height/2*u+o.y+o.height/2*u)/2;c=[{x:f.x,y:w},{x:t,y:w},{x:t,y:e},{x:g,y:e},{x:g,y:d.y}]}}}else if(r===n){const n="bottom"===r||"right"===r?1:-1;let o,h,s,u;const d=l?"y":"x",f=l?"x":"y";let g,w,k,m;e[d]<t[d]?(o=e,h=t,s=x,u=y,a=1===n):(o=t,h=e,s=y,u=x,a=1!==n),1===n?(g=h,w=o,k=u,m=s):(g=o,w=h,k=s,m=u);const b=g===(e[f]<t[f]?t:e)?1:-1;if(l){const t=g.x-(g.width/2+i)*b,e=k.y+i*n;if((t-m.x)*b>=0)c=[{x:m.x,y:e},{x:k.x,y:e}];else{const r=(w.y+w.height/2*n+g.y-g.height/2*n)/2;c=[{x:m.x,y:r},{x:t,y:r},{x:t,y:e},{x:k.x,y:e}]}}else{const t=k.x+i*n,e=g.y-(g.height/2+i)*b;if((e-m.y)*b>=0)c=[{x:t,y:m.y},{x:t,y:k.y}];else{const r=(w.x+w.width/2*n+g.x-g.width/2*n)/2;c=[{x:r,y:m.y},{x:r,y:e},{x:t,y:e},{x:t,y:k.y}]}}}else{const r="bottom"===n||"right"===n?1:-1;let o,h,s,a;l?(o="y",h="x",s="height",a="width"):(o="x",h="y",s="width",a="height");const u=e[o]+e[s]/2*r,d=t[o]-t[s]/2*r,f=u+i*r,g=d-i*r,w=y[h]===x[h];if((g-f)*r>=0){const t=(g+f)/2;c=w?[]:[{[h]:y[h],[o]:t},{[h]:x[h],[o]:t}]}else if(w&&(d-u)*r>=0)c=[];else{const n=e[h]<t[h]?-1:1,l=t[h]+(t[a]/2+i)*n,u=e[h]-(e[a]/2+i)*n;if((u-l)*n>=0||Math.abs((g-f)*r)<i){const t=(l+u)/2;c=[{[h]:y[h],[o]:g},{[h]:t,[o]:g},{[h]:t,[o]:f},{[h]:x[h],[o]:f}]}else{const i=(t[o]+t[s]/2*r+e[o]-e[s]/2*r)/2;c=[{[h]:y[h],[o]:g},{[h]:l,[o]:g},{[h]:l,[o]:i},{[h]:u,[o]:i},{[h]:u,[o]:f},{[h]:x[h],[o]:f}]}}}return a&&c.reverse(),[y,...c,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}}}},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),c=Math.max(o.y+o.height/2,h.y+h.height/2);return y-s<o.width+h.width&&c-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})},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=2408.fb68feb4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunks/2408.fb68feb4.js","mappings":"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","sources":["webpack:///./src/diagram/MarkerComponent.tsx","webpack:///./src/diagram/lines/curveLine.ts","webpack:///./src/diagram/lines/getDirectLinePoints.ts","webpack:///./src/diagram/lines/getPolyLinePoints.ts","webpack:///./src/diagram/processors/doTwoNodesOverlap.ts","webpack:///./src/diagram/processors/extractPartialRectTuple.ts"],"sourcesContent":["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 default:\n Component = ArrowMarker;\n }\n\n return <Component id={id} strokeColor={strokeColor} />;\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 {\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\";\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): 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()\n .x(\n (d, index) =>\n (d as unknown as { x: number }).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 as unknown as { y: number }).y -\n (index === 0\n ? startOffsets.y\n : index === points.length - 1\n ? endOffsets.y\n : 0)\n )\n .curve(curveFactory);\n return lineFunction(points as unknown as Array<[number, number]>)!;\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 { EdgeView } from \"../../draw-canvas/interfaces\";\nimport type { NodePosition, NodeRect, PositionTuple } from \"../interfaces\";\nimport { doTwoNodesOverlap } from \"../processors/doTwoNodesOverlap\";\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\n// https://paulbourke.net/geometry/pointlineplane/javascript.txt\nfunction 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 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 { 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 { 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":["MarkerComponent","_ref","Component","id","type","strokeColor","EntityRelationZeroOrOneMarker","EntityRelationZeroOrManyMarker","ArrowMarker","React","_ref2","viewBox","refX","refY","markerWidth","markerHeight","orient","strokeLinejoin","d","stroke","strokeWidth","fill","_ref3","_ref4","curveLine","points","curveType","startOffset","endOffset","Array","isArray","curveFactory","curveLinear","curveBumpX","curveBumpY","curveMonotoneX","curveMonotoneY","curveNatural","curveBasis","startOffsets","getOffsets","endOffsets","length","line","x","index","y","curve","lineFunction","start","end","offset","x0","y0","x1","y1","ratio","Math","sqrt","pow","getDirectLinePoints","source","target","parallelGap","edgeView","hasExitPosition","exitPosition","hasEntryPosition","entryPosition","doTwoNodesOverlap","p0","p1","xDiff","yDiff","dx","dy","angle","atan2","cos","PI","sin","width","height","sourceIntersections","getIntersections","targetIntersections","rect","vertices","possibleLines","i","push","intersections","item","intersection","intersect","x2","y2","x3","y3","x4","y4","denominator","ua","ub","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","startPosition","endPosition","axis","oppositeAxis","around","nonAround","aroundPosition","nonAroundPosition","aroundSign","targetSign","size","oppositeSize","targetEdge","sourceEdge","targetControl","sourceControl","oppositeIsStraight","middle","targetOppositeSign","sourceOppositeControl","targetOppositeControl","abs","oppositeMiddle","reverse","node","direction","position","a","b","paddingA","paddingB","A","getNodesWithPadding","B","left","min","right","max","top","bottom","padding","extractPartialRectTuple","value","v0","v1"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(globalThis.webpackChunk_next_bricks_diagram=globalThis.webpackChunk_next_bricks_diagram||[]).push([[6055],{4932:(e,t,n)=>{n.d(t,{m:()=>A});var o=n(8769),i=n.n(o),r=n(3373),l=n.n(r),a=n(531),c=n(3188),s=n(3033),d=n(8653),u=n(3239),v=n(693);function f(e,t){return e.find((e=>(0,a.o6)(e)&&e.id===t))}var h=n(9978);function m(e){var t,n;let{edge:r,cells:m,lineConfMap:g,active:p}=e;const{setActiveEditableLine:y}=(0,h.s)(),w=(0,o.useRef)(null),x=(0,o.useMemo)((()=>f(m,r.source)),[m,r.source]),E=(0,o.useMemo)((()=>f(m,r.target)),[m,r.target]),k=(0,o.useMemo)((()=>g.get(r)),[r,g]),b=(0,o.useMemo)((()=>m.some((e=>{var t,n;return(0,a.WW)(e)&&e.source===r.target&&e.target===r.source&&!(null!==(t=r.view)&&void 0!==t&&t.exitPosition||null!==(n=r.view)&&void 0!==n&&n.entryPosition)}))?k.parallelGap:0),[m,r,k.parallelGap]),I=(0,o.useMemo)((()=>{var e,t,n,o;const i=null!==(e=r.view)&&void 0!==e&&e.exitPosition||null!==(t=r.view)&&void 0!==t&&t.entryPosition?0:s.p6;return x&&E&&null!=x.view.x&&null!=E.view.x?null!==(n=r.view)&&void 0!==n&&n.exitPosition||null!==(o=r.view)&&void 0!==o&&o.entryPosition?(0,v.V)(x.view,E.view,r.view):(0,c.h)((0,u.T)(x.view,i),(0,u.T)(E.view,i),b,r.view):null}),[r.view,b,x,E]),C=(0,o.useMemo)((()=>{const e="auto"===k.type?"polyline":k.type;return(0,d.S)(I,"curve"===e?k.curveType:"curveLinear",0,1)}),[k,I]);return(0,o.useEffect)((()=>{y((e=>p?I&&x&&E?{edge:r,source:x,target:E,linePoints:I}:null:null!=e&&e.edge&&e.edge.source===r.source&&e.edge.target===r.target?null:e))}),[p,r,I,y,x,E]),C&&I?i().createElement(i().Fragment,null,i().createElement("path",{d:C,fill:"none",stroke:"transparent",strokeWidth:k.interactStrokeWidth}),i().createElement("path",{ref:w,className:l()("line",{dashed:k.dashed,[(k.dashed?"dashed":"solid")+"-animation"]:k.animate.useAnimate}),style:{"--time":`${k.animate.duration??s.Be}s`,"--solid-length":null===(t=w.current)||void 0===t||null===(n=t.getTotalLength)||void 0===n?void 0:n.call(t)},d:C,fill:"none",stroke:k.strokeColor,strokeWidth:k.strokeWidth,markerStart:k.showStartArrow?k.$markerUrl:"",markerEnd:k.showEndArrow?k.$markerUrl:""}),i().createElement("path",{className:"line-active-bg",d:C,fill:"none"})):null}var g=n(564),p=n(3204),y=n(1030),w=n(9126);function x(e){let{node:t,degraded:n,degradedNodeLabel:r,defaultNodeBricks:l,onResize:a}=e;const c=function(e){const[t,n]=(0,o.useState)(e);return(0,o.useEffect)((()=>{n((t=>(0,y.isEqual)(t,e)?t:e))}),[e]),t}({node:{id:t.id,data:t.data}}),s=t.useBrick,d=(0,o.useRef)(null),u=(0,o.useMemo)((()=>{var e;return n?null:s??(null==l||null===(e=l.find((e=>(0,p.checkIfByTransform)(e,c))))||void 0===e?void 0:e.useBrick)}),[n,s,l,c]),v=(0,o.useMemo)((()=>n?String(p.__secret_internals.legacyDoTransform(c,r??"<% DATA.node.id %>")):""),[n,r,c]),f=(0,o.useCallback)((e=>{const n=d.current;n&&(n.disconnect(),d.current=null),e?setTimeout((()=>{const n=new w.A((()=>{a(t.id,[e.offsetWidth,e.offsetHeight])}));n.observe(e),d.current=n})):a(t.id,null)}),[t.id,a]),h=(0,o.useCallback)((e=>{if(e){const n=e.getBBox();a(t.id,[n.width,n.height])}else a(t.id,null)}),[t.id,a]);return u?i().createElement("foreignObject",{width:9999,height:9999,className:"node"},u&&i().createElement(g.ReactUseBrick,{useBrick:u,data:c,refCallback:f})):n?i().createElement("g",{className:"degraded",ref:h},i().createElement("circle",{cx:8,cy:8,r:8}),i().createElement("text",{x:8,y:32},v)):null}var E=n(9386),k=n(4197);function b(e,t){let{action:n,cell:o,scale:i,layout:r,layoutOptions:l,activeTarget:c,cells:d,onCellsMoving:u,onCellsMoved:v,onCellResizing:f,onCellResized:h,onSwitchActiveTarget:m}=t;if(e.stopPropagation(),"resize"!==n&&(0,k.Q)(o,c)||null==m||m((0,E.P)(o)),(0,a.WW)(o))return;const g=[],p="multi"===(null==c?void 0:c.type)&&"move"===n?d.filter((e=>(0,k.Q)(e,c))):[o];p.forEach((e=>{g.push(e),"move"===n&&(0,a.t2)(e)&&g.push(...d.filter((t=>(0,a.N)(t)&&t.containerId===e.id&&!p.includes(t))))}));const y="force"===r||"dagre"===r,w=g.filter((e=>(0,a.N)(e)&&!y||(0,a.mH)(e)));if(0===w.length)return;const x=function(e){const t=e?!0===e?{grid:!0,object:!0}:e:null,n=null!=t&&t.grid?!0===t.grid?{}:t.grid:null,o=null!=t&&t.object?!0===t.object?{}:t.object:null;return{grid:n?{size:n.size??s.gx}:null,object:o?{distance:o.distance??s.ld}:null}}(null==l?void 0:l.snap),b=[e.clientX,e.clientY],C=w.map((e=>({cell:e,position:"move"===n?[e.view.x,e.view.y]:[e.view.width,e.view.height],center:"move"!==n||(0,a.WW)(e)?null:I(e.view)}))),L=C[0].position;let S=C.map((e=>{let{position:t}=e;return t})),P=[];if("move"===n&&x.object){const e=d.filter((e=>!(0,a.WW)(e)&&!g.includes(e)));P=e.map((e=>({cell:e,center:I(e.view)})))}let z=!1;const M=(e,t)=>{const r=function(e){return[(e.clientX-b[0])/i,(e.clientY-b[1])/i]}(e);let l,c,s,d,m;if(!x.grid&&!x.object||e.altKey)l=C.map((e=>{let{position:t}=e;return[t[0]+r[0],t[1]+r[1]]})),z||(z=r[0]**2+r[1]**2>=9);else{let e=1/0,t=1/0;const n=[...r];if(x.object){const o=x.object.distance;let i,l,a,u,v=0,f=0;for(const{cell:c,center:[s,h]}of P)for(const{cell:g,center:p}of C){const[y,w]=p,x=Math.abs(y+r[0]-s),E=Math.abs(w+r[1]-h),k=E<o&&E<t;x<o&&x<e&&(e=x,n[0]=s-y,d=g,a=c,i=[s,h],v=w),k&&(t=E,n[1]=h-w,m=g,u=c,l=[s,h],f=y)}if(a&&a===u){const e=a.view.height/2,t=a.view.width/2;c=[[i[0],i[1]-e],[i[0],i[1]+e]],s=[[l[0]-t,l[1]],[l[0]+t,l[1]]]}else i&&(c=[i,[i[0],v+n[1]]]),l&&(s=[l,[f+n[0],l[1]]])}if(x.grid){const o=x.grid.size,i=[Math.round((L[0]+r[0])/o)*o,Math.round((L[1]+r[1])/o)*o],l=[i[0]-L[0],i[1]-L[1]],a=Math.abs(l[0]-r[0]),u=Math.abs(l[1]-r[1]);a<e&&(e=a,n[0]=l[0],c=void 0,d=void 0),u<t&&(t=u,n[1]=l[1],s=void 0,m=void 0)}l=C.map((e=>{let{position:t}=e;return[Math.round(t[0]+n[0]),Math.round(t[1]+n[1])]})),(l[0][0]!==S[0][0]||l[0][1]!==S[0][1])&&(S=l,z=!0)}if(z)if("move"===n){var g;const e=C.map(((e,n)=>{let{cell:o}=e;return{type:o.type,id:o.id,x:l[n][0],y:l[n][1],width:o.view.width,height:o.view.height,decorator:(0,a.mH)(o)?o.decorator:void 0,guideLines:t?void 0:[...d===o?[c]:[],...m===o?[s]:[]]}}));null===(g=t?v:u)||void 0===g||g(e)}else{var p;null===(p=t?h:f)||void 0===p||p({type:o.type,id:o.id,width:l[0][0],height:l[0][1]})}},N=e=>{M(e)},R=e=>{M(e,!0),z=!1,document.removeEventListener("mousemove",N),document.removeEventListener("mouseup",R)};document.addEventListener("mousemove",N),document.addEventListener("mouseup",R)}function I(e){return[e.x+e.width/2,e.y+e.height/2]}function C(e){let{cell:t,transform:n,readOnly:r,layoutOptions:l,activeTarget:a,cells:c,onCellResizing:s,onCellResized:d,onSwitchActiveTarget:u}=e;const v=i().useRef(null);return(0,o.useEffect)((()=>{const e=v.current;if(!e||r)return;const o=e=>{b(e,{action:"resize",cell:t,scale:n.k,layoutOptions:l,activeTarget:a,cells:c,onCellResizing:s,onCellResized:d,onSwitchActiveTarget:u})};return e.addEventListener("mousedown",o),()=>{e.removeEventListener("mousedown",o)}}),[a,t,c,l,d,s,u,r,n.k]),i().createElement("g",{className:"decorator-area"},i().createElement("rect",{width:t.view.width,height:t.view.height,className:"area"}),!r&&i().createElement("g",{ref:v,className:"resize-handle",transform:`translate(${t.view.width-20} ${t.view.height-20})`},i().createElement("rect",{width:20,height:20}),i().createElement("path",{d:"M10 18L18 10 M15 18L18 15"})))}function L(e){let{cell:t,readOnly:n,onDecoratorTextEditing:r,onDecoratorTextChange:a}=e;const c=t.view.text??"",[s,d]=(0,o.useState)(c),[u,v]=(0,o.useState)(!1),f=(0,o.useRef)(!1),[h,m]=(0,o.useState)(!1),g=(0,o.useRef)(null),p=(0,o.useCallback)((e=>{n||(e.preventDefault(),e.stopPropagation(),v(!0))}),[n]);(0,o.useEffect)((()=>{const e=g.current;e&&e.textContent!==s&&(e.textContent=s)}),[s]),(0,o.useEffect)((()=>{var e;const n=null===(e=g.current)||void 0===e?void 0:e.parentElement;n&&(t.view.width=n.clientWidth,t.view.height=n.clientHeight)}),[s,t.id]),(0,o.useEffect)((()=>{u&&g.current&&(g.current.focus(),S(g.current)),null==r||r({id:t.id,editing:u})}),[t.id,u,r]),(0,o.useEffect)((()=>{f.current?null==r||r({id:t.id,editing:u}):f.current=!0}),[t.id,u,r]);const y=(0,o.useCallback)((e=>{n||d(e.target.textContent)}),[n]),w=(0,o.useCallback)((()=>{n||(v(!1),m(!0))}),[n]);return(0,o.useEffect)((()=>{h&&(null==a||a({id:t.id,view:{...t.view,text:s}}),m(!1))}),[t,s,a,h]),i().createElement("foreignObject",{className:"decorator-text"},i().createElement("div",{className:l()("text-container",{editing:u}),onDoubleClick:p},i().createElement("div",{className:"text",contentEditable:u,ref:g,onInput:y,onBlur:w})))}function S(e){const t=document.createRange();t.selectNodeContents(e);const n=window.getSelection();n.removeAllRanges(),n.addRange(t)}var P=n(9068);function z(e){let{cell:t,transform:n,readOnly:r,layout:c,view:s,activeTarget:d,cells:u,onCellResizing:v,onCellResized:f,onSwitchActiveTarget:h,onDecoratorTextEditing:m,onDecoratorTextChange:g}=e;const p=(0,y.get)(t.view,"text",""),w=(0,y.get)(t.view,"direction","top"),x=(0,o.useRef)(null),E=i().useRef(null),[k,I]=(0,o.useState)(!1),[C,L]=(0,o.useState)(p),[z,M]=(0,o.useState)(!1),[N,R]=(0,o.useState)(),[A,T]=(0,o.useState)({x:0,y:0,width:t.view.width,height:t.view.height}),H=(0,o.useCallback)((e=>{r||(e.preventDefault(),e.stopPropagation(),I(!0))}),[r]),Z=(0,o.useCallback)((e=>{r||L(e.target.textContent)}),[r]),D=(0,o.useCallback)((()=>{r||(I(!1),M(!0),R((0,P.uuidV4)()))}),[r]);return(0,o.useEffect)((()=>{L(p)}),[p]),(0,o.useEffect)((()=>{const e=x.current;e&&e.textContent!==C&&(e.textContent=C)}),[C]),(0,o.useEffect)((()=>{var e;const t=null===(e=x.current)||void 0===e?void 0:e.parentElement;if(t){const{clientWidth:e,clientHeight:n}=t;if(["left","right"].includes(w)){const t={width:e,height:s.height,x:"left"===w?-e:s.width,y:0};T(t)}else{const e={width:s.width,height:n,x:0,y:"top"===w?-n:s.height};T(e)}}}),[s,C,w,N]),(0,o.useEffect)((()=>{k&&x.current&&(x.current.focus(),S(x.current)),null==m||m({id:t.id,editing:k})}),[t.id,k,m]),(0,o.useEffect)((()=>{z&&(null==g||g({id:t.id,view:{...s,text:C}}),M(!1))}),[t,s,C,g,z]),(0,o.useEffect)((()=>{const e=E.current;if(!e||r)return;const o=e=>{b(e,{action:"resize",cell:t,scale:n.k,activeTarget:d,cells:u,onCellResizing:v,onCellResized:f,onSwitchActiveTarget:h})};return e.addEventListener("mousedown",o),()=>{e.removeEventListener("mousedown",o)}}),[d,t,u,f,v,h,r,n.k]),i().createElement("g",{className:"decorator-container"},i().createElement("foreignObject",A,i().createElement("div",{className:l()("text-container",{editing:k,[["left","right"].includes(w)?"vertical":"horizontal"]:!0}),onDoubleClick:H},i().createElement("div",{className:"text",contentEditable:k,ref:x,onInput:Z,onBlur:D}))),i().createElement("rect",{width:s.width,height:s.height,className:"container"}),!r&&!(0,a.OD)(c)&&i().createElement("g",{ref:E,className:"resize-handle",transform:`translate(${s.width-20} ${s.height-20})`},i().createElement("rect",{width:20,height:20}),i().createElement("path",{d:"M10 18L18 10 M15 18L18 15"})))}function M(e){let t,{cell:n,view:o,transform:r,readOnly:l,layout:a,layoutOptions:c,activeTarget:s,cells:d,onCellResizing:u,onCellResized:v,onSwitchActiveTarget:f,onDecoratorTextEditing:h,onDecoratorTextChange:m}=e;switch(n.decorator){case"container":t=z;break;case"area":t=C;break;case"text":t=L;break;default:return console.error(`Unknown decorator: ${n.decorator}`),null}return i().createElement(t,{cell:n,view:o,transform:r,readOnly:l,layout:a,layoutOptions:c,activeTarget:s,cells:d,onCellResizing:u,onCellResized:v,onSwitchActiveTarget:f,onDecoratorTextEditing:h,onDecoratorTextChange:m})}var N=n(8185);function R(e){let t=1/0,n=1/0,o=-1/0,i=-1/0;return e.forEach((e=>{const{x:r,y:l,width:a,height:c}=e.view;r<t&&(t=r),l<n&&(n=l),r+a>o&&(o=r+a),l+c>i&&(i=l+c)})),[t,o,n,i].some((e=>isFinite(e)))?{x:t-20,y:n-20,width:o-t+40,height:i-n+40}:{}}function A(e){let{layout:t,layoutOptions:n,cell:r,cells:c,degraded:s,degradedNodeLabel:d,defaultNodeBricks:u,lineConfMap:v,activeTarget:f,dragNodeToContainerActive:g,readOnly:p,transform:w,unrelatedCells:I,allowEdgeToArea:C,onCellsMoving:L,onCellsMoved:S,onCellResizing:P,onCellResized:z,onSwitchActiveTarget:A,onCellContextMenu:T,onCellClick:H,onDecoratorTextEditing:Z,onDecoratorTextChange:D,onNodeBrickResize:W,onCellMouseEnter:B,onCellMouseLeave:j}=e;const{lineEditorState:V,smartConnectLineState:O,setSmartConnectLineState:G,onConnect:U,setLineEditorState:Y,onChangeEdgeView:X}=(0,h.s)(),$=(0,o.useRef)(null),Q=(0,o.useMemo)((()=>I.some((e=>(0,N.c)(e,r)))),[r,I]),F=(0,o.useMemo)((()=>{if((0,a.t2)(r)&&(0,a.OD)(t)){const e=c.filter((e=>(0,a.N)(e)&&e.containerId===r.id)),t={...r.view,...R(e)};return r.view=t,t}return(0,a.WW)(r)?void 0:(0,y.get)(r,"view",{x:0,y:0,width:0,height:0})}),[t,r,c]);(0,o.useEffect)((()=>{const e=$.current;if(!e)return;const o=e=>{p||(0,a.t2)(r)&&(0,a.OD)(t)?e.stopPropagation():b(e,{layout:t,layoutOptions:n,action:"move",cell:r,scale:w.k,activeTarget:f,cells:c,onCellsMoving:L,onCellsMoved:S,onSwitchActiveTarget:A})};return e.addEventListener("mousedown",o),()=>{e.removeEventListener("mousedown",o)}}),[t,n,r,f,c,S,L,A,p,w.k]),(0,o.useEffect)((()=>{const e=$.current;if(!e||!(0,a.bo)(r,C)||!(O||V&&"control"!==V.type))return;const t=e=>{if(e.preventDefault(),e.stopPropagation(),O)O.source!==r&&(null==U||U(O.source,r,O.exitPosition,void 0)),G(null);else if(V){const{type:e,source:t,target:n,edge:{view:o}}=V,i="entry"===e;(i?n:t)===r&&(i?null==X||X(t,n,{...o,entryPosition:null,...null!=o&&o.exitPosition?{}:{vertices:null}}):null==X||X(t,n,{...o,exitPosition:null,...null!=o&&o.entryPosition?{}:{vertices:null}})),Y(null)}};return e.addEventListener("mouseup",t),()=>{e.removeEventListener("mouseup",t)}}),[C,r,V,X,U,Y,G,O]);const J=(0,o.useCallback)((e=>{p&&"decorator"===r.type||(e.preventDefault(),A((0,E.P)(r)),T({cell:r,clientX:e.clientX,clientY:e.clientY}))}),[r,T,A,p]),K=(0,o.useCallback)((e=>{H&&"decorator"!==r.type&&H({cell:r,clientX:e.clientX,clientY:e.clientY})}),[r,H]),_=(0,o.useCallback)((()=>{null==B||B(r)}),[r,B]),q=(0,o.useCallback)((()=>{null==j||j(r)}),[r,j]),ee=(0,k.Q)(r,f);return i().createElement("g",{className:l()("cell",{active:ee,faded:Q,"read-only":p,"container-active":g}),ref:$,transform:"edge"===r.type||null==r.view.x?void 0:`translate(${F.x} ${F.y})`,onContextMenu:J,onClick:K,onMouseEnter:_,onMouseLeave:q},(0,a.N)(r)?i().createElement(x,{node:r,degraded:s,degradedNodeLabel:d,defaultNodeBricks:u,onResize:W}):(0,a.WW)(r)?i().createElement(m,{edge:r,cells:c,lineConfMap:v,active:ee}):(0,a.mH)(r)?i().createElement(M,{cell:r,view:F,transform:w,readOnly:p,layout:t,layoutOptions:n,activeTarget:f,cells:c,onCellResizing:P,onCellResized:z,onSwitchActiveTarget:A,onDecoratorTextEditing:Z,onDecoratorTextChange:D}):null)}},3639:(e,t,n)=>{n.d(t,{w:()=>a});var o=n(8769),i=n.n(o),r=n(3373),l=n.n(r);function a(e){let{connectLineState:t,transform:n,markerEnd:r,onConnect:a}=e;const[c,s]=(0,o.useState)(null);return(0,o.useEffect)((()=>{t&&s(t.from)}),[t]),(0,o.useEffect)((()=>{if(t){const e=e=>[(e.clientX-n.x-t.offset[0])/n.k,(e.clientY-n.y-t.offset[1])/n.k],o=t=>{s(e(t))},i=e=>{e.stopPropagation()},r=n=>{n.stopPropagation(),l(),a(t,e(n))},l=()=>{document.removeEventListener("mousemove",o),document.removeEventListener("mousedown",i,{capture:!0}),document.removeEventListener("click",r,{capture:!0}),s(null)};return document.addEventListener("mousemove",o),document.addEventListener("mousedown",i,{capture:!0}),document.addEventListener("click",r,{capture:!0}),l}}),[t,a,n]),i().createElement("path",{className:l()("connect-line",{connecting:!!t&&c&&(c[0]-t.from[0])**2+(c[1]-t.from[1])**2>25}),d:t&&c?`M${t.from.join(" ")}L${c.join(" ")}`:"",fill:"none",stroke:"gray",strokeWidth:1,markerEnd:`url(#${r})`})}},1825:(e,t,n)=>{n.d(t,{W:()=>u});var o=n(8769),i=n.n(o),r=n(3373),l=n.n(r),a=n(8653),c=n(9978),s=n(693);function d(e,t){const{control:n,linePoints:o}=e,i=[],[r,l]=t,a=o[0],c=o[o.length-1];0===n.index&&i.push("ns"===n.direction?{x:a.x,y:l}:{x:r,y:a.y});for(let e=1;e<o.length-1;e++){const t=o[e];i.push(e===n.index||e===n.index+1?"ns"===n.direction?{x:t.x,y:l}:{x:r,y:t.y}:t)}n.index===o.length-2&&i.push("ns"===n.direction?{x:c.x,y:l}:{x:r,y:c.y});const s=[];let d,u=a,v=0;for(;v<i.length;){const e=i[v],t=e.x!==u.x,n=e.y!==u.y;if(t||n){const n=t?"ew":"ns";if(n!==d){const t=v===i.length-1?c:i[v+1],o=t.x!==e.x,r=t.y!==e.y;(o||r)&&n!==(o?"ew":"ns")&&(d=n,s.push(e),u=e)}}v++}return s}function u(e){let{transform:t,options:n}=e;const[r,u]=(0,o.useState)(null),{activeEditableLine:v,hoverState:f,lineEditorState:h,setLineEditorState:m,onChangeEdgeView:g}=(0,c.s)(),p=(0,o.useRef)(!1);(0,o.useEffect)((()=>{if(!h)return;p.current=!1;const{type:e,offset:n,from:o}=h,i=i=>{const r={x:(i.clientX-t.x-n[0])/t.k,y:(i.clientY-t.y-n[1])/t.k};let l=1/0;if("control"===e&&!i.altKey){const{linePoints:e,control:t}=h,n="ns"===t.direction?"y":"x",o=t[n],i=e.filter(((n,o)=>0===o||o===e.length-1||o!==t.index&&o!==t.index+1)),a=5;for(const e of i){const t=Math.abs(e[n]-r[n]);t<=a&&t<l&&(r[n]=e[n],l=t,p.current||o===r[n]||(p.current=!0))}}if(l===1/0&&!p.current){const e=(i.clientX-o[0])/t.k,n=(i.clientY-o[1])/t.k;p.current=e**2+n**2>=9}return[r.x,r.y]},r=e=>{const t=i(e);p.current&&u(t)};function l(e){if(e.preventDefault(),a(),"control"===(null==h?void 0:h.type)){const t=i(e);if(p.current){const{source:e,target:n,edge:{view:o}}=h;null==g||g(e,n,{...o,vertices:d(h,t)})}}setTimeout((()=>{p.current=!1}),1)}function a(){document.removeEventListener("mousemove",r),document.removeEventListener("mouseup",l),u(null),m(null)}return document.addEventListener("mousemove",r),document.addEventListener("mouseup",l),a}),[h,t,m,g]),(0,o.useEffect)((()=>{if(!v)return;const e=e=>{p.current&&(e.stopPropagation(),e.preventDefault())};return document.body.addEventListener("click",e),()=>{document.body.removeEventListener("click",e)}}),[v]);const y=(0,o.useMemo)((()=>{const e="auto"===n.type?"polyline":n.type,t=function(e,t,n){if(!e||!(t||"control"!==e.type&&void 0!==(null==n?void 0:n.activePointIndex)))return null;const{type:o,source:i,target:r,edge:{view:l}}=e,{exitPosition:a,entryPosition:c,vertices:u}=l??{};if("control"===o){const n=d(e,t);return(0,s.V)(i.view,r.view,{exitPosition:a,entryPosition:c,vertices:n})}if(void 0!==(null==n?void 0:n.activePointIndex)){const e=n.relativePoints[n.activePointIndex];return(0,s.V)(i.view,r.view,"entry"===o?{exitPosition:a,entryPosition:e,vertices:u}:{exitPosition:e,entryPosition:c,vertices:u})}const[v,f]=t;return"entry"===o?(0,s.V)(i.view,{x:v,y:f,width:0,height:0},{exitPosition:a,vertices:u}):(0,s.V)({x:v,y:f,width:0,height:0},r.view,{entryPosition:c,vertices:u})}(h,r,f);return(0,a.S)(t,"curve"===e?n.curveType:"curveLinear",0,1)}),[r,f,h,n]);return i().createElement("path",{className:l()("editing-line",{editing:!(!h||!r)}),d:y,fill:"none",stroke:n.editingStrokeColor,markerStart:n.showStartArrow?n.$editingMarkerUrl:"",markerEnd:n.showEndArrow?n.$editingMarkerUrl:""})}},9978:(e,t,n)=>{n.d(t,{H:()=>r,s:()=>l});var o=n(8769),i=n.n(o);const r=i().createContext({rootRef:{current:null},smartConnectLineState:null,unsetHoverStateTimeoutRef:{current:null},hoverState:null,activeEditableLine:null,lineEditorState:null,setLineEditorState:()=>{},setActiveEditableLine:()=>{},setHoverState:()=>{},setSmartConnectLineState:()=>{}});function l(){return i().useContext(r)}},2722:(e,t,n)=>{n.d(t,{T:()=>v});var o=n(8769),i=n.n(o),r=n(9978),l=n(4197),a=n(3033);const c="data:image/svg+xml;base64,PCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSI1cHgiIGhlaWdodD0iNXB4IiB2ZXJzaW9uPSIxLjEiPjxwYXRoIGQ9Im0gMCAwIEwgNSA1IE0gMCA1IEwgNSAwIiBzdHJva2Utd2lkdGg9IjIiIHN0eWxlPSJzdHJva2Utb3BhY2l0eTowLjQiIHN0cm9rZT0iI2ZmZmZmZiIvPjxwYXRoIGQ9Im0gMCAwIEwgNSA1IE0gMCA1IEwgNSAwIiBzdHJva2U9IiMyOWI2ZjIiLz48L3N2Zz4=",s=5,d=8,u=s/2;function v(e){let{activeTarget:t,scale:n,disabled:c}=e;const{unsetHoverStateTimeoutRef:s,hoverState:u,setHoverState:v,smartConnectLineState:h,lineEditorState:m}=(0,r.s)(),g=(0,o.useCallback)((()=>{null!==s.current&&(clearTimeout(s.current),s.current=null)}),[s]),p=(0,o.useCallback)((()=>{g(),v((e=>void 0===(null==e?void 0:e.activePointIndex)?e:{...u,activePointIndex:void 0}))}),[u,v,g]),y=(0,o.useCallback)((()=>{s.current=setTimeout((()=>{v(null)}))}),[v,s]),w=!c&&u&&(!!h||(m?"entry"===m.type?u.cell===m.target:"exit"===m.type&&u.cell===m.source:!(0,l.Q)(u.cell,t)&&!function(e){return e&&("edge"===e.type||"multi"===e.type&&e.targets.some((e=>"edge"===e.type)))}(t))),x=a.XK,E=x/2;return i().createElement("g",{onMouseEnter:p,onMouseLeave:y},w&&i().createElement(i().Fragment,null,i().createElement("rect",{x:u.cell.view.x-E,y:u.cell.view.y-E,width:u.cell.view.width+x,height:u.cell.view.height+x,fill:"none",stroke:"transparent",strokeWidth:2*d/n,pointerEvents:"stroke"}),void 0!==u.activePointIndex&&i().createElement("circle",{cx:u.points[u.activePointIndex].x,cy:u.points[u.activePointIndex].y,r:d/n,fill:"lightgreen",fillOpacity:.5,pointerEvents:"none"}),u.points.map(((e,t)=>i().createElement(f,{key:t,index:t,point:e,scale:n,unsetActivePointIndex:p,unsetTimeout:g})))))}function f(e){let{index:t,point:n,scale:l,unsetTimeout:a,unsetActivePointIndex:v}=e;const{rootRef:f,smartConnectLineState:h,hoverState:m,setHoverState:g,setSmartConnectLineState:p,onConnect:y,lineEditorState:w,setLineEditorState:x,onChangeEdgeView:E}=(0,r.s)(),k=(0,o.useRef)(null);return(0,o.useEffect)((()=>{const e=k.current,n=o=>{"mousemove"===o.type&&(null==e||e.removeEventListener(o.type,n)),a(),g((e=>e&&e.activePointIndex!==t?{...m,activePointIndex:t}:e))};return null==e||e.addEventListener("mouseenter",n),null==e||e.addEventListener("mousemove",n),()=>{null==e||e.removeEventListener("mouseenter",n),null==e||e.removeEventListener("mousemove",n)}}),[m,t,g,a]),(0,o.useEffect)((()=>{if(w)return;const e=e=>{e.preventDefault(),e.stopPropagation();const n=f.current.getBoundingClientRect(),o=m.points[t];p({source:m.cell,from:[o.x,o.y],offset:[n.left,n.top],exitPosition:m.relativePoints[t]})},n=k.current;return null==n||n.addEventListener("mousedown",e),()=>{null==n||n.removeEventListener("mousedown",e)}}),[m,t,w,f,p]),(0,o.useEffect)((()=>{const e=e=>{if(e.preventDefault(),e.stopPropagation(),h)h.source!==(null==m?void 0:m.cell)&&(null==y||y(h.source,m.cell,h.exitPosition,m.relativePoints[m.activePointIndex])),p(null);else if(w){const e=m.relativePoints[m.activePointIndex],{type:t,source:n,target:o,edge:{view:i}}=w;"entry"===t?null==E||E(n,o,{...i,entryPosition:e}):null==E||E(n,o,{...i,exitPosition:e}),x(null)}},t=k.current;return null==t||t.addEventListener("mouseup",e),()=>{null==t||t.removeEventListener("mouseup",e)}}),[h,m,y,p,w,E,x]),i().createElement("g",{ref:k,onMouseLeave:v},i().createElement("circle",{cx:n.x,cy:n.y,r:d,fill:"transparent"}),i().createElement("image",{x:n.x-u/l,y:n.y-u/l,width:s/l,height:s/l,xlinkHref:c,preserveAspectRatio:"none"}))}},2202:(e,t,n)=>{n.d(t,{F:()=>u});var o=n(9575),i=n(8769),r=n.n(i),l=n(9978);const a="data:image/svg+xml;base64,PCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIyMnB4IiBoZWlnaHQ9IjIycHgiIHZlcnNpb249IjEuMSI+PGNpcmNsZSBjeD0iMTEiIGN5PSIxMSIgcj0iNyIgc3Ryb2tlPSIjZmZmIiBmaWxsPSIjMjliNmYyIi8+PGNpcmNsZSBjeD0iMTEiIGN5PSIxMSIgcj0iMyIgc3Ryb2tlPSIjZmZmIiBmaWxsPSJ0cmFuc3BhcmVudCIvPjwvc3ZnPg==",c="data:image/svg+xml;base64,PCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIyMnB4IiBoZWlnaHQ9IjIycHgiIHZlcnNpb249IjEuMSI+PGNpcmNsZSBjeD0iMTEiIGN5PSIxMSIgcj0iNyIgc3Ryb2tlPSIjZmZmIiBmaWxsPSIjMDFiZDIyIi8+PHBhdGggZD0ibSA4IDggTCAxNCAxNE0gOCAxNCBMIDE0IDgiIHN0cm9rZT0iI2ZmZiIvPjwvc3ZnPg==",s="data:image/svg+xml;base64,PCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIxOHB4IiBoZWlnaHQ9IjE4cHgiIHZlcnNpb249IjEuMSI+PGNpcmNsZSBjeD0iOSIgY3k9IjkiIHI9IjUiIHN0cm9rZT0iI2ZmZiIgZmlsbD0iIzI5YjZmMiIvPjwvc3ZnPg==",d=22;function u(e){let{scale:t}=e;const{rootRef:n,activeEditableLine:u,setLineEditorState:v}=(0,l.s)(),f=(0,i.useRef)(null),h=(0,i.useRef)(null),m=(0,i.useRef)([]);(0,i.useEffect)((()=>{const e=f.current,t=h.current;if(!e||!t||!u)return;const o=e=>t=>{t.stopPropagation(),t.preventDefault();const o=n.current.getBoundingClientRect();v({...u,offset:[o.left,o.top],from:[t.clientX,t.clientY],type:e})},i=o("exit"),r=o("entry");return e.addEventListener("mousedown",i),t.addEventListener("mousedown",r),()=>{e.removeEventListener("mousedown",i),t.removeEventListener("mousedown",r)}}),[u,n,v]);const g=(0,i.useMemo)((()=>{const e=null==u?void 0:u.edge.view;return null!=e&&e.exitPosition||null!=e&&e.entryPosition?function(e){const t=[];let n=e[0],o=1;for(;o<e.length;){const i=e[o],r=n.y===i.y,l=n.x===i.x;if(!r||!l){const e=r?"ns":"ew";t.push({direction:e,index:o-1,x:(n.x+i.x)/2,y:(n.y+i.y)/2})}n=i,o++}return t}(u.linePoints):[]}),[u]);(0,i.useEffect)((()=>{if(!u)return;const e=m.current,t=g.map((e=>(e=>t=>{t.stopPropagation(),t.preventDefault();const o=n.current.getBoundingClientRect();v({...u,offset:[o.left,o.top],from:[t.clientX,t.clientY],type:"control",control:e})})(e)));return e.forEach(((e,n)=>{null==e||e.addEventListener("mousedown",t[n])})),()=>{e.forEach(((e,n)=>{null==e||e.removeEventListener("mousedown",t[n])}))}}),[u,g,n,v]);const p=(0,i.useRef)(null);if((0,i.useEffect)((()=>{const e=p.current,t=e=>{e.stopPropagation(),e.preventDefault()};return null==e||e.addEventListener("click",t),()=>{null==e||e.removeEventListener("click",t)}}),[]),!u)return null;const{linePoints:y,edge:{view:w}}=u,{exitPosition:x,entryPosition:E}=w??{},k={width:d/t,height:d/t,preserveAspectRatio:"none",cursor:"pointer",pointerEvents:"fill"},b=y[0],I=y[y.length-1],C=d/t/2;return r().createElement("g",{ref:p},r().createElement("image",(0,o.A)({ref:f},k,{x:b.x-C,y:b.y-C,xlinkHref:x?c:a})),g.map(((e,t)=>r().createElement("image",(0,o.A)({key:t,ref:e=>{m.current[t]=e}},k,{x:e.x-C,y:e.y-C,xlinkHref:s,cursor:"ns"===e.direction?"row-resize":"col-resize"})))),r().createElement("image",(0,o.A)({ref:h},k,{x:I.x-C,y:I.y-C,xlinkHref:E?c:a})))}},1103:(e,t,n)=>{n.d(t,{X:()=>d});var o=n(8769),i=n.n(o),r=n(3373),l=n.n(r),a=n(8653),c=n(9978),s=n(693);function d(e){let{transform:t,options:n}=e;const[r,d]=(0,o.useState)(null),{hoverState:u,smartConnectLineState:v,setSmartConnectLineState:f}=(0,c.s)();(0,o.useEffect)((()=>{if(v)return document.addEventListener("mousemove",e),document.addEventListener("mouseup",n),o;function e(e){d([(e.clientX-t.x-v.offset[0])/t.k,(e.clientY-t.y-v.offset[1])/t.k])}function n(e){e.preventDefault(),o()}function o(){document.removeEventListener("mousemove",e),document.removeEventListener("mouseup",n),d(null),f(null)}}),[f,v,t]);const h=(0,o.useMemo)((()=>{const e="auto"===n.type?"polyline":n.type,t=function(e,t,n){if(!e||!t&&void 0===(null==n?void 0:n.activePointIndex))return null;const o=e.source.view;if(void 0!==(null==n?void 0:n.activePointIndex))return(0,s.V)(o,n.cell.view,{exitPosition:e.exitPosition,entryPosition:n.relativePoints[n.activePointIndex]});const[i,r]=t;return(0,s.V)(o,{x:i,y:r,width:0,height:0},{exitPosition:e.exitPosition})}(v,r,u);return(0,a.S)(t,"curve"===e?n.curveType:"curveLinear",0,1)}),[r,u,v,n]);return i().createElement("path",{className:l()("connect-line",{connecting:!(!v||!r)}),d:h,fill:"none",stroke:n.strokeColor,strokeWidth:n.strokeWidth,markerStart:n.showStartArrow?n.$markerUrl:"",markerEnd:n.showEndArrow?n.$markerUrl:""})}},3033:(e,t,n)=>{n.d(t,{Be:()=>g,CV:()=>o,HP:()=>r,Ie:()=>f,N8:()=>a,Ub:()=>m,VO:()=>v,XK:()=>E,XV:()=>h,Yt:()=>d,gx:()=>y,ld:()=>w,mF:()=>u,p6:()=>x,pC:()=>p,sS:()=>s,sz:()=>l,w1:()=>c,xc:()=>i});const o=Symbol.for("size-initialized"),i=Symbol.for("layout-initialized"),r=20,l=36,a=180,c=120,s=.5,d=2,u="gray",v=1,f=15,h=!1,m=!0,g=1,p=500,y=10,w=5,x=5,E=0},531:(e,t,n)=>{function o(e){return"node"===e.type}function i(e){return"decorator"===e.type}function r(e){return"node"===e.type}function l(e){return"edge"===e.type}function a(e){return"node"===e.type||"edge"===e.type}function c(e){return"node"===e.type||"decorator"===e.type&&"area"===e.decorator}function s(e,t){return"node"===e.type||!!t&&"decorator"===e.type&&"area"===e.decorator}function d(e){return"decorator"===e.type&&"text"===e.decorator}function u(e){return"decorator"===e.type&&"container"===e.decorator}function v(e){return!["manual",void 0].includes(e)}n.d(t,{Hs:()=>d,N:()=>o,OD:()=>v,WW:()=>l,bo:()=>s,mH:()=>i,nv:()=>a,o6:()=>c,t2:()=>u,vC:()=>r})},9386:(e,t,n)=>{n.d(t,{P:()=>i});var o=n(1030);function i(e){return"edge"===e.type?(0,o.pick)(e,["type","source","target","data"]):(0,o.pick)(e,["type","id","data"])}},227:(e,t,n)=>{n.d(t,{Y:()=>i});var o=n(4197);function i(e,t,n,i){const r=[];if(t){const n=new Set;for(const o of e)"edge"===o.type&&o.source===t.source.id&&n.add(o.target);for(const t of e)switch(t.type){case"node":n.has(t.id)&&r.push(t);break;case"decorator":i&&"text"!=t.decorator&&!n.has(t.id)||r.push(t);break;default:r.push(t)}}else switch(null==n?void 0:n.type){case"multi":{const t=new Map,i=new Set,l=new Set;for(const e of n.targets)"node"===e.type&&(i.add(e.id),l.add(e.id));for(const a of e)"node"===a.type?t.set(a.id,a):"edge"===a.type?i.has(a.source)?l.add(a.target):i.has(a.target)?l.add(a.source):(0,o.Q)(a,n)||r.push(a):(0,o.Q)(a,n)||r.push(a);for(const[e,n]of t)l.has(e)||r.push(n);break}case"node":{const t=new Map,o=new Set([n.id]);for(const i of e)"node"===i.type?t.set(i.id,i):"edge"===i.type?i.source===n.id?o.add(i.target):i.target===n.id?o.add(i.source):r.push(i):r.push(i);for(const[e,n]of t)o.has(e)||r.push(n);break}case"edge":for(const t of e)("edge"===t.type?(0,o.Q)(t,n):"node"===t.type&&(t.id===n.source||t.id===n.target))||r.push(t)}return r}},5114:(e,t,n)=>{n.d(t,{a:()=>i});var o=n(4197);function i(e,t){let{cells:n,activeTarget:i}=t;const r=n.filter((e=>(0,o.Q)(e,i)));if(0!==r.length)switch(e.key||e.keyCode||e.which){case"Backspace":case 8:case"Delete":case 46:return e.preventDefault(),e.stopPropagation(),{action:"delete-cells",cells:r}}}},2219:(e,t,n)=>{function o(e,t){let{transform:n,offset:o,onLassoing:i,onLassoed:r}=t;if(e.ctrlKey||e.button)return;e.stopPropagation();const l=[e.clientX,e.clientY],a=(e.clientX-o[0]-n.x)/n.k,c=(e.clientY-o[1]-n.y)/n.k;let s=!1;const d=(e,t)=>{const o=function(e){return[(e.clientX-l[0])/n.k,(e.clientY-l[1])/n.k]}(e);if(s||(s=o[0]**2+o[1]**2>=9),s){let[e,n]=o,l=a,s=c;e<0&&(l=a+e,e=-e),n<0&&(s=c+n,n=-n),(t?r:i)({x:l,y:s,width:e,height:n})}},u=e=>{d(e)},v=e=>{d(e,!0),s=!1,document.removeEventListener("mousemove",u),document.removeEventListener("mouseup",v)};document.addEventListener("mousemove",u),document.addEventListener("mouseup",v)}n.d(t,{F:()=>o})},1991:(e,t,n)=>{n.d(t,{_:()=>i});var o=n(531);function i(e,t,n){const i=t.filter((e=>(0,o.N)(e))),r=e.filter((e=>(0,o.t2)(e))).map((e=>e.id)),l=e.filter((e=>{const t=i.find((t=>t.id===e.id)),n=(null==t?void 0:t.containerId)&&r.includes(t.containerId);return(0,o.N)(e)&&!n}));l.forEach((e=>{const n=e.x,i=e.x+e.width,r=e.y,l=e.y+e.height,a=t.filter((e=>(0,o.t2)(e)));for(const t of a){const o=t.view.x,a=t.view.x+t.view.width,c=t.view.y,s=t.view.y+t.view.height;if(n>=o&&i<=a&&r>=c&&l<=s){e.containerCell=t;break}}}));let a=[];return a=l.filter((e=>{var t;const n=i.find((t=>t.id===e.id));return(null==n?void 0:n.containerId)!==(null===(t=e.containerCell)||void 0===t?void 0:t.id)})),a.length>0&&(null==n||n(a)),a}},3783:(e,t,n)=>{n.d(t,{C:()=>i});var o=n(531);function i(e,t){let{defaultNodeSize:n}=t;return(e??[]).map((e=>{var t,i;return!(0,o.vC)(e)||void 0!==(null===(t=e.view)||void 0===t?void 0:t.width)&&void 0!==(null===(i=e.view)||void 0===i?void 0:i.height)?e:{...e,view:{width:n[0],height:n[1],...e.view}}}))}},8185:(e,t,n)=>{function o(e,t){return e?!!t&&e.type===t.type&&("multi"===e.type?e.targets.length===t.targets.length&&e.targets.every((e=>t.targets.some((t=>o(e,t))))):"node"===e.type||"decorator"===e.type?e.id===t.id:e.source===t.source&&e.target===t.target):!t}n.d(t,{c:()=>o})},4197:(e,t,n)=>{n.d(t,{Q:()=>i});var o=n(8185);function i(e,t){return!!t&&("multi"===t.type?t.targets:[t]).some((t=>(0,o.c)(t,e)))}},908:(e,t,n)=>{n.d(t,{r:()=>i});var o=n(531);function i(e,t){let{canvasWidth:n,canvasHeight:i,scaleRange:r}=t,l=1/0,a=1/0,c=-1/0,s=-1/0,d=!0;for(const t of e)if(!(0,o.WW)(t)){d=!1;const{view:e}=t,n=e.x+e.width,o=e.y+e.height;e.x<l&&(l=e.x),n>c&&(c=n),e.y<a&&(a=e.y),o>s&&(s=o)}const u=c-l,v=s-a,f=r&&!d&&(u>n||v>i)?Math.max(Math.min(n/u,i/v,r[1]),r[0]):1;return{x:d?0:(n-u*f)/2-l*f,y:d?0:(i-v*f)/2-a*f,k:f}}},2098:(e,t,n)=>{n.d(t,{L:()=>u});var o=n(1030),i=n(3033),r=n(531),l=n(3783),a=n(908),c=n(6170),s=n(9127),d=n(8185);function u(e){let{cells:t,layout:n,previousCells:u,defaultNodeSize:v,canvasWidth:f,canvasHeight:h,scaleRange:m,transform:g,reason:p,parent:y,allowEdgeToArea:w}=e;const x="force"!==n&&"dagre"!==n,E=(0,l.C)(t,{defaultNodeSize:v}),k=[];let b=!1;const I=new Map;let C=!1;for(const e of u)(0,r.mH)(e)?C=!0:(0,r.N)(e)&&(C=!0,e[i.CV]&&I.set(e.id,e));const L=new Map;for(const e of E)if((0,r.N)(e)){L.set(e.id,e);const t=I.get(e.id);t&&(e.view.width=t.view.width,e.view.height=t.view.height,e[i.CV]=!0)}let S=!1;if("add-related-nodes"===p&&y){const e=new Set;for(const t of E)(0,r.WW)(t)&&t.source===y&&t.target!==y&&e.add(t.target);const t=L.get(y);if(void 0!==(null==t?void 0:t.view.x)&&void 0!==t.view.y){if(S=!0,x)for(const t of E)((0,r.N)(t)&&void 0===t.view.x||(0,r.N)(t)&&void 0===t.view.y)&&e.add(t.id);const n=[...e].map((e=>L.get(e))).filter(Boolean);let o;for(const e of n)void 0!==e.view.x&&void 0!==e.view.y?(!o||e.view.x>o.view.x)&&e.view.y>t.view.y&&(o=e):k.push(e);if(k.length>0&&x){let e,n;if(o)e=o.view.x+o.view.width+i.sz,n=o.view.y;else{const o=k.reduce(((e,t)=>e+t.view.width+i.sz),-i.sz);e=t.view.x-o/2+t.view.width/2,n=t.view.y+t.view.height+i.sz}for(const t of k)t.view.x=e,t.view.y=n,e+=t.view.width+i.sz}}}if(!S){let e=v[0],t=v[1];const n=[];let i=!1;for(const o of E)(0,r.N)(o)?(o.view.width>e&&(e=o.view.width),o.view.height>t&&(t=o.view.height),void 0===o.view.x||void 0===o.view.y?k.push(o):n.push(o)):(0,r.mH)(o)&&(i=!0);if(x){let e;C||(g=(0,a.r)((0,o.without)(E,...k),{canvasWidth:f,canvasHeight:h,scaleRange:m})),0===n.length||1===n.length&&!i?(k.push(...n),({getNodeView:e}=(0,s.C)({cells:E,allowEdgeToArea:w})),b=0===u.length||u.length===E.length&&u.every(((e,t)=>(0,d.c)(e,E[t])))):({getNodeView:e}=(0,c.k)({cells:E,fixedPosition:!0,allowEdgeToArea:w,center:[(f/2-g.x)/g.k,(h/2-g.y)/g.k]}));for(const t of E)if((0,r.N)(t)){const n=e(t.id);t.view.x=n.x,t.view.y=n.y}}}return{cells:E,updated:k,shouldReCenter:b}}},5748:(e,t,n)=>{n.d(t,{d:()=>l});var o=n(531),i=n(3033);function r(e,t,n){const o=e.findLastIndex(n)+1;return[...e.slice(0,o),t,...e.slice(o)]}const l=(a={cells:(e,t)=>{switch(t.type){case"drop-node":return r(e,t.payload,(e=>!("decorator"===e.type&&"text"===e.decorator)));case"drop-decorator":return"text"===t.payload.decorator?[...e,t.payload]:r(e,t.payload,(e=>"decorator"===e.type&&"area"===e.decorator));case"add-nodes":{const n=e.findLastIndex((e=>!("decorator"===e.type&&"text"===e.decorator)))+1;return[...e.slice(0,n),...t.payload,...e.slice(n)]}case"add-edge":{const n=e.findIndex((e=>"edge"===e.type&&e.source===t.payload.source&&e.target===t.payload.target));return-1===n?r(e,t.payload,(e=>"edge"===e.type||"decorator"===e.type&&"area"===e.decorator)):[...e.slice(0,n),t.payload,...e.slice(n+1)]}case"change-edge-view":{const n=e.findIndex((e=>"edge"===e.type&&e.source===t.payload.source&&e.target===t.payload.target));return-1===n?e:[...e.slice(0,n),{...e[n],view:{...e[n].view,...t.payload.view}},...e.slice(n+1)]}case"move-cells":{let n=!1;const o=e.map((e=>{const o=t.payload.find((t=>e.type===t.type&&e.id===t.id));return o?(n=!0,{...e,view:{...e.view,x:o.x,y:o.y}}):e}));return n?o:e}case"resize-cell":{const{type:n,id:o,width:i,height:r}=t.payload,l=e.findIndex((e=>e.type===n&&e.id===o));if(-1!==l){const t=e[l];return[...e.slice(0,l),{...t,view:{...t.view,width:i,height:r}},...e.slice(l+1)]}return e}case"update-cells":return t.payload;case"update-node-size":return e.map((e=>(0,o.N)(e)&&e.id===t.payload.id?{...e,[i.CV]:!0,view:t.payload.size?{...e.view,width:t.payload.size[0],height:t.payload.size[1]}:e.view}:e))}return e},layoutKey:(e,t)=>"update-node-size"===t.type?t.layoutKey:e},(e,t)=>Object.fromEntries(Object.entries(a).map((n=>{let[o,i]=n;return[o,i(e[o],t)]}))));var a},7099:(e,t,n)=>{n.d(t,{Y:()=>h});var o=n(8769),i=n.n(o),r=n(2588),l=n(6768),a=n(6308),c=n(6257),s=n(564),d=n(9575);const u=e=>o.createElement("svg",(0,d.A)({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24"},e),o.createElement("path",{d:"M12 0a.5.5 0 0 1 .5.5v2.013a9.5 9.5 0 0 1 8.987 8.988L23.5 11.5a.5.5 0 0 1 0 1h-2.013a9.5 9.5 0 0 1-8.987 8.987V23.5a.5.5 0 0 1-1 0v-2.013A9.5 9.5 0 0 1 2.514 12.5H.5a.5.5 0 0 1 0-1h2.013A9.5 9.5 0 0 1 11.5 2.514V.5A.5.5 0 0 1 12 0M3.514 11.5H7.5a.5.5 0 0 1 0 1H3.514a8.5 8.5 0 0 0 7.987 7.986L11.5 16.5a.5.5 0 0 1 1 0v3.986a8.5 8.5 0 0 0 7.986-7.986H16.5a.5.5 0 0 1 0-1h3.986A8.5 8.5 0 0 0 12.5 3.515V7.5a.5.5 0 0 1-1 0V3.514a8.5 8.5 0 0 0-7.986 7.987zm8.486-1a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3"})),v=e=>o.createElement("svg",(0,d.A)({xmlns:"http://www.w3.org/2000/svg",width:128,height:128,className:"icon",viewBox:"0 0 1024 1024"},e),o.createElement("path",{d:"M512 76.8A435.2 435.2 0 1 0 947.2 512 435.71 435.71 0 0 0 512 76.8m0 819.2a384 384 0 1 1 384-384 384 384 0 0 1-384 384"}),o.createElement("path",{d:"M744.448 486.4h-204.8V281.6a25.6 25.6 0 1 0-51.2 0v204.8h-204.8a25.6 25.6 0 0 0 0 51.2h204.8v204.8a25.6 25.6 0 0 0 51.2 0V537.6h204.8a25.6 25.6 0 0 0 0-51.2"})),f=e=>o.createElement("svg",(0,d.A)({xmlns:"http://www.w3.org/2000/svg",width:128,height:128,className:"icon",viewBox:"0 0 1024 1024"},e),o.createElement("path",{d:"M512 76.8A435.2 435.2 0 1 0 947.2 512 435.71 435.71 0 0 0 512 76.8m0 819.2a384 384 0 1 1 384-384 384 384 0 0 1-384 384"}),o.createElement("path",{d:"M744.448 486.4H280.064a25.6 25.6 0 1 0 0 51.2h464.384a25.6 25.6 0 0 0 0-51.2"}));function h(e){let{shadowRoot:t,scale:n,scaleRange:d,onZoomChange:h,onReCenter:m}=e;const g=(0,s.useCurrentTheme)(),p=(0,o.useMemo)((()=>(0,c.VC)()),[]),y=(0,o.useRef)(null),w=100*d[0],x=100*d[1],E=100*n,k=(0,o.useMemo)((()=>({formatter:e=>`${e}%`,placement:"left",getPopupContainer:()=>y.current})),[]),b=(0,o.useCallback)((()=>{h(Math.min(E+5,x))}),[x,h,E]),I=(0,o.useCallback)((()=>{h(Math.max(E-5,w))}),[w,h,E]);return i().createElement(r.Ay,{theme:{algorithm:"dark-v2"===g?l.A.darkAlgorithm:l.A.defaultAlgorithm}},i().createElement(c.N7,{container:t,autoClear:!0,cache:p,hashPriority:"high"},i().createElement("div",{className:"zoom-bar",ref:y},i().createElement("div",{className:"center-button",onClick:m,role:"button"},i().createElement(u,null)),i().createElement("div",{className:"zoom-slider"},i().createElement("div",{className:"zoom-button",role:"button",onClick:b},i().createElement(v,null)),i().createElement(a.A,{min:w,max:x,value:E,step:5,vertical:!0,included:!1,tooltip:k,onChange:h}),i().createElement("div",{className:"zoom-button",role:"button",onClick:I},i().createElement(f,null))))))}},9127:(e,t,n)=>{n.d(t,{C:()=>c});var o=n(1030),i=n(7586),r=n.n(i),l=n(8802),a=n(531);function c(e){let{cells:t,layoutOptions:n,allowEdgeToArea:i}=e;const{nodePadding:c,...s}={nodePadding:0,rankdir:"TB",ranksep:50,edgesep:10,nodesep:50,...(0,o.pick)(n,["nodePadding","rankdir","ranksep","edgesep","nodesep","align"])},d=(0,l.D)(c);if(!t.some(a.N))return{getNodeView:()=>null,nodePaddings:d};const u=new(r().graphlib.Graph);u.setGraph(s),u.setDefaultEdgeLabel((function(){return{}}));for(const e of t)i&&(0,a.o6)(e)||(0,a.N)(e)?u.setNode(e.id,{id:e.id,width:e.view.width+d[1]+d[3],height:e.view.height+d[0]+d[2]}):(0,a.WW)(e)&&u.setEdge(e.source,e.target);return r().layout(u),{getNodeView:e=>u.node(e),nodePaddings:d}}},6170:(e,t,n)=>{n.d(t,{k:()=>v});var o=n(1030),i=n(6149),r=n(4842),l=n(1945),a=n(9418),c=n(3854),s=n(7931),d=n(531),u=n(8802);function v(e){let{cells:t,layoutOptions:n,center:v,fixedPosition:f,allowEdgeToArea:h}=e;const{nodePadding:m,collide:g}={nodePadding:0,...(0,o.pick)(n,["nodePadding"]),collide:!1!==(null==n?void 0:n.collide)&&{radiusDiff:18,strength:1,iterations:1,...!0===(null==n?void 0:n.collide)?null:null==n?void 0:n.collide}},p=(0,u.D)(m),y=[],w=[],x=new Map;for(const e of t)if(h&&(0,d.o6)(e)||(0,d.N)(e)){const t={id:e.id,width:e.view.width+p[1]+p[3],height:e.view.height+p[0]+p[2],...f?{fx:e.view.x,fy:e.view.y}:null};y.push(t),x.set(t.id,t)}else(0,d.WW)(e)&&w.push({source:e.source,target:e.target});const E=(0,i.A)(w).id((e=>e.id)),k=(0,r.A)(y).force("link",E).force("x",(0,l.A)(null==v?void 0:v[0])).force("y",(0,a.A)(null==v?void 0:v[1])).force("charge",(0,c.A)());return g&&k.force("collide",(0,s.A)().radius((e=>Math.sqrt(e.width**2+e.height**2)/2+g.radiusDiff)).strength(g.strength).iterations(g.iterations)),k.stop(),function(e){e.tick(Math.ceil(Math.log(e.alphaMin())/Math.log(1-e.alphaDecay())))}(k),{getNodeView:e=>x.get(e),nodePaddings:p}}},693:(e,t,n)=>{n.d(t,{V:()=>s});var o=n(1030),i=n(8875),r=n(4059),l=n(3239),a=n(3033);const c=["right","top","left","bottom"];function s(e,t,n){var s;const u=(0,i.X)(),v=n.exitPosition??d(t,e),f=n.entryPosition??d(e,t),h=a.XK,m=h/2,g=e.x-m+v.x*(e.width+h),p=e.y-m+v.y*(e.height+h),y=t.x-m+f.x*(t.width+h),w=t.y-m+f.y*(t.height+h);if(null!==(s=n.vertices)&&void 0!==s&&s.length){const e=[{x:g,y:p},...n.vertices,{x:y,y:w}],t=e[1],o=e[2];t&&t.x!==g&&t.y!==p&&e.splice(1,0,t.x===o.x?{x:g,y:t.y}:{x:t.x,y:p});const i=e[e.length-2],r=e[e.length-3];return i&&i.x!==y&&i.y!==w&&e.splice(e.length-1,0,i.x===r.x?{x:y,y:i.y}:{x:i.x,y:w}),e}{var x,E;const n=(null===(x=u.find((e=>e.x===v.x&&e.y===v.y)))||void 0===x?void 0:x.d)??c,i=(null===(E=u.find((e=>e.x===f.x&&e.y===f.y)))||void 0===E?void 0:E.d)??c,a=[...n],s=[...i];g<y?((0,o.pull)(a,"left"),(0,o.pull)(s,"right")):((0,o.pull)(a,"right"),(0,o.pull)(s,"left")),p<w?((0,o.pull)(a,"top"),(0,o.pull)(s,"bottom")):((0,o.pull)(a,"bottom"),(0,o.pull)(s,"top"));const d=a[0]??n[0],m=s[0]??i[0],k="left"===d||"right"===d?v.y:v.x,b="left"===m||"right"===m?f.y:f.x;return(0,r.o)((0,l.T)(e,h),(0,l.T)(t,h),d,m,k,b)}}function d(e,t){return t.y+t.height<e.y?{x:.5,y:1}:t.y>e.y+e.height?{x:.5,y:0}:t.x<e.x?{x:1,y:.5}:{x:0,y:.5}}},3239:(e,t,n)=>{function o(e,t){return{x:e.x+e.width/2,y:e.y+e.height/2,width:e.width+t,height:e.height+t}}n.d(t,{T:()=>o})},8875:(e,t,n)=>{n.d(t,{G:()=>l,X:()=>r});const o=[{x:0,y:0,d:["top","left"]},{x:.5,y:0,d:["top"]},{x:1,y:0,d:["top","right"]},{x:0,y:.5,d:["left"]},{x:1,y:.5,d:["right"]},{x:0,y:1,d:["bottom","left"]},{x:.5,y:1,d:["bottom"]},{x:1,y:1,d:["bottom","right"]}],i=o.map((e=>({x:e.x,y:e.y})));function r(){return o}function l(){return i}},1819:(e,t,n)=>{n.d(t,{J:()=>r});var o=n(8769),i=n(8185);function r(e){let{rootRef:t,activeTarget:n,onActiveTargetChange:r}=e;const l=n??null,[a,c]=(0,o.useState)(l);(0,o.useEffect)((()=>{c((e=>(0,i.c)(e,l)?e:l))}),[l]);const s=(0,o.useRef)(!1);return(0,o.useEffect)((()=>{s.current?r(a):s.current=!0}),[a,r]),(0,o.useEffect)((()=>{if(!a)return;const e=e=>{e.composedPath().indexOf(t.current)<=0&&c(null)};return document.addEventListener("click",e),()=>{document.removeEventListener("click",e)}}),[a,t]),a}},1484:(e,t,n)=>{n.d(t,{g:()=>f});var o=n(8769),i=n(7566),r=n(9047),l=n(3033),a=n(531),c=n(908),s=n(6170),d=n(9127);const u=new Map([["center",.5],["left",0],["right",1],["top",0],["bottom",1]]);function v(e,t){if("string"==typeof e){const n=u.get(e);if(void 0!==n)return n;const o=e.match(/^(-?\d+(?:\.\d+)?)%$/);if(o)return Number(o[1])/100;console.error("Unexpected align origin %s:",t,e)}else{if("number"==typeof e)return e;console.error("Unexpected align origin %s, expected %s, received %s:",t,"string | number",typeof e,e)}return.5}function f(e){let{layout:t,layoutOptions:n,rootRef:u,cells:f,zoomable:h,zoomer:m,scaleRange:g,layoutKey:p,allowEdgeToArea:y,dispatch:w}=e;const[x,E]=(0,o.useState)("force"!==t&&"dagre"!==t),k=(0,o.useRef)(p),b=(0,o.useCallback)((()=>++k.current),[]),[I,C]=function(e){let{rootRef:t,cells:n,layoutInitialized:s,zoomable:d,zoomer:u,scaleRange:v}=e;const[f,h]=(0,o.useState)(!1);return(0,o.useEffect)((()=>{const e=t.current;if(!e||!s||f||!n.some((e=>(0,a.N)(e)||(0,a.mH)(e)))||n.some((e=>(0,a.N)(e)&&!e[l.CV])))return;const{k:o,x:m,y:g}=(0,c.r)(n,{canvasWidth:e.clientWidth,canvasHeight:e.clientHeight,scaleRange:d?v:void 0});u.transform((0,i.A)(e),new r.uV(o,m,g)),h(!0)}),[n,f,s,t,v,d,u]),(0,o.useEffect)((()=>{n.some((e=>(0,a.N)(e)||(0,a.mH)(e)))||h(!1)}),[n]),[f,h]}({rootRef:u,layoutInitialized:x,cells:f,zoomable:h,zoomer:m,scaleRange:g}),L=(0,o.useRef)(null);return(0,o.useEffect)((()=>{if(f.some((e=>(0,a.N)(e)&&!e[l.CV]))||0===f.length)return;if("force"!==t&&"dagre"!==t)return void E(!0);if(k.current!==p||(e=L.current,o=f.filter(a.nv),(null==e?void 0:e.length)===o.length&&e.every(((e,t)=>e===o[t]))))return;var e,o;let i,r;({getNodeView:i,nodePaddings:r}="force"===t?(0,s.k)({cells:f,layoutOptions:n,allowEdgeToArea:y}):(0,d.C)({cells:f,layoutOptions:n,allowEdgeToArea:y}));const c=function(e){const t=e??[.5,.5];return[v(t[0],"x"),v(t[1],"y")]}(null==n?void 0:n.alignOrigin),u=f.map((e=>{if(y&&(0,a.o6)(e)||(0,a.N)(e)){const t=i(e.id);return{...e,view:{...e.view,x:t.x-t.width*c[0]+r[3],y:t.y-t.height*c[1]+r[0]},[l.xc]:!0}}return e}));L.current=u.filter(a.nv),w({type:"update-cells",payload:u}),E(!0)}),[f,w,t,p,n]),{centered:I,setCentered:C,getNextLayoutKey:b}}},7531:(e,t,n)=>{n.d(t,{d:()=>c});var o=n(8769),i=n(3204),r=n(1030),l=n(531),a=n(3033);function c(e){let{cells:t,defaultEdgeLines:n,markerPrefix:c,lineConnector:u}=e;return(0,o.useMemo)((()=>{const e=[{strokeColor:a.mF}];let o=null;if(u){o={...d(),editingStrokeColor:"var(--palette-blue-5)",...(0,r.omitBy)(!0===u?{}:u,r.isUndefined)};const t=s({strokeColor:o.strokeColor},e);o.$markerUrl=`url(#${c}${t})`;const n=s({strokeColor:o.editingStrokeColor},e);o.$editingMarkerUrl=`url(#${c}${n})`}const v=new WeakMap;for(const o of t)if((0,l.WW)(o)){const t=i.__secret_internals.legacyDoTransform({edge:o},null==n?void 0:n.find((e=>(0,i.checkIfByTransform)(e,{edge:o}))))??{},l={...d(),...(0,r.omitBy)(t,r.isUndefined),...(0,r.omitBy)(o.view,r.isUndefined)};void 0===l.parallelGap&&(l.parallelGap=l.interactStrokeWidth);const a=s({strokeColor:l.strokeColor},e);l.$markerUrl=`url(#${c}${a})`,v.set(o,l)}return{lineConfMap:v,lineConnectorConf:o,markers:e}}),[t,n,u,c])}function s(e,t){let n=(0,r.findIndex)(t,e);return-1===n&&(n=t.push(e)-1),n}function d(){return{type:"auto",dashed:!1,strokeColor:a.mF,strokeWidth:a.VO,interactStrokeWidth:a.Ie,showStartArrow:a.XV,showEndArrow:a.Ub,animate:{useAnimate:!1,duration:a.Be}}}},8197:(e,t,n)=>{n.d(t,{H:()=>l});var o=n(8769),i=n(531),r=n(3033);function l(e){let{cells:t,layout:n,centered:l}=e;return(0,o.useMemo)((()=>l&&t.every((e=>!(0,i.N)(e)||e[r.CV]&&("force"!==n&&"dagre"!==n||e[r.xc])))),[t,l,n])}},8091:(e,t,n)=>{n.d(t,{f:()=>a});var o=n(8769),i=n(7566),r=n(9047),l=n(3033);function a(e){let{rootRef:t,zoomable:n,scrollable:a,pannable:c,draggable:s,ctrlDraggable:d,scaleRange:u,onSwitchActiveTarget:v}=e;const[f,h]=(0,o.useState)(!1),[m,g]=(0,o.useState)({k:1,x:0,y:0}),p=(0,o.useMemo)((()=>u??[l.sS,l.Yt]),[u]),y=(0,o.useMemo)((()=>(0,r.s_)()),[]);return(0,o.useEffect)((()=>{let e=!1;y.scaleExtent(n?p:[1,1]).on("start",(()=>{e=!1,h(!0)})).on("zoom",(t=>{e=!0,g(t.transform)})).on("end",(()=>{h(!1),e||null==v||v(null)})).filter((e=>("wheel"===e.type||(d?s||e.ctrlKey:!e.ctrlKey))&&!e.button))}),[v,p,n,y,d,s]),(0,o.useEffect)((()=>{if(d){const e=e=>{e.ctrlKey&&e.preventDefault()};return document.addEventListener("contextmenu",e,!0),()=>{document.removeEventListener("contextmenu",e,!0)}}}),[d]),(0,o.useEffect)((()=>{const e=t.current;if(!e)return;const o=(0,i.A)(e),r=()=>{o.on(".zoom",null).on(".zoom.custom",null).on("wheel",null)};if(n||a||c)return(n||a)&&o.on("wheel.zoom.custom",(e=>{e.ctrlKey||(e.stopImmediatePropagation(),a&&(e.preventDefault(),y.translateBy(o,e.wheelDeltaX/5,e.wheelDeltaY/5)))})),o.call(y).on("wheel",(e=>{e.preventDefault()})).on("dblclick.zoom",null),(s||d)&&c||o.on("mousedown.zoom",null),c||o.on("touchstart.zoom",null).on("touchmove.zoom",null).on("touchend.zoom",null),r;r()}),[d,s,c,t,a,n,y]),{grabbing:f,transform:m,zoomer:y,scaleRange:p}}},6237:(e,t,n)=>{n.d(t,{A:()=>a});var o=n(6758),i=n.n(o),r=n(935),l=n.n(r)()(i());l.push([e.id,'.zoom-bar{position:absolute;bottom:20px;right:20px;width:40px;scale:0.8}.zoom-slider,\n.center-button{width:100%;display:flex;align-items:center;border:1px solid var(--antd-background-color-base);border-radius:var(--larger-border-radius);box-shadow:var(--connected-overlay-shadow);background-color:var(--color-fill-bg-container-4)}.zoom-slider{height:140px;padding:8px 0;flex-direction:column}[role="button"]{cursor:pointer}.center-button{justify-content:center;margin-bottom:8px;height:40px}.center-button:hover{border-color:var(--antd-btn-default-hover-border-color)}.center-button path{fill:var(--antd-link-hover-color)}.center-button:hover path{fill:var(--palette-blue-7)}.zoom-button{font-size:16px;line-height:0}.zoom-button svg{width:1em;height:1em;fill:var(--antd-link-hover-color)}.zoom-slider .ant-slider-vertical{padding-inline:5px}.zoom-slider .ant-slider-vertical .ant-slider-rail{width:2px}.zoom-slider .ant-slider-vertical .ant-slider-handle{width:6px;height:6px;inset-inline-start:3px}.zoom-slider .ant-slider .ant-slider-handle:hover::before,\n.zoom-slider .ant-slider .ant-slider-handle:focus::before,\n.zoom-slider .ant-slider .ant-slider-handle::before{width:10px;height:10px;inset-inline-start:-2px}.zoom-slider .ant-slider .ant-slider-handle:hover::after,\n.zoom-slider .ant-slider .ant-slider-handle:focus::after,\n.zoom-slider .ant-slider .ant-slider-handle::after{width:6px;height:6px;inset-block-start:0;inset-inline-start:0}',""]);const a=l.toString()},3012:(e,t,n)=>{n.d(t,{A:()=>a});var o=n(6758),i=n.n(o),r=n(935),l=n.n(r)()(i());l.push([e.id,"*{box-sizing:border-box}:host{display:block;position:relative;overflow:hidden;--animation-dasharray:48;--stroke-dashoffset:96;--dasharray:4}:host,\n.root{width:100%;height:100%}:host([hidden]){display:none}.root{opacity:0}.root.ready{opacity:1}.root:focus{outline:none}@keyframes dashedAnimation{0%{stroke-dashoffset:var(--stroke-dashoffset)}to{stroke-dashoffset:0}}@keyframes solidAnimation{to{stroke-dashoffset:0}}.solid-animation{stroke-dasharray:var(--solid-length);stroke-dashoffset:var(--solid-length);animation:solidAnimation var(--time) linear infinite}.dashed-animation{animation:dashedAnimation var(--time) linear infinite}.decorator-area .area,\n.decorator-container .container{fill:rgba(119,141,195,0.1);stroke:none;stroke-width:0}.node,\n.decorator-text{overflow:visible}.cell.active .decorator-area .area,\n.cell.active .decorator-container .container,\n.cell:not(.read-only) .decorator-container .container:hover,\n.allowEdgeToArea .decorator-area .area:hover,\n.cell.active .line-active-bg{stroke:var(--palette-blue-5);stroke-dasharray:var(--dasharray);stroke-width:1}.container-active .decorator-container .container{stroke:var(--palette-blue-5);stroke-width:1}.cell:not(.read-only){-webkit-user-select:none;user-select:none}.resize-handle{cursor:nwse-resize;opacity:0}.resize-handle rect{fill:transparent;stroke:none}.resize-handle path{fill:none;stroke:var(--palette-gray-5);stroke-width:1.5}.cell.active .decorator-area .resize-handle,\n.decorator-area:hover .resize-handle,\n.decorator-container:hover .resize-handle{opacity:1}.connect-line{pointer-events:none}.connect-line:not(.connecting){display:none}.editing-line{pointer-events:none;stroke-dasharray:var(--dasharray);stroke-width:1}.editing-line:not(.editing){display:none}.line.dashed{stroke-dasharray:var(--dasharray)}.cell.active .decorator-text .text-container{outline:1px dashed var(--palette-blue-5)}.decorator-text .text-container{width:max-content;padding:0.5em}.decorator-text .text:focus{outline:none}.cell.faded{opacity:0.3}.cell.container-active{opacity:1}.cell .node{pointer-events:none}.cell .node > *{position:fixed;pointer-events:auto}.degraded{pointer-events:bounding-box}.degraded circle{fill:rgb(119,141,195)}.degraded text{text-anchor:middle;fill:var(--antd-text-color)}.cell.active .degraded circle,\n.cell.active .degraded text,\n.degraded:hover circle,\n.degraded:hover text{fill:var(--color-brand)}.decorator-container{--defaultSize:24px}.decorator-container .text-container{display:flex;align-items:center;justify-content:center;padding:0.5em;text-align:center;font-size:16px;background-color:rgba(119,141,195,0.6);overflow:hidden}.decorator-container .horizontal{height:max-content;width:100%}:is(.decorator-container .horizontal) .text{min-height:var(--defaultSize)}.decorator-container .vertical{width:max-content;height:100%;writing-mode:vertical-lr;text-orientation:upright;letter-spacing:4px}:is(.decorator-container .vertical) .text{min-width:var(--defaultSize)}",""]);const a=l.toString()}}]);
2
+ //# sourceMappingURL=6055.b4910896.js.map