@focus.matters/diagrams 0.0.10 → 0.1.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 (102) hide show
  1. package/dist/{DirectedPoint-aLZ8iXbb.js → DirectedPoint-BcpEj8ub.js} +2 -2
  2. package/dist/DirectedPoint-BcpEj8ub.js.map +1 -0
  3. package/dist/diagrams.css +1 -1
  4. package/dist/index-hTkL5cDr.js +12037 -0
  5. package/dist/index-hTkL5cDr.js.map +1 -0
  6. package/dist/index.es.js +8 -6
  7. package/dist/index.umd.js +5 -4
  8. package/dist/index.umd.js.map +1 -1
  9. package/dist/src/Diagrams/components/Canvas.d.ts +1 -0
  10. package/dist/src/Diagrams/components/extensions/RenderDiagramExtensions.d.ts +4 -0
  11. package/dist/src/Diagrams/components/extensions/RenderUIExtensions.d.ts +4 -0
  12. package/dist/src/Diagrams/components/extra/AlignmentSuggestions.d.ts +1 -0
  13. package/dist/src/Diagrams/components/extra/GatewayRender.d.ts +1 -0
  14. package/dist/src/Diagrams/components/extra/NodeGatewayRender.d.ts +6 -0
  15. package/dist/src/Diagrams/components/objects/EdgeLabels.d.ts +7 -0
  16. package/dist/src/Diagrams/components/objects/RenderEdge/EdgeMarker.d.ts +1 -0
  17. package/dist/src/Diagrams/components/objects/RenderEdge/buildEdgePath.d.ts +5 -0
  18. package/dist/src/Diagrams/components/objects/RenderEdge/index.d.ts +1 -0
  19. package/dist/src/Diagrams/components/objects/RenderEdge/types.d.ts +2 -1
  20. package/dist/src/Diagrams/components/objects/Shapes.d.ts +1 -0
  21. package/dist/src/Diagrams/components/objects/edgeLabelPlacement.d.ts +4 -0
  22. package/dist/src/Diagrams/custom/agent/edges/AgentEdge.d.ts +19 -1
  23. package/dist/src/Diagrams/custom/agent/nodes/AgentNode.d.ts +20 -1
  24. package/dist/src/Diagrams/custom/bpmn/BPMDiagram.d.ts +10 -1
  25. package/dist/src/Diagrams/custom/bpmn/bpmnEvents.d.ts +2 -1
  26. package/dist/src/Diagrams/custom/bpmn/config/BPMNElementCatalog.d.ts +26 -0
  27. package/dist/src/Diagrams/custom/bpmn/config/BPMNLabels.d.ts +27 -0
  28. package/dist/src/Diagrams/custom/bpmn/edges/BPMNEdge.d.ts +77 -0
  29. package/dist/src/Diagrams/custom/bpmn/extensions/BPMNArtifactTransformer.d.ts +5 -0
  30. package/dist/src/Diagrams/custom/bpmn/extensions/BPMNEventAttachments.d.ts +19 -0
  31. package/dist/src/Diagrams/custom/bpmn/extensions/BPMNGridSnap.d.ts +4 -2
  32. package/dist/src/Diagrams/custom/bpmn/extensions/BPMNLaneResizer.d.ts +1 -1
  33. package/dist/src/Diagrams/custom/bpmn/extensions/BPMNModelerExtension.d.ts +97 -0
  34. package/dist/src/Diagrams/custom/bpmn/extensions/BPMNNodeResizer.d.ts +31 -0
  35. package/dist/src/Diagrams/custom/bpmn/extensions/BPMNPropertyChangeEvent.d.ts +4 -0
  36. package/dist/src/Diagrams/custom/bpmn/extensions/BPMNResizeSuggester.d.ts +23 -0
  37. package/dist/src/Diagrams/custom/bpmn/nodes/BPMNEventDefinition.d.ts +28 -0
  38. package/dist/src/Diagrams/custom/bpmn/nodes/BPMNode.d.ts +9 -0
  39. package/dist/src/Diagrams/custom/bpmn/nodes/BlackBoxPoolNode.d.ts +17 -0
  40. package/dist/src/Diagrams/custom/bpmn/nodes/DataStoreNode.d.ts +14 -0
  41. package/dist/src/Diagrams/custom/bpmn/nodes/DocumentAnnotationNode.d.ts +19 -0
  42. package/dist/src/Diagrams/custom/bpmn/nodes/DocumentNode.d.ts +13 -0
  43. package/dist/src/Diagrams/custom/bpmn/nodes/EventNode.d.ts +82 -12
  44. package/dist/src/Diagrams/custom/bpmn/nodes/GateNode.d.ts +27 -2
  45. package/dist/src/Diagrams/custom/bpmn/nodes/Lanes/LaneScreenRenderer.d.ts +1 -1
  46. package/dist/src/Diagrams/custom/bpmn/nodes/Lanes/index.d.ts +30 -6
  47. package/dist/src/Diagrams/custom/bpmn/nodes/TaskNode.d.ts +108 -3
  48. package/dist/src/Diagrams/custom/bpmn/nodes/TextAnnotationNode.d.ts +75 -0
  49. package/dist/src/Diagrams/custom/bpmn/nodes/UnknownBPMNNode.d.ts +20 -1
  50. package/dist/src/Diagrams/custom/bpmn/ui/BPMNDiagramControls.d.ts +6 -0
  51. package/dist/src/Diagrams/custom/bpmn/ui/BPMNElementMenu.d.ts +11 -0
  52. package/dist/src/Diagrams/custom/bpmn/ui/BPMNIcon.d.ts +9 -0
  53. package/dist/src/Diagrams/custom/bpmn/ui/BPMNPropertiesPanel.d.ts +6 -0
  54. package/dist/src/Diagrams/custom/bpmn/ui/BPMNResizeHandle.d.ts +7 -0
  55. package/dist/src/Diagrams/custom/bpmn/ui/resolveToolbarMenuPlacement.d.ts +18 -0
  56. package/dist/src/Diagrams/custom/bpmn/ui/resolveVisibleEdgeToolbarAnchor.d.ts +4 -0
  57. package/dist/src/Diagrams/custom/communication/edges/CommunicationEdge.d.ts +1 -27
  58. package/dist/src/Diagrams/custom/editable/EditableLabel.d.ts +1 -1
  59. package/dist/src/Diagrams/custom/editable/EditableNode.d.ts +8 -2
  60. package/dist/src/Diagrams/store/Canvas.d.ts +16 -6
  61. package/dist/src/Diagrams/store/Diagram.d.ts +77 -19
  62. package/dist/src/Diagrams/store/elements/DEdgeLabelChangeEvent.d.ts +5 -0
  63. package/dist/src/Diagrams/store/elements/Edge.d.ts +58 -8
  64. package/dist/src/Diagrams/store/elements/EdgeLabel.d.ts +64 -0
  65. package/dist/src/Diagrams/store/elements/Events.d.ts +5 -5
  66. package/dist/src/Diagrams/store/elements/Gateway.d.ts +24 -4
  67. package/dist/src/Diagrams/store/elements/Node.d.ts +69 -7
  68. package/dist/src/Diagrams/store/extensions/DiagramExtension.d.ts +11 -1
  69. package/dist/src/Diagrams/store/extensions/DistancesBalancer.d.ts +7 -1
  70. package/dist/src/Diagrams/store/extensions/Dragger.d.ts +19 -4
  71. package/dist/src/Diagrams/store/extensions/EdgesDragger.d.ts +15 -4
  72. package/dist/src/Diagrams/store/extensions/History.d.ts +10 -2
  73. package/dist/src/Diagrams/store/extensions/Hotkeys.d.ts +4 -1
  74. package/dist/src/Diagrams/store/extensions/LabelsAligner.d.ts +21 -0
  75. package/dist/src/Diagrams/store/extensions/NodesAligner.d.ts +10 -3
  76. package/dist/src/Diagrams/store/extensions/NodesConnector.d.ts +32 -3
  77. package/dist/src/Diagrams/store/extensions/Priorities.d.ts +2 -1
  78. package/dist/src/Diagrams/store/extensions/Rules.d.ts +6 -1
  79. package/dist/src/Diagrams/store/extensions/Selector.d.ts +17 -4
  80. package/dist/src/Diagrams/store/extensions/StraightDrag.d.ts +3 -0
  81. package/dist/src/Diagrams/store/extensions/StraightLabelsDrag.d.ts +10 -0
  82. package/dist/src/Diagrams/store/extensions/nodePositionProposalRanking.d.ts +8 -0
  83. package/dist/src/Diagrams/store/routers/CurvedRouter.d.ts +13 -0
  84. package/dist/src/Diagrams/store/routers/EdgesRouter.d.ts +21 -0
  85. package/dist/src/Diagrams/store/routers/OrthogonalRouter.d.ts +16 -0
  86. package/dist/src/Diagrams/store/routers/StraightRouter.d.ts +13 -0
  87. package/dist/src/Diagrams/store/routers/cardinalAxisConstraint.d.ts +7 -0
  88. package/dist/src/Diagrams/store/routers/getEdgesRouter.d.ts +4 -0
  89. package/dist/src/Diagrams/store/routers/resolveConnectionCandidate.d.ts +22 -0
  90. package/dist/src/Diagrams/store/types.d.ts +16 -7
  91. package/dist/src/Diagrams/util/bpmn/applyBPMNImportPlan.d.ts +1 -0
  92. package/dist/src/Diagrams/util/bpmn/buildBPMNImportPlan.d.ts +1 -1
  93. package/dist/src/Diagrams/util/bpmn/index.d.ts +2 -1
  94. package/dist/src/Diagrams/util/bpmn/sanitizeId.d.ts +2 -0
  95. package/dist/src/Diagrams/util/bpmn/types.d.ts +1 -0
  96. package/dist/src/Diagrams/util/paths/orthogonalRouter.d.ts +2 -0
  97. package/dist/src/index.d.ts +8 -5
  98. package/package.json +1 -1
  99. package/dist/DirectedPoint-aLZ8iXbb.js.map +0 -1
  100. package/dist/index-B_tKoJcy.js +0 -7229
  101. package/dist/index-B_tKoJcy.js.map +0 -1
  102. package/dist/src/Diagrams/util/paths/findBestPathBetweenNodes.d.ts +0 -8
package/dist/index.umd.js CHANGED
@@ -1,6 +1,7 @@
1
- (function(I,w){typeof exports=="object"&&typeof module<"u"?w(exports,require("mobx-react-lite"),require("mobx"),require("react"),require("svg-path-bbox")):typeof define=="function"&&define.amd?define(["exports","mobx-react-lite","mobx","react","svg-path-bbox"],w):(I=typeof globalThis<"u"?globalThis:I||self,w(I.FocusMattersDiagrams={},I.mobxReactLite,I.mobx,I.React))})(this,(function(I,w,g,E){"use strict";var Kn=Object.defineProperty;var $a=(I,w,g)=>w in I?Kn(I,w,{enumerable:!0,configurable:!0,writable:!0,value:g}):I[w]=g;var o=(I,w)=>Kn(I,"name",{value:w,configurable:!0});var K=(I,w,g)=>$a(I,typeof w!="symbol"?w+"":w,g);var jt,$t,Bt,Nt;var Ue={exports:{}},Ot={};var pn;function Jn(){if(pn)return Ot;pn=1;var i=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function e(s,n,r){var a=null;if(r!==void 0&&(a=""+r),n.key!==void 0&&(a=""+n.key),"key"in n){r={};for(var c in n)c!=="key"&&(r[c]=n[c])}else r=n;return n=r.ref,{$$typeof:i,type:s,key:a,ref:n!==void 0?n:null,props:r}}return o(e,"jsxProd"),Ot.Fragment=t,Ot.jsx=e,Ot.jsxs=e,Ot}o(Jn,"requireReactJsxRuntime_production");var fn;function Qn(){return fn||(fn=1,Ue.exports=Jn()),Ue.exports}o(Qn,"requireJsxRuntime");var u=Qn();const X=class X{_data=[];constructor(t,e=!0){if(t||(t=[0,0,0,0]),Array.isArray(t)){if(t.length!==4)throw new Error("Invalid coordinates length");this._data=[...t]}else this._data=[...t._data];if(this.width<0){const s=this.width;this.x+=s,this.width=-s}if(this.height<0){const s=this.height;this.y+=s,this.height=-s}e&&g.makeAutoObservable(this)}get coordinates(){return new m(this.raw.slice(0,2))}get bottomLeft(){return new m([this.x,this.y+this.height])}get bottomMiddle(){return new m([this.x+this.width/2,this.y+this.height])}get bottomRight(){return new m([this.x+this.width,this.y+this.height])}get leftMiddle(){return new m([this.x,this.y+this.height/2])}get middle(){return new m([this.x+this.width/2,this.y+this.height/2])}get rightMiddle(){return new m([this.x+this.width,this.y+this.height/2])}get topLeft(){return this.coordinates}get topMiddle(){return new m([this.x+this.width/2,this.y])}get topRight(){return new m([this.x+this.width,this.y])}get size(){return new m(this.raw.slice(2,4))}get x(){return this.get(0)}get y(){return this.get(1)}get height(){return this.get(3)}get width(){return this.get(2)}set x(t){this.set(0,t)}set y(t){this.set(1,t)}set height(t){this.set(3,t)}set width(t){this.set(2,t)}get norm(){return this.size.substract(this.coordinates).norm}get length(){return this._data.length}get raw(){return g.toJS([...this._data])}get round(){return new X([Math.round(this.x),Math.round(this.y),Math.round(this.width),Math.round(this.height)])}get style(){return{width:this.width,height:this.height,left:this.x,top:this.y}}assign(t){if(t.length!==4)throw new Error("Invalid number of Dimensions");const e=t instanceof X?t:new X(t);return this.set(0,e.get(0)),this.set(1,e.get(1)),this.set(2,e.get(2)),this.set(3,e.get(3)),this}assignCoordinates(t){if(t.length!==2)throw new Error("Invalid number of Coordinates");const e=t instanceof m?t:new m(t);return this.set(0,e.get(0)),this.set(1,e.get(1)),this}assignDimensions(t){if(t.length!==2)throw new Error("Invalid number of Coordinates");const e=t instanceof m?t:new m(t);return this.set(2,e.get(0)),this.set(3,e.get(1)),this}bound(t){this.x=Math.min(t.x+t.width-this.width,Math.max(t.x,this.x)),this.y=Math.min(t.y+t.height-this.height,Math.max(t.y,this.y))}collides(t,e=!1){if(t instanceof X){const s=this.x-(e?1:0),n=this.x+this.width+(e?1:0),r=this.y-(e?1:0),a=this.y+this.height+(e?1:0),c=t.x,l=t.x+t.width,d=t.y,h=t.y+t.height;return!(n<=c||l<=s||a<=d||h<=r)}else{const s=this.x,n=this.x+this.width,r=this.y,a=this.y+this.height;return t.x>=s&&t.x<=n&&t.y>=r&&t.y<=a}}copy(){return new X([this.x,this.y,this.width,this.height])}divide(t){return this.set(0,this.get(0)/t),this.set(1,this.get(1)/t),this.set(2,this.get(2)/t),this.set(3,this.get(3)/t),this}edgeDistanceX(t){return this.x>t.x+t.width?-(this.x-t.x-t.width):t.x>this.x+this.width?t.x-this.x-this.width:0}edgeDistanceY(t){return this.y>t.y+t.height?-(this.y-t.y-t.height):t.y>this.y+this.height?t.y-this.y-this.height:0}get(t){return this._data[t]}inflate(t){return this.copy().translate(new m([-t,-t])).assignDimensions(this.size.sum(new m([2*t,2*t])))}multiply(t){return this.set(0,this.get(0)*t),this.set(1,this.get(1)*t),this.set(2,this.get(2)*t),this.set(3,this.get(3)*t),this}scale(t){return this.set(2,this.get(2)+t.get(0)),this.set(3,this.get(3)+t.get(1)),this}set(t,e){this._data[t]=e}substract(t){if(t.length!==4)throw new Error("Invalid number of Dimensions");const e=t instanceof X?t:new X(t);return this.set(0,this.get(0)-e.get(0)),this.set(1,this.get(1)-e.get(1)),this.set(2,this.get(2)-e.get(2)),this.set(3,this.get(3)-e.get(3)),this}sum(t){if(t instanceof m)this.set(0,this.get(0)+t.get(0)),this.set(1,this.get(1)+t.get(1));else{if(t.length!==4)throw new Error("Invalid number of Dimensions");const e=t instanceof X?t:new X(t);this.set(0,this.get(0)+e.get(0)),this.set(1,this.get(1)+e.get(1)),this.set(2,this.get(2)+e.get(2)),this.set(3,this.get(3)+e.get(3))}return this}toString(){return`(${this.x}, ${this.y}, ${this.width}, ${this.height})`}translate(t){return this.set(0,this.get(0)+t.get(0)),this.set(1,this.get(1)+t.get(1)),this}};o(X,"Dimensions");let b=X;const Ds=class Ds{constructor(t){this.originalEvent=t}originalEvent;get button(){switch(this.originalEvent.button){case 1:return"left";case 2:return"right";case 4:return"middle";case 8:return"back";case 16:return"forward"}return"none"}get position(){return new m(this.originalEvent,!1)}get x(){return this.originalEvent.clientX}get y(){return this.originalEvent.clientY}};o(Ds,"MouseInformation");let qe=Ds;const zs=class zs{constructor(t){this.src=t}src;_cancellable=!0;_cancelled=!1;_bubbles=!0;_spreads=!0;get bubbles(){return this._bubbles}get cancelled(){return this._cancelled}get spreads(){return this._spreads}cancellable(t){return this._cancellable=t,this}cancel(){this._cancellable&&(this._cancelled=!0)}stopPropagation(){this._bubbles=!1}stopImmediatePropagation(){this._spreads=!1,this.stopPropagation()}};o(zs,"DEvent");let fe=zs;const Ts=class Ts extends fe{};o(Ts,"DUIEvent");let Mt=Ts;const Fs=class Fs extends Mt{constructor(t,e){super(t),this.src=t,this.originalEvent=e,this.mouse=new qe(e)}src;originalEvent;mouse;get ctrl(){return this.originalEvent.ctrlKey}get edge(){return this.src.diagram?.getEdgeById(this.originalEvent.target?.closest(".edge")?.dataset.id||"")}get node(){const t=this.originalEvent.target,e=t instanceof globalThis.Element?t.closest(".diagram__node, .node__screenHitArea")?.dataset.id:void 0;if(e)return this.src.diagram?.getNodeById(e);if(t instanceof globalThis.Element&&t.closest(".edge")&&"clientX"in this.originalEvent&&"clientY"in this.originalEvent){const s=document.elementsFromPoint(this.originalEvent.clientX,this.originalEvent.clientY).find(n=>n.closest(".diagram__node"))?.closest(".diagram__node");return this.src.diagram?.getNodeById(s?.dataset.id||"")}}get shift(){return this.originalEvent.shiftKey}get target(){return this.originalEvent.target}};o(Fs,"DMouseEvent");let J=Fs;const Hs=class Hs extends J{};o(Hs,"DClickEvent");let me=Hs;const Gs=class Gs extends J{};o(Gs,"DDoubleClickEvent");let xe=Gs;const Rs=class Rs extends J{};o(Rs,"DMouseDownEvent");let ut=Rs;const Ys=class Ys extends J{};o(Ys,"DMouseUpEvent");let Q=Ys;const Ws=class Ws extends J{};o(Ws,"DMouseMoveEvent");let gt=Ws;const Vs=class Vs extends J{constructor(t,e){super(t,e),this.originalEvent=e}originalEvent;get directionX(){return this.originalEvent.deltaX<0?"left":this.originalEvent.deltaX>0?"right":"none"}get directionY(){return this.originalEvent.deltaY<0?"up":this.originalEvent.deltaY>0?"down":"none"}};o(Vs,"DWheelEvent");let Ze=Vs;const Xs=class Xs extends Mt{constructor(t,e){super(t),this.originalEvent=e}originalEvent;get code(){return this.originalEvent.code}get alt(){return this.originalEvent.altKey}get ctrl(){return this.originalEvent.ctrlKey}get shift(){return this.originalEvent.shiftKey}};o(Xs,"DKeyboardEvent");let Dt=Xs;const Us=class Us extends Dt{constructor(t,e){super(t,e),this.originalEvent=e}originalEvent};o(Us,"DKeyDownEvent");let kt=Us;const qs=class qs extends Dt{constructor(t,e){super(t,e),this.originalEvent=e}originalEvent};o(qs,"DKeyUpEvent");let ye=qs;const Zs=class Zs extends Dt{constructor(t,e){super(t,e),this.orignalEvent=e}orignalEvent};o(Zs,"DKeyPressEvent");let Ke=Zs;const Ks=class Ks extends Mt{};o(Ks,"DCanvasEvent");let zt=Ks;const Js=class Js extends zt{constructor(t,e,s,n){super(t),this.displacement=e,this.newScale=s,this.previousScale=n}displacement;newScale;previousScale};o(Js,"DScaleEvent");let Tt=Js;const Qs=class Qs extends zt{constructor(t,e,s){super(t),this.previousDisplacement=e,this.displacement=s}previousDisplacement;displacement};o(Qs,"DDisplaceEvent");let Je=Qs;const ti=class ti extends fe{};o(ti,"DChangeEvent");let Y=ti;const ei=class ei extends Y{constructor(t,e){super(t),e(this.resolve.bind(this))}callbacks=[];defer(t){this.callbacks.push(t)}async resolve(){return(await Promise.all(this.callbacks.map(t=>t()))).every(t=>t)}};o(ei,"DResetGraphEvent");let Qe=ei;const si=class si extends Y{};o(si,"DNodesConnectionEvent");let Ft=si;const ii=class ii extends Ft{constructor(t,e){super(t),this.origin=e}origin};o(ii,"DNodeConnectionIntentEvent");let ts=ii;const ni=class ni extends Ft{constructor(t,e,s){super(t),this.origin=e,this.target=s}origin;target};o(ni,"DNodesConnectActionEvent");let es=ni;const ri=class ri extends Y{};o(ri,"DNodeChangeTypeEvent");let we=ri;const ai=class ai extends Y{constructor(t,e){super(t),this.src=t,this.node=e}src;node};o(ai,"DDeleteNodeEvent");let Ht=ai;const oi=class oi extends Y{constructor(t,e){super(t),this.src=t,this.edge=e}src;edge};o(oi,"DDeleteEdgeEvent");let be=oi;const ci=class ci extends Mt{constructor(t,e){super(t),this.src=t,this.selected=e}src;selected};o(ci,"DSelectionEvent");let Gt=ci;const li=class li extends Gt{constructor(t,e){super(t,e),this.src=t}src};o(li,"DNodeSelectionEvent");let Rt=li;const di=class di extends Gt{constructor(t,e){super(t,e),this.src=t}src};o(di,"DEdgeSelectionEvent");let ve=di;const hi=class hi extends Y{constructor(t,e){super(t),this.src=t,this.originalEvent=e}src;originalEvent};o(hi,"DDragEvent");let nt=hi;const ui=class ui extends nt{constructor(t,e,s){super(t,s),this.src=t,this.midPoint=e,this.originalEvent=s}src;midPoint;originalEvent};o(ui,"DEdgeDragStartEvent");let Ee=ui;const gi=class gi extends nt{constructor(t,e,s){super(t,s),this.src=t,this.endpoint=e,this.originalEvent=s}src;endpoint;originalEvent};o(gi,"DEdgeEndpointDragStartEvent");let Me=gi;const pi=class pi{constructor(t,e){this.node=t,this.newBox=e,this._updated=e.copy()}node;newBox;_cancelled=!1;_updated;_lockX=null;_lockY=null;cancel(){this._cancelled=!0}get current(){return this._updated.copy()}get cancelled(){return this._cancelled}get(){return this._updated}lockX(){this._lockX=this._updated.x}lockY(){this._lockY=this._updated.y}update(t){this._updated=t,this._lockX!==null&&(this._updated.x=this._lockX),this._lockY!==null&&(this._updated.y=this._lockY)}updateX(t){this._lockX===null&&(this._updated.x=t)}updateY(t){this._lockY===null&&(this._updated.y=t)}};o(pi,"NodePositionProposal");let ke=pi;const fi=class fi extends nt{constructor(t,e,s){super(t,s),this.src=t,this.proposals=e}src;proposals};o(fi,"DDragNodeEvent");let pt=fi;const mi=class mi{constructor(t,e){this.point=t,this.movedAxis=e,this._updated=t.copy()}point;movedAxis;_updated;_lockX=null;_lockY=null;get current(){return this._updated.copy()}get(){return this._updated}lockX(){this._lockX=this._updated.x}lockY(){this._lockY=this._updated.y}update(t){this._updated=t.copy(),this._lockX!==null&&(this._updated.x=this._lockX),this._lockY!==null&&(this._updated.y=this._lockY)}updateX(t){this._lockX===null&&(this._updated.x=t)}updateY(t){this._lockY===null&&(this._updated.y=t)}};o(mi,"EdgePointPositionProposal");let _e=mi;const xi=class xi extends nt{constructor(t,e,s,n){super(t,n),this.src=t,this.proposals=e,this.movedAxis=s}src;proposals;movedAxis};o(xi,"DDragEdgeSegmentEvent");let Se=xi;async function tr(){return(await Promise.resolve().then(()=>La)).DirectedPoint}o(tr,"getDirectedClass");let ss=null;const N=class N{_data=[];constructor(t,e=!0){if(t||(t=[0,0]),Array.isArray(t)){if(t.length!==2)throw new Error("Invalid coordinates length");this._data=[...t]}else t instanceof N?this._data=[...t._data]:t instanceof J||t instanceof nt?this._data=[t.originalEvent.clientX,t.originalEvent.clientY]:t.clientX!==void 0?this._data=[t.clientX,t.clientY]:this._data=[0,0];e&&g.makeObservable(this,{_data:g.observable,set:g.action})}bound(t){return this.x=Math.min(t.get(2),Math.max(t.get(0),this.x)),this.y=Math.min(t.get(3),Math.max(t.get(1),this.y)),this}get abs(){return new N([Math.abs(this.x),Math.abs(this.y)])}assign(t){if(t.length!==2)throw new Error("Invalid number of coordinates");const e=t instanceof N?t:new N(t);return this.set(0,e.get(0)),this.set(1,e.get(1)),this}copy(t=!0){return new N(this,t)}distance(t){return this.copy().substract(t).norm}distanceManhattan(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)}divide(t){const e=t instanceof N?t.x:t,s=t instanceof N?t.y:t;return this.set(0,this.get(0)/e),this.set(1,this.get(1)/s),this}equals(t){return this.copy().substract(t).norm===0}get(t){return this._data[t]}get length(){return this._data.length}max(t){return new N([Math.max(t,this.x),Math.max(t,this.y)])}get nonObserved(){return new N(this,!1)}get raw(){return g.toJS([...this._data])}get round(){return new N([Math.round(this.x),Math.round(this.y)])}get half(){return this.copy().multiply(.5)}get norm(){return Math.sqrt(this.x**2+this.y**2)}get style(){return{left:this.x,top:this.y}}multiply(t){return typeof t=="number"?(this.set(0,this.get(0)*t),this.set(1,this.get(1)*t)):t instanceof N&&(this.set(0,this.get(0)*t.get(0)),this.set(1,this.get(1)*t.get(1))),this}set(t,e){return this._data[t]=e,this}snapToGrid(t,e="both"){return e!=="y"&&(this.x=Math.round(this.x/t)*t),e!=="x"&&(this.y=Math.round(this.y/t)*t),this}substract(t){if(t.length!==2)throw new Error("Invalid number of coordinates");const e=t instanceof N?t:new N(t);return this.set(0,this.get(0)-e.get(0)),this.set(1,this.get(1)-e.get(1)),this}sum(t){if(typeof t=="number")this.set(0,this.get(0)+t),this.set(1,this.get(1)+t);else{if(t.length!==2)throw new Error("Invalid number of coordinates");const e=t instanceof N?t:new N(t);this.set(0,this.get(0)+e.get(0)),this.set(1,this.get(1)+e.get(1))}return this}toDirectedPoint(t){if(ss===null){tr().then(n=>{ss=n});const s=this.copy(!1);return s.direction=t,s}const e=new ss(this);return e.direction=t,e}toDimensions(t){return new b([...this.raw,...t.raw])}get x(){return this.get(0)}get y(){return this.get(1)}set x(t){this.set(0,t)}set y(t){this.set(1,t)}toString(){return`(${this.x}, ${this.y})`}};o(N,"Coordinates");let m=N;function er(i){const t=[];let e=i;for(;e&&e!==Object;)t.push(e),e=Object.getPrototypeOf(e);return t}o(er,"getClassHierarchy");let _t=(jt=class{constructor(t){this.parent=t,g.makeObservable(this,{parent:g.observable,diagram:g.computed})}parent;callbacks=new Map;emit(t){const e=[];for(const s of er(t.constructor)){const n=this.callbacks.get(s);n&&e.push(...n)}e.sort((s,n)=>n.priority-s.priority);for(const{cb:s}of e)if(s(t),!t.spreads)return t;return t.bubbles&&this.parent?.emit(t),t}get diagram(){let t=this.parent;for(;t!==null&&!(t instanceof z);)t=t.parent;return t}onEvent(t,e,s=0){let n=this.callbacks.get(t);return n||(n=[],this.callbacks.set(t,n)),n.push({cb:e,priority:s}),()=>this.offEvent(t,e)}offEvent(t,e){const s=this.callbacks.get(t);s&&this.callbacks.set(t,s.filter(n=>n.cb!==e))}},o(jt,"Element"),jt);const yi=class yi extends _t{constructor(t){super(t),g.makeObservable(this,{_enable:g.observable,toggle:g.action}),this._enable=localStorage.getItem(`enable_${this.constructor.name}`)!=="false"}get diagram(){return this.parent}_enable=!0;get enabled(){return this._enable}disable(){this._enable=!1}enable(){this._enable=!0}toggle(t=!this._enable){this._enable=t,localStorage.setItem(`enable_${this.constructor.name}`,String(this._enable))}};o(yi,"DiagramExtension");let j=yi;const wi=class wi extends j{init(){g.makeObservable(this,{_enabled:g.observable,endPoint:g.observable,startPoint:g.observable}),this.diagram.canvas.onEvent(ut,this.handleMouseDown.bind(this),this.diagram.priorities.Mouse_Down_Measurer)}_enabled=!1;toggle(){this._enabled=!this._enabled}get enabled(){return this._enabled}endPoint=null;startPoint=null;get(){return this.startPoint?[this.startPoint,this.endPoint]:[]}getMeassurement(){return this.endPoint?.copy().substract(this.startPoint).norm}u=o(()=>{},"u");handleMouseDown(t){this._enabled&&(t.cancel(),t.stopImmediatePropagation(),this.u(),this.u=ot(B(this,"mousemove",this.handleMouseMove),B(this,"mouseup",this.handleMouseUp)),this.startPoint=this.diagram.canvas.inverseFit(new m(t)),this.endPoint=this.diagram.canvas.inverseFit(new m(t)))}handleMouseMove(t){this.startPoint&&this._enabled&&(this.endPoint=this.diagram.canvas.inverseFit(new m(t)))}handleMouseUp(){this.endPoint=null,this.startPoint=null}};o(wi,"Measurer");let Yt=wi;const de=class de extends m{constructor(t,e){super(Array.isArray(e)?e.slice(0,2):e),this.parent=t,g.makeObservable(this,{manualAxes:g.observable,mode:g.observable}),e instanceof de?(this.mode=e.mode,this.manualAxes=e.manualAxes):Array.isArray(e)&&e.length===3?(this.mode=e[2],this.manualAxes=this.mode==="manual"||this.mode==="static"?"both":"none"):Array.isArray(e)&&e.length>=4&&(this.mode=e[2],this.manualAxes=e[3])}parent;mode="auto";manualAxes="none";get manualX(){return this.mode==="manual"&&["x","both"].includes(this.manualAxes)}get manualY(){return this.mode==="manual"&&["y","both"].includes(this.manualAxes)}addManualAxis(t){return this.mode==="static"?this:(this.mode="manual",t==="both"||this.manualAxes==="both"?this.manualAxes="both":this.manualAxes==="none"?this.manualAxes=t:this.manualAxes!==t&&(this.manualAxes="both"),this)}hasManualAxis(t){return t==="x"?this.manualX:this.manualY}markStatic(){return this.mode="static",this.manualAxes="both",this}copy(){return new de(this.parent,[this.x,this.y,this.mode,this.manualAxes])}toString(t=!1){return t?`(${this.x}, ${this.y}): ${this.mode}/${this.manualAxes}`:super.toString()}};o(de,"EdgePoint");let A=de;const bi=class bi extends j{gridSize=50;init(){g.makeObservable(this,{gridSize:g.observable}),this.diagram.onEvent(pt,t=>{if(this._enable)for(const e of t.proposals){const s=new m([Math.round(e.newBox.coordinates.x/this.gridSize)*this.gridSize,Math.round(e.newBox.coordinates.y/this.gridSize)*this.gridSize]);e.update(new b([...s.raw,...e.newBox.size.raw])),e.lockX(),e.lockY()}},this.diagram.priorities.Drag_Node_Snap_To_Grid),this.diagram.onEvent(Se,t=>{if(this._enable)for(const e of t.proposals){const s=e.get().copy();s.snapToGrid(this.gridSize,t.movedAxis),e.update(s),t.movedAxis==="x"?e.lockY():e.lockX()}},this.diagram.priorities.Drag_Edge_Snap_To_Grid)}};o(bi,"GridSnap");let U=bi;const S=.001,sr=3,ir=1e6,nr=5e5;function C(i,t,e=sr){return Math.abs(i-t)<=e}o(C,"almostEqual");function Pe(i,t){return Math.abs(i-t)<=S}o(Pe,"strictlyEqual");function ft(i,t){return C(i.x,t.x)&&C(i.y,t.y)}o(ft,"samePoint");function R(i,t){return C(i.x,t.x)||C(i.y,t.y)}o(R,"axisAligned");function rr(i,t){return Pe(i.x,t.x)&&Pe(i.y,t.y)}o(rr,"strictlySamePoint");function is(i,t){return Pe(i.x,t.x)||Pe(i.y,t.y)}o(is,"strictlyAxisAligned");function rt(i,t){return ft(i,t)||!R(i,t)?null:C(i.y,t.y)?"horizontal":"vertical"}o(rt,"segmentDirection");function ns(i,t,e){if(C(i.x,t.x)&&C(t.x,e.x)||C(i.y,t.y)&&C(t.y,e.y))return!0;const s=(t.x-i.x)*(e.y-t.y)-(t.y-i.y)*(e.x-t.x);return Math.abs(s)<S}o(ns,"collinear");function ar(i){return i instanceof A?i.mode:"auto"}o(ar,"pointMode");function T(i,t){return new m([i,t],!1)}o(T,"rawPoint");function mn(i){switch(i){case"left":return{x:-1,y:0};case"right":return{x:1,y:0};case"up":return{x:0,y:-1};case"down":return{x:0,y:1}}}o(mn,"vectorFor");function St(i,t){const e=mn(t);return i.x*e.x+i.y*e.y}o(St,"dot");function or(i,t,e=ar(t)){return t instanceof A?(t.mode=e,t):new A(i,[t.x,t.y,e])}o(or,"asEdgePoint");function q(i,t,e,s="auto"){return new A(i,[t,e,s])}o(q,"makePoint");function xn(i){return i.getExtension(U)?.gridSize??50}o(xn,"getGridSize");function Wt(i,t){const e=i.parent.state.box,s=i.state.position;return T(e.x+s.x*e.width+(t?.x??0),e.y+s.y*e.height+(t?.y??0))}o(Wt,"endpointPoint");function W(i,t){const e=i.parent.state.box;return new b([e.x-t,e.y-t,e.width+t*2,e.height+t*2],!1)}o(W,"routingBox");function yn(i,t,e){return i>=t-S&&i<=e+S}o(yn,"coordinateWithinSpan");function cr(i,t,e,s){let n=Number.POSITIVE_INFINITY;for(const r of e){if(t==="right"||t==="left"){if(!yn(i.y,r.y-s,r.y+r.height+s))continue;const c=t==="right"?r.x-i.x:i.x-(r.x+r.width);c>S&&c<n&&(n=c);continue}if(!yn(i.x,r.x-s,r.x+r.width+s))continue;const a=t==="down"?r.y-i.y:i.y-(r.y+r.height);a>S&&a<n&&(n=a)}return Number.isFinite(n)?n:null}o(cr,"blockingDistance");function Ae(i,t,e,s,n){const r=cr(t,e,n,s),a=r!==null&&r<s*2?r/2:s,c=mn(e);return q(i,t.x+c.x*a,t.y+c.y*a)}o(Ae,"adaptiveLeadPoint");function lr(i,t,e,s,n){if(s.orientation==="right"&&n.orientation==="left"&&e.x>t.x||s.orientation==="left"&&n.orientation==="right"&&e.x<t.x){const r=(t.x+e.x)/2;return[q(i,r,t.y),q(i,r,e.y)]}if(s.orientation==="down"&&n.orientation==="up"&&e.y>t.y||s.orientation==="up"&&n.orientation==="down"&&e.y<t.y){const r=(t.y+e.y)/2;return[q(i,t.x,r),q(i,e.x,r)]}return null}o(lr,"facingLeadPoints");function dr(i,t,e,s){if(!is(i,t)||rr(i,t))return!1;const n={x:t.x-i.x,y:t.y-i.y};return St(n,e)>S&&St(n,s)<-S}o(dr,"directRouteIsValid");function wn(i){const t=[],e=new Set;for(const s of i){const n=s.toFixed(3);e.has(n)||(e.add(n),t.push(s))}return t}o(wn,"uniqueNumbers");function hr(i){const t=[];for(const e of i){const s=t.at(-1);s&&ft(s,e)||t.push(e)}return t}o(hr,"compactRawPoints");function bn(i,t,e){if(!R(i,t))return 1;if(C(i.x,t.x)){const l=i.x,d=Math.min(i.y,t.y),h=Math.max(i.y,t.y),x=l>e.x+S&&l<e.x+e.width-S,p=h>e.y+S&&d<e.y+e.height-S;return x&&p?1:0}const s=i.y,n=Math.min(i.x,t.x),r=Math.max(i.x,t.x),a=s>e.y+S&&s<e.y+e.height-S,c=r>e.x+S&&n<e.x+e.width-S;return a&&c?1:0}o(bn,"segmentCollisionPenalty");function ur(i,t,e){if(!R(i,t))return 1;if(C(i.x,t.x)){const l=i.x,d=Math.min(i.y,t.y),h=Math.max(i.y,t.y),x=C(l,e.x)||C(l,e.x+e.width),p=Math.min(h,e.y+e.height)-Math.max(d,e.y);return x&&p>S?1:0}const s=i.y,n=Math.min(i.x,t.x),r=Math.max(i.x,t.x),a=C(s,e.y)||C(s,e.y+e.height),c=Math.min(r,e.x+e.width)-Math.max(n,e.x);return a&&c>S?1:0}o(ur,"segmentBorderOverlapPenalty");function gr(i,t,e={}){let s=i.length,n=null;for(let r=0;r<i.length-1;r++){const a=i[r],c=i[r+1];if(!R(a,c))return Number.POSITIVE_INFINITY;const l=rt(a,c);if(r===0&&e.avoidFirstDirection&&l===e.avoidFirstDirection&&(s+=t.gridSize*10),r===0&&e.avoidFirstBacktrack){const h={x:c.x-a.x,y:c.y-a.y};if(St(h,e.avoidFirstBacktrack)<-S)return Number.POSITIVE_INFINITY}if(r===i.length-2&&e.avoidLastDirection&&l===e.avoidLastDirection&&(s+=t.gridSize*10),r===i.length-2&&e.avoidLastBacktrack){const h={x:a.x-c.x,y:a.y-c.y};if(St(h,e.avoidLastBacktrack)<-S)return Number.POSITIVE_INFINITY}s+=Math.abs(a.x-c.x)+Math.abs(a.y-c.y);const d=C(a.x,c.x)?"x":"y";n&&n!==d&&(s+=t.gridSize/4),n=d;for(const h of t.obstacleBoxes)s+=bn(a,c,h)*ir,s+=ur(a,c,h)*nr}return s}o(gr,"routeScore");function Ie(i,t,e){return e.obstacleBoxes.some(s=>bn(i,t,s)>0)}o(Ie,"segmentHitsAnyBox");function vn(i,t,e){return is(i,t)&&!Ie(i,t,e)}o(vn,"canCollapseToSegment");function Ce(i,t,e,s={}){if(ft(i,t))return[i];let n=null,r=Number.POSITIVE_INFINITY;const a=o(d=>{const h=hr(d),x=gr(h,e,s);x<r&&(n=h,r=x)},"push");R(i,t)&&a([i,t]),a([i,T(t.x,i.y),t]),a([i,T(i.x,t.y),t]);const c=wn([i.x,t.x,(i.x+t.x)/2,...e.laneBoxes.flatMap(d=>[d.x,d.x-e.gridSize,d.x+d.width,d.x+d.width+e.gridSize])]),l=wn([i.y,t.y,(i.y+t.y)/2,...e.laneBoxes.flatMap(d=>[d.y,d.y-e.gridSize,d.y+d.height,d.y+d.height+e.gridSize])]);for(const d of c)a([i,T(d,i.y),T(d,t.y),t]);for(const d of l)a([i,T(i.x,d),T(t.x,d),t]);for(const d of c)for(const h of l)a([i,T(d,i.y),T(d,h),T(t.x,h),t]),a([i,T(i.x,h),T(d,h),T(d,t.y),t]);return n??[i,t]}o(Ce,"routeBridge");function pr(i){const t=[];for(let e=0;e<i.length;e++){const s=i[e],n=i[e+1];if(s.manualAxes==="x"){const r=n?.manualAxes==="x"&&C(s.x,n.x)?[s,n]:[s];t.push({type:"line",direction:"vertical",coordinate:s.x,points:r}),e+=r.length-1;continue}if(s.manualAxes==="y"){const r=n?.manualAxes==="y"&&C(s.y,n.y)?[s,n]:[s];t.push({type:"line",direction:"horizontal",coordinate:s.y,points:r}),e+=r.length-1;continue}t.push({type:"point",point:s})}return t}o(pr,"manualRouteConstraints");function fr(i,t){return i?i.type==="point"?i.point:i.direction==="vertical"?T(i.coordinate,t.y):T(t.x,i.coordinate):t}o(fr,"constraintReferencePoint");function En(i,t,e){return i>t+S&&i<e-S}o(En,"valueInside");function Le(i,t,e,s,n,r){let a=e;const c=i==="x"?"y":"x",l=r.gridSize/2;for(const d of r.obstacleBoxes){const h=c==="x"?d.x:d.y,x=c==="x"?d.x+d.width:d.y+d.height,p=i==="x"?d.x:d.y,f=i==="x"?d.x+d.width:d.y+d.height;if(!En(t,h,x)||!En(a,p,f))continue;const y=n!==void 0?n-a:0,v=s-a,k=(p+f)/2;a=(Math.abs(y)>S?Math.sign(y):Math.abs(v)>S?Math.sign(v):a<k?-1:1)<0?p-l:f+l}return a}o(Le,"safeLineEndpointCoordinate");function mr(i,t,e,s,n){const r=i.points[0],a=i.points.at(-1),c=r?.copy()??q(s,0,0),l=a?.copy()??q(s,0,0);return c.parent=s,l.parent=s,i.direction==="vertical"?(c.addManualAxis("x"),l.addManualAxis("x"),c.x=i.coordinate,c.y=t.y,l.x=i.coordinate,l.y=e.y,n&&(c.y=Le("y",i.coordinate,c.y,e.y,r?.y,n),l.y=Le("y",i.coordinate,l.y,t.y,a?.y,n))):(c.addManualAxis("y"),l.addManualAxis("y"),c.x=t.x,c.y=i.coordinate,l.x=e.x,l.y=i.coordinate,n&&(c.x=Le("x",i.coordinate,c.x,e.x,r?.x,n),l.x=Le("x",i.coordinate,l.x,t.x,a?.x,n))),[c,l]}o(mr,"lineConstraintEndpoints");function xr(i,t){const e=new Map;return{copies:i.map(n=>{const r=n.copy();return r.parent=t,e.set(n,r),r}),copiesByOriginal:e}}o(xr,"copyRouteManualPoints");function yr(i,t,e){const s=t.get(i);if(s)return s;const n=i.copy();return n.parent=e,n}o(yr,"routePointCopy");function wr(i,t){return i.find(e=>e.mode==="static")??i.find(e=>t.has(e)&&e.mode==="manual")??i.find(e=>t.has(e))??i.find(e=>e.mode==="manual")??i[0]}o(wr,"pickPointFromDuplicateRun");function rs(i,t){const e=[];for(let s=0;s<i.length;){let n=s+1;for(;n<i.length&&ft(i[s],i[n]);)n+=1;e.push(wr(i.slice(s,n),t)),s=n}return e}o(rs,"removeAdjacentDuplicates");function Mn(i,t,e,s){return i.mode==="static"?i[e]:t.mode==="static"?t[e]:s.has(i)?i[e]:s.has(t)?t[e]:i[e]}o(Mn,"coordinateAnchor");function Vt(i,t){for(let e=0;e<i.length-1;e++){const s=i[e],n=i[e+1];if(C(s.x,n.x)){const r=Mn(s,n,"x",t);s.x=r,n.x=r}if(C(s.y,n.y)){const r=Mn(s,n,"y",t);s.y=r,n.y=r}}return i}o(Vt,"snapNearlyAlignedPairs");function kn(i,t,e){const s=[...i];let n=s.filter(r=>r.mode==="manual").length;for(let r=1;r<s.length-1;){const a=s[r],c=ns(s[r-1],a,s[r+1]),l=a.mode==="manual"&&t.has(a)&&n>e;if(a.mode==="manual"&&c&&n<=e){const d=s[r+1];if(r+2<s.length&&d.mode==="auto"&&!t.has(d)){s.splice(r+1,1);continue}const h=s[r-1];if(r-2>=0&&h.mode==="auto"&&!t.has(h)){s.splice(r-1,1),r=Math.max(1,r-1);continue}}if(a.mode==="static"||t.has(a)&&!l||!c){r+=1;continue}if(a.mode==="manual"&&n<=e){r+=1;continue}a.mode==="manual"&&(n-=1),s.splice(r,1)}return s}o(kn,"removeRedundantCollinearPoints");function as(i,t,e){const s=[...i];for(let n=0;n<s.length-3;){const r=s[n],a=s[n+1],c=s[n+2],l=s[n+3];if(!(R(r,a)&&R(a,c)&&R(c,l))||!vn(r,l,t)){n+=1;continue}if(a.mode!=="auto"||c.mode!=="auto"||e.has(a)||e.has(c)){n+=1;continue}s.splice(n+1,2)}return s}o(as,"collapseAutoDetours");function _n(i,t,e){const s=[...i];for(let n=!0;n;){n=!1;for(let r=0;r<s.length-3;r++){const a=s[r],c=s[r+1],l=s[r+2],d=s[r+3];if(c.mode==="auto"&&l.mode==="auto"&&!e.has(c)&&!e.has(l)&&R(a,c)&&R(c,l)&&R(l,d)&&vn(a,d,t)){s.splice(r+1,2),n=!0;break}}}return s}o(_n,"collapseAnyAutoRectangles");function br(i,t,e,s){const n=new A(null,[t.x,i.y,"auto"]),r=new A(null,[i.x,t.y,"auto"]),a=o(c=>{let l=0;return e&&R(e,c)&&(l+=1),s&&R(c,s)&&(l+=1),i.mode==="manual"&&e&&rt(e,i)===rt(i,c)&&(l-=2),t.mode==="manual"&&s&&rt(c,t)===rt(t,s)&&(l-=2),l},"score");return a(n)>=a(r)?n:r}o(br,"chooseCorner");function os(i,t){if(i.length<2)return i;const e=[i[0]];for(let s=1;s<i.length;s++){const n=e.at(-1),r=i[s];if(!is(n,r)){const a=e.length>=2?e[e.length-2]:void 0,c=s+1<i.length?i[s+1]:void 0,l=br(n,r,a,c);l.parent=t,e.push(l)}e.push(r)}return e}o(os,"ensureOrthogonalAdjacency");function Sn(i,t,e=new Set){let s=i.map(r=>or(t.parent,r));const n=s.some(r=>r.mode==="manual"&&r.manualAxes==="both")?1:0;for(let r=0;r<4;r++){const a=s.length;if(s=Vt(s,e),s=os(s,t.parent),s=Vt(s,e),s=rs(s,e),s=kn(s,e,n),s=as(s,t,e),s.length===a)break}return s=Vt(s,e),s=os(s,t.parent),s=rs(s,e),s=as(s,t,e),s=_n(s,t,e),s=kn(s,e,n),s.length>0&&(s[0].markStatic(),s.at(-1).markStatic()),s}o(Sn,"normalizeEdgePoints");function Pn(i,t){const e=i.findIndex((s,n)=>n>0&&n<i.length-1&&ft(s,t));e>=0&&i.splice(e,1)}o(Pn,"removeSameCoordinateInteriorPoint");function An(i,t,e,s){let n=[...i];if(n.length<2)return n;ft(n[1],e)?n[1]=e:(Pn(n,e),n.splice(1,0,e));const r=n.length-2;if(r<1)return n;ft(n[r],s)?n[r]=s:(Pn(n,s),n.splice(n.length-1,0,s));const a=new Set([e,s]);return n=Vt(n,a),n=os(n,t.parent),n=Vt(n,a),n=rs(n,a),n=as(n,t,a),n=_n(n,t,a),n.length>0&&(n[0].markStatic(),n.at(-1).markStatic()),n}o(An,"ensureEndpointLeadPresence");function vr(i,t,e,s,n){if(!e||!ns(i,t,e))return!1;const r={x:e.x-i.x,y:e.y-i.y};return St(r,s)>S&&!Ie(i,e,n)}o(vr,"canRemoveSourceLead");function Er(i,t,e,s,n){if(!i||!ns(i,t,e))return!1;const r={x:e.x-i.x,y:e.y-i.y};return St(r,s)<-S&&!Ie(i,e,n)}o(Er,"canRemoveTargetLead");function In(i,t,e,s){const n=[...i];return n.length>2&&vr(n[0],n[1],n[2],t,s)&&n.splice(1,1),n.length>2&&Er(n.at(-3),n.at(-2),n.at(-1),e,s)&&n.splice(n.length-2,1),n.length>0&&(n[0].markStatic(),n.at(-1).markStatic()),n}o(In,"compactRedundantEndpointLeads");function cs(i,t,e,s,n){const r=q(n.parent,Wt(i,e).x,Wt(i,e).y,"static"),a=Wt(t,s),c=q(n.parent,a.x,a.y,"static");if(dr(r,c,i.orientation,t.orientation))return[r,c];const l=lr(n.parent,r,c,i,t),d=l?.[0]??Ae(n.parent,r,i.orientation,n.gridSize,[W(t,0)]),h=l?.[1]??Ae(n.parent,c,t.orientation,n.gridSize,[W(i,0)]),x=new Set([d,h]),p=Ce(d,h,n,{avoidFirstBacktrack:i.orientation,avoidLastBacktrack:t.orientation}),f=Sn([r,...p,c],n,x);return In(An(f,n,d,h),i.orientation,t.orientation,n)}o(cs,"routeAuto");function Mr(i,t,e,s,n,r=null){const a=xn(i),c={gridSize:a,obstacleBoxes:[W(t,0),W(e,0)],laneBoxes:[W(t,a/2),W(e,a/2)],parent:r};return cs(t,e,s,n,c)}o(Mr,"routeOrthogonalBetweenGateways");function Cn(i,t,e=[],s){const n=xn(i),r={gridSize:n,obstacleBoxes:[W(t.from,0),W(t.to,0)],laneBoxes:[W(t.from,n/2),W(t.to,n/2)],parent:t},a=t.steps.filter((G,it)=>it>0&&it<t.steps.length-1&&G.mode==="manual");if(a.length===0)return cs(t.from,t.to,t.state.displacementStart,t.state.displacementEnd,r);const c=Wt(t.from,t.state.displacementStart),l=Wt(t.to,t.state.displacementEnd),d=q(r.parent,c.x,c.y,"static"),h=q(r.parent,l.x,l.y,"static"),x=Ae(r.parent,d,t.from.orientation,n,[W(t.to,0)]),p=Ae(r.parent,h,t.to.orientation,n,[W(t.from,0)]),{copies:f,copiesByOriginal:y}=xr(a,r.parent),v=e.map(G=>yr(G,y,r.parent)),k=new Set([x,p,...v]),$=pr(f),M=[d,x];let _=x;for(let G=0;G<$.length;G++){const it=$[G],ge=_ instanceof A&&_.mode==="manual"?rt(M.at(-2),_)??void 0:void 0;if(it.type==="point"){const gn=Ce(_,it.point,r,{avoidFirstDirection:ge,avoidFirstBacktrack:G===0?t.from.orientation:void 0});M.push(...gn.slice(1)),_=it.point;continue}const dt=fr($[G+1],p);let[ht,pe]=mr(it,_,dt,r.parent,r);if(Ie(ht,pe,r))continue;const Xe=Ce(_,ht,r,{avoidFirstDirection:ge,avoidFirstBacktrack:G===0?t.from.orientation:void 0});M.push(...Xe.slice(1),pe),_=pe}const H=_ instanceof A&&_.mode==="manual"?rt(M.at(-2),_)??void 0:void 0,P=Ce(_,p,r,{avoidFirstDirection:H,avoidLastDirection:rt(p,h)??void 0,avoidLastBacktrack:t.to.orientation});M.push(...P.slice(1),h);const O=Sn(M,r,k),L=In(An(O,r,x,p),t.from.orientation,t.to.orientation,r);return L.some(G=>G.mode==="manual")?L:cs(t.from,t.to,t.state.displacementStart,t.state.displacementEnd,r)}o(Cn,"routeOrthogonalEdge");const vi=class vi extends _t{state;constructor(t,e){super(t),this.state={allowDisplace:!0,stroke:"transparent",strokeWidth:10,radius:5,incomingEdges:[],outgoingEdges:[],position:new m,...e},g.makeObservable(this,{addIncomingEdge:g.action,addOutgoingEdge:g.action,state:g.observable,removeIncomingEdge:g.action,removeOutgoingEdge:g.action})}addIncomingEdge(t){this.state.incomingEdges.find(e=>e.id===t.id)||this.state.incomingEdges.push(t)}addOutgoingEdge(t){this.state.outgoingEdges.find(e=>e.id===t.id)||(this.state.outgoingEdges.push(t),t.steps.length===0&&this.updateEdges())}canConnect(t){return(this.state.maxIncomingConnections===void 0||this.state.maxIncomingConnections>this.state.incomingEdges.length)&&!this.state.incomingEdges.find(e=>e.from===t)}connectionDisplacement(t){return this.direction==="horizontal"&&Math.abs(t.y-this.coordinates.y)>10?new m([0,t.y-this.coordinates.y]):this.direction==="vertical"&&Math.abs(t.x-this.coordinates.x)>10?new m([t.x-this.coordinates.x,0]):new m([0,0])}connectionDistance(t){if(this.direction==="vertical"){const s=Math.abs(this.coordinates.y-t.y);return s<20?Math.abs(this.coordinates.x-t.x)+s**5:1/0}const e=Math.abs(this.coordinates.x-t.x);return e<20?Math.abs(this.coordinates.y-t.y)+e**5:1/0}removeIncomingEdge(t){for(let e=this.state.incomingEdges.length-1;e>=0;e--)this.state.incomingEdges[e].id===t.id&&this.state.incomingEdges.splice(e,1)}removeOutgoingEdge(t){for(let e=this.state.outgoingEdges.length-1;e>=0;e--)this.state.outgoingEdges[e].id===t.id&&this.state.outgoingEdges.splice(e,1)}get coordinates(){return this.state.position.copy().multiply(this.parent.box.size).sum(this.parent.coordinates)}get fill(){return this.state.fill}get diagram(){return this.parent.diagram}get incomingEdges(){return[...this.state.incomingEdges]}get outgoingEdges(){return[...this.state.outgoingEdges]}get radius(){return this.state.radius}get relativePosition(){return this.state.position.copy()}get stroke(){return this.state.stroke}get strokeWidth(){return this.state.strokeWidth}get id(){return this.state.id}get direction(){return["down","up"].includes(this.state.orientation)?"vertical":"horizontal"}get orientation(){return this.state.orientation}recomputeConnectedEdge(t,e){t.setSteps(Cn(this.diagram,t))}updateEdges(){for(const t of this.state.incomingEdges)this.recomputeConnectedEdge(t,"to");for(const t of this.state.outgoingEdges)this.recomputeConnectedEdge(t,"from")}get remainingSlots(){return this.state.maxOutgoingConnections-this.state.outgoingEdges.length}deserialize(t){this.state.fill=t.fill,this.state.id=t.id,this.state.orientation=t.orientation,this.state.radius=t.radius,this.state.stroke=t.stroke,this.state.strokeWidth=t.strokeWidth,this.state.position.assign(t.coordinates),t.outEdges.forEach(e=>{const s=this.diagram.getClass(e.class);if(!s)throw new Error(`Unknown edge class '${e.class}' on gateway '${this.id}'.`);const n=new s(this,{from:this});this.diagram.getNodeById(e.toParentId)&&n.deserialize(e)})}serialize(){const{fill:t,id:e,orientation:s,radius:n,stroke:r,strokeWidth:a,state:{position:{raw:c}}}=this,l=this.outgoingEdges.map(d=>d.serialize());return{coordinates:c,fill:t,id:e,orientation:s,radius:n,stroke:r,strokeWidth:a,outEdges:l,class:this.constructor.name}}};o(vi,"Gateway");let mt=vi;const Ei=class Ei{_data=new Set;constructor(){g.makeAutoObservable(this)}add(...t){for(const e of t)this._data.add(e)}delete(t){this._data.delete(t)}toggle(t){this._data.has(t)?this.delete(t):this.add(t)}get string(){return[...this._data].join(" ")}};o(Ei,"ClassList");let ls=Ei,je=($t=class extends _t{_gateways=new Map;state;classList=new ls;get selected(){return this.state.selected}constructor(t,e){super(t),this.state={...e,box:e.box??new b([0,0,100,80]),zIndex:e.zIndex??100},this.classList.add("diagram__node"),g.makeObservable(this,{state:g.observable,selected:g.computed,_gateways:g.observable,setState:g.action}),this.initializeGateways()}canSelect(){return!this.state.selected&&this.state.selectable!==!1}canUnselect(){return!!this.state.selected}setDiagram(t){this.parent=t}setState(t,e){this.state[t]=e}initializeGateways(){this._gateways.set("left",new mt(this,{maxIncomingConnections:1/0,maxOutgoingConnections:1/0,id:"left",orientation:"left",position:new m([0,.5])})),this._gateways.set("right",new mt(this,{maxIncomingConnections:1/0,maxOutgoingConnections:1/0,id:"right",orientation:"right",position:new m([1,.5])})),this._gateways.set("up",new mt(this,{maxIncomingConnections:1/0,maxOutgoingConnections:1/0,id:"up",orientation:"up",position:new m([.5,0])})),this._gateways.set("down",new mt(this,{maxIncomingConnections:1/0,maxOutgoingConnections:1/0,id:"down",orientation:"down",position:new m([.5,1])}))}get box(){return this.state.box.copy()}get coordinates(){return this.box.coordinates}displace(t){this.state.box.sum([...t.raw,0,0])}get id(){return this.state.id}get gateways(){return[...this._gateways.values()]}dragEventMouseStartPosition=null;dragEventStartPosition=null;getGateway(t){return this._gateways.get(t)}setDimentions(t){this.state.box.assignDimensions(t)}updateConnectedEdges(){const t=new Set;for(const e of this._gateways.values())e.incomingEdges.forEach(s=>t.add(s)),e.outgoingEdges.forEach(s=>t.add(s));t.forEach(e=>e.from.recomputeConnectedEdge(e,"from"))}setPosition(t,e){const s=new b(this.state.box.raw,!1);this.state.box.assignCoordinates(t).bound(new b([0,0,...this.diagram.canvas.size.raw],!1)),e?.updateConnectedEdges!==!1&&s.substract(this.state.box).norm&&this.updateConnectedEdges()}deserialize(t){this.state.box.assign(t.box),this.state.id=t.id,this.state.label=t.label,this.state.movable=t.movable,this.state.selectable=t.selectable,this.state.fill=t.fill,this.state.labelFontSize=t.labelFontSize,this.state.stroke=t.stroke,this.state.strokewWidth=t.strokewWidth,t.gateways.forEach(e=>{const s=this._gateways.get(e.id)?.incomingEdges||[],n=this.diagram?.getClass(e.class);if(!n)throw new Error(`Unknown gateway class '${e.class}' on node '${this.id}'.`);this._gateways.set(e.id,new n(this,{id:e.id}));for(const r of s)this._gateways.get(e.id)?.addIncomingEdge(r)}),t.gateways.forEach(e=>{this._gateways.get(e.id)?.deserialize(e)}),this._gateways.forEach(e=>e.outgoingEdges.forEach(s=>{this.diagram?.connectWithEdge(s.from,s.to,s)}))}serialize(){const{box:{raw:t},id:e,label:s,movable:n,selectable:r,fill:a,labelFontSize:c,selected:l,stroke:d,strokewWidth:h}=this.state,x=this.gateways.map(p=>p.serialize());return{box:t,id:e,label:s,movable:n,selectable:r,selected:l,gateways:x,fill:a,labelFontSize:c,stroke:d,strokewWidth:h,class:this.constructor.name}}RenderOverlay=null;RenderScreen=null},o($t,"Node"),$t);const he=class he{static getInstance(){return this.instance||(this.instance=new he),this.instance}x=0;y=0;get coordinates(){return new m([this.x,this.y])}constructor(){g.makeAutoObservable(this),document.addEventListener("mousemove",t=>{g.runInAction(()=>{this.x=t.clientX,this.y=t.clientY})})}};o(he,"Mouse"),K(he,"instance",null);let xt=he,kr=Number.MIN_SAFE_INTEGER;const Mi=class Mi extends _t{constructor(t,e){super(t),this.state=e,g.makeObservable(this,{state:g.observable,setSteps:g.action,arrowHeadEnd:g.computed,arrowHeadStart:g.computed,from:g.computed,hasManualSteps:g.computed,pathType:g.computed,steps:g.computed,stroke:g.computed,strokeWidth:g.computed,setState:g.action})}state;id=String(kr++);get arrowHeadEnd(){return this.state.arrowHeadEnd}get arrowHeadStart(){return this.state.arrowHeadStart}get from(){return this.state.from}get hasManualSteps(){return this.state.steps.find(t=>t.mode==="manual")}get lineStyle(){return this.state.lineStyle}get pathType(){return this.state.pathType}get steps(){return this.state.steps}get stroke(){return this.state.stroke}get strokeWidth(){return this.state.strokeWidth}collides(t){for(let e=0;e<this.steps.length-1;e++){const s=this.steps[e],n=this.steps[e+1];if(new b([...s.raw,...n.copy().substract(s).raw]).collides(t))return!0}return!1}setState(t,e){this.state[t]=e}setSteps(t){this.state.steps=t.map(e=>e instanceof A?e:new A(this,e)),this.state.steps[0].markStatic(),this.state.steps.at(-1).markStatic()}get to(){return this.state.to}deserialize(t){this.state.arrowHeadEnd=t.arrowHeadEnd,this.state.arrowHeadStart=t.arrowHeadStart,this.state.lineStyle=t.lineStyle,this.state.pathType=t.pathType,this.state.stroke=t.stroke,this.state.strokeWidth=t.strokeWidth,this.state.displacementEnd=t.displacementEnd?new m(t.displacementEnd):void 0,this.state.displacementStart=t.displacementStart?new m(t.displacementStart):void 0,this.state.steps=t.steps.map(e=>new A(this,e)),this.state.to=this.state.from.diagram.getNodeById(t.toParentId).getGateway(t.to),this.state.from.diagram.addEdge(this)}serialize(){const{arrowHeadEnd:t,arrowHeadStart:e,lineStyle:s,pathType:n,steps:r,stroke:a,strokeWidth:c,to:{id:l,parent:{id:d}}}=this;return{arrowHeadEnd:t,arrowHeadStart:e,displacementEnd:this.state.displacementEnd?.raw,displacementStart:this.state.displacementStart?.raw,lineStyle:s,pathType:n,steps:r.map(h=>[...h.raw,h.mode,h.manualAxes]),stroke:a,strokeWidth:c,to:l,toParentId:d,class:this.constructor.name}}dragStart(t,e){e.nativeEvent.stopImmediatePropagation(),this.emit(new Ee(this,t,e))}dragEndpoint(t,e){e.nativeEvent.stopImmediatePropagation(),this.emit(new Me(this,t,e))}};o(Mi,"Edge");let Pt=Mi;const Ln={};function ds(i,t,e=[]){let s=Ln[t]||0;for(;e.includes(`${t}${s}`)||i.getNodeById(`${t}${s}`);)s++;return Ln[t]=s+1,`${t}${s}`}o(ds,"getIdForNode");const ki=class ki extends j{selectionMode="element";_selection=new Set;_edgesSelection=new Set;endPoint=null;startPoint=null;copy(){const t=[],e=new Map,s=[];for(const n of this._selection){const r=ds(this.diagram,"node",s);e.set(n.id,r),s.push(r)}for(const n of this._selection){const r=n.serialize();r.id=e.get(r.id),r.gateways.forEach(a=>{a.outEdges.forEach(c=>{c.toParentId=e.get(c.toParentId)})}),t.push(r)}return JSON.stringify({nodes:t})}init(){g.makeObservable(this,{_selection:g.observable,box:g.computed,endPoint:g.observable,selectedNodes:g.computed,selectedEdges:g.computed,selectionMode:g.observable,selectNode:g.action,startPoint:g.observable,toggleSelectionMode:g.action,unselectNode:g.action,handleMouseUp:g.action}),this.diagram.onEvent(ut,this.handleMouseDown.bind(this),this.diagram.priorities.Mouse_Down_Selector),this.diagram.onEvent(Ht,t=>{this._selection.delete(t.node)}),this.diagram.onEvent(be,t=>{this._edgesSelection.delete(t.edge)});for(const t of this.diagram.nodes)t.selected&&this._selection.add(t)}toggleSelectionMode(t=this.selectionMode==="area"?"element":"area"){this.selectionMode=t}get selectedNodes(){return[...this._selection]}get selectedEdges(){return[...this._edgesSelection]}get box(){return!this.startPoint||!this.endPoint?new b:this.diagram.canvas.inverseFit(new b([...this.startPoint.raw,...this.endPoint.copy().substract(this.startPoint).raw]))}clearSelection(t=()=>!0){for(const e of this._selection)t(e)&&this.unselectNode(e);for(const e of this._edgesSelection)this.unselectEdge(e)}selectEdge(t){this.emit(new ve(t,!0)).cancelled||(t.setState("selected",!0),this._edgesSelection.add(t))}selectNode(t){t.canSelect()&&!this.emit(new Rt(t,!0)).cancelled&&(t.setState("selected",!0),this._selection.add(t))}unselectEdge(t){this.emit(new ve(t,!1)).cancelled||(t.setState("selected",!1),this._edgesSelection.delete(t))}unselectNode(t){t.canUnselect()&&!this.emit(new Rt(t,!1)).cancelled&&(t.setState("selected",!1),this._selection.delete(t))}unbind=o(()=>{},"unbind");handleMouseDown=o(t=>{if(this.unbind(),g.runInAction(()=>{this.startPoint=new m(t)}),this.selectionMode==="area")t.cancel(),this.unbind=ot(qt(this,Q,this.handleMouseUp),qt(this,gt,this.handleMouseMove));else{const e=t.edge?.state.selected??t.node?.selected;!t.ctrl&&!t.shift&&!e&&this.clearSelection(),t.edge?this.selectEdge(t.edge):t.node?this.selectNode(t.node):this.clearSelection()}},"handleMouseDown");handleMouseMove=o(t=>{g.runInAction(()=>{this.endPoint=xt.getInstance().coordinates});for(const e of this.diagram.nodes){e.box.collides(this.box)?this.selectNode(e):this.unselectNode(e);for(const s of e.gateways)for(const n of s.outgoingEdges)if(n.collides(this.box)){this.selectEdge(n);break}else this.unselectEdge(n)}},"handleMouseMove");handleMouseUp=o(t=>{this.unbind(),this.endPoint=null,this.startPoint=null},"handleMouseUp")};o(ki,"Selector");let D=ki;const $e=new Map;function jn(i){$e.has(i)||$e.set(i,Number.MIN_SAFE_INTEGER);const t=$e.get(i);return $e.set(i,t+1),`${i}_${t}`}o(jn,"getUniqueId");function at(i,t){return Math.abs(i-t)}o(at,"d");const _i=class _i extends j{gridSize=50;horizontalSuggestionProviders=[];verticalSuggestionProviders=[];proposals=[];registerHorizontalSuggestionProvider(t){return this.horizontalSuggestionProviders.push(t),()=>{this.horizontalSuggestionProviders=this.horizontalSuggestionProviders.filter(e=>e!==t)}}registerVerticalSuggestionProvider(t){return this.verticalSuggestionProviders.push(t),()=>{this.verticalSuggestionProviders=this.verticalSuggestionProviders.filter(e=>e!==t)}}clear(){this.proposals=[]}init(){g.makeObservable(this,{clear:g.action,proposals:g.observable}),B(this,"keydown",t=>{t.ctrlKey&&this.clear()}),this.diagram.onEvent(Q,()=>{this.clear()}),this.diagram.onEvent(pt,t=>{if(this.clear(),this.enabled){const e=this.diagram.canvas.frameDimensions.norm/2,s=this.gridSize/5*2,n=this.gridSize/3;if(t.proposals.length>=1){const r={HC:[],HL:[],HR:[],VB:[],VM:[],VT:[]},a=t.proposals[0],c={H:1/0,V:1/0};let l=!1,d=!1;for(const h of this.diagram.nodes)if(h.id!==a.node.id&&!t.proposals.find(x=>x.node.id===h.id)){const x=Math.abs(a.newBox.edgeDistanceX(h.box)),p=Math.abs(a.newBox.edgeDistanceY(h.box));if(x<e){{const f=at(h.box.middle.y,a.newBox.middle.y);f<s&&(r.VM.push({distance:f,element:a.node,position:h.box.middle.y,range:[h.box.rightMiddle.x,a.newBox.x]}),f<n&&f<c.V&&(c.V=f,d=!0,a.update(new b([a.current.x,h.box.middle.y-a.newBox.height/2,...a.newBox.size.raw]))))}{const f=at(h.box.y,a.newBox.y);f<s&&(r.VT.push({distance:f,element:a.node,position:h.box.y,range:[h.box.rightMiddle.x,a.newBox.x]}),f<n&&f<c.V&&(c.V=f,d=!0,a.update(new b([a.current.x,h.box.y,...a.newBox.size.raw]))))}{const f=at(h.box.bottomMiddle.y,a.newBox.bottomMiddle.y);f<s&&(r.VB.push({distance:f,element:a.node,position:h.box.bottomMiddle.y,range:[h.box.rightMiddle.x,a.newBox.x]}),f<n&&f<c.V&&(c.V=f,d=!0,a.update(new b([a.current.x,h.box.bottomMiddle.y-a.newBox.height,...a.newBox.size.raw]))))}}if(p<e){{const f=at(h.box.x,a.newBox.x);f<s&&(r.HL.push({distance:f,element:a.node,position:h.box.x,range:[h.box.bottomMiddle.y,a.newBox.y]}),f<n&&f<c.H&&(c.H=f,l=!0,a.update(new b([h.box.x,a.current.y,...a.newBox.size.raw]))))}{const f=at(h.box.middle.x,a.newBox.middle.x);f<s&&(r.HC.push({distance:f,element:a.node,position:h.box.middle.x,range:[h.box.bottomMiddle.y,a.newBox.y]}),f<n&&f<c.H&&(c.H=f,l=!0,a.update(new b([h.box.middle.x-a.newBox.width/2,a.current.y,...a.newBox.size.raw]))))}{const f=at(h.box.rightMiddle.x,a.newBox.rightMiddle.x);f<s&&(r.HR.push({distance:f,element:a.node,position:h.box.rightMiddle.x,range:[h.box.bottomMiddle.y,a.newBox.y]}),f<n&&f<c.H&&(c.H=f,l=!0,a.update(new b([h.box.rightMiddle.x-a.newBox.width,a.current.y,...a.newBox.size.raw]))))}}}for(const h of this.verticalSuggestionProviders)for(const x of h(a.node,a.newBox)){const p=at(x.nodeY,a.newBox.y);p>=s||(r.VM.push({distance:p,element:a.node,position:x.guideY,range:x.range}),p<n&&p<c.V&&(c.V=p,d=!0,a.update(new b([a.current.x,x.nodeY,...a.newBox.size.raw]))))}for(const h of this.horizontalSuggestionProviders)for(const x of h(a.node,a.newBox)){const p=at(x.nodeX,a.newBox.x);p>=s||(r.HL.push({distance:p,element:a.node,position:x.guideX,range:x.range}),p<n&&p<c.H&&(c.H=p,l=!0,a.update(new b([x.nodeX,a.current.y,...a.newBox.size.raw]))))}Object.entries(r).forEach(([h,x])=>{g.runInAction(()=>{x.forEach(p=>{h.startsWith("H")?this.proposals.push({x:p.position,type:"h",range:p.range,id:jn("alignment-proposal")}):this.proposals.push({y:p.position,type:"v",range:p.range,id:jn("alignment-proposal")})})})}),l&&a.lockX(),d&&a.lockY()}}},this.diagram.priorities.Drag_Node_Aligner)}};o(_i,"NodesAligner");let At=_i;const Si=class Si extends j{gridSize=25;proposals=[];clear(){this.proposals=[]}init(){g.makeObservable(this,{clear:g.action,proposals:g.observable}),this.diagram.onEvent(Q,()=>{this.clear()}),this.diagram.onEvent(pt,t=>{if(this.clear(),this.enabled){const e=this.diagram.canvas.frameDimensions.norm/2;if(t.proposals.length>=1){const s=t.proposals[0];let n=null,r=1/0,a=null,c=1/0,l=null,d=1/0,h=null,x=1/0;for(const p of this.diagram.nodes){const f=s.newBox.edgeDistanceX(p.box),y=s.newBox.edgeDistanceY(p.box);p.id!==s.node.id&&Math.min(f,y)<e&&(y===0&&(f<0?d>-f&&(d=-f,l=p):x>f&&(x=f,h=p)),f===0&&(y<0?r>-y&&(r=-y,n=p):c>y&&(c=y,a=p)))}if(n&&a){const p=-s.newBox.edgeDistanceY(n.box),f=s.newBox.edgeDistanceY(a.box);Math.abs(p-f)<this.gridSize&&(this.proposals.push({from:s.node.box.topMiddle,to:new m([s.node.box.topMiddle.x,n.box.bottomMiddle.y])}),this.proposals.push({from:s.node.box.bottomMiddle,to:new m([s.node.box.bottomMiddle.x,a.box.topMiddle.y])}),s.updateY((n.box.bottomMiddle.y+a.box.topMiddle.y)/2-s.newBox.height/2),s.lockY())}if(l&&h){const p=-s.newBox.edgeDistanceX(l.box),f=s.newBox.edgeDistanceX(h.box);Math.abs(f-p)<this.gridSize&&(this.proposals.push({from:s.node.box.rightMiddle,to:new m([h.box.leftMiddle.x,s.node.box.rightMiddle.y])}),this.proposals.push({from:s.node.box.leftMiddle,to:new m([l.box.rightMiddle.x,s.node.box.leftMiddle.y])}),s.updateX((h.box.leftMiddle.x+l.box.rightMiddle.x)/2-s.newBox.width/2),s.lockX())}}}},this.diagram.priorities.Drag_Node_Distances_Balancer)}};o(Si,"DistancesBalancer");let Xt=Si;const Pi=class Pi extends j{windowTime=100;maxSize=50;index=-1;snapshots=[];async avoidEvents(t){this.disable();try{await t()}finally{this.enable()}}unbind=o(()=>{},"unbind");window(){this.enabled&&(this.unbind(),this.unbind=ot(_r(()=>{g.runInAction(()=>{this.snapshots.splice(this.index+1),this.snapshots.push(this.diagram.export()),this.snapshots.splice(0,Math.max(0,this.snapshots.length-this.maxSize)),this.index=this.snapshots.length-1})},this.windowTime)))}redo(){this.hasNext&&this.avoidEvents(async()=>{this.index=Math.min(this.snapshots.length-1,this.index+1),await this.diagram.reset(),this.diagram.import(this.snapshots[this.index])})}undo(){this.hasPrevious&&this.avoidEvents(async()=>{this.index=Math.max(-1,this.index-1),await this.diagram.reset(),this.diagram.import(this.snapshots[this.index]||"{}")})}get hasNext(){return this.index<this.snapshots.length-1}get hasPrevious(){return this.index>-1}init(){g.makeObservable(this,{index:g.observable,hasNext:g.computed,hasPrevious:g.computed,redo:g.action,undo:g.action}),this.diagram.onEvent(Y,t=>{t.cancelled||this.window()},this.diagram.priorities.Change_History),this.window()}};o(Pi,"History");let Ut=Pi;const Ai=class Ai extends j{hotkeys=[];isEditableTarget(t){return t instanceof HTMLElement?t instanceof HTMLInputElement||t instanceof HTMLTextAreaElement||t instanceof HTMLSelectElement||t instanceof HTMLButtonElement||t.isContentEditable:!1}shouldIgnoreHotkeys(t){return this.isEditableTarget(t.originalEvent.target)||this.isEditableTarget(document.activeElement)}get measurer(){return this.diagram.getExtension(Yt)}get selector(){return this.diagram.getExtension(D)}match(t,e){return!(e.ctrl!==void 0&&t.ctrl!==e.ctrl||e.shift!==void 0&&t.shift!==e.shift||e.alt!==void 0&&t.alt!==e.alt||e.code!==void 0&&t.code!==e.code)}init(){this.diagram.onEvent(kt,async t=>{if(!this.shouldIgnoreHotkeys(t)&&!this.revertHotkey.has(t.code)){for(const e of this.hotkeys)if(this.match(t,e)&&(e.cb(t),!t.spreads))return;switch(t.code){case"Space":{const e=this.measurer.enabled,s=!e&&this.selector.selectionMode==="area";e||this.selector.toggleSelectionMode(s?"element":"area"),this.revertHotkey.set(t.code,()=>{e?this.measurer.toggle():this.selector.toggleSelectionMode(s?"area":"element")});break}case"KeyC":t.ctrl&&navigator.clipboard.writeText(this.selector.copy());break;case"KeyV":t.ctrl&&this.diagram.paste(await navigator.clipboard.readText());break;case"KeyM":this.selector.toggleSelectionMode("element");break;case"KeyS":t.ctrl||this.selector.toggleSelectionMode("area");break;case"KeyZ":t.ctrl&&this.diagram.getExtension(Ut).undo();break;case"KeyY":t.ctrl&&this.diagram.getExtension(Ut).redo();break;case"KeyR":this.measurer.toggle();break;case"ControlLeft":case"ControlRight":t.cancel();{const e=this.diagram.getExtension(U);e?.toggle();const s=this.diagram.getExtension(At);s?.toggle();const n=this.diagram.getExtension(Xt);n?.toggle(),this.revertHotkey.set(t.code,()=>{e?.toggle(),s?.toggle(),n?.toggle()})}break;case"Delete":this.diagram.getExtension(D).selectedNodes.forEach(e=>{this.diagram.delete(e)}),this.diagram.getExtension(D).selectedEdges.forEach(e=>{this.diagram.disconnect(e)})}}}),document.addEventListener("keyup",()=>{for(const t of this.revertHotkey.keys())this.revertHotkey.get(t)?.(),this.revertHotkey.delete(t)})}register(t){return this.hotkeys.push(t),()=>{this.hotkeys=this.hotkeys.filter(e=>e!==t)}}revertHotkey=new Map};o(Ai,"Hotkeys");let hs=Ai;function qt(i,t,e,s){if(i.diagram){const n=e.bind(i);return i.diagram.onEvent(t,n,s),()=>{i.diagram?.offEvent(t,n)}}throw new Error("Cannot bind to unexistent diagram")}o(qt,"bindDiagram");function B(i,t,e,s){const n=e.bind(i);return document.addEventListener(t,n,s),()=>{document.removeEventListener(t,n,s)}}o(B,"bindDocument");function $n(i,t){const e=setInterval(i,t);return()=>{clearInterval(e)}}o($n,"bindInterval");function _r(i,t){const e=setTimeout(i,t);return()=>{clearTimeout(e)}}o(_r,"bindTimeout");function ot(...i){return()=>{i.forEach(t=>t())}}o(ot,"bind");let Sr=(Bt=class extends _t{unbindDocumentEvents=[];mouseSessionStartedInFrame=!1;_displacement=new m([-5e3,-5e3]);_scale=1;gridSize=50;size=new m([1e6,1e6]);get scale(){return this._scale}element=null;get elementPosition(){if(!this.element)return new m([0,0]);const t=this.element.getBoundingClientRect();return new m([t.x,t.y])}get elementDimensions(){if(!this.element)return new b([0,0,0,0]);const t=this.element.getBoundingClientRect();return new b([t.x,t.y,t.width,t.height])}get displacement(){return this._displacement.copy()}get framePosition(){if(!this.element)return new m([0,0]);const t=this.element.parentElement.getBoundingClientRect();return new m([t.x,t.y])}get frameDimensions(){if(!this.element)return new b([0,0,0,0]);const t=this.element.parentElement.getBoundingClientRect();return new b([t.x,t.y,t.width,t.height])}constructor(t){super(t),g.makeObservable(this,{_scale:g.observable,setScale:g.action}),this.unbindDocumentEvents.push(B(this,"click",this.handleClick),B(this,"dblclick",this.handleDoubleClick),B(this,"wheel",this.handleWheel),B(this,"mouseup",this.handleMouseUp),B(this,"mousedown",this.handleMouseDown),B(this,"mousemove",this.handleMouseMove),B(this,"keyup",this.handleKeyUp),B(this,"keypress",this.handleKeyPress),B(this,"keydown",this.handleKeyDown))}dispose(){for(const t of this.unbindDocumentEvents.splice(0))t()}markMouseSessionStartedInFrame(){this.mouseSessionStartedInFrame=!0}get dragging(){return this._dragging}_dragging=!1;displacementStart=null;eventStart=null;bound(){const t=this.element?.parentElement?.getBoundingClientRect(),e=t?new m([t.width,t.height]).divide(this.scale):new m,s=new b([...this.size.copy().multiply(-1).raw,...e.raw]).multiply(.9);this._displacement.bound(s)}centerOnPoint(t){const e=this.frameDimensions.multiply(1/this.scale);this.setDisplacement(t.copy().substract(e.middle).multiply(-1))}displace(t){this._displacement.sum(t);const e=this._displacement.copy();return this.bound(),this.setDisplacementStyles(),t.copy().substract(this._displacement.copy().substract(e))}setDisplacement(t){this._displacement.assign(t),this.bound(),this.setDisplacementStyles()}setScale(t,e=new m([0,0])){const s=this.inverseFit(e),n=s.copy(),r=this.displacement,a=Math.max(.3,Math.min(3,t));if(a!==this.scale){const c=s.copy().multiply(this.scale).sum(r.copy().multiply(this.scale)).substract(n.copy().multiply(a)).divide(a);this.emit(new Tt(this,c.copy().substract(this.displacement),a,this.scale)).cancelled||(this._scale=a,this._displacement.assign(c),this.bound(),this.setDisplacementStyles())}}fit(t){return t instanceof m?this._displacement.copy().sum([t.x,t.y]).multiply(this.scale):t instanceof b?new b([...this._displacement.copy().sum([t.x,t.y]).multiply(this.scale).raw,...t.size.multiply(this.scale).raw]):t*this.scale}inverseFit(t){return t instanceof m?t.copy().substract(this.framePosition).divide(this.scale).substract([this._displacement.x,this._displacement.y]):t.copy().substract(this.framePosition.toDimensions(new m([0,0]))).divide(this.scale).substract([this._displacement.x,this._displacement.y,0,0])}getDisplacementStyles(){const t=this._displacement.copy(!1).multiply(this.scale);return{position:"relative",width:`${this.size.x}px`,height:`${this.size.y}px`,transform:`translate(${t.x}px, ${t.y}px) scale(${this.scale})`,transformOrigin:"0 0",willChange:"transform"}}setDisplacementStyles(t=this.element){if(t){const e=this._displacement.copy(!1).multiply(this.scale),s=t.parentElement;if(t.dataset.setStyles="true",t.style.position="relative",t.style.width=`${this.size.x}px`,t.style.height=`${this.size.y}px`,t.style.transform=`translate(${e.x}px, ${e.y}px) scale(${this.scale})`,t.style.transformOrigin="0 0",t.style.zoom="",t.style.willChange="transform",s){const n=this.gridSize*this.scale,r=n*10,c=(Math.max(.3,Math.min(1,this.scale))-.3)/.7;s.style.setProperty("--diagram-canvas-scale",String(this.scale)),s.style.setProperty("--diagram-canvas-translate-x",`${e.x}px`),s.style.setProperty("--diagram-canvas-translate-y",`${e.y}px`),s.style.setProperty("--diagram-grid-zoom-ratio",String(c)),s.style.setProperty("--diagram-grid-size",`${n}px`),s.style.setProperty("--diagram-major-grid-size",`${r}px`),s.style.setProperty("--diagram-grid-offset-x",`${e.x}px`),s.style.setProperty("--diagram-grid-offset-y",`${e.y}px`)}}}setGridSize(t){this.gridSize=t,this.setDisplacementStyles()}useRef=o(t=>{this.element=t,t instanceof HTMLElement&&this.setDisplacementStyles()},"useRef");isInsideFrameFromTarget(t){const e=this.element?.parentElement;return!!(e&&t instanceof Node&&(e===t||e.contains(t)))}isInsideFrameEvent(t){const e=this.element?.parentElement;if(!e)return!1;const s=typeof t.composedPath=="function"?t.composedPath():[];if(s.length>0&&s.some(n=>n===e||n instanceof Node&&e.contains(n))||this.isInsideFrameFromTarget(t.target)||t.type==="wheel"&&e.matches(":hover"))return!0;if("clientX"in t&&"clientY"in t){const n=e.getBoundingClientRect(),r=Number(t.clientX),a=Number(t.clientY);return r>=n.left&&r<=n.right&&a>=n.top&&a<=n.bottom}return!1}handleMouseMove(t){if(!this.isInsideFrameEvent(t)&&!this.eventStart&&!this.mouseSessionStartedInFrame)return;if(!this.emit(new gt(this,t)).cancelled&&this.displacementStart&&this.eventStart){const s=this.displacement.substract(new m(t));this.emit(new Je(this,this.displacement,s)).cancelled||(this._dragging=!0,this._displacement.assign(this.displacementStart.copy().substract(this.eventStart.copy().substract([t.clientX,t.clientY]).divide(this.scale))),this.bound(),this.setDisplacementStyles())}}handleDoubleClick(t){this.isInsideFrameEvent(t)&&this.emit(new xe(this,t))}handleClick(t){this.isInsideFrameEvent(t)&&this.emit(new me(this,t))}handleMouseUp(t){!this.isInsideFrameEvent(t)&&!this.eventStart&&!this.mouseSessionStartedInFrame||(this.emit(new Q(this,t)),this._dragging=!1,this.eventStart=null,this.mouseSessionStartedInFrame=!1)}handleMouseDown(t){if(!this.isInsideFrameEvent(t))return;this.mouseSessionStartedInFrame=!0,!this.emit(new ut(this,t)).cancelled&&(t.button===1||t.button===0)&&(this.displacementStart=this._displacement.copy(),this.eventStart=new m(t))}handleKeyDown(t){this.emit(new kt(this,t))}handleKeyUp(t){this.emit(new ye(this,t))}handleKeyPress(t){this.emit(new Ke(this,t))}handleWheel(t){if(!this.isInsideFrameEvent(t))return;if(!this.emit(new Ze(this,t)).cancelled){const s=t.deltaY<0,n=Math.floor(this.scale*100)/100;this.setScale(this.scale-t.deltaY/(n>=.2&&s||n>.21?1e3:1e4),new m(t))}}},o(Bt,"Canvas"),Bt);const Ii=class Ii extends je{initializeGateways(){}};o(Ii,"TextNode");let Be=Ii;const Zt=1e3,Ci=class Ci{Canvas_Rules=Zt;Change_History=0;Click_Node=100;Drag_Rules=Zt;Drag_Node_Distances_Balancer=400;Drag_Node_Straight_Drag=300;Drag_Node_Aligner=200;Drag_Node_Snap_To_Grid=100;Drag_Edge_Snap_To_Grid=100;Mouse_Down_Rules=Zt;Mouse_Down_Measurer=400;Mouse_Down_Selector=300;Mouse_Down_Node=200;Mouse_Down_Dragger=100;Mouse_Move_Straight_Drag=500;Mouse_Move_Selector=100;Mouse_Up_Straight_Drag=500;Mouse_Up_Dragger=200;Mouse_Up_Selector=100;Nodes_Connection_Rules=Zt;Node_Selection_Nodes_Resizer=200;Node_Selection_Selector=200;Scale_Dragger=100;Selection_Rules=Zt};o(Ci,"Priorities");let us=Ci;const Li=class Li{constructor(t){this.d=t,t.onEvent(Y,this.check(()=>this.allowEdition),t.priorities.Mouse_Down_Rules),t.onEvent(Gt,this.check(()=>this.allowSelection),t.priorities.Selection_Rules),t.onEvent(nt,this.check(()=>this.allowEdition),t.priorities.Drag_Rules),t.onEvent(Ft,this.check(()=>this.allowEdition),t.priorities.Nodes_Connection_Rules),t.onEvent(zt,this.check(()=>this.allowZoom),t.priorities.Drag_Rules),g.makeAutoObservable(this)}d;allowEdition=!0;allowSelection=!0;allowZoom=!0;displaceWhenDragOnEdges=!0;toggleGrid=!0;check=o(t=>e=>{t()||(e.cancel(),e.stopImmediatePropagation())},"check")};o(Li,"Rules");let gs=Li;const ji=class ji extends j{creationMode="none";init(){this.diagram.onEvent(me,t=>{this.handleClick(t)}),g.makeObservable(this,{creationMode:g.observable})}getId(){let t=String(Date.now()),e=0;for(;this.diagram.getNodeById(t);)t=String(Date.now())+String(e++);return t}handleClick(t){if(!t.cancelled&&this.creationMode!=="none"&&(t.cancel(),this.creationMode==="text")){const e=this.diagram.add(new Be(null,{id:this.getId(),label:"No label",box:new b([...this.diagram.canvas.inverseFit(new m(t.originalEvent)).raw,100,100])}));this.diagram.getExtension(D).selectNode(e)}g.runInAction(()=>{this.creationMode="none"})}};o(ji,"Creator");let ps=ji;const Kt=.001,tt=3,$i=class $i extends j{drag=null;endpointDrag=null;uns=o(()=>{},"uns");init(){document.addEventListener("mouseup",this.handleMouseUp.bind(this)),this.diagram.onEvent(Ee,this.startDrag.bind(this)),this.diagram.onEvent(Me,this.startEndpointDrag.bind(this))}almostEqual(t,e){return Math.abs(t-e)<Kt}pointMatches(t,e){return this.almostEqual(t.x,e.x)&&this.almostEqual(t.y,e.y)}axisAligned(t,e){return this.almostEqual(t.x,e.x)||this.almostEqual(t.y,e.y)}pointsNear(t,e,s=tt){return Math.abs(t.x-e.x)<=s&&Math.abs(t.y-e.y)<=s}isActivePoint(t){return!!(this.drag&&(t===this.drag.pointA||t===this.drag.pointB))}getGridSize(){return this.diagram.getExtension(U)?.gridSize??50}orientationVector(t){switch(t){case"left":return{x:-1,y:0};case"right":return{x:1,y:0};case"up":return{x:0,y:-1};case"down":return{x:0,y:1}}}axisPerpendicularToGateway(t){return t==="left"||t==="right"?"y":"x"}expectedLeadPoint(t,e){const s=e==="from"?t.steps[0]:t.steps.at(-1),n=e==="from"?t.from.orientation:t.to.orientation,r=this.orientationVector(n),a=this.getGridSize();return new m([s.x+r.x*a,s.y+r.y*a])}leadMatchesGatewaySide(t,e,s){const n=this.orientationVector(s),r=(e.x-t.x)*n.x+(e.y-t.y)*n.y;return Math.abs(s==="left"||s==="right"?e.y-t.y:e.x-t.x)<=tt&&r>Kt&&r<=this.getGridSize()+tt}endpointLeadPoint(t,e){const s=e==="from"?t.steps[0]:t.steps.at(-1),n=e==="from"?t.from.orientation:t.to.orientation,r=e==="from"?1:t.steps.length-2,a=t.steps[r];return a&&a.mode!=="manual"&&!this.isActivePoint(a)&&this.leadMatchesGatewaySide(s,a,n)?a:this.expectedLeadPoint(t,e)}ensureEndpointLeadPoint(t,e){const s=this.expectedLeadPoint(t,e),n=e==="from",r=n?1:t.steps.length-2,a=t.steps[r];if(a&&this.leadMatchesGatewaySide(n?t.steps[0]:t.steps.at(-1),a,n?t.from.orientation:t.to.orientation))return r;const c=new A(t,[s.x,s.y,"auto"]);return n?(t.state.steps.splice(1,0,c),1):(t.state.steps.splice(t.steps.length-1,0,c),t.steps.length-2)}ensureEndpointLeads(t){this.ensureEndpointLeadPoint(t,"from"),this.ensureEndpointLeadPoint(t,"to")}isProtectedLeadPoint(t,e){return e<=0||e>=t.steps.length-1?!1:e===1&&t.steps[e].mode!=="manual"&&this.leadMatchesGatewaySide(t.steps[0],t.steps[e],t.from.orientation)||e===t.steps.length-2&&t.steps[e].mode!=="manual"&&this.leadMatchesGatewaySide(t.steps.at(-1),t.steps[e],t.to.orientation)}segmentMovedAxis(t,e){return this.almostEqual(t.y,e.y)?"y":this.almostEqual(t.x,e.x)?"x":Math.abs(t.x-e.x)>=Math.abs(t.y-e.y)?"y":"x"}segmentDirection(t,e){return!this.axisAligned(t,e)||this.pointMatches(t,e)?null:this.almostEqual(t.y,e.y)?"horizontal":"vertical"}segmentIsParallelToDraggedAxis(t,e){return this.drag?this.drag.movedAxis==="y"?Math.abs(t.y-e.y)<=tt:Math.abs(t.x-e.x)<=tt:!1}perpendicularAxis(t){return t==="x"?"y":"x"}pointAxis(t,e){return e==="x"?t.x:t.y}setPointAxis(t,e,s){e==="x"?t.x=s:t.y=s}crossesStaticBoundary(t,e,s,n,r=tt){const a=this.pointAxis(s,e),c=this.pointAxis(n,e);switch(t){case"right":case"down":return a<c-r;case"left":case"up":return a>c+r}}copyAsManual(t,e="both"){const s=t.copy();return s.parent=t.parent,s.addManualAxis(e),s}markManual(t,e="both"){t.mode!=="static"&&t.addManualAxis(e)}clampPointPastLead(t,e,s){switch(s){case"left":t.x=Math.min(t.x,e.x);break;case"right":t.x=Math.max(t.x,e.x);break;case"up":t.y=Math.min(t.y,e.y);break;case"down":t.y=Math.max(t.y,e.y);break}}movedAxisMatchesOrientation(t,e){return(e==="left"||e==="right")&&t==="x"||(e==="up"||e==="down")&&t==="y"}edgePointAt(t,e,s,n="auto"){return new A(t,[e,s,n])}guardCoordinate(t,e,s,n,r){const a=this.pointAxis(n,r)-this.pointAxis(s,r),c=Math.abs(a)>Kt?Math.sign(a):1,l=e==="from"?t.from.parent.box:t.to.parent.box,d=r==="y"?l.height:l.width,h=Math.max(this.getGridSize(),d/2+this.getGridSize()/2);return this.pointAxis(s,r)+c*h}makeGuardCorner(t,e,s,n){const r=this.perpendicularAxis(n),a=this.edgePointAt(t,e.x,e.y,"auto");return this.setPointAxis(a,n,this.pointAxis(e,n)),this.setPointAxis(a,r,s),a}insertStaticBoundaryGuard(t){if(!this.drag)return!1;const{edge:e,movedAxis:s}=this.drag,n=t==="from"?e.from.orientation:e.to.orientation;if(!this.movedAxisMatchesOrientation(s,n))return!1;const r=e.state.steps,a=r.findIndex(L=>L===this.drag.pointA),c=r.findIndex(L=>L===this.drag.pointB);if(a<0||c<0)return!1;const l=t==="from"?a<=c?"pointA":"pointB":a>=c?"pointA":"pointB",d=l==="pointA"?"pointB":"pointA",h=this.drag[l],x=this.drag[d],p=r.findIndex(L=>L===h),f=this.endpointLeadPoint(e,t),y=t==="from"?1:r.length-2,v=r[y],k=!!(v&&this.pointMatches(v,f)),$=t==="from"?p===1:p===r.length-2,M=t==="from"?p===2&&k:p===r.length-3&&k,_=this.crossesStaticBoundary(n,s,h,f,tt);if(p<0||!$&&!M||!_)return!1;const H=this.perpendicularAxis(s),P=this.guardCoordinate(e,t,f,x,H);this.setPointAxis(h,H,P),this.markManual(h,s),this.rebaseDraggedEndpointFixedAxis(l,h);const O=this.makeGuardCorner(e,f,P,s);if(t==="from"){if($){const L=this.edgePointAt(e,f.x,f.y,"auto");r.splice(p,0,L,O)}else r.splice(p,0,O);return this.drag.sourceLeadAdjacent=!1,this.drag.staticBoundaryGuarded=!0,!0}if($){const L=this.edgePointAt(e,f.x,f.y,"auto");r.splice(p+1,0,O,L)}else r.splice(p+1,0,O);return this.drag.targetLeadAdjacent=!1,this.drag.staticBoundaryGuarded=!0,!0}insertStaticBoundaryGuards(){const t=this.insertStaticBoundaryGuard("from"),e=this.insertStaticBoundaryGuard("to");return t||e}clampDraggedSegmentAgainstEndpointLeads(){if(!this.drag)return;const{edge:t,pointA:e,pointB:s,movedAxis:n,sourceLeadAdjacent:r,targetLeadAdjacent:a}=this.drag,c=t.steps.findIndex(d=>d===e),l=t.steps.findIndex(d=>d===s);if(this.movedAxisMatchesOrientation(n,t.from.orientation)){const h=t.steps[1]??this.expectedLeadPoint(t,"from");h&&(r||c>=0&&l>=0&&this.isProtectedLeadPoint(t,1)&&(c===2||l===2))&&(this.clampPointPastLead(e,h,t.from.orientation),this.clampPointPastLead(s,h,t.from.orientation))}if(this.movedAxisMatchesOrientation(n,t.to.orientation)){const d=t.steps.length-2,h=t.steps[d]??this.expectedLeadPoint(t,"to");h&&(a||c>=0&&l>=0&&this.isProtectedLeadPoint(t,d)&&(c===d-1||l===d-1))&&(this.clampPointPastLead(e,h,t.to.orientation),this.clampPointPastLead(s,h,t.to.orientation))}}mergeDraggedSegmentWithManualNeighbors(){if(!this.drag)return!1;let t=!1;const e=o((s,n)=>{if(!this.drag)return;const r=this.drag[s],a=this.drag.edge.state.steps,c=a.findIndex(h=>h===r),l=c+n;if(c<0||l<0||l>=a.length)return;const d=a[l];d.mode==="manual"&&this.pointsNear(r,d)&&(d.assign(r),a.splice(c,1),this.drag[s]=d,t=!0)},"mergePoint");return e("pointA",-1),e("pointB",1),t}rebaseDraggedEndpointFixedAxis(t,e){if(!this.drag)return;const s=t==="pointA"?this.drag.startPointA:this.drag.startPointB;this.drag.movedAxis==="y"?s.x=e.x:s.y=e.y}replaceDraggedEndpointWithProtectedLeadDuplicate(t,e,s){if(!this.drag)return;const n=this.drag[t],r=this.copyAsManual(e,this.drag.movedAxis);this.drag.movedAxis==="y"?r.y=n.y:r.x=n.x,this.drag.edge.state.steps[s]=r,this.drag[t]=r,this.rebaseDraggedEndpointFixedAxis(t,r)}absorbCollinearSegmentsIntoDraggedSegment(){if(!this.drag)return!1;let t=!1;const e=o((s,n)=>{if(!this.drag)return;const r=this.drag.edge.state.steps;for(;;){const a=this.drag[s],c=r.findIndex(h=>h===a),l=c+n;if(c<0||l<=0||l>=r.length-1)return;const d=r[l];if(!this.segmentIsParallelToDraggedAxis(a,d))return;if(this.isProtectedLeadPoint(this.drag.edge,l)){this.replaceDraggedEndpointWithProtectedLeadDuplicate(s,d,c),t=!0;return}if(d.mode==="static")return;r.splice(c,1),this.drag[s]=d,this.rebaseDraggedEndpointFixedAxis(s,d),t=!0}},"absorbSide");return e("pointA",-1),e("pointB",1),t}removeAdjacentDuplicates(t){if(!this.drag)return!1;const e=this.drag.edge.state.steps;let s=!1;for(let n=0;n<e.length-1;){const r=e[n],a=e[n+1];if(!this.pointsNear(r,a)){n+=1;continue}const c=this.isActivePoint(r)||r.mode==="static"||this.isProtectedLeadPoint(this.drag.edge,n)?n+1:n;if(c<=0||c>=e.length-1||t&&this.isActivePoint(e[c])){n+=1;continue}e.splice(c,1),s=!0,n=Math.max(0,n-1)}return s}coordinateAnchorForPair(t,e,s,n){return this.drag?t.mode==="static"?this.pointAxis(t,s):e.mode==="static"?this.pointAxis(e,s):this.isProtectedLeadPoint(this.drag.edge,n)?this.pointAxis(t,s):this.isProtectedLeadPoint(this.drag.edge,n+1)?this.pointAxis(e,s):this.isActivePoint(t)?this.pointAxis(t,s):this.isActivePoint(e)?this.pointAxis(e,s):t.mode==="manual"?this.pointAxis(t,s):e.mode==="manual"?this.pointAxis(e,s):this.pointAxis(t,s):this.pointAxis(t,s)}snapNearlyAlignedDraggedPairs(){if(!this.drag)return!1;const t=this.drag.edge.state.steps;let e=!1;for(let s=0;s<t.length-1;s++){const n=t[s],r=t[s+1];if(Math.abs(n.x-r.x)>Kt&&Math.abs(n.x-r.x)<=tt){const a=this.coordinateAnchorForPair(n,r,"x",s);n.x=a,r.x=a,e=!0}if(Math.abs(n.y-r.y)>Kt&&Math.abs(n.y-r.y)<=tt){const a=this.coordinateAnchorForPair(n,r,"y",s);n.y=a,r.y=a,e=!0}}return e}chooseOrthogonalCorner(t,e,s,n){const r=new A(this.drag?.edge??null,[e.x,t.y,"auto"]),a=new A(this.drag?.edge??null,[t.x,e.y,"auto"]),c=o(l=>{let d=0;const h=s?this.segmentDirection(s,t):null,x=this.segmentDirection(t,l),p=n?this.segmentDirection(e,n):null,f=this.segmentDirection(l,e);return h&&x!==h&&(d+=2),p&&f!==p&&(d+=2),this.axisAligned(s??t,l)&&(d+=1),this.axisAligned(l,n??e)&&(d+=1),d},"score");return c(r)>=c(a)?r:a}ensureOrthogonalAdjacency(){if(!this.drag)return!1;const t=this.drag.edge.state.steps;let e=!1;for(let s=0;s<t.length-1;s++){const n=t[s],r=t[s+1];if(this.axisAligned(n,r))continue;const a=s>0?t[s-1]:void 0,c=s+2<t.length?t[s+2]:void 0;t.splice(s+1,0,this.chooseOrthogonalCorner(n,r,a,c)),e=!0,s+=1}return e}normalizeDraggedEdge(){if(!this.drag)return!1;const t=this.snapNearlyAlignedDraggedPairs(),e=this.mergeDraggedSegmentWithManualNeighbors(),s=this.absorbCollinearSegmentsIntoDraggedSegment(),n=this.snapNearlyAlignedDraggedPairs(),r=this.ensureOrthogonalAdjacency(),a=this.snapNearlyAlignedDraggedPairs(),c=this.removeAdjacentDuplicates(!0),l=this.drag.edge.state.steps;return l.length>0&&(l[0].markStatic(),l.at(-1).markStatic()),t||e||s||n||r||a||c}finalizeDraggedEdge(){this.drag&&(this.normalizeDraggedEdge(),this.ensureOrthogonalAdjacency(),this.removeAdjacentDuplicates(!1),this.drag.staticBoundaryGuarded||this.drag.edge.setSteps(Cn(this.diagram,this.drag.edge)))}prepareStraightLeadSegment(t,e){const s=this.copyAsManual(t.steps[1],e),n=this.copyAsManual(t.steps[2],e);return t.state.steps.splice(2,0,s,n),{pointA:s,pointB:n,movedAxis:e}}prepareSourceSegment(t){this.ensureEndpointLeads(t);const e=this.axisPerpendicularToGateway(t.from.orientation);if(t.steps.length===4&&this.isProtectedLeadPoint(t,1)&&this.isProtectedLeadPoint(t,2))return this.prepareStraightLeadSegment(t,e);const s=this.copyAsManual(t.steps[1],e);t.state.steps.splice(2,0,s);const n=t.steps[3];return n instanceof A?(this.markManual(n,e),{pointA:s,pointB:n,movedAxis:e}):null}prepareTargetSegment(t){this.ensureEndpointLeads(t);const e=this.axisPerpendicularToGateway(t.to.orientation);if(t.steps.length===4&&this.isProtectedLeadPoint(t,1)&&this.isProtectedLeadPoint(t,2))return this.prepareStraightLeadSegment(t,e);const s=t.steps.length-2,n=this.copyAsManual(t.steps[s],e);t.state.steps.splice(s,0,n);const r=t.steps[s-1];return r instanceof A?(this.markManual(r,e),{pointA:r,pointB:n,movedAxis:e}):null}prepareSegmentAfterProtectedSourceLead(t,e){const s=this.segmentMovedAxis(t.steps[e],t.steps[e+1]),n=this.copyAsManual(t.steps[e],s);t.state.steps.splice(e+1,0,n);const r=t.steps[e+2];return r instanceof A?(this.markManual(r,s),{pointA:n,pointB:r,movedAxis:s}):null}prepareSegmentBeforeProtectedTargetLead(t,e){const s=this.segmentMovedAxis(t.steps[e-1],t.steps[e]),n=this.copyAsManual(t.steps[e],s);t.state.steps.splice(e,0,n);const r=t.steps[e-1];return r instanceof A?(this.markManual(r,s),{pointA:r,pointB:n,movedAxis:s}):null}prepareInteriorSegment(t,e,s,n){this.ensureEndpointLeads(t);let r=t.steps.findIndex(h=>h===e),a=t.steps.findIndex(h=>h===s);if((r<0||a<0||Math.abs(r-a)!==1)&&(r=Math.max(0,Math.min(n,t.steps.length-2)),a=r+1),r>a&&([r,a]=[a,r]),r===0)return this.prepareSourceSegment(t);if(a===t.steps.length-1)return this.prepareTargetSegment(t);if(this.isProtectedLeadPoint(t,r))return this.prepareSegmentAfterProtectedSourceLead(t,r);if(this.isProtectedLeadPoint(t,a))return this.prepareSegmentBeforeProtectedTargetLead(t,a);const c=t.steps[r],l=t.steps[a],d=this.segmentMovedAxis(c,l);return this.markManual(c,d),this.markManual(l,d),{pointA:c,pointB:l,movedAxis:d}}restoreOriginalSteps(t,e){t.setSteps(e.map(s=>s.copy()))}startDrag(t){if(t.cancelled)return;t.stopImmediatePropagation(),this.uns();const e=t.src,s=e.steps.map(v=>v.copy()),n=e.steps.length-1,r=Number(t.midPoint.id),a=r===0,c=r===n-1,l=t.midPoint.points[0],d=t.midPoint.points[1],h=g.runInAction(()=>{e.state.dragging=!0;const v=a?this.prepareSourceSegment(e):c?this.prepareTargetSegment(e):this.prepareInteriorSegment(e,l,d,r);return v||(e.state.dragging=!1),v});if(!h)return;const x=e.steps.findIndex(v=>v===h.pointA),p=e.steps.findIndex(v=>v===h.pointB),f=x===2||p===2,y=x===e.steps.length-3||p===e.steps.length-3;this.drag={edge:e,midpoint:t.midPoint,pointA:h.pointA,pointB:h.pointB,movedAxis:h.movedAxis,startMouseCanvas:this.diagram.canvas.inverseFit(new m(t)),startPointA:h.pointA.copy().nonObserved,startPointB:h.pointB.copy().nonObserved,originalSteps:s,sourceLeadAdjacent:f,targetLeadAdjacent:y,staticBoundaryGuarded:!1,changed:!1},this.uns=ot(B(this,"mousemove",this.handleMouseMove),B(this,"pointermove",this.handleMouseMove))}startEndpointDrag(t){t.cancelled||(t.stopImmediatePropagation(),this.uns(),g.runInAction(()=>{t.src.state.dragging=!0}),this.drag=null,this.endpointDrag={edge:t.src,endpoint:t.endpoint},this.uns=ot(B(this,"mousemove",this.handleMouseMove),B(this,"pointermove",this.handleMouseMove)))}scheduleEndpointRecompute(){if(!this.endpointDrag)return;const{edge:t,endpoint:e}=this.endpointDrag;(e==="from"?t.from:t.to).recomputeConnectedEdge(t,e)}handleEndpointMouseMove(t){if(!this.endpointDrag)return;const{edge:e,endpoint:s}=this.endpointDrag,n=s==="from"?e.from:e.to;if(n.state.allowDisplace===!1)return;const r=this.diagram.canvas.inverseFit(new m(t)),a=n.connectionDisplacement(r);g.runInAction(()=>{s==="from"?e.state.displacementStart=a:e.state.displacementEnd=a,this.scheduleEndpointRecompute()})}moveDraggedSegment(t){if(!this.drag)return;const{pointA:e,pointB:s}=this.drag,r=this.diagram.canvas.inverseFit(new m(t)).nonObserved.substract(this.drag.startMouseCanvas);this.drag.movedAxis==="x"?r.y=0:r.x=0,g.runInAction(()=>{if(!this.drag)return;e.assign(this.drag.startPointA.copy().sum(r)),s.assign(this.drag.startPointB.copy().sum(r));const a=[new _e(e,this.drag.movedAxis),new _e(s,this.drag.movedAxis)];this.emit(new Se(this,a,this.drag.movedAxis,t));for(const h of a)h.point.assign(h.get());const c=this.insertStaticBoundaryGuards();this.clampDraggedSegmentAgainstEndpointLeads();const l=this.normalizeDraggedEdge();(c||l||!this.pointMatches(this.drag.pointA,this.drag.startPointA)||!this.pointMatches(this.drag.pointB,this.drag.startPointB))&&(this.drag.changed=!0)})}handleMouseMove(t){if(this.endpointDrag){this.handleEndpointMouseMove(t);return}this.moveDraggedSegment(t)}handleMouseUp(){!this.drag&&!this.endpointDrag||(g.runInAction(()=>{this.drag&&(this.drag.changed?this.finalizeDraggedEdge():this.restoreOriginalSteps(this.drag.edge,this.drag.originalSteps),this.drag.edge.state.dragging=!1),this.endpointDrag&&(this.endpointDrag.edge.state.dragging=!1),this.drag=null,this.endpointDrag=null}),this.uns())}};o($i,"EdgesDragger");let fs=$i;function Bn(i,t,e,s=new m([0,0]),n=new m([0,0])){return Mr(i,t,e,s,n)}o(Bn,"findBestPathBetweenNodes");function Pr(i,t,e){switch(e){case"down":return t.copy().sum([0,i]);case"left":return t.copy().sum([-i,0]);case"up":return t.copy().sum([0,-i]);case"right":return t.copy().sum([+i,0])}}o(Pr,"stepFromGateway");const Bi=class Bi extends j{hasRoutedPreview=!1;previewRequestVersion=0;previewRafId=null;init(){g.makeObservable(this,{_arrowSteps:g.observable,arrowTo:g.observable,candidateGateway:g.observable,startConnectionFrom:g.action,handleMouseMove:g.action,startGateway:g.observable,handleMouseUp:g.action})}arrowTo=null;startGateway=null;candidateGateway=null;_arrowSteps=[];get arrowSteps(){return this._arrowSteps}get snap(){return this.diagram.getExtension(U)}calculateArrowSteps(){if(!this.startGateway||!this.arrowTo)return;const t=this.startGateway,e=this.candidateGateway,s=this.arrowTo?.copy(),n=this.previewRequestVersion;if(!t||!s){g.runInAction(()=>{this._arrowSteps=[]});return}try{const r=this.diagram.canvas.inverseFit(s),a=this.snap.gridSize/2,c=r.copy().divide(a).round.multiply(a);let l=[];if(e)l=Bn(this.diagram,t,e,new m([0,0]),e.connectionDisplacement(r));else{const d=new je(null,{id:"fake",label:"",box:new b([...c.raw,0,0])}),h=t.coordinates.substract(d.getGateway("down").coordinates).x,x=t.coordinates.substract(d.getGateway("down").coordinates).y,p=Math.abs(h)>Math.abs(x)?h>=0?"right":"left":x>=0?"down":"up";l=Bn(this.diagram,t,d.getGateway(p))}g.runInAction(()=>{this.startGateway===t&&n===this.previewRequestVersion&&(this._arrowSteps=l.map(d=>new m([d.x,d.y])),this.hasRoutedPreview=this._arrowSteps.length>1)})}catch{}}orthogonalMousePreview(t,e){const s=this.snap.gridSize/2,n=e.copy().divide(s).round.multiply(s),r=t.coordinates.copy(),a=Pr(this.snap.gridSize,r,t.orientation),c=[r,a];if(Math.abs(a.x-n.x)<.001||Math.abs(a.y-n.y)<.001)return c.push(n),this.compactPreviewPoints(c);const l=new m([a.x,n.y]),d=new m([n.x,a.y]),h=Math.abs(n.x-a.x),x=Math.abs(n.y-a.y);return c.push(h>=x?d:l,n),this.compactPreviewPoints(c)}compactPreviewPoints(t){const e=[];for(const s of t){const n=e.at(-1);if(!(n&&Math.abs(n.x-s.x)<.001&&Math.abs(n.y-s.y)<.001))for(e.push(s);e.length>=3;){const r=e.at(-3),a=e.at(-2),c=e.at(-1),l=Math.abs(r.x-a.x)<.001&&Math.abs(a.x-c.x)<.001,d=Math.abs(r.y-a.y)<.001&&Math.abs(a.y-c.y)<.001;if(l||d)e.splice(e.length-2,1);else break}}return e}cancelScheduledPreview(){this.previewRafId!==null&&(cancelAnimationFrame(this.previewRafId),this.previewRafId=null)}scheduleCalculateArrowSteps(){this.previewRafId===null&&(this.previewRafId=requestAnimationFrame(()=>{this.previewRafId=null,this.calculateArrowSteps()}))}u=o(()=>{},"u");startConnectionFrom(t,e){this.emit(new ts(this,t.parent)).cancelled||(e.nativeEvent.stopImmediatePropagation(),this.diagram.canvas.markMouseSessionStartedInFrame(),this.startGateway=t,this.arrowTo=new m(e),this.hasRoutedPreview=!1,this.previewRequestVersion=0,this._arrowSteps=[t.coordinates.copy(),t.coordinates.copy()],this.u(),this.u=ot(qt(this,gt,this.handleMouseMove),qt(this,Q,this.handleMouseUp)))}handleMouseMove(t){this.previewRequestVersion+=1;const e=this.diagram.canvas.frameDimensions;this.arrowTo=new m(t);const s=this.arrowTo.copy().substract(this.diagram.canvas.framePosition),n=new m([0,0]);s.x<100?n.sum([(100-s.x)*.1,0]):s.x>e.width-100?n.substract([(100-Math.abs(s.x-e.width))*.1,0]):s.y<100?n.sum([0,(100-s.y)*.1]):s.y>e.height-100&&n.substract([0,(100-Math.abs(s.y-e.height))*.1]),n.norm>0&&this.diagram.canvas.displace(n);const r=this.diagram.canvas.inverseFit(this.arrowTo),l=this.diagram.nodes.filter(d=>{const h=this.snap.gridSize/2;return d.box.translate(new m([-h,-h])).sum([0,0,h*2,h*2]).collides(r)}).flatMap(d=>d.gateways).filter(d=>d!==this.startGateway).reduce((d,h)=>{if(!d)return h;const x=h.connectionDistance(r),p=d.connectionDistance(r);return x<p?h:d},null);if(l?this.candidateGateway=l:this.candidateGateway=null,!this.candidateGateway){this.hasRoutedPreview=!1,this._arrowSteps=this.orthogonalMousePreview(this.startGateway,r),this.scheduleCalculateArrowSteps();return}this.calculateArrowSteps()}handleMouseUp(){try{if(this.candidateGateway&&this.startGateway&&this.candidateGateway.canConnect(this.startGateway)&&!this.emit(new es(this,this.startGateway.parent,this.candidateGateway.parent)).cancelled){this._arrowSteps=[];const t=this.arrowTo?this.diagram.canvas.inverseFit(this.arrowTo):this.candidateGateway.coordinates;this.diagram.connect(this.startGateway,this.candidateGateway,{toDisplacement:this.candidateGateway.connectionDisplacement(t)})}}finally{this._arrowSteps=[],this.hasRoutedPreview=!1,this.startGateway=null,this.arrowTo=null,this.candidateGateway=null,this.previewRequestVersion=0,this.cancelScheduledPreview(),this.u()}}};o(Bi,"NodesConnector");let Jt=Bi;const Ni=class Ni extends j{straight="none";startCoordinates=null;startProposals=[];reset(){this.straight="none",this.startCoordinates=null,this.startProposals=[]}init(){this.diagram.onEvent(kt,t=>{t.shift&&(this.startCoordinates=xt.getInstance().coordinates)}),this.diagram.onEvent(ye,t=>{t.shift||this.reset()}),this.diagram.onEvent(gt,t=>{if(this.startCoordinates){const e=Math.abs(this.startCoordinates.x-t.mouse.x),s=Math.abs(this.startCoordinates.y-t.mouse.y);(e>15||s>15)&&(e>s?this.straight="x":e<s&&(this.straight="y"))}},this.diagram.priorities.Mouse_Move_Straight_Drag),this.diagram.onEvent(Q,()=>{this.reset()},this.diagram.priorities.Mouse_Up_Straight_Drag),this.diagram.onEvent(pt,t=>{if(this.straight!=="none")if(this.startProposals.length===0)this.startProposals=t.proposals.map(e=>new ke(e.node,e.newBox.copy()));else for(const e of t.proposals){const s=this.startProposals.find(n=>n.node.id===e.node.id);switch(this.straight){case"x":e.updateY(s.newBox.y),e.lockY();break;case"y":e.updateX(s.newBox.x),e.lockX();break}}},this.diagram.priorities.Drag_Node_Straight_Drag)}};o(Ni,"StraightDrag");let ms=Ni;const Oi=class Oi extends j{init(){this.diagram.onEvent(Rt,t=>{t.selected&&console.log(t)},this.diagram.priorities.Node_Selection_Nodes_Resizer)}};o(Oi,"NodesResizer");let xs=Oi;const Et=class Et{constructor(t){this.diagram=t}diagram;displace(t){if(!this.diagram.rules.displaceWhenDragOnEdges)return new m;const e=this.diagram.canvas.frameDimensions,s=new m([this.axisDisplacement(t.x,e.x,e.width),this.axisDisplacement(t.y,e.y,e.height)]);return s.norm>0&&this.diagram.canvas.displace(s),s}axisDisplacement(t,e,s){const n=t-e;if(n<Et.edgeThreshold)return this.step(n);const r=e+s-t;return r<Et.edgeThreshold?-this.step(r):0}step(t){return((Et.edgeThreshold-t)/10)**2}};o(Et,"Autopan"),K(Et,"edgeThreshold",100);let Ne=Et;const Di=class Di extends j{dragThreshold=10;autopan=new Ne(this.diagram);groupedChildren=new Map;init(){this.diagram.onEvent(ut,this.handleMouseDown.bind(this),this.diagram.priorities.Mouse_Down_Dragger),this.diagram.onEvent(Q,this.handleMouseUp.bind(this),this.diagram.priorities.Mouse_Up_Dragger),this.diagram.onEvent(gt,this.handleMouseMove.bind(this),this.diagram.priorities.Mouse_Move_Selector-1),this.diagram.onEvent(Tt,this.handleScale.bind(this),this.diagram.priorities.Scale_Dragger),this.diagram.onEvent(Ht,t=>{this.draggingNodes.delete(t.node.id)})}constructor(t){super(t)}draggingNodes=new Map;startPoint=new m;startPointScaled=new m;mousePoint=new m;unsubscribe=o(()=>{},"unsubscribe");startDrag(t,e=xt.getInstance().coordinates){this.draggingNodes.clear(),this.groupedChildren.clear(),this.draggingNodes.set(t.id,{node:t,startPoint:t.box.middle}),this.mousePoint=e.copy(),this.startPoint=e.copy().sum(t.box.size.divide(2)),this.startPointScaled=this.diagram.canvas.inverseFit(this.startPoint),this.handleDragAction()}originalEvent=null;handleMouseDown(t){this.originalEvent=t;const e=t.node;!t.cancelled&&e&&e.selected&&(t.cancel(),this.draggingNodes.clear(),this.groupedChildren.clear(),this.mousePoint=new m(t.originalEvent),this.startPoint=this.mousePoint.copy(),this.startPointScaled=this.diagram.canvas.inverseFit(this.mousePoint),this.handleDragAction())}handleMouseMove(t){this.mousePoint=new m(t.originalEvent)}handleDragAction(){this.unsubscribe(),this.unsubscribe=ot(qt(this,Tt,({newScale:t,previousScale:e})=>{this.startPoint.divide(e).multiply(t)}),$n(this.handleDragInterval.bind(this),30))}isFullyContained(t,e){return e.x>=t.x&&e.y>=t.y&&e.x+e.width<=t.x+t.width&&e.y+e.height<=t.y+t.height}collectConnectedEdges(t){const e=new Set;return t.forEach(s=>{s.gateways.forEach(n=>{n.incomingEdges.forEach(r=>e.add(r)),n.outgoingEdges.forEach(r=>e.add(r))})}),e}translateEdge(t,e){t.steps.forEach(s=>{s.sum(e)})}updateEdgesAfterBatchMove(t,e){const s=new Map,n=[];e.forEach(r=>{const a=t.get(r.id);if(!a)return;const c=r.coordinates.copy().substract(a);s.set(r.id,c),c.norm>0&&n.push(r)}),n.length&&this.collectConnectedEdges(n).forEach(r=>{const a=s.get(r.from.parent.id),c=s.get(r.to.parent.id);if(a&&c&&a.norm>0&&c.norm>0&&a.copy(!1).substract(c).norm===0){this.translateEdge(r,a);return}r.from.recomputeConnectedEdge(r,"from")})}applyNodePositionProposals(t){const e=new Map(t.map(c=>[c.node.id,c])),s=new Set(this.groupedChildren.keys()),n=new Map;t.forEach(c=>{!c.cancelled&&!s.has(c.node.id)&&n.set(c.node.id,c.node)}),this.groupedChildren.forEach((c,l)=>{const d=this.draggingNodes.get(l);d&&n.set(l,d.node)});const r=[...n.values()],a=new Map(r.map(c=>[c.id,c.coordinates.copy()]));t.forEach(c=>{!c.cancelled&&!s.has(c.node.id)&&c.node.setPosition(c.get().coordinates,{updateConnectedEdges:!1})}),this.groupedChildren.size&&this.groupedChildren.forEach((c,l)=>{const d=e.get(c),h=this.draggingNodes.get(l),x=this.draggingNodes.get(c);if(!h||!x)return;const f=(d?.cancelled?x.startPoint:d?.node.coordinates??x.startPoint).copy().substract(x.startPoint),y=h.startPoint.copy().sum(f);h.node.setPosition(y,{updateConnectedEdges:!1})}),this.updateEdgesAfterBatchMove(a,r)}includeGroupedChildren(){const t=[...this.draggingNodes.values()].filter(({node:s})=>s.state.groupChildren);if(!t.length)return;const e=new Set(this.draggingNodes.keys());this.diagram.nodes.forEach(s=>{if(e.has(s.id)||s.state.movable===!1)return;let n=null,r=Number.POSITIVE_INFINITY;const a=s.box;t.forEach(({node:c})=>{if(this.isFullyContained(c.box,a)){const l=c.box.width*c.box.height;l<r&&(r=l,n=c.id)}}),n!==null&&(this.draggingNodes.set(s.id,{node:s,startPoint:s.coordinates.copy()}),this.groupedChildren.set(s.id,n))})}handleDragInterval(){const t=this.mousePoint;if(this.draggingNodes.size||(this.diagram.getExtension(D).selectedNodes.forEach(e=>{this.draggingNodes.set(e.id,{node:e,startPoint:e.coordinates.copy()})}),this.includeGroupedChildren(),this.draggingNodes.size||this.unsubscribe()),this.draggingNodes.size&&t.copy().substract(this.startPoint).norm>this.dragThreshold){this.autopan.displace(t);const e=this.diagram.canvas.inverseFit(this.startPoint),s=this.startPointScaled.copy().substract(e),n=[...this.draggingNodes.values()].map(r=>new ke(r.node,new b([...r.startPoint.copy().sum(t.copy().substract(this.startPoint).divide(this.diagram.canvas.scale).substract(s)).raw,...r.node.box.size.raw])));this.emit(new pt(this,n,this.originalEvent?.originalEvent)).cancelled||this.applyNodePositionProposals(n)}}handleMouseUp(){this.draggingNodes.clear(),this.groupedChildren.clear(),this.unsubscribe()}handleScale(t){this.draggingNodes.size}};o(Di,"Dragger");let ys=Di,Nn=(Nt=class extends j{grid=null;points=null;highlighted=new Set;init(){g.makeObservable(this,{grid:g.observable,setGrid:g.action,points:g.observable,highlighted:g.observable})}setGrid(t,e){this.grid=t,this.points=e}},o(Nt,"PathFindingRenderer"),Nt);const On=E.createContext(null),Ar=Object.freeze({Creator:ps,DistancesBalancer:Xt,Dragger:ys,EdgesDragger:fs,GridSnap:U,History:Ut,Hotkeys:hs,Measurer:Yt,NodesAligner:At,NodesConnector:Jt,NodesResizer:xs,PathFindingRenderer:Nn,Selector:D,StraightDrag:ms}),We=class We extends _t{priorities=new us;rules=new gs(this);focusContentTimer=null;knownClasses=new Map;getClass(t){return this.knownClasses.get(t)}registerClass(t,e=t.name){this.knownClasses.set(e,t)}edgeClass=Pt;setDefaultEdge(t){this.edgeClass=t}_extensions=new Map;_nodes=new Map;_edges=new Map;canvas=new Sr(this);constructor(t){super(null),this.registerClass(je),this.registerClass(Pt),this.registerClass(mt),this.registerClass(Be),Object.entries(Ar).forEach(([e,s])=>{t?.extensions?.[e]!==!1&&this.registerExtension(s)}),g.makeObservable(this,{edges:g.computed,_edges:g.observable,_nodes:g.observable,toggleGrid:g.action})}get edges(){return[...this._edges.values()]}get nodes(){return[...this._nodes.values()]}getUniqueNodeId(t){if(!this._nodes.has(t))return t;let e=1,s=`${t}-${e}`;for(;this._nodes.has(s);)e++,s=`${t}-${e}`;return s}add(t){return g.runInAction(()=>{const e=this.getUniqueNodeId(t.id);e!==t.id&&t.setState("id",e),t.setDiagram(this),this._nodes.set(t.id,t)}),t}addEdge(t){t.from.addOutgoingEdge(t),t.to.addIncomingEdge(t)}connect(t,e,s){const n=new this.edgeClass(this,{hover:!1,dragging:!1,selected:!1,from:t,to:e,label:"",labelPositioning:new m([0,0]),steps:[]});return n.state.displacementStart=s?.fromDisplacement,n.state.displacementEnd=s?.toDisplacement,this.connectWithEdge(t,e,n)}connectWithEdge(t,e,s){const n=s;return t.addOutgoingEdge(n),e.addIncomingEdge(n),this._edges.set(n.id,n),n}delete(t){this.emit(new Ht(this,t)).cancelled||g.runInAction(()=>{t.gateways.forEach(e=>{e.incomingEdges.forEach(this.disconnect.bind(this)),e.outgoingEdges.forEach(this.disconnect.bind(this))}),this._nodes.delete(t.id),t.parent=null})}disconnect(t){this.emit(new be(this,t)).cancelled||g.runInAction(()=>{for(const e of this.nodes)for(const s of e.gateways)s.removeIncomingEdge(t),s.removeOutgoingEdge(t);this._edges.delete(t.id),t.parent=null})}Context=o(({children:t})=>u.jsx(On.Provider,{value:this,children:t}),"Context");getEdgeById(t){return this._edges.get(t)}getNodeById(t){return this._nodes.get(t)}get showGrid(){return this.rules.toggleGrid}getExtension(t){return this._extensions.get(t)}registerExtension(t){const e=new t(this);e.init(),this._extensions.set(t,e)}toggleGrid(){this.rules.toggleGrid=!this.rules.toggleGrid}export(){return JSON.stringify(this.serialize())}async reset(){let t=this._nodes.size===0;if(!t){let e=null;const s=this.emit(new Qe(this,n=>{e=n}));t=await e()&&!s.cancelled}if(t){for(const e of this._nodes.values())this.delete(e);return!0}return!1}serialize(){return{position:{x:this.canvas.displacement.x,y:this.canvas.displacement.y,scale:this.canvas.scale},nodes:this.nodes.map(t=>t.serialize())}}import(t){g.runInAction(()=>{const e=JSON.parse(t),s=e.position,n=!!s&&Number.isFinite(s.x)&&Number.isFinite(s.y)&&Number.isFinite(s.scale);if(n&&(this.canvas.setScale(s.scale),this.canvas.setDisplacement(new m([s.x,s.y]))),e.nodes){const r=new Map;e.nodes.forEach(a=>{const c=this.getClass(a.class);if(!c)throw new Error(`Unable to import node: unknown class '${a.class}'.`);const l=new c(this,{id:a.id}),d=this.add(l);r.set(a.id,d.id)}),e.nodes.forEach(a=>{const c=r.get(a.id);this.getNodeById(c).deserialize({...a,id:c,gateways:a.gateways.map(l=>({...l,outEdges:l.outEdges.map(d=>({...d,toParentId:r.get(d.toParentId)||d.toParentId}))}))})})}n||this.focusContentInViewportWithRetry()})}paste(t){g.runInAction(()=>{const e=JSON.parse(t);if(e.position&&(this.canvas.setScale(e.position.scale),this.canvas.setDisplacement(new m([e.position.x,e.position.y]))),e.nodes?.length){const s=new Map,n=[];e.nodes.forEach(l=>{const d=ds(this,"node",n);s.set(l.id,d),n.push(d)});let r=new m([1/0,1/0]);e.nodes.forEach(l=>{const d=new m([l.box[0],l.box[1]]);d.norm<r.norm&&(r=d)});const c=this.canvas.inverseFit(xt.getInstance().coordinates).substract(r);e.nodes.forEach(l=>{const d=this.getClass(l.class);if(!d)throw new Error(`Unable to paste node: unknown class '${l.class}'.`);const h=new d(this,{id:s.get(l.id)});this.add(h)}),e.nodes.forEach(l=>{const d=s.get(l.id);this.getNodeById(d).deserialize({...l,id:d,gateways:l.gateways.map(h=>({...h,outEdges:h.outEdges.map(x=>({...x,toParentId:s.get(x.toParentId)||x.toParentId}))})),box:[l.box[0]+c.x,l.box[1]+c.y,l.box[2],l.box[3]]})})}})}focusContentInViewport(t=80){if(!this.nodes.length)return!1;const e=this.canvas.frameDimensions;if(e.width<=0||e.height<=0)return!1;let s=1/0,n=1/0,r=-1/0,a=-1/0;for(const h of this.nodes){const x=h.box;s=Math.min(s,x.x),n=Math.min(n,x.y),r=Math.max(r,x.x+x.width),a=Math.max(a,x.y+x.height)}if(!Number.isFinite(s)||!Number.isFinite(n)||!Number.isFinite(r)||!Number.isFinite(a))return!1;const c=Math.max(1,r-s+t*2),l=Math.max(1,a-n+t*2),d=Math.max(.3,Math.min(3,Math.min(e.width/c,e.height/l)));return this.canvas.setScale(d),this.canvas.centerOnPoint(new m([(s+r)/2,(n+a)/2])),!0}focusContentInViewportWithRetry(t=8,e=32){this.focusContentInViewport()||t<=0||(this.focusContentTimer&&clearTimeout(this.focusContentTimer),this.focusContentTimer=setTimeout(()=>{this.focusContentInViewportWithRetry(t-1,e)},e))}};o(We,"Diagram"),K(We,"use",o(()=>E.useContext(On),"use"));let z=We;const Dn=o(({id:i,color:t,type:e,width:s,arrowSize:n,flip:r=!1})=>{const a=r?"180":"auto",c="white";switch(e){case"arrow":return u.jsx("marker",{id:i,markerWidth:n,markerHeight:n,refX:r?0:n*.9,refY:n/2,orient:a,markerUnits:"userSpaceOnUse",children:u.jsx("path",{d:`M0,0 L${n},${n/2} L0,${n} Z`,fill:t,className:"edge_marker_path"})});case"triangle":return u.jsx("marker",{id:i,markerWidth:n,markerHeight:n,refX:r?0:n,refY:n/2,orient:a,markerUnits:"userSpaceOnUse",children:u.jsx("path",{d:`M0,0 L${n},${n/2} L0,${n} Z`,fill:c,stroke:t,strokeWidth:s/2})});case"triangle-filled":return u.jsx("marker",{id:i,markerWidth:n,markerHeight:n,refX:r?0:n,refY:n/2,orient:a,markerUnits:"userSpaceOnUse",children:u.jsx("path",{d:`M0,0 L${n},${n/2} L0,${n} Z`,fill:t,className:"edge_marker_path"})});case"diamond":return u.jsx("marker",{id:i,markerWidth:n,markerHeight:n,refX:r?0:n*.9,refY:n/2,orient:a,markerUnits:"userSpaceOnUse",children:u.jsx("path",{d:`M0,${n/2} L${n/2},0 L${n},${n/2} L${n/2},${n} Z`,fill:"white",stroke:t,strokeWidth:s/2})});case"circle-small":return u.jsx("marker",{id:i,markerWidth:n,markerHeight:n,refX:n/2,refY:n/2,orient:a,markerUnits:"userSpaceOnUse",children:u.jsx("circle",{cx:n/2,cy:n/2,r:n/4,fill:"white",stroke:t,strokeWidth:s/2})});case"circle-medium":return u.jsx("marker",{id:i,markerWidth:n*1.5,markerHeight:n*1.5,refX:n*1.5/2,refY:n*1.5/2,orient:a,markerUnits:"userSpaceOnUse",children:u.jsx("circle",{cx:n*1.5/2,cy:n*1.5/2,r:n/2,fill:"white",stroke:t,strokeWidth:s/2})});case"measure":return u.jsx("marker",{id:i,markerWidth:n*5,markerHeight:n*5,refX:0,refY:n/2,orient:a,markerUnits:"userSpaceOnUse",children:u.jsx("path",{d:`M0,0 L0,${n/2}`,stroke:t,strokeWidth:3,strokeLinecap:"round"})});default:return null}},"EdgeMarker"),Ve=class Ve extends m{constructor(t,e,s,n){super(n),this.id=t,this.edge=e,this.points=s,this.assign(s[0].copy().sum(s[1]).divide(2)),g.makeObservable(this,{points:g.observable})}id;edge;points;copy(){return new Ve(this.id,this.edge,this.points,super.copy())}};o(Ve,"Midpoint");let ws=Ve;function Ir(i,t){const e=[];for(let s=0;s<t.length-1;s++){const n=[t[s],t[s+1]],r=n.filter(c=>c instanceof A&&c.mode==="static").length,a=i.steps.length===2&&t.length===2;r===2&&!a||e.push(new ws(String(s),i,n))}return e}o(Ir,"getSegmentMidpoints");const Cr={};function Lr(){const i=Cr;return i.DEBUG_EDGES===!0||i.DEBUG_EDGES==="true"}o(Lr,"debugEdgesEnabled");function jr(i,t){const e=i instanceof A?i.mode:"coordinate",s=i instanceof A?i.manualAxes:"none";return`${t}: x=${i.x}, y=${i.y}, mode=${e}, manualAxes=${s}`}o(jr,"formatPoint");function $r(i,t){const e=t.points[0],s=t.points[1],n=i.steps.findIndex((a,c)=>a===e&&i.steps[c+1]===s);if(n>=0)return n;const r=Number(t.id);return Number.isFinite(r)?r:null}o($r,"segmentIndexFor");function Br(i,t){if(t.type==="edge")return"clicked: edge path";if(t.type==="endpoint")return`clicked: endpoint ${t.endpoint}`;const e=$r(i,t.midpoint),s=e===null?"unknown":`${e} -> ${e+1}`;return["clicked: drag point",`dragPoint.midpointId=${t.midpoint.id}`,`dragPoint.renderedIndex=${t.renderedIndex}`,`dragPoint.segment=${s}`,`dragPoint.x=${t.midpoint.x}`,`dragPoint.y=${t.midpoint.y}`].join(`
2
- `)}o(Br,"formatClickedTarget");function Nr(i,t){return[`edge.id=${i.id}`,`from=${i.from.parent.id}.${i.from.id} orientation=${i.from.orientation}`,`to=${i.to.parent.id}.${i.to.id} orientation=${i.to.orientation}`,Br(i,t),"points:",...i.steps.map(jr)].join(`
3
- `)}o(Nr,"formatEdgeDebug");async function Or(i){if(navigator.clipboard?.writeText){await navigator.clipboard.writeText(i);return}const t=document.createElement("textarea");t.value=i,t.style.position="fixed",t.style.left="-9999px",document.body.appendChild(t),t.focus(),t.select(),document.execCommand("copy"),t.remove()}o(Or,"writeClipboard");function Qt(i,t){if(!i||!Lr())return;const e=Nr(i,t);Or(e).then(()=>{console.info("[DEBUG_EDGES] copied edge debug to clipboard",e)}).catch(s=>{console.warn("[DEBUG_EDGES] failed to copy edge debug to clipboard",s,e)})}o(Qt,"copyEdgeDebugToClipboard");const Dr=o(({edge:i,onMouseDown:t,points:e})=>{const s=Ir(i,e);return u.jsx(u.Fragment,{children:s.map((n,r)=>{const a=n.x,c=n.y;return u.jsx("rect",{x:a-6,y:c-6,width:12,height:12,rx:4,className:"edge_drag_point","data-edge-id":i.id,"data-midpoint-id":n.id,"data-midpoint-index":r,onMouseDownCapture:o(l=>{Qt(i,{type:"drag-point",midpoint:n,renderedIndex:r}),t(n,l)},"onMouseDownCapture")},n.id)})})},"EdgeMidpoints");function yt(i){return i&&(Object.assign(i,{__scalable:!0}),i)}o(yt,"makeScalableComponent");function zr(i){return i&&(Object.assign(i,{__scalableBack:!0}),i)}o(zr,"makeBackScalableComponent");const zn=yt(({coordinates:i,size:t=20,strokeWidth:e=2,rounded:s=!0,stroke:n="#ff0000"})=>{const r=t/2,a=s?"round":"butt";return u.jsxs(u.Fragment,{children:[u.jsx("line",{x1:i.x-r,y1:i.y,x2:i.x+r,y2:i.y,stroke:n,strokeWidth:e,strokeLinecap:a}),u.jsx("line",{x1:i.x,y1:i.y-r,x2:i.x,y2:i.y+r,stroke:n,strokeWidth:e,strokeLinecap:a})]})}),ue=class ue{showDragHints=!1;constructor(){g.makeAutoObservable(this)}};o(ue,"ToolsStates"),K(ue,"instance",new ue);let Oe=ue;function Tr(i){if(i instanceof A)switch(i.mode){case"auto":return"red";case"manual":return"green";case"static":return"yellow"}}o(Tr,"crossColor");function Fr(i){if(i.length<2)return null;const t=Math.max(0,Math.floor((i.length-2)/2)),e=i[t],s=i[t+1];return e.copy().sum(s).divide(2)}o(Fr,"getLabelAnchor");const Hr=w.observer(({edge:i,points:t})=>{const e=i?.state?.label??"",s=Fr(t);if(!i||!s)return null;const n=i.state.labelPositioning??new m([0,0]),r=s.x+n.x,a=s.y+n.y;return i.isEditingLabel?u.jsx("foreignObject",{x:r-90,y:a-18,width:180,height:36,children:u.jsx("input",{className:"edge-label-input",value:i.labelDraft??e,autoFocus:!0,onChange:o(l=>{g.runInAction(()=>{i.labelDraft=l.target.value})},"onChange"),onBlur:o(()=>i.confirmLabelEdit?.(),"onBlur"),onKeyDown:o(l=>{l.key==="Enter"&&(l.preventDefault(),i.confirmLabelEdit?.()),l.key==="Escape"&&(l.preventDefault(),i.cancelLabelEdit?.()),l.stopPropagation()},"onKeyDown")})}):e?u.jsxs("g",{className:"edge-label",onDoubleClick:o(l=>{l.stopPropagation(),i.beginLabelEdit?.()},"onDoubleClick"),children:[u.jsx("rect",{x:r-44,y:a-12,width:88,height:24,rx:6,ry:6}),u.jsx("text",{x:r,y:a,textAnchor:"middle",dominantBaseline:"middle",children:e})]}):null}),te=w.observer(({edge:i,points:t,color:e,width:s=2,arrowSize:n=8,startType:r="none",endType:a="arrow",lineStyle:c="solid",endStroke:l=e,startStroke:d=e,onMidpointMouseDown:h,onEndpointMouseDown:x,className:p,draggable:f})=>{const y=o(P=>E.useMemo(()=>`marker-${P}-${Math.random().toString(36).slice(2)}`,[]),"makeId"),v=y("start"),k=y("end");if(!t||t.length<2)return null;const $="M "+t.map(P=>`${P.x} ${P.y}`).join(" L "),M=c==="dashed"?`${s*3},${s*2}`:c==="dotted"?`${s},${s*2}`:"none",_=!!(i&&f&&(i.state.hover||i.state.dragging||i.state.selected)),H=!!(i&&f&&(i.state.selected||i.state.dragging));return u.jsxs("g",{"data-id":i?.id,className:["edge",i?.state.dragging&&"dragging",i?.state.selected&&"selected",i?.state.hover&&"hover",p].filter(Boolean).join(" "),onMouseEnter:o(()=>{g.runInAction(()=>{i&&(i.state.hover=!0)})},"onMouseEnter"),onMouseLeave:o(()=>{g.runInAction(()=>{i&&(i.state.hover=!1)})},"onMouseLeave"),children:[u.jsxs("defs",{children:[u.jsx(Dn,{id:v,color:d,type:r,width:s,arrowSize:n,flip:!1}),u.jsx(Dn,{id:k,color:l,type:a,width:s,arrowSize:n,flip:!1})]}),u.jsx("path",{d:$,strokeWidth:s+8,fill:"none",className:"edge-hover-area",onClickCapture:o(()=>{Qt(i,{type:"edge"})},"onClickCapture")}),u.jsx("path",{d:$,fill:"none",className:"edge-path",style:{"--edge-hover-stroke-width":`${Math.max(s+4,6)}px`},stroke:e,strokeWidth:s,strokeDasharray:M,markerStart:r!=="none"?`url(#${v})`:void 0,markerEnd:a!=="none"?`url(#${k})`:void 0,onClickCapture:o(()=>{Qt(i,{type:"edge"})},"onClickCapture")}),i&&u.jsx(Hr,{edge:i,points:t}),Oe.instance.showDragHints&&t.map((P,O)=>u.jsx(zn,{coordinates:P,size:15,stroke:Tr(P)},O)),_&&u.jsx(Dr,{edge:i,points:t,onMouseDown:o((P,O)=>{h?.(P,O)},"onMouseDown")}),H&&u.jsxs(u.Fragment,{children:[u.jsx("circle",{cx:t[0].x,cy:t[0].y,r:6,className:"edge_endpoint_drag_point","data-edge-id":i?.id,"data-endpoint":"from",onMouseDownCapture:o(P=>{Qt(i,{type:"endpoint",endpoint:"from"}),x?.("from",P)},"onMouseDownCapture")}),u.jsx("circle",{cx:t.at(-1).x,cy:t.at(-1).y,r:6,className:"edge_endpoint_drag_point","data-edge-id":i?.id,"data-endpoint":"to",onMouseDownCapture:o(P=>{Qt(i,{type:"endpoint",endpoint:"to"}),x?.("to",P)},"onMouseDownCapture")})]})]})}),Gr=yt(w.observer(()=>{const i=z.use(),t=i.getExtension(Jt),e=t.arrowSteps;return e.length?u.jsxs(u.Fragment,{children:[t?.candidateGateway&&u.jsx(zn,{coordinates:t.candidateGateway.coordinates,stroke:"yellow"}),u.jsx(te,{points:e,width:2*i.canvas.scale,arrowSize:8*i.canvas.scale})]}):null})),Rr=yt(w.observer(()=>{const t=z.use().getExtension(Yt);return t?.enabled?u.jsx(u.Fragment,{children:u.jsx(te,{points:t.get(),startType:"measure",endType:"measure",width:2,arrowSize:12,lineStyle:"dotted",startStroke:"red",endStroke:"red",className:"measurement"})}):null})),Yr=E.forwardRef(({children:i,paths:t,transform:e,selected:s,onClick:n,className:r,roundedBorders:a=!1,label:c,labelColor:l,labelFontSize:d,labelFontFamily:h="sans-serif",labelOffset:x,"data-id":p,...f},y)=>{const v=z.use();return u.jsxs("g",{...f,"data-id":p,className:`${r||""} ${s?"selected":""} base_shape`,transform:e,onClick:n,ref:y,children:[u.jsx("defs",{children:t.map((k,$)=>{if(!k.arrow)return null;const M=6,{size:_=M,color:H=k.stroke??"#111"}=k.arrow,P=`arrow-${$}`;return u.jsx("marker",{id:P,viewBox:"0 0 10 10",refX:M*1.5,refY:"5",markerWidth:_,markerHeight:_,orient:"auto-start-reverse",markerUnits:"userSpaceOnUse",children:u.jsx("path",{d:"M 0 0 L 10 5 L 0 10",fill:"none",stroke:H,strokeWidth:Math.max(1,M*.9),strokeLinecap:"round",strokeLinejoin:"round"})},$)})}),t.map((k,$)=>{const{d:M,fill:_="none",stroke:H="#111",strokeWidth:P=3,strokeStyle:O="solid",animated:L=!1,animationDuration:G=1,nonScalingStroke:it=!0,roundedBorders:ge=a,arrow:dt}=k;let ht;switch(O){case"dashed":ht="10 5";break;case"dotted":ht="2 6";break}const pe=L?u.jsx("animate",{attributeName:"stroke-dashoffset",from:"0",to:ht?`-${ht.split(" ").reduce((gn,ja)=>+gn+ +ja,0)}`:"-15",dur:`${G}s`,repeatCount:"indefinite"}):null,Xe=dt?`url(#arrow-${$})`:void 0;return u.jsx("path",{d:M,fill:_,stroke:H,strokeWidth:P,strokeDasharray:ht,strokeLinecap:ge?"round":"butt",strokeLinejoin:ge?"round":"miter",vectorEffect:it?"non-scaling-stroke":void 0,markerStart:dt?.position==="start"||dt?.position==="both"?Xe:void 0,markerEnd:!dt||dt.position==="end"||dt.position==="both"?Xe:void 0,children:pe},$)}),c&&u.jsx("text",{x:x?.x??0,y:x?.y??0,textAnchor:"middle",dominantBaseline:"middle",fontFamily:h,fontSize:d,fill:l,pointerEvents:"none",...v.canvas.scale>1?{shapeRendering:"geometricPrecision",style:{paintOrder:"stroke",stroke:"transparent",strokeWidth:.5,WebkitFontSmoothing:"antialiased",transform:"translateZ(0)"}}:{},children:c}),i]})}),ee=w.observer(Yr),Tn=o((i,t=0)=>{const{x:e,y:s,width:n,height:r}=i;if(t<=0)return`M${e},${s} h${n} v${r} h${-n}Z`;const a=Math.min(t,n/2,r/2);return[`M${e+a},${s}`,`h${n-2*a}`,`a${a},${a} 0 0 1 ${a},${a}`,`v${r-2*a}`,`a${a},${a} 0 0 1 ${-a},${a}`,`h${-(n-2*a)}`,`a${a},${a} 0 0 1 ${-a},${-a}`,`v${-(r-2*a)}`,`a${a},${a} 0 0 1 ${a},${-a}`,"Z"].join(" ")},"getRectPath"),Wr=o((i,t)=>`M ${i.x-t}, ${i.y}
1
+ (function(F,g){typeof exports=="object"&&typeof module<"u"?g(exports,require("mobx"),require("react"),require("mobx-react-lite"),require("svg-path-bbox")):typeof define=="function"&&define.amd?define(["exports","mobx","react","mobx-react-lite","svg-path-bbox"],g):(F=typeof globalThis<"u"?globalThis:F||self,g(F.FocusMattersDiagrams={},F.mobx,F.React,F.mobxReactLite))})(this,(function(F,g,M,A){"use strict";var Hr=Object.defineProperty;var Ul=(F,g,M)=>g in F?Hr(F,g,{enumerable:!0,configurable:!0,writable:!0,value:M}):F[g]=M;var o=(F,g)=>Hr(F,"name",{value:g,configurable:!0});var kt=(F,g,M)=>Ul(F,typeof g!="symbol"?g+"":g,M);var pe,fe,me,ye;const Ke=class Ke{showDragHints=!1;constructor(){g.makeAutoObservable(this)}};o(Ke,"ToolsStates"),kt(Ke,"instance",new Ke);let es=Ke;var Hs={exports:{}},xe={};var Ia;function Br(){if(Ia)return xe;Ia=1;var n=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function e(s,i,a){var r=null;if(a!==void 0&&(r=""+a),i.key!==void 0&&(r=""+i.key),"key"in i){a={};for(var c in i)c!=="key"&&(a[c]=i[c])}else a=i;return i=a.ref,{$$typeof:n,type:s,key:r,ref:i!==void 0?i:null,props:a}}return o(e,"jsxProd"),xe.Fragment=t,xe.jsx=e,xe.jsxs=e,xe}o(Br,"requireReactJsxRuntime_production");var Da;function Gr(){return Da||(Da=1,Hs.exports=Br()),Hs.exports}o(Gr,"requireJsxRuntime");var d=Gr();const dt=class dt{_data=[];constructor(t,e=!0){if(t||(t=[0,0,0,0]),Array.isArray(t)){if(t.length!==4)throw new Error("Invalid coordinates length");this._data=[...t]}else this._data=[...t._data];if(this.width<0){const s=this.width;this.x+=s,this.width=-s}if(this.height<0){const s=this.height;this.y+=s,this.height=-s}e&&g.makeAutoObservable(this)}get coordinates(){return new y(this.raw.slice(0,2))}get bottomLeft(){return new y([this.x,this.y+this.height])}get bottomMiddle(){return new y([this.x+this.width/2,this.y+this.height])}get bottomRight(){return new y([this.x+this.width,this.y+this.height])}get leftMiddle(){return new y([this.x,this.y+this.height/2])}get middle(){return new y([this.x+this.width/2,this.y+this.height/2])}get rightMiddle(){return new y([this.x+this.width,this.y+this.height/2])}get topLeft(){return this.coordinates}get topMiddle(){return new y([this.x+this.width/2,this.y])}get topRight(){return new y([this.x+this.width,this.y])}get size(){return new y(this.raw.slice(2,4))}get x(){return this.get(0)}get y(){return this.get(1)}get height(){return this.get(3)}get width(){return this.get(2)}set x(t){this.set(0,t)}set y(t){this.set(1,t)}set height(t){this.set(3,t)}set width(t){this.set(2,t)}get norm(){return this.size.substract(this.coordinates).norm}get length(){return this._data.length}get raw(){return g.toJS([...this._data])}get round(){return new dt([Math.round(this.x),Math.round(this.y),Math.round(this.width),Math.round(this.height)])}get style(){return{width:this.width,height:this.height,left:this.x,top:this.y}}assign(t){if(t.length!==4)throw new Error("Invalid number of Dimensions");const e=t instanceof dt?t:new dt(t);return this.set(0,e.get(0)),this.set(1,e.get(1)),this.set(2,e.get(2)),this.set(3,e.get(3)),this}assignCoordinates(t){if(t.length!==2)throw new Error("Invalid number of Coordinates");const e=t instanceof y?t:new y(t);return this.set(0,e.get(0)),this.set(1,e.get(1)),this}assignDimensions(t){if(t.length!==2)throw new Error("Invalid number of Coordinates");const e=t instanceof y?t:new y(t);return this.set(2,e.get(0)),this.set(3,e.get(1)),this}bound(t){this.x=Math.min(t.x+t.width-this.width,Math.max(t.x,this.x)),this.y=Math.min(t.y+t.height-this.height,Math.max(t.y,this.y))}collides(t,e=!1){if(t instanceof dt){const s=this.x-(e?1:0),i=this.x+this.width+(e?1:0),a=this.y-(e?1:0),r=this.y+this.height+(e?1:0),c=t.x,l=t.x+t.width,h=t.y,u=t.y+t.height;return!(i<=c||l<=s||r<=h||u<=a)}else{const s=this.x,i=this.x+this.width,a=this.y,r=this.y+this.height;return t.x>=s&&t.x<=i&&t.y>=a&&t.y<=r}}copy(){return new dt([this.x,this.y,this.width,this.height])}divide(t){return this.set(0,this.get(0)/t),this.set(1,this.get(1)/t),this.set(2,this.get(2)/t),this.set(3,this.get(3)/t),this}edgeDistanceX(t){return this.x>t.x+t.width?-(this.x-t.x-t.width):t.x>this.x+this.width?t.x-this.x-this.width:0}edgeDistanceY(t){return this.y>t.y+t.height?-(this.y-t.y-t.height):t.y>this.y+this.height?t.y-this.y-this.height:0}get(t){return this._data[t]}inflate(t){return this.copy().translate(new y([-t,-t])).assignDimensions(this.size.sum(new y([2*t,2*t])))}multiply(t){return this.set(0,this.get(0)*t),this.set(1,this.get(1)*t),this.set(2,this.get(2)*t),this.set(3,this.get(3)*t),this}scale(t){return this.set(2,this.get(2)+t.get(0)),this.set(3,this.get(3)+t.get(1)),this}set(t,e){this._data[t]=e}substract(t){if(t.length!==4)throw new Error("Invalid number of Dimensions");const e=t instanceof dt?t:new dt(t);return this.set(0,this.get(0)-e.get(0)),this.set(1,this.get(1)-e.get(1)),this.set(2,this.get(2)-e.get(2)),this.set(3,this.get(3)-e.get(3)),this}sum(t){if(t instanceof y)this.set(0,this.get(0)+t.get(0)),this.set(1,this.get(1)+t.get(1));else{if(t.length!==4)throw new Error("Invalid number of Dimensions");const e=t instanceof dt?t:new dt(t);this.set(0,this.get(0)+e.get(0)),this.set(1,this.get(1)+e.get(1)),this.set(2,this.get(2)+e.get(2)),this.set(3,this.get(3)+e.get(3))}return this}toString(){return`(${this.x}, ${this.y}, ${this.width}, ${this.height})`}translate(t){return this.set(0,this.get(0)+t.get(0)),this.set(1,this.get(1)+t.get(1)),this}};o(dt,"Dimensions");let S=dt;const Ln=class Ln{constructor(t){this.originalEvent=t}originalEvent;get button(){switch(this.originalEvent.button){case 1:return"left";case 2:return"right";case 4:return"middle";case 8:return"back";case 16:return"forward"}return"none"}get position(){return new y(this.originalEvent,!1)}get x(){return this.originalEvent.clientX}get y(){return this.originalEvent.clientY}};o(Ln,"MouseInformation");let Bs=Ln;const $n=class $n{constructor(t){this.src=t}src;_cancellable=!0;_cancelled=!1;_bubbles=!0;_spreads=!0;get bubbles(){return this._bubbles}get cancelled(){return this._cancelled}get spreads(){return this._spreads}cancellable(t){return this._cancellable=t,this}cancel(){this._cancellable&&(this._cancelled=!0)}stopPropagation(){this._bubbles=!1}stopImmediatePropagation(){this._spreads=!1,this.stopPropagation()}};o($n,"DEvent");let ss=$n;const zn=class zn extends ss{};o(zn,"DUIEvent");let ne=zn;const On=class On extends ne{constructor(t,e){super(t),this.src=t,this.originalEvent=e,this.mouse=new Bs(e)}src;originalEvent;mouse;get ctrl(){return this.originalEvent.ctrlKey}get edge(){return this.src.diagram?.getEdgeById(this.originalEvent.target?.closest(".edge")?.dataset.id||"")}get node(){const t=this.originalEvent.target,e=t&&typeof t.closest=="function"?t:null,s=e?.closest(".diagram__node, .node__screenHitArea")?.dataset.id,i=e?.closest("[data-gateway-parent]")?.dataset.gatewayParent;if(s||i)return this.src.diagram?.getNodeById(s||i);if(e?.closest(".edge")&&"clientX"in this.originalEvent&&"clientY"in this.originalEvent){const a=document.elementsFromPoint(this.originalEvent.clientX,this.originalEvent.clientY).find(r=>r.closest(".diagram__node"))?.closest(".diagram__node");return this.src.diagram?.getNodeById(a?.dataset.id||"")}}get shift(){return this.originalEvent.shiftKey}get target(){return this.originalEvent.target}};o(On,"DMouseEvent");let At=On;const Fn=class Fn extends At{};o(Fn,"DClickEvent");let ns=Fn;const Hn=class Hn extends At{};o(Hn,"DDoubleClickEvent");let is=Hn;const Bn=class Bn extends At{};o(Bn,"DMouseDownEvent");let Pt=Bn;const Gn=class Gn extends At{};o(Gn,"DMouseUpEvent");let tt=Gn;const Rn=class Rn extends At{};o(Rn,"DMouseMoveEvent");let Ct=Rn;const Vn=class Vn extends At{constructor(t,e){super(t,e),this.originalEvent=e}originalEvent;get directionX(){return this.originalEvent.deltaX<0?"left":this.originalEvent.deltaX>0?"right":"none"}get directionY(){return this.originalEvent.deltaY<0?"up":this.originalEvent.deltaY>0?"down":"none"}};o(Vn,"DWheelEvent");let Gs=Vn;const Yn=class Yn extends ne{constructor(t,e){super(t),this.originalEvent=e}originalEvent;get code(){return this.originalEvent.code}get alt(){return this.originalEvent.altKey}get ctrl(){return this.originalEvent.ctrlKey}get shift(){return this.originalEvent.shiftKey}};o(Yn,"DKeyboardEvent");let be=Yn;const Wn=class Wn extends be{constructor(t,e){super(t,e),this.originalEvent=e}originalEvent};o(Wn,"DKeyDownEvent");let Rt=Wn;const Zn=class Zn extends be{constructor(t,e){super(t,e),this.originalEvent=e}originalEvent};o(Zn,"DKeyUpEvent");let we=Zn;const Xn=class Xn extends be{constructor(t,e){super(t,e),this.orignalEvent=e}orignalEvent};o(Xn,"DKeyPressEvent");let Rs=Xn;const qn=class qn extends ne{};o(qn,"DCanvasEvent");let ve=qn;const Un=class Un extends ve{constructor(t,e,s,i){super(t),this.displacement=e,this.newScale=s,this.previousScale=i}displacement;newScale;previousScale};o(Un,"DScaleEvent");let Ee=Un;const Kn=class Kn extends ve{constructor(t,e,s){super(t),this.previousDisplacement=e,this.displacement=s}previousDisplacement;displacement};o(Kn,"DDisplaceEvent");let Vs=Kn;const Jn=class Jn extends ss{};o(Jn,"DChangeEvent");let et=Jn;const Qn=class Qn extends et{constructor(t,e){super(t),e(this.resolve.bind(this))}callbacks=[];defer(t){this.callbacks.push(t)}async resolve(){return(await Promise.all(this.callbacks.map(t=>t()))).every(t=>t)}};o(Qn,"DResetGraphEvent");let Ys=Qn;const ti=class ti extends et{};o(ti,"DNodesConnectionEvent");let _e=ti;const ei=class ei extends _e{constructor(t,e){super(t),this.origin=e}origin};o(ei,"DNodeConnectionIntentEvent");let Ws=ei;const si=class si extends _e{constructor(t,e,s){super(t),this.origin=e,this.target=s}origin;target};o(si,"DNodesConnectActionEvent");let Se=si;const ni=class ni extends et{};o(ni,"DNodeChangeTypeEvent");let Vt=ni;const ii=class ii extends et{constructor(t,e){super(t),this.src=t,this.node=e}src;node};o(ii,"DDeleteNodeEvent");let ie=ii;const ai=class ai extends et{constructor(t,e){super(t),this.src=t,this.edge=e}src;edge};o(ai,"DDeleteEdgeEvent");let as=ai;const ri=class ri extends ne{constructor(t,e){super(t),this.src=t,this.selected=e}src;selected};o(ri,"DSelectionEvent");let Me=ri;const oi=class oi extends Me{constructor(t,e){super(t,e),this.src=t}src};o(oi,"DNodeSelectionEvent");let ke=oi;const ci=class ci extends Me{constructor(t,e){super(t,e),this.src=t}src};o(ci,"DEdgeSelectionEvent");let rs=ci;const li=class li extends et{constructor(t,e){super(t),this.src=t,this.originalEvent=e}src;originalEvent};o(li,"DDragEvent");let Ot=li;const di=class di extends Ot{constructor(t,e,s){super(t,s),this.src=t,this.midPoint=e,this.originalEvent=s}src;midPoint;originalEvent};o(di,"DEdgeDragStartEvent");let os=di;const hi=class hi extends Ot{constructor(t,e,s){super(t,s),this.src=t,this.endpoint=e,this.originalEvent=s}src;endpoint;originalEvent};o(hi,"DEdgeEndpointDragStartEvent");let cs=hi;const ui=class ui{constructor(t,e){this.node=t,this.newBox=e,this._updated=e.copy()}node;newBox;_cancelled=!1;_updated;_lockX=null;_lockY=null;cancel(){this._cancelled=!0}get current(){return this._updated.copy()}get cancelled(){return this._cancelled}get(){return this._updated}lockX(){this._lockX=this._updated.x}lockY(){this._lockY=this._updated.y}update(t){this._updated=t,this._lockX!==null&&(this._updated.x=this._lockX),this._lockY!==null&&(this._updated.y=this._lockY)}updateX(t){this._lockX===null&&(this._updated.x=t)}updateY(t){this._lockY===null&&(this._updated.y=t)}};o(ui,"NodePositionProposal");let Ae=ui;const gi=class gi extends Ot{constructor(t,e,s){super(t,s),this.src=t,this.proposals=e}src;proposals};o(gi,"DDragNodeEvent");let ht=gi;const pi=class pi{constructor(t,e){this.point=t,this.movedAxis=e,this._updated=t.copy()}point;movedAxis;_updated;_lockX=null;_lockY=null;get current(){return this._updated.copy()}get(){return this._updated}lockX(){this._lockX=this._updated.x}lockY(){this._lockY=this._updated.y}update(t){this._updated=t.copy(),this._lockX!==null&&(this._updated.x=this._lockX),this._lockY!==null&&(this._updated.y=this._lockY)}updateX(t){this._lockX===null&&(this._updated.x=t)}updateY(t){this._lockY===null&&(this._updated.y=t)}};o(pi,"EdgePointPositionProposal");let ls=pi;const fi=class fi extends Ot{constructor(t,e,s,i){super(t,i),this.src=t,this.proposals=e,this.movedAxis=s}src;proposals;movedAxis};o(fi,"DDragEdgeSegmentEvent");let ds=fi;async function Rr(){return(await Promise.resolve().then(()=>Xl)).DirectedPoint}o(Rr,"getDirectedClass");let Zs=null;const U=class U{_data=[];constructor(t,e=!0){if(t||(t=[0,0]),Array.isArray(t)){if(t.length!==2)throw new Error("Invalid coordinates length");this._data=[...t]}else t instanceof U?this._data=[...t._data]:t instanceof At||t instanceof Ot?this._data=[t.originalEvent.clientX,t.originalEvent.clientY]:t.clientX!==void 0?this._data=[t.clientX,t.clientY]:this._data=[0,0];e&&g.makeObservable(this,{_data:g.observable,set:g.action})}bound(t){return this.x=Math.min(t.get(2),Math.max(t.get(0),this.x)),this.y=Math.min(t.get(3),Math.max(t.get(1),this.y)),this}get abs(){return new U([Math.abs(this.x),Math.abs(this.y)])}assign(t){if(t.length!==2)throw new Error("Invalid number of coordinates");const e=t instanceof U?t:new U(t);return this.set(0,e.get(0)),this.set(1,e.get(1)),this}copy(t=!0){return new U(this,t)}distance(t){return this.copy().substract(t).norm}distanceManhattan(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)}divide(t){const e=t instanceof U?t.x:t,s=t instanceof U?t.y:t;return this.set(0,this.get(0)/e),this.set(1,this.get(1)/s),this}equals(t){return this.copy().substract(t).norm===0}get(t){return this._data[t]}get length(){return this._data.length}max(t){return new U([Math.max(t,this.x),Math.max(t,this.y)])}get nonObserved(){return new U(this,!1)}get raw(){return g.toJS([...this._data])}get round(){return new U([Math.round(this.x),Math.round(this.y)])}get half(){return this.copy().multiply(.5)}get norm(){return Math.sqrt(this.x**2+this.y**2)}get style(){return{left:this.x,top:this.y}}multiply(t){return typeof t=="number"?(this.set(0,this.get(0)*t),this.set(1,this.get(1)*t)):t instanceof U&&(this.set(0,this.get(0)*t.get(0)),this.set(1,this.get(1)*t.get(1))),this}set(t,e){return this._data[t]=e,this}snapToGrid(t,e="both"){return e!=="y"&&(this.x=Math.round(this.x/t)*t),e!=="x"&&(this.y=Math.round(this.y/t)*t),this}substract(t){if(t.length!==2)throw new Error("Invalid number of coordinates");const e=t instanceof U?t:new U(t);return this.set(0,this.get(0)-e.get(0)),this.set(1,this.get(1)-e.get(1)),this}sum(t){if(typeof t=="number")this.set(0,this.get(0)+t),this.set(1,this.get(1)+t);else{if(t.length!==2)throw new Error("Invalid number of coordinates");const e=t instanceof U?t:new U(t);this.set(0,this.get(0)+e.get(0)),this.set(1,this.get(1)+e.get(1))}return this}toDirectedPoint(t){if(Zs===null){Rr().then(i=>{Zs=i});const s=this.copy(!1);return s.direction=t,s}const e=new Zs(this);return e.direction=t,e}toDimensions(t){return new S([...this.raw,...t.raw])}get x(){return this.get(0)}get y(){return this.get(1)}set x(t){this.set(0,t)}set y(t){this.set(1,t)}toString(){return`(${this.x}, ${this.y})`}};o(U,"Coordinates");let y=U;const Je=class Je{static getInstance(){return this.instance||(this.instance=new Je),this.instance}x=0;y=0;get coordinates(){return new y([this.x,this.y])}constructor(){g.makeAutoObservable(this),document.addEventListener("mousemove",t=>{g.runInAction(()=>{this.x=t.clientX,this.y=t.clientY})})}};o(Je,"Mouse"),kt(Je,"instance",null);let ae=Je;const ja={};function Pe(n,t,e=[]){let s=ja[t]||0;for(;e.includes(`${t}${s}`)||n.getNodeById(`${t}${s}`);)s++;return ja[t]=s+1,`${t}${s}`}o(Pe,"getIdForNode");function Vr(n){const t=[];let e=n;for(;e&&e!==Object;)t.push(e),e=Object.getPrototypeOf(e);return t}o(Vr,"getClassHierarchy");let Yt=(pe=class{constructor(t){this.parent=t,g.makeObservable(this,{parent:g.observable,diagram:g.computed})}parent;callbacks=new Map;emit(t){const e=[];for(const s of Vr(t.constructor)){const i=this.callbacks.get(s);i&&e.push(...i)}e.sort((s,i)=>i.priority-s.priority);for(const{cb:s}of e)if(s(t),!t.spreads)return t;return t.bubbles&&this.parent?.emit(t),t}get diagram(){let t=this.parent;for(;t?.parent;)t=t.parent;return t}onEvent(t,e,s=0){let i=this.callbacks.get(t);return i||(i=[],this.callbacks.set(t,i)),i.push({cb:e,priority:s}),()=>this.offEvent(t,e)}offEvent(t,e){const s=this.callbacks.get(t);s&&this.callbacks.set(t,s.filter(i=>i.cb!==e))}},o(pe,"Element"),pe);function Yr(n,t,e="text/plain"){const s=new Blob([n],{type:e}),i=URL.createObjectURL(s),a=document.createElement("a");a.href=i,a.download=t,a.style.display="none",document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(i)}o(Yr,"downloadFile");const mi=class mi extends Yt{constructor(t){super(t),g.makeObservable(this,{_enable:g.observable,toggle:g.action}),this._enable=localStorage.getItem(`enable_${this.constructor.name}`)!=="false"}RenderUI=null;RenderDiagram=null;get diagram(){return this.parent}_enable=!0;get enabled(){return this._enable}disable(){this._enable=!1}enable(){this._enable=!0}toggle(t=!this._enable,e=!0){this._enable=t,e&&localStorage.setItem(`enable_${this.constructor.name}`,String(this._enable))}};o(mi,"DiagramExtension");let z=mi;const Xs=new WeakMap;let Wr=0;const ct={mark(n,t){const e=Xs.get(n)??{};e[t]===void 0&&(e[t]=Wr++,Xs.set(n,e))},get(n,t){return Xs.get(n)?.[t]}};function Na(n,t){return!n||t.score<n.score?t:n}o(Na,"nearest");const yi=class yi extends z{gridSize=25;proposals=[];clear(){this.proposals=[]}init(){g.makeObservable(this,{clear:g.action,proposals:g.observable}),this.diagram.onEvent(tt,()=>this.clear()),this.diagram.onEvent(ht,t=>this.balance(t),this.diagram.priorities.Drag_Node_Distances_Balancer)}balance(t){if(this.clear(),!this.enabled||t.proposals.length===0)return;const e=new Set(t.proposals.map(({node:c})=>c.id)),s=this.diagram.canvas.frameDimensions.norm/2;let i=null,a=null;for(const c of t.proposals){if(c.cancelled)continue;const l=c.get(),h=this.findNeighbors(l,e,s);if(h.top&&h.bottom){const u=-l.edgeDistanceY(h.top.box),f=l.edgeDistanceY(h.bottom.box),p=Math.abs(u-f);p<this.gridSize&&(a=Na(a,{proposal:c,score:p,target:(h.top.box.bottomMiddle.y+h.bottom.box.topMiddle.y)/2-l.height/2,guides:[{from:l.topMiddle,to:new y([l.topMiddle.x,h.top.box.bottomMiddle.y])},{from:l.bottomMiddle,to:new y([l.bottomMiddle.x,h.bottom.box.topMiddle.y])}]}))}if(h.left&&h.right){const u=-l.edgeDistanceX(h.left.box),f=l.edgeDistanceX(h.right.box),p=Math.abs(f-u);p<this.gridSize&&(i=Na(i,{proposal:c,score:p,target:(h.right.box.leftMiddle.x+h.left.box.rightMiddle.x)/2-l.width/2,guides:[{from:l.rightMiddle,to:new y([h.right.box.leftMiddle.x,l.rightMiddle.y])},{from:l.leftMiddle,to:new y([h.left.box.rightMiddle.x,l.leftMiddle.y])}]}))}}const r=[...i?.guides??[],...a?.guides??[]];g.runInAction(()=>{this.proposals=r}),this.applyCandidate(i,"x"),this.applyCandidate(a,"y")}findNeighbors(t,e,s){let i=null,a=null,r=null,c=null,l=1/0,h=1/0,u=1/0,f=1/0;for(const p of this.diagram.nodes){if(e.has(p.id))continue;const m=t.edgeDistanceX(p.box),x=t.edgeDistanceY(p.box);x===0&&m<0&&-m<u&&(u=-m,r=p),x===0&&m>0&&m<f&&(f=m,c=p),m===0&&x<0&&-x<l&&(l=-x,i=p),m===0&&x>0&&x<h&&(h=x,a=p)}return{top:l<s?i:null,bottom:h<s?a:null,left:u<s?r:null,right:f<s?c:null}}applyCandidate(t,e){if(t){if(e==="x"){t.proposal.updateX(t.target),ct.mark(t.proposal,"x"),t.proposal.lockX();return}t.proposal.updateY(t.target),ct.mark(t.proposal,"y"),t.proposal.lockY()}}};o(yi,"DistancesBalancer");let Ce=yi;const xi=class xi extends z{gridSize=50;init(){g.makeObservable(this,{gridSize:g.observable}),this.diagram.onEvent(ht,t=>{if(this._enable)for(const e of t.proposals){const s=new y([Math.round(e.newBox.coordinates.x/this.gridSize)*this.gridSize,Math.round(e.newBox.coordinates.y/this.gridSize)*this.gridSize]);e.update(new S([...s.raw,...e.newBox.size.raw])),e.lockX(),e.lockY()}},this.diagram.priorities.Drag_Node_Snap_To_Grid),this.diagram.onEvent(ds,t=>{if(this._enable)for(const e of t.proposals){const s=e.get().copy();s.snapToGrid(this.gridSize,t.movedAxis),e.update(s),t.movedAxis==="x"?e.lockY():e.lockX()}},this.diagram.priorities.Drag_Edge_Snap_To_Grid)}};o(xi,"GridSnap");let G=xi;const bi=class bi extends z{windowTime=20;maxSize=50;index=-1;snapshots=[];draggingNodes=!1;async avoidEvents(t){this.disable();try{await t()}finally{this.enable()}}restoreSnapshot(t){return this.avoidEvents(async()=>{this.clearTransientExtensions(),this.draggingNodes=!1;const e=JSON.parse(t);e.position=this.checkpointPosition(),await this.diagram.reset(),this.diagram.import(JSON.stringify(e))})}clearTransientExtensions(){this.diagram.extensions.forEach(t=>{t.clear?.()})}checkpointPosition(){const t=this.diagram.canvas.displacement;return{x:t.x,y:t.y,scale:this.diagram.canvas.scale}}unbind=o(()=>{},"unbind");window(){this.enabled&&(this.unbind(),this.unbind=pt(wo(()=>{g.runInAction(()=>{const t=this.diagram.serialize();this.snapshots.splice(this.index+1),this.snapshots.push(JSON.stringify(t)),this.snapshots.splice(0,Math.max(0,this.snapshots.length-this.maxSize)),this.index=this.snapshots.length-1})},this.windowTime)))}redo(){if(this.hasNext)return this.index=Math.min(this.snapshots.length-1,this.index+1),this.restoreSnapshot(this.snapshots[this.index])}undo(){if(this.hasPrevious)return this.index=Math.max(-1,this.index-1),this.restoreSnapshot(this.snapshots[this.index]||"{}")}get hasNext(){return this.index<this.snapshots.length-1}get hasPrevious(){return this.index>-1}init(){g.makeObservable(this,{index:g.observable,hasNext:g.computed,hasPrevious:g.computed,redo:g.action,undo:g.action}),this.diagram.onEvent(et,t=>{if(t instanceof ht){this.draggingNodes=!0;return}t.cancelled||this.window()},this.diagram.priorities.Change_History),this.diagram.onEvent(tt,()=>{this.draggingNodes&&(this.draggingNodes=!1,this.window())}),this.window()}};o(bi,"History");let Ie=bi;const wi=class wi extends z{init(){g.makeObservable(this,{_enabled:g.observable,endPoint:g.observable,startPoint:g.observable}),this.diagram.canvas.onEvent(Pt,this.handleMouseDown.bind(this),this.diagram.priorities.Mouse_Down_Measurer)}_enabled=!1;toggle(){this._enabled=!this._enabled}get enabled(){return this._enabled}endPoint=null;startPoint=null;get(){return this.startPoint?[this.startPoint,this.endPoint]:[]}getMeassurement(){return this.endPoint?.copy().substract(this.startPoint).norm}u=o(()=>{},"u");handleMouseDown(t){this._enabled&&(t.cancel(),t.stopImmediatePropagation(),this.u(),this.u=pt(R(this,"mousemove",this.handleMouseMove),R(this,"mouseup",this.handleMouseUp)),this.startPoint=this.diagram.canvas.inverseFit(new y(t)),this.endPoint=this.diagram.canvas.inverseFit(new y(t)))}handleMouseMove(t){this.startPoint&&this._enabled&&(this.endPoint=this.diagram.canvas.inverseFit(new y(t)))}handleMouseUp(){this.endPoint=null,this.startPoint=null}};o(wi,"Measurer");let De=wi;const hs=new Map;function Wt(n){hs.has(n)||hs.set(n,Number.MIN_SAFE_INTEGER);const t=hs.get(n);return hs.set(n,t+1),`${n}_${t}`}o(Wt,"getUniqueId");function re(n,t){return n<=t?[n,t]:[t,n]}o(re,"orderedRange$1");function Ft(n,t){return Number.isFinite(t.distance)&&(!n||t.distance<n.distance)?t:n}o(Ft,"closer$1");const vi=class vi extends z{gridSize=50;horizontalSuggestionProviders=[];verticalSuggestionProviders=[];proposals=[];registerHorizontalSuggestionProvider(t){return this.horizontalSuggestionProviders.push(t),()=>{this.horizontalSuggestionProviders=this.horizontalSuggestionProviders.filter(e=>e!==t)}}registerVerticalSuggestionProvider(t){return this.verticalSuggestionProviders.push(t),()=>{this.verticalSuggestionProviders=this.verticalSuggestionProviders.filter(e=>e!==t)}}clear(){this.proposals=[]}init(){g.makeObservable(this,{clear:g.action,proposals:g.observable}),R(this,"keydown",t=>{t.ctrlKey&&this.clear()}),this.diagram.onEvent(tt,()=>this.clear()),this.diagram.onEvent(ht,t=>this.align(t),this.diagram.priorities.Drag_Node_Aligner)}align(t){if(this.clear(),!this.enabled||t.proposals.length===0)return;const e=this.diagram.canvas.frameDimensions.norm/2,s=this.gridSize/5*2,i=this.gridSize/3,a=new Set(t.proposals.map(({node:f})=>f.id)),r=t.proposals.some(f=>ct.get(f,"x")!==void 0),c=t.proposals.some(f=>ct.get(f,"y")!==void 0);let l=null,h=null;for(const f of t.proposals){if(f.cancelled)continue;const p=f.get();for(const m of this.diagram.nodes){if(a.has(m.id))continue;const x=Math.abs(p.edgeDistanceX(m.box)),b=Math.abs(p.edgeDistanceY(m.box));!c&&x<e&&(h=Ft(h,this.verticalCandidate(f,Math.abs(m.box.middle.y-p.middle.y),m.box.middle.y-p.height/2,m.box.middle.y,re(m.box.rightMiddle.x,p.x),s)),h=Ft(h,this.verticalCandidate(f,Math.abs(m.box.y-p.y),m.box.y,m.box.y,re(m.box.rightMiddle.x,p.x),s)),h=Ft(h,this.verticalCandidate(f,Math.abs(m.box.bottomMiddle.y-p.bottomMiddle.y),m.box.bottomMiddle.y-p.height,m.box.bottomMiddle.y,re(m.box.rightMiddle.x,p.x),s))),!r&&b<e&&(l=Ft(l,this.horizontalCandidate(f,Math.abs(m.box.x-p.x),m.box.x,m.box.x,re(m.box.bottomMiddle.y,p.y),s)),l=Ft(l,this.horizontalCandidate(f,Math.abs(m.box.middle.x-p.middle.x),m.box.middle.x-p.width/2,m.box.middle.x,re(m.box.bottomMiddle.y,p.y),s)),l=Ft(l,this.horizontalCandidate(f,Math.abs(m.box.rightMiddle.x-p.rightMiddle.x),m.box.rightMiddle.x-p.width,m.box.rightMiddle.x,re(m.box.bottomMiddle.y,p.y),s)))}if(!c)for(const m of this.verticalSuggestionProviders.flatMap(x=>x(f.node,p)))h=Ft(h,this.verticalCandidate(f,Math.abs(m.nodeY-p.y),m.nodeY,m.guideY,m.range,s));if(!r)for(const m of this.horizontalSuggestionProviders.flatMap(x=>x(f.node,p)))l=Ft(l,this.horizontalCandidate(f,Math.abs(m.nodeX-p.x),m.nodeX,m.guideX,m.range,s))}const u=[l?.guide,h?.guide].filter(f=>!!f);g.runInAction(()=>{this.proposals=u}),this.applyCandidate(l,"x",i),this.applyCandidate(h,"y",i)}verticalCandidate(t,e,s,i,a,r){return{proposal:t,distance:e<r?e:1/0,target:s,guide:{type:"v",y:i,range:a,id:Wt("alignment-proposal")}}}horizontalCandidate(t,e,s,i,a,r){return{proposal:t,distance:e<r?e:1/0,target:s,guide:{type:"h",x:i,range:a,id:Wt("alignment-proposal")}}}applyCandidate(t,e,s){if(!(!t||t.distance>=s)){if(e==="x"){if(t.proposal.updateX(t.target),Math.abs(t.proposal.get().x-t.target)>.001)return;ct.mark(t.proposal,"x"),t.proposal.lockX();return}t.proposal.updateY(t.target),!(Math.abs(t.proposal.get().y-t.target)>.001)&&(ct.mark(t.proposal,"y"),t.proposal.lockY())}}};o(vi,"NodesAligner");let Zt=vi;const se=class se{constructor(t){this.diagram=t}diagram;displace(t){if(!this.diagram.rules.displaceWhenDragOnEdges)return new y;const e=this.diagram.canvas.frameDimensions,s=new y([this.axisDisplacement(t.x,e.x,e.width),this.axisDisplacement(t.y,e.y,e.height)]);return s.norm>0&&this.diagram.canvas.displace(s),s}axisDisplacement(t,e,s){const i=t-e;if(i<se.edgeThreshold)return this.step(i);const a=e+s-t;return a<se.edgeThreshold?-this.step(a):0}step(t){const e=Math.max(t,0);return((se.edgeThreshold-e)/10)**2}};o(se,"Autopan"),kt(se,"edgeThreshold",100);let ut=se;const Ei=class Ei extends et{};o(Ei,"DEdgeLabelChangeEvent");let oe=Ei;const _i=class _i extends Yt{id;text;alignment;size;position;isEditing;draft;isNew;constructor(t,e,s=!1){super(t),this.id=e.id??Wt("edge-label"),this.text=e.text??"",this.alignment=e.alignment??"left",this.size=e.size??{height:30,width:180},this.position=e.position,this.isNew=s,this.isEditing=s,this.draft=this.text,g.makeObservable(this,{text:g.observable,alignment:g.observable,size:g.observable,position:g.observable,isEditing:g.observable,draft:g.observable,setText:g.action,setAlignment:g.action,setSize:g.action,beginEdit:g.action,setDraft:g.action,cancelEdit:g.action,confirmEdit:g.action,setPosition:g.action})}setText(t){this.text=t,this.draft=t,this.isNew=!1}setAlignment(t){this.alignment!==t&&(this.alignment=t,this.emit(new oe(this)))}setSize(t){this.size=t}beginEdit(){this.draft=this.text,this.isEditing=!0}setDraft(t){this.draft=t}cancelEdit(){if(this.isNew){this.parent.removeLabel(this,!1);return}this.draft=this.text,this.isEditing=!1}delete(){this.parent.removeLabel(this,!this.isNew)}confirmEdit(){if(!this.draft){this.parent.removeLabel(this,!this.isNew);return}const t=this.isNew||this.draft!==this.text;this.text=this.draft,this.isNew=!1,this.isEditing=!1,t&&this.emit(new oe(this))}setPosition(t){this.position.assign(t)}commitPosition(){this.emit(new oe(this))}serialize(){return{alignment:this.alignment,id:this.id,size:this.size,text:this.text,position:this.position.raw}}};o(_i,"EdgeLabel");let je=_i;const Qe=class Qe extends y{constructor(t,e){super(Array.isArray(e)?e.slice(0,2):e),this.parent=t,g.makeObservable(this,{manualAxes:g.observable,mode:g.observable}),e instanceof Qe?(this.mode=e.mode,this.manualAxes=e.manualAxes):Array.isArray(e)&&e.length===3?(this.mode=e[2],this.manualAxes=this.mode==="manual"||this.mode==="static"?"both":"none"):Array.isArray(e)&&e.length>=4&&(this.mode=e[2],this.manualAxes=e[3])}parent;mode="auto";manualAxes="none";get manualX(){return this.mode==="manual"&&["x","both"].includes(this.manualAxes)}get manualY(){return this.mode==="manual"&&["y","both"].includes(this.manualAxes)}addManualAxis(t){return this.mode==="static"?this:(this.mode="manual",t==="both"||this.manualAxes==="both"?this.manualAxes="both":this.manualAxes==="none"?this.manualAxes=t:this.manualAxes!==t&&(this.manualAxes="both"),this)}hasManualAxis(t){return t==="x"?this.manualX:this.manualY}markStatic(){return this.mode="static",this.manualAxes="both",this}copy(){return new Qe(this.parent,[this.x,this.y,this.mode,this.manualAxes])}toString(t=!1){return t?`(${this.x}, ${this.y}): ${this.mode}/${this.manualAxes}`:super.toString()}};o(Qe,"EdgePoint");let O=Qe,Zr=Number.MIN_SAFE_INTEGER;function Ta(n){return n==="straight"||n==="curved"?n:"orthogonal"}o(Ta,"normalizePathType");function Xr(n,t){if(!n)return{mode:"fixed"};const e=n.parent.box,s=n.coordinates.copy().sum(t??new y);return{mode:"fixed",position:new y([(s.x-e.x)/Math.max(e.width,.001),(s.y-e.y)/Math.max(e.height,.001)])}}o(Xr,"fixedAnchorForGateway");function us(n,t,e){return n?.mode==="automatic"?{mode:"automatic"}:n?.position?{mode:"fixed",position:n.position instanceof y?n.position:new y(n.position)}:Xr(t,e)}o(us,"normalizeAnchor");function qr(n,t){return n?n.copy(!1).substract(t.relativePosition).norm<.001:!0}o(qr,"isGatewayAnchorPosition");const Si=class Si extends Yt{constructor(t,e){super(t),this.state=e,this.state.pathType=Ta(this.state.pathType),this.state.startAnchor=us(this.state.startAnchor,this.state.from,this.state.displacementStart),this.state.endAnchor=us(this.state.endAnchor,this.state.to,this.state.displacementEnd),g.makeObservable(this,{state:g.observable,setSteps:g.action,setPathType:g.action,setEndpointAnchor:g.action,setResolvedEndpoint:g.action,applyResolvedAnchors:g.action,createLabel:g.action,removeLabel:g.action,setPrimaryLabel:g.action,arrowHeadEnd:g.computed,arrowHeadStart:g.computed,from:g.computed,hasManualSteps:g.computed,pathType:g.computed,steps:g.computed,stroke:g.computed,strokeWidth:g.computed,setState:g.action})}state;id=String(Zr++);get arrowHeadEnd(){return this.state.arrowHeadEnd}get arrowHeadStart(){return this.state.arrowHeadStart}get from(){return this.state.from}get hasManualSteps(){return this.state.steps.find(t=>t.mode==="manual")}get lineStyle(){return this.state.lineStyle}get pathType(){return this.state.pathType}get startAnchor(){return this.state.startAnchor}get endAnchor(){return this.state.endAnchor}get steps(){return this.state.steps}get stroke(){return this.state.stroke}get strokeWidth(){return this.state.strokeWidth}get labels(){return this.state.labels}createLabel(t){const e=new je(this,{position:t},!0);return this.state.labels.push(e),e}removeLabel(t,e=!0){const s=this.state.labels.indexOf(t);s<0||(this.state.labels.splice(s,1),e&&this.emit(new oe(this)))}setPrimaryLabel(t){const e=this.state.labels[0];if(!t)return e&&this.removeLabel(e,!1),null;if(e)return e.setText(t),e;const s=new je(this,{text:t,position:this.defaultLabelPosition()});return this.state.labels.push(s),s}defaultLabelPosition(){if(this.steps.length===0)return this.from.coordinates.copy();if(this.steps.length===1)return this.steps[0].copy();const t=this.steps.slice(0,-1).map((i,a)=>i.distance(this.steps[a+1])),e=t.reduce((i,a)=>i+a,0)/2;let s=0;for(let i=0;i<t.length;i+=1){if(s+t[i]>=e){const a=(e-s)/Math.max(t[i],.001);return this.steps[i].copy().sum(this.steps[i+1].copy().substract(this.steps[i]).multiply(a))}s+=t[i]}return this.steps.at(-1).copy()}collides(t){for(let e=0;e<this.steps.length-1;e++){const s=this.steps[e],i=this.steps[e+1];if(new S([...s.raw,...i.copy().substract(s).raw]).collides(t))return!0}return!1}setState(t,e){this.state[t]=e}setSteps(t){this.state.steps=t.map(e=>e instanceof O?e:new O(this,e)),this.state.steps[0].markStatic(),this.state.steps.at(-1).markStatic()}setPathType(t){this.state.pathType=t,this.diagram&&this.state.to&&this.from.recomputeConnectedEdge(this,"from")}resolveEndpointAnchor(t){const e=t==="from"?this.from:this.to,s=t==="from"?this.startAnchor:this.endAnchor,i=t==="from"?this.state.displacementStart??new y:this.state.displacementEnd??new y;if(!e.parent.edgesAsGateways){const a=e.coordinates.copy().sum(i),r=e.parent.box;return{gateway:e,point:a,displacement:i,relativePosition:new y([(a.x-r.x)/Math.max(r.width,.001),(a.y-r.y)/Math.max(r.height,.001)])}}return qr(s.position,e)&&i.norm<.001?{gateway:e,point:e.coordinates.copy(),relativePosition:e.relativePosition,displacement:new y}:e.parent.findRelativeConnectionAnchor(s.position??e.relativePosition)}setEndpointAnchor(t,e,s=!0){t==="from"?this.state.startAnchor=e:this.state.endAnchor=e,s&&this.diagram&&this.from.recomputeConnectedEdge(this,t)}setResolvedEndpoint(t,e,s,i=!0){const a=this.resolveEndpointAnchor(t==="from"?"to":"from");t==="from"?(this.state.startAnchor=s,this.applyResolvedAnchors(e,a)):(this.state.endAnchor=s,this.applyResolvedAnchors(a,e)),i&&this.diagram&&this.from.recomputeConnectedEdge(this,t)}applyResolvedAnchors(t,e){const s=this.state.from,i=this.state.to,a=s?.outgoingEdges.includes(this)??!1,r=i?.incomingEdges.includes(this)??!1;s!==t.gateway&&(a&&s.removeOutgoingEdge(this),this.state.from=t.gateway,a&&t.gateway.addOutgoingEdge(this,!1)),i!==e.gateway&&(r&&i.removeIncomingEdge(this),this.state.to=e.gateway,r&&e.gateway.addIncomingEdge(this,!1)),this.state.displacementStart=t.displacement,this.state.displacementEnd=e.displacement}get to(){return this.state.to}deserialize(t){if(!Array.isArray(t.labels))throw new TypeError("Invalid serialized edge: 'labels' must be an array.");this.state.arrowHeadEnd=t.arrowHeadEnd,this.state.arrowHeadStart=t.arrowHeadStart,this.state.lineStyle=t.lineStyle,this.state.pathType=Ta(t.pathType),this.state.stroke=t.stroke,this.state.strokeWidth=t.strokeWidth,this.state.labels=t.labels.map(e=>new je(this,{alignment:e.alignment,id:e.id,text:e.text,position:new y(e.position),size:e.size})),this.state.displacementEnd=t.displacementEnd?new y(t.displacementEnd):void 0,this.state.displacementStart=t.displacementStart?new y(t.displacementStart):void 0,this.state.steps=t.steps.map(e=>new O(this,e)),this.state.to=this.state.from.diagram.getNodeById(t.toParentId).getGateway(t.to),this.state.startAnchor=us(t.startAnchor,this.state.from,this.state.displacementStart),this.state.endAnchor=us(t.endAnchor,this.state.to,this.state.displacementEnd),this.state.from.diagram.addEdge(this)}serialize(){const{arrowHeadEnd:t,arrowHeadStart:e,lineStyle:s,pathType:i,startAnchor:a,endAnchor:r,steps:c,stroke:l,strokeWidth:h,to:{id:u,parent:{id:f}}}=this;return{arrowHeadEnd:t,arrowHeadStart:e,displacementEnd:this.state.displacementEnd?.raw,displacementStart:this.state.displacementStart?.raw,lineStyle:s,labels:this.state.labels.map(p=>p.serialize()),pathType:i,startAnchor:{mode:a.mode,position:a.position?.raw},endAnchor:{mode:r.mode,position:r.position?.raw},steps:c.map(p=>[...p.raw,p.mode,p.manualAxes]),stroke:l,strokeWidth:h,to:u,toParentId:f,class:this.constructor.name}}dragStart(t,e){this.pathType==="orthogonal"&&(e.nativeEvent.stopImmediatePropagation(),this.emit(new os(this,t,e)))}dragEndpoint(t,e){e.nativeEvent.stopImmediatePropagation(),this.emit(new cs(this,t,e))}};o(Si,"Edge");let Xt=Si;const Mi=class Mi{_data=new Set;constructor(){g.makeAutoObservable(this)}add(...t){for(const e of t)this._data.add(e)}delete(t){this._data.delete(t)}toggle(t){this._data.has(t)?this.delete(t):this.add(t)}get string(){return[...this._data].join(" ")}};o(Mi,"ClassList");let qs=Mi;const ki=class ki{route(t,e){const s=e.from.parent.edgesAsGateways&&e.startAnchor.mode==="automatic"?this.findAutomaticStartPoint(e):e.resolveEndpointAnchor("from"),i=e.to.parent.edgesAsGateways&&e.endAnchor.mode==="automatic"?this.findAutomaticEndPoint(e):e.resolveEndpointAnchor("to");return e.applyResolvedAnchors(s,i),this.findRoute(t,e,s,i)}};o(ki,"EdgesRouter");let Ne=ki;const Ai=class Ai extends Ne{findAutomaticStartPoint(t){return t.from.parent.findAutomaticGatewayAnchor(t.to.parent.box.middle)}findAutomaticEndPoint(t){return t.to.parent.findAutomaticGatewayAnchor(t.from.parent.box.middle)}findRoute(t,e,s,i){return[s.point,i.point]}};o(Ai,"CurvedRouter");let Us=Ai;const $=.001,Ur=3;function V(n,t,e=Ur){return Math.abs(n-t)<=e}o(V,"almostEqual");function gs(n,t){return Math.abs(n-t)<=$}o(gs,"strictlyEqual");function qt(n,t){return V(n.x,t.x)&&V(n.y,t.y)}o(qt,"samePoint");function it(n,t){return V(n.x,t.x)||V(n.y,t.y)}o(it,"axisAligned");function Kr(n,t){return gs(n.x,t.x)&&gs(n.y,t.y)}o(Kr,"strictlySamePoint");function Ks(n,t){return gs(n.x,t.x)||gs(n.y,t.y)}o(Ks,"strictlyAxisAligned");function Et(n,t){return qt(n,t)||!it(n,t)?null:V(n.y,t.y)?"horizontal":"vertical"}o(Et,"segmentDirection");function Js(n,t,e){if(V(n.x,t.x)&&V(t.x,e.x)||V(n.y,t.y)&&V(t.y,e.y))return!0;const s=(t.x-n.x)*(e.y-t.y)-(t.y-n.y)*(e.x-t.x);return Math.abs(s)<$}o(Js,"collinear");function Jr(n){return n instanceof O?n.mode:"auto"}o(Jr,"pointMode");function Q(n,t){return new y([n,t],!1)}o(Q,"rawPoint");function La(n){switch(n){case"left":return{x:-1,y:0};case"right":return{x:1,y:0};case"up":return{x:0,y:-1};case"down":return{x:0,y:1}}}o(La,"vectorFor");function ce(n,t){const e=La(t);return n.x*e.x+n.y*e.y}o(ce,"dot");function Qr(n,t,e=Jr(t)){return t instanceof O?(t.mode=e,t):new O(n,[t.x,t.y,e])}o(Qr,"asEdgePoint");function gt(n,t,e,s="auto"){return new O(n,[t,e,s])}o(gt,"makePoint");function $a(n){return n.getExtension(G)?.gridSize??50}o($a,"getGridSize");function Te(n,t){const e=n.parent.state.box,s=n.state.position;return Q(e.x+s.x*e.width+(t?.x??0),e.y+s.y*e.height+(t?.y??0))}o(Te,"endpointPoint");function lt(n,t){const e=n.parent.state.box;return new S([e.x-t,e.y-t,e.width+t*2,e.height+t*2],!1)}o(lt,"routingBox");function za(n,t,e){return n>=t-$&&n<=e+$}o(za,"coordinateWithinSpan");function to(n,t,e,s){let i=Number.POSITIVE_INFINITY;for(const a of e){if(t==="right"||t==="left"){if(!za(n.y,a.y-s,a.y+a.height+s))continue;const c=t==="right"?a.x-n.x:n.x-(a.x+a.width);c>$&&c<i&&(i=c);continue}if(!za(n.x,a.x-s,a.x+a.width+s))continue;const r=t==="down"?a.y-n.y:n.y-(a.y+a.height);r>$&&r<i&&(i=r)}return Number.isFinite(i)?i:null}o(to,"blockingDistance");function ps(n,t,e,s,i){const a=to(t,e,i,s),r=a!==null&&a<s*2?a/2:s,c=La(e);return gt(n,t.x+c.x*r,t.y+c.y*r)}o(ps,"adaptiveLeadPoint");function eo(n,t,e,s,i){if(s.orientation==="right"&&i.orientation==="left"&&e.x>t.x||s.orientation==="left"&&i.orientation==="right"&&e.x<t.x){const a=(t.x+e.x)/2;return[gt(n,a,t.y),gt(n,a,e.y)]}if(s.orientation==="down"&&i.orientation==="up"&&e.y>t.y||s.orientation==="up"&&i.orientation==="down"&&e.y<t.y){const a=(t.y+e.y)/2;return[gt(n,t.x,a),gt(n,e.x,a)]}return null}o(eo,"facingLeadPoints");function so(n,t,e,s){if(!Ks(n,t)||Kr(n,t))return!1;const i={x:t.x-n.x,y:t.y-n.y};return ce(i,e)>$&&ce(i,s)<-$}o(so,"directRouteIsValid");function Oa(n){const t=[],e=new Set;for(const s of n){const i=s.toFixed(3);e.has(i)||(e.add(i),t.push(s))}return t}o(Oa,"uniqueNumbers");function no(n){const t=[];for(const e of n){const s=t.at(-1);s&&qt(s,e)||t.push(e)}return t}o(no,"compactRawPoints");function Fa(n,t,e){if(!it(n,t))return 1;if(V(n.x,t.x)){const l=n.x,h=Math.min(n.y,t.y),u=Math.max(n.y,t.y),f=l>e.x+$&&l<e.x+e.width-$,p=u>e.y+$&&h<e.y+e.height-$;return f&&p?1:0}const s=n.y,i=Math.min(n.x,t.x),a=Math.max(n.x,t.x),r=s>e.y+$&&s<e.y+e.height-$,c=a>e.x+$&&i<e.x+e.width-$;return r&&c?1:0}o(Fa,"segmentCollisionPenalty");function io(n,t,e){if(!it(n,t))return 1;if(V(n.x,t.x)){const l=n.x,h=Math.min(n.y,t.y),u=Math.max(n.y,t.y),f=V(l,e.x)||V(l,e.x+e.width),p=Math.min(u,e.y+e.height)-Math.max(h,e.y);return f&&p>$?1:0}const s=n.y,i=Math.min(n.x,t.x),a=Math.max(n.x,t.x),r=V(s,e.y)||V(s,e.y+e.height),c=Math.min(a,e.x+e.width)-Math.max(i,e.x);return r&&c>$?1:0}o(io,"segmentBorderOverlapPenalty");function ao(n,t,e={}){let s=0,i=0,a=0,r=0,c=0,l=e.incomingDirection??null;for(let h=0;h<n.length-1;h++){const u=n[h],f=n[h+1];if(!it(u,f))return null;const p=Et(u,f);if(h===0&&e.avoidFirstDirection&&p===e.avoidFirstDirection&&(a+=1),h===0&&e.avoidFirstBacktrack){const m={x:f.x-u.x,y:f.y-u.y};if(ce(m,e.avoidFirstBacktrack)<-$)return null}if(h===n.length-2&&e.avoidLastDirection&&p===e.avoidLastDirection&&(a+=1),h===n.length-2&&e.avoidLastBacktrack){const m={x:u.x-f.x,y:u.y-f.y};if(ce(m,e.avoidLastBacktrack)<-$)return null}c+=Math.abs(u.x-f.x)+Math.abs(u.y-f.y),l&&p&&l!==p&&(r+=1),l=p;for(const m of t.obstacleBoxes)s+=Fa(u,f,m),i+=io(u,f,m)}return l&&e.outgoingDirection&&l!==e.outgoingDirection&&(r+=1),[s,i,a,r,c,n.length]}o(ao,"routeScore");function ro(n,t){if(!t)return!0;for(let e=0;e<n.length;e+=1)if(n[e]!==t[e])return n[e]<t[e];return!1}o(ro,"routeScoreIsBetter");function fs(n,t,e){return e.obstacleBoxes.some(s=>Fa(n,t,s)>0)}o(fs,"segmentHitsAnyBox");function Ha(n,t,e){return Ks(n,t)&&!fs(n,t,e)}o(Ha,"canCollapseToSegment");function ms(n,t,e,s={}){if(qt(n,t))return[n];let i=null,a=null;const r=o(h=>{const u=no(h),f=ao(u,e,s);f&&ro(f,a)&&(i=u,a=f)},"push");it(n,t)&&r([n,t]),r([n,Q(t.x,n.y),t]),r([n,Q(n.x,t.y),t]);const c=Oa([n.x,t.x,(n.x+t.x)/2,...e.laneBoxes.flatMap(h=>[h.x,h.x-e.gridSize,h.x+h.width,h.x+h.width+e.gridSize])]),l=Oa([n.y,t.y,(n.y+t.y)/2,...e.laneBoxes.flatMap(h=>[h.y,h.y-e.gridSize,h.y+h.height,h.y+h.height+e.gridSize])]);for(const h of c)r([n,Q(h,n.y),Q(h,t.y),t]);for(const h of l)r([n,Q(n.x,h),Q(t.x,h),t]);for(const h of c)for(const u of l)r([n,Q(h,n.y),Q(h,u),Q(t.x,u),t]),r([n,Q(n.x,u),Q(h,u),Q(h,t.y),t]);return i??[n,t]}o(ms,"routeBridge");function oo(n){const t=[];for(let e=0;e<n.length;e++){const s=n[e],i=n[e+1];if(s.manualAxes==="x"){const a=i?.manualAxes==="x"&&V(s.x,i.x)?[s,i]:[s];t.push({type:"line",direction:"vertical",coordinate:s.x,points:a}),e+=a.length-1;continue}if(s.manualAxes==="y"){const a=i?.manualAxes==="y"&&V(s.y,i.y)?[s,i]:[s];t.push({type:"line",direction:"horizontal",coordinate:s.y,points:a}),e+=a.length-1;continue}t.push({type:"point",point:s})}return t}o(oo,"manualRouteConstraints");function co(n,t){return n?n.type==="point"?n.point:n.direction==="vertical"?Q(n.coordinate,t.y):Q(t.x,n.coordinate):t}o(co,"constraintReferencePoint");function Ba(n,t,e){return n>t+$&&n<e-$}o(Ba,"valueInside");function ys(n,t,e,s,i,a){let r=e;const c=n==="x"?"y":"x",l=a.gridSize/2;for(const h of a.obstacleBoxes){const u=c==="x"?h.x:h.y,f=c==="x"?h.x+h.width:h.y+h.height,p=n==="x"?h.x:h.y,m=n==="x"?h.x+h.width:h.y+h.height;if(!Ba(t,u,f)||!Ba(r,p,m))continue;const x=i!==void 0?i-r:0,b=s-r,w=(p+m)/2;r=(Math.abs(x)>$?Math.sign(x):Math.abs(b)>$?Math.sign(b):r<w?-1:1)<0?p-l:m+l}return r}o(ys,"safeLineEndpointCoordinate");function lo(n,t,e,s,i){const a=n.points[0],r=n.points.at(-1),c=a?.copy()??gt(s,0,0),l=r?.copy()??gt(s,0,0);return c.parent=s,l.parent=s,n.direction==="vertical"?(c.addManualAxis("x"),l.addManualAxis("x"),c.x=n.coordinate,c.y=t.y,l.x=n.coordinate,l.y=e.y,i&&(c.y=ys("y",n.coordinate,c.y,e.y,a?.y,i),l.y=ys("y",n.coordinate,l.y,t.y,r?.y,i))):(c.addManualAxis("y"),l.addManualAxis("y"),c.x=t.x,c.y=n.coordinate,l.x=e.x,l.y=n.coordinate,i&&(c.x=ys("x",n.coordinate,c.x,e.x,a?.x,i),l.x=ys("x",n.coordinate,l.x,t.x,r?.x,i))),[c,l]}o(lo,"lineConstraintEndpoints");function ho(n,t){const e=new Map;return{copies:n.map(i=>{const a=i.copy();return a.parent=t,e.set(i,a),a}),copiesByOriginal:e}}o(ho,"copyRouteManualPoints");function uo(n,t,e){const s=t.get(n);if(s)return s;const i=n.copy();return i.parent=e,i}o(uo,"routePointCopy");function go(n,t){return n.find(e=>e.mode==="static")??n.find(e=>t.has(e)&&e.mode==="manual")??n.find(e=>t.has(e))??n.find(e=>e.mode==="manual")??n[0]}o(go,"pickPointFromDuplicateRun");function Qs(n,t){const e=[];for(let s=0;s<n.length;){let i=s+1;for(;i<n.length&&qt(n[s],n[i]);)i+=1;e.push(go(n.slice(s,i),t)),s=i}return e}o(Qs,"removeAdjacentDuplicates");function Ga(n,t,e,s){return n.mode==="static"?n[e]:t.mode==="static"?t[e]:s.has(n)?n[e]:s.has(t)?t[e]:n[e]}o(Ga,"coordinateAnchor");function Le(n,t){for(let e=0;e<n.length-1;e++){const s=n[e],i=n[e+1];if(V(s.x,i.x)){const a=Ga(s,i,"x",t);s.x=a,i.x=a}if(V(s.y,i.y)){const a=Ga(s,i,"y",t);s.y=a,i.y=a}}return n}o(Le,"snapNearlyAlignedPairs");function Ra(n,t,e){const s=[...n];let i=s.filter(a=>a.mode==="manual").length;for(let a=1;a<s.length-1;){const r=s[a],c=Js(s[a-1],r,s[a+1]),l=r.mode==="manual"&&t.has(r)&&i>e;if(r.mode==="manual"&&c&&i<=e){const h=s[a+1];if(a+2<s.length&&h.mode==="auto"&&!t.has(h)){s.splice(a+1,1);continue}const u=s[a-1];if(a-2>=0&&u.mode==="auto"&&!t.has(u)){s.splice(a-1,1),a=Math.max(1,a-1);continue}}if(r.mode==="static"||t.has(r)&&!l||!c){a+=1;continue}if(r.mode==="manual"&&i<=e){a+=1;continue}r.mode==="manual"&&(i-=1),s.splice(a,1)}return s}o(Ra,"removeRedundantCollinearPoints");function tn(n,t,e){const s=[...n];for(let i=0;i<s.length-3;){const a=s[i],r=s[i+1],c=s[i+2],l=s[i+3];if(!(it(a,r)&&it(r,c)&&it(c,l))||!Ha(a,l,t)){i+=1;continue}if(r.mode!=="auto"||c.mode!=="auto"||e.has(r)||e.has(c)){i+=1;continue}s.splice(i+1,2)}return s}o(tn,"collapseAutoDetours");function Va(n,t,e){const s=[...n];for(let i=!0;i;){i=!1;for(let a=0;a<s.length-3;a++){const r=s[a],c=s[a+1],l=s[a+2],h=s[a+3];if(c.mode==="auto"&&l.mode==="auto"&&!e.has(c)&&!e.has(l)&&it(r,c)&&it(c,l)&&it(l,h)&&Ha(r,h,t)){s.splice(a+1,2),i=!0;break}}}return s}o(Va,"collapseAnyAutoRectangles");function po(n,t,e,s){const i=new O(null,[t.x,n.y,"auto"]),a=new O(null,[n.x,t.y,"auto"]),r=o(c=>{let l=0;return e&&it(e,c)&&(l+=1),s&&it(c,s)&&(l+=1),n.mode==="manual"&&e&&Et(e,n)===Et(n,c)&&(l-=2),t.mode==="manual"&&s&&Et(c,t)===Et(t,s)&&(l-=2),l},"score");return r(i)>=r(a)?i:a}o(po,"chooseCorner");function en(n,t){if(n.length<2)return n;const e=[n[0]];for(let s=1;s<n.length;s++){const i=e.at(-1),a=n[s];if(!Ks(i,a)){const r=e.length>=2?e[e.length-2]:void 0,c=s+1<n.length?n[s+1]:void 0,l=po(i,a,r,c);l.parent=t,e.push(l)}e.push(a)}return e}o(en,"ensureOrthogonalAdjacency");function Ya(n,t,e=new Set){let s=n.map(a=>Qr(t.parent,a));const i=s.some(a=>a.mode==="manual"&&a.manualAxes==="both")?1:0;for(let a=0;a<4;a++){const r=s.length;if(s=Le(s,e),s=en(s,t.parent),s=Le(s,e),s=Qs(s,e),s=Ra(s,e,i),s=tn(s,t,e),s.length===r)break}return s=Le(s,e),s=en(s,t.parent),s=Qs(s,e),s=tn(s,t,e),s=Va(s,t,e),s=Ra(s,e,i),s.length>0&&(s[0].markStatic(),s.at(-1).markStatic()),s}o(Ya,"normalizeEdgePoints");function Wa(n,t){const e=n.findIndex((s,i)=>i>0&&i<n.length-1&&qt(s,t));e>=0&&n.splice(e,1)}o(Wa,"removeSameCoordinateInteriorPoint");function Za(n,t,e,s){let i=[...n];if(i.length<2)return i;qt(i[1],e)?i[1]=e:(Wa(i,e),i.splice(1,0,e));const a=i.length-2;if(a<1)return i;qt(i[a],s)?i[a]=s:(Wa(i,s),i.splice(i.length-1,0,s));const r=new Set([e,s]);return i=Le(i,r),i=en(i,t.parent),i=Le(i,r),i=Qs(i,r),i=tn(i,t,r),i=Va(i,t,r),i.length>0&&(i[0].markStatic(),i.at(-1).markStatic()),i}o(Za,"ensureEndpointLeadPresence");function fo(n,t,e,s,i){if(!e||!Js(n,t,e))return!1;const a={x:e.x-n.x,y:e.y-n.y};return ce(a,s)>$&&!fs(n,e,i)}o(fo,"canRemoveSourceLead");function mo(n,t,e,s,i){if(!n||!Js(n,t,e))return!1;const a={x:e.x-n.x,y:e.y-n.y};return ce(a,s)<-$&&!fs(n,e,i)}o(mo,"canRemoveTargetLead");function Xa(n,t,e,s){const i=[...n];return i.length>2&&fo(i[0],i[1],i[2],t,s)&&i.splice(1,1),i.length>2&&mo(i.at(-3),i.at(-2),i.at(-1),e,s)&&i.splice(i.length-2,1),i.length>0&&(i[0].markStatic(),i.at(-1).markStatic()),i}o(Xa,"compactRedundantEndpointLeads");function sn(n,t,e,s,i){const a=gt(i.parent,Te(n,e).x,Te(n,e).y,"static"),r=Te(t,s),c=gt(i.parent,r.x,r.y,"static");if(so(a,c,n.orientation,t.orientation))return[a,c];const l=eo(i.parent,a,c,n,t),h=l?.[0]??ps(i.parent,a,n.orientation,i.gridSize,[lt(t,0)]),u=l?.[1]??ps(i.parent,c,t.orientation,i.gridSize,[lt(n,0)]),f=new Set([h,u]),p=ms(h,u,i,{avoidFirstBacktrack:n.orientation,avoidLastBacktrack:t.orientation,incomingDirection:Et(a,h)??void 0,outgoingDirection:Et(u,c)??void 0}),m=Ya([a,...p,c],i,f);return Xa(Za(m,i,h,u),n.orientation,t.orientation,i)}o(sn,"routeAuto");function yo(n,t,e,s,i,a=null){const r=$a(n),c={gridSize:r,obstacleBoxes:[lt(t,0),lt(e,0)],laneBoxes:[lt(t,r/2),lt(e,r/2)],parent:a};return sn(t,e,s,i,c)}o(yo,"routeOrthogonalBetweenGateways");function xo(n,t,e=[],s){const i=$a(n),a={gridSize:i,obstacleBoxes:[lt(t.from,0),lt(t.to,0)],laneBoxes:[lt(t.from,i/2),lt(t.to,i/2)],parent:t},r=t.steps.filter((B,X)=>X>0&&X<t.steps.length-1&&B.mode==="manual");if(r.length===0)return sn(t.from,t.to,t.state.displacementStart,t.state.displacementEnd,a);const c=Te(t.from,t.state.displacementStart),l=Te(t.to,t.state.displacementEnd),h=gt(a.parent,c.x,c.y,"static"),u=gt(a.parent,l.x,l.y,"static"),f=ps(a.parent,h,t.from.orientation,i,[lt(t.to,0)]),p=ps(a.parent,u,t.to.orientation,i,[lt(t.from,0)]),{copies:m,copiesByOriginal:x}=ho(r,a.parent),b=e.map(B=>uo(B,x,a.parent)),w=new Set([f,p,...b]),v=oo(m),_=[h,f];let E=f;for(let B=0;B<v.length;B++){const X=v[B],wt=E instanceof O&&E.mode==="manual"?Et(_.at(-2),E)??void 0:void 0;if(X.type==="point"){const Ca=ms(E,X.point,a,{avoidFirstDirection:wt,avoidFirstBacktrack:B===0?t.from.orientation:void 0});_.push(...Ca.slice(1)),E=X.point;continue}const rt=co(v[B+1],p);let[nt,ot]=lo(X,E,rt,a.parent,a);if(fs(nt,ot,a))continue;const vt=ms(E,nt,a,{avoidFirstDirection:wt,avoidFirstBacktrack:B===0?t.from.orientation:void 0});_.push(...vt.slice(1),ot),E=ot}const C=E instanceof O&&E.mode==="manual"?Et(_.at(-2),E)??void 0:void 0,k=ms(E,p,a,{avoidFirstDirection:C,avoidLastDirection:Et(p,u)??void 0,avoidLastBacktrack:t.to.orientation});_.push(...k.slice(1),u);const P=Ya(_,a,w),I=Xa(Za(P,a,f,p),t.from.orientation,t.to.orientation,a);return I.some(B=>B.mode==="manual")?I:sn(t.from,t.to,t.state.displacementStart,t.state.displacementEnd,a)}o(xo,"routeOrthogonalEdge");const Pi=class Pi extends Ne{findAutomaticStartPoint(t){return t.from.parent.findAutomaticGatewayAnchor(t.to.parent.box.middle)}findAutomaticEndPoint(t){return t.to.parent.findAutomaticGatewayAnchor(t.from.parent.box.middle)}findRoute(t,e,s,i){return xo(t,e)}findRouteBetween(t,e,s,i=new y,a=new y){return yo(t,e,s,i,a)}};o(Pi,"OrthogonalRouter");let xs=Pi;const Ci=class Ci extends Ne{findAutomaticStartPoint(t){return t.from.parent.findAutomaticConnectionAnchor(t.to.parent.box.middle)}findAutomaticEndPoint(t){return t.to.parent.findAutomaticConnectionAnchor(t.from.parent.box.middle)}findRoute(t,e,s,i){return[s.point,i.point]}};o(Ci,"StraightRouter");let nn=Ci;const bo={orthogonal:new xs,straight:new nn,curved:new Us};function qa(n){return bo[n]}o(qa,"getEdgesRouter");const Ii=class Ii extends Yt{state;constructor(t,e){super(t),this.state={allowDisplace:!0,stroke:"transparent",strokeWidth:10,radius:5,incomingEdges:[],outgoingEdges:[],position:new y,...e},g.makeObservable(this,{addIncomingEdge:g.action,addOutgoingEdge:g.action,state:g.observable,removeIncomingEdge:g.action,removeOutgoingEdge:g.action})}addIncomingEdge(t,e=!0){this.state.incomingEdges.find(s=>s.id===t.id)||this.state.incomingEdges.push(t)}addOutgoingEdge(t,e=!0){this.state.outgoingEdges.find(s=>s.id===t.id)||(this.state.outgoingEdges.push(t),e&&t.steps.length===0&&this.updateEdges())}canConnect(t,e){const s=this.state.incomingEdges.filter(i=>i!==e);return(this.state.maxIncomingConnections===void 0||this.state.maxIncomingConnections>s.length)&&!s.find(i=>i.from===t)}canStartConnection(t,e){const s=this.state.outgoingEdges.filter(i=>i!==e);return(this.state.maxOutgoingConnections===void 0||this.state.maxOutgoingConnections>s.length)&&!s.find(i=>i.to===t)}connectionDisplacement(t){return this.direction==="horizontal"&&Math.abs(t.y-this.coordinates.y)>10?new y([0,t.y-this.coordinates.y]):this.direction==="vertical"&&Math.abs(t.x-this.coordinates.x)>10?new y([t.x-this.coordinates.x,0]):new y([0,0])}connectionDistance(t){if(this.direction==="vertical"){const s=Math.abs(this.coordinates.y-t.y);return s<20?Math.abs(this.coordinates.x-t.x)+s**5:1/0}const e=Math.abs(this.coordinates.x-t.x);return e<20?Math.abs(this.coordinates.y-t.y)+e**5:1/0}removeIncomingEdge(t){for(let e=this.state.incomingEdges.length-1;e>=0;e--)this.state.incomingEdges[e].id===t.id&&this.state.incomingEdges.splice(e,1)}removeOutgoingEdge(t){for(let e=this.state.outgoingEdges.length-1;e>=0;e--)this.state.outgoingEdges[e].id===t.id&&this.state.outgoingEdges.splice(e,1)}get coordinates(){return this.state.position.copy().multiply(this.parent.box.size).sum(this.parent.coordinates)}get fill(){return this.state.fill}get diagram(){return this.parent.diagram}get incomingEdges(){return[...this.state.incomingEdges]}get outgoingEdges(){return[...this.state.outgoingEdges]}get radius(){return this.state.radius}get relativePosition(){return this.state.position.copy()}get stroke(){return this.state.stroke}get strokeWidth(){return this.state.strokeWidth}get id(){return this.state.id}get direction(){return["down","up"].includes(this.state.orientation)?"vertical":"horizontal"}get orientation(){return this.state.orientation}recomputeConnectedEdge(t,e){t.setSteps(qa(t.pathType).route(this.diagram,t))}updateEdges(){for(const t of this.state.incomingEdges)this.recomputeConnectedEdge(t,"to");for(const t of this.state.outgoingEdges)this.recomputeConnectedEdge(t,"from")}get remainingSlots(){return this.state.maxOutgoingConnections-this.state.outgoingEdges.length}deserialize(t){this.state.fill=t.fill,this.state.id=t.id,this.state.orientation=t.orientation,this.state.radius=t.radius,this.state.stroke=t.stroke,this.state.strokeWidth=t.strokeWidth,this.state.position.assign(t.coordinates),t.outEdges.forEach(e=>{const s=this.diagram.getClass(e.class);if(!s)throw new Error(`Unknown edge class '${e.class}' on gateway '${this.id}'.`);const i=new s(this,{from:this});this.diagram.getNodeById(e.toParentId)&&i.deserialize(e)})}serialize(){const{fill:t,id:e,orientation:s,radius:i,stroke:a,strokeWidth:r,state:{position:{raw:c}}}=this,l=this.outgoingEdges.map(h=>h.serialize());return{coordinates:c,fill:t,id:e,orientation:s,radius:i,stroke:a,strokeWidth:r,outEdges:l,class:this.constructor.name}}};o(Ii,"Gateway");let Ht=Ii;const bs=250;let ws=(fe=class extends Yt{_gateways=new Map;state;classList=new qs;edgesAsGateways=!1;requiredEdgePathType=null;edgeGatewayShape="rectangle";get selected(){return this.state.selected}get hovered(){return this.diagram?.hoveredNode===this}constructor(t,e){super(t),this.state={...e,box:e.box??new S([0,0,100,80]),hover:!1,zIndex:e.zIndex??100},this.classList.add("diagram__node"),g.makeObservable(this,{state:g.observable,hovered:g.computed,labelOffset:g.computed,selected:g.computed,_gateways:g.observable,setLabelOffset:g.action,setState:g.action}),this.initializeGateways()}canSelect(){return!this.state.selected&&this.state.selectable!==!1}canUnselect(){return!!this.state.selected}setDiagram(t){const e=this.diagram;e&&e!==t&&e.setNodeHover(this,!1),this.parent=t}setState(t,e){if(t==="hover"){this.setHovered(e===!0);return}this.state[t]=e}setHovered(t){this.diagram?.setNodeHover(this,t)}initializeGateways(){this._gateways.set("left",new Ht(this,{maxIncomingConnections:1/0,maxOutgoingConnections:1/0,id:"left",orientation:"left",position:new y([0,.5])})),this._gateways.set("right",new Ht(this,{maxIncomingConnections:1/0,maxOutgoingConnections:1/0,id:"right",orientation:"right",position:new y([1,.5])})),this._gateways.set("up",new Ht(this,{maxIncomingConnections:1/0,maxOutgoingConnections:1/0,id:"up",orientation:"up",position:new y([.5,0])})),this._gateways.set("down",new Ht(this,{maxIncomingConnections:1/0,maxOutgoingConnections:1/0,id:"down",orientation:"down",position:new y([.5,1])}))}get box(){return this.state.box.copy()}get coordinates(){return this.box.coordinates}displace(t){this.state.box.sum([...t.raw,0,0])}get id(){return this.state.id}get labelOffset(){const t=this.state.labelOffset;return!Array.isArray(t)||t.length!==2||!Number.isFinite(t[0])||!Number.isFinite(t[1])?new y:new y(t)}setLabelOffset(t){const e=t instanceof y?t:new y(t);this.state.labelOffset=[Math.max(-bs,Math.min(bs,e.x)),Math.max(-bs,Math.min(bs,e.y))]}get gateways(){return[...this._gateways.values()]}dragEventMouseStartPosition=null;dragEventStartPosition=null;getGateway(t){return this._gateways.get(t)}boundaryPoint(t,e){const s=this.box,i=s.middle,a=Math.max(s.width/2,.001),r=Math.max(s.height/2,.001);let c=t.x-i.x,l=t.y-i.y;if(Math.abs(c)<.001&&Math.abs(l)<.001&&(c=a,l=0),this.edgeGatewayShape==="ellipse"){const u=1/Math.sqrt(c*c/(a*a)+l*l/(r*r));return new y([i.x+c*u,i.y+l*u])}if(this.edgeGatewayShape==="diamond"){const u=1/(Math.abs(c)/a+Math.abs(l)/r);return new y([i.x+c*u,i.y+l*u])}if(!e||!s.collides(t)){const u=1/Math.max(Math.abs(c)/a,Math.abs(l)/r);return new y([i.x+c*u,i.y+l*u])}const h=[{value:Math.abs(t.x-s.x),point:[s.x,t.y]},{value:Math.abs(t.x-(s.x+s.width)),point:[s.x+s.width,t.y]},{value:Math.abs(t.y-s.y),point:[t.x,s.y]},{value:Math.abs(t.y-(s.y+s.height)),point:[t.x,s.y+s.height]}];return new y(h.reduce((u,f)=>f.value<u.value?f:u).point)}anchorForBoundaryPoint(t){const e=this.box,s=e.middle,i=(t.x-s.x)/Math.max(e.width/2,.001),a=(t.y-s.y)/Math.max(e.height/2,.001),r=Math.abs(i)>=Math.abs(a)?i>=0?"right":"left":a>=0?"down":"up",c=this.getGateway(r)??this.getGateway("center")??this.gateways[0];if(!c)throw new Error(`Node ${this.id} has no gateway for a boundary anchor`);const l=new y([(t.x-e.x)/Math.max(e.width,.001),(t.y-e.y)/Math.max(e.height,.001)]);return{gateway:c,point:t,relativePosition:l,displacement:t.copy().substract(c.coordinates)}}findFixedConnectionAnchor(t){return this.anchorForBoundaryPoint(this.boundaryPoint(t,!0))}findAxisAlignedConnectionAnchor(t,e){const s=this.box,i=s.middle,a=Math.max(s.width/2,.001),r=Math.max(s.height/2,.001),c=e==="horizontal",l=c?(t.y-i.y)/r:(t.x-i.x)/a;if(Math.abs(l)>1)return null;let h=c?a:r;this.edgeGatewayShape==="ellipse"?h*=Math.sqrt(Math.max(0,1-l**2)):this.edgeGatewayShape==="diamond"&&(h*=1-Math.abs(l));const u=c?t.x<=i.x?-1:1:t.y<=i.y?-1:1,f=c?new y([i.x+u*h,t.y]):new y([t.x,i.y+u*h]);return this.anchorForBoundaryPoint(f)}findAutomaticConnectionAnchor(t){return this.anchorForBoundaryPoint(this.boundaryPoint(t,!1))}findAutomaticGatewayAnchor(t){const e=this.gateways.filter(i=>{const a=i.relativePosition;return a.x<=0||a.x>=1||a.y<=0||a.y>=1}),s=(e.length?e:this.gateways).map(i=>({candidate:i,distance:i.coordinates.distance(t)})).sort((i,a)=>i.distance-a.distance)[0]?.candidate;return s?{gateway:s,point:s.coordinates.copy(),relativePosition:s.relativePosition,displacement:new y}:this.findAutomaticConnectionAnchor(t)}findRelativeConnectionAnchor(t){const e=this.box,s=new y([e.x+t.x*e.width,e.y+t.y*e.height]);return this.anchorForBoundaryPoint(this.boundaryPoint(s,!0))}usesAutomaticConnectionPoint(t){if(!this.edgesAsGateways||!this.box.collides(t))return!1;const e=this.boundaryPoint(t,!0),s=Math.min(24,Math.min(this.box.width,this.box.height)/4);return t.distance(e)>s}get connectionBoundaryPath(){const t=this.box;if(this.edgeGatewayShape==="ellipse"){const e=t.width/2,s=t.y+t.height/2;return`M ${t.x} ${s} A ${e} ${t.height/2} 0 1 0 ${t.x+t.width} ${s} A ${e} ${t.height/2} 0 1 0 ${t.x} ${s}`}return this.edgeGatewayShape==="diamond"?`M ${t.x+t.width/2} ${t.y} L ${t.x+t.width} ${t.y+t.height/2} L ${t.x+t.width/2} ${t.y+t.height} L ${t.x} ${t.y+t.height/2} Z`:`M ${t.x} ${t.y} H ${t.x+t.width} V ${t.y+t.height} H ${t.x} Z`}setDimentions(t){this.state.box.assignDimensions(t)}updateConnectedEdges(){const t=new Set;for(const e of this._gateways.values())e.incomingEdges.forEach(s=>t.add(s)),e.outgoingEdges.forEach(s=>t.add(s));t.forEach(e=>e.from.recomputeConnectedEdge(e,"from"))}setPosition(t,e){const s=new S(this.state.box.raw,!1);this.state.box.assignCoordinates(t).bound(new S([0,0,...this.diagram.canvas.size.raw],!1)),e?.updateConnectedEdges!==!1&&s.substract(this.state.box).norm&&this.updateConnectedEdges()}deserialize(t){this.state.box.assign(t.box),this.state.id=t.id,this.state.label=t.label,this.state.movable=t.movable,this.state.selectable=t.selectable,this.state.fill=t.fill,this.state.labelFontSize=t.labelFontSize,this.setLabelOffset(t.labelOffset??[0,0]),this.state.stroke=t.stroke,this.state.strokewWidth=t.strokewWidth,t.gateways.forEach(e=>{const s=this._gateways.get(e.id)?.incomingEdges||[],i=this.diagram?.getClass(e.class);if(!i)throw new Error(`Unknown gateway class '${e.class}' on node '${this.id}'.`);const a=new i(this,{id:e.id});this._gateways.set(e.id,a);for(const r of s)r.setState("to",a),a.addIncomingEdge(r)}),t.gateways.forEach(e=>{this._gateways.get(e.id)?.deserialize(e)}),this._gateways.forEach(e=>e.outgoingEdges.forEach(s=>{this.diagram?.connectWithEdge(s.from,s.to,s)}))}serialize(){const{box:{raw:t},id:e,label:s,movable:i,selectable:a,fill:r,labelFontSize:c,labelOffset:l,selected:h,stroke:u,strokewWidth:f}=this.state,p=this.gateways.map(m=>m.serialize());return{box:t,id:e,label:s,movable:i,selectable:a,selected:h,gateways:p,fill:r,labelFontSize:c,labelOffset:l?[...l]:void 0,stroke:u,strokewWidth:f,class:this.constructor.name}}remapSerializedReferences(t,e){return t}RenderOverlay=null;RenderScreen=null},o(fe,"Node"),fe);const Di=class Di extends z{selectionMode="element";_selection=new Set;_edgesSelection=new Set;autopan=new ut(this.diagram);pointerPoint=null;endPoint=null;startPoint=null;copy(){const t=[],e=new Map,s=[];for(const i of this._selection){const a=Pe(this.diagram,"node",s);e.set(i.id,a),s.push(a)}for(const i of this._selection){const a=i.remapSerializedReferences(i.serialize(),e);a.id=e.get(a.id),a.gateways.forEach(r=>{r.outEdges.forEach(c=>{c.toParentId=e.get(c.toParentId)})}),t.push(a)}return JSON.stringify({nodes:t})}init(){g.makeObservable(this,{_edgesSelection:g.observable,_selection:g.observable,box:g.computed,clearSelection:g.action,endPoint:g.observable,selectEdge:g.action,selectedNodes:g.computed,selectedEdges:g.computed,selectionMode:g.observable,selectNode:g.action,startPoint:g.observable,toggleSelectionMode:g.action,unselectEdge:g.action,unselectNode:g.action,handleMouseUp:g.action}),this.diagram.onEvent(Pt,this.handleMouseDown.bind(this),this.diagram.priorities.Mouse_Down_Selector),this.diagram.onEvent(ie,t=>{g.runInAction(()=>this._selection.delete(t.node))}),this.diagram.onEvent(as,t=>{g.runInAction(()=>this._edgesSelection.delete(t.edge))}),g.runInAction(()=>{for(const t of this.diagram.nodes)t.selected&&this._selection.add(t)})}toggleSelectionMode(t=this.selectionMode==="area"?"element":"area"){this.selectionMode=t}get selectedNodes(){return[...this._selection]}get selectedEdges(){return[...this._edgesSelection]}get box(){return!this.startPoint||!this.endPoint?new S:new S([...this.startPoint.raw,...this.endPoint.copy().substract(this.startPoint).raw])}clearSelection(t=()=>!0){for(const e of this._selection)t(e)&&this.unselectNode(e);for(const e of this._edgesSelection)this.unselectEdge(e)}selectEdge(t){this.emit(new rs(t,!0)).cancelled||(t.setState("selected",!0),this._edgesSelection.add(t))}selectNode(t){t.canSelect()&&!this.emit(new ke(t,!0)).cancelled&&(t.setState("selected",!0),this._selection.add(t))}unselectEdge(t){this.emit(new rs(t,!1)).cancelled||(t.setState("selected",!1),this._edgesSelection.delete(t))}unselectNode(t){t.canUnselect()&&!this.emit(new ke(t,!1)).cancelled&&(t.setState("selected",!1),this._selection.delete(t))}unbind=o(()=>{},"unbind");handleMouseDown=o(t=>{if(this.unbind(),t.originalEvent.button!==1)if(this.selectionMode==="area"){const e=new y(t.originalEvent);g.runInAction(()=>{this.startPoint=this.diagram.canvas.inverseFit(e)}),t.cancel(),this.unbind=pt(It(this,tt,this.handleMouseUp),It(this,Ct,this.handleMouseMove),vs(this.handleSelectionInterval.bind(this),30))}else{const e=t.edge,s=t.node,i=e?.state.selected??s?.selected;!t.ctrl&&!t.shift&&!i&&(e||s?this.clearSelection():t.originalEvent.button===0&&this.bindEmptyCanvasGesture(t)),e?this.selectEdge(e):s&&this.selectNode(s)}},"handleMouseDown");bindEmptyCanvasGesture(t){const e=new y(t.originalEvent);let s=!1;const i=o(r=>{s||=!new y(r.originalEvent).equals(e)},"handleMove"),a=o(()=>{const r=this.unbind;this.unbind=()=>{},r(),s||this.clearSelection()},"handleUp");this.unbind=pt(It(this,Ct,i),It(this,tt,a))}handleMouseMove=o(t=>{g.runInAction(()=>{this.pointerPoint=new y(t.originalEvent)}),this.updateAreaSelection(!1)},"handleMouseMove");handleSelectionInterval(){this.updateAreaSelection(!0)}updateAreaSelection(t){if(!this.pointerPoint||!this.startPoint)return;const e=this.pointerPoint;t&&this.autopan.displace(e),g.runInAction(()=>{this.endPoint=this.diagram.canvas.inverseFit(e)});for(const s of this.diagram.nodes){s.box.collides(this.box)?this.selectNode(s):this.unselectNode(s);for(const i of s.gateways)for(const a of i.outgoingEdges)if(a.collides(this.box)){this.selectEdge(a);break}else this.unselectEdge(a)}}handleMouseUp=o(t=>{this.unbind(),this.endPoint=null,this.startPoint=null,this.pointerPoint=null},"handleMouseUp")};o(Di,"Selector");let Y=Di;const ji=class ji extends z{hotkeys=[];isEditableTarget(t){return t instanceof HTMLElement?t instanceof HTMLInputElement||t instanceof HTMLTextAreaElement||t instanceof HTMLSelectElement||t instanceof HTMLButtonElement||t.isContentEditable:!1}shouldIgnoreHotkeys(t){return this.isEditableTarget(t.originalEvent.target)}get measurer(){return this.diagram.getExtension(De)}get selector(){return this.diagram.getExtension(Y)}match(t,e){return!(e.ctrl!==void 0&&t.ctrl!==e.ctrl||e.shift!==void 0&&t.shift!==e.shift||e.alt!==void 0&&t.alt!==e.alt||e.code!==void 0&&t.code!==e.code)}init(){this.diagram.onEvent(Rt,async t=>{if(!this.shouldIgnoreHotkeys(t)&&!this.revertHotkey.has(t.code)){for(const e of this.hotkeys)if(this.match(t,e)&&(e.cb(t),!t.spreads))return;switch(t.code){case"Space":{const e=this.measurer.enabled,s=!e&&this.selector.selectionMode==="area";e||this.selector.toggleSelectionMode(s?"element":"area"),this.revertHotkey.set(t.code,()=>{e?this.measurer.toggle():this.selector.toggleSelectionMode(s?"area":"element")});break}case"KeyC":t.ctrl&&navigator.clipboard.writeText(this.selector.copy());break;case"KeyV":t.ctrl&&this.diagram.paste(await navigator.clipboard.readText());break;case"KeyM":this.selector.toggleSelectionMode("element");break;case"KeyS":t.ctrl?(t.originalEvent.preventDefault(),Yr(this.diagram.export(),"diagram-save.json","application/json")):this.selector.toggleSelectionMode("area");break;case"KeyZ":t.ctrl&&this.diagram.getExtension(Ie).undo();break;case"KeyY":t.ctrl&&this.diagram.getExtension(Ie).redo();break;case"ControlLeft":case"ControlRight":t.cancel();{const e=this.diagram.getExtension(G),s=this.diagram.getExtension(Zt),i=this.diagram.getExtension(Ce),a=e?.enabled,r=s?.enabled,c=i?.enabled;e?.toggle(!a,!1),s?.toggle(!r,!1),i?.toggle(!c,!1),this.revertHotkey.set(t.code,()=>{a!==void 0&&e?.toggle(a,!1),r!==void 0&&s?.toggle(r,!1),c!==void 0&&i?.toggle(c,!1)})}break;case"Delete":{const e=this.diagram.getExtension(Y);e.selectedNodes.forEach(s=>{this.diagram.delete(s)}),e.selectedEdges.forEach(s=>{this.diagram.disconnect(s)})}}}}),document.addEventListener("keyup",()=>{for(const t of this.revertHotkey.keys())this.revertHotkey.get(t)?.(),this.revertHotkey.delete(t)})}register(t){return this.hotkeys.push(t),()=>{this.hotkeys=this.hotkeys.filter(e=>e!==t)}}revertHotkey=new Map};o(ji,"Hotkeys");let an=ji;function It(n,t,e,s){if(n.diagram){const i=e.bind(n);return n.diagram.onEvent(t,i,s),()=>{n.diagram?.offEvent(t,i)}}throw new Error("Cannot bind to unexistent diagram")}o(It,"bindDiagram");function R(n,t,e,s){const i=e.bind(n);return document.addEventListener(t,i,s),()=>{document.removeEventListener(t,i,s)}}o(R,"bindDocument");function vs(n,t){const e=setInterval(n,t);return()=>{clearInterval(e)}}o(vs,"bindInterval");function wo(n,t){const e=setTimeout(n,t);return()=>{clearTimeout(e)}}o(wo,"bindTimeout");function pt(...n){return()=>{n.forEach(t=>t())}}o(pt,"bind");let vo=(me=class extends Yt{unbindDocumentEvents=[];mouseSessionStartedInFrame=!1;centerAnimationFrame=null;_displacement=new y([-5e3,-5e3]);_scale=1;gridSize=50;size=new y([1e6,1e6]);get scale(){return this._scale}element=null;get elementPosition(){if(!this.element)return new y([0,0]);const t=this.element.getBoundingClientRect();return new y([t.x,t.y])}get elementDimensions(){if(!this.element)return new S([0,0,0,0]);const t=this.element.getBoundingClientRect();return new S([t.x,t.y,t.width,t.height])}get displacement(){return this._displacement.copy()}get framePosition(){if(!this.element)return new y([0,0]);const t=this.element.parentElement.getBoundingClientRect();return new y([t.x,t.y])}get frameDimensions(){if(!this.element)return new S([0,0,0,0]);const t=this.element.parentElement.getBoundingClientRect();return new S([t.x,t.y,t.width,t.height])}constructor(t){super(t),g.makeObservable(this,{_scale:g.observable,setScale:g.action}),this.unbindDocumentEvents.push(R(this,"click",this.handleClick),R(this,"dblclick",this.handleDoubleClick),R(this,"wheel",this.handleWheel),R(this,"mouseup",this.handleMouseUp),R(this,"mousedown",this.handleMouseDown),R(this,"mousemove",this.handleMouseMove),R(this,"keyup",this.handleKeyUp),R(this,"keypress",this.handleKeyPress),R(this,"keydown",this.handleKeyDown))}dispose(){this.cancelCenterAnimation();for(const t of this.unbindDocumentEvents.splice(0))t()}markMouseSessionStartedInFrame(){this.mouseSessionStartedInFrame=!0}get dragging(){return this._dragging}_dragging=!1;displacementStart=null;eventStart=null;bound(){const t=this.element?.parentElement?.getBoundingClientRect(),e=t?new y([t.width,t.height]).divide(this.scale):new y,s=new S([...this.size.copy().multiply(-1).raw,...e.raw]).multiply(.9);this._displacement.bound(s)}centerOnPoint(t,e=!1){const s=this.frameDimensions,i=new y([s.width/(2*this.scale)-t.x,s.height/(2*this.scale)-t.y]);if(!e||typeof requestAnimationFrame>"u"){this.setDisplacement(i);return}this.animateDisplacement(i)}animateDisplacement(t){this.cancelCenterAnimation();const e=this.displacement,s=t.copy(!1).substract(e);let i=null;const a=240,r=o(c=>{i??=c;const l=Math.min(1,(c-i)/a),h=1-(1-l)**3;this.applyDisplacement(e.copy(!1).sum(s.copy(!1).multiply(h))),l<1?this.centerAnimationFrame=requestAnimationFrame(r):this.centerAnimationFrame=null},"update");this.centerAnimationFrame=requestAnimationFrame(r)}cancelCenterAnimation(){this.centerAnimationFrame!==null&&(cancelAnimationFrame(this.centerAnimationFrame),this.centerAnimationFrame=null)}applyDisplacement(t){this._displacement.assign(t),this.bound(),this.setDisplacementStyles()}displace(t){this.cancelCenterAnimation(),this._displacement.sum(t);const e=this._displacement.copy();return this.bound(),this.setDisplacementStyles(),t.copy().substract(this._displacement.copy().substract(e))}setDisplacement(t){this.cancelCenterAnimation(),this.applyDisplacement(t)}setScale(t,e=new y([0,0])){this.cancelCenterAnimation();const s=this.inverseFit(e),i=s.copy(),a=this.displacement,r=Math.max(.3,Math.min(3,t));if(r!==this.scale){const c=s.copy().multiply(this.scale).sum(a.copy().multiply(this.scale)).substract(i.copy().multiply(r)).divide(r);this.emit(new Ee(this,c.copy().substract(this.displacement),r,this.scale)).cancelled||(this._scale=r,this._displacement.assign(c),this.bound(),this.setDisplacementStyles())}}fit(t){return t instanceof y?this._displacement.copy().sum([t.x,t.y]).multiply(this.scale):t instanceof S?new S([...this._displacement.copy().sum([t.x,t.y]).multiply(this.scale).raw,...t.size.multiply(this.scale).raw]):t*this.scale}inverseFit(t){return t instanceof y?t.copy().substract(this.framePosition).divide(this.scale).substract([this._displacement.x,this._displacement.y]):t.copy().substract(this.framePosition.toDimensions(new y([0,0]))).divide(this.scale).substract([this._displacement.x,this._displacement.y,0,0])}getDisplacementStyles(){const t=this._displacement.copy(!1).multiply(this.scale);return{position:"relative",width:`${this.size.x}px`,height:`${this.size.y}px`,transform:`translate(${t.x}px, ${t.y}px) scale(${this.scale})`,transformOrigin:"0 0",willChange:"transform"}}setDisplacementStyles(t=this.element){if(t){const e=this._displacement.copy(!1).multiply(this.scale),s=t.parentElement;if(t.dataset.setStyles="true",t.style.position="relative",t.style.width=`${this.size.x}px`,t.style.height=`${this.size.y}px`,t.style.transform=`translate(${e.x}px, ${e.y}px) scale(${this.scale})`,t.style.transformOrigin="0 0",t.style.zoom="",t.style.willChange="transform",s){const i=this.gridSize*this.scale,a=i*10,c=(Math.max(.3,Math.min(1,this.scale))-.3)/.7;s.style.setProperty("--diagram-canvas-scale",String(this.scale)),s.style.setProperty("--diagram-canvas-translate-x",`${e.x}px`),s.style.setProperty("--diagram-canvas-translate-y",`${e.y}px`),s.style.setProperty("--diagram-grid-zoom-ratio",String(c)),s.style.setProperty("--diagram-grid-size",`${i}px`),s.style.setProperty("--diagram-major-grid-size",`${a}px`),s.style.setProperty("--diagram-grid-offset-x",`${e.x}px`),s.style.setProperty("--diagram-grid-offset-y",`${e.y}px`)}}}setGridSize(t){this.gridSize=t,this.setDisplacementStyles()}useRef=o(t=>{this.element=t,t instanceof HTMLElement&&this.setDisplacementStyles()},"useRef");isInsideFrameFromTarget(t){const e=this.element?.parentElement;return!!(e&&t instanceof Node&&(e===t||e.contains(t)))}isInsideFrameEvent(t){const e=this.element?.parentElement;if(!e||t.target instanceof globalThis.Element&&t.target.closest('.diagram__extension_ui, [data-diagram-interactive-ui="true"]'))return!1;const s=typeof t.composedPath=="function"?t.composedPath():[];if(s.length>0&&s.some(i=>i===e||i instanceof Node&&e.contains(i))||this.isInsideFrameFromTarget(t.target)||t.type==="wheel"&&e.matches(":hover"))return!0;if("clientX"in t&&"clientY"in t){const i=e.getBoundingClientRect(),a=Number(t.clientX),r=Number(t.clientY);return a>=i.left&&a<=i.right&&r>=i.top&&r<=i.bottom}return!1}handleMouseMove(t){if(!this.isInsideFrameEvent(t)&&!this.eventStart&&!this.mouseSessionStartedInFrame)return;if(!this.emit(new Ct(this,t)).cancelled&&this.displacementStart&&this.eventStart){const s=this.displacement.substract(new y(t));this.emit(new Vs(this,this.displacement,s)).cancelled||(this._dragging=!0,this._displacement.assign(this.displacementStart.copy().substract(this.eventStart.copy().substract([t.clientX,t.clientY]).divide(this.scale))),this.bound(),this.setDisplacementStyles())}}handleDoubleClick(t){this.isInsideFrameEvent(t)&&this.emit(new is(this,t))}handleClick(t){this.isInsideFrameEvent(t)&&this.emit(new ns(this,t))}handleMouseUp(t){!this.isInsideFrameEvent(t)&&!this.eventStart&&!this.mouseSessionStartedInFrame||(this.emit(new tt(this,t)),this._dragging=!1,this.eventStart=null,this.mouseSessionStartedInFrame=!1)}handleMouseDown(t){if(!this.isInsideFrameEvent(t))return;if(this.mouseSessionStartedInFrame=!0,this.cancelCenterAnimation(),t.button===1){t.preventDefault(),this.displacementStart=this._displacement.copy(),this.eventStart=new y(t);return}!this.emit(new Pt(this,t)).cancelled&&t.button===0&&(this.displacementStart=this._displacement.copy(),this.eventStart=new y(t))}handleKeyDown(t){this.emit(new Rt(this,t))}handleKeyUp(t){this.emit(new we(this,t))}handleKeyPress(t){this.emit(new Rs(this,t))}handleWheel(t){if(!this.isInsideFrameEvent(t))return;if(!this.emit(new Gs(this,t)).cancelled){const s=t.deltaY<0,i=Math.floor(this.scale*100)/100;this.setScale(this.scale-t.deltaY/(i>=.2&&s||i>.21?1e3:1e4),new y(t))}}},o(me,"Canvas"),me);const Ni=class Ni extends ws{initializeGateways(){}};o(Ni,"TextNode");let Es=Ni;const Ti=class Ti extends z{creationMode="none";init(){this.diagram.onEvent(ns,t=>{this.handleClick(t)}),g.makeObservable(this,{creationMode:g.observable})}getId(){let t=String(Date.now()),e=0;for(;this.diagram.getNodeById(t);)t=String(Date.now())+String(e++);return t}handleClick(t){if(!t.cancelled&&this.creationMode!=="none"&&(t.cancel(),this.creationMode==="text")){const e=this.diagram.add(new Es(null,{id:this.getId(),label:"No label",box:new S([...this.diagram.canvas.inverseFit(new y(t.originalEvent)).raw,100,100])}));this.diagram.getExtension(Y).selectNode(e)}g.runInAction(()=>{this.creationMode="none"})}};o(Ti,"Creator");let rn=Ti;const Li=class Li extends z{dragThreshold=10;autopan=new ut(this.diagram);autopanReady=!0;dragStarted=!1;draggingLabel=null;primaryNodeId=null;groupedChildren=new Map;init(){this.diagram.onEvent(Pt,this.handleMouseDown.bind(this),this.diagram.priorities.Mouse_Down_Dragger),this.diagram.onEvent(tt,this.handleMouseUp.bind(this),this.diagram.priorities.Mouse_Up_Dragger),this.diagram.onEvent(Ct,this.handleMouseMove.bind(this),this.diagram.priorities.Mouse_Move_Selector-1),this.diagram.onEvent(Ee,this.handleScale.bind(this),this.diagram.priorities.Scale_Dragger),this.diagram.onEvent(ie,t=>{this.draggingNodes.delete(t.node.id),this.draggingLabel?.node===t.node&&(this.draggingLabel=null)})}constructor(t){super(t)}draggingNodes=new Map;startPoint=new y;startPointScaled=new y;mousePoint=new y;unsubscribe=o(()=>{},"unsubscribe");startDrag(t,e=ae.getInstance().coordinates,s={}){this.draggingNodes.clear(),this.groupedChildren.clear(),this.draggingLabel=null,this.diagram.canvas.markMouseSessionStartedInFrame(),this.autopanReady=s.deferAutopanUntilSafe!==!0,this.dragStarted=s.startImmediately===!0,this.primaryNodeId=t.id,this.draggingNodes.set(t.id,{node:t,startPoint:t.coordinates.copy()}),this.mousePoint=e.copy(),this.startPoint=e.copy(),this.startPointScaled=this.diagram.canvas.inverseFit(this.startPoint),this.handleDragAction()}originalEvent=null;labelDragHandle(t){return t.originalEvent.target?.closest?.('[data-node-label-drag-handle="true"]')??null}createLabelDragState(t,e){if(!e)return null;const s=Number(e.dataset?.nodeLabelWidth),i=Number(e.dataset?.nodeLabelHeight),a=Number(e.dataset?.nodeLabelGap);return{gap:Number.isFinite(a)&&a>=0?a:5,labelSize:new y([Number.isFinite(s)&&s>0?s:t.box.width,Number.isFinite(i)&&i>0?i:t.box.height]),node:t,startOffset:t.labelOffset}}snapLabelOffset(t,e){const s=e.node.box,i=s.middle,a=s.width/2+e.gap+e.labelSize.x/2,r=s.height/2+e.gap+e.labelSize.y/2,c=i.copy().sum([0,r]),l=[[0,-1],[-1,0],[1,0],[0,1]].map(([f,p])=>i.copy().sum([f*a,p*r])),h=c.copy().sum(t),u=l.map(f=>({anchor:f,distance:f.distance(h)})).sort((f,p)=>f.distance-p.distance)[0];return u?u.anchor.copy().substract(c):t}handleMouseDown(t){this.originalEvent=t;const e=t.node;!t.cancelled&&e&&e.selected&&(t.cancel(),this.draggingNodes.clear(),this.groupedChildren.clear(),this.draggingLabel=this.createLabelDragState(e,this.labelDragHandle(t)),this.autopanReady=!0,this.dragStarted=!1,this.primaryNodeId=e.id,this.mousePoint=new y(t.originalEvent),this.startPoint=this.mousePoint.copy(),this.startPointScaled=this.diagram.canvas.inverseFit(this.mousePoint),this.handleDragAction())}handleMouseMove(t){this.mousePoint=new y(t.originalEvent)}handleDragAction(){this.unsubscribe(),this.unsubscribe=pt(It(this,Ee,({newScale:t,previousScale:e})=>{this.startPoint.divide(e).multiply(t)}),vs(this.handleDragInterval.bind(this),30))}isFullyContained(t,e){return e.x>=t.x&&e.y>=t.y&&e.x+e.width<=t.x+t.width&&e.y+e.height<=t.y+t.height}collectConnectedEdges(t){const e=new Set;return t.forEach(s=>{s.gateways.forEach(i=>{i.incomingEdges.forEach(a=>e.add(a)),i.outgoingEdges.forEach(a=>e.add(a))})}),e}translateEdge(t,e){t.steps.forEach(s=>{s.sum(e)}),t.labels.forEach(s=>{s.position.sum(e)})}updateEdgesAfterBatchMove(t,e){const s=new Map,i=[];e.forEach(a=>{const r=t.get(a.id);if(!r)return;const c=a.coordinates.copy().substract(r);s.set(a.id,c),c.norm>0&&i.push(a)}),i.length&&this.collectConnectedEdges(i).forEach(a=>{const r=s.get(a.from.parent.id),c=s.get(a.to.parent.id);if(r&&c&&r.norm>0&&c.norm>0&&r.copy(!1).substract(c).norm<.001){this.translateEdge(a,r);return}a.from.recomputeConnectedEdge(a,"from")})}rigidSelectionDisplacement(t){const e=new Set(this.groupedChildren.keys()),s=t.filter(w=>!w.cancelled&&!e.has(w.node.id));if(s.length<2)return null;const i=s.find(w=>w.node.id===this.primaryNodeId)??s[0],a=[...s].sort((w,v)=>(ct.get(w,"x")??1/0)-(ct.get(v,"x")??1/0))[0],r=[...s].sort((w,v)=>(ct.get(w,"y")??1/0)-(ct.get(v,"y")??1/0))[0],c=ct.get(a,"x")===void 0?i:a,l=ct.get(r,"y")===void 0?i:r,h=this.draggingNodes.get(c.node.id)?.startPoint,u=this.draggingNodes.get(l.node.id)?.startPoint;if(!h||!u)return null;const f=new y([c.get().x-h.x,l.get().y-u.y]);let p=Number.NEGATIVE_INFINITY,m=Number.POSITIVE_INFINITY,x=Number.NEGATIVE_INFINITY,b=Number.POSITIVE_INFINITY;return s.forEach(w=>{const v=this.draggingNodes.get(w.node.id)?.startPoint;v&&(p=Math.max(p,-v.x),m=Math.min(m,this.diagram.canvas.size.x-v.x-w.node.box.width),x=Math.max(x,-v.y),b=Math.min(b,this.diagram.canvas.size.y-v.y-w.node.box.height))}),f.x=Math.min(m,Math.max(p,f.x)),f.y=Math.min(b,Math.max(x,f.y)),f}applyNodePositionProposals(t){const e=new Map(t.map(l=>[l.node.id,l])),s=new Set(this.groupedChildren.keys()),i=new Map,a=this.rigidSelectionDisplacement(t);t.forEach(l=>{!l.cancelled&&!s.has(l.node.id)&&i.set(l.node.id,l.node)}),this.groupedChildren.forEach((l,h)=>{const u=this.draggingNodes.get(h);u&&i.set(h,u.node)});const r=[...i.values()],c=new Map(r.map(l=>[l.id,l.coordinates.copy()]));t.forEach(l=>{if(!l.cancelled&&!s.has(l.node.id)){const h=this.draggingNodes.get(l.node.id)?.startPoint,u=a&&h?h.copy().sum(a):l.get().coordinates;l.node.setPosition(u,{updateConnectedEdges:!1})}}),this.groupedChildren.size&&this.groupedChildren.forEach((l,h)=>{const u=e.get(l),f=this.draggingNodes.get(h),p=this.draggingNodes.get(l);if(!f||!p)return;const x=(u?.cancelled?p.startPoint:u?.node.coordinates??p.startPoint).copy().substract(p.startPoint),b=f.startPoint.copy().sum(x);f.node.setPosition(b,{updateConnectedEdges:!1})}),this.updateEdgesAfterBatchMove(c,r)}includeGroupedChildren(){const t=[...this.draggingNodes.values()].filter(({node:s})=>s.state.groupChildren);if(!t.length)return;const e=new Set(this.draggingNodes.keys());this.diagram.nodes.forEach(s=>{if(e.has(s.id)||s.state.movable===!1)return;let i=null,a=Number.POSITIVE_INFINITY;const r=s.box;t.forEach(({node:c})=>{if(this.isFullyContained(c.box,r)){const l=c.box.width*c.box.height;l<a&&(a=l,i=c.id)}}),i!==null&&(this.draggingNodes.set(s.id,{node:s,startPoint:s.coordinates.copy()}),this.groupedChildren.set(s.id,i))})}handleDragInterval(){const t=this.mousePoint;if(this.draggingLabel){if(this.dragStarted||(this.dragStarted=t.copy().substract(this.startPoint).norm>this.dragThreshold),!this.dragStarted)return;const e=t.copy().substract(this.startPoint).divide(this.diagram.canvas.scale),s=this.draggingLabel.startOffset.copy().sum(e);this.draggingLabel.node.setLabelOffset(this.snapLabelOffset(s,this.draggingLabel));return}if(this.draggingNodes.size||(this.diagram.getExtension(Y).selectedNodes.forEach(e=>{this.draggingNodes.set(e.id,{node:e,startPoint:e.coordinates.copy()})}),this.includeGroupedChildren(),this.draggingNodes.size||this.unsubscribe()),this.draggingNodes.size){if(this.dragStarted||(this.dragStarted=t.copy().substract(this.startPoint).norm>this.dragThreshold),!this.dragStarted)return;this.autopanReady||(this.autopanReady=this.pointerIsInsideSafeViewport(t)),this.autopanReady&&this.autopan.displace(t);const e=this.diagram.canvas.inverseFit(this.startPoint),s=this.startPointScaled.copy().substract(e),a=[...this.draggingNodes.values()].filter(({node:r})=>!this.groupedChildren.has(r.id)).sort((r,c)=>+(c.node.id===this.primaryNodeId)-+(r.node.id===this.primaryNodeId)).map(r=>new Ae(r.node,new S([...r.startPoint.copy().sum(t.copy().substract(this.startPoint).divide(this.diagram.canvas.scale).substract(s)).raw,...r.node.box.size.raw])));this.emit(new ht(this,a,this.originalEvent?.originalEvent)).cancelled||this.applyNodePositionProposals(a)}}handleMouseUp(){this.draggingNodes.clear(),this.groupedChildren.clear(),this.draggingLabel=null,this.autopanReady=!0,this.dragStarted=!1,this.primaryNodeId=null,this.unsubscribe()}pointerIsInsideSafeViewport(t){const e=this.diagram.canvas.frameDimensions,s=Math.min(ut.edgeThreshold,e.width/2),i=Math.min(ut.edgeThreshold,e.height/2);return t.x>=e.x+s&&t.x<=e.x+e.width-s&&t.y>=e.y+i&&t.y<=e.y+e.height-i}handleScale(t){this.draggingNodes.size}};o(Li,"Dragger");let on=Li;function $e(n,t){const e=Math.abs(t.x-n.x)>=Math.abs(t.y-n.y);return{axis:e?"horizontal":"vertical",origin:n,point:e?new y([t.x,n.y]):new y([n.x,t.y])}}o($e,"cardinalAxisConstraint");const Ua=22,_s=25;function Ka(n,t,e){const s=n.nodes.filter(u=>u!==e.excludeNode).filter(u=>u.box.translate(new y([-_s,-_s])).sum([0,0,_s*2,_s*2]).collides(t));if(e.axisConstraint){const u=s.filter(p=>p.edgesAsGateways&&p.box.collides(t)).sort((p,m)=>p.box.middle.distance(t)-m.box.middle.distance(t)).map(p=>({anchor:p.findAxisAlignedConnectionAnchor(e.axisConstraint.origin,e.axisConstraint.axis),node:p})).find(p=>p.anchor);if(u?.anchor)return{anchor:u.anchor,anchorState:{mode:"fixed",position:u.anchor.relativePosition},node:u.node,snappedToGateway:!1};const f=s.flatMap(p=>p.gateways).map(p=>({distance:p.coordinates.distance(t),gateway:p})).filter(({gateway:p})=>e.axisConstraint.axis==="horizontal"?Math.abs(p.coordinates.y-e.axisConstraint.origin.y)<.001:Math.abs(p.coordinates.x-e.axisConstraint.origin.x)<.001).filter(p=>p.distance<=Ua).sort((p,m)=>p.distance-m.distance)[0]?.gateway;if(f){const p={gateway:f,point:f.coordinates.copy(),relativePosition:f.relativePosition,displacement:new y};return{anchor:p,anchorState:{mode:"fixed",position:p.relativePosition},node:f.parent,snappedToGateway:!0}}return null}const i=s.flatMap(u=>u.gateways).map(u=>({gateway:u,distance:u.coordinates.distance(t)})).filter(u=>u.distance<=Ua).sort((u,f)=>u.distance-f.distance)[0]?.gateway;if(i){const u={gateway:i,point:i.coordinates.copy(),relativePosition:i.relativePosition,displacement:new y};return{anchor:u,anchorState:{mode:"fixed",position:u.relativePosition},node:i.parent,snappedToGateway:!0}}const a=s.filter(u=>u.box.collides(t)).map(u=>u.getGateway("center")).find(Boolean);if(a)return{anchor:{gateway:a,point:a.coordinates.copy(),relativePosition:a.relativePosition,displacement:new y},anchorState:{mode:"fixed",position:a.relativePosition},node:a.parent,snappedToGateway:!0};const r=s.filter(u=>u.edgesAsGateways).sort((u,f)=>u.box.middle.distance(t)-f.box.middle.distance(t))[0];if(r){const u=r.usesAutomaticConnectionPoint(t),f=u?r.findAutomaticGatewayAnchor(e.oppositePoint):r.findFixedConnectionAnchor(t);return{anchor:f,anchorState:u?{mode:"automatic"}:{mode:"fixed",position:f.relativePosition},node:r,snappedToGateway:!1}}const c=s.flatMap(u=>u.gateways).map(u=>({gateway:u,distance:u.connectionDistance(t)})).filter(u=>Number.isFinite(u.distance)).sort((u,f)=>u.distance-f.distance)[0]?.gateway;if(!c)return null;const l=c.connectionDisplacement(t);return{anchor:{gateway:c,point:c.coordinates.copy().sum(l),relativePosition:c.relativePosition,displacement:l},anchorState:{mode:"fixed",position:c.relativePosition},node:c.parent,snappedToGateway:!0}}o(Ka,"resolveConnectionCandidate");const ze=.001,Dt=3,$i=class $i extends z{autopan=new ut(this.diagram);drag=null;endpointDrag=null;uns=o(()=>{},"uns");endpointDragActive=!1;endpointCandidatePoint=null;init(){g.makeObservable(this,{endpointDragActive:g.observable,endpointCandidatePoint:g.observable}),document.addEventListener("mouseup",this.handleMouseUp.bind(this)),this.diagram.onEvent(os,this.startDrag.bind(this)),this.diagram.onEvent(cs,this.startEndpointDrag.bind(this))}almostEqual(t,e){return Math.abs(t-e)<ze}pointMatches(t,e){return this.almostEqual(t.x,e.x)&&this.almostEqual(t.y,e.y)}axisAligned(t,e){return this.almostEqual(t.x,e.x)||this.almostEqual(t.y,e.y)}pointsNear(t,e,s=Dt){return Math.abs(t.x-e.x)<=s&&Math.abs(t.y-e.y)<=s}isActivePoint(t){return!!(this.drag&&(t===this.drag.pointA||t===this.drag.pointB))}getGridSize(){return this.diagram.getExtension(G)?.gridSize??50}orientationVector(t){switch(t){case"left":return{x:-1,y:0};case"right":return{x:1,y:0};case"up":return{x:0,y:-1};case"down":return{x:0,y:1}}}axisPerpendicularToGateway(t){return t==="left"||t==="right"?"y":"x"}expectedLeadPoint(t,e){const s=e==="from"?t.steps[0]:t.steps.at(-1),i=e==="from"?t.from.orientation:t.to.orientation,a=this.orientationVector(i),r=this.getGridSize();return new y([s.x+a.x*r,s.y+a.y*r])}leadMatchesGatewaySide(t,e,s){const i=this.orientationVector(s),a=(e.x-t.x)*i.x+(e.y-t.y)*i.y;return Math.abs(s==="left"||s==="right"?e.y-t.y:e.x-t.x)<=Dt&&a>ze&&a<=this.getGridSize()+Dt}endpointLeadPoint(t,e){const s=e==="from"?t.steps[0]:t.steps.at(-1),i=e==="from"?t.from.orientation:t.to.orientation,a=e==="from"?1:t.steps.length-2,r=t.steps[a];return r&&r.mode!=="manual"&&!this.isActivePoint(r)&&this.leadMatchesGatewaySide(s,r,i)?r:this.expectedLeadPoint(t,e)}ensureEndpointLeadPoint(t,e){const s=this.expectedLeadPoint(t,e),i=e==="from",a=i?1:t.steps.length-2,r=t.steps[a];if(r&&this.leadMatchesGatewaySide(i?t.steps[0]:t.steps.at(-1),r,i?t.from.orientation:t.to.orientation))return a;const c=new O(t,[s.x,s.y,"auto"]);return i?(t.state.steps.splice(1,0,c),1):(t.state.steps.splice(t.steps.length-1,0,c),t.steps.length-2)}ensureEndpointLeads(t){this.ensureEndpointLeadPoint(t,"from"),this.ensureEndpointLeadPoint(t,"to")}isProtectedLeadPoint(t,e){return e<=0||e>=t.steps.length-1?!1:e===1&&t.steps[e].mode!=="manual"&&this.leadMatchesGatewaySide(t.steps[0],t.steps[e],t.from.orientation)||e===t.steps.length-2&&t.steps[e].mode!=="manual"&&this.leadMatchesGatewaySide(t.steps.at(-1),t.steps[e],t.to.orientation)}segmentMovedAxis(t,e){return this.almostEqual(t.y,e.y)?"y":this.almostEqual(t.x,e.x)?"x":Math.abs(t.x-e.x)>=Math.abs(t.y-e.y)?"y":"x"}segmentDirection(t,e){return!this.axisAligned(t,e)||this.pointMatches(t,e)?null:this.almostEqual(t.y,e.y)?"horizontal":"vertical"}segmentIsParallelToDraggedAxis(t,e){return this.drag?this.drag.movedAxis==="y"?Math.abs(t.y-e.y)<=Dt:Math.abs(t.x-e.x)<=Dt:!1}perpendicularAxis(t){return t==="x"?"y":"x"}pointAxis(t,e){return e==="x"?t.x:t.y}setPointAxis(t,e,s){e==="x"?t.x=s:t.y=s}crossesStaticBoundary(t,e,s,i,a=Dt){const r=this.pointAxis(s,e),c=this.pointAxis(i,e);switch(t){case"right":case"down":return r<c-a;case"left":case"up":return r>c+a}}copyAsManual(t,e="both"){const s=t.copy();return s.parent=t.parent,s.addManualAxis(e),s}markManual(t,e="both"){t.mode!=="static"&&t.addManualAxis(e)}clampPointPastLead(t,e,s){switch(s){case"left":t.x=Math.min(t.x,e.x);break;case"right":t.x=Math.max(t.x,e.x);break;case"up":t.y=Math.min(t.y,e.y);break;case"down":t.y=Math.max(t.y,e.y);break}}movedAxisMatchesOrientation(t,e){return(e==="left"||e==="right")&&t==="x"||(e==="up"||e==="down")&&t==="y"}edgePointAt(t,e,s,i="auto"){return new O(t,[e,s,i])}guardCoordinate(t,e,s,i,a){const r=this.pointAxis(i,a)-this.pointAxis(s,a),c=Math.abs(r)>ze?Math.sign(r):1,l=e==="from"?t.from.parent.box:t.to.parent.box,h=a==="y"?l.height:l.width,u=Math.max(this.getGridSize(),h/2+this.getGridSize()/2);return this.pointAxis(s,a)+c*u}makeGuardCorner(t,e,s,i){const a=this.perpendicularAxis(i),r=this.edgePointAt(t,e.x,e.y,"auto");return this.setPointAxis(r,i,this.pointAxis(e,i)),this.setPointAxis(r,a,s),r}insertStaticBoundaryGuard(t){if(!this.drag)return!1;const{edge:e,movedAxis:s}=this.drag,i=t==="from"?e.from.orientation:e.to.orientation;if(!this.movedAxisMatchesOrientation(s,i))return!1;const a=e.state.steps,r=a.findIndex(I=>I===this.drag.pointA),c=a.findIndex(I=>I===this.drag.pointB);if(r<0||c<0)return!1;const l=t==="from"?r<=c?"pointA":"pointB":r>=c?"pointA":"pointB",h=l==="pointA"?"pointB":"pointA",u=this.drag[l],f=this.drag[h],p=a.findIndex(I=>I===u),m=this.endpointLeadPoint(e,t),x=t==="from"?1:a.length-2,b=a[x],w=!!(b&&this.pointMatches(b,m)),v=t==="from"?p===1:p===a.length-2,_=t==="from"?p===2&&w:p===a.length-3&&w,E=this.crossesStaticBoundary(i,s,u,m,Dt);if(p<0||!v&&!_||!E)return!1;const C=this.perpendicularAxis(s),k=this.guardCoordinate(e,t,m,f,C);this.setPointAxis(u,C,k),this.markManual(u,s),this.rebaseDraggedEndpointFixedAxis(l,u);const P=this.makeGuardCorner(e,m,k,s);if(t==="from"){if(v){const I=this.edgePointAt(e,m.x,m.y,"auto");a.splice(p,0,I,P)}else a.splice(p,0,P);return this.drag.sourceLeadAdjacent=!1,this.drag.staticBoundaryGuarded=!0,!0}if(v){const I=this.edgePointAt(e,m.x,m.y,"auto");a.splice(p+1,0,P,I)}else a.splice(p+1,0,P);return this.drag.targetLeadAdjacent=!1,this.drag.staticBoundaryGuarded=!0,!0}insertStaticBoundaryGuards(){const t=this.insertStaticBoundaryGuard("from"),e=this.insertStaticBoundaryGuard("to");return t||e}clampDraggedSegmentAgainstEndpointLeads(){if(!this.drag)return;const{edge:t,pointA:e,pointB:s,movedAxis:i,sourceLeadAdjacent:a,targetLeadAdjacent:r}=this.drag,c=t.steps.findIndex(h=>h===e),l=t.steps.findIndex(h=>h===s);if(this.movedAxisMatchesOrientation(i,t.from.orientation)){const u=t.steps[1]??this.expectedLeadPoint(t,"from");u&&(a||c>=0&&l>=0&&this.isProtectedLeadPoint(t,1)&&(c===2||l===2))&&(this.clampPointPastLead(e,u,t.from.orientation),this.clampPointPastLead(s,u,t.from.orientation))}if(this.movedAxisMatchesOrientation(i,t.to.orientation)){const h=t.steps.length-2,u=t.steps[h]??this.expectedLeadPoint(t,"to");u&&(r||c>=0&&l>=0&&this.isProtectedLeadPoint(t,h)&&(c===h-1||l===h-1))&&(this.clampPointPastLead(e,u,t.to.orientation),this.clampPointPastLead(s,u,t.to.orientation))}}mergeDraggedSegmentWithManualNeighbors(){if(!this.drag)return!1;let t=!1;const e=o((s,i)=>{if(!this.drag)return;const a=this.drag[s],r=this.drag.edge.state.steps,c=r.findIndex(u=>u===a),l=c+i;if(c<0||l<0||l>=r.length)return;const h=r[l];h.mode==="manual"&&this.pointsNear(a,h)&&(h.assign(a),r.splice(c,1),this.drag[s]=h,t=!0)},"mergePoint");return e("pointA",-1),e("pointB",1),t}rebaseDraggedEndpointFixedAxis(t,e){if(!this.drag)return;const s=t==="pointA"?this.drag.startPointA:this.drag.startPointB;this.drag.movedAxis==="y"?s.x=e.x:s.y=e.y}replaceDraggedEndpointWithProtectedLeadDuplicate(t,e,s){if(!this.drag)return;const i=this.drag[t],a=this.copyAsManual(e,this.drag.movedAxis);this.drag.movedAxis==="y"?a.y=i.y:a.x=i.x,this.drag.edge.state.steps[s]=a,this.drag[t]=a,this.rebaseDraggedEndpointFixedAxis(t,a)}absorbCollinearSegmentsIntoDraggedSegment(){if(!this.drag)return!1;let t=!1;const e=o((s,i)=>{if(!this.drag)return;const a=this.drag.edge.state.steps;for(;;){const r=this.drag[s],c=a.findIndex(u=>u===r),l=c+i;if(c<0||l<=0||l>=a.length-1)return;const h=a[l];if(!this.segmentIsParallelToDraggedAxis(r,h))return;if(this.isProtectedLeadPoint(this.drag.edge,l)){this.replaceDraggedEndpointWithProtectedLeadDuplicate(s,h,c),t=!0;return}if(h.mode==="static")return;a.splice(c,1),this.drag[s]=h,this.rebaseDraggedEndpointFixedAxis(s,h),t=!0}},"absorbSide");return e("pointA",-1),e("pointB",1),t}removeAdjacentDuplicates(t){if(!this.drag)return!1;const e=this.drag.edge.state.steps;let s=!1;for(let i=0;i<e.length-1;){const a=e[i],r=e[i+1];if(!this.pointsNear(a,r)){i+=1;continue}const c=this.isActivePoint(a)||a.mode==="static"||this.isProtectedLeadPoint(this.drag.edge,i)?i+1:i;if(c<=0||c>=e.length-1||t&&this.isActivePoint(e[c])){i+=1;continue}e.splice(c,1),s=!0,i=Math.max(0,i-1)}return s}coordinateAnchorForPair(t,e,s,i){return this.drag?t.mode==="static"?this.pointAxis(t,s):e.mode==="static"?this.pointAxis(e,s):this.isProtectedLeadPoint(this.drag.edge,i)?this.pointAxis(t,s):this.isProtectedLeadPoint(this.drag.edge,i+1)?this.pointAxis(e,s):this.isActivePoint(t)?this.pointAxis(t,s):this.isActivePoint(e)?this.pointAxis(e,s):t.mode==="manual"?this.pointAxis(t,s):e.mode==="manual"?this.pointAxis(e,s):this.pointAxis(t,s):this.pointAxis(t,s)}snapNearlyAlignedDraggedPairs(){if(!this.drag)return!1;const t=this.drag.edge.state.steps;let e=!1;for(let s=0;s<t.length-1;s++){const i=t[s],a=t[s+1];if(Math.abs(i.x-a.x)>ze&&Math.abs(i.x-a.x)<=Dt){const r=this.coordinateAnchorForPair(i,a,"x",s);i.x=r,a.x=r,e=!0}if(Math.abs(i.y-a.y)>ze&&Math.abs(i.y-a.y)<=Dt){const r=this.coordinateAnchorForPair(i,a,"y",s);i.y=r,a.y=r,e=!0}}return e}chooseOrthogonalCorner(t,e,s,i){const a=new O(this.drag?.edge??null,[e.x,t.y,"auto"]),r=new O(this.drag?.edge??null,[t.x,e.y,"auto"]),c=o(l=>{let h=0;const u=s?this.segmentDirection(s,t):null,f=this.segmentDirection(t,l),p=i?this.segmentDirection(e,i):null,m=this.segmentDirection(l,e);return u&&f!==u&&(h+=2),p&&m!==p&&(h+=2),this.axisAligned(s??t,l)&&(h+=1),this.axisAligned(l,i??e)&&(h+=1),h},"score");return c(a)>=c(r)?a:r}ensureOrthogonalAdjacency(){if(!this.drag)return!1;const t=this.drag.edge.state.steps;let e=!1;for(let s=0;s<t.length-1;s++){const i=t[s],a=t[s+1];if(this.axisAligned(i,a))continue;const r=s>0?t[s-1]:void 0,c=s+2<t.length?t[s+2]:void 0;t.splice(s+1,0,this.chooseOrthogonalCorner(i,a,r,c)),e=!0,s+=1}return e}normalizeDraggedEdge(){if(!this.drag)return!1;const t=this.snapNearlyAlignedDraggedPairs(),e=this.mergeDraggedSegmentWithManualNeighbors(),s=this.absorbCollinearSegmentsIntoDraggedSegment(),i=this.snapNearlyAlignedDraggedPairs(),a=this.ensureOrthogonalAdjacency(),r=this.snapNearlyAlignedDraggedPairs(),c=this.removeAdjacentDuplicates(!0),l=this.drag.edge.state.steps;return l.length>0&&(l[0].markStatic(),l.at(-1).markStatic()),t||e||s||i||a||r||c}finalizeDraggedEdge(){this.drag&&(this.normalizeDraggedEdge(),this.ensureOrthogonalAdjacency(),this.removeAdjacentDuplicates(!1),this.drag.staticBoundaryGuarded||this.drag.edge.setSteps(qa("orthogonal").route(this.diagram,this.drag.edge)))}prepareStraightLeadSegment(t,e){const s=this.copyAsManual(t.steps[1],e),i=this.copyAsManual(t.steps[2],e);return t.state.steps.splice(2,0,s,i),{pointA:s,pointB:i,movedAxis:e}}prepareSourceSegment(t){this.ensureEndpointLeads(t);const e=this.axisPerpendicularToGateway(t.from.orientation);if(t.steps.length===4&&this.isProtectedLeadPoint(t,1)&&this.isProtectedLeadPoint(t,2))return this.prepareStraightLeadSegment(t,e);const s=this.copyAsManual(t.steps[1],e);t.state.steps.splice(2,0,s);const i=t.steps[3];return i instanceof O?(this.markManual(i,e),{pointA:s,pointB:i,movedAxis:e}):null}prepareTargetSegment(t){this.ensureEndpointLeads(t);const e=this.axisPerpendicularToGateway(t.to.orientation);if(t.steps.length===4&&this.isProtectedLeadPoint(t,1)&&this.isProtectedLeadPoint(t,2))return this.prepareStraightLeadSegment(t,e);const s=t.steps.length-2,i=this.copyAsManual(t.steps[s],e);t.state.steps.splice(s,0,i);const a=t.steps[s-1];return a instanceof O?(this.markManual(a,e),{pointA:a,pointB:i,movedAxis:e}):null}prepareSegmentAfterProtectedSourceLead(t,e){const s=this.segmentMovedAxis(t.steps[e],t.steps[e+1]),i=this.copyAsManual(t.steps[e],s);t.state.steps.splice(e+1,0,i);const a=t.steps[e+2];return a instanceof O?(this.markManual(a,s),{pointA:i,pointB:a,movedAxis:s}):null}prepareSegmentBeforeProtectedTargetLead(t,e){const s=this.segmentMovedAxis(t.steps[e-1],t.steps[e]),i=this.copyAsManual(t.steps[e],s);t.state.steps.splice(e,0,i);const a=t.steps[e-1];return a instanceof O?(this.markManual(a,s),{pointA:a,pointB:i,movedAxis:s}):null}prepareInteriorSegment(t,e,s,i){this.ensureEndpointLeads(t);let a=t.steps.findIndex(u=>u===e),r=t.steps.findIndex(u=>u===s);if((a<0||r<0||Math.abs(a-r)!==1)&&(a=Math.max(0,Math.min(i,t.steps.length-2)),r=a+1),a>r&&([a,r]=[r,a]),a===0)return this.prepareSourceSegment(t);if(r===t.steps.length-1)return this.prepareTargetSegment(t);if(this.isProtectedLeadPoint(t,a))return this.prepareSegmentAfterProtectedSourceLead(t,a);if(this.isProtectedLeadPoint(t,r))return this.prepareSegmentBeforeProtectedTargetLead(t,r);const c=t.steps[a],l=t.steps[r],h=this.segmentMovedAxis(c,l);return this.markManual(c,h),this.markManual(l,h),{pointA:c,pointB:l,movedAxis:h}}restoreOriginalSteps(t,e){t.setSteps(e.map(s=>s.copy()))}startDrag(t){if(t.cancelled||t.src.pathType!=="orthogonal")return;t.stopImmediatePropagation(),this.uns();const e=t.src,s=e.steps.map(b=>b.copy()),i=e.steps.length-1,a=Number(t.midPoint.id),r=a===0,c=a===i-1,l=t.midPoint.points[0],h=t.midPoint.points[1],u=g.runInAction(()=>{e.state.dragging=!0;const b=r?this.prepareSourceSegment(e):c?this.prepareTargetSegment(e):this.prepareInteriorSegment(e,l,h,a);return b||(e.state.dragging=!1),b});if(!u)return;const f=e.steps.findIndex(b=>b===u.pointA),p=e.steps.findIndex(b=>b===u.pointB),m=f===2||p===2,x=f===e.steps.length-3||p===e.steps.length-3;this.drag={edge:e,midpoint:t.midPoint,pointA:u.pointA,pointB:u.pointB,movedAxis:u.movedAxis,startMouseCanvas:this.diagram.canvas.inverseFit(new y(t)),startPointA:u.pointA.copy().nonObserved,startPointB:u.pointB.copy().nonObserved,originalSteps:s,sourceLeadAdjacent:m,targetLeadAdjacent:x,staticBoundaryGuarded:!1,changed:!1},this.uns=pt(R(this,"mousemove",this.handleMouseMove),R(this,"pointermove",this.handleMouseMove))}startEndpointDrag(t){if(t.cancelled)return;t.stopImmediatePropagation(),this.uns(),g.runInAction(()=>{t.src.state.dragging=!0}),this.drag=null,this.endpointDragActive=!0,this.endpointCandidatePoint=null;const e=t.src.steps[0],s=t.src.steps.at(-1),i=t.src.from.parent.box,a=t.src.to.parent.box;this.endpointDrag={edge:t.src,endpoint:t.endpoint,originalStart:{gateway:t.src.from,point:e.copy(),displacement:e.copy().substract(t.src.from.coordinates),relativePosition:new y([(e.x-i.x)/Math.max(i.width,.001),(e.y-i.y)/Math.max(i.height,.001)])},originalEnd:{gateway:t.src.to,point:s.copy(),displacement:s.copy().substract(t.src.to.coordinates),relativePosition:new y([(s.x-a.x)/Math.max(a.width,.001),(s.y-a.y)/Math.max(a.height,.001)])},originalStartState:{mode:t.src.startAnchor.mode,position:t.src.startAnchor.position?.copy()},originalEndState:{mode:t.src.endAnchor.mode,position:t.src.endAnchor.position?.copy()},candidate:null},this.uns=pt(R(this,"mousemove",this.handleMouseMove),R(this,"pointermove",this.handleMouseMove))}restoreEndpointDrag(){if(!this.endpointDrag)return;const t=this.endpointDrag,e=t.endpoint==="from"?t.originalStart:t.originalEnd,s=t.endpoint==="from"?t.originalStartState:t.originalEndState;t.edge.setResolvedEndpoint(t.endpoint,e,s,!0)}handleEndpointMouseMove(t){if(!this.endpointDrag)return;const{edge:e,endpoint:s}=this.endpointDrag,i=this.diagram.canvas.inverseFit(new y(t)),a=s==="from"?e.to.parent:e.from.parent,r=s==="from"?e.steps.at(-1):e.steps[0],c=t.shiftKey?$e(r,i):null,l=c?.point??i,h=Ka(this.diagram,l,{axisConstraint:c?{axis:c.axis,origin:c.origin}:void 0,excludeNode:a,oppositePoint:a.box.middle});if(!h){this.endpointDrag.candidate=null,this.endpointCandidatePoint=null,this.restoreEndpointDrag();return}const u=s==="from"?h.anchor.gateway:e.from,f=s==="to"?h.anchor.gateway:e.to;if(!u.canStartConnection(f,e)||!f.canConnect(u,e)){this.endpointDrag.candidate=null,this.endpointCandidatePoint=null,this.restoreEndpointDrag();return}this.endpointDrag.candidate=h,this.endpointCandidatePoint=h.anchor.point,g.runInAction(()=>{e.setResolvedEndpoint(s,h.anchor,h.anchorState,!0)})}moveDraggedSegment(t){if(!this.drag)return;const{pointA:e,pointB:s}=this.drag,a=this.diagram.canvas.inverseFit(new y(t)).nonObserved.substract(this.drag.startMouseCanvas);this.drag.movedAxis==="x"?a.y=0:a.x=0,g.runInAction(()=>{if(!this.drag)return;e.assign(this.drag.startPointA.copy().sum(a)),s.assign(this.drag.startPointB.copy().sum(a));const r=[new ls(e,this.drag.movedAxis),new ls(s,this.drag.movedAxis)];this.emit(new ds(this,r,this.drag.movedAxis,t));for(const u of r)u.point.assign(u.get());const c=this.insertStaticBoundaryGuards();this.clampDraggedSegmentAgainstEndpointLeads();const l=this.normalizeDraggedEdge();(c||l||!this.pointMatches(this.drag.pointA,this.drag.startPointA)||!this.pointMatches(this.drag.pointB,this.drag.startPointB))&&(this.drag.changed=!0)})}handleMouseMove(t){if((t.type==="pointermove"||typeof PointerEvent>"u")&&this.autopan.displace(new y(t)),this.endpointDrag){this.handleEndpointMouseMove(t);return}this.moveDraggedSegment(t)}handleMouseUp(){!this.drag&&!this.endpointDrag||(g.runInAction(()=>{if(this.drag&&(this.drag.changed?this.finalizeDraggedEdge():this.restoreOriginalSteps(this.drag.edge,this.drag.originalSteps),this.drag.edge.state.dragging=!1),this.endpointDrag){const{edge:t,candidate:e}=this.endpointDrag;(!e||this.emit(new Se(this,t.from.parent,t.to.parent)).cancelled)&&this.restoreEndpointDrag(),t.state.dragging=!1,this.endpointDragActive=!1,this.endpointCandidatePoint=null}this.drag=null,this.endpointDrag=null}),this.uns())}};o($i,"EdgesDragger");let le=$i;const zi=class zi extends z{proposals=[];snapDistance=10;clear(){this.proposals=[]}init(){g.makeObservable(this,{clear:g.action,proposals:g.observable})}align(t,e,s){if(!this.enabled||!this.diagram.getExtension(Zt).enabled)return this.clear(),s;const i=e.size,a=5,r=this.snapDistance;let c=s.x,l=s.y;const h={from:s.copy(),id:"",to:s.copy()};let u={distance:Number.POSITIVE_INFINITY,guide:h,target:s.x},f={distance:Number.POSITIVE_INFINITY,guide:h,target:s.y};const p=o((b,w)=>{const v=Math.abs(s.x-b);v<=r&&v<u.distance&&(u={distance:v,guide:w,target:b})},"chooseX"),m=o((b,w)=>{const v=Math.abs(s.y-b);v<=r&&v<f.distance&&(f={distance:v,guide:w,target:b})},"chooseY");for(const b of this.diagram.edges.flatMap(w=>w.labels)){if(b===e)continue;const w=b.position.x+b.size.width/2,v=b.position.y+b.size.height/2,_=b.position.y+b.size.height,E=b.position.x+b.size.width,C=Math.min(s.y,b.position.y),k=Math.max(s.y+i.height,_),P=Math.min(s.x,b.position.x),I=Math.max(s.x+i.width,E);p(b.position.x,{from:new y([b.position.x,C]),id:`label-left-${b.id}`,to:new y([b.position.x,k])}),p(E-i.width,{from:new y([E,C]),id:`label-right-${b.id}`,to:new y([E,k])}),p(w-i.width/2,{from:new y([w,C]),id:`label-center-x-${b.id}`,to:new y([w,k])}),m(b.position.y,{from:new y([P,b.position.y]),id:`label-top-${b.id}`,to:new y([I,b.position.y])}),m(_-i.height,{from:new y([P,_]),id:`label-bottom-${b.id}`,to:new y([I,_])}),m(v-i.height/2,{from:new y([P,v]),id:`label-center-y-${b.id}`,to:new y([I,v])})}Number.isFinite(u.distance)&&(c=u.target),Number.isFinite(f.distance)&&(l=f.target);for(let b=0;b<t.steps.length-1;b+=1){const w=t.steps[b],v=t.steps[b+1],_=Math.abs(w.x-v.x)<.001,E=Math.abs(w.y-v.y)<.001;if(_&&l+i.height>=Math.min(w.y,v.y)-r&&l<=Math.max(w.y,v.y)+r){const C=Math.min(w.y,v.y),k=Math.max(w.y,v.y);p(w.x+a,{from:new y([w.x+a,C]),id:`edge-left-${b}`,to:new y([w.x+a,k])}),p(w.x-a-i.width,{from:new y([w.x-a,C]),id:`edge-right-${b}`,to:new y([w.x-a,k])})}if(E&&c+i.width>=Math.min(w.x,v.x)-r&&c<=Math.max(w.x,v.x)+r){const C=Math.min(w.x,v.x),k=Math.max(w.x,v.x);m(w.y+a,{from:new y([C,w.y+a]),id:`edge-top-${b}`,to:new y([k,w.y+a])}),m(w.y-a-i.height,{from:new y([C,w.y-a]),id:`edge-bottom-${b}`,to:new y([k,w.y-a])})}}Number.isFinite(u.distance)&&(c=u.target),Number.isFinite(f.distance)&&(l=f.target);const x=[u,f].filter(b=>Number.isFinite(b.distance)).map(b=>b.guide);return g.runInAction(()=>{this.proposals=x}),new y([c,l])}};o(zi,"LabelsAligner");let _t=zi;function Eo(n,t,e){switch(e){case"down":return t.copy().sum([0,n]);case"left":return t.copy().sum([-n,0]);case"up":return t.copy().sum([0,-n]);case"right":return t.copy().sum([+n,0])}}o(Eo,"stepFromGateway");const _o=5,Oi=class Oi extends z{hasRoutedPreview=!1;previewRequestVersion=0;previewRafId=null;init(){g.makeObservable(this,{_arrowSteps:g.observable,arrowTo:g.observable,candidateGateway:g.observable,candidateAnchor:g.observable,startConnectionFrom:g.action,startConnectionFromNode:g.action,handleGatewayMouseDown:g.action,handleMouseMove:g.action,handlePendingMouseMove:g.action,startGateway:g.observable,handleMouseUp:g.action}),this.diagram.onEvent(Pt,this.handleGatewayMouseDown.bind(this),this.diagram.priorities.Mouse_Down_Node)}arrowTo=null;startGateway=null;startAnchor=null;startAnchorMode="fixed";axisConstrained=!1;candidateGateway=null;candidateAnchor=null;candidateAnchorState=null;previewRouter=new xs;pendingConnection=null;unbindPendingConnection=o(()=>{},"unbindPendingConnection");_arrowSteps=[];get arrowSteps(){return this._arrowSteps}get previewPathType(){const t=this.startGateway?.parent.requiredEdgePathType==="straight",e=this.candidateGateway?.parent.requiredEdgePathType==="straight";return t||e?"straight":"orthogonal"}get candidatePoint(){return this.candidateAnchor?.point??null}get snap(){return this.diagram.getExtension(G)}resolveStartAnchor(t,e=!1){return this.startGateway?this.startAnchorMode==="automatic"&&!e?this.startGateway.parent.findAutomaticGatewayAnchor(t):this.startAnchor:null}calculateArrowSteps(){if(!this.startGateway||!this.arrowTo)return;const t=this.startGateway,e=this.candidateGateway,s=this.candidateAnchor,i=this.arrowTo.copy(),a=this.previewRequestVersion;if(!i||e&&!s){g.runInAction(()=>{this._arrowSteps=[]});return}try{const r=this.diagram.canvas.inverseFit(i),c=this.axisConstrained&&this.startAnchor?$e(this.startAnchor.point,r).point:r,l=this.snap.gridSize/2,h=c.copy().divide(l).round.multiply(l);if(this.axisConstrained&&this.startAnchor){const p=$e(this.startAnchor.point,c);p.axis==="horizontal"?h.y=p.point.y:h.x=p.point.x}const u=this.resolveStartAnchor(e?.parent.box.middle??c,this.axisConstrained);if(!u)return;let f=[];if(e)f=this.previewRouter.findRouteBetween(this.diagram,u.gateway,s.gateway,u.displacement,s.displacement);else{const p=new ws(null,{id:"fake",label:"",box:new S([...h.raw,0,0])}),m=u.gateway.coordinates.substract(p.getGateway("down").coordinates).x,x=u.gateway.coordinates.substract(p.getGateway("down").coordinates).y,b=Math.abs(m)>Math.abs(x)?m>=0?"right":"left":x>=0?"down":"up";f=this.previewRouter.findRouteBetween(this.diagram,u.gateway,p.getGateway(b),u.displacement)}g.runInAction(()=>{this.startGateway===t&&a===this.previewRequestVersion&&(this._arrowSteps=f.map(p=>new y([p.x,p.y])),this.hasRoutedPreview=this._arrowSteps.length>1)})}catch{}}orthogonalMousePreview(t,e){const s=this.snap.gridSize/2,i=e.copy().divide(s).round.multiply(s);if(this.axisConstrained&&this.startAnchor){const p=$e(this.startAnchor.point,e);p.axis==="horizontal"?i.y=p.point.y:i.x=p.point.x}const a=t.point.copy(),r=Eo(this.snap.gridSize,a,t.gateway.orientation),c=[a,r];if(Math.abs(r.x-i.x)<.001||Math.abs(r.y-i.y)<.001)return c.push(i),this.compactPreviewPoints(c);const l=new y([r.x,i.y]),h=new y([i.x,r.y]),u=Math.abs(i.x-r.x),f=Math.abs(i.y-r.y);return c.push(u>=f?h:l,i),this.compactPreviewPoints(c)}compactPreviewPoints(t){const e=[];for(const s of t){const i=e.at(-1);if(!(i&&Math.abs(i.x-s.x)<.001&&Math.abs(i.y-s.y)<.001))for(e.push(s);e.length>=3;){const a=e.at(-3),r=e.at(-2),c=e.at(-1),l=Math.abs(a.x-r.x)<.001&&Math.abs(r.x-c.x)<.001,h=Math.abs(a.y-r.y)<.001&&Math.abs(r.y-c.y)<.001;if(l||h)e.splice(e.length-2,1);else break}}return e}cancelScheduledPreview(){this.previewRafId!==null&&(cancelAnimationFrame(this.previewRafId),this.previewRafId=null)}scheduleCalculateArrowSteps(){this.previewRafId===null&&(this.previewRafId=requestAnimationFrame(()=>{this.previewRafId=null,this.calculateArrowSteps()}))}u=o(()=>{},"u");connectionAnchorFromEvent(t){const e=t.originalEvent.target;if(!e||typeof e.closest!="function")return null;const s=e.closest("[data-gateway-parent]"),i=this.diagram.getNodeById(s?.dataset.gatewayParent??"");if(!s||!i)return null;const a=s.dataset.gatewayId,r=a?i.gateways.find(l=>l.id===a):null;if(r)return{gateway:r,point:r.coordinates.copy(),relativePosition:r.relativePosition,displacement:new y};const c=this.diagram.canvas.inverseFit(new y(t));return i.findFixedConnectionAnchor(c)}handleGatewayMouseDown(t){if(t.cancelled||t.originalEvent.button!==0||this.connecting)return;const e=this.connectionAnchorFromEvent(t);e&&(this.cancelPendingConnection(),this.pendingConnection={anchor:e,pointer:new y(t)},t.cancel(),this.unbindPendingConnection=pt(It(this,Ct,this.handlePendingMouseMove),It(this,tt,this.cancelPendingConnection)))}handlePendingMouseMove(t){const e=this.pendingConnection;!e||e.pointer.distance(new y(t))<_o||(this.cancelPendingConnection(),this.startAnchorMode="fixed",this.beginConnection(e.anchor,t)&&this.handleMouseMove(t))}cancelPendingConnection(){this.pendingConnection=null,this.unbindPendingConnection(),this.unbindPendingConnection=()=>{}}startConnectionFrom(t,e){this.startAnchorMode="fixed";const s={gateway:t,point:t.coordinates.copy(),relativePosition:t.relativePosition,displacement:new y};this.beginConnection(s,e)}startConnectionFromNode(t,e,s="fixed"){const i=this.diagram.canvas.inverseFit(new y(e));this.startAnchorMode=s,this.beginConnection(t.findFixedConnectionAnchor(i),e)}get connecting(){return this.startGateway!==null}beginConnection(t,e){const s=t.gateway;if(this.emit(new Ws(this,s.parent)).cancelled)return!1;const i="originalEvent"in e?e.originalEvent:e.nativeEvent;return"originalEvent"in e&&e.stopImmediatePropagation(),i.stopImmediatePropagation?.(),this.diagram.canvas.markMouseSessionStartedInFrame(),this.startGateway=s,this.startAnchor=t,this.arrowTo=new y(i),this.hasRoutedPreview=!1,this.axisConstrained=!1,this.previewRequestVersion=0,this._arrowSteps=[t.point.copy(),t.point.copy()],this.u(),this.u=pt(It(this,Ct,this.handleMouseMove),It(this,tt,this.handleMouseUp)),!0}handleMouseMove(t){this.previewRequestVersion+=1;const e=this.diagram.canvas.frameDimensions;this.arrowTo=new y(t);const s=this.arrowTo.copy().substract(this.diagram.canvas.framePosition),i=new y([0,0]);s.x<100?i.sum([(100-s.x)*.1,0]):s.x>e.width-100?i.substract([(100-Math.abs(s.x-e.width))*.1,0]):s.y<100?i.sum([0,(100-s.y)*.1]):s.y>e.height-100&&i.substract([0,(100-Math.abs(s.y-e.height))*.1]),i.norm>0&&this.diagram.canvas.displace(i);const a=this.diagram.canvas.inverseFit(this.arrowTo),r=t.shift&&this.startAnchor?$e(this.startAnchor.point,a):null;this.axisConstrained=!!r;const c=r?.point??a,l=Ka(this.diagram,c,{axisConstraint:r?{axis:r.axis,origin:r.origin}:void 0,excludeNode:this.startGateway?.parent,oppositePoint:this.startGateway.parent.box.middle});if(l?(this.candidateGateway=l.anchor.gateway,this.candidateAnchor=l.anchor,this.candidateAnchorState=l.anchorState):(this.candidateGateway=null,this.candidateAnchor=null,this.candidateAnchorState=null),!this.candidateGateway){this.hasRoutedPreview=!1;const h=this.resolveStartAnchor(c,this.axisConstrained);this._arrowSteps=h?this.orthogonalMousePreview(h,c):[],this.scheduleCalculateArrowSteps();return}this.calculateArrowSteps()}handleMouseUp(){try{const t=this.candidateAnchor,e=this.candidateAnchorState,s=this.candidateGateway?this.resolveStartAnchor(this.candidateGateway.parent.box.middle,this.axisConstrained):null;this.candidateGateway&&t&&e&&s&&this.candidateGateway.canConnect(s.gateway)&&s.gateway.canStartConnection(this.candidateGateway)&&(this.emit(new Se(this,s.gateway.parent,this.candidateGateway.parent)).cancelled||(this._arrowSteps=[],this.diagram.connect(s.gateway,this.candidateGateway,{fromDisplacement:s.displacement,startAnchor:this.startAnchorMode==="automatic"&&!this.axisConstrained?{mode:"automatic"}:{mode:"fixed",position:s.relativePosition},toDisplacement:t.displacement,endAnchor:e})))}finally{this.cancelPendingConnection(),this._arrowSteps=[],this.hasRoutedPreview=!1,this.startGateway=null,this.startAnchor=null,this.startAnchorMode="fixed",this.axisConstrained=!1,this.arrowTo=null,this.candidateGateway=null,this.candidateAnchor=null,this.candidateAnchorState=null,this.previewRequestVersion=0,this.cancelScheduledPreview(),this.u()}}};o(Oi,"NodesConnector");let de=Oi;const Fi=class Fi extends z{init(){this.diagram.onEvent(ke,()=>{},this.diagram.priorities.Node_Selection_Nodes_Resizer)}};o(Fi,"NodesResizer");let cn=Fi,Ja=(ye=class extends z{grid=null;points=null;highlighted=new Set;init(){g.makeObservable(this,{grid:g.observable,setGrid:g.action,points:g.observable,highlighted:g.observable})}setGrid(t,e){this.grid=t,this.points=e}},o(ye,"PathFindingRenderer"),ye);const Oe=1e3,Hi=class Hi{Canvas_Rules=Oe;Change_History=0;Click_Node=100;Drag_Rules=Oe;Drag_Node_Straight_Drag=500;Drag_Node_Distances_Balancer=400;Drag_Node_Aligner=200;Drag_Node_Snap_To_Grid=100;Drag_Edge_Snap_To_Grid=100;Mouse_Down_Rules=Oe;Mouse_Down_Measurer=400;Mouse_Down_Selector=300;Mouse_Down_Node=200;Mouse_Down_Dragger=100;Mouse_Move_Straight_Drag=500;Mouse_Move_Selector=100;Mouse_Up_Straight_Drag=500;Mouse_Up_Dragger=200;Mouse_Up_Selector=100;Nodes_Connection_Rules=Oe;Node_Selection_Nodes_Resizer=200;Node_Selection_Selector=200;Scale_Dragger=100;Selection_Rules=Oe};o(Hi,"Priorities");let ln=Hi;const Qa="diagram-grid-visible",Bi=class Bi{constructor(t){this.d=t,t.onEvent(et,this.check(()=>this.allowEdition),t.priorities.Mouse_Down_Rules),t.onEvent(Me,this.check(()=>this.allowSelection),t.priorities.Selection_Rules),t.onEvent(Ot,this.check(()=>this.allowEdition),t.priorities.Drag_Rules),t.onEvent(_e,this.check(()=>this.allowEdition),t.priorities.Nodes_Connection_Rules),t.onEvent(ve,this.check(()=>this.allowZoom),t.priorities.Drag_Rules),g.makeAutoObservable(this)}d;allowEdition=!0;allowSelection=!0;allowZoom=!0;displaceWhenDragOnEdges=!0;_toggleGrid=localStorage.getItem(Qa)!=="false";get toggleGrid(){return this._toggleGrid}set toggleGrid(t){this._toggleGrid=t,localStorage.setItem(Qa,String(t))}check=o(t=>e=>{t()||(e.cancel(),e.stopImmediatePropagation())},"check")};o(Bi,"Rules");let dn=Bi;const Gi=class Gi extends z{straight="none";startCoordinates=null;startProposals=[];shiftHeld=!1;reset(){this.straight="none",this.startCoordinates=null,this.startProposals=[],this.shiftHeld=!1}init(){this.diagram.onEvent(Rt,t=>{t.shift&&(this.shiftHeld=!0,this.startCoordinates=ae.getInstance().coordinates)}),this.diagram.onEvent(we,t=>{t.shift||this.reset()}),this.diagram.onEvent(Pt,t=>{t.shift&&!this.startCoordinates&&(this.shiftHeld=!0,this.startCoordinates=new y(t.originalEvent))}),this.diagram.onEvent(Ct,t=>{if(!this.shiftHeld||!this.startCoordinates)return;const e=Math.abs(t.mouse.x-this.startCoordinates.x),s=Math.abs(t.mouse.y-this.startCoordinates.y);(e||s)&&(this.straight=e>=s?"x":"y")},this.diagram.priorities.Mouse_Move_Straight_Drag),this.diagram.onEvent(tt,()=>{this.reset()},this.diagram.priorities.Mouse_Up_Straight_Drag),this.diagram.onEvent(ht,t=>{if(this.straight!=="none"){this.startProposals.length===0&&(this.startProposals=t.proposals.map(e=>new Ae(e.node,e.node.box)));for(const e of t.proposals){const s=this.startProposals.find(i=>i.node.id===e.node.id);switch(this.straight){case"x":e.updateY(s.newBox.y),e.lockY();break;case"y":e.updateX(s.newBox.x),e.lockX();break}}}},this.diagram.priorities.Drag_Node_Straight_Drag)}};o(Gi,"StraightDrag");let hn=Gi;const Ri=class Ri extends z{shiftHeld=!1;init(){this.diagram.onEvent(Rt,t=>{t.shift&&(this.shiftHeld=!0)}),this.diagram.onEvent(we,t=>{t.shift||(this.shiftHeld=!1)})}constrain(t,e,s=e){if(!this.enabled||!this.shiftHeld)return e;const i=Math.abs(s.x-t.x),a=Math.abs(s.y-t.y),r=e.copy();return i>=a?r.y=t.y:r.x=t.x,r}};o(Ri,"StraightLabelsDrag");let Fe=Ri;const tr=M.createContext(null),So=o(()=>({Creator:rn,DistancesBalancer:Ce,StraightDrag:hn,StraightLabelsDrag:Fe,Dragger:on,EdgesDragger:le,GridSnap:G,History:Ie,Hotkeys:an,LabelsAligner:_t,Measurer:De,NodesAligner:Zt,NodesConnector:de,NodesResizer:cn,PathFindingRenderer:Ja,Selector:Y}),"getDefaultExtensions"),Os=class Os extends Yt{priorities=new ln;rules=new dn(this);focusContentTimer=null;knownClasses=new Map;getClass(t){return this.knownClasses.get(t)}registerClass(t,e=t.name){this.knownClasses.set(e,t)}edgeClass=Xt;setDefaultEdge(t){this.edgeClass=t}_extensions=new Map;_nodes=new Map;_edges=new Map;_hoveredNode=null;canvas=new vo(this);constructor(t){super(null),this.registerClass(ws),this.registerClass(Xt),this.registerClass(Ht),this.registerClass(Es),Object.entries(So()).forEach(([e,s])=>{t?.extensions?.[e]!==!1&&this.registerExtension(s)}),g.makeObservable(this,{edges:g.computed,_edges:g.observable,_hoveredNode:g.observable.ref,_nodes:g.observable,clearNodeHover:g.action,hoveredNode:g.computed,setNodeHover:g.action,toggleGrid:g.action})}get edges(){return[...this._edges.values()]}get extensions(){return[...this._extensions.values()]}get nodes(){return[...this._nodes.values()]}get hoveredNode(){return this._hoveredNode}setNodeHover(t,e){t.diagram===this&&(e?(this._hoveredNode&&this._hoveredNode!==t&&(this._hoveredNode.state.hover=!1),this._hoveredNode=t,t.state.hover=!0):this._hoveredNode===t?(t.state.hover=!1,this._hoveredNode=null):t.state.hover=!1)}clearNodeHover(){this._hoveredNode&&(this._hoveredNode.state.hover=!1),this._hoveredNode=null}getUniqueNodeId(t){if(!this._nodes.has(t))return t;let e=1,s=`${t}-${e}`;for(;this._nodes.has(s);)e++,s=`${t}-${e}`;return s}add(t){return g.runInAction(()=>{const e=this.getUniqueNodeId(t.id);e!==t.id&&t.setState("id",e),t.setDiagram(this),this._nodes.set(t.id,t)}),t}addEdge(t){t.from.addOutgoingEdge(t),t.to.addIncomingEdge(t)}connect(t,e,s){const i=s?.startAnchor??{mode:"fixed",position:t.parent.findFixedConnectionAnchor(t.coordinates.copy().sum(s?.fromDisplacement??new y)).relativePosition},a=s?.endAnchor??{mode:"fixed",position:e.parent.findFixedConnectionAnchor(e.coordinates.copy().sum(s?.toDisplacement??new y)).relativePosition},r=new this.edgeClass(this,{hover:!1,dragging:!1,selected:!1,from:t,to:e,labels:[],pathType:s?.pathType??"orthogonal",displacementStart:s?.fromDisplacement,displacementEnd:s?.toDisplacement,startAnchor:i,endAnchor:a,steps:[]});return this.connectWithEdge(t,e,r)}connectWithEdge(t,e,s){const i=s;return i.from.addOutgoingEdge(i),i.to.addIncomingEdge(i),this._edges.set(i.id,i),i}delete(t){this.emit(new ie(this,t)).cancelled||g.runInAction(()=>{t.gateways.forEach(e=>{e.incomingEdges.forEach(this.disconnect.bind(this)),e.outgoingEdges.forEach(this.disconnect.bind(this))}),this._hoveredNode===t&&(t.state.hover=!1,this._hoveredNode=null),this._nodes.delete(t.id),t.parent=null})}disconnect(t){this.emit(new as(this,t)).cancelled||g.runInAction(()=>{for(const e of this.nodes)for(const s of e.gateways)s.removeIncomingEdge(t),s.removeOutgoingEdge(t);this._edges.delete(t.id),t.parent=null})}Context=o(({children:t})=>d.jsx(tr.Provider,{value:this,children:t}),"Context");getEdgeById(t){return this._edges.get(t)}getNodeById(t){return this._nodes.get(t)}get showGrid(){return this.rules.toggleGrid}getExtension(t){return this._extensions.get(t)}registerExtension(t){const e=new t(this);e.init(),this._extensions.set(t,e)}toggleGrid(){this.rules.toggleGrid=!this.rules.toggleGrid}export(){return JSON.stringify(this.serialize())}async reset(){let t=this._nodes.size===0;if(!t){let e=null;const s=this.emit(new Ys(this,i=>{e=i}));t=await e()&&!s.cancelled}if(t){for(const e of this._nodes.values())this.delete(e);return!0}return!1}serialize(){return{position:{x:this.canvas.displacement.x,y:this.canvas.displacement.y,scale:this.canvas.scale},nodes:this.nodes.map(t=>t.serialize())}}import(t){g.runInAction(()=>{const e=JSON.parse(t),s=e.position,i=!!s&&Number.isFinite(s.x)&&Number.isFinite(s.y)&&Number.isFinite(s.scale);if(i&&(this.canvas.setScale(s.scale),this.canvas.setDisplacement(new y([s.x,s.y]))),e.nodes){const a=new Map;e.nodes.forEach(r=>{const c=this.getClass(r.class);if(!c)throw new Error(`Unable to import node: unknown class '${r.class}'.`);const l=new c(this,{id:r.id}),h=this.add(l);a.set(r.id,h.id)}),e.nodes.forEach(r=>{const c=a.get(r.id),l=this.getNodeById(c),h=l.remapSerializedReferences({...r,id:c,gateways:r.gateways.map(u=>({...u,outEdges:u.outEdges.map(f=>({...f,toParentId:a.get(f.toParentId)||f.toParentId}))}))},a);l.deserialize(h)})}i||this.focusContentInViewportWithRetry()})}paste(t){g.runInAction(()=>{const e=JSON.parse(t);if(e.position&&(this.canvas.setScale(e.position.scale),this.canvas.setDisplacement(new y([e.position.x,e.position.y]))),e.nodes?.length){const s=new Map,i=[];e.nodes.forEach(l=>{const h=Pe(this,"node",i);s.set(l.id,h),i.push(h)});let a=new y([1/0,1/0]);e.nodes.forEach(l=>{const h=new y([l.box[0],l.box[1]]);h.norm<a.norm&&(a=h)});const c=this.canvas.inverseFit(ae.getInstance().coordinates).substract(a);e.nodes.forEach(l=>{const h=this.getClass(l.class);if(!h)throw new Error(`Unable to paste node: unknown class '${l.class}'.`);const u=new h(this,{id:s.get(l.id)});this.add(u)}),e.nodes.forEach(l=>{const h=s.get(l.id),u=this.getNodeById(h),f=u.remapSerializedReferences({...l,id:h,gateways:l.gateways.map(p=>({...p,outEdges:p.outEdges.map(m=>({...m,toParentId:s.get(m.toParentId)||m.toParentId}))})),box:[l.box[0]+c.x,l.box[1]+c.y,l.box[2],l.box[3]]},s);u.deserialize(f)})}})}focusContentInViewport(t=80){if(!this.nodes.length)return!1;const e=this.canvas.frameDimensions;if(e.width<=0||e.height<=0)return!1;let s=1/0,i=1/0,a=-1/0,r=-1/0;for(const u of this.nodes){const f=u.box;s=Math.min(s,f.x),i=Math.min(i,f.y),a=Math.max(a,f.x+f.width),r=Math.max(r,f.y+f.height)}if(!Number.isFinite(s)||!Number.isFinite(i)||!Number.isFinite(a)||!Number.isFinite(r))return!1;const c=Math.max(1,a-s+t*2),l=Math.max(1,r-i+t*2),h=Math.max(.3,Math.min(3,Math.min(e.width/c,e.height/l)));return this.canvas.setScale(h),this.canvas.centerOnPoint(new y([(s+a)/2,(i+r)/2])),!0}focusContentInViewportWithRetry(t=8,e=32){this.focusContentInViewport()||t<=0||(this.focusContentTimer&&clearTimeout(this.focusContentTimer),this.focusContentTimer=setTimeout(()=>{this.focusContentInViewportWithRetry(t-1,e)},e))}};o(Os,"Diagram"),kt(Os,"use",o(()=>M.useContext(tr),"use"));let q=Os;function jt(n,t){return{"data-id":n.id,onMouseEnter:o(()=>n.setHovered(!0),"onMouseEnter"),onMouseLeave:o(e=>{const s=e.relatedTarget;s instanceof Element&&s.closest(`[data-id="${n.id}"], [data-gateway-parent="${n.id}"]`)||n.setHovered(!1)},"onMouseLeave"),style:{"--screen-renderer-x":`${t.x}px`,"--screen-renderer-y":`${t.y}px`,"--screen-renderer-width":`${t.width}px`,"--screen-renderer-height":`${t.height}px`,"--screen-renderer-z-index":n.state.hover?(n.state.zIndex??100)+1:n.state.zIndex??100}}}o(jt,"screenRendererProps");function Ss(n){return["Enter","Escape"].includes(n.code)}o(Ss,"allowEventInEdition");const Vi=class Vi extends z{inEdition=new Set;cancel(){this.inEdition.forEach(t=>t.cancel()),this.inEdition.clear()}confirm(){this.inEdition.forEach(t=>t.confirm()),this.inEdition.clear()}editNode(t){t.edit(),this.inEdition.add(t)}init(){this.diagram.onEvent(Rt,t=>{switch(t.code){case"F2":{const e=this.diagram.getExtension(Y).selectedNodes[0];e instanceof St&&this.editNode(e);break}case"Escape":{this.cancel();break}case"Enter":t.shift||this.confirm()}}),this.diagram.onEvent(Pt,t=>{(!t.node||t.node instanceof St&&!this.inEdition.has(t.node))&&this.confirm()},this.diagram.priorities.Mouse_Down_Dragger+1),this.diagram.onEvent(is,t=>{t.node instanceof St&&!this.inEdition.has(t.node)&&(this.confirm(),this.editNode(t.node))})}};o(Vi,"EditionMode");let Ms=Vi;function Mo(n,t){const e=n.box.middle,s=t.middle,i=s.x-e.x,a=s.y-e.y;return Math.abs(i)>Math.abs(a)?i<0?"left":"right":a<0?"top":"bottom"}o(Mo,"externalLabelPosition");const er=A.observer(({node:n,box:t})=>{const e=M.useRef(!1),s=jt(n,t),i=/(?:^| )(?:bpmn__event|bpmn__gate|bpmn__data_store|bpmn__document)(?: |$)/.test(n.classList.string),a=i?t.y-n.labelOffset.y-(n.box.y+n.box.height):void 0,r=i?Mo(n,t):void 0,c=i?{"data-node-label-position":r}:{},l=i?" bpmn__axis-label":"",h=/(?:^| )bpmn__text_annotation(?: |$)/.test(n.classList.string)?" bpmn__text-annotation-label":"",u=/(?:^| )bpm__node(?: |$)/.test(n.classList.string)?" bpmn__node-label":"";return s.style["--screen-label-font-size"]=`${n.state.labelFontSize??14}px`,n.editionMode?d.jsx("textarea",{...s,...c,className:`node__screenLabel node__screenHitArea editable__label${l}${h}${u}${n.selected?" selected":""}`,autoFocus:!0,value:n.state.label,onChange:o(f=>{g.runInAction(()=>{n.state.label=f.target.value})},"onChange"),onKeyDownCapture:o(f=>{n.editionMode&&!Ss(f.nativeEvent)&&f.nativeEvent.stopImmediatePropagation()},"onKeyDownCapture"),ref:o(f=>{f instanceof HTMLTextAreaElement&&!e.current&&(e.current=!0,f.select())},"ref")}):(e.current=!1,n.state.label?d.jsx("pre",{...s,...c,"data-node-label-drag-handle":i?"true":void 0,"data-node-label-gap":a,"data-node-label-height":i?t.height:void 0,"data-node-label-width":i?t.width:void 0,className:`node__screenLabel node__screenHitArea${l}${h}${u}${n.selected?" selected":""}`,children:n.state.label}):null)}),Yi=class Yi extends et{constructor(t,e,s){super(t),this.src=t,this.previousLabel=e,this.nextLabel=s}src;previousLabel;nextLabel};o(Yi,"DEditNodeEvent");let un=Yi;const Wi=class Wi extends ws{editionMode=!1;constructor(t,e){super(t,e),g.makeObservable(this,{editionMode:g.observable,edit:g.action,cancel:g.action,confirm:g.action})}get label(){return this.state.label}previous=null;edit(){this.previous=this.state.label,this.editionMode=!0}cancel(){this.state.label=this.previous,this.editionMode=!1}confirm(){return this.emit(new un(this,this.previous,this.state.label)).cancelled?(this.cancel(),!1):(this.editionMode=!1,!0)}get isChanged(){return this.previous!==this.state.label}get screenLabelBox(){return this.box}get labelScreenBox(){return this.screenLabelBox}RenderScreen=A.observer(()=>d.jsx(er,{node:this,box:this.screenLabelBox}))};o(Wi,"EditableNode");let St=Wi;const Zi=class Zi extends q{constructor(t){super(t),this.registerClass(St),this.registerExtension(Ms)}};o(Zi,"EditableDiagram");let He=Zi;const Xi=class Xi extends Xt{kind="default";constructor(t,e){super(t,e),g.makeObservable(this,{kind:g.observable,setKind:g.action}),this.setKind(e.kind??"default")}setKind(t){switch(this.kind=t,t){case"trigger":this.state.stroke="#38bdf8",this.state.lineStyle="solid",this.state.arrowHeadEnd="triangle-filled";break;case"condition-true":this.state.stroke="#22c55e",this.state.lineStyle="solid",this.state.arrowHeadEnd="triangle-filled";break;case"condition-false":this.state.stroke="#ef4444",this.state.lineStyle="dashed",this.state.arrowHeadEnd="triangle-filled";break;default:this.state.stroke=void 0,this.state.lineStyle="solid",this.state.arrowHeadEnd="arrow";break}}serialize(){return{...super.serialize(),kind:this.kind}}deserialize(t){super.deserialize(t),this.setKind(t.kind??"default")}};o(Xi,"AgentEdge");let ks=Xi;function ko(n){return{position:"absolute",left:`${n.box.x}px`,top:`${n.box.y}px`,zIndex:n.state.hover?n.state.zIndex+1:n.state.zIndex,width:`${n.box.width}px`,height:`${n.box.height}px`}}o(ko,"customRendererStyles");function K(n){const t=ko(n);return n.state.fill&&(t["--node-fill"]=n.state.fill),n.state.stroke&&(t["--node-stroke"]=n.state.stroke),{onMouseOver:o(()=>n.setState("hover",!0),"onMouseOver"),onMouseOut:o(e=>{const s=e.relatedTarget;s instanceof Element&&s.closest(`[data-id="${n.id}"], [data-gateway-parent="${n.id}"]`)||n.setState("hover",!1)},"onMouseOut"),"data-id":n.id,style:t,className:`${n.classList.string} ${n.selected?"selected":""}`}}o(K,"customRendererProps");function Be(n){return typeof n=="object"&&n?Array.isArray(n)?n.map(t=>Be(t)):Object.fromEntries(Object.entries(n).map(([t,e])=>[t,Be(e)])):n}o(Be,"cloneDeep");const qi=class qi extends St{payload;constructor(t,e){super(t,e),this.classList.add("agent__node","diagram__node"),this.payload=this.mergePayload(e.payload),g.makeObservable(this,{payload:g.observable.ref,replacePayload:g.action,updatePayload:g.action})}mergePayload(t){return{...this.defaultPayload(),...t??{}}}replacePayload(t){this.payload=this.mergePayload(t)}updatePayload(t){this.payload={...this.payload,...t}}serialize(){return{...super.serialize(),kind:this.kind,payload:Be(this.payload)}}deserialize(t){super.deserialize(t),this.payload=this.mergePayload(t.payload)}};o(qi,"AgentNode");let Ut=qi;const Ui=class Ui extends Ut{kind="action";constructor(t,e){super(t,{...e,box:e.box??new S([0,0,220,110])}),this.classList.add("agent__action")}defaultPayload(){return{actionType:"task",operation:"",inputRef:"",outputRef:"",metadata:{}}}RenderOverlay=A.observer(()=>d.jsx("div",{...K(this)}))};o(Ui,"ActionNode");let gn=Ui;const Ki=class Ki extends Ut{kind="condition";constructor(t,e){super(t,{...e,box:e.box??new S([0,0,180,120])}),this.classList.add("agent__condition")}defaultPayload(){return{expression:"",language:"rule",trueLabel:"True",falseLabel:"False",metadata:{}}}RenderOverlay=A.observer(()=>d.jsx("div",{...K(this),children:d.jsx("svg",{viewBox:`0 0 ${this.state.box.width} ${this.state.box.height}`,preserveAspectRatio:"none",style:{width:"100%",height:"100%"},children:d.jsx("polygon",{points:`${this.state.box.width/2} 0 ${this.state.box.width} ${this.state.box.height/2} ${this.state.box.width/2} ${this.state.box.height} 0 ${this.state.box.height/2}`})})}))};o(Ki,"ConditionNode");let pn=Ki;const Ji=class Ji extends Ut{kind="outcome";constructor(t,e){super(t,{...e,box:e.box??new S([0,0,180,90])}),this.classList.add("agent__outcome")}defaultPayload(){return{status:"success",code:"",summary:"",metadata:{}}}RenderOverlay=A.observer(()=>d.jsx("div",{...K(this)}))};o(Ji,"OutcomeNode");let fn=Ji;const Qi=class Qi extends Ut{kind="trigger";constructor(t,e){super(t,{...e,box:e.box??new S([0,0,170,90])}),this.classList.add("agent__trigger")}defaultPayload(){return{triggerType:"manual",source:"",eventName:"",schedule:"",metadata:{}}}RenderOverlay=A.observer(()=>d.jsx("div",{...K(this)}))};o(Qi,"TriggerNode");let mn=Qi;const ta=class ta extends He{constructor(t){super(t),this.registerClass(Ut),this.registerClass(mn),this.registerClass(gn),this.registerClass(pn),this.registerClass(fn),this.registerClass(ks),this.setDefaultEdge(ks)}};o(ta,"AgentDiagram");let yn=ta;const ea=class ea extends St{edgesAsGateways=!0;occupiesGridSquare=!1;constructor(t,e){super(t,{...e,labelFontSize:e.labelFontSize??16}),this.classList.add("bpm__node","diagram__node")}fitToGridSquare(){if(!this.occupiesGridSquare)return;const t=this.diagram?.getExtension(G)?.gridSize??50;this.state.box.assignDimensions([t,t])}setDiagram(t){super.setDiagram(t),this.fitToGridSquare()}deserialize(t){super.deserialize(t),this.state.labelFontSize=t.labelFontSize,this.fitToGridSquare()}};o(ea,"BPMNode");let st=ea;var sr={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},nr=M.createContext&&M.createContext(sr),Ao=["attr","size","title"];function Po(n,t){if(n==null)return{};var e,s,i=Co(n,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(n);for(s=0;s<a.length;s++)e=a[s],t.indexOf(e)===-1&&{}.propertyIsEnumerable.call(n,e)&&(i[e]=n[e])}return i}o(Po,"_objectWithoutProperties");function Co(n,t){if(n==null)return{};var e={};for(var s in n)if({}.hasOwnProperty.call(n,s)){if(t.indexOf(s)!==-1)continue;e[s]=n[s]}return e}o(Co,"_objectWithoutPropertiesLoose");function As(){return As=Object.assign?Object.assign.bind():function(n){for(var t=1;t<arguments.length;t++){var e=arguments[t];for(var s in e)({}).hasOwnProperty.call(e,s)&&(n[s]=e[s])}return n},As.apply(null,arguments)}o(As,"_extends");function ir(n,t){var e=Object.keys(n);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(n);t&&(s=s.filter(function(i){return Object.getOwnPropertyDescriptor(n,i).enumerable})),e.push.apply(e,s)}return e}o(ir,"ownKeys");function Ps(n){for(var t=1;t<arguments.length;t++){var e=arguments[t]!=null?arguments[t]:{};t%2?ir(Object(e),!0).forEach(function(s){Io(n,s,e[s])}):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(e)):ir(Object(e)).forEach(function(s){Object.defineProperty(n,s,Object.getOwnPropertyDescriptor(e,s))})}return n}o(Ps,"_objectSpread");function Io(n,t,e){return(t=Do(t))in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}o(Io,"_defineProperty");function Do(n){var t=jo(n,"string");return typeof t=="symbol"?t:t+""}o(Do,"_toPropertyKey");function jo(n,t){if(typeof n!="object"||!n)return n;var e=n[Symbol.toPrimitive];if(e!==void 0){var s=e.call(n,t);if(typeof s!="object")return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(n)}o(jo,"_toPrimitive");function ar(n){return n&&n.map((t,e)=>M.createElement(t.tag,Ps({key:e},t.attr),ar(t.child)))}o(ar,"Tree2Element");function L(n){return t=>M.createElement(No,As({attr:Ps({},n.attr)},t),ar(n.child))}o(L,"GenIcon");function No(n){var t=o(e=>{var s=n.attr,i=n.size,a=n.title,r=Po(n,Ao),c=i||e.size||"1em",l;return e.className&&(l=e.className),n.className&&(l=(l?l+" ":"")+n.className),M.createElement("svg",As({stroke:"currentColor",fill:"currentColor",strokeWidth:"0"},e.attr,s,r,{className:l,style:Ps(Ps({color:n.color||e.color},e.style),n.style),height:c,width:c,xmlns:"http://www.w3.org/2000/svg"}),a&&M.createElement("title",null,a),n.children)},"elem");return nr!==void 0?M.createElement(nr.Consumer,null,e=>t(e)):t(sr)}o(No,"IconBase");function To(n){return L({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M230.92,212c-15.23-26.33-38.7-45.21-66.09-54.16a72,72,0,1,0-73.66,0C63.78,166.78,40.31,185.66,25.08,212a8,8,0,1,0,13.85,8c18.84-32.56,52.14-52,89.07-52s70.23,19.44,89.07,52a8,8,0,1,0,13.85-8ZM72,96a56,56,0,1,1,56,56A56.06,56.06,0,0,1,72,96Z"},child:[]}]})(n)}o(To,"PiUser");function rr(n){return L({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M216,48H176V40a24,24,0,0,0-24-24H104A24,24,0,0,0,80,40v8H40a8,8,0,0,0,0,16h8V208a16,16,0,0,0,16,16H192a16,16,0,0,0,16-16V64h8a8,8,0,0,0,0-16ZM96,40a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8v8H96Zm96,168H64V64H192ZM112,104v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm48,0v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Z"},child:[]}]})(n)}o(rr,"PiTrash");function Lo(n){return L({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M32,64a8,8,0,0,1,8-8H216a8,8,0,0,1,0,16H40A8,8,0,0,1,32,64ZM216,96H88a8,8,0,0,0,0,16H216a8,8,0,0,0,0-16Zm0,40H40a8,8,0,0,0,0,16H216a8,8,0,0,0,0-16Zm0,40H88a8,8,0,0,0,0,16H216a8,8,0,0,0,0-16Z"},child:[]}]})(n)}o(Lo,"PiTextAlignRight");function $o(n){return L({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M32,64a8,8,0,0,1,8-8H216a8,8,0,0,1,0,16H40A8,8,0,0,1,32,64Zm8,48H168a8,8,0,0,0,0-16H40a8,8,0,0,0,0,16Zm176,24H40a8,8,0,0,0,0,16H216a8,8,0,0,0,0-16Zm-48,40H40a8,8,0,0,0,0,16H168a8,8,0,0,0,0-16Z"},child:[]}]})(n)}o($o,"PiTextAlignLeft");function zo(n){return L({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M32,64a8,8,0,0,1,8-8H216a8,8,0,0,1,0,16H40A8,8,0,0,1,32,64ZM64,96a8,8,0,0,0,0,16H192a8,8,0,0,0,0-16Zm152,40H40a8,8,0,0,0,0,16H216a8,8,0,0,0,0-16Zm-24,40H64a8,8,0,0,0,0,16H192a8,8,0,0,0,0-16Z"},child:[]}]})(n)}o(zo,"PiTextAlignCenter");function Oo(n){return L({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M224,48H32a8,8,0,0,0-8,8V192a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A8,8,0,0,0,224,48ZM40,112H80v32H40Zm56,0H216v32H96ZM216,64V96H40V64ZM40,160H80v32H40Zm176,32H96V160H216v32Z"},child:[]}]})(n)}o(Oo,"PiTable");function Fo(n){return L({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M208,136H48a16,16,0,0,0-16,16v40a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V152A16,16,0,0,0,208,136Zm0,56H48V152H208v40Zm0-144H48A16,16,0,0,0,32,64v40a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V64A16,16,0,0,0,208,48Zm0,56H48V64H208v40Z"},child:[]}]})(n)}o(Fo,"PiRows");function Ho(n){return L({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M208,160H48a16,16,0,0,0-16,16v24a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V176A16,16,0,0,0,208,160Zm0,40H48V176H208v24Zm0-112H48a16,16,0,0,0-16,16v24a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V104A16,16,0,0,0,208,88Zm0,40H48V104H208v24ZM96,40a8,8,0,0,1,8-8h16V16a8,8,0,0,1,16,0V32h16a8,8,0,0,1,0,16H136V64a8,8,0,0,1-16,0V48H104A8,8,0,0,1,96,40Z"},child:[]}]})(n)}o(Ho,"PiRowsPlusTop");function Bo(n){return L({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M208,112H48a16,16,0,0,0-16,16v24a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V128A16,16,0,0,0,208,112Zm0,40H48V128H208v24Zm0-112H48A16,16,0,0,0,32,56V80A16,16,0,0,0,48,96H208a16,16,0,0,0,16-16V56A16,16,0,0,0,208,40Zm0,40H48V56H208V80ZM160,216a8,8,0,0,1-8,8H136v16a8,8,0,0,1-16,0V224H104a8,8,0,0,1,0-16h16V192a8,8,0,0,1,16,0v16h16A8,8,0,0,1,160,216Z"},child:[]}]})(n)}o(Bo,"PiRowsPlusBottom");function or(n){return L({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32Zm0,176H48V48H208V208Zm-32-80a8,8,0,0,1-8,8H136v32a8,8,0,0,1-16,0V136H88a8,8,0,0,1,0-16h32V88a8,8,0,0,1,16,0v32h32A8,8,0,0,1,176,128Z"},child:[]}]})(n)}o(or,"PiPlusSquare");function Go(n){return L({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M227.31,73.37,182.63,28.68a16,16,0,0,0-22.63,0L36.69,152A15.86,15.86,0,0,0,32,163.31V208a16,16,0,0,0,16,16H92.69A15.86,15.86,0,0,0,104,219.31L227.31,96a16,16,0,0,0,0-22.63ZM92.69,208H48V163.31l88-88L180.69,120ZM192,108.68,147.31,64l24-24L216,84.68Z"},child:[]}]})(n)}o(Go,"PiPencilSimple");function Ro(n){return L({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H156.69A15.86,15.86,0,0,0,168,219.31L219.31,168A15.86,15.86,0,0,0,224,156.69V48A16,16,0,0,0,208,32ZM48,48H208V152H160a8,8,0,0,0-8,8v48H48ZM196.69,168,168,196.69V168Z"},child:[]}]})(n)}o(Ro,"PiNoteBlank");function Vo(n){return L({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M176,128a8,8,0,0,1-8,8H88a8,8,0,0,1,0-16h80A8,8,0,0,1,176,128Zm56,0A104,104,0,1,1,128,24,104.11,104.11,0,0,1,232,128Zm-16,0a88,88,0,1,0-88,88A88.1,88.1,0,0,0,216,128Z"},child:[]}]})(n)}o(Vo,"PiMinusCircle");function Yo(n){return L({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M188,48a27.75,27.75,0,0,0-12,2.71V44a28,28,0,0,0-54.65-8.6A28,28,0,0,0,80,60v64l-3.82-6.13a28,28,0,0,0-48.6,27.82c16,33.77,28.93,57.72,43.72,72.69C86.24,233.54,103.2,240,128,240a88.1,88.1,0,0,0,88-88V76A28,28,0,0,0,188,48Zm12,104a72.08,72.08,0,0,1-72,72c-20.38,0-33.51-4.88-45.33-16.85C69.44,193.74,57.26,171,41.9,138.58a6.36,6.36,0,0,0-.3-.58,12,12,0,0,1,20.79-12,1.76,1.76,0,0,0,.14.23l18.67,30A8,8,0,0,0,96,152V60a12,12,0,0,1,24,0v60a8,8,0,0,0,16,0V44a12,12,0,0,1,24,0v76a8,8,0,0,0,16,0V76a12,12,0,0,1,24,0Z"},child:[]}]})(n)}o(Yo,"PiHand");function Wo(n){return L({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M232,64a32,32,0,1,0-40,31v17a8,8,0,0,1-8,8H96a23.84,23.84,0,0,0-8,1.38V95a32,32,0,1,0-16,0v66a32,32,0,1,0,16,0V144a8,8,0,0,1,8-8h88a24,24,0,0,0,24-24V95A32.06,32.06,0,0,0,232,64ZM64,64A16,16,0,1,1,80,80,16,16,0,0,1,64,64ZM96,192a16,16,0,1,1-16-16A16,16,0,0,1,96,192ZM200,80a16,16,0,1,1,16-16A16,16,0,0,1,200,80Z"},child:[]}]})(n)}o(Wo,"PiGitBranch");function cr(n){return L({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M128,80a48,48,0,1,0,48,48A48.05,48.05,0,0,0,128,80Zm0,80a32,32,0,1,1,32-32A32,32,0,0,1,128,160Zm109.94-52.79a8,8,0,0,0-3.89-5.4l-29.83-17-.12-33.62a8,8,0,0,0-2.83-6.08,111.91,111.91,0,0,0-36.72-20.67,8,8,0,0,0-6.46.59L128,41.85,97.88,25a8,8,0,0,0-6.47-.6A112.1,112.1,0,0,0,54.73,45.15a8,8,0,0,0-2.83,6.07l-.15,33.65-29.83,17a8,8,0,0,0-3.89,5.4,106.47,106.47,0,0,0,0,41.56,8,8,0,0,0,3.89,5.4l29.83,17,.12,33.62a8,8,0,0,0,2.83,6.08,111.91,111.91,0,0,0,36.72,20.67,8,8,0,0,0,6.46-.59L128,214.15,158.12,231a7.91,7.91,0,0,0,3.9,1,8.09,8.09,0,0,0,2.57-.42,112.1,112.1,0,0,0,36.68-20.73,8,8,0,0,0,2.83-6.07l.15-33.65,29.83-17a8,8,0,0,0,3.89-5.4A106.47,106.47,0,0,0,237.94,107.21Zm-15,34.91-28.57,16.25a8,8,0,0,0-3,3c-.58,1-1.19,2.06-1.81,3.06a7.94,7.94,0,0,0-1.22,4.21l-.15,32.25a95.89,95.89,0,0,1-25.37,14.3L134,199.13a8,8,0,0,0-3.91-1h-.19c-1.21,0-2.43,0-3.64,0a8.08,8.08,0,0,0-4.1,1l-28.84,16.1A96,96,0,0,1,67.88,201l-.11-32.2a8,8,0,0,0-1.22-4.22c-.62-1-1.23-2-1.8-3.06a8.09,8.09,0,0,0-3-3.06l-28.6-16.29a90.49,90.49,0,0,1,0-28.26L61.67,97.63a8,8,0,0,0,3-3c.58-1,1.19-2.06,1.81-3.06a7.94,7.94,0,0,0,1.22-4.21l.15-32.25a95.89,95.89,0,0,1,25.37-14.3L122,56.87a8,8,0,0,0,4.1,1c1.21,0,2.43,0,3.64,0a8.08,8.08,0,0,0,4.1-1l28.84-16.1A96,96,0,0,1,188.12,55l.11,32.2a8,8,0,0,0,1.22,4.22c.62,1,1.23,2,1.8,3.06a8.09,8.09,0,0,0,3,3.06l28.6,16.29A90.49,90.49,0,0,1,222.9,142.12Z"},child:[]}]})(n)}o(cr,"PiGearSix");function Zo(n){return L({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M213.66,82.34l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40V216a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V88A8,8,0,0,0,213.66,82.34ZM160,51.31,188.69,80H160ZM200,216H56V40h88V88a8,8,0,0,0,8,8h48V216Z"},child:[]}]})(n)}o(Zo,"PiFile");function Xo(n){return L({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M128,24C74.17,24,32,48.6,32,80v96c0,31.4,42.17,56,96,56s96-24.6,96-56V80C224,48.6,181.83,24,128,24Zm80,104c0,9.62-7.88,19.43-21.61,26.92C170.93,163.35,150.19,168,128,168s-42.93-4.65-58.39-13.08C55.88,147.43,48,137.62,48,128V111.36c17.06,15,46.23,24.64,80,24.64s62.94-9.68,80-24.64ZM69.61,53.08C85.07,44.65,105.81,40,128,40s42.93,4.65,58.39,13.08C200.12,60.57,208,70.38,208,80s-7.88,19.43-21.61,26.92C170.93,115.35,150.19,120,128,120s-42.93-4.65-58.39-13.08C55.88,99.43,48,89.62,48,80S55.88,60.57,69.61,53.08ZM186.39,202.92C170.93,211.35,150.19,216,128,216s-42.93-4.65-58.39-13.08C55.88,195.43,48,185.62,48,176V159.36c17.06,15,46.23,24.64,80,24.64s62.94-9.68,80-24.64V176C208,185.62,200.12,195.43,186.39,202.92Z"},child:[]}]})(n)}o(Xo,"PiDatabase");function qo(n){return L({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M69.12,94.15,28.5,128l40.62,33.85a8,8,0,1,1-10.24,12.29l-48-40a8,8,0,0,1,0-12.29l48-40a8,8,0,0,1,10.24,12.3Zm176,27.7-48-40a8,8,0,1,0-10.24,12.3L227.5,128l-40.62,33.85a8,8,0,1,0,10.24,12.29l48-40a8,8,0,0,0,0-12.29ZM162.73,32.48a8,8,0,0,0-10.25,4.79l-64,176a8,8,0,0,0,4.79,10.26A8.14,8.14,0,0,0,96,224a8,8,0,0,0,7.52-5.27l64-176A8,8,0,0,0,162.73,32.48Z"},child:[]}]})(n)}o(qo,"PiCode");function Uo(n){return L({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm64-88a8,8,0,0,1-8,8H128a8,8,0,0,1-8-8V72a8,8,0,0,1,16,0v48h48A8,8,0,0,1,192,128Z"},child:[]}]})(n)}o(Uo,"PiClock");function lr(n){return L({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Z"},child:[]}]})(n)}o(lr,"PiCircle");function Ko(n){return L({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M90.34,61.66a8,8,0,0,1,0-11.32l32-32a8,8,0,0,1,11.32,0l32,32a8,8,0,0,1-11.32,11.32L136,43.31V96a8,8,0,0,1-16,0V43.31L101.66,61.66A8,8,0,0,1,90.34,61.66Zm64,132.68L136,212.69V160a8,8,0,0,0-16,0v52.69l-18.34-18.35a8,8,0,0,0-11.32,11.32l32,32a8,8,0,0,0,11.32,0l32-32a8,8,0,0,0-11.32-11.32Zm83.32-72-32-32a8,8,0,0,0-11.32,11.32L212.69,120H160a8,8,0,0,0,0,16h52.69l-18.35,18.34a8,8,0,0,0,11.32,11.32l32-32A8,8,0,0,0,237.66,122.34ZM43.31,136H96a8,8,0,0,0,0-16H43.31l18.35-18.34A8,8,0,0,0,50.34,90.34l-32,32a8,8,0,0,0,0,11.32l32,32a8,8,0,0,0,11.32-11.32Z"},child:[]}]})(n)}o(Ko,"PiArrowsOutCardinal");function Jo(n){return L({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M213.66,181.66l-32,32a8,8,0,0,1-11.32-11.32L188.69,184H48a8,8,0,0,1,0-16H188.69l-18.35-18.34a8,8,0,0,1,11.32-11.32l32,32A8,8,0,0,1,213.66,181.66Zm-139.32-64a8,8,0,0,0,11.32-11.32L67.31,88H208a8,8,0,0,0,0-16H67.31L85.66,53.66A8,8,0,0,0,74.34,42.34l-32,32a8,8,0,0,0,0,11.32Z"},child:[]}]})(n)}o(Jo,"PiArrowsLeftRight");function Qo(n){return L({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M208,28H48A20,20,0,0,0,28,48V208a20,20,0,0,0,20,20H208a20,20,0,0,0,20-20V48A20,20,0,0,0,208,28Zm-4,176H52V52H204ZM76,128a12,12,0,0,1,12-12h28V88a12,12,0,0,1,24,0v28h28a12,12,0,0,1,0,24H140v28a12,12,0,0,1-24,0V140H88A12,12,0,0,1,76,128Z"},child:[]}]})(n)}o(Qo,"PiPlusSquareBold");function tc(n){return L({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M128,20A108,108,0,1,0,236,128,108.12,108.12,0,0,0,128,20Zm0,192a84,84,0,1,1,84-84A84.09,84.09,0,0,1,128,212Z"},child:[]}]})(n)}o(tc,"PiCircleBold");function ec(n){return L({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M224.49,136.49l-72,72a12,12,0,0,1-17-17L187,140H40a12,12,0,0,1,0-24H187L135.51,64.48a12,12,0,0,1,17-17l72,72A12,12,0,0,1,224.49,136.49Z"},child:[]}]})(n)}o(ec,"PiArrowRightBold");function sc(n){return L({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M228,128a100,100,0,0,1-98.66,100H128a99.39,99.39,0,0,1-68.62-27.29,12,12,0,0,1,16.48-17.45,76,76,0,1,0-1.57-109c-.13.13-.25.25-.39.37L54.89,92H72a12,12,0,0,1,0,24H24a12,12,0,0,1-12-12V56a12,12,0,0,1,24,0V76.72L57.48,57.06A100,100,0,0,1,228,128Z"},child:[]}]})(n)}o(sc,"PiArrowCounterClockwiseBold");const nc={task:To,serviceTask:cr,scriptTask:qo,manualTask:Yo,businessRuleTask:Oo,callActivity:Qo,subprocess:or,eventSubprocess:or,event:lr,start:lr,end:tc,timer:Uo,lanes:Fo,dataStore:Xo,document:Zo,textAnnotation:Ro,connect:ec,settings:cr};function ic({id:n,className:t}){const e=n==="messageThrow"||n==="sendTask";return d.jsxs("svg",{className:`${t??""} bpmn__message_icon bpmn__message_icon--${e?"send":"receive"}`,viewBox:"0 0 24 24","aria-hidden":"true",children:[d.jsx("rect",{className:"bpmn__message_body",x:"3.5",y:"5.5",width:"17",height:"13",rx:"1.25"}),d.jsx("path",{className:"bpmn__message_fold",d:"m4.5 7 7.5 6 7.5-6"})]})}o(ic,"MessageIcon");function ac({id:n,className:t}){return d.jsxs("svg",{className:t,viewBox:"0 0 24 24","aria-hidden":"true",children:[n==="intermediate"&&d.jsxs(d.Fragment,{children:[d.jsx("circle",{cx:"12",cy:"12",r:"8.5",fill:"none",stroke:"currentColor",strokeWidth:"1.45"}),d.jsx("circle",{cx:"12",cy:"12",r:"6.1",fill:"none",stroke:"currentColor",strokeWidth:"1.25"})]}),n==="signal"&&d.jsx("path",{className:"bpmn__event_symbol_fillable bpmn__event_symbol--signal",d:"M12 4.6 20 18H4Z",fill:"none",stroke:"currentColor",strokeLinejoin:"round",strokeWidth:"1.65"}),n==="compensation"&&d.jsx("path",{className:"bpmn__event_symbol_fillable bpmn__event_symbol--compensation",d:"m11.4 6.2-7 5.8 7 5.8Zm8.2 0-7 5.8 7 5.8Z",fill:"none",stroke:"currentColor",strokeLinejoin:"round",strokeWidth:"1.55"}),n==="error"&&d.jsx("path",{className:"bpmn__event_symbol_fillable bpmn__event_symbol--error",d:"m13.2 3.7-6.1 8.1 4.1-.1-.5 8.6 6.2-9.2-4 .1Z",fill:"none",stroke:"currentColor",strokeLinejoin:"round",strokeWidth:"1.55"}),n==="conditional"&&d.jsxs(d.Fragment,{children:[d.jsx("path",{className:"bpmn__event_symbol_outline bpmn__event_symbol--conditional-frame",d:"M6.5 4.5h11v15h-11Z",fill:"none",stroke:"currentColor",strokeLinejoin:"round",strokeWidth:"1.45"}),d.jsx("path",{className:"bpmn__event_symbol_outline bpmn__event_symbol--conditional-lines",d:"M9 8h6m-6 3h6m-6 3h6",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeWidth:"1.25"})]}),n==="terminate"&&d.jsx("circle",{cx:"12",cy:"12",r:"7.2",fill:"currentColor"})]})}o(ac,"EventDefinitionIcon");function rc({id:n,className:t}){return d.jsxs("svg",{className:t,viewBox:"0 0 24 24","aria-hidden":"true",children:[n==="blackBoxPool"&&d.jsxs(d.Fragment,{children:[d.jsx("rect",{x:"2.5",y:"5",width:"19",height:"14",rx:"1",fill:"none",stroke:"currentColor",strokeWidth:"1.5"}),d.jsx("path",{d:"M7 5v14",fill:"none",stroke:"currentColor",strokeWidth:"1.5"})]}),n==="documentAnnotation"&&d.jsxs(d.Fragment,{children:[d.jsx("path",{d:"M5 2.8h9l5 5v13.4H5Z",fill:"none",stroke:"currentColor",strokeLinejoin:"round",strokeWidth:"1.45"}),d.jsx("path",{d:"M14 2.8v5h5",fill:"none",stroke:"currentColor",strokeLinejoin:"round",strokeWidth:"1.45"}),d.jsx("path",{d:"M8 12h8m-8 3h6",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeWidth:"1.25"})]})]})}o(rc,"SupportIcon");function oc({id:n,className:t,markerOnly:e}){const s=e?n==="eventBased"?"6 6 12 12":"5 5 14 14":"0 0 24 24";return d.jsxs("svg",{className:[t,`bpmn__gate_marker--${n}`].filter(Boolean).join(" "),viewBox:s,"aria-hidden":"true",children:[!e&&d.jsx("path",{d:"M12 2.7 21.3 12 12 21.3 2.7 12 12 2.7Z",fill:"none",stroke:"currentColor",strokeLinejoin:"round",strokeWidth:"1.65"}),n==="exclusive"&&d.jsx("path",{d:"m8.5 8.5 7 7m0-7-7 7",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeWidth:"2.2"}),n==="inclusive"&&d.jsx("circle",{cx:"12",cy:"12",r:"4.15",fill:"none",stroke:"currentColor",strokeWidth:"2"}),n==="parallel"&&d.jsx("path",{d:"M12 7v10M7 12h10",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeWidth:"2.2"}),n==="eventBased"&&d.jsxs(d.Fragment,{children:[d.jsx("circle",{cx:"12",cy:"12",r:"5.4",fill:"none",stroke:"currentColor",strokeWidth:e?1:1.35}),d.jsx("circle",{cx:"12",cy:"12",r:"3.8",fill:"none",stroke:"currentColor",strokeWidth:e?.9:1.15}),d.jsx("path",{d:"m12 9.1 2.75 2-1.05 3.2h-3.4l-1.05-3.2 2.75-2Z",fill:"none",stroke:"currentColor",strokeLinejoin:"round",strokeWidth:e?.82:1.1})]})]})}o(oc,"GatewayIcon");function Nt({id:n,className:t,markerOnly:e}){const s=nc[n];return s?d.jsx(s,{"aria-hidden":"true",className:t}):n==="messageCatch"||n==="messageThrow"||n==="message"||n==="receiveTask"||n==="sendTask"?d.jsx(ic,{className:t,id:n}):n==="intermediate"||n==="signal"||n==="compensation"||n==="error"||n==="conditional"||n==="terminate"?d.jsx(ac,{className:t,id:n}):n==="blackBoxPool"||n==="documentAnnotation"?d.jsx(rc,{className:t,id:n}):n==="exclusive"||n==="inclusive"||n==="parallel"||n==="eventBased"?d.jsx(oc,{className:t,id:n,markerOnly:e}):d.jsxs("svg",{className:t,viewBox:"0 0 24 24","aria-hidden":"true",children:[d.jsx("circle",{cx:"6.5",cy:"6.5",r:"3.25",fill:"none",stroke:"currentColor",strokeWidth:"1.7"}),d.jsx("path",{d:"m9.3 8.8 5.7 5m-1.9 0h2.25v-2.25",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.7"}),d.jsx("rect",{x:"14.1",y:"14.1",width:"6.4",height:"5.6",rx:"1",fill:"none",stroke:"currentColor",strokeWidth:"1.7"})]})}o(Nt,"BPMNIcon");var T=(n=>(n[n.start=0]="start",n[n.end=1]="end",n[n.intermediate=2]="intermediate",n[n.timer=3]="timer",n[n.messageCatch=4]="messageCatch",n[n.messageThrow=5]="messageThrow",n[n.signalCatch=6]="signalCatch",n[n.signalThrow=7]="signalThrow",n[n.compensationCatch=8]="compensationCatch",n[n.compensationThrow=9]="compensationThrow",n[n.errorCatch=10]="errorCatch",n[n.errorThrow=11]="errorThrow",n[n.conditional=12]="conditional",n[n.terminate=13]="terminate",n))(T||{});const Cs={0:{stage:"start",kind:"none",direction:"catch"},1:{stage:"end",kind:"none",direction:"throw"},2:{stage:"start",kind:"none",direction:"throw"},3:{stage:"intermediate",kind:"timer",direction:"catch"},4:{stage:"intermediate",kind:"message",direction:"catch"},5:{stage:"intermediate",kind:"message",direction:"throw"},6:{stage:"intermediate",kind:"signal",direction:"catch"},7:{stage:"intermediate",kind:"signal",direction:"throw"},8:{stage:"intermediate",kind:"compensation",direction:"catch"},9:{stage:"intermediate",kind:"compensation",direction:"throw"},10:{stage:"intermediate",kind:"error",direction:"catch"},11:{stage:"end",kind:"error",direction:"throw"},12:{stage:"intermediate",kind:"conditional",direction:"catch"},13:{stage:"end",kind:"terminate",direction:"throw"}},cc=new Set(["start","intermediate","end"]),lc=new Set(["none","timer","message","signal","compensation","error","conditional","terminate"]),dc=new Set(["catch","throw"]),hc={none:new Set(["start","end"]),message:new Set(["start","intermediate","end"]),timer:new Set(["start","intermediate"]),error:new Set(["intermediate","end"]),signal:new Set(["start","intermediate","end"]),compensation:new Set(["intermediate","end"]),conditional:new Set(["start","intermediate"]),terminate:new Set(["end"])},uc={none:new Set(["catch","throw"]),message:new Set(["catch","throw"]),timer:new Set(["catch"]),error:new Set(["catch","throw"]),signal:new Set(["catch","throw"]),compensation:new Set(["catch","throw"]),conditional:new Set(["catch"]),terminate:new Set(["throw"])};function Kt(n){if(!n||typeof n!="object")return!1;const t=n;if(!cc.has(t.stage)||!lc.has(t.kind)||!dc.has(t.direction))return!1;const{stage:e,kind:s,direction:i}=t;return hc[s].has(e)&&uc[s].has(i)}o(Kt,"isValidEventDefinition");const gc=5,pc=3,fc=1.18,mc=["bpmn__event__start","bpmn__event__intermediate","bpmn__event__end"],yc=["bpmn--none","bpmn--timer","bpmn--message","bpmn--signal","bpmn--compensation","bpmn--error","bpmn--conditional","bpmn--terminate"],xc=["bpmn--catch","bpmn--throw"],Is=new Set(["timer","message","signal","compensation","error","conditional"]),xn=new Set(["timer","message","signal","compensation","error","conditional"]),bc=Object.values(T).filter(n=>typeof n=="string").map(n=>`bpmn--${n}`);function Ge(n){return{...n}}o(Ge,"copyDefinition");function dr(n){return Kt(n.eventDefinition)?Ge(n.eventDefinition):typeof n.type=="number"&&Cs[n.type]?Ge(Cs[n.type]):Ge(Cs[T.start])}o(dr,"resolveDefinition");function hr(n){return!Array.isArray(n)||n.length!==2||!Number.isFinite(n[0])||!Number.isFinite(n[1])?null:[n[0],n[1]]}o(hr,"resolveAttachmentOffset");function wc(n,t){return n.stage===t.stage&&n.kind===t.kind&&n.direction===t.direction}o(wc,"sameDefinition");const sa=class sa extends st{definition;attachedToTaskId;attachmentOffset;interrupting;subprocessStart;subprocessId;edgesAsGateways=!0;occupiesGridSquare=!0;constructor(t,e){super(t,e),this.definition=dr(e),this.attachedToTaskId=e.attachedToTaskId&&Is.has(this.definition.kind)?e.attachedToTaskId:null,this.attachmentOffset=this.attachedToTaskId?hr(e.attachmentOffset):null,this.interrupting=e.interrupting??!0,this.subprocessId=e.subprocessStart===!0&&xn.has(this.definition.kind)&&!this.attachedToTaskId&&typeof e.subprocessId=="string"&&e.subprocessId.length>0?e.subprocessId:null,this.subprocessStart=this.subprocessId!==null,g.makeObservable(this,{definition:g.observable.ref,attachedToTaskId:g.observable,attachmentOffset:g.observable.ref,interrupting:g.observable,subprocessStart:g.observable,subprocessId:g.observable,stage:g.computed,kind:g.computed,direction:g.computed,type:g.computed,isStart:g.computed,isEnd:g.computed,isCatching:g.computed,canAttach:g.computed,canStartSubprocess:g.computed,setDefinition:g.action,setType:g.action,setAttachment:g.action,setInterrupting:g.action,setSubprocessStart:g.action}),this.fitToGridSquare(),this.classList.add("bpmn__event"),this.refreshSemanticClasses(),this.refreshAttachmentPresentation()}get stage(){return this.definition.stage}get kind(){return this.definition.kind}get direction(){return this.definition.direction}get type(){return this.kind==="none"?this.stage==="start"?T.start:this.stage==="end"?T.end:T.intermediate:this.kind==="timer"?T.timer:this.kind==="message"?this.isCatching?T.messageCatch:T.messageThrow:this.kind==="signal"?this.isCatching?T.signalCatch:T.signalThrow:this.kind==="compensation"?this.isCatching?T.compensationCatch:T.compensationThrow:this.kind==="error"?this.isCatching?T.errorCatch:T.errorThrow:this.kind==="conditional"?T.conditional:T.terminate}get isStart(){return this.stage==="start"}get isEnd(){return this.stage==="end"}get isCatching(){return this.direction==="catch"}get canAttach(){return Is.has(this.kind)&&!this.subprocessStart}get canStartSubprocess(){return xn.has(this.kind)&&!this.attachedToTaskId}setDefinition(t){return!Kt(t)||this.attachedToTaskId&&!Is.has(t.kind)||this.subprocessStart&&!xn.has(t.kind)?!1:wc(this.definition,t)?!0:this.emit(new Vt(this)).cancelled?!1:(this.definition=Ge(t),this.isEnd?this._gateways.forEach(e=>e.outgoingEdges.forEach(s=>this.diagram?.disconnect(s))):this.isStart&&this._gateways.forEach(e=>e.incomingEdges.forEach(s=>this.diagram?.disconnect(s))),this.refreshSemanticClasses(),this.refreshAttachmentPresentation(),!0)}setType(t){const e=Cs[t];return e?this.setDefinition(e):!1}setAttachment(t,e=null,s=!0){t&&!Is.has(this.kind)||(this.attachedToTaskId=t,this.attachmentOffset=t?hr(e):null,this.interrupting=s,t&&(this.subprocessStart=!1,this.subprocessId=null),this.refreshAttachmentPresentation())}setInterrupting(t){this.interrupting=t,this.refreshAttachmentPresentation()}setSubprocessStart(t,e=null){return t?!this.canStartSubprocess||!e?!1:(this.subprocessStart=!0,this.subprocessId=e,this.refreshAttachmentPresentation(),!0):(this.subprocessStart=!1,this.subprocessId=null,this.refreshAttachmentPresentation(),!0)}serialize(){return{...super.serialize(),type:this.type,eventDefinition:Ge(this.definition),attachedToTaskId:this.attachedToTaskId,attachmentOffset:this.attachmentOffset?[...this.attachmentOffset]:null,interrupting:this.interrupting,subprocessStart:this.subprocessStart,subprocessId:this.subprocessId}}deserialize(t){this.setAttachment(null),this.setSubprocessStart(!1),this.definition=dr(t),this.setAttachment(t.attachedToTaskId??null,t.attachmentOffset??null,t.interrupting??!0),this.setSubprocessStart(t.subprocessStart??!1,t.subprocessId??null),super.deserialize(t),this.refreshSemanticClasses(),this.refreshAttachmentPresentation()}remapSerializedReferences(t,e){const s=t;if(!s.attachedToTaskId&&!s.subprocessId)return t;const i=s.attachedToTaskId?e.get(s.attachedToTaskId)??null:null,a=s.subprocessId?e.get(s.subprocessId)??null:null;return{...s,attachedToTaskId:i,attachmentOffset:i?s.attachmentOffset??null:null,subprocessId:a,subprocessStart:s.subprocessStart===!0&&a!==null}}get screenLabelBox(){const t=this.box,e=Math.max(t.width,120),s=Math.max(this.state.labelFontSize??14,14);return new S([t.x+t.width/2-e/2,t.y+t.height+gc,e,s*fc*pc]).sum(this.labelOffset)}refreshSemanticClasses(){[...mc,...yc,...xc,...bc].forEach(t=>this.classList.delete(t)),this.classList.add(`bpmn__event__${this.stage}`,`bpmn--${this.kind}`,`bpmn--${this.direction}`,`bpmn--${T[this.type]}`)}refreshAttachmentPresentation(){if(this.classList.delete("bpmn--boundary"),this.classList.delete("bpmn--non-interrupting"),this.classList.delete("bpmn--subprocess-start"),this.subprocessStart&&this.classList.add("bpmn--subprocess-start"),!this.attachedToTaskId){this.state.zIndex=100;return}this.classList.add("bpmn--boundary"),this.interrupting||this.classList.add("bpmn--non-interrupting"),this.state.zIndex=120}get markerIconId(){return this.kind==="none"?null:this.kind==="message"?this.isCatching?"messageCatch":"messageThrow":this.kind}RenderOverlay=A.observer(()=>{const t=this.markerIconId;return d.jsx("div",{...K(this),children:t&&d.jsx(Nt,{className:`bpmn__node_marker bpmn__event_marker bpmn__event_marker--${this.direction}`,id:t})})})};o(sa,"EventNode");let D=sa;function Re(n,t){return`bpmn__event__${n[t]}`}o(Re,"getEnumStr");var H=(n=>(n[n.inclusive=0]="inclusive",n[n.exclusive=1]="exclusive",n[n.parallel=2]="parallel",n[n.eventBased=3]="eventBased",n))(H||{});const vc=5,Ec=3,_c=1.18;function Sc(n){return typeof n?.setDefault=="function"}o(Sc,"canSetDefaultFlow");const na=class na extends st{type=-1;edgesAsGateways=!0;occupiesGridSquare=!0;constructor(t,e){super(t,e),g.makeObservable(this,{type:g.observable,setType:g.action}),this.setType(e.type??1),this.fitToGridSquare(),this.classList.add("bpmn__gate")}setType(t){if(this.type!==t&&!this.emit(new Vt(this)).cancelled){this.type=t,t!==1&&t!==0&&this.gateways.forEach(e=>e.outgoingEdges.forEach(s=>{Sc(s)&&s.setDefault(!1)}));for(const e of Object.values(H))this.classList.delete(Re(H,e));switch(t){case 1:this.classList.add(Re(H,1));break;case 0:this.classList.add(Re(H,0));break;case 2:this.classList.add(Re(H,2));break;case 3:this.classList.add(Re(H,3));break}}}serialize(){return{...super.serialize(),type:this.type}}deserialize(t){this.setType(t.type??1),super.deserialize(t)}get screenLabelBox(){const t=this.box,e=Math.max(t.width,120),s=Math.max(this.state.labelFontSize??14,14);return new S([t.x+t.width/2-e/2,t.y+t.height+vc,e,s*_c*Ec]).sum(this.labelOffset)}RenderOverlay=A.observer(()=>{const t=this.state.box.width,e=this.state.box.height;return d.jsx("div",{...K(this),children:d.jsxs("svg",{viewBox:`0 0 ${t} ${e}`,style:{width:`${t}px`,height:`${e}px`},children:[d.jsx("polygon",{points:`${t/2} 0 ${t} ${e/2} ${t/2} ${e} 0 ${e/2}`}),d.jsx("foreignObject",{width:t,height:e,children:d.jsx(Nt,{className:"bpmn__gate_marker",markerOnly:!0,id:this.type===1?"exclusive":this.type===0?"inclusive":this.type===2?"parallel":"eventBased"})})]})})})};o(na,"GateNode");let W=na;const ft={sections:{activities:"Activities",events:"Events",gateways:"Gateways",support:"Data & context"},elements:{task:"User task",serviceTask:"Service task",sendTask:"Send task",receiveTask:"Receive task",scriptTask:"Script task",manualTask:"Manual task",businessRuleTask:"Business rule task",callActivity:"Call activity",subprocess:"Sub-process",eventSubprocess:"Event sub-process",event:"Regular event",start:"Start event",intermediate:"Intermediate event",end:"End event",timer:"Timer event",message:"Message event",messageCatch:"Catch message",messageThrow:"Throw message",signal:"Signal event",compensation:"Compensation event",error:"Error / exception event",conditional:"Conditional / business rule event",terminate:"Terminate event",exclusive:"Exclusive gateway",inclusive:"Inclusive gateway",parallel:"Parallel gateway",eventBased:"Event-based gateway",lanes:"Lanes",blackBoxPool:"Black-box pool",dataStore:"Data store",document:"Document",documentAnnotation:"Document annotation",textAnnotation:"Text annotation"},eventOptions:{none:"—",start:"Start",intermediate:"Intermediate",end:"End",catch:"Catch",throw:"Throw"},actions:{transform:"Change element type",connect:"Connect to a new element",settings:"Toggle properties",close:"Close properties",delete:"Delete element",reverseDirection:"Reverse direction",resize:"Resize",resizeElement:"Resize BPMN element"},properties:{title:"Properties",name:"Name",type:"Element type",condition:"Condition",defaultFlow:"Default flow",directed:"Directed",edgeType:"Connection type",routingType:"Routing",eventType:"Event type",eventStage:"Event stage",eventDirection:"Event direction",interrupting:"Interrupting",subprocessStart:"Event sub-process start",eventSubprocessStartType:"Start event type",loop:"Conditional loop",multiInstance:"Parallel multi-instance"},edges:{sequenceFlow:"Sequence flow",messageFlow:"Message flow",inputDataAssociation:"Input data association",outputDataAssociation:"Output data association",association:"Association"},routing:{orthogonal:"Orthogonal",straight:"Straight",curved:"Curved"},inputs:{blackBoxPoolName:"Black box pool name",documentAnnotationText:"Document annotation text",elementSearch:"Search elements",laneName:"Lane name"},resizeDirections:{n:"n",ne:"ne",e:"e",se:"se",s:"s",sw:"sw",w:"w",nw:"nw"},lanes:{defaultLane:"Default",pool:"Pool",rename:"Rename lane",insertBefore:"Insert lane before",subdivide:"Subdivide lane",removeSubdivision:"Remove subdivision",removeLane:"Remove lane",insertAfter:"Insert lane after"}};Object.values(ft).forEach(Object.freeze),Object.freeze(ft);function bn(n={},t=ft){return{sections:{...t.sections,...n.sections},elements:{...t.elements,...n.elements},eventOptions:{...t.eventOptions,...n.eventOptions},actions:{...t.actions,...n.actions},properties:{...t.properties,...n.properties},edges:{...t.edges,...n.edges},routing:{...t.routing,...n.routing},inputs:{...t.inputs,...n.inputs},resizeDirections:{...t.resizeDirections,...n.resizeDirections},lanes:{...t.lanes,...n.lanes}}}o(bn,"configureBPMNLabels");const ia=class ia extends et{};o(ia,"BPMNPropertyChangeEvent");let Z=ia;const ur=50;function Ds(n,t){return n<=t?[n,t]:[t,n]}o(Ds,"orderedRange");function wn(n,t){return Number.isFinite(t.distance)&&(!n||t.distance<n.distance)?t:n}o(wn,"closer");const aa=class aa extends z{alignmentProposals=[];init(){g.makeObservable(this,{alignmentProposals:g.observable,clear:g.action})}clear(){this.alignmentProposals=[]}suggest(t,e,s,i=e,a){if(this.clear(),!this.enabled||t.diagram!==this.diagram)return i;const r=a??t.minimumResizeSize;if(!r)return i;const c=ur/5*2,l=ur/3,h=this.diagram.canvas.frameDimensions.norm,u=h>0?h/2:1/0,f=s.includes("w"),p=s.includes("e"),m=s.includes("n"),x=s.includes("s");let b=null,w=null;for(const _ of this.diagram.nodes){if(_===t||!(_ instanceof st))continue;const E=_.box;(f||p)&&Math.abs(e.edgeDistanceY(E))<u&&(b=wn(b,this.sideCandidate(r,e,E,f?"w":"e",c)),b=wn(b,this.widthCandidate(r,e,E,f,c))),(m||x)&&Math.abs(e.edgeDistanceX(E))<u&&(w=wn(w,this.sideCandidate(r,e,E,m?"n":"s",c)))}g.runInAction(()=>{this.alignmentProposals=[...b?.guides??[],...w?.guides??[]]});const v=i.copy();return b&&b.distance<l&&(v.x=b.box.x,v.width=b.box.width),w&&w.distance<l&&(v.y=w.box.y,v.height=w.box.height),v}sideCandidate(t,e,s,i,a){const r=e.copy();let c,l;return i==="w"?(c=Math.abs(e.x-s.x),r.x=s.x,r.width=e.rightMiddle.x-s.x,l=[this.verticalGuide(s.x,r,s)]):i==="e"?(c=Math.abs(e.rightMiddle.x-s.rightMiddle.x),r.width=s.rightMiddle.x-e.x,l=[this.verticalGuide(s.rightMiddle.x,r,s)]):i==="n"?(c=Math.abs(e.y-s.y),r.y=s.y,r.height=e.bottomMiddle.y-s.y,l=[this.horizontalGuide(s.y,r,s)]):(c=Math.abs(e.bottomMiddle.y-s.bottomMiddle.y),r.height=s.bottomMiddle.y-e.y,l=[this.horizontalGuide(s.bottomMiddle.y,r,s)]),this.candidate(t,r,c,l,a)}widthCandidate(t,e,s,i,a){const r=e.copy(),c=Math.abs(e.width-s.width);return r.width=s.width,i&&(r.x=e.rightMiddle.x-s.width),this.candidate(t,r,c,this.widthGuides(r,s),a)}candidate(t,e,s,i,a){return{box:e,distance:s<a&&this.isValid(t,e)?s:1/0,guides:i}}isValid(t,e){const s=this.diagram.canvas.size;return e.width>=t.x&&e.height>=t.y&&e.x>=0&&e.y>=0&&e.rightMiddle.x<=s.x&&e.bottomMiddle.y<=s.y}verticalGuide(t,e,s){return{type:"h",x:t,range:Ds(Math.min(e.y,s.y),Math.max(e.bottomMiddle.y,s.bottomMiddle.y)),id:Wt("bpmn-resize-suggestion")}}horizontalGuide(t,e,s){return{type:"v",y:t,range:Ds(Math.min(e.x,s.x),Math.max(e.rightMiddle.x,s.rightMiddle.x)),id:Wt("bpmn-resize-suggestion")}}widthGuides(t,e){return[{type:"v",y:t.y,range:Ds(t.x,t.rightMiddle.x),id:Wt("bpmn-resize-suggestion")},{type:"v",y:e.y,range:Ds(e.x,e.rightMiddle.x),id:Wt("bpmn-resize-suggestion")}]}};o(aa,"BPMNResizeSuggester");let Bt=aa;const ra=class ra extends z{autopan=new ut(this.diagram);session=null;unbindSession=o(()=>{},"unbindSession");init(){}startResize(t,e,s){if(e.button!==0||t.diagram!==this.diagram)return;e.preventDefault(),e.stopImmediatePropagation(),this.endSession();const i=new y(e);this.session={changed:!1,direction:s,initialBox:new S(t.box.raw,!1),node:t,pointer:i,startPosition:this.diagram.canvas.inverseFit(i)},this.unbindSession=pt(R(this,"pointermove",this.handlePointerMove),R(this,"pointerup",this.endSession),R(this,"pointercancel",this.endSession),vs(this.handleAutopan,30))}resizeNode(t,e){if(t.diagram!==this.diagram)return!1;const s=e instanceof y?e:new y(e,!1),i=this.diagram.getExtension(G),a=i?.enabled===!0?i.gridSize:null,r=Math.max(0,this.diagram.canvas.size.x-t.box.x),c=Math.max(0,this.diagram.canvas.size.y-t.box.y),l=this.constrain(s.x,t.minimumResizeSize.x,r,a),h=this.constrain(s.y,t.minimumResizeSize.y,c,a);return this.applyBox(t,new S([t.box.x,t.box.y,l,h],!1))}resizeNodeFromDirection(t,e,s,i){if(t.diagram!==this.diagram)return!1;const a=this.diagram.getExtension(G),r=a?.enabled===!0?a.gridSize:null,c=s.includes("w"),l=s.includes("e"),h=s.includes("n"),u=s.includes("s"),f=c?e.x+e.width:this.diagram.canvas.size.x-e.x,p=h?e.y+e.height:this.diagram.canvas.size.y-e.y,m=e.width+(l?i.x:c?-i.x:0),x=e.height+(u?i.y:h?-i.y:0),b=c||l?this.constrain(m,t.minimumResizeSize.x,f,null):e.width,w=h||u?this.constrain(x,t.minimumResizeSize.y,p,null):e.height,v=c?e.x+e.width-b:e.x,_=h?e.y+e.height-w:e.y,E=new S([v,_,b,w],!1),C=r?this.snapDirectionalBoxToGrid(t,e,E,s,r):E,k=this.diagram.getExtension(Bt)?.suggest(t,E,s,C)??C;return this.applyBox(t,k)}snapDirectionalBoxToGrid(t,e,s,i,a){const r=s.copy(),c=e.rightMiddle.x,l=e.bottomMiddle.y;if(i.includes("w"))r.x=this.snapCoordinate(s.x,0,c-t.minimumResizeSize.x,a,e.x),r.width=c-r.x;else if(i.includes("e")){const h=this.snapCoordinate(s.rightMiddle.x,e.x+t.minimumResizeSize.x,this.diagram.canvas.size.x,a,c);r.width=h-e.x}if(i.includes("n"))r.y=this.snapCoordinate(s.y,0,l-t.minimumResizeSize.y,a,e.y),r.height=l-r.y;else if(i.includes("s")){const h=this.snapCoordinate(s.bottomMiddle.y,e.y+t.minimumResizeSize.y,this.diagram.canvas.size.y,a,l);r.height=h-e.y}return r}snapCoordinate(t,e,s,i,a){const r=Math.ceil(e/i)*i,c=Math.floor(s/i)*i;if(r>c)return a;const l=Math.round(t/i)*i;return Math.min(c,Math.max(r,l))}applyBox(t,e){return t.box.x===e.x&&t.box.y===e.y&&t.box.width===e.width&&t.box.height===e.height?!1:(g.runInAction(()=>{t.state.box.assign(e)}),this.rerouteConnectedEdges(t),!0)}constrain(t,e,s,i){const a=Number.isFinite(t)?t:e,r=Math.min(e,s),c=i?Math.ceil(r/i)*i:r,l=i?Math.round(a/i)*i:a;return Math.min(s,Math.max(c,l))}rerouteConnectedEdges(t){const e=new Set;t.gateways.forEach(s=>{s.incomingEdges.forEach(i=>e.add(i)),s.outgoingEdges.forEach(i=>e.add(i))}),e.forEach(s=>s.from.recomputeConnectedEdge(s,"from"))}handlePointerMove(t){this.session&&(this.session.pointer=new y(t),this.resizeFromPointer())}handleAutopan=o(()=>{this.session&&(this.autopan.displace(this.session.pointer),this.resizeFromPointer())},"handleAutopan");resizeFromPointer(){if(!this.session)return;const e=this.diagram.canvas.inverseFit(this.session.pointer).copy(!1).substract(this.session.startPosition),s=this.resizeNodeFromDirection(this.session.node,this.session.initialBox,this.session.direction,e);this.session.changed=this.session.changed||s}endSession(){const t=this.session?.changed===!0;this.session=null;const e=this.unbindSession;this.unbindSession=()=>{},e(),this.diagram.getExtension(Bt)?.clear(),t&&this.emit(new Z(this))}};o(ra,"BPMNNodeResizer");let js=ra;const Mc=["n","ne","e","se","s","sw","w","nw"],kc={n:{top:"-5px",left:"50%",transform:"translateX(-50%)"},ne:{top:"-5px",right:"-5px"},e:{top:"50%",right:"-5px",transform:"translateY(-50%)"},se:{right:"-5px",bottom:"-5px"},s:{bottom:"-5px",left:"50%",transform:"translateX(-50%)"},sw:{bottom:"-5px",left:"-5px"},w:{top:"50%",left:"-5px",transform:"translateY(-50%)"},nw:{top:"-5px",left:"-5px"}},Ac={n:"ns-resize",ne:"nesw-resize",e:"ew-resize",se:"nwse-resize",s:"ns-resize",sw:"nesw-resize",w:"ew-resize",nw:"nwse-resize"};function Ns({node:n}){const t=n.diagram?.getExtension(js);if(!n.selected||!t)return null;const e=n.diagram?.bpmnLabels??ft,s=o((a,r)=>{a.button===0&&(a.preventDefault(),a.stopPropagation(),a.nativeEvent.stopImmediatePropagation(),t.startResize(n,a.nativeEvent,r))},"beginResize"),i=jt(n,n.box);return d.jsx("div",{...i,className:"node__screenLabel bpmn__node_resize_handles",style:{...i.style,display:"block",overflow:"visible",pointerEvents:"none"},children:Mc.map(a=>d.jsx("button",{"aria-label":`${e.actions.resizeElement} ${e.resizeDirections[a]}`,className:`bpmn__node_resize_handle bpmn__node_resize_handle--${a}`,"data-diagram-interactive-ui":"true",onClick:o(r=>{r.preventDefault(),r.stopPropagation()},"onClick"),onMouseDownCapture:o(r=>{r.preventDefault(),r.stopPropagation(),r.nativeEvent.stopImmediatePropagation()},"onMouseDownCapture"),onPointerDown:o(r=>s(r,a),"onPointerDown"),style:{position:"absolute",zIndex:2,width:"11px",height:"11px",padding:0,border:"1px solid var(--node-stroke)",borderRadius:"2px",background:"var(--diagram-lane-toolbar-bg, var(--node-fill))",boxSizing:"border-box",cursor:Ac[a],pointerEvents:"auto",touchAction:"none",...kc[a]},tabIndex:-1,title:`${e.actions.resize} ${e.resizeDirections[a]}`,type:"button"},a))})}o(Ns,"BPMNResizeHandle");var N=(n=>(n[n.task=0]="task",n[n.service=1]="service",n[n.callActivity=2]="callActivity",n[n.subprocess=3]="subprocess",n[n.send=4]="send",n[n.receive=5]="receive",n[n.script=6]="script",n[n.manual=7]="manual",n[n.eventSubprocess=8]="eventSubprocess",n[n.businessRule=9]="businessRule",n))(N||{});const Pc={0:"task",1:"serviceTask",4:"sendTask",5:"receiveTask",6:"scriptTask",7:"manualTask",9:"businessRuleTask"},gr=new Set(Object.values(N).filter(n=>typeof n=="number"));function pr(n){return n==="parallel"?"parallel":"none"}o(pr,"normalizeMultiInstance");function Tt(n){return n===3||n===8}o(Tt,"isSubprocessType");function Cc(n){return Tt(n)?new S([0,0,400,250]):new S([0,0,150,100])}o(Cc,"defaultTaskBox");const oa=class oa extends st{type=-1;minimumResizeSize=new y([300,200],!1);multiInstance;loop;edgesAsGateways=!0;constructor(t,e){super(t,{...e,box:e.box||Cc(e.type),groupChildren:Tt(e.type),zIndex:e.zIndex??(Tt(e.type)?50:100)}),this.classList.add("bpmn__task"),this.multiInstance=pr(e.multiInstance),this.loop=e.loop===!0,g.makeObservable(this,{type:g.observable,multiInstance:g.observable,loop:g.observable,setType:g.action,setMultiInstance:g.action,setLoop:g.action}),this.setType(e.type??0)}fitWidthToGrid(t=!1){if(Tt(this.type))return;const s=(this.diagram?.getExtension(G)?.gridSize??50)*3;t&&(this.state.box.x+=(this.state.box.width-s)/2),this.state.box.width=s}applySubprocessState(t){const e=Tt(this.type);if(this.state.groupChildren=e,this.state.zIndex=e?50:100,e){this.classList.add("bpmn__resizable_node");const r=Math.max(this.state.box.width,this.minimumResizeSize.x),c=Math.max(this.state.box.height,this.minimumResizeSize.y);if(t){this.state.box.assignDimensions([r,c]);return}this.state.box.x-=(r-this.state.box.width)/2,this.state.box.y-=(c-this.state.box.height)/2,this.state.box.assignDimensions([r,c]);return}if(this.classList.delete("bpmn__resizable_node"),!t)return;const s=this.diagram?.getExtension(G)?.gridSize??50,i=s*3,a=s*2;this.state.box.x+=(this.state.box.width-i)/2,this.state.box.y+=(this.state.box.height-a)/2,this.state.box.assignDimensions([i,a])}setDiagram(t){super.setDiagram(t),this.fitWidthToGrid()}setType(t){if(!gr.has(t))return!1;if(this.type===t)return!0;if(this.emit(new Vt(this)).cancelled)return!1;const e=Tt(this.type);return gr.has(this.type)&&this.classList.delete(`bpmn--${N[this.type]}`),this.type=t,this.classList.add(`bpmn--${N[t]}`),this.applySubprocessState(e),!0}setMultiInstance(t){return t!=="none"&&t!=="parallel"?!1:this.multiInstance===t?!0:this.emit(new Vt(this)).cancelled?!1:(this.multiInstance=t,!0)}setLoop(t){return this.loop===t?!0:this.emit(new Vt(this)).cancelled?!1:(this.loop=t,!0)}serialize(){return{...super.serialize(),type:this.type,multiInstance:this.multiInstance,loop:this.loop}}deserialize(t){this.setType(t.type??0),this.setMultiInstance(pr(t.multiInstance)),this.setLoop(t.loop===!0),super.deserialize(t),this.applySubprocessState(Tt(this.type)),this.fitWidthToGrid(!0)}get screenLabelBox(){if(!Tt(this.type))return this.box;const t=this.box;return new S([t.x+16,t.y+8,Math.max(0,t.width-32),32])}RenderScreen=A.observer(()=>d.jsxs(d.Fragment,{children:[d.jsx(er,{node:this,box:this.screenLabelBox}),Tt(this.type)&&d.jsx(Ns,{node:this})]}));RenderOverlay=A.observer(()=>{const t=Pc[this.type],e=this.type===2;return d.jsxs("div",{...K(this),children:[t&&d.jsx(Nt,{className:"bpmn__node_marker bpmn__task_marker",id:t}),(e||this.multiInstance==="parallel"||this.loop)&&d.jsxs("span",{className:"bpmn__task_bottom_markers",children:[e&&d.jsx("span",{className:"bpmn__task_plus",children:"+"}),this.loop&&d.jsx(sc,{"aria-hidden":"true",className:"bpmn__task_loop"}),this.multiInstance==="parallel"&&d.jsx("svg",{"aria-hidden":"true",className:"bpmn__task_multi_instance",viewBox:"0 0 24 16",children:d.jsx("path",{d:"M7 2v12M12 2v12M17 2v12",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeWidth:"2"})})]})]})})};o(oa,"TaskNode");let j=oa;const ca=class ca extends st{sourceType="unknown";constructor(t,e){super(t,{...e,box:e.box||new S([0,0,200,100])}),this.sourceType=e.sourceType||"unknown",this.classList.add("bpmn__unknown")}serialize(){return{...super.serialize(),sourceType:this.sourceType}}deserialize(t){super.deserialize(t),this.sourceType=t.sourceType||"unknown"}RenderOverlay=A.observer(()=>d.jsx("div",{...K(this),children:d.jsx("div",{className:"bpmn__unknown__marker",children:"?"})}))};o(ca,"UnknownBPMNNode");let vn=ca;const fr="bpmn--event-drop-inside",mr="bpmn--event-drop-attach";function Ic(n){return n.canAttach}o(Ic,"canAttach");function Dc(n){return n.type===N.subprocess||n.type===N.eventSubprocess}o(Dc,"canContainEvent");function yr(n,t){const e=n.middle,s=t.x,i=t.x+t.width,a=t.y,r=t.y+t.height,c=new y([Math.min(i,Math.max(s,e.x)),Math.min(r,Math.max(a,e.y))]);if(t.collides(e)){const u=[{distance:Math.abs(e.x-s),x:s,y:e.y},{distance:Math.abs(i-e.x),x:i,y:e.y},{distance:Math.abs(e.y-a),x:e.x,y:a},{distance:Math.abs(r-e.y),x:e.x,y:r}].reduce((f,p)=>p.distance<f.distance?p:f);c.assign([u.x,u.y])}else c.x>s&&c.x<i?c.y=e.y<a?a:r:c.y>a&&c.y<r&&(c.x=e.x<s?s:i);return new S([c.x-n.width/2,c.y-n.height/2,n.width,n.height])}o(yr,"projectToTaskBoundary");function jc(n,t){const e=t.x+t.width-n.width,s=t.y+t.height-n.height,i=e<t.x?t.x+(t.width-n.width)/2:Math.min(e,Math.max(t.x,n.x)),a=s<t.y?t.y+(t.height-n.height)/2:Math.min(s,Math.max(t.y,n.y));return new S([i,a,n.width,n.height])}o(jc,"clampInsideContainer");const la=class la extends z{draggedEventIds=new Set;init(){this.diagram.onEvent(ht,t=>this.handleDrag(t),this.diagram.priorities.Drag_Node_Snap_To_Grid-1),this.diagram.onEvent(tt,()=>{this.finishEventDrags(),this.clearDropPresentations()},this.diagram.priorities.Mouse_Up_Selector-1),this.diagram.onEvent(ie,t=>{t.cancelled||!(t.node instanceof j)||[...this.attachedEvents(t.node.id),...this.subprocessEvents(t.node.id)].forEach(e=>this.diagram.delete(e))},-100)}attachedEvents(t){return this.diagram.nodes.filter(e=>e instanceof D&&e.attachedToTaskId===t)}subprocessEvents(t){return this.diagram.nodes.filter(e=>e instanceof D&&e.subprocessId===t)}handleDrag(t){this.clearDropPresentations();const e=[...t.proposals],s=new Map(e.map(i=>[i.node.id,i]));e.forEach(i=>{i.node instanceof D&&(this.draggedEventIds.add(i.node.id),this.constrainSubprocessEvent(i.node,i,s)||this.constrainAttachedEvent(i.node,i),this.presentDropTarget(i.node,i.get()))}),e.forEach(i=>{i.node instanceof j&&this.moveAttachedEvents(i.node,i.get(),s,t.proposals)})}clearDropPresentations(){this.diagram.nodes.forEach(t=>{t instanceof j&&(t.classList.delete(fr),t.classList.delete(mr))})}presentDropTarget(t,e){const s=this.findInternalDropTarget(e);if(s){s.classList.add(fr);return}t.canAttach&&this.findAttachmentDropTarget(e)?.classList.add(mr)}findInternalDropTarget(t){return this.diagram.nodes.filter(e=>e instanceof j&&Dc(e)&&e.box.x<=t.x&&e.box.y<=t.y&&e.box.x+e.box.width>=t.x+t.width&&e.box.y+e.box.height>=t.y+t.height).sort((e,s)=>e.box.width*e.box.height-s.box.width*s.box.height)[0]??null}findAttachmentDropTarget(t){return this.diagram.nodes.filter(e=>e instanceof j&&e.box.collides(t,!0)).sort((e,s)=>e.box.middle.distance(t.middle)-s.box.middle.distance(t.middle))[0]??null}constrainAttachedEvent(t,e){if(!t.attachedToTaskId)return;const s=this.diagram.getNodeById(t.attachedToTaskId);if(!(s instanceof j)){t.setAttachment(null);return}const i=e.get();if(this.findInternalDropTarget(i)||!s.box.collides(i,!0)){t.setAttachment(null);return}e.update(yr(i,s.box))}constrainSubprocessEvent(t,e,s){if(!t.subprocessStart||!t.subprocessId)return!1;const i=this.diagram.getNodeById(t.subprocessId);if(!(i instanceof j)||i.type!==N.eventSubprocess)return t.setSubprocessStart(!1),!1;const a=s.get(i.id)?.get()??i.box;return e.update(jc(e.get(),a)),!0}moveAttachedEvents(t,e,s,i){this.attachedEvents(t.id).forEach(a=>{const r=a.attachmentOffset??a.coordinates.copy(!1).substract(t.coordinates).raw,c=new S([e.x+r[0],e.y+r[1],a.box.width,a.box.height]),l=s.get(a.id);if(l)l.update(c);else{const h=new Ae(a,c);s.set(a.id,h),i.push(h)}})}finishEventDrags(){const t=[...this.draggedEventIds];this.draggedEventIds.clear(),t.forEach(e=>{const s=this.diagram.getNodeById(e);if(!(s instanceof D)||!Ic(s))return;const i=s.attachedToTaskId?this.diagram.getNodeById(s.attachedToTaskId):null,a=i instanceof j?i:this.findDropTask(s);if(!a)return;const r=yr(s.box,a.box);g.runInAction(()=>{s.setPosition(r.coordinates),s.setAttachment(a.id,s.coordinates.copy(!1).substract(a.coordinates).raw,s.interrupting)})})}findDropTask(t){return this.findInternalDropTarget(t.box)?null:this.findAttachmentDropTarget(t.box)}};o(la,"BPMNEventAttachments");let En=la;function xr(n){return n.children.length?n.children.reduce((t,e)=>t+xr(e),0):1}o(xr,"leafCount$1");const da=class da extends z{init(){this.diagram.onEvent(ht,e=>this.snapOneGridNodes(e),this.diagram.priorities.Drag_Node_Snap_To_Grid+1);const t=this.diagram.getExtension(Zt);t?.registerVerticalSuggestionProvider((e,s)=>this.enabled&&t.enabled?this.getLaneSuggestions(e,s):[]),t?.registerHorizontalSuggestionProvider((e,s)=>this.enabled&&t.enabled?this.getHorizontalLaneSuggestions(e,s):[])}snapOneGridNodes(t){const e=this.diagram.getExtension(G);if(!this.enabled||e?.enabled!==!0)return;const s=this.diagram.getClass("EventNode"),i=this.diagram.getClass("GateNode"),a=this.diagram.getClass("DocumentNode");for(const r of t.proposals){if(!(s&&r.node instanceof s)&&!(i&&r.node instanceof i)&&!(a&&r.node instanceof a))continue;const c=r.get().copy();c.x=Math.round(c.x/e.gridSize)*e.gridSize,c.y=Math.round(c.middle.y/e.gridSize)*e.gridSize-c.height/2,r.update(c),r.lockX(),r.lockY()}}resize(t,e){const s=this.diagram.getExtension(G),i=s?.gridSize??50,a=t.constructor;if("width"in e){const x=i*a.minimumWidthInGrids,b=t.box,w=this.constrain(e.width,x,null),v=new S([b.x,b.y,w,b.height],!1),_=v.copy();s?.enabled===!0&&(_.width=this.snapGrowingEdge(v.rightMiddle.x,b.x+x,i)-b.x);const E=this.diagram.getExtension(Bt)?.suggest(t,v,"e",_,new y([x,b.height],!1)).width??_.width;return t.state.box.width===E?!1:(t.state.box.width=E,!0)}const r=t.laneLayouts.find(({lane:x})=>x.name===e.laneId);if(!r)return!1;const c=xr(r.lane)*a.minimumLaneHeight,l=t.box,h=l.y+r.y,u=Math.max(c,e.height),f=new S([l.x,h,l.width,u],!1),p=f.copy();s?.enabled===!0&&(p.height=this.snapGrowingEdge(f.bottomMiddle.y,h+c,i)-h);const m=this.diagram.getExtension(Bt)?.suggest(t,f,"s",p,new y([l.width,c],!1)).height??p.height;return t.resizeLane(e.laneId,m)}snapGrowingEdge(t,e,s){const i=Math.ceil(e/s)*s,a=Math.round(t/s)*s;return Math.max(i,a)}constrain(t,e,s){const i=s?Math.ceil(e/s)*s:e,a=s?Math.round(t/s)*s:t;return Math.max(i,a)}getLaneSuggestions(t,e){const s=this.diagram.getClass("Lanes");if(!s||t instanceof s)return[];const i=this.diagram.nodes.filter(p=>p instanceof s).flatMap(p=>{const m=p.box;return p.laneLayouts.filter(({lane:x})=>x.children.length===0).map(x=>({lanes:p,laneBox:m,layout:x}))}).filter(({laneBox:p,layout:m})=>{const x=p.x+(m.depth+1)*s.laneHeaderWidth,b=p.y+m.y;return e.middle.x>=x&&e.middle.x<=p.x+p.width&&e.middle.y>=b&&e.middle.y<=b+m.height}).sort((p,m)=>m.layout.depth-p.layout.depth)[0];if(!i)return[];const a=this.diagram.getExtension(G)?.gridSize??50,{laneBox:r,layout:c}=i,l=r.y+c.y,u=[r.x+(c.depth+1)*s.laneHeaderWidth,r.x+r.width],f=[{nodeY:l+(c.height-e.height)/2,guideY:l+c.height/2,range:u}];if(c.height>a*3){const p=a/2;f.push({nodeY:l+p,guideY:l+p,range:u},{nodeY:l+c.height-p-e.height,guideY:l+c.height-p,range:u})}return f}getHorizontalLaneSuggestions(t,e){const s=this.diagram.getClass("Lanes");if(!s||t instanceof s)return[];const i=this.diagram.nodes.filter(m=>m instanceof s).flatMap(m=>{const x=m.box;return m.laneLayouts.filter(({lane:b})=>b.children.length===0).map(b=>({laneBox:x,layout:b}))}).filter(({laneBox:m,layout:x})=>{const b=m.x+(x.depth+1)*s.laneHeaderWidth,w=m.y+x.y;return e.middle.x>=b&&e.middle.x<=m.x+m.width&&e.middle.y>=w&&e.middle.y<=w+x.height}).sort((m,x)=>x.layout.depth-m.layout.depth)[0];if(!i)return[];const r=(this.diagram.getExtension(G)?.gridSize??50)/2,{laneBox:c,layout:l}=i,h=c.y+l.y,u=c.x+(l.depth+1)*s.laneHeaderWidth,f=c.x+c.width,p=[h,h+l.height];return[{nodeX:u+r,guideX:u+r,range:p},{nodeX:f-r-e.width,guideX:f-r,range:p}]}};o(da,"BPMNGridSnap");let Ve=da;const ha=class ha extends et{};o(ha,"BPMNLaneChangeEvent");let Gt=ha;const ua=class ua extends z{autopan=new ut(this.diagram);session=null;unbindSession=o(()=>{},"unbindSession");init(){}resizeWidth(t,e){e.stopImmediatePropagation();const s=this.diagram.canvas.inverseFit(new y(e)),i=t.state.box.width;this.startSession(e,a=>{const r=this.diagram.canvas.inverseFit(a);return this.diagram.getExtension(Ve).resize(t,{width:i+r.x-s.x})})}resizeHeight(t,e,s,i){i.stopImmediatePropagation();const a=this.diagram.canvas.inverseFit(new y(i));this.startSession(i,r=>{const c=this.diagram.canvas.inverseFit(r);return this.diagram.getExtension(Ve).resize(t,{laneId:e,height:s+c.y-a.y})})}startSession(t,e){this.endSession(),this.session={changed:!1,pointer:new y(t),resize:e},this.unbindSession=pt(R(this,"mousemove",this.handleMouseMove),R(this,"mouseup",this.endSession),vs(this.handleAutopan,30))}handleMouseMove(t){this.session&&(this.session.pointer=new y(t),this.session.changed=this.session.resize(this.session.pointer)||this.session.changed)}handleAutopan=o(()=>{this.session&&(this.autopan.displace(this.session.pointer),this.session.changed=this.session.resize(this.session.pointer)||this.session.changed)},"handleAutopan");endSession(){const t=this.session;this.session=null;const e=this.unbindSession;this.unbindSession=()=>{},e(),this.diagram?.getExtension?.(Bt)?.clear(),t?.changed&&this.emit(new Gt(this))}};o(ua,"BPMNLaneResizer");let he=ua;const ga=class ga extends st{minimumResizeSize=new y([300,100],!1);edgesAsGateways=!0;constructor(t,e){super(t,{...e,box:e.box||new S([0,0,500,150]),groupChildren:!1}),this.classList.add("bpmn__black_box_pool","bpmn__resizable_node")}RenderScreen=Nc;RenderOverlay=A.observer(()=>{const t=this.box,e=K(this),s=1.5;return d.jsx("div",{...e,style:{...e.style,overflow:"visible",border:0,borderRadius:0,background:"transparent"},children:d.jsx("svg",{"aria-hidden":"true",preserveAspectRatio:"none",style:{display:"block",width:"100%",height:"100%"},viewBox:`0 0 ${t.width} ${t.height}`,children:d.jsx("rect",{fill:"var(--node-fill)",height:Math.max(0,t.height-s*2),stroke:"var(--node-stroke)",strokeWidth:"2",vectorEffect:"non-scaling-stroke",width:Math.max(0,t.width-s*2),x:s,y:s})})})})};o(ga,"BlackBoxPoolNode");let Mt=ga;const Nc=A.observer(({node:n})=>{const t=n.diagram?.bpmnLabels??ft,e=M.useRef(!1),s=n.box,i=Math.min(20,s.width/4,s.height/4),a=n.state.labelFontSize??16,r=Math.min(Math.max(0,s.height-i*2),a*1.18),c=new S([s.x+i,s.y+(s.height-r)/2,Math.max(0,s.width-i*2),r]),l=jt(n,c);l.style["--screen-label-font-size"]=`${a}px`;const h=`node__screenLabel node__screenHitArea bpmn__black_box_pool_label${n.selected?" selected":""}`,u={...l.style,display:"block",margin:0,padding:0,border:0,background:"transparent",boxSizing:"border-box",color:"var(--node-color)",fontFamily:"var(--node-font-family)",fontSize:`calc(${a}px * var(--diagram-canvas-scale, 1))`,fontWeight:n.selected?600:500,fontKerning:"normal",fontVariantLigatures:"contextual",lineHeight:1.18,letterSpacing:0,overflow:"hidden",pointerEvents:"all",textAlign:"center",whiteSpace:"pre"};return n.editionMode||(e.current=!1),d.jsxs(d.Fragment,{children:[!n.editionMode&&n.state.label&&d.jsx("pre",{...l,className:h,style:u,children:n.state.label}),n.editionMode&&d.jsx("textarea",{...l,"aria-label":t.inputs.blackBoxPoolName,autoFocus:!0,className:h,onChange:o(f=>{g.runInAction(()=>{n.state.label=f.target.value})},"onChange"),onKeyDownCapture:o(f=>{Ss(f.nativeEvent)||f.nativeEvent.stopImmediatePropagation()},"onKeyDownCapture"),onMouseDown:o(f=>f.nativeEvent.stopImmediatePropagation(),"onMouseDown"),ref:o(f=>{f&&!e.current&&(e.current=!0,f.select())},"ref"),rows:1,style:{...u,outline:0,resize:"none"},value:n.state.label,wrap:"off"}),d.jsx(Ns,{node:n})]})}),pa=class pa extends st{requiredEdgePathType="straight";occupiesGridSquare=!0;constructor(t,e){super(t,e),this.fitToGridSquare(),this.classList.add("bpmn__data_store")}get screenLabelBox(){const t=this.box,e=Math.max(t.width,120),s=Math.max(this.state.labelFontSize??14,14);return new S([t.x+t.width/2-e/2,t.y+t.height+5,e,s*1.18*3]).sum(this.labelOffset)}RenderOverlay=A.observer(()=>d.jsx("div",{...K(this),children:d.jsxs("svg",{className:"bpmn__data_store_icon",viewBox:"0 0 24 24","aria-hidden":"true",children:[d.jsx("path",{className:"bpmn__data_store_body",d:"M4 6c0-2.21 3.58-4 8-4s8 1.79 8 4v12c0 2.21-3.58 4-8 4s-8-1.79-8-4Z"}),d.jsx("path",{className:"bpmn__data_store_lines",d:"M4 6c0 2.21 3.58 4 8 4s8-1.79 8-4M4 12c0 2.21 3.58 4 8 4s8-1.79 8-4"})]})}))};o(pa,"DataStoreNode");let Lt=pa;const fa=class fa extends st{minimumResizeSize=new y([100,80],!1);edgesAsGateways=!0;constructor(t,e){super(t,{...e,box:e.box||new S([0,0,180,120])}),this.classList.add("bpmn__document_annotation","bpmn__resizable_node")}findAutomaticGatewayAnchor(t){return this.findAutomaticConnectionAnchor(t)}RenderScreen=Tc;RenderOverlay=A.observer(()=>{const t=this.box,e=K(this),s=1.5,i=Math.min(24,t.width/4,t.height/3),a=Math.max(s,t.width-s),r=Math.max(s,t.height-s),c=Math.max(s,a-i),l=Math.min(r,s+i);return d.jsx("div",{...e,style:{...e.style,overflow:"visible",border:0,borderRadius:0,background:"transparent"},children:d.jsxs("svg",{"aria-hidden":"true",preserveAspectRatio:"none",style:{display:"block",width:"100%",height:"100%"},viewBox:`0 0 ${t.width} ${t.height}`,children:[d.jsx("path",{d:`M ${s} ${s} H ${c} L ${a} ${l} V ${r} H ${s} Z`,fill:"var(--node-fill)",stroke:"var(--node-stroke)",strokeLinejoin:"round",strokeWidth:"2",vectorEffect:"non-scaling-stroke"}),d.jsx("path",{d:`M ${c} ${s} V ${l} H ${a}`,fill:"none",stroke:"var(--node-stroke)",strokeLinejoin:"round",strokeWidth:"2",vectorEffect:"non-scaling-stroke"})]})})})};o(fa,"DocumentAnnotationNode");let mt=fa;const Tc=A.observer(({node:n})=>{const t=n.diagram?.bpmnLabels??ft,e=M.useRef(!1),s=n.box,i=Math.min(14,s.width/6,s.height/6),a=Math.min(24,s.width/4,s.height/3),r=Math.max(i,a+8),c=new S([s.x+i,s.y+i,Math.max(0,s.width-i-r),Math.max(0,s.height-i*2)]),l=jt(n,c);l.style["--screen-label-font-size"]=`${n.state.labelFontSize??16}px`;const h=`node__screenLabel node__screenHitArea bpmn__document_annotation_label${n.selected?" selected":""}`;return n.editionMode||(e.current=!1),n.editionMode?d.jsxs(d.Fragment,{children:[d.jsx("textarea",{...l,"aria-label":t.inputs.documentAnnotationText,autoFocus:!0,className:`${h} editable__label`,onChange:o(u=>{g.runInAction(()=>{n.state.label=u.target.value})},"onChange"),onKeyDownCapture:o(u=>{Ss(u.nativeEvent)||u.nativeEvent.stopImmediatePropagation()},"onKeyDownCapture"),onMouseDown:o(u=>u.nativeEvent.stopImmediatePropagation(),"onMouseDown"),ref:o(u=>{u&&!e.current&&(e.current=!0,u.select())},"ref"),style:{...l.style,display:"block",padding:0,border:0,background:"transparent",boxSizing:"border-box",overflow:"auto",outline:0,pointerEvents:"all",resize:"none",textAlign:"left"},value:n.state.label}),d.jsx(Ns,{node:n})]}):d.jsxs(d.Fragment,{children:[n.state.label&&d.jsx("pre",{...l,className:h,style:{...l.style,alignItems:"flex-start",justifyContent:"flex-start",overflow:"hidden",padding:0,pointerEvents:"all",textAlign:"left",whiteSpace:"pre-wrap",wordBreak:"break-word"},children:n.state.label}),d.jsx(Ns,{node:n})]})}),ma=class ma extends st{requiredEdgePathType="straight";constructor(t,e){super(t,e),this.classList.add("bpmn__document")}get screenLabelBox(){const t=this.box,e=Math.max(t.width,120),s=Math.max(this.state.labelFontSize??16,16);return new S([t.x+t.width/2-e/2,t.y+t.height+5,e,s*1.18*3]).sum(this.labelOffset)}RenderOverlay=A.observer(()=>d.jsx("div",{...K(this),children:d.jsxs("svg",{className:"bpmn__document_icon",viewBox:"0 0 24 24","aria-hidden":"true",children:[d.jsx("path",{className:"bpmn__document_body",d:"M5 2.5h9l5 5v14H5Z"}),d.jsx("path",{className:"bpmn__document_fold",d:"M14 2.5v5h5"})]})}))};o(ma,"DocumentNode");let $t=ma;function Lc(n){n.preventDefault(),n.stopPropagation(),n.nativeEvent.stopImmediatePropagation()}o(Lc,"stopToolEvent$1");const $c=A.observer(({node:n})=>{const t=n.diagram?.bpmnLabels??ft,e=n.box,s=M.useRef(null),i=n.laneLayouts;return d.jsxs(d.Fragment,{children:[i.map(({lane:a,depth:r,y:c,height:l,siblingCount:h})=>{const u=new S([e.x+r*yt.laneHeaderWidth,e.y+c,yt.laneHeaderWidth,l]),f=jt(n,u),p=n.editingLaneId===a.name,m=r===0?h>1:h>2;return M.createElement("div",{...f,key:a.name,className:`node__screenHitArea lane__screenHeader${p?" lane__screenHeader--editing":""}${n.selected?" selected":""}`,onDoubleClick:o(()=>n.renameLane(a.name),"onDoubleClick")},!p&&d.jsx("span",{className:"lane__screenLabel",style:{fontSize:`calc(${yt.laneHeaderFontSize}px * var(--diagram-canvas-scale, 1))`},children:a.label}),p&&d.jsx("input",{"aria-label":t.inputs.laneName,className:"lane__screenLabelInput",autoFocus:!0,value:a.label,onMouseDown:o(x=>x.nativeEvent.stopImmediatePropagation(),"onMouseDown"),onKeyDownCapture:o(x=>{n.editionMode&&!Ss(x.nativeEvent)&&x.nativeEvent.stopImmediatePropagation()},"onKeyDownCapture"),onKeyDown:o(x=>{if(x.code!=="Tab")return;x.preventDefault();const b=i.findIndex(({lane:_})=>_.name===a.name),w=x.shiftKey?-1:1,v=i[(b+w+i.length)%i.length];n.renameLane(v.lane.name)},"onKeyDown"),onChange:o(x=>{g.runInAction(()=>{a.label=x.target.value})},"onChange"),ref:o(x=>{x&&s.current!==a.name&&(s.current=a.name,x.select())},"ref")}),d.jsxs("div",{className:"lane__headerTools",onMouseDown:Lc,children:[d.jsx("button",{title:t.lanes.rename,"aria-label":t.lanes.rename,onClick:o(()=>n.renameLane(a.name),"onClick"),children:d.jsx(Go,{})}),d.jsx("button",{title:t.lanes.insertBefore,"aria-label":t.lanes.insertBefore,onClick:o(()=>n.insertLane(a.name,"before"),"onClick"),children:d.jsx(Ho,{})}),d.jsx("button",{title:a.children.length?t.lanes.removeSubdivision:t.lanes.subdivide,"aria-label":a.children.length?t.lanes.removeSubdivision:t.lanes.subdivide,onClick:o(()=>a.children.length?n.removeSubdivision(a.name):n.subdivideLane(a.name),"onClick"),children:a.children.length?d.jsx(Vo,{}):d.jsx(Wo,{})}),m&&d.jsx("button",{title:t.lanes.removeLane,"aria-label":t.lanes.removeLane,onClick:o(()=>n.removeLane(a.name),"onClick"),children:d.jsx(rr,{})}),d.jsx("button",{title:t.lanes.insertAfter,"aria-label":t.lanes.insertAfter,onClick:o(()=>n.insertLane(a.name,"after"),"onClick"),children:d.jsx(Bo,{})})]}))}),d.jsxs(d.Fragment,{children:[d.jsx("div",{...jt(n,new S([e.x+e.width-4,e.y,8,e.height])),className:"lane__screenWidthResizeBar",onMouseDown:o(a=>n.diagram.getExtension(he).resizeWidth(n,a.nativeEvent),"onMouseDown")}),d.jsx("div",{...jt(n,new S([e.x+e.width-5,e.y+e.height/2-5,10,10])),className:"lane__screenWidthResize",onMouseDown:o(a=>n.diagram.getExtension(he).resizeWidth(n,a.nativeEvent),"onMouseDown")}),i.map(({lane:a,y:r,height:c})=>M.createElement("div",{...jt(n,new S([e.x,e.y+r+c-3,e.width,6])),key:`resize-${a.name}`,className:"lane__screenHeightResize",onMouseDown:o(l=>n.diagram.getExtension(he).resizeHeight(n,a.name,c,l.nativeEvent),"onMouseDown")}))]})]})});function Jt(n){return n.children.length?n.children.reduce((t,e)=>t+Jt(e),0):n.height}o(Jt,"laneHeight");function _n(n){return n.children.length?n.children.reduce((t,e)=>t+_n(e),0):1}o(_n,"leafCount");function br(n,t=0,e=0){const s=[];let i=e;return n.forEach(a=>{const r=Jt(a);s.push({lane:a,depth:t,y:i,height:r,siblingCount:n.length}),a.children.length&&s.push(...br(a.children,t+1,i)),i+=r}),s}o(br,"flattenLanes");function Qt(n,t,e=null){for(let s=0;s<n.length;s++){const i=n[s];if(i.name===t)return{lane:i,siblings:n,index:s,parent:e};const a=Qt(i.children,t,i);if(a)return a}return null}o(Qt,"findLane");function wr(n){const t=n.children.map(wr);if(t.length!==1)return{...n,children:t};const[e]=t;return{...n,height:Jt(e),children:e.children}}o(wr,"normalizeLane");function zc(n){return n.map(wr)}o(zc,"normalizeLanes");function vr(n,t){if(!n.children.length){const i=Math.max(yt.minimumLaneHeight,t);return n.height===i?!1:(n.height=i,!0)}let e=!1,s=t-Jt(n);for(let i=n.children.length-1;i>=0;i--){const a=n.children[i],r=Jt(a),c=_n(a)*yt.minimumLaneHeight,l=Math.max(c-r,s);if(e=vr(a,r+l)||e,s-=l,s>=0)break}return e}o(vr,"resizeLaneLeaves");const J=class J extends st{edgesAsGateways=!1;pools;constructor(t,e){super(t,{...e,label:"",zIndex:50,groupChildren:!0}),this.pools=[{label:this.labels.lanes.defaultLane,name:"default",height:J.laneHeight,children:[]}],g.makeObservable(this,{pools:g.observable,laneLayouts:g.computed,addPool:g.action,insertLane:g.action,subdivideLane:g.action,removeSubdivision:g.action,removeLane:g.action,resizeLane:g.action,renameLane:g.action,editionLaneId:g.observable}),this.classList.add("bpm__lanes"),this.state.box.width=J.minimumWidthInGrids*50,this._gateways.clear()}setDiagram(t){const e=this.pools.length===1&&this.pools[0].name==="default"&&this.pools[0].label===ft.lanes.defaultLane;super.setDiagram(t),e&&(this.pools[0].label=this.labels.lanes.defaultLane),this.state.box.width=Math.max(this.state.box.width,t.getExtension(G).gridSize*J.minimumWidthInGrids)}get box(){const t=this.pools.reduce((e,s)=>e+Jt(s),0);return new S([this.state.box.x,this.state.box.y,this.state.box.width,t])}get laneLayouts(){return br(this.pools)}get editingLaneId(){return this.editionLaneId}get labels(){return this.diagram?.bpmnLabels??ft}nextPool(t=[]){const e=new Set([...this.laneLayouts.map(({lane:i})=>i.name),...t]);let s=0;for(;e.has(`pool${s}`);)s++;return{label:`${this.labels.lanes.pool} ${s}`,name:`pool${s}`,height:J.laneHeight,children:[]}}addPool(){if(this.emit(new Gt(this)).cancelled)return this.pools.at(-1);const t=this.nextPool();return this.pools.push(t),t}insertLane(t,e){const s=Qt(this.pools,t);!s||this.emit(new Gt(this)).cancelled||s.siblings.splice(s.index+(e==="after"?1:0),0,this.nextPool())}subdivideLane(t){const e=Qt(this.pools,t);if(!e||e.lane.children.length||this.emit(new Gt(this)).cancelled)return;const s=this.nextPool(),i=this.nextPool([s.name]),a=Math.max(e.lane.height,J.minimumLaneHeight*2);s.height=a/2,i.height=a/2,e.lane.children=[s,i]}removeSubdivision(t){const e=Qt(this.pools,t);!e||!e.lane.children.length||this.emit(new Gt(this)).cancelled||(e.lane.height=Jt(e.lane),e.lane.children=[])}removeLane(t){const e=Qt(this.pools,t);!e||e.siblings.length<=1||e.parent&&e.siblings.length<=2||this.emit(new Gt(this)).cancelled||e.siblings.splice(e.index,1)}resizeLane(t,e,s){const i=Qt(this.pools,t);if(!i)return!1;const a=_n(i.lane)*J.minimumLaneHeight,r=s?Math.ceil(a/s)*s:a;return vr(i.lane,Math.max(e,r))}renameLane(t){if(Qt(this.pools,t)){if(!this.editionMode){const e=this.diagram?.getExtension(Ms);e?e.editNode(this):this.edit()}this.editionLaneId=t}}editionLaneId=null;previousPools=[];cancel(){this.editionLaneId=null,this.pools=this.previousPools,this.previousPools=[],super.cancel()}confirm(){return super.confirm()?(this.editionLaneId=null,this.previousPools=[],!0):!1}edit(){super.edit(),this.previousPools=Be(this.pools)}resetPools(){this.pools=[]}deserialize(t){super.deserialize(t),this.pools=zc(t.pools)}serialize(){return{...super.serialize(),pools:Be(this.pools)}}RenderScreen=$c;RenderOverlay=A.observer(()=>{const t=this.laneLayouts,e=this.box;return d.jsx("div",{...K(this),children:d.jsxs("svg",{className:"lane__svg",viewBox:`0 0 ${e.width} ${e.height}`,preserveAspectRatio:"none",children:[d.jsx("rect",{className:"lane__background",width:e.width,height:e.height}),t.map(({lane:s,depth:i,y:a,height:r})=>{const c=i*J.laneHeaderWidth,l=c+J.laneHeaderWidth,h=a;return d.jsxs("g",{children:[d.jsx("rect",{className:"lane__head",x:c,y:h,width:J.laneHeaderWidth,height:r,onDoubleClick:o(()=>this.renameLane(s.name),"onDoubleClick")}),d.jsx("rect",{className:"lane__content",x:l,y:h,width:Math.max(0,e.width-l),height:r})]},s.name)})]})})})};o(J,"Lanes"),kt(J,"laneHeaderWidth",50),kt(J,"laneHeight",250),kt(J,"laneHeaderFontSize",16),kt(J,"minimumLaneHeight",150),kt(J,"minimumWidthInGrids",10);let yt=J;const ya=class ya extends st{edgesAsGateways=!0;requiredEdgePathType="straight";constructor(t,e){super(t,{...e,box:e.box||new S([0,0,180,90])}),this.classList.add("bpmn__text_annotation"),this._gateways.clear(),this._gateways.set("left",new Ht(this,{id:"left",orientation:"left",position:new y([0,.5]),maxIncomingConnections:1/0,maxOutgoingConnections:0,radius:0,strokeWidth:0,fill:"transparent",stroke:"transparent"}))}get box(){const t=this.state.box,s=(this.diagram?.getExtension(G)?.gridSize??50)*6,i=Math.max(this.state.labelFontSize??14,12),a=i*.58,r=(this.state.label||" ").split(`
2
+ `),c=Math.max(...r.map(p=>p.length),1),l=Math.min(s,Math.max(t.width,c*a+28)),h=Math.max(1,Math.floor((l-28)/a)),u=r.reduce((p,m)=>p+Math.max(1,Math.ceil(m.length/h)),0),f=Math.min(s,Math.max(t.height,u*i*1.35+24));return new S([t.x,t.y,l,f])}serialize(){return{...super.serialize(),box:this.box.raw}}findAutomaticGatewayAnchor(t){return this.findAutomaticConnectionAnchor(t)}RenderOverlay=A.observer(()=>d.jsx("div",{...K(this),children:d.jsx("span",{className:"bpmn__annotation_bracket"})}))};o(ya,"TextAnnotationNode");let xt=ya;const Ye=[{id:"task",family:"task",section:"activities",priority:1,enabled:!0,connectable:!0},{id:"serviceTask",family:"task",section:"activities",priority:1,enabled:!0,connectable:!0},{id:"sendTask",family:"task",section:"activities",priority:4,enabled:!0,connectable:!0},{id:"receiveTask",family:"task",section:"activities",priority:4,enabled:!0,connectable:!0},{id:"scriptTask",family:"task",section:"activities",priority:3,enabled:!0,connectable:!0},{id:"manualTask",family:"task",section:"activities",priority:3,enabled:!0,connectable:!0},{id:"businessRuleTask",family:"task",section:"activities",priority:3,enabled:!0,connectable:!0},{id:"callActivity",family:"task",section:"activities",priority:1,enabled:!0,connectable:!0},{id:"subprocess",family:"task",section:"activities",priority:3,enabled:!0,connectable:!0},{id:"eventSubprocess",family:"task",section:"activities",priority:3,enabled:!0,connectable:!0},{id:"start",family:"event",section:"events",priority:1,enabled:!0,connectable:!0},{id:"intermediate",family:"event",section:"events",priority:1,enabled:!1,connectable:!0},{id:"end",family:"event",section:"events",priority:1,enabled:!0,connectable:!0},{id:"timer",family:"event",section:"events",priority:1,enabled:!0,connectable:!0},{id:"messageCatch",family:"event",section:"events",priority:1,enabled:!0,connectable:!0},{id:"messageThrow",family:"event",section:"events",priority:1,enabled:!0,connectable:!0},{id:"signal",family:"event",section:"events",priority:3,enabled:!0,connectable:!0},{id:"compensation",family:"event",section:"events",priority:4,enabled:!0,connectable:!0},{id:"error",family:"event",section:"events",priority:2,enabled:!0,connectable:!0},{id:"conditional",family:"event",section:"events",priority:3,enabled:!0,connectable:!0},{id:"terminate",family:"event",section:"events",priority:2,enabled:!0,connectable:!0},{id:"exclusive",family:"gateway",section:"gateways",priority:1,enabled:!0,connectable:!0},{id:"inclusive",family:"gateway",section:"gateways",priority:1,enabled:!0,connectable:!0},{id:"parallel",family:"gateway",section:"gateways",priority:1,enabled:!0,connectable:!0},{id:"eventBased",family:"gateway",section:"gateways",priority:1,enabled:!0,connectable:!0},{id:"lanes",family:"lane",section:"support",priority:1,enabled:!0,connectable:!1},{id:"blackBoxPool",family:"lane",section:"support",priority:1,enabled:!0,connectable:!0},{id:"dataStore",family:"data",section:"support",priority:1,enabled:!0,connectable:!0},{id:"document",family:"data",section:"support",priority:1,enabled:!0,connectable:!0},{id:"documentAnnotation",family:"artifact",section:"support",priority:1,enabled:!0,connectable:!0},{id:"textAnnotation",family:"artifact",section:"support",priority:1,enabled:!0,connectable:!0}],Oc={start:{stage:"start",kind:"none",direction:"catch"},intermediate:{stage:"start",kind:"none",direction:"throw"},end:{stage:"end",kind:"none",direction:"throw"},timer:{stage:"intermediate",kind:"timer",direction:"catch"},messageCatch:{stage:"intermediate",kind:"message",direction:"catch"},messageThrow:{stage:"intermediate",kind:"message",direction:"throw"},signal:{stage:"intermediate",kind:"signal",direction:"catch"},compensation:{stage:"intermediate",kind:"compensation",direction:"catch"},error:{stage:"intermediate",kind:"error",direction:"catch"},conditional:{stage:"intermediate",kind:"conditional",direction:"catch"},terminate:{stage:"end",kind:"terminate",direction:"throw"}},Er={task:N.task,serviceTask:N.service,sendTask:N.send,receiveTask:N.receive,scriptTask:N.script,manualTask:N.manual,businessRuleTask:N.businessRule,callActivity:N.callActivity,subprocess:N.subprocess,eventSubprocess:N.eventSubprocess},Fc=new Map(Object.entries(Er).map(([n,t])=>[t,n]));function Hc(n,t){const e=Oc[t];if(!e)return null;if(t==="start"||t==="intermediate"||t==="end")return e;const s=Kt({...e,stage:n.stage})?n.stage:e.stage,i=Kt({...e,direction:n.direction})?n.direction:e.direction;return{...e,stage:s,direction:i}}o(Hc,"eventDefinitionForTarget");const xa=class xa{static enabled(){return Ye.filter(t=>t.enabled).sort((t,e)=>t.priority-e.priority)}static forNode(t){const e=this.idForNode(t);return Ye.find(s=>s.id===e)}static idForNode(t){if(t instanceof j)return Fc.get(t.type)??"task";if(t instanceof D)return t.kind==="none"?t.stage:t.kind==="message"?t.isCatching?"messageCatch":"messageThrow":t.kind;if(t instanceof W)return t.type===H.inclusive?"inclusive":t.type===H.parallel?"parallel":t.type===H.eventBased?"eventBased":"exclusive";if(t instanceof yt)return"lanes";if(t instanceof Mt)return"blackBoxPool";if(t instanceof Lt)return"dataStore";if(t instanceof $t)return"document";if(t instanceof mt)return"documentAnnotation";if(t instanceof xt)return"textAnnotation"}static create(t,e,s){const i={id:e,label:s,movable:!0};switch(t){case"task":return new j(null,{...i,type:N.task});case"serviceTask":return new j(null,{...i,type:N.service});case"sendTask":return new j(null,{...i,type:N.send});case"receiveTask":return new j(null,{...i,type:N.receive});case"scriptTask":return new j(null,{...i,type:N.script});case"manualTask":return new j(null,{...i,type:N.manual});case"businessRuleTask":return new j(null,{...i,type:N.businessRule});case"callActivity":return new j(null,{...i,type:N.callActivity});case"subprocess":return new j(null,{...i,type:N.subprocess});case"eventSubprocess":return new j(null,{...i,type:N.eventSubprocess});case"start":return new D(null,{...i,type:T.start});case"intermediate":return new D(null,{...i,type:T.intermediate});case"end":return new D(null,{...i,type:T.end});case"timer":return new D(null,{...i,type:T.timer});case"messageCatch":return new D(null,{...i,type:T.messageCatch});case"messageThrow":return new D(null,{...i,type:T.messageThrow});case"signal":return new D(null,{...i,type:T.signalCatch});case"compensation":return new D(null,{...i,type:T.compensationCatch});case"error":return new D(null,{...i,type:T.errorCatch});case"conditional":return new D(null,{...i,type:T.conditional});case"terminate":return new D(null,{...i,type:T.terminate});case"inclusive":return new W(null,{...i,type:H.inclusive});case"parallel":return new W(null,{...i,type:H.parallel});case"eventBased":return new W(null,{...i,type:H.eventBased});case"lanes":return new yt(null,{id:e});case"blackBoxPool":return new Mt(null,i);case"dataStore":return new Lt(null,i);case"document":return new $t(null,i);case"documentAnnotation":return new mt(null,i);case"textAnnotation":return new xt(null,i);default:return new W(null,{...i,type:H.exclusive})}}static transform(t,e){const s=this.forNode(t),i=Ye.find(a=>a.id===e);if(!s||!i||s.family!==i.family||!i.enabled)return!1;if(t instanceof j){const a=Er[e];return a===void 0?!1:t.setType(a)}if(t instanceof D){const a=Hc(t,e);return!a||t.attachedToTaskId&&!["timer","message","signal","compensation","error","conditional"].includes(a.kind)?!1:t.setDefinition(a)}return t instanceof W?(t.setType(e==="inclusive"?H.inclusive:e==="parallel"?H.parallel:e==="eventBased"?H.eventBased:H.exclusive),!0):!1}};o(xa,"BPMNElementCatalog");let at=xa;const ts=class ts extends Xt{kind;condition;defaultFlow;directedFlow;get isDefault(){return this.defaultFlow}get isDirected(){return this.kind==="association"||this.directedFlow}get supportsDirection(){return this.kind==="messageFlow"}get supportsDefaultFlow(){const t=this.state.from?.parent;return this.kind==="sequenceFlow"&&!!this.state.to&&t instanceof W&&(t.type===H.exclusive||t.type===H.inclusive)}constructor(t,e){super(t,e),this.kind=e.kind??(e.to?ts.inferKind(e.from.parent,e.to.parent):null)??"sequenceFlow",this.condition=e.condition??"",this.defaultFlow=!1,this.directedFlow=e.isDirected??this.supportsDirection,g.makeObservable(this,{kind:g.observable,condition:g.observable,defaultFlow:g.observable,directedFlow:g.observable,isDefault:g.computed,isDirected:g.computed,supportsDirection:g.computed,supportsDefaultFlow:g.computed,setKind:g.action,setDefault:g.action,setDirected:g.action,reverseDirection:g.action}),this.setDefault(e.isDefault===!0)}static inferKind(t,e){return t instanceof xt||e instanceof xt||t instanceof mt||e instanceof mt?"association":(t instanceof Lt||t instanceof $t)&&e instanceof j?"inputDataAssociation":t instanceof j&&(e instanceof Lt||e instanceof $t)?"outputDataAssociation":t instanceof Mt&&(e instanceof Mt||e instanceof j||e instanceof D||e instanceof W)||e instanceof Mt&&(t instanceof j||t instanceof D||t instanceof W)||t instanceof D&&t.kind==="message"&&!t.isCatching&&(e instanceof j||e instanceof D||e instanceof W)?"messageFlow":(t instanceof j||t instanceof D||t instanceof W)&&(e instanceof j||e instanceof D||e instanceof W)?t instanceof D&&t.isEnd||e instanceof D&&(e.isStart||e.attachedToTaskId)||t instanceof W&&t.type===H.eventBased&&!(e instanceof D&&e.isCatching&&["message","timer","signal","conditional"].includes(e.kind)||e instanceof j&&e.type===N.receive)?null:"sequenceFlow":null}setKind(t){const e=this.supportsDirection;this.kind=t,!e&&this.supportsDirection&&(this.directedFlow=!0),this.supportsDefaultFlow||(this.defaultFlow=!1),this.applyStyle()}setDefault(t){const e=t&&this.supportsDefaultFlow;return e&&this.clearOtherDefaultFlows(),this.defaultFlow=e,this.applyStyle(),e===t}setDirected(t){return this.supportsDirection?(this.directedFlow=t,this.applyStyle(),!0):!1}applyResolvedAnchors(t,e){const s=this.defaultFlow;super.applyResolvedAnchors(t,e),s&&this.setDefault(!0)}reverseDirection(){const t=this.defaultFlow;this.defaultFlow=!1;const e=this.state.from,s=this.state.to;e.removeOutgoingEdge(this),s.removeIncomingEdge(this),this.state.from=s,this.state.to=e,this.state.steps.reverse(),[this.state.startAnchor,this.state.endAnchor]=[this.state.endAnchor,this.state.startAnchor],[this.state.displacementStart,this.state.displacementEnd]=[this.state.displacementEnd,this.state.displacementStart],s.addOutgoingEdge(this,!1),e.addIncomingEdge(this),this.kind==="inputDataAssociation"?this.kind="outputDataAssociation":this.kind==="outputDataAssociation"&&(this.kind="inputDataAssociation"),t?this.setDefault(!0):this.applyStyle()}clearOtherDefaultFlows(){const t=this.from.parent;t instanceof W&&t.gateways.forEach(e=>e.outgoingEdges.forEach(s=>{s instanceof ts&&s!==this&&s.isDefault&&s.setDefault(!1)}))}applyStyle(){this.state.arrowSize=10,this.state.arrowHeadStart="none",this.state.arrowHeadEnd="arrow",this.state.lineStyle="solid",this.kind==="messageFlow"?(this.state.arrowHeadStart="circle-small",this.state.arrowHeadEnd=this.isDirected?"triangle":"none",this.state.lineStyle="dashed"):this.kind==="inputDataAssociation"||this.kind==="outputDataAssociation"?(this.state.arrowHeadEnd="arrow-open",this.state.lineStyle="dashed"):this.kind==="association"&&(this.state.arrowHeadEnd="arrow-open",this.state.lineStyle="dashed"),this.defaultFlow&&this.supportsDefaultFlow&&(this.state.arrowHeadStart="default-flow")}serialize(){return{...super.serialize(),kind:this.kind,condition:this.condition,isDefault:this.isDefault,isDirected:this.isDirected}}deserialize(t){super.deserialize(t),this.kind=t.kind,this.condition=t.condition,this.defaultFlow=!1,this.directedFlow=t.isDirected??this.supportsDirection,this.setDefault(t.isDefault===!0)}};o(ts,"BPMNEdge");let zt=ts;function _r(n){return n.normalize("NFD").replace(new RegExp("\\p{Diacritic}","gu"),"").toLowerCase()}o(_r,"normalizeSearchValue");function Sr({items:n,labels:t,onSelect:e,selectedId:s}){const[i,a]=M.useState(""),r=_r(i.trim()),c=r?n.filter(l=>_r(t.elements[l.id]).includes(r)):n;return d.jsxs("div",{className:"bpmn__element_menu bpmn__element_menu--searchable",children:[d.jsx("input",{"aria-label":t.inputs.elementSearch,className:"bpmn__element_menu_search",onChange:o(l=>a(l.target.value),"onChange"),onMouseDown:o(l=>l.stopPropagation(),"onMouseDown"),placeholder:t.inputs.elementSearch,type:"search",value:i}),d.jsx("div",{className:"bpmn__element_menu_items",role:"menu",children:c.map(l=>d.jsxs("button",{className:"bpmn__element_menu_item","aria-current":l.id===s?"true":void 0,onClick:o(()=>e(l),"onClick"),role:"menuitem",type:"button",children:[d.jsx(Nt,{id:l.id}),d.jsx("span",{children:t.elements[l.id]})]},l.id))})]})}o(Sr,"BPMNElementMenu");const te=8;function Bc(n,t,e,s){const i=e.width-n.right,a=n.left,r=i<t.width+te&&a>i,c=r?n.left-t.width:n.right,l=c+t.width;let h=e.height-t.height-te;s&&l>s.left-te&&c<s.right+te&&(h=Math.min(h,s.top-t.height-te));const u=Math.min(Math.max(n.top-4,te),Math.max(te,h));return{left:r,top:u-n.top}}o(Bc,"resolveToolbarMenuPlacement");function Gc(n,t,e){const s=e.copy(!1).substract(t),i=s.x**2+s.y**2;if(i<.001)return t.copy(!1);const a=n.copy(!1).substract(t),r=Math.max(0,Math.min(1,(a.x*s.x+a.y*s.y)/i));return t.copy(!1).sum(s.multiply(r))}o(Gc,"closestPointOnSegment");function Rc(n,t,e){const s=t.middle;let i=n[0]?.copy(!1)??s,a=i.distance(s);for(let l=0;l<n.length-1;l+=1){const h=Gc(s,n[l],n[l+1]),u=h.distance(s);u<a&&(i=h,a=u)}const r=Math.min(e,t.width/2),c=Math.min(e,t.height/2);return i.x=Math.max(t.x+r,Math.min(t.x+t.width-r,i.x)),i.y=Math.max(t.y+c,Math.min(t.y+t.height-c,i.y)),i}o(Rc,"resolveVisibleEdgeToolbarAnchor");function Mr(n){n.preventDefault(),n.stopPropagation(),n.nativeEvent.stopImmediatePropagation()}o(Mr,"stopToolEvent");function Vc(n){if(!/(?:^| )(?:bpmn__event|bpmn__gate|bpmn__data_store|bpmn__document)(?: |$)/.test(n.classList.string))return!1;const t=n.box.middle,e=n.labelScreenBox.middle,s=e.x-t.x,i=e.y-t.y;return s>0&&Math.abs(s)>Math.abs(i)}o(Vc,"isRightExternalLabel");function Sn({children:n,icon:t,label:e,onDragStart:s}){const[i,a]=M.useState(!1),[r,c]=M.useState({left:!1,top:-4}),l=M.useRef(null),h=M.useRef(null),u=M.useRef(()=>{}),f=M.useRef(!1),p=M.useRef(null);M.useEffect(()=>()=>{l.current!==null&&window.clearTimeout(l.current),h.current!==null&&window.clearTimeout(h.current),u.current()},[]),M.useLayoutEffect(()=>{if(!i||!p.current)return;const E=p.current.querySelector(".bpmn__element_menu");if(!E)return;const C=p.current.getBoundingClientRect(),k=E.getBoundingClientRect(),P=document.querySelector(".toolbar")?.getBoundingClientRect();c(Bc(C,k,{width:window.innerWidth,height:window.innerHeight},P))},[i]);const m=o(()=>{l.current!==null&&window.clearTimeout(l.current),h.current!==null&&window.clearTimeout(h.current),l.current=null,h.current=null},"clearTimers"),x=o(()=>{m(),a(!0)},"show"),b=o(()=>{i||l.current!==null||(h.current!==null&&window.clearTimeout(h.current),h.current=null,l.current=window.setTimeout(()=>{l.current=null,a(!0)},250))},"showAfterDelay"),w=o(()=>{m(),h.current=window.setTimeout(()=>a(!1),180)},"hideSoon"),v=o(E=>{if(!s||E.button!==0)return;u.current();const C=E.clientX,k=E.clientY,P=E,I=o(()=>{document.removeEventListener("mousemove",B),document.removeEventListener("mouseup",I),u.current=()=>{}},"cleanup"),B=o(X=>{if((X.buttons&1)===0){I();return}Math.hypot(X.clientX-C,X.clientY-k)<5||(I(),f.current=!0,s(P))},"handleMouseMove");u.current=I,document.addEventListener("mousemove",B),document.addEventListener("mouseup",I)},"prepareDrag"),_=o(()=>{if(f.current){f.current=!1;return}x()},"handleClick");return d.jsxs("div",{className:`bpmn__toolbar_group${i?" bpmn__toolbar_group--open":""}${r.left?" bpmn__toolbar_group--menu-left":""}`,onBlurCapture:w,onFocusCapture:x,onMouseEnter:b,onMouseLeave:w,ref:p,style:{"--bpmn-menu-top":`${r.top}px`},children:[d.jsx("button",{"aria-expanded":i,"aria-label":e,onClick:_,onMouseDown:v,title:e,type:"button",children:t}),n]})}o(Sn,"ToolbarGroup");const kr=A.observer(({extension:n})=>{const t=n.labels;return d.jsx("div",{className:"bpmn__toolbar_group",children:d.jsx("button",{"aria-label":t.actions.settings,"aria-pressed":n.propertiesPanelOpen,className:`tool${n.propertiesPanelOpen?" selected":""}`,onClick:o(()=>n.togglePropertiesPanel(),"onClick"),title:t.actions.settings,type:"button",children:d.jsx(Nt,{id:"settings"})})})}),Yc=A.observer(({diagram:n,extension:t})=>{const e=t.labels,s=n.getExtension(Y),i=s.selectedNodes,a=s.selectedEdges;return t.dragging||t.connecting||i.length+a.length!==1?null:d.jsxs(d.Fragment,{children:[i.map(r=>{if(r instanceof yt)return null;const c=t.transformTargets(r),l=at.forNode(r),h=t.shapeOptions(r),u=t.connectionTargets(r),f=r instanceof St&&Vc(r),p=f?r.labelScreenBox:null,m=p?new S([p.x+p.width/2,p.y+p.height+8,1,1]):new S([r.box.x+r.box.width+10,r.box.y+r.box.height/2,1,1]);return M.createElement("div",{...jt(r,m),className:`bpmn__selection_toolbar${f?" bpmn__selection_toolbar--below-external-label":""}`,"data-diagram-interactive-ui":"true",key:r.id,onMouseDown:Mr},c.length>0&&d.jsx(Sn,{icon:d.jsx(Nt,{id:"transform"}),label:e.actions.transform,children:d.jsx(Sr,{items:h,labels:e,onSelect:o(x=>t.transform(r,x.id),"onSelect"),selectedId:l?.id})}),u.length>0&&d.jsx(Sn,{icon:d.jsx(Nt,{id:"connect"}),label:e.actions.connect,onDragStart:o(x=>t.startToolbarConnection(r,x),"onDragStart"),children:d.jsx(Sr,{items:u,labels:e,onSelect:o(x=>t.appendConnected(r,x.id),"onSelect")})}),d.jsx(kr,{extension:t}))}),a.map(r=>{if(!(r instanceof zt)||r.steps.length===0)return null;const c=n.canvas.inverseFit(n.canvas.frameDimensions),l=Rc(r.steps,c,48/Math.max(n.canvas.scale,.001)),h={"--screen-renderer-x":`${l.x}px`,"--screen-renderer-y":`${l.y}px`,"--screen-renderer-width":"1px","--screen-renderer-height":"1px","--screen-renderer-z-index":140};return d.jsxs("div",{className:"bpmn__selection_toolbar bpmn__selection_toolbar--edge","data-diagram-interactive-ui":"true",onMouseDown:Mr,style:h,children:[d.jsx(Sn,{icon:d.jsx(Nt,{id:"transform"}),label:e.actions.transform,children:d.jsx("div",{className:"bpmn__element_menu",role:"menu",children:t.edgeKindOptions(r).filter(u=>u!==r.kind).map(u=>d.jsxs("button",{className:"bpmn__element_menu_item",onClick:o(()=>t.changeEdgeKind(r,u),"onClick"),role:"menuitem",type:"button",children:[d.jsx(Nt,{id:"connect"}),d.jsx("span",{children:e.edges[u]})]},u))})}),d.jsx("div",{className:"bpmn__toolbar_group",children:d.jsx("button",{"aria-label":e.actions.reverseDirection,onClick:o(()=>t.reverseEdge(r),"onClick"),title:e.actions.reverseDirection,type:"button",children:d.jsx(Jo,{"aria-hidden":"true"})})}),d.jsx(kr,{extension:t})]},r.id)})]})}),Wc=["orthogonal","straight","curved"],Zc=["message","timer","error","signal","compensation","conditional"],Xc=A.observer(({diagram:n,extension:t})=>{const e=n.getExtension(Y),s=e.selectedNodes.length===1?e.selectedNodes[0]:null,i=e.selectedEdges.length===1?e.selectedEdges[0]:null,a=t.propertiesPanelOpen&&!!(s||i)&&!t.dragging,r=s?at.forNode(s):void 0,c=s?t.shapeOptions(s):[],l=t.labels;return d.jsxs("aside",{"aria-hidden":!a,className:`bpmn__properties_panel${a?" bpmn__properties_panel--open":""}`,children:[d.jsxs("header",{children:[d.jsxs("div",{children:[d.jsx("span",{children:l.properties.title}),d.jsx("strong",{children:r?l.elements[r.id]:i instanceof zt?l.edges[i.kind]:""})]}),d.jsx("button",{"aria-label":l.actions.close,onClick:o(()=>t.closePropertiesPanel(),"onClick"),title:l.actions.close,type:"button",children:"×"})]}),s&&r&&d.jsxs("div",{className:"bpmn__properties_fields",children:[d.jsxs("label",{children:[d.jsx("span",{children:l.properties.name}),d.jsx("textarea",{onChange:o(h=>t.renameNode(s,h.target.value),"onChange"),value:s.state.label})]}),!(s instanceof D)&&c.length>1&&d.jsxs("label",{children:[d.jsx("span",{children:l.properties.type}),d.jsx("select",{onChange:o(h=>t.transform(s,h.target.value),"onChange"),value:r.id,children:c.map(h=>h&&d.jsx("option",{value:h.id,children:l.elements[h.id]},h.id))})]}),s instanceof D&&d.jsxs(d.Fragment,{children:[d.jsxs("label",{children:[d.jsx("span",{children:l.properties.eventType}),d.jsx("select",{onChange:o(h=>t.changeEventKind(s,h.target.value),"onChange"),value:s.kind,children:t.eventKindOptions(s).map(h=>d.jsx("option",{value:h,children:l.elements[h==="none"?"event":h]},h))})]}),d.jsxs("label",{children:[d.jsx("span",{children:l.properties.eventStage}),d.jsx("select",{onChange:o(h=>t.changeEventStage(s,h.target.value),"onChange"),value:s.stage,children:t.eventStageOptions(s).map(h=>d.jsx("option",{value:h,children:l.eventOptions[h]},h))})]}),s.kind!=="none"&&d.jsxs("label",{children:[d.jsx("span",{children:l.properties.eventDirection}),d.jsx("select",{onChange:o(h=>t.changeEventDirection(s,h.target.value),"onChange"),value:s.direction,children:t.eventDirectionOptions(s).map(h=>d.jsx("option",{value:h,children:l.eventOptions[h]},h))})]}),s.attachedToTaskId&&d.jsxs("label",{className:"bpmn__properties_checkbox",children:[d.jsx("input",{checked:s.interrupting,onChange:o(h=>t.changeEventInterrupting(s,h.target.checked),"onChange"),type:"checkbox"}),d.jsx("span",{children:l.properties.interrupting})]})]}),s instanceof j&&d.jsxs(d.Fragment,{children:[s.type===N.eventSubprocess&&d.jsxs("label",{children:[d.jsx("span",{children:l.properties.eventSubprocessStartType}),d.jsxs("select",{onChange:o(h=>t.changeEventSubprocessStartKind(s,h.target.value),"onChange"),value:t.eventSubprocessStartKind(s),children:[d.jsx("option",{disabled:!0,value:"",children:l.eventOptions.none}),Zc.map(h=>d.jsx("option",{value:h,children:l.elements[h]},h))]})]}),d.jsxs("label",{className:"bpmn__properties_checkbox",children:[d.jsx("input",{checked:s.loop,onChange:o(h=>t.changeTaskLoop(s,h.target.checked),"onChange"),type:"checkbox"}),d.jsx("span",{children:l.properties.loop})]}),d.jsxs("label",{className:"bpmn__properties_checkbox",children:[d.jsx("input",{checked:s.multiInstance==="parallel",onChange:o(h=>t.changeTaskMultiInstance(s,h.target.checked?"parallel":"none"),"onChange"),type:"checkbox"}),d.jsx("span",{children:l.properties.multiInstance})]})]})]}),i instanceof zt&&d.jsxs("div",{className:"bpmn__properties_fields",children:[d.jsxs("label",{children:[d.jsx("span",{children:l.properties.name}),d.jsx("input",{onChange:o(h=>t.renameEdge(i,h.target.value),"onChange"),type:"text",value:i.labels[0]?.text??""})]}),d.jsxs("label",{children:[d.jsx("span",{children:l.properties.edgeType}),d.jsx("select",{onChange:o(h=>t.changeEdgeKind(i,h.target.value),"onChange"),value:i.kind,children:t.edgeKindOptions(i).map(h=>d.jsx("option",{value:h,children:l.edges[h]},h))})]}),d.jsxs("label",{children:[d.jsx("span",{children:l.properties.routingType}),d.jsx("select",{onChange:o(h=>t.changeEdgePathType(i,h.target.value),"onChange"),value:i.pathType,children:Wc.map(h=>d.jsx("option",{value:h,children:l.routing[h]},h))})]}),t.supportsCondition(i)&&d.jsxs("label",{children:[d.jsx("span",{children:l.properties.condition}),d.jsx("textarea",{onChange:o(h=>t.changeEdgeCondition(i,h.target.value),"onChange"),rows:4,value:i.condition})]}),t.supportsDefaultFlow(i)&&d.jsxs("label",{className:"bpmn__properties_checkbox",children:[d.jsx("input",{checked:i.isDefault,onChange:o(h=>t.changeEdgeDefault(i,h.target.checked),"onChange"),type:"checkbox"}),d.jsx("span",{children:l.properties.defaultFlow})]}),i.supportsDirection&&d.jsxs("label",{className:"bpmn__properties_checkbox",children:[d.jsx("input",{checked:i.isDirected,onChange:o(h=>t.changeEdgeDirected(i,h.target.checked),"onChange"),type:"checkbox"}),d.jsx("span",{children:l.properties.directed})]})]})]})});function qc(n,t,e){if(!(t instanceof xt||t instanceof mt)||!(t instanceof xt&&e==="documentAnnotation"||t instanceof mt&&e==="textAnnotation"))return null;const s=new Set(t.gateways.flatMap(a=>[...a.incomingEdges,...a.outgoingEdges])),i=at.create(e,t.id,t.state.label);return g.runInAction(()=>{i.state={...t.state,box:t.box,selected:!1},n.delete(t),n.add(i),s.forEach(a=>{const r=a.from.parent===t?i.findAutomaticGatewayAnchor(a.to.parent===t?i.box.middle:a.to.parent.box.middle):a.resolveEndpointAnchor("from"),c=a.to.parent===t?i.findAutomaticGatewayAnchor(a.from.parent===t?i.box.middle:a.from.parent.box.middle):a.resolveEndpointAnchor("to");a.applyResolvedAnchors(r,c),a.setEndpointAnchor("from",a.startAnchor.mode==="automatic"?{mode:"automatic"}:{mode:"fixed",position:r.relativePosition},!1),a.setEndpointAnchor("to",a.endAnchor.mode==="automatic"?{mode:"automatic"}:{mode:"fixed",position:c.relativePosition},!1),a.parent=n,n.connectWithEdge(a.from,a.to,a),a.from.recomputeConnectedEdge(a,"from")})}),i}o(qc,"transformBPMNArtifact");const We=new Set(["task","event","gateway"]),Uc=["sequenceFlow","messageFlow","inputDataAssociation","outputDataAssociation","association"],Ar=["start","intermediate","end"],Pr=["catch","throw"],Kc=["none","message","timer","error","signal","compensation","conditional","terminate"],Cr={none:{stage:"start",kind:"none",direction:"catch"},message:{stage:"intermediate",kind:"message",direction:"catch"},timer:{stage:"intermediate",kind:"timer",direction:"catch"},error:{stage:"intermediate",kind:"error",direction:"catch"},signal:{stage:"intermediate",kind:"signal",direction:"catch"},compensation:{stage:"intermediate",kind:"compensation",direction:"catch"},conditional:{stage:"intermediate",kind:"conditional",direction:"catch"},terminate:{stage:"end",kind:"terminate",direction:"throw"}},Ir=new Set(["message","timer","error","signal","compensation","conditional"]),Mn=new Set(["message","timer","error","signal","compensation","conditional"]),kn="bpmn-properties-panel-open",Jc=24,ba=class ba extends z{dragging=!1;propertiesPanelOpen=!1;RenderDiagram=Yc;RenderUI=Xc;labelConfiguration=bn();get labels(){return this.labelConfiguration??ft}configureLabels(t){this.labelConfiguration=bn(t,this.labels)}init(){g.makeObservable(this,{dragging:g.observable,labelConfiguration:g.observable.ref,propertiesPanelOpen:g.observable,configureLabels:g.action}),typeof window<"u"&&(this.propertiesPanelOpen=window.localStorage.getItem(kn)==="true"),this.diagram.registerClass(zt),this.diagram.setDefaultEdge(zt),this.diagram.onEvent(Se,t=>{zt.inferKind(t.origin,t.target)||t.cancel()}),this.diagram.onEvent(ht,()=>{g.runInAction(()=>{this.dragging=!0})}),this.diagram.onEvent(tt,()=>{g.runInAction(()=>{this.dragging=!1})})}transformTargets(t){const e=at.forNode(t);if(!e)return[];const s=t.gateways.some(a=>a.incomingEdges.length),i=t.gateways.some(a=>a.outgoingEdges.length);return at.enabled().filter(a=>!(a.family!==e.family||a.id===e.id||a.id==="start"&&s||(a.id==="end"||a.id==="terminate")&&i||t instanceof D&&t.attachedToTaskId&&!["timer","messageCatch","signal","compensation","error","conditional"].includes(a.id)))}shapeOptions(t){const e=at.forNode(t);if(!e)return[];const s=new Set([e.id,...this.transformTargets(t).map(i=>i.id)]);return at.enabled().filter(i=>s.has(i.id))}transform(t,e){if(!this.transformTargets(t).some(a=>a.id===e))return!1;this.emit(new Z(this));const s=qc(this.diagram,t,e);if(s)return t.selected&&this.diagram.getExtension(Y).selectNode(s),!0;const i=at.transform(t,e);return i&&t instanceof W&&t.gateways.forEach(a=>a.outgoingEdges.forEach(r=>{r instanceof zt&&!r.supportsDefaultFlow&&r.setDefault(!1)})),i}connectionTargets(t){const e=at.idForNode(t);return e?at.enabled().filter(s=>{if(!s.connectable)return!1;const i=this.inferDefinitionKind(e,s.id);return!(!i||t instanceof D&&t.isEnd&&i==="sequenceFlow")}):[]}inferDefinitionKind(t,e){const s=Ye.find(a=>a.id===t),i=Ye.find(a=>a.id===e);return!s||!i?null:s.family==="artifact"||i.family==="artifact"?"association":s.family==="data"&&i.family==="task"?"inputDataAssociation":s.family==="task"&&i.family==="data"?"outputDataAssociation":t==="blackBoxPool"&&(e==="blackBoxPool"||We.has(i.family))||e==="blackBoxPool"&&We.has(s.family)||t==="messageThrow"&&We.has(i.family)?"messageFlow":!We.has(s.family)||!We.has(i.family)||t==="end"||t==="terminate"||e==="start"||t==="eventBased"&&!["messageCatch","timer","signal","conditional","receiveTask"].includes(e)?null:"sequenceFlow"}appendConnected(t,e){if(!this.connectionTargets(t).some(f=>f.id===e))return null;const s=Pe(this.diagram,e),i=at.create(e,s,this.labels.elements[e]);this.diagram.add(i);const a=this.diagram.getExtension(G).gridSize,r=new y([t.box.x+t.box.width+a,t.box.y+t.box.height/2-i.box.height/2]),c=this.nearestAvailablePosition(i,r);if(!c)return this.diagram.delete(i),null;i.setPosition(c,{updateConnectedEdges:!1});const l=t.getGateway("right"),h=i.getGateway("left");if(!l||!h)return this.diagram.delete(i),null;this.diagram.connect(l,h,{startAnchor:{mode:"automatic",position:l.relativePosition},endAnchor:e==="textAnnotation"||e==="documentAnnotation"?{mode:"automatic"}:void 0});const u=this.diagram.getExtension(Y);return u.clearSelection(),u.selectNode(i),this.diagram.canvas.centerOnPoint(t.box.middle.copy().sum(i.box.middle).divide(2),!0),i}nearestAvailablePosition(t,e){const s=this.diagram.getExtension(G).gridSize,i=this.diagram.nodes.filter(c=>c!==t&&c.state.groupChildren!==!0).map(c=>c.box.inflate(s));let a=null,r=Number.POSITIVE_INFINITY;for(let c=0;c<=Jc;c+=1){const l=[];for(let u=-c;u<=c;u+=1)for(let f=-c;f<=c;f+=1)Math.max(Math.abs(u),Math.abs(f))===c&&l.push([u,f]);l.sort((u,f)=>{const p=u[0]**2+u[1]**2,m=f[0]**2+f[1]**2;return p!==m?p-m:this.placementDirectionRank(u)-this.placementDirectionRank(f)}),l.forEach(([u,f])=>{const p=e.copy(!1).sum([u*s,f*s]),m=p.toDimensions(t.box.size);if(!(m.x>=0&&m.y>=0&&m.x+m.width<=this.diagram.canvas.size.x&&m.y+m.height<=this.diagram.canvas.size.y)||i.some(w=>w.collides(m)))return;const b=(u*s)**2+(f*s)**2;b<r&&(a=p,r=b)});const h=(c+1)*s;if(a&&h**2>r)return a}return a}placementDirectionRank([t,e]){return e===0&&t>=0?0:t===0&&e>0?1:t===0&&e<0?2:t>=0?3:4}startToolbarConnection(t,e){this.diagram.getExtension(de).startConnectionFromNode(t,e,"automatic")}get connecting(){return this.diagram.getExtension(de).connecting}renameNode(t,e){this.emit(new Z(this)),g.runInAction(()=>t.setState("label",e))}acceptsEventDefinition(t,e){return!Kt(e)||t.attachedToTaskId&&!Ir.has(e.kind)?!1:!t.subprocessStart||Mn.has(e.kind)}eventKindOptions(t){return Kc.filter(e=>t.attachedToTaskId&&!Ir.has(e)?!1:!t.subprocessStart||Mn.has(e))}eventDefinitionForKind(t,e){const s=Cr[e],i=Pr.some(r=>Kt({kind:e,stage:t.stage,direction:r}))?t.stage:s.stage,a=Ar.some(r=>Kt({kind:e,stage:r,direction:t.direction}))?t.direction:s.direction;return{kind:e,stage:i,direction:a}}changeEventKind(t,e){if(!this.eventKindOptions(t).includes(e))return!1;const s=this.eventDefinitionForKind(t,e);return this.acceptsEventDefinition(t,s)?(this.emit(new Z(this)),t.setDefinition(s)):!1}eventStageOptions(t){return Ar.filter(e=>this.acceptsEventDefinition(t,{...t.definition,stage:e}))}eventDirectionOptions(t){return Pr.filter(e=>this.acceptsEventDefinition(t,{...t.definition,direction:e}))}changeEventStage(t,e){const s={...t.definition,stage:e};return this.acceptsEventDefinition(t,s)?(this.emit(new Z(this)),t.setDefinition(s)):!1}changeEventDirection(t,e){const s={...t.definition,direction:e};return this.acceptsEventDefinition(t,s)?(this.emit(new Z(this)),t.setDefinition(s)):!1}changeEventInterrupting(t,e){t.attachedToTaskId&&(this.emit(new Z(this)),g.runInAction(()=>t.setInterrupting(e)))}eventSubprocessStart(t){return this.diagram.nodes.find(e=>e instanceof D&&e.subprocessStart&&e.subprocessId===t.id)??null}containedEventCandidate(t){return this.diagram.nodes.find(e=>e instanceof D&&!e.attachedToTaskId&&!e.subprocessStart&&t.box.x<=e.box.x&&t.box.y<=e.box.y&&t.box.x+t.box.width>=e.box.x+e.box.width&&t.box.y+t.box.height>=e.box.y+e.box.height)??null}eventSubprocessStartKind(t){return this.eventSubprocessStart(t)?.kind??""}changeEventSubprocessStartKind(t,e){if(t.type!==N.eventSubprocess||!Mn.has(e))return null;const s=this.eventSubprocessStart(t)??this.containedEventCandidate(t);if(this.emit(new Z(this)),s)return s.setDefinition(this.eventDefinitionForKind(s,e))&&s.setSubprocessStart(!0,t.id)?s:null;const i=new D(null,{eventDefinition:Cr[e],id:Pe(this.diagram,"eventSubprocessStart"),label:this.labels.elements[e],subprocessId:t.id,subprocessStart:!0});return this.diagram.add(i),i.setPosition(new y([Math.min(t.box.x+25,t.box.x+t.box.width-i.box.width),Math.min(t.box.y+50,t.box.y+t.box.height-i.box.height)]),{updateConnectedEdges:!1}),i}changeTaskMultiInstance(t,e){return this.emit(new Z(this)),t.setMultiInstance(e)}changeTaskLoop(t,e){return this.emit(new Z(this)),t.setLoop(e)}renameEdge(t,e){this.emit(new Z(this)),g.runInAction(()=>t.setPrimaryLabel(e))}edgeKindOptions(t){const e=t.from.parent,s=t.to.parent;return e instanceof xt||s instanceof xt||e instanceof mt||s instanceof mt?["association"]:e instanceof Mt||s instanceof Mt?["messageFlow"]:e instanceof Lt||e instanceof $t?["inputDataAssociation"]:s instanceof Lt||s instanceof $t?["outputDataAssociation"]:Uc}changeEdgeKind(t,e){this.edgeKindOptions(t).includes(e)&&(this.emit(new Z(this)),g.runInAction(()=>t.setKind(e)))}reverseEdge(t){this.emit(new Z(this)),g.runInAction(()=>t.reverseDirection())}changeEdgePathType(t,e){this.emit(new Z(this)),g.runInAction(()=>t.setPathType(e))}changeEdgeCondition(t,e){this.emit(new Z(this)),g.runInAction(()=>{t.condition=e})}changeEdgeDefault(t,e){return t.isDefault===e?!0:e&&!this.supportsDefaultFlow(t)?!1:(this.emit(new Z(this)),t.setDefault(e))}changeEdgeDirected(t,e){!t.supportsDirection||t.isDirected===e||(this.emit(new Z(this)),g.runInAction(()=>t.setDirected(e)))}supportsDefaultFlow(t){return t.supportsDefaultFlow}supportsCondition(t){if(t.kind!=="sequenceFlow")return!1;const e=t.from.parent;return!(e instanceof W&&(e.type===H.parallel||e.type===H.eventBased))}togglePropertiesPanel(){g.runInAction(()=>{this.propertiesPanelOpen=!this.propertiesPanelOpen}),typeof window<"u"&&window.localStorage.setItem(kn,String(this.propertiesPanelOpen))}closePropertiesPanel(){g.runInAction(()=>{this.propertiesPanelOpen=!1}),typeof window<"u"&&window.localStorage.setItem(kn,"false")}};o(ba,"BPMNModelerExtension");let ue=ba;const wa=class wa extends He{constructor(t){super(t),this.registerExtension(Ve),this.registerExtension(he),this.registerExtension(Bt),this.registerExtension(js),this.registerExtension(ue),this.getExtension(ue).configureLabels(t?.labels??{}),this.registerExtension(En),this.registerClass(st),this.registerClass(j),this.registerClass(D),this.registerClass(W),this.registerClass(yt),this.registerClass(vn),this.registerClass(Mt),this.registerClass(Lt),this.registerClass($t),this.registerClass(mt),this.registerClass(xt)}get bpmnLabels(){return this.getExtension(ue).labels}configureLabels(t){this.getExtension(ue).configureLabels(t)}};o(wa,"BPMDiagram");let An=wa;const va=class va extends Xt{constructor(t,e){super(t,e),this.state.arrowHeadEnd=this.state.arrowHeadEnd??"arrow",this.state.arrowHeadStart=this.state.arrowHeadStart??"none",this.state.lineStyle=this.state.lineStyle??"solid",this.state.pathType=this.state.pathType??"orthogonal",this.state.strokeWidth=this.state.strokeWidth??2}};o(va,"CommunicationEdge");let Ts=va;const Ea=class Ea extends St{constructor(t,e){super(t,{...e,box:e.box??new S([0,0,180,96]),fill:e.fill,stroke:e.stroke,label:e.label??""}),this.classList.add("communication__node","diagram__node")}};o(Ea,"CommunicationNode");let Ze=Ea;const _a=class _a extends Ze{communicationNodeType="actor";constructor(t,e){super(t,{...e,box:e.box??new S([0,0,170,90]),fill:e.fill??"#0f2230",stroke:e.stroke??"#7dd3fc",label:e.label??"Actor"}),this.classList.add("communication__node--actor")}RenderOverlay=A.observer(()=>d.jsx("div",{...K(this),children:d.jsx("div",{className:"communication__node-badge",children:"Actor"})}))};o(_a,"CommunicationActorNode");let Ls=_a;const Sa=class Sa extends Ze{communicationNodeType="object";constructor(t,e){super(t,{...e,box:e.box??new S([0,0,190,96]),fill:e.fill??"#182412",stroke:e.stroke??"#bef264",label:e.label??"Object"}),this.classList.add("communication__node--object")}RenderOverlay=A.observer(()=>d.jsx("div",{...K(this),children:d.jsx("div",{className:"communication__node-badge",children:"Object"})}))};o(Sa,"CommunicationObjectNode");let $s=Sa;const Ma=class Ma extends Ze{communicationNodeType="controller";constructor(t,e){super(t,{...e,box:e.box??new S([0,0,200,100]),fill:e.fill??"#2b1618",stroke:e.stroke??"#fda4af",label:e.label??"Controller"}),this.classList.add("communication__node--controller")}RenderOverlay=A.observer(()=>d.jsx("div",{...K(this),children:d.jsx("div",{className:"communication__node-badge",children:"Controller"})}))};o(Ma,"CommunicationControllerNode");let zs=Ma;const ka=class ka extends He{constructor(t){super(t),this.registerClass(Ls),this.registerClass($s),this.registerClass(zs),this.registerClass(Ts),this.setDefaultEdge(Ts)}get selectedNodes(){return this.getExtension(Y).selectedNodes}get selectedEdges(){return this.getExtension(Y).selectedEdges}createNodeFromClientPoint(t,e,s){const i=this.canvas.inverseFit(new y([e,s]));return this.createNodeAtCanvasPoint(t,i.x,i.y)}createNodeAtCanvasPoint(t,e,s){const i=this.instantiateNode(t);this.add(i);const a=new y([e-i.box.width/2,s-i.box.height/2]);return i.setPosition(a),this.getExtension(Y).clearSelection(),this.getExtension(Y).selectNode(i),i}createNodeInViewportCenter(t){const e=this.canvas.frameDimensions,s=new y([e.x+e.width/2,e.y+e.height/2]);return this.createNodeFromClientPoint(t,s.x,s.y)}instantiateNode(t){const e={id:Pe(this,"node"),label:Qc(t),box:new S([0,0,180,96])};return t==="actor"?new Ls(this,e):t==="controller"?new zs(this,e):new $s(this,e)}};o(ka,"CommunicationDiagram");let Pn=ka;function Qc(n){return n==="actor"?"Actor":n==="controller"?"Controller":"Object"}o(Qc,"defaultLabelForType");function ee(n){return n&&(Object.assign(n,{__scalable:!0}),n)}o(ee,"makeScalableComponent");function tl(n){return n&&(Object.assign(n,{__scalableBack:!0}),n)}o(tl,"makeBackScalableComponent");const Cn=ee(({coordinates:n,size:t=20,strokeWidth:e=2,rounded:s=!0,stroke:i="#ff0000"})=>{const a=t/2,r=s?"round":"butt";return d.jsxs(d.Fragment,{children:[d.jsx("line",{x1:n.x-a,y1:n.y,x2:n.x+a,y2:n.y,stroke:i,strokeWidth:e,strokeLinecap:r}),d.jsx("line",{x1:n.x,y1:n.y-a,x2:n.x,y2:n.y+a,stroke:i,strokeWidth:e,strokeLinecap:r})]})}),el=0,Dr=32;function jr(n){switch(n){case"left":return[-1,0];case"right":return[1,0];case"up":return[0,-1];case"down":return[0,1];default:return[1,0]}}o(jr,"orientationVector$1");function sl(n,t,e,s,i){const a=1-i,r=a**3,c=3*a**2*i,l=3*a*i**2,h=i**3;return new y([n.x*r+t.x*c+e.x*l+s.x*h,n.y*r+t.y*c+e.y*l+s.y*h],!1)}o(sl,"cubicPoint");function nl(n){const t=n.steps;if(t.length<2||n.pathType==="orthogonal")return[...t];const e=t[0],s=t.at(-1);if(n.pathType==="straight")return[e,s];const i=e.distance(s),a=Math.max(40,Math.min(160,i/2)),r=jr(n.from.orientation),c=jr(n.to.orientation),l=new y([e.x+r[0]*a,e.y+r[1]*a],!1),h=new y([s.x+c[0]*a,s.y+c[1]*a],!1);return Array.from({length:Dr+1},(u,f)=>sl(e,l,h,s,f/Dr))}o(nl,"routePolyline");function il(n,t,e=el){const s=nl(n);let i=Number.POSITIVE_INFINITY,a=null,r=null;for(let u=0;u<s.length-1;u+=1){const f=s[u],p=s[u+1],m=p.x-f.x,x=p.y-f.y,b=m**2+x**2;if(b<1e-6)continue;const w=Math.max(0,Math.min(1,((t.x-f.x)*m+(t.y-f.y)*x)/b)),v=f.x+m*w,_=f.y+x*w,E=(t.x-v)**2+(t.y-_)**2;E>=i||(i=E,a=[v,_],r=[m,x])}if(!a||!r)return t.copy().sum([0,-e]);const c=Math.hypot(r[0],r[1]);let l=-r[1]/c,h=r[0]/c;return(h>1e-6||Math.abs(h)<=1e-6&&l<0)&&(l*=-1,h*=-1),new y([a[0]+l*e,a[1]+h*e])}o(il,"positionEdgeLabelBesideRoute");function Nr(n){switch(n){case"left":return[-1,0];case"right":return[1,0];case"up":return[0,-1];case"down":return[0,1];default:return[1,0]}}o(Nr,"orientationVector");function al(n,t,e){const s=n[0],i=n.at(-1),a=t?.pathType??e??"orthogonal";if(a==="orthogonal")return"M "+n.map(x=>`${x.x} ${x.y}`).join(" L ");if(a==="straight")return`M ${s.x} ${s.y} L ${i.x} ${i.y}`;const r=s.distance(i),c=Math.max(40,Math.min(160,r/2)),l=Nr(t?.from.orientation),h=Nr(t?.to.orientation),u=s.x+l[0]*c,f=s.y+l[1]*c,p=i.x+h[0]*c,m=i.y+h[1]*c;return`M ${s.x} ${s.y} C ${u} ${f}, ${p} ${m}, ${i.x} ${i.y}`}o(al,"buildEdgePath");const rl={};function ol(){const n=rl;return n.DEBUG_EDGES===!0||n.DEBUG_EDGES==="true"}o(ol,"debugEdgesEnabled");function cl(n,t){const e=n instanceof O?n.mode:"coordinate",s=n instanceof O?n.manualAxes:"none";return`${t}: x=${n.x}, y=${n.y}, mode=${e}, manualAxes=${s}`}o(cl,"formatPoint");function ll(n,t){const e=t.points[0],s=t.points[1],i=n.steps.findIndex((r,c)=>r===e&&n.steps[c+1]===s);if(i>=0)return i;const a=Number(t.id);return Number.isFinite(a)?a:null}o(ll,"segmentIndexFor");function dl(n,t){if(t.type==="edge")return"clicked: edge path";if(t.type==="endpoint")return`clicked: endpoint ${t.endpoint}`;const e=ll(n,t.midpoint),s=e===null?"unknown":`${e} -> ${e+1}`;return["clicked: drag point",`dragPoint.midpointId=${t.midpoint.id}`,`dragPoint.renderedIndex=${t.renderedIndex}`,`dragPoint.segment=${s}`,`dragPoint.x=${t.midpoint.x}`,`dragPoint.y=${t.midpoint.y}`].join(`
3
+ `)}o(dl,"formatClickedTarget");function hl(n,t){return[`edge.id=${n.id}`,`from=${n.from.parent.id}.${n.from.id} orientation=${n.from.orientation}`,`to=${n.to.parent.id}.${n.to.id} orientation=${n.to.orientation}`,dl(n,t),"points:",...n.steps.map(cl)].join(`
4
+ `)}o(hl,"formatEdgeDebug");async function ul(n){if(navigator.clipboard?.writeText){await navigator.clipboard.writeText(n);return}const t=document.createElement("textarea");t.value=n,t.style.position="fixed",t.style.left="-9999px",document.body.appendChild(t),t.focus(),t.select(),document.execCommand("copy"),t.remove()}o(ul,"writeClipboard");function Xe(n,t){if(!n||!ol())return;const e=hl(n,t);ul(e).then(()=>{console.info("[DEBUG_EDGES] copied edge debug to clipboard",e)}).catch(s=>{console.warn("[DEBUG_EDGES] failed to copy edge debug to clipboard",s,e)})}o(Xe,"copyEdgeDebugToClipboard");const Tr=o(({id:n,color:t,type:e,width:s,arrowSize:i,flip:a=!1})=>{const r=a?"180":"auto",c="white";switch(e){case"arrow":return d.jsx("marker",{id:n,markerWidth:i,markerHeight:i,refX:a?0:i*.9,refY:i/2,orient:r,markerUnits:"userSpaceOnUse",children:d.jsx("path",{d:`M0,0 L${i},${i/2} L0,${i} Z`,fill:t,className:"edge_marker_path"})});case"arrow-open":return d.jsx("marker",{id:n,markerWidth:i,markerHeight:i,refX:a?0:i,refY:i/2,orient:r,markerUnits:"userSpaceOnUse",children:d.jsx("path",{d:`M0,0 L${i},${i/2} L0,${i}`,fill:"none",stroke:t,strokeWidth:s,strokeLinecap:"butt",strokeLinejoin:"miter",className:"edge_marker_outline"})});case"triangle":return d.jsx("marker",{id:n,markerWidth:i,markerHeight:i,refX:a?0:i,refY:i/2,orient:r,markerUnits:"userSpaceOnUse",children:d.jsx("path",{d:`M0,0 L${i},${i/2} L0,${i} Z`,fill:c,stroke:t,strokeWidth:s/2,className:"edge_marker_outline"})});case"triangle-filled":return d.jsx("marker",{id:n,markerWidth:i,markerHeight:i,refX:a?0:i,refY:i/2,orient:r,markerUnits:"userSpaceOnUse",children:d.jsx("path",{d:`M0,0 L${i},${i/2} L0,${i} Z`,fill:t,className:"edge_marker_path"})});case"diamond":return d.jsx("marker",{id:n,markerWidth:i,markerHeight:i,refX:a?0:i*.9,refY:i/2,orient:r,markerUnits:"userSpaceOnUse",children:d.jsx("path",{d:`M0,${i/2} L${i/2},0 L${i},${i/2} L${i/2},${i} Z`,fill:"white",stroke:t,strokeWidth:s/2,className:"edge_marker_outline"})});case"circle-small":return d.jsx("marker",{id:n,markerWidth:i,markerHeight:i,refX:i/2,refY:i/2,orient:r,markerUnits:"userSpaceOnUse",children:d.jsx("circle",{cx:i/2,cy:i/2,r:i/4,fill:"white",stroke:t,strokeWidth:s/2,className:"edge_marker_outline"})});case"circle-medium":return d.jsx("marker",{id:n,markerWidth:i*1.5,markerHeight:i*1.5,refX:i*1.5/2,refY:i*1.5/2,orient:r,markerUnits:"userSpaceOnUse",children:d.jsx("circle",{cx:i*1.5/2,cy:i*1.5/2,r:i/2,fill:"white",stroke:t,strokeWidth:s/2,className:"edge_marker_outline"})});case"default-flow":return d.jsx("marker",{id:n,markerWidth:i,markerHeight:i,refX:i*.2-5-s/2,refY:i/2,orient:r,markerUnits:"userSpaceOnUse",children:d.jsx("path",{d:`M${i*.2},${i*.85} L${i*.8},${i*.15}`,fill:"none",stroke:t,strokeLinecap:"round",strokeWidth:s,className:"edge_marker_outline"})});case"measure":return d.jsx("marker",{id:n,markerWidth:i*5,markerHeight:i*5,refX:0,refY:i/2,orient:r,markerUnits:"userSpaceOnUse",children:d.jsx("path",{d:`M0,0 L0,${i/2}`,stroke:t,strokeWidth:3,strokeLinecap:"round",className:"edge_marker_outline"})});default:return null}},"EdgeMarker"),Fs=class Fs extends y{constructor(t,e,s,i){super(i),this.id=t,this.edge=e,this.points=s,this.assign(s[0].copy().sum(s[1]).divide(2)),g.makeObservable(this,{points:g.observable})}id;edge;points;copy(){return new Fs(this.id,this.edge,this.points,super.copy())}};o(Fs,"Midpoint");let In=Fs;function gl(n,t){const e=[];for(let s=0;s<t.length-1;s++){const i=[t[s],t[s+1]],a=i.filter(c=>c instanceof O&&c.mode==="static").length,r=n.steps.length===2&&t.length===2;a===2&&!r||e.push(new In(String(s),n,i))}return e}o(gl,"getSegmentMidpoints");const pl=o(({edge:n,onMouseDown:t,points:e})=>{const s=gl(n,e);return d.jsx(d.Fragment,{children:s.map((i,a)=>{const r=i.x,c=i.y;return d.jsx("rect",{x:r-6,y:c-6,width:12,height:12,rx:4,className:"edge_drag_point","data-edge-id":n.id,"data-midpoint-id":i.id,"data-midpoint-index":a,onMouseDownCapture:o(l=>{Xe(n,{type:"drag-point",midpoint:i,renderedIndex:a}),t(i,l)},"onMouseDownCapture")},i.id)})})},"EdgeMidpoints");function fl(n){if(n instanceof O)switch(n.mode){case"auto":return"red";case"manual":return"green";case"static":return"yellow"}}o(fl,"crossColor");const qe=A.observer(({edge:n,points:t,color:e,width:s=2,arrowSize:i=8,startType:a="none",endType:r="arrow",lineStyle:c="solid",pathType:l,endStroke:h=e,startStroke:u=e,onMidpointMouseDown:f,onEndpointMouseDown:p,className:m,draggable:x})=>{const b=o(P=>M.useMemo(()=>`marker-${P}-${Math.random().toString(36).slice(2)}`,[]),"makeId"),w=b("start"),v=b("end");if(!t||t.length<2)return null;const _=al(t,n,l),E=c==="dashed"?`${s*3},${s*2}`:c==="dotted"?`${s},${s*2}`:"none",C=!!(n&&x&&n.pathType==="orthogonal"&&(n.state.hover||n.state.dragging||n.state.selected)),k=!!(n&&x&&(n.state.selected||n.state.dragging));return d.jsxs("g",{"data-id":n?.id,className:["edge",n?.state.dragging&&"dragging",n?.state.selected&&"selected",n?.state.hover&&"hover",m].filter(Boolean).join(" "),onMouseEnter:o(()=>{g.runInAction(()=>{n&&(n.state.hover=!0)})},"onMouseEnter"),onMouseLeave:o(()=>{g.runInAction(()=>{n&&(n.state.hover=!1)})},"onMouseLeave"),onDoubleClick:o(P=>{if(!n?.diagram)return;P.stopPropagation();const I=n.diagram.canvas.inverseFit(new y(P.nativeEvent));n.createLabel(il(n,I))},"onDoubleClick"),children:[d.jsxs("defs",{children:[d.jsx(Tr,{id:w,color:u,type:a,width:s,arrowSize:i,flip:!1}),d.jsx(Tr,{id:v,color:h,type:r,width:s,arrowSize:i,flip:!1})]}),d.jsx("path",{d:_,strokeWidth:s+8,fill:"none",className:"edge-hover-area",onClickCapture:o(()=>{Xe(n,{type:"edge"})},"onClickCapture")}),d.jsx("path",{d:_,fill:"none",className:"edge-path",style:{"--edge-hover-stroke-width":`${Math.max(s+4,6)}px`,"--edge-selected-stroke-width":`${Math.max(s+2,4)}px`},stroke:e,strokeWidth:s,strokeDasharray:E,markerStart:a!=="none"?`url(#${w})`:void 0,markerEnd:r!=="none"?`url(#${v})`:void 0,onClickCapture:o(()=>{Xe(n,{type:"edge"})},"onClickCapture")}),es.instance.showDragHints&&t.map((P,I)=>d.jsx(Cn,{coordinates:P,size:15,stroke:fl(P)},I)),C&&d.jsx(pl,{edge:n,points:t,onMouseDown:o((P,I)=>{f?.(P,I)},"onMouseDown")}),k&&d.jsxs(d.Fragment,{children:[d.jsxs("g",{className:"edge_endpoint_drag_handle","data-edge-id":n?.id,"data-endpoint":"from",onMouseDownCapture:o(P=>{Xe(n,{type:"endpoint",endpoint:"from"}),p?.("from",P)},"onMouseDownCapture"),children:[d.jsx("circle",{cx:t[0].x,cy:t[0].y,r:12,className:"edge_endpoint_drag_hit_area"}),d.jsx("circle",{cx:t[0].x,cy:t[0].y,r:6,className:"edge_endpoint_drag_point"})]}),d.jsxs("g",{className:"edge_endpoint_drag_handle","data-edge-id":n?.id,"data-endpoint":"to",onMouseDownCapture:o(P=>{Xe(n,{type:"endpoint",endpoint:"to"}),p?.("to",P)},"onMouseDownCapture"),children:[d.jsx("circle",{cx:t.at(-1).x,cy:t.at(-1).y,r:12,className:"edge_endpoint_drag_hit_area"}),d.jsx("circle",{cx:t.at(-1).x,cy:t.at(-1).y,r:6,className:"edge_endpoint_drag_point"})]})]})]})}),ml=ee(A.observer(()=>{const n=q.use(),t=n.getExtension(de),e=n.getExtension(le),s=t.arrowSteps;return!s.length&&!e.endpointCandidatePoint?null:d.jsxs(d.Fragment,{children:[t.candidatePoint&&d.jsx(Cn,{coordinates:t.candidatePoint,stroke:"yellow"}),e.endpointCandidatePoint&&d.jsx(Cn,{coordinates:e.endpointCandidatePoint,stroke:"yellow"}),d.jsx(qe,{points:s,width:2*n.canvas.scale,arrowSize:8*n.canvas.scale,pathType:t.previewPathType})]})})),yl=ee(A.observer(()=>{const t=q.use().getExtension(De);return t?.enabled?d.jsx(d.Fragment,{children:d.jsx(qe,{points:t.get(),startType:"measure",endType:"measure",width:2,arrowSize:12,lineStyle:"dotted",startStroke:"red",endStroke:"red",className:"measurement"})}):null})),xl=M.forwardRef(({children:n,paths:t,transform:e,selected:s,onClick:i,className:a,roundedBorders:r=!1,label:c,labelColor:l,labelFontSize:h,labelFontFamily:u="sans-serif",labelOffset:f,"data-id":p,...m},x)=>{const b=q.use();return d.jsxs("g",{...m,"data-id":p,className:`${a||""} ${s?"selected":""} base_shape`,transform:e,onClick:i,ref:x,children:[d.jsx("defs",{children:t.map((w,v)=>{if(!w.arrow)return null;const _=6,{size:E=_,color:C=w.stroke??"#111"}=w.arrow,k=`arrow-${v}`;return d.jsx("marker",{id:k,viewBox:"0 0 10 10",refX:_*1.5,refY:"5",markerWidth:E,markerHeight:E,orient:"auto-start-reverse",markerUnits:"userSpaceOnUse",children:d.jsx("path",{d:"M 0 0 L 10 5 L 0 10",fill:"none",stroke:C,strokeWidth:Math.max(1,_*.9),strokeLinecap:"round",strokeLinejoin:"round"})},v)})}),t.map((w,v)=>{const{d:_,fill:E="none",stroke:C="#111",strokeWidth:k=3,strokeStyle:P="solid",animated:I=!1,animationDuration:B=1,nonScalingStroke:X=!0,roundedBorders:wt=r,arrow:rt}=w;let nt;switch(P){case"dashed":nt="10 5";break;case"dotted":nt="2 6";break}const ot=I?d.jsx("animate",{attributeName:"stroke-dashoffset",from:"0",to:nt?`-${nt.split(" ").reduce((Ca,ql)=>+Ca+ +ql,0)}`:"-15",dur:`${B}s`,repeatCount:"indefinite"}):null,vt=rt?`url(#arrow-${v})`:void 0;return d.jsx("path",{d:_,fill:E,stroke:C,strokeWidth:k,strokeDasharray:nt,strokeLinecap:wt?"round":"butt",strokeLinejoin:wt?"round":"miter",vectorEffect:X?"non-scaling-stroke":void 0,markerStart:rt?.position==="start"||rt?.position==="both"?vt:void 0,markerEnd:!rt||rt.position==="end"||rt.position==="both"?vt:void 0,children:ot},v)}),c&&d.jsx("text",{x:f?.x??0,y:f?.y??0,textAnchor:"middle",dominantBaseline:"middle",fontFamily:u,fontSize:h,fill:l,pointerEvents:"none",...b.canvas.scale>1?{shapeRendering:"geometricPrecision",style:{paintOrder:"stroke",stroke:"transparent",strokeWidth:.5,WebkitFontSmoothing:"antialiased",transform:"translateZ(0)"}}:{},children:c}),n]})}),ge=A.observer(xl),Lr=o((n,t=0)=>{const{x:e,y:s,width:i,height:a}=n;if(t<=0)return`M${e},${s} h${i} v${a} h${-i}Z`;const r=Math.min(t,i/2,a/2);return[`M${e+r},${s}`,`h${i-2*r}`,`a${r},${r} 0 0 1 ${r},${r}`,`v${a-2*r}`,`a${r},${r} 0 0 1 ${-r},${r}`,`h${-(i-2*r)}`,`a${r},${r} 0 0 1 ${-r},${-r}`,`v${-(a-2*r)}`,`a${r},${r} 0 0 1 ${r},${-r}`,"Z"].join(" ")},"getRectPath"),bl=o((n,t)=>`M ${n.x-t}, ${n.y}
4
5
  a ${t},${t} 0 1,0 ${2*t},0
5
- a ${t},${t} 0 1,0 -${2*t},0`,"getCirclePath"),Vr=yt(w.observer(()=>{const t=z.use().getExtension(D);return t.selectionMode?u.jsx(u.Fragment,{children:u.jsx(ee,{paths:[{d:Tn(t.box,0),strokeWidth:1}],labelOffset:new m,className:"selection_square"})}):null})),Xr=zr(()=>null),Fn=E.forwardRef(({children:i,className:t,style:e},s)=>u.jsx("svg",{ref:s,className:t,width:"100%",height:"100%",style:{position:"absolute",top:0,left:0,pointerEvents:"none",...e},xmlns:"http://www.w3.org/2000/svg",children:i}));function Ur(i){return Array.isArray(i)?i:[i]}o(Ur,"arrayOrArray");const qr=w.observer(({gateway:i})=>{const e=z.use().getExtension(Jt);return u.jsx(ee,{paths:[{d:Wr(i.coordinates,i.radius),fill:i.fill,stroke:i.stroke,strokeWidth:i.strokeWidth}],className:"diagram__node__gateway","data-gateway-parent":i.parent.id,"data-gateway-id":i.id,"data-gateway-orientation":i.orientation,onMouseOut:o(s=>{const n=s.relatedTarget;n instanceof Element&&n.closest(`[data-id="${i.parent.id}"], [data-gateway-parent="${i.parent.id}"]`)||i.parent.setState("hover",!1)},"onMouseOut"),onMouseDownCapture:e.startConnectionFrom.bind(e,i)},i.id)}),Zr=w.observer(({node:i})=>{const t=i.RenderOverlay;return t?u.jsx(t,{node:i,box:i.box}):null}),Kr=w.observer(()=>{const i=z.use();return u.jsx("div",{style:{width:`${i.canvas.size.x}px`,height:`${i.canvas.size.y}px`},children:i.nodes.map(t=>u.jsx(Zr,{node:t},t.id))})}),Jr=w.observer(({node:i})=>i.parent?u.jsx(u.Fragment,{children:!i.RenderOverlay&&u.jsx(ee,{paths:[{d:Tn(i.box,10),stroke:i.state.stroke,strokeWidth:i.state.strokewWidth??3,fill:i.state.fill}],onMouseOver:o(()=>{g.runInAction(()=>{i.state.hover=!0})},"onMouseOver"),onMouseOut:o(t=>{const e=t.relatedTarget;e instanceof Element&&e.closest(`[data-id="${i.id}"], [data-gateway-parent="${i.id}"]`)||g.runInAction(()=>{i.state.hover=!1})},"onMouseOut"),className:i.classList.string,label:i.state.label,labelOffset:i.coordinates.sum(i.box.size.half),labelFontSize:i.state.labelFontSize??14,selected:i.selected,"data-id":i.id},i.id)}):null),Qr=w.observer(({edge:i})=>u.jsx(te,{edge:i,points:i.steps,endType:i.arrowHeadEnd??"arrow",startType:i.arrowHeadStart??"none",lineStyle:i.lineStyle??"solid",color:i.stroke,width:i.strokeWidth??2,draggable:!0,onMidpointMouseDown:o((t,e)=>{i.dragStart(t,e)},"onMidpointMouseDown"),onEndpointMouseDown:o((t,e)=>{i.dragEndpoint(t,e)},"onEndpointMouseDown")})),ta=yt(w.observer(()=>{const i=z.use(),e=i.getExtension(D)?.selectedNodes??[],s=[...i.nodes.filter(r=>!e.includes(r)),...e],n=s.filter(r=>r.state.hover||r.selected).flatMap(r=>r.gateways);return u.jsxs(u.Fragment,{children:[s.map(r=>u.jsx(Jr,{node:r},r.id)),i.edges.map(r=>u.jsx(Qr,{edge:r},r.id)),n.map(r=>u.jsx(qr,{gateway:r},`${r.parent.id}-${r.id}`))]})}));function ea(){return[u.jsx(ta,{},"ScalableShapes"),u.jsx(Kr,{},"RenderNodeOverlays")]}o(ea,"shapes");const sa=w.observer(({node:i})=>{const t=i.RenderScreen;return t?u.jsx(t,{node:i,box:i.box,scale:i.diagram?.canvas.scale??1}):null}),ia=w.observer(()=>{const i=z.use();return u.jsx("div",{className:"screen_renderers",children:i.nodes.map(t=>u.jsx(sa,{node:t},t.id))})}),na=w.observer(({children:i})=>{const t=z.use(),e=t.getExtension(U);t.canvas.setGridSize(e?.gridSize??50);const s=[],n=[],r=[];return E.Children.forEach([...Ur(i),...ea()],a=>{a.type.__scalable?s.push(a):a.type.__scalableBack?r.push(a):n.push(a)}),u.jsxs("div",{className:`canvas__frame ${t.showGrid?"canvas__frame--grid":""}`,children:[u.jsxs("div",{ref:t.canvas.useRef,children:[r.length&&u.jsx(Fn,{className:"background",children:r}),n.length&&u.jsx("div",{className:"scalable_components",children:n}),s.length&&u.jsx(Fn,{className:"foreground",children:s})]}),u.jsx(ia,{})]})});function ra({children:i,className:t,...e}){return u.jsx("div",{...e,className:["stage",t].filter(Boolean).join(" "),children:i})}o(ra,"Stage");const aa=yt(w.observer(()=>{const i=z.use(),t=i.getExtension(At),e=i.getExtension(Xt);return u.jsxs(u.Fragment,{children:[t?.proposals.map(s=>{const n=s.type==="h"?`M ${s.x} ${s.range[0]} V ${s.range[1]}`:`M ${s.range[0]} ${s.y} H ${s.range[1]}`;return u.jsx(ee,{className:"alignment_sugestion",paths:[{d:n}]},s.id)}),e?.proposals.map(s=>{const n=`M ${s.from.x} ${s.from.y} L ${s.to.x} ${s.to.y}`;return u.jsx(ee,{className:"distance_balance_sugestion",paths:[{d:n,arrow:{position:"both",size:8}}]},n)})]})})),oa=yt(w.observer(()=>{const t=z.use().getExtension(Nn);return t?.enabled?u.jsxs(u.Fragment,{children:[t.grid?.edges.map(e=>{const{from:s,to:n}=e,r=`M ${s.x} ${s.y} L ${n.x} ${n.y}`,a=t.highlighted.has(e);return u.jsx(te,{className:`path_finding_grid_edge ${a?"highlighted":""}`,points:[s,n],endType:"none"},r)}),t.points?.length&&u.jsx(te,{className:"path_finding_grid_edge_chosen",points:t.points})]}):null})),Z=8,bs=2,ca=120;function la(i,t){const e=Math.max(Z,Math.min(i.x,window.innerWidth-t.width-Z)),s=Math.max(Z,Math.min(i.y,window.innerHeight-t.height-Z));return{x:e,y:s}}o(la,"clampPosition");function da({item:i,onAction:t}){const e=!!i.submenu?.length,s=E.useRef(null),n=E.useRef(null),r=E.useRef(null),[a,c]=E.useState(!1),[l,d]=E.useState(!1),[h,x]=E.useState({left:0,top:-4,openToLeft:!1}),p=E.useCallback(()=>{if(!s.current||!n.current)return;const M=s.current.getBoundingClientRect(),_=n.current.getBoundingClientRect();let H=M.width-bs,P=!1;M.right-bs+_.width>window.innerWidth-Z&&(H=-_.width+bs,P=!0),M.left+H<Z&&(H=Z-M.left,P=!1);let O=-4,L=M.top+O;L+_.height>window.innerHeight-Z&&(O-=L+_.height-(window.innerHeight-Z),L=M.top+O),L<Z&&(O+=Z-L),x({left:H,top:O,openToLeft:P}),d(!0)},[]);E.useEffect(()=>{a||d(!1)},[a]),E.useEffect(()=>()=>{r.current!==null&&window.clearTimeout(r.current)},[]),E.useLayoutEffect(()=>{a&&p()},[a,p]),E.useEffect(()=>{if(!a)return;const M=o(()=>{p()},"handleResize");return window.addEventListener("resize",M),()=>{window.removeEventListener("resize",M)}},[a,p]);const f=o(()=>{r.current!==null&&(window.clearTimeout(r.current),r.current=null)},"clearCloseTimeout"),y=o(()=>{e&&(f(),c(!0))},"openSubmenu"),v=o(()=>{f(),c(!1)},"closeSubmenu"),k=o(()=>{e&&(f(),r.current=window.setTimeout(()=>{c(!1),r.current=null},ca))},"scheduleCloseSubmenu"),$=o(M=>{const _=M.relatedTarget;(!_||!M.currentTarget.contains(_))&&v()},"handleBlur");return u.jsxs("li",{ref:s,className:["diagram__context_menu_item",i.disabled&&"disabled",i.danger&&"danger",e&&"has_submenu",a&&"submenu_open"].filter(Boolean).join(" "),onMouseEnter:y,onMouseLeave:k,onFocusCapture:y,onBlurCapture:$,children:[u.jsxs("button",{type:"button",className:"diagram__context_menu_button",disabled:i.disabled,onClick:o(M=>{M.stopPropagation(),M.preventDefault(),t(i)},"onClick"),children:[u.jsx("span",{className:"diagram__context_menu_label",children:i.label}),e&&u.jsx("span",{className:"diagram__context_menu_chevron",children:h.openToLeft?"<":">"})]}),e&&a&&u.jsx("div",{ref:n,className:"diagram__context_menu_submenu",style:{left:h.left,top:h.top,opacity:l?1:0},children:u.jsx("div",{className:"diagram__context_menu diagram__context_menu--nested",children:u.jsx(Hn,{items:i.submenu,onAction:t})})})]})}o(da,"MenuItem");function Hn({items:i,onAction:t}){return u.jsx("ul",{className:"diagram__context_menu_list",children:i.map((e,s)=>u.jsx(da,{item:e,onAction:t},`${e.label}_${s}`))})}o(Hn,"MenuItems");const ha=w.observer(({menu:i})=>{const t=E.useRef(null),[e,s]=E.useState(i.position);return E.useEffect(()=>{i.opened&&s(i.position)},[i.openVersion,i.opened,i.position]),E.useLayoutEffect(()=>{if(!i.opened||!t.current)return;const{width:n,height:r}=t.current.getBoundingClientRect(),{x:a,y:c}=la(i.position,{width:n,height:r});(a!==e.x||c!==e.y)&&s({x:a,y:c})},[i.openVersion,i.opened,i.position,e.x,e.y]),E.useEffect(()=>{if(!i.opened)return;const n=o(l=>{l.code==="Escape"&&i.close()},"closeOnEscape"),r=o(l=>{const d=l.target;d&&t.current?.contains(d)||i.close()},"closeOnOutsideMouseDown"),a=o(l=>{const d=l.target;if(d&&t.current?.contains(d)){l.preventDefault();return}i.close()},"closeOnOutsideContextMenu"),c=o(()=>{i.close()},"closeOnResize");return document.addEventListener("keydown",n),document.addEventListener("mousedown",r,!0),document.addEventListener("contextmenu",a,!0),window.addEventListener("resize",c),()=>{document.removeEventListener("keydown",n),document.removeEventListener("mousedown",r,!0),document.removeEventListener("contextmenu",a,!0),window.removeEventListener("resize",c)}},[i,i.openVersion,i.opened]),!i.opened||!i.elements.length?null:u.jsx("div",{className:"diagram__context_menu_layer",children:u.jsx("div",{ref:t,className:"diagram__context_menu",style:{left:e.x,top:e.y},onMouseDown:o(n=>{n.stopPropagation()},"onMouseDown"),onContextMenu:o(n=>{n.preventDefault(),n.stopPropagation()},"onContextMenu"),children:u.jsx(Hn,{items:i.elements,onAction:o(n=>{i.execute(n)},"onAction")})})})}),zi=class zi{_elements=[];_opened=!1;_position={x:0,y:0};_openVersion=0;Component=o(()=>u.jsx(ha,{menu:this}),"Component");constructor(){g.makeAutoObservable(this,{Component:!1},{autoBind:!0})}get elements(){return this._elements}get opened(){return this._opened}get position(){return this._position}get openVersion(){return this._openVersion}open(t,e={}){if(!t.length){this.close();return}const s=xt.getInstance().coordinates;this._elements=t,this._position={x:e.x??s.x,y:e.y??s.y},this._openVersion+=1,this._opened=!0}close(){this._opened&&(this._opened=!1,this._elements=[])}execute(t){if(!t.disabled){try{const e=t.onClick();e instanceof Promise&&e.catch(()=>{})}catch{}t.submenu?.length||this.close()}}};o(zi,"ContextMenuStore");let vs=zi;const Es=new vs,se=o(()=>{},"noop");function ua(){return typeof navigator<"u"&&!!navigator.clipboard?.writeText&&!!navigator.clipboard?.readText}o(ua,"hasClipboardSupport");function Gn(i){return()=>{i().catch(()=>{})}}o(Gn,"runAsync");function ga(i,t,e){const s=i.getExtension(D),n=t.closest(".diagram__node")?.dataset.id,r=t.closest(".edge")?.dataset.id,a=n?i.getNodeById(n):void 0,c=r?i.getEdgeById(r):void 0;a&&!a.selected?(s.clearSelection(),s.selectNode(a)):c&&!c.state.selected&&(s.clearSelection(),s.selectEdge(c));const l=s.selectedNodes,d=s.selectedEdges,h=l.length+d.length>0,x=ua(),p=x&&l.length>0,f=o(()=>{s.selectedNodes.forEach(k=>{i.delete(k)}),s.selectedEdges.forEach(k=>{i.disconnect(k)})},"deleteSelection"),y=[];a?y.push({label:`Node: ${a.state.label||a.id}`,onClick:se,submenu:[{label:"Center node",onClick:o(()=>{i.canvas.centerOnPoint(a.box.middle)},"onClick")},{label:"Delete node",onClick:o(()=>{i.delete(a)},"onClick"),danger:!0}]}):c&&y.push({label:"Edge",onClick:se,submenu:[{label:"Delete edge",onClick:o(()=>{i.disconnect(c)},"onClick"),danger:!0}]}),h&&y.push({label:"Delete selection",onClick:f,danger:!0}),y.push({label:"Selection",onClick:se,submenu:[{label:s.selectionMode==="element"?"Element mode (active)":"Element mode",onClick:o(()=>{s.toggleSelectionMode("element")},"onClick")},{label:s.selectionMode==="area"?"Area mode (active)":"Area mode",onClick:o(()=>{s.toggleSelectionMode("area")},"onClick")},{label:"Clear selection",onClick:o(()=>{s.clearSelection()},"onClick"),disabled:!h},{label:"Copy selection",onClick:Gn(async()=>{await navigator.clipboard.writeText(s.copy())}),disabled:!p},{label:"Paste",onClick:Gn(async()=>{const k=await navigator.clipboard.readText();k.trim().length&&i.paste(k)}),disabled:!x}]});const v=new m([e.x,e.y]);return y.push({label:"View",onClick:se,submenu:[{label:i.showGrid?"Hide grid":"Show grid",onClick:o(()=>{i.toggleGrid()},"onClick")},{label:`Zoom (${Math.round(i.canvas.scale*100)}%)`,onClick:se,submenu:[{label:"Zoom in",onClick:o(()=>{i.canvas.setScale(i.canvas.scale+.1,v)},"onClick")},{label:"Zoom out",onClick:o(()=>{i.canvas.setScale(i.canvas.scale-.1,v)},"onClick")},{label:"Reset zoom",onClick:o(()=>{i.canvas.setScale(1,v)},"onClick")}]}]}),y}o(ga,"buildDiagramContextMenu");const pa=w.observer(({diagram:i,leftPanel:t,toolbar:e})=>{const s=o(n=>{const r=n.target;if(r instanceof HTMLElement){if(r.closest('input, textarea, [contenteditable="true"]')){Es.close();return}n.preventDefault(),Es.open(ga(i,r,{x:n.clientX,y:n.clientY}),{x:n.clientX,y:n.clientY})}},"handleContextMenu");return u.jsxs(i.Context,{children:[u.jsxs(ra,{onContextMenu:s,children:[t,u.jsxs(na,{children:[u.jsx(Xr,{}),u.jsx(Gr,{}),u.jsx(Rr,{}),u.jsx(aa,{}),u.jsx(Vr,{}),u.jsx(oa,{})]})]}),u.jsx(Es.Component,{}),e]})}),Ti=class Ti extends Y{constructor(t,e,s){super(t),this.src=t,this.previousLabel=e,this.nextLabel=s}src;previousLabel;nextLabel};o(Ti,"DEditNodeEvent");let Ms=Ti;function Rn(i){return["Enter","Escape"].includes(i.code)}o(Rn,"allowEventInEdition");const Fi=class Fi extends j{inEdition=new Set;cancel(){this.inEdition.forEach(t=>t.cancel()),this.inEdition.clear()}confirm(){this.inEdition.forEach(t=>t.confirm()),this.inEdition.clear()}editNode(t){t.edit(),this.inEdition.add(t)}init(){this.diagram.onEvent(kt,t=>{switch(t.code){case"F2":{const e=this.diagram.getExtension(D).selectedNodes[0];e instanceof et&&this.editNode(e);break}case"Escape":{this.cancel();break}case"Enter":t.shift||this.confirm()}}),this.diagram.onEvent(ut,t=>{(!t.node||t.node instanceof et&&!this.inEdition.has(t.node))&&this.confirm()},this.diagram.priorities.Mouse_Down_Dragger+1),this.diagram.onEvent(xe,t=>{t.node instanceof et&&!this.inEdition.has(t.node)&&(this.confirm(),this.editNode(t.node))})}};o(Fi,"EditionMode");let De=Fi;function ie(i,t){return{"data-id":i.id,style:{"--screen-renderer-x":`${t.x}px`,"--screen-renderer-y":`${t.y}px`,"--screen-renderer-width":`${t.width}px`,"--screen-renderer-height":`${t.height}px`,"--screen-renderer-z-index":i.state.hover?(i.state.zIndex??100)+1:i.state.zIndex??100}}}o(ie,"screenRendererProps");const fa=w.observer(({node:i,box:t})=>{const e=E.useRef(!1),s=ie(i,t);return s.style["--screen-label-font-size"]=`${i.state.labelFontSize??14}px`,i.editionMode?u.jsx("textarea",{...s,className:`node__screenLabel editable__label${i.selected?" selected":""}`,autoFocus:!0,value:i.state.label,onChange:o(n=>{g.runInAction(()=>{i.state.label=n.target.value})},"onChange"),onKeyDownCapture:o(n=>{i.editionMode&&!Rn(n.nativeEvent)&&n.nativeEvent.stopImmediatePropagation()},"onKeyDownCapture"),ref:o(n=>{n instanceof HTMLTextAreaElement&&!e.current&&(e.current=!0,n.select())},"ref")}):(e.current=!1,i.state.label?u.jsx("pre",{...s,className:`node__screenLabel${i.selected?" selected":""}`,children:i.state.label}):null)}),Hi=class Hi extends je{editionMode=!1;constructor(t,e){super(t,e),g.makeObservable(this,{editionMode:g.observable,edit:g.action,cancel:g.action,confirm:g.action})}get label(){return this.state.label}previous=null;edit(){this.previous=this.state.label,this.editionMode=!0}cancel(){this.state.label=this.previous,this.editionMode=!1}confirm(){return this.emit(new Ms(this,this.previous,this.state.label)).cancelled?(this.cancel(),!1):(this.editionMode=!1,!0)}get isChanged(){return this.previous!==this.state.label}get screenLabelBox(){return this.box}RenderScreen=w.observer(()=>u.jsx(fa,{node:this,box:this.screenLabelBox}))};o(Hi,"EditableNode");let et=Hi;const Gi=class Gi extends z{constructor(t){super(t),this.registerClass(et),this.registerExtension(De)}};o(Gi,"EditableDiagram");let ne=Gi;const Ri=class Ri extends et{constructor(t,e){super(t,e),this.classList.add("bpm__node","diagram__node")}};o(Ri,"BPMNode");let ct=Ri;function ma(i){return{position:"absolute",left:`${i.box.x}px`,top:`${i.box.y}px`,zIndex:i.state.hover?i.state.zIndex+1:i.state.zIndex,width:`${i.box.width}px`,height:`${i.box.height}px`}}o(ma,"customRendererStyles");function V(i){const t=ma(i);return i.state.fill&&(t["--node-fill"]=i.state.fill),i.state.stroke&&(t["--node-stroke"]=i.state.stroke),{onMouseOver:o(()=>i.setState("hover",!0),"onMouseOver"),onMouseOut:o(e=>{const s=e.relatedTarget;s instanceof Element&&s.closest(`[data-id="${i.id}"], [data-gateway-parent="${i.id}"]`)||i.setState("hover",!1)},"onMouseOut"),"data-id":i.id,style:t,className:`${i.classList.string} ${i.selected?"selected":""}`}}o(V,"customRendererProps");function st(i,t){return`bpmn__event__${i[t]}`}o(st,"getEnumStr");var It=(i=>(i[i.start=0]="start",i[i.end=1]="end",i[i.intermediate=2]="intermediate",i))(It||{});const Yi=class Yi extends ct{type;constructor(t,e){super(t,e),this.setType(e.type??0),this.state.box.assignDimensions(new m([80,80])),this.classList.add("bpmn__event")}setType(t){if(this.type!==t&&!this.emit(new we(this)).cancelled){this.type=t;for(const e of Object.values(It))this.classList.delete(st(It,e));switch(t){case 1:this._gateways.forEach(e=>e.outgoingEdges.forEach(s=>this.diagram?.disconnect(s))),this.classList.add(st(It,1));break;case 0:this._gateways.forEach(e=>e.outgoingEdges.forEach(s=>this.diagram?.disconnect(s))),this.classList.add(st(It,0));break;case 2:this.classList.add(st(It,2));break}}}serialize(){return{...super.serialize(),type:this.type}}deserialize(t){this.setType(t.type??0),super.deserialize(t)}get screenLabelBox(){const t=this.box,e=Math.max(t.width,120);return new b([t.x+t.width/2-e/2,t.y+70,e,Math.max(this.state.labelFontSize??14,14)*1.25])}RenderOverlay=w.observer(()=>u.jsx("div",{...V(this)}))};o(Yi,"EventNode");let ks=Yi;var wt=(i=>(i[i.inclusive=0]="inclusive",i[i.exclusive=1]="exclusive",i[i.parallel=2]="parallel",i[i.eventBased=3]="eventBased",i))(wt||{});const Wi=class Wi extends ct{type;constructor(t,e){super(t,e),this.setType(e.type??1),this.state.box.assignDimensions(new m([80,80])),this.classList.add("bpmn__gate")}setType(t){if(this.type!==t&&!this.emit(new we(this)).cancelled){this.type=t;for(const e of Object.values(wt))this.classList.delete(st(wt,e));switch(t){case 1:this._gateways.forEach(e=>e.outgoingEdges.forEach(s=>this.diagram?.disconnect(s))),this.classList.add(st(wt,1));break;case 0:this._gateways.forEach(e=>e.outgoingEdges.forEach(s=>this.diagram?.disconnect(s))),this.classList.add(st(wt,0));break;case 2:this._gateways.forEach(e=>e.outgoingEdges.forEach(s=>this.diagram?.disconnect(s))),this.classList.add(st(wt,2));break;case 3:this._gateways.forEach(e=>e.outgoingEdges.forEach(s=>this.diagram?.disconnect(s))),this.classList.add(st(wt,3));break}}}serialize(){return{...super.serialize(),type:this.type}}deserialize(t){this.setType(t.type??1),super.deserialize(t)}get screenLabelBox(){const t=this.box,e=Math.max(t.width,120);return new b([t.x+t.width/2-e/2,t.y+70,e,Math.max(this.state.labelFontSize??14,14)*1.25])}RenderOverlay=w.observer(()=>{const t=this.state.box.width,e=this.state.box.height;return u.jsx("div",{...V(this),children:u.jsx("svg",{viewBox:`0 0 ${t} ${e}`,style:{width:`${t}px`,height:`${e}px`},children:u.jsx("polygon",{points:`${t/2} 0 ${t} ${e/2} ${t/2} ${e} 0 ${e/2}`})})})})};o(Wi,"GateNode");let _s=Wi;const Vi=class Vi extends ct{constructor(t,e){super(t,{...e,box:e.box||new b([0,0,200,100])}),this.classList.add("bpmn__task")}RenderOverlay=w.observer(()=>u.jsx("div",{...V(this)}))};o(Vi,"TaskNode");let Ss=Vi;const Xi=class Xi extends ct{sourceType="unknown";constructor(t,e){super(t,{...e,box:e.box||new b([0,0,200,100])}),this.sourceType=e.sourceType||"unknown",this.classList.add("bpmn__unknown")}serialize(){return{...super.serialize(),sourceType:this.sourceType}}deserialize(t){super.deserialize(t),this.sourceType=t.sourceType||"unknown"}RenderOverlay=w.observer(()=>u.jsx("div",{...V(this),children:u.jsx("div",{className:"bpmn__unknown__marker",children:"?"})}))};o(Xi,"UnknownBPMNNode");let Ps=Xi;function re(i){return typeof i=="object"&&i?Array.isArray(i)?i.map(t=>re(t)):Object.fromEntries(Object.entries(i).map(([t,e])=>[t,re(e)])):i}o(re,"cloneDeep");const Ui=class Ui extends Y{};o(Ui,"AddLaneEvent");let ae=Ui;var Yn={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},Wn=E.createContext&&E.createContext(Yn),xa=["attr","size","title"];function ya(i,t){if(i==null)return{};var e,s,n=wa(i,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(i);for(s=0;s<r.length;s++)e=r[s],t.indexOf(e)===-1&&{}.propertyIsEnumerable.call(i,e)&&(n[e]=i[e])}return n}o(ya,"_objectWithoutProperties");function wa(i,t){if(i==null)return{};var e={};for(var s in i)if({}.hasOwnProperty.call(i,s)){if(t.indexOf(s)!==-1)continue;e[s]=i[s]}return e}o(wa,"_objectWithoutPropertiesLoose");function ze(){return ze=Object.assign?Object.assign.bind():function(i){for(var t=1;t<arguments.length;t++){var e=arguments[t];for(var s in e)({}).hasOwnProperty.call(e,s)&&(i[s]=e[s])}return i},ze.apply(null,arguments)}o(ze,"_extends");function Vn(i,t){var e=Object.keys(i);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(i);t&&(s=s.filter(function(n){return Object.getOwnPropertyDescriptor(i,n).enumerable})),e.push.apply(e,s)}return e}o(Vn,"ownKeys");function Te(i){for(var t=1;t<arguments.length;t++){var e=arguments[t]!=null?arguments[t]:{};t%2?Vn(Object(e),!0).forEach(function(s){ba(i,s,e[s])}):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(e)):Vn(Object(e)).forEach(function(s){Object.defineProperty(i,s,Object.getOwnPropertyDescriptor(e,s))})}return i}o(Te,"_objectSpread");function ba(i,t,e){return(t=va(t))in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}o(ba,"_defineProperty");function va(i){var t=Ea(i,"string");return typeof t=="symbol"?t:t+""}o(va,"_toPropertyKey");function Ea(i,t){if(typeof i!="object"||!i)return i;var e=i[Symbol.toPrimitive];if(e!==void 0){var s=e.call(i,t);if(typeof s!="object")return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(i)}o(Ea,"_toPrimitive");function Xn(i){return i&&i.map((t,e)=>E.createElement(t.tag,Te({key:e},t.attr),Xn(t.child)))}o(Xn,"Tree2Element");function oe(i){return t=>E.createElement(Ma,ze({attr:Te({},i.attr)},t),Xn(i.child))}o(oe,"GenIcon");function Ma(i){var t=o(e=>{var s=i.attr,n=i.size,r=i.title,a=ya(i,xa),c=n||e.size||"1em",l;return e.className&&(l=e.className),i.className&&(l=(l?l+" ":"")+i.className),E.createElement("svg",ze({stroke:"currentColor",fill:"currentColor",strokeWidth:"0"},e.attr,s,a,{className:l,style:Te(Te({color:i.color||e.color},e.style),i.style),height:c,width:c,xmlns:"http://www.w3.org/2000/svg"}),r&&E.createElement("title",null,r),i.children)},"elem");return Wn!==void 0?E.createElement(Wn.Consumer,null,e=>t(e)):t(Yn)}o(Ma,"IconBase");function ka(i){return oe({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M208,160H48a16,16,0,0,0-16,16v24a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V176A16,16,0,0,0,208,160Zm0,40H48V176H208v24Zm0-112H48a16,16,0,0,0-16,16v24a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V104A16,16,0,0,0,208,88Zm0,40H48V104H208v24ZM96,40a8,8,0,0,1,8-8h16V16a8,8,0,0,1,16,0V32h16a8,8,0,0,1,0,16H136V64a8,8,0,0,1-16,0V48H104A8,8,0,0,1,96,40Z"},child:[]}]})(i)}o(ka,"PiRowsPlusTop");function _a(i){return oe({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M208,112H48a16,16,0,0,0-16,16v24a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V128A16,16,0,0,0,208,112Zm0,40H48V128H208v24Zm0-112H48A16,16,0,0,0,32,56V80A16,16,0,0,0,48,96H208a16,16,0,0,0,16-16V56A16,16,0,0,0,208,40Zm0,40H48V56H208V80ZM160,216a8,8,0,0,1-8,8H136v16a8,8,0,0,1-16,0V224H104a8,8,0,0,1,0-16h16V192a8,8,0,0,1,16,0v16h16A8,8,0,0,1,160,216Z"},child:[]}]})(i)}o(_a,"PiRowsPlusBottom");function Sa(i){return oe({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M227.31,73.37,182.63,28.68a16,16,0,0,0-22.63,0L36.69,152A15.86,15.86,0,0,0,32,163.31V208a16,16,0,0,0,16,16H92.69A15.86,15.86,0,0,0,104,219.31L227.31,96a16,16,0,0,0,0-22.63ZM92.69,208H48V163.31l88-88L180.69,120ZM192,108.68,147.31,64l24-24L216,84.68Z"},child:[]}]})(i)}o(Sa,"PiPencilSimple");function Un(i){return oe({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M176,128a8,8,0,0,1-8,8H88a8,8,0,0,1,0-16h80A8,8,0,0,1,176,128Zm56,0A104,104,0,1,1,128,24,104.11,104.11,0,0,1,232,128Zm-16,0a88,88,0,1,0-88,88A88.1,88.1,0,0,0,216,128Z"},child:[]}]})(i)}o(Un,"PiMinusCircle");function Pa(i){return oe({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M232,64a32,32,0,1,0-40,31v17a8,8,0,0,1-8,8H96a23.84,23.84,0,0,0-8,1.38V95a32,32,0,1,0-16,0v66a32,32,0,1,0,16,0V144a8,8,0,0,1,8-8h88a24,24,0,0,0,24-24V95A32.06,32.06,0,0,0,232,64ZM64,64A16,16,0,1,1,80,80,16,16,0,0,1,64,64ZM96,192a16,16,0,1,1-16-16A16,16,0,0,1,96,192ZM200,80a16,16,0,1,1,16-16A16,16,0,0,1,200,80Z"},child:[]}]})(i)}o(Pa,"PiGitBranch");const qi=class qi extends j{init(){const t=this.diagram.getExtension(At);t?.registerVerticalSuggestionProvider((e,s)=>this.enabled&&t.enabled?this.getLaneSuggestions(e,s):[]),t?.registerHorizontalSuggestionProvider((e,s)=>this.enabled&&t.enabled?this.getHorizontalLaneSuggestions(e,s):[])}resize(t,e){const s=this.diagram.getExtension(U),n=s?.gridSize??50;if("width"in e){const r=t.constructor,a=n*r.minimumWidthInGrids;t.state.box.width=this.constrain(e.width,a,s?.enabled===!0?n:null);return}t.resizeLane(e.laneId,s?.enabled===!0?Math.round(e.height/n)*n:e.height,s?.enabled===!0?n:void 0)}constrain(t,e,s){const n=s?Math.ceil(e/s)*s:e,r=s?Math.round(t/s)*s:t;return Math.max(n,r)}getLaneSuggestions(t,e){const s=this.diagram.getClass("Lanes");if(!s||t instanceof s)return[];const n=this.diagram.nodes.filter(p=>p instanceof s).flatMap(p=>{const f=p.box;return p.laneLayouts.filter(({lane:y})=>y.children.length===0).map(y=>({lanes:p,laneBox:f,layout:y}))}).filter(({laneBox:p,layout:f})=>{const y=p.x+(f.depth+1)*s.laneHeaderWidth,v=p.y+f.y;return e.middle.x>=y&&e.middle.x<=p.x+p.width&&e.middle.y>=v&&e.middle.y<=v+f.height}).sort((p,f)=>f.layout.depth-p.layout.depth)[0];if(!n)return[];const r=this.diagram.getExtension(U)?.gridSize??50,{laneBox:a,layout:c}=n,l=a.y+c.y,h=[a.x+(c.depth+1)*s.laneHeaderWidth,a.x+a.width],x=[{nodeY:l+(c.height-e.height)/2,guideY:l+c.height/2,range:h}];if(c.height>r*3){const p=r/2;x.push({nodeY:l+p,guideY:l+p,range:h},{nodeY:l+c.height-p-e.height,guideY:l+c.height-p,range:h})}return x}getHorizontalLaneSuggestions(t,e){const s=this.diagram.getClass("Lanes");if(!s||t instanceof s)return[];const n=this.diagram.nodes.filter(f=>f instanceof s).flatMap(f=>{const y=f.box;return f.laneLayouts.filter(({lane:v})=>v.children.length===0).map(v=>({laneBox:y,layout:v}))}).filter(({laneBox:f,layout:y})=>{const v=f.x+(y.depth+1)*s.laneHeaderWidth,k=f.y+y.y;return e.middle.x>=v&&e.middle.x<=f.x+f.width&&e.middle.y>=k&&e.middle.y<=k+y.height}).sort((f,y)=>y.layout.depth-f.layout.depth)[0];if(!n)return[];const a=(this.diagram.getExtension(U)?.gridSize??50)/2,{laneBox:c,layout:l}=n,d=c.y+l.y,h=c.x+(l.depth+1)*s.laneHeaderWidth,x=c.x+c.width,p=[d,d+l.height];return[{nodeX:h+a,guideX:h+a,range:p},{nodeX:x-a-e.width,guideX:x-a,range:p}]}};o(qi,"BPMNGridSnap");let ce=qi;const Zi=class Zi extends j{autopan=new Ne(this.diagram);session=null;unbindSession=o(()=>{},"unbindSession");init(){}resizeWidth(t,e){e.stopImmediatePropagation();const s=this.diagram.canvas.inverseFit(new m(e)),n=t.state.box.width;this.startSession(e,r=>{const a=this.diagram.canvas.inverseFit(r);this.diagram.getExtension(ce).resize(t,{width:n+a.x-s.x})})}resizeHeight(t,e,s,n){n.stopImmediatePropagation();const r=this.diagram.canvas.inverseFit(new m(n));this.startSession(n,a=>{const c=this.diagram.canvas.inverseFit(a);this.diagram.getExtension(ce).resize(t,{laneId:e,height:s+c.y-r.y})})}startSession(t,e){this.endSession(),this.session={pointer:new m(t),resize:e},this.unbindSession=ot(B(this,"mousemove",this.handleMouseMove),B(this,"mouseup",this.endSession),$n(this.handleAutopan,30))}handleMouseMove(t){this.session&&(this.session.pointer=new m(t),this.session.resize(this.session.pointer))}handleAutopan=o(()=>{this.session&&(this.autopan.displace(this.session.pointer),this.session.resize(this.session.pointer))},"handleAutopan");endSession(){this.session=null;const t=this.unbindSession;this.unbindSession=()=>{},t()}};o(Zi,"BPMNLaneResizer");let Ct=Zi;function Aa(i){i.preventDefault(),i.stopPropagation(),i.nativeEvent.stopImmediatePropagation()}o(Aa,"stopToolEvent");const Ia=w.observer(({node:i})=>{const t=i.box,e=E.useRef(null),s=i.laneLayouts;return u.jsxs(u.Fragment,{children:[s.map(({lane:n,depth:r,y:a,height:c,siblingCount:l})=>{const d=new b([t.x+r*lt.laneHeaderWidth,t.y+a,lt.laneHeaderWidth,c]),h=ie(i,d),x=i.editingLaneId===n.name;return E.createElement("div",{...h,key:n.name,className:`node__screenHitArea lane__screenHeader${x?" lane__screenHeader--editing":""}${i.selected?" selected":""}`,onDoubleClick:o(()=>i.renameLane(n.name),"onDoubleClick")},!x&&u.jsx("span",{className:"lane__screenLabel",style:{fontSize:`calc(${lt.laneHeaderFontSize}px * var(--diagram-canvas-scale, 1))`},children:n.label}),x&&u.jsx("input",{className:"lane__screenLabelInput",autoFocus:!0,value:n.label,onMouseDown:o(p=>p.nativeEvent.stopImmediatePropagation(),"onMouseDown"),onKeyDownCapture:o(p=>{i.editionMode&&!Rn(p.nativeEvent)&&p.nativeEvent.stopImmediatePropagation()},"onKeyDownCapture"),onKeyDown:o(p=>{if(p.code!=="Tab")return;p.preventDefault();const f=s.findIndex(({lane:k})=>k.name===n.name),y=p.shiftKey?-1:1,v=s[(f+y+s.length)%s.length];i.renameLane(v.lane.name)},"onKeyDown"),onChange:o(p=>{g.runInAction(()=>{n.label=p.target.value})},"onChange"),ref:o(p=>{p&&e.current!==n.name&&(e.current=n.name,p.select())},"ref")}),u.jsxs("div",{className:"lane__headerTools",onMouseDown:Aa,children:[u.jsx("button",{title:"Rename lane","aria-label":"Rename lane",onClick:o(()=>i.renameLane(n.name),"onClick"),children:u.jsx(Sa,{})}),u.jsx("button",{title:"Insert lane before","aria-label":"Insert lane before",onClick:o(()=>i.insertLane(n.name,"before"),"onClick"),children:u.jsx(ka,{})}),u.jsx("button",{title:n.children.length?"Remove subdivision":"Subdivide lane","aria-label":n.children.length?"Remove subdivision":"Subdivide lane",onClick:o(()=>n.children.length?i.removeSubdivision(n.name):i.subdivideLane(n.name),"onClick"),children:n.children.length?u.jsx(Un,{}):u.jsx(Pa,{})}),l>1&&u.jsx("button",{title:"Remove lane","aria-label":"Remove lane",onClick:o(()=>i.removeLane(n.name),"onClick"),children:u.jsx(Un,{})}),u.jsx("button",{title:"Insert lane after","aria-label":"Insert lane after",onClick:o(()=>i.insertLane(n.name,"after"),"onClick"),children:u.jsx(_a,{})})]}))}),u.jsxs(u.Fragment,{children:[u.jsx("div",{...ie(i,new b([t.x+t.width-4,t.y,8,t.height])),className:"lane__screenWidthResizeBar",onMouseDown:o(n=>i.diagram.getExtension(Ct).resizeWidth(i,n.nativeEvent),"onMouseDown")}),u.jsx("div",{...ie(i,new b([t.x+t.width-5,t.y+t.height/2-5,10,10])),className:"lane__screenWidthResize",onMouseDown:o(n=>i.diagram.getExtension(Ct).resizeWidth(i,n.nativeEvent),"onMouseDown")}),s.map(({lane:n,y:r,height:a})=>E.createElement("div",{...ie(i,new b([t.x,t.y+r+a-3,t.width,6])),key:`resize-${n.name}`,className:"lane__screenHeightResize",onMouseDown:o(c=>i.diagram.getExtension(Ct).resizeHeight(i,n.name,a,c.nativeEvent),"onMouseDown")}))]})]})});function Lt(i){return i.children.length?i.children.reduce((t,e)=>t+Lt(e),0):i.height}o(Lt,"laneHeight");function As(i){return i.children.length?i.children.reduce((t,e)=>t+As(e),0):1}o(As,"leafCount");function qn(i,t=0,e=0){const s=[];let n=e;return i.forEach(r=>{const a=Lt(r);s.push({lane:r,depth:t,y:n,height:a,siblingCount:i.length}),r.children.length&&s.push(...qn(r.children,t+1,n)),n+=a}),s}o(qn,"flattenLanes");function bt(i,t){for(let e=0;e<i.length;e++){const s=i[e];if(s.name===t)return{lane:s,siblings:i,index:e};const n=bt(s.children,t);if(n)return n}return null}o(bt,"findLane");function Zn(i,t){if(!i.children.length){i.height=Math.max(lt.minimumLaneHeight,t);return}let e=t-Lt(i);for(let s=i.children.length-1;s>=0;s--){const n=i.children[s],r=Lt(n),a=As(n)*lt.minimumLaneHeight,c=Math.max(a-r,e);if(Zn(n,r+c),e-=c,e>=0)break}}o(Zn,"resizeLaneLeaves");const F=class F extends ct{constructor(t,e){super(t,{...e,label:"",zIndex:50,groupChildren:!0}),g.makeObservable(this,{pools:g.observable,laneLayouts:g.computed,addPool:g.action,insertLane:g.action,subdivideLane:g.action,removeSubdivision:g.action,removeLane:g.action,resizeLane:g.action,renameLane:g.action,editionLaneId:g.observable}),this.classList.add("bpm__lanes"),this.state.box.width=300,this._gateways.clear()}get box(){const t=this.pools.reduce((e,s)=>e+Lt(s),0);return new b([this.state.box.x,this.state.box.y,this.state.box.width,t])}get laneLayouts(){return qn(this.pools)}get editingLaneId(){return this.editionLaneId}nextPool(){const t=new Set(this.laneLayouts.map(({lane:s})=>s.name));let e=0;for(;t.has(`pool${e}`);)e++;return{label:`Pool ${e}`,name:`pool${e}`,height:F.laneHeight,children:[]}}addPool(){if(this.emit(new ae(this)).cancelled)return this.pools.at(-1);const t=this.nextPool();return this.pools.push(t),t}insertLane(t,e){const s=bt(this.pools,t);!s||this.emit(new ae(this)).cancelled||s.siblings.splice(s.index+(e==="after"?1:0),0,this.nextPool())}subdivideLane(t){const e=bt(this.pools,t);if(!e||e.lane.children.length||this.emit(new ae(this)).cancelled)return;const s=this.nextPool(),n=this.nextPool(),r=Math.max(e.lane.height,F.minimumLaneHeight*2);s.height=r/2,n.height=r/2,e.lane.children=[s,n]}removeSubdivision(t){const e=bt(this.pools,t);!e||!e.lane.children.length||(e.lane.height=Lt(e.lane),e.lane.children=[])}removeLane(t){const e=bt(this.pools,t);!e||e.siblings.length<=1||e.siblings.splice(e.index,1)}resizeLane(t,e,s){const n=bt(this.pools,t);if(!n)return;const r=As(n.lane)*F.minimumLaneHeight,a=s?Math.ceil(r/s)*s:r;Zn(n.lane,Math.max(e,a))}renameLane(t){if(bt(this.pools,t)){if(!this.editionMode){const e=this.diagram?.getExtension(De);e?e.editNode(this):this.edit()}this.editionLaneId=t}}editionLaneId=null;previousPools=[];cancel(){this.editionLaneId=null,this.pools=this.previousPools,this.previousPools=[],super.cancel()}confirm(){return super.confirm()?(this.editionLaneId=null,this.previousPools=[],!0):!1}edit(){super.edit(),this.previousPools=re(this.pools)}resetPools(){this.pools=[]}deserialize(t){super.deserialize(t),this.pools=t.pools}serialize(){return{...super.serialize(),pools:re(this.pools)}}pools=[{label:"Default",name:"default",height:F.laneHeight,children:[]}];RenderScreen=Ia;RenderOverlay=w.observer(()=>{const t=this.laneLayouts,e=this.box;return u.jsx("div",{...V(this),children:u.jsxs("svg",{className:"lane__svg",viewBox:`0 0 ${e.width} ${e.height}`,preserveAspectRatio:"none",children:[u.jsx("rect",{className:"lane__background",width:e.width,height:e.height}),t.map(({lane:s,depth:n,y:r,height:a})=>{const c=n*F.laneHeaderWidth,l=c+F.laneHeaderWidth,d=r;return u.jsxs("g",{children:[u.jsx("rect",{className:"lane__head",x:c,y:d,width:F.laneHeaderWidth,height:a,onDoubleClick:o(()=>this.renameLane(s.name),"onDoubleClick")}),u.jsx("rect",{className:"lane__content",x:l,y:d,width:Math.max(0,e.width-l),height:a})]},s.name)})]})})})};o(F,"Lanes"),K(F,"laneHeaderWidth",50),K(F,"laneHeight",250),K(F,"laneHeaderFontSize",14),K(F,"minimumLaneHeight",150),K(F,"minimumWidthInGrids",10);let lt=F;const Ki=class Ki extends ne{constructor(t){super(t),this.registerExtension(ce),this.registerExtension(Ct),this.registerClass(ct),this.registerClass(Ss),this.registerClass(ks),this.registerClass(_s),this.registerClass(lt),this.registerClass(Ps)}};o(Ki,"BPMDiagram");let Is=Ki;const Ji=class Ji extends Pt{kind="default";constructor(t,e){super(t,e),g.makeObservable(this,{kind:g.observable,setKind:g.action}),this.setKind(e.kind??"default")}setKind(t){switch(this.kind=t,t){case"trigger":this.state.stroke="#38bdf8",this.state.lineStyle="solid",this.state.arrowHeadEnd="triangle-filled";break;case"condition-true":this.state.stroke="#22c55e",this.state.lineStyle="solid",this.state.arrowHeadEnd="triangle-filled";break;case"condition-false":this.state.stroke="#ef4444",this.state.lineStyle="dashed",this.state.arrowHeadEnd="triangle-filled";break;default:this.state.stroke=void 0,this.state.lineStyle="solid",this.state.arrowHeadEnd="arrow";break}}serialize(){return{...super.serialize(),kind:this.kind}}deserialize(t){super.deserialize(t),this.setKind(t.kind??"default")}};o(Ji,"AgentEdge");let Fe=Ji;const Qi=class Qi extends et{payload;constructor(t,e){super(t,e),this.classList.add("agent__node","diagram__node"),this.payload=this.mergePayload(e.payload),g.makeObservable(this,{payload:g.observable.ref,replacePayload:g.action,updatePayload:g.action})}mergePayload(t){return{...this.defaultPayload(),...t??{}}}replacePayload(t){this.payload=this.mergePayload(t)}updatePayload(t){this.payload={...this.payload,...t}}serialize(){return{...super.serialize(),kind:this.kind,payload:re(this.payload)}}deserialize(t){super.deserialize(t),this.payload=this.mergePayload(t.payload)}};o(Qi,"AgentNode");let vt=Qi;const tn=class tn extends vt{kind="action";constructor(t,e){super(t,{...e,box:e.box??new b([0,0,220,110])}),this.classList.add("agent__action")}defaultPayload(){return{actionType:"task",operation:"",inputRef:"",outputRef:"",metadata:{}}}RenderOverlay=w.observer(()=>u.jsx("div",{...V(this)}))};o(tn,"ActionNode");let Cs=tn;const en=class en extends vt{kind="condition";constructor(t,e){super(t,{...e,box:e.box??new b([0,0,180,120])}),this.classList.add("agent__condition")}defaultPayload(){return{expression:"",language:"rule",trueLabel:"True",falseLabel:"False",metadata:{}}}RenderOverlay=w.observer(()=>u.jsx("div",{...V(this),children:u.jsx("svg",{viewBox:`0 0 ${this.state.box.width} ${this.state.box.height}`,preserveAspectRatio:"none",style:{width:"100%",height:"100%"},children:u.jsx("polygon",{points:`${this.state.box.width/2} 0 ${this.state.box.width} ${this.state.box.height/2} ${this.state.box.width/2} ${this.state.box.height} 0 ${this.state.box.height/2}`})})}))};o(en,"ConditionNode");let Ls=en;const sn=class sn extends vt{kind="outcome";constructor(t,e){super(t,{...e,box:e.box??new b([0,0,180,90])}),this.classList.add("agent__outcome")}defaultPayload(){return{status:"success",code:"",summary:"",metadata:{}}}RenderOverlay=w.observer(()=>u.jsx("div",{...V(this)}))};o(sn,"OutcomeNode");let js=sn;const nn=class nn extends vt{kind="trigger";constructor(t,e){super(t,{...e,box:e.box??new b([0,0,170,90])}),this.classList.add("agent__trigger")}defaultPayload(){return{triggerType:"manual",source:"",eventName:"",schedule:"",metadata:{}}}RenderOverlay=w.observer(()=>u.jsx("div",{...V(this)}))};o(nn,"TriggerNode");let $s=nn;const rn=class rn extends ne{constructor(t){super(t),this.registerClass(vt),this.registerClass($s),this.registerClass(Cs),this.registerClass(Ls),this.registerClass(js),this.registerClass(Fe),this.setDefaultEdge(Fe)}};o(rn,"AgentDiagram");let Bs=rn;const an=class an extends Pt{isEditingLabel=!1;labelDraft="";constructor(t,e){super(t,e),g.makeObservable(this,{isEditingLabel:g.observable,labelDraft:g.observable,setLabel:g.action,beginLabelEdit:g.action,cancelLabelEdit:g.action,confirmLabelEdit:g.action}),this.state.arrowHeadEnd=this.state.arrowHeadEnd??"arrow",this.state.arrowHeadStart=this.state.arrowHeadStart??"none",this.state.lineStyle=this.state.lineStyle??"solid",this.state.pathType=this.state.pathType??"angle",this.state.label=this.state.label??"",this.state.labelPositioning=this.state.labelPositioning??new m([0,0]),this.state.strokeWidth=this.state.strokeWidth??2,this.labelDraft=this.state.label}setLabel(t){this.state.label=t,this.labelDraft=t}beginLabelEdit(){this.labelDraft=this.state.label??"",this.isEditingLabel=!0}cancelLabelEdit(){this.labelDraft=this.state.label??"",this.isEditingLabel=!1}confirmLabelEdit(){this.state.label=this.labelDraft??"",this.isEditingLabel=!1}serialize(){return{...super.serialize(),label:this.state.label,labelPositioning:this.state.labelPositioning?.raw}}deserialize(t){super.deserialize(t),this.state.label=t.label??"",this.state.labelPositioning=new m(t.labelPositioning??[0,0]),this.labelDraft=this.state.label,this.isEditingLabel=!1}};o(an,"CommunicationEdge");let He=an;const on=class on extends et{constructor(t,e){super(t,{...e,box:e.box??new b([0,0,180,96]),fill:e.fill,stroke:e.stroke,label:e.label??""}),this.classList.add("communication__node","diagram__node")}};o(on,"CommunicationNode");let le=on;const cn=class cn extends le{communicationNodeType="actor";constructor(t,e){super(t,{...e,box:e.box??new b([0,0,170,90]),fill:e.fill??"#0f2230",stroke:e.stroke??"#7dd3fc",label:e.label??"Actor"}),this.classList.add("communication__node--actor")}RenderOverlay=w.observer(()=>u.jsx("div",{...V(this),children:u.jsx("div",{className:"communication__node-badge",children:"Actor"})}))};o(cn,"CommunicationActorNode");let Ge=cn;const ln=class ln extends le{communicationNodeType="object";constructor(t,e){super(t,{...e,box:e.box??new b([0,0,190,96]),fill:e.fill??"#182412",stroke:e.stroke??"#bef264",label:e.label??"Object"}),this.classList.add("communication__node--object")}RenderOverlay=w.observer(()=>u.jsx("div",{...V(this),children:u.jsx("div",{className:"communication__node-badge",children:"Object"})}))};o(ln,"CommunicationObjectNode");let Re=ln;const dn=class dn extends le{communicationNodeType="controller";constructor(t,e){super(t,{...e,box:e.box??new b([0,0,200,100]),fill:e.fill??"#2b1618",stroke:e.stroke??"#fda4af",label:e.label??"Controller"}),this.classList.add("communication__node--controller")}RenderOverlay=w.observer(()=>u.jsx("div",{...V(this),children:u.jsx("div",{className:"communication__node-badge",children:"Controller"})}))};o(dn,"CommunicationControllerNode");let Ye=dn;const hn=class hn extends ne{constructor(t){super(t),this.registerClass(Ge),this.registerClass(Re),this.registerClass(Ye),this.registerClass(He),this.setDefaultEdge(He)}get selectedNodes(){return this.getExtension(D).selectedNodes}get selectedEdges(){return this.getExtension(D).selectedEdges}createNodeFromClientPoint(t,e,s){const n=this.canvas.inverseFit(new m([e,s]));return this.createNodeAtCanvasPoint(t,n.x,n.y)}createNodeAtCanvasPoint(t,e,s){const n=this.instantiateNode(t);this.add(n);const r=new m([e-n.box.width/2,s-n.box.height/2]);return n.setPosition(r),this.getExtension(D).clearSelection(),this.getExtension(D).selectNode(n),n}createNodeInViewportCenter(t){const e=this.canvas.frameDimensions,s=new m([e.x+e.width/2,e.y+e.height/2]);return this.createNodeFromClientPoint(t,s.x,s.y)}instantiateNode(t){const e={id:ds(this,"node"),label:Ca(t),box:new b([0,0,180,96])};return t==="actor"?new Ge(this,e):t==="controller"?new Ye(this,e):new Re(this,e)}};o(hn,"CommunicationDiagram");let Ns=hn;function Ca(i){return i==="actor"?"Actor":i==="controller"?"Controller":"Object"}o(Ca,"defaultLabelForType");const un=class un extends m{direction="left";get rawDirectedPoint(){return{x:this.x,y:this.y,direction:this.direction}}stepBack(){switch(this.direction){case"down":this.y--;break;case"left":this.x++;break;case"right":this.x--;break;case"up":this.y++;break}return this}stepForward(){switch(this.direction){case"down":this.y++;break;case"left":this.x--;break;case"right":this.x++;break;case"up":this.y--;break}return this}};o(un,"DirectedPoint");let Os=un;const La=Object.freeze(Object.defineProperty({__proto__:null,DirectedPoint:Os},Symbol.toStringTag,{value:"Module"}));I.AgentDiagram=Bs,I.BPMDiagram=Is,I.CommunicationDiagram=Ns,I.Diagram=z,I.DiagramEditor=pa,I.ToolsStates=Oe,Object.defineProperty(I,Symbol.toStringTag,{value:"Module"})}));
6
+ a ${t},${t} 0 1,0 -${2*t},0`,"getCirclePath"),wl=ee(A.observer(()=>{const t=q.use().getExtension(Y);return t.selectionMode?d.jsx(d.Fragment,{children:d.jsx(ge,{paths:[{d:Lr(t.box,0),strokeWidth:1}],labelOffset:new y,className:"selection_square"})}):null})),vl=tl(()=>null);function El(n){return Array.isArray(n)?n:[n]}o(El,"arrayOrArray");const $r=M.forwardRef(({children:n,className:t,style:e},s)=>d.jsx("svg",{ref:s,className:t,width:"100%",height:"100%",style:{position:"absolute",top:0,left:0,pointerEvents:"none",...e},xmlns:"http://www.w3.org/2000/svg",children:n})),_l=A.observer(()=>{const n=q.use();return n.extensions.map(t=>{const e=t.RenderDiagram;return e?d.jsx(e,{diagram:n,extension:t},t.constructor.name):null})}),Sl=A.observer(({edge:n,label:t})=>{const[e,s]=M.useState(t.size),[i,a]=M.useState({x:0,y:0}),r=M.useRef(null),c=M.useRef(null),l={"--edge-label-x":`${t.position.x}px`,"--edge-label-y":`${t.position.y}px`,"--edge-label-height":`calc(${t.size.height}px * var(--diagram-canvas-scale, 1))`,"--edge-label-text-align":t.alignment,"--edge-label-width":`calc(${t.size.width}px * var(--diagram-canvas-scale, 1))`},h=o(()=>{const m=r.current;m&&m.autopanTimer!==null&&(clearInterval(m.autopanTimer),m.autopanTimer=null)},"clearDragAutopan"),u=o(()=>{const m=r.current;if(!m?.moved||!n.diagram)return;m.autopan.displace(m.latestPointer);const b=n.diagram.canvas.inverseFit(m.latestPointer).substract(m.startMouse),w=m.startPosition.copy().sum(b),v=n.diagram.getExtension(_t)?.align(n,t,w)??w;t.setPosition(n.diagram.getExtension(Fe)?.constrain(m.startPosition,v,w)??v)},"updateDraggedLabel"),f=o(m=>{if(m.button!==0||!n.diagram)return;m.preventDefault(),m.stopPropagation(),m.nativeEvent.stopImmediatePropagation();const x=n.diagram,b=x.getExtension(_t),w=new ut(x),v=new y(m.nativeEvent),_=x.canvas.inverseFit(v),E=t.position.copy();let C=v,k=!1,P=null;const I=o(()=>{if(!k)return;w.displace(C);const nt=x.canvas.inverseFit(C).substract(_),ot=E.copy().sum(nt),vt=b?.align(n,t,ot)??ot;t.setPosition(x.getExtension(Fe)?.constrain(E,vt,ot)??vt)},"update"),B=o(nt=>{C=new y(nt),!(!k&&C.copy().substract(v).norm<5)&&(k=!0,P===null&&(P=setInterval(I,30)),I())},"move"),X=o(()=>{P!==null&&clearInterval(P),document.removeEventListener("pointermove",B),document.removeEventListener("pointerup",wt),document.removeEventListener("pointercancel",rt),b?.clear()},"cleanup"),wt=o(()=>{X(),k&&t.commitPosition()},"finish"),rt=o(()=>{X(),t.setPosition(E)},"cancel");b?.clear(),document.addEventListener("pointermove",B,{passive:!1}),document.addEventListener("pointerup",wt,{once:!0}),document.addEventListener("pointercancel",rt,{once:!0})},"startEditingDrag"),p=o((m,x)=>{const b=m.currentTarget.parentElement;if(!b||!n.diagram)return;m.preventDefault(),m.stopPropagation(),m.nativeEvent.stopImmediatePropagation();const w=b.getBoundingClientRect(),v=Math.max(n.diagram.canvas.scale,.001);c.current={direction:x,height:w.height/v,mouseX:m.clientX,mouseY:m.clientY,offset:{x:0,y:0},position:t.position.copy(),size:e,width:w.width/v};const _=o(C=>{const k=c.current;if(!k)return;C.preventDefault();const P=Math.max(n.diagram.canvas.scale,.001),I=(C.clientX-k.mouseX)/P,B=(C.clientY-k.mouseY)/P,X=k.direction.includes("w"),wt=k.direction.includes("n"),rt=k.direction.includes("e"),nt=k.direction.includes("s"),ot=Math.max(0,k.width+(rt?I:X?-I:0)),vt=Math.max(0,k.height+(nt?B:wt?-B:0));s({height:vt,width:ot}),k.size={height:vt,width:ot},k.offset={x:X?k.width-ot:0,y:wt?k.height-vt:0},a(k.offset)},"move"),E=o(()=>{const C=c.current;if(c.current=null,document.removeEventListener("pointermove",_),document.removeEventListener("pointerup",E),!C||!n.diagram)return;let k=!1;(C.size.width!==t.size.width||C.size.height!==t.size.height)&&(t.setSize(C.size),k=!0);const P=C.offset;(P.x||P.y)&&(t.setPosition(C.position.copy().sum([P.x,P.y])),k=!0,a({x:0,y:0})),k&&t.commitPosition(),n.diagram.getExtension(_t)?.clear()},"finish");document.addEventListener("pointermove",_,{passive:!1}),document.addEventListener("pointerup",E,{once:!0})},"startResize");if(t.isEditing){const m={...l,"--edge-label-editor-height":`calc(${e.height}px * var(--diagram-canvas-scale, 1))`,"--edge-label-editor-offset-x":`calc(${i.x}px * var(--diagram-canvas-scale, 1))`,"--edge-label-editor-offset-y":`calc(${i.y}px * var(--diagram-canvas-scale, 1))`,"--edge-label-editor-width":`calc(${e.width}px * var(--diagram-canvas-scale, 1))`};return d.jsxs("div",{className:"edge-label-editor","data-edge-id":n.id,"data-edge-label-id":t.id,onPointerDown:o(x=>x.stopPropagation(),"onPointerDown"),style:m,children:[d.jsx("textarea",{"aria-label":"Edge label",autoFocus:!0,className:"edge-screen-label edge-screen-label--editing",onBlur:o(()=>t.confirmEdit(),"onBlur"),onChange:o(x=>t.setDraft(x.target.value),"onChange"),onClick:o(x=>x.stopPropagation(),"onClick"),onDoubleClick:o(x=>x.stopPropagation(),"onDoubleClick"),onPointerDown:o(x=>x.stopPropagation(),"onPointerDown"),onKeyDown:o(x=>{if(x.key==="Enter"){if(x.shiftKey){x.stopPropagation();return}x.preventDefault(),t.confirmEdit()}else x.key==="Escape"&&(x.preventDefault(),t.cancelEdit());x.stopPropagation()},"onKeyDown"),cols:30,rows:2,value:t.draft}),["n","ne","e","se","s","sw","w","nw"].map(x=>d.jsx("span",{"aria-hidden":"true",className:`edge-label-editor__resize-handle edge-label-editor__resize-handle--${x}`,onPointerDown:o(b=>p(b,x),"onPointerDown")},x)),d.jsxs("div",{className:"edge-label-editor__toolbar",children:[d.jsx("button",{"aria-label":"Move label",onPointerDown:f,title:"Move label",type:"button",children:d.jsx(Ko,{})}),d.jsx("button",{"aria-label":"Align left","aria-pressed":t.alignment==="left",className:t.alignment==="left"?"selected":"",onMouseDown:o(x=>{x.preventDefault(),x.stopPropagation()},"onMouseDown"),onClick:o(()=>t.setAlignment("left"),"onClick"),title:"Align left",type:"button",children:d.jsx($o,{})}),d.jsx("button",{"aria-label":"Align center","aria-pressed":t.alignment==="center",className:t.alignment==="center"?"selected":"",onMouseDown:o(x=>{x.preventDefault(),x.stopPropagation()},"onMouseDown"),onClick:o(()=>t.setAlignment("center"),"onClick"),title:"Align center",type:"button",children:d.jsx(zo,{})}),d.jsx("button",{"aria-label":"Align right","aria-pressed":t.alignment==="right",className:t.alignment==="right"?"selected":"",onMouseDown:o(x=>{x.preventDefault(),x.stopPropagation()},"onMouseDown"),onClick:o(()=>t.setAlignment("right"),"onClick"),title:"Align right",type:"button",children:d.jsx(Lo,{})}),d.jsx("button",{"aria-label":"Delete label",onMouseDown:o(x=>{x.preventDefault(),x.stopPropagation()},"onMouseDown"),onClick:o(()=>t.delete(),"onClick"),title:"Delete label",type:"button",children:d.jsx(rr,{})})]})]})}return d.jsx("span",{className:"edge-screen-label","data-edge-id":n.id,"data-edge-label-id":t.id,style:l,onPointerDown:o(m=>{m.button!==0||!n.diagram||(m.preventDefault(),m.stopPropagation(),m.currentTarget.setPointerCapture(m.pointerId),r.current={autopan:new ut(n.diagram),autopanTimer:null,latestPointer:new y(m.nativeEvent),pointerId:m.pointerId,startMouse:n.diagram.canvas.inverseFit(new y(m.nativeEvent)),startMouseScreen:new y(m.nativeEvent),startPosition:t.position.copy(),moved:!1},n.diagram?.getExtension(_t)?.clear())},"onPointerDown"),onPointerMove:o(m=>{const x=r.current;!x||x.pointerId!==m.pointerId||!n.diagram||(x.latestPointer=new y(m.nativeEvent),x.latestPointer.copy().substract(x.startMouseScreen).norm<5&&!x.moved)||(x.moved=!0,x.autopanTimer===null&&(x.autopanTimer=setInterval(u,30)),u())},"onPointerMove"),onPointerUp:o(m=>{const x=r.current;!x||x.pointerId!==m.pointerId||(m.stopPropagation(),h(),m.currentTarget.hasPointerCapture(m.pointerId)&&m.currentTarget.releasePointerCapture(m.pointerId),x.moved&&t.position.copy(!1).substract(x.startPosition).norm>.001&&t.commitPosition(),x.moved||t.beginEdit(),n.diagram?.getExtension(_t)?.clear(),r.current=null)},"onPointerUp"),onPointerCancel:o(m=>{const x=r.current;!x||x.pointerId!==m.pointerId||(h(),t.setPosition(x.startPosition),n.diagram?.getExtension(_t)?.clear(),r.current=null)},"onPointerCancel"),children:t.text})}),Ml=A.observer(({edge:n})=>n.labels.map(t=>d.jsx(Sl,{edge:n,label:t},t.id))),kl=A.observer(({node:n})=>{const t=n.RenderScreen;return t?d.jsx(t,{node:n,box:n.box,scale:n.diagram?.canvas.scale??1}):null}),Al=A.observer(()=>{const n=q.use();return d.jsxs("div",{className:"screen_renderers",children:[n.nodes.map(t=>d.jsx(kl,{node:t},t.id)),n.edges.map(t=>d.jsx(Ml,{edge:t},t.id)),d.jsx(_l,{})]})}),Pl=A.observer(({gateway:n})=>{const e=q.use().getExtension(le);return d.jsx(ge,{paths:[{d:bl(n.coordinates,n.radius),fill:n.fill,stroke:n.stroke,strokeWidth:n.strokeWidth}],className:"diagram__node__gateway","data-gateway-parent":n.parent.id,"data-gateway-id":n.id,"data-gateway-orientation":n.orientation,style:{pointerEvents:e.endpointDragActive?"none":void 0},onMouseEnter:o(()=>n.parent.setHovered(!0),"onMouseEnter"),onMouseOut:o(s=>{const i=s.relatedTarget;i instanceof Element&&i.closest(`[data-id="${n.parent.id}"], [data-gateway-parent="${n.parent.id}"]`)||n.parent.setState("hover",!1)},"onMouseOut")},n.id)}),Cl=A.observer(({node:n})=>{const e=q.use().getExtension(le);return d.jsx("path",{className:"diagram__node__edge_gateway",d:n.connectionBoundaryPath,"data-gateway-parent":n.id,fill:"none",stroke:"transparent",strokeWidth:16,vectorEffect:"non-scaling-stroke",style:{pointerEvents:e.endpointDragActive?"none":"stroke"},onMouseEnter:o(()=>n.setState("hover",!0),"onMouseEnter"),onMouseOut:o(s=>{const i=s.relatedTarget;i instanceof Element&&i.closest(`[data-id="${n.id}"], [data-gateway-parent="${n.id}"]`)||n.setState("hover",!1)},"onMouseOut")})}),Il=A.observer(({node:n})=>{const t=n.RenderOverlay;return t?d.jsx(t,{node:n,box:n.box}):null}),Dl=A.observer(()=>{const n=q.use();return d.jsx("div",{style:{width:`${n.canvas.size.x}px`,height:`${n.canvas.size.y}px`},children:n.nodes.map(t=>d.jsx(Il,{node:t},t.id))})}),jl=A.observer(({node:n})=>n.parent?d.jsx(d.Fragment,{children:!n.RenderOverlay&&d.jsx(ge,{paths:[{d:Lr(n.box,10),stroke:n.state.stroke,strokeWidth:n.state.strokewWidth??3,fill:n.state.fill}],onMouseOver:o(()=>n.setHovered(!0),"onMouseOver"),onMouseOut:o(t=>{const e=t.relatedTarget;e instanceof Element&&e.closest(`[data-id="${n.id}"], [data-gateway-parent="${n.id}"]`)||n.setHovered(!1)},"onMouseOut"),className:n.classList.string,label:n.state.label,labelOffset:n.coordinates.sum(n.box.size.half),labelFontSize:n.state.labelFontSize??14,selected:n.selected,"data-id":n.id},n.id)}):null),zr=A.observer(({edge:n,showDragHandles:t})=>d.jsx(qe,{edge:n,points:n.steps,endType:n.arrowHeadEnd??"arrow",startType:n.arrowHeadStart??"none",lineStyle:n.lineStyle??"solid",arrowSize:n.state.arrowSize,color:n.stroke,width:n.strokeWidth??2,draggable:t,onMidpointMouseDown:o((e,s)=>{n.dragStart(e,s)},"onMidpointMouseDown"),onEndpointMouseDown:o((e,s)=>{n.dragEndpoint(e,s)},"onEndpointMouseDown")})),Nl=ee(A.observer(()=>{const n=q.use(),t=n.getExtension(Y),e=t?.selectedNodes??[],s=t?.selectedEdges??[],i=e.length+s.length>1,a=[...n.nodes.filter(c=>!e.includes(c)),...e],r=i?[]:a.filter(c=>c.hovered||c.selected).flatMap(c=>c.gateways);return d.jsxs(d.Fragment,{children:[a.map(c=>d.jsx(jl,{node:c},c.id)),a.filter(c=>c.edgesAsGateways).map(c=>d.jsx(Cl,{node:c},`edge-gateway-${c.id}`)),n.edges.filter(c=>!s.includes(c)).map(c=>d.jsx(zr,{edge:c,showDragHandles:!i},c.id)),r.map(c=>d.jsx(Pl,{gateway:c},`${c.parent.id}-${c.id}`)),s.map(c=>d.jsx(zr,{edge:c,showDragHandles:!i},`selected-${c.id}`))]})}));function Tl(){return[d.jsx(Nl,{},"ScalableShapes"),d.jsx(Dl,{},"RenderNodeOverlays")]}o(Tl,"shapes");function Ll(n){if(!(n instanceof Element))return null;const t=n.closest("[data-gateway-parent]");return t?t.getAttribute("data-gateway-parent"):n.closest("[data-id]")?.getAttribute("data-id")??null}o(Ll,"hoverOwnerId");const $l=A.observer(({children:n})=>{const t=q.use(),e=t.getExtension(G);t.canvas.setGridSize(e?.gridSize??50);const s=[],i=[],a=[];return M.Children.forEach([...El(n),...Tl()],r=>{r.type.__scalable?s.push(r):r.type.__scalableBack?a.push(r):i.push(r)}),d.jsxs("div",{className:`canvas__frame ${t.showGrid?"canvas__frame--grid":""}`,onPointerLeave:o(()=>t.clearNodeHover(),"onPointerLeave"),onPointerMove:o(r=>{const c=t.getNodeById(Ll(r.target)??"");c?c.setHovered(!0):t.clearNodeHover()},"onPointerMove"),children:[d.jsxs("div",{ref:t.canvas.useRef,children:[a.length&&d.jsx($r,{className:"background",children:a}),i.length&&d.jsx("div",{className:"scalable_components",children:i}),s.length&&d.jsx($r,{className:"foreground",children:s})]}),d.jsx(Al,{})]})});function zl({children:n,className:t,...e}){return d.jsx("div",{...e,className:["stage",t].filter(Boolean).join(" "),children:n})}o(zl,"Stage");const Ol=ee(A.observer(()=>{const n=q.use(),t=n.getExtension(Zt),e=n.getExtension(_t),s=n.getExtension(Ce),i=[...t?.proposals??[],...n.extensions.flatMap(a=>a.alignmentProposals??[])];return d.jsxs(d.Fragment,{children:[i.map(a=>{const r=a.type==="h"?`M ${a.x} ${a.range[0]} V ${a.range[1]}`:`M ${a.range[0]} ${a.y} H ${a.range[1]}`;return d.jsx(ge,{className:"alignment_sugestion",paths:[{d:r}]},a.id)}),e?.proposals.map(a=>d.jsx(ge,{className:"alignment_sugestion",paths:[{d:`M ${a.from.x} ${a.from.y} L ${a.to.x} ${a.to.y}`}]},a.id)),s?.proposals.map(a=>{const r=`M ${a.from.x} ${a.from.y} L ${a.to.x} ${a.to.y}`;return d.jsx(ge,{className:"distance_balance_sugestion",paths:[{d:r,arrow:{position:"both",size:8}}]},r)})]})})),Fl=ee(A.observer(()=>{const t=q.use().getExtension(Ja);return t?.enabled?d.jsxs(d.Fragment,{children:[t.grid?.edges.map(e=>{const{from:s,to:i}=e,a=`M ${s.x} ${s.y} L ${i.x} ${i.y}`,r=t.highlighted.has(e);return d.jsx(qe,{className:`path_finding_grid_edge ${r?"highlighted":""}`,points:[s,i],endType:"none"},a)}),t.points?.length&&d.jsx(qe,{className:"path_finding_grid_edge_chosen",points:t.points})]}):null})),bt=8,Dn=2,Hl=120;function Bl(n,t){const e=Math.max(bt,Math.min(n.x,window.innerWidth-t.width-bt)),s=Math.max(bt,Math.min(n.y,window.innerHeight-t.height-bt));return{x:e,y:s}}o(Bl,"clampPosition");function Gl({item:n,onAction:t}){const e=!!n.submenu?.length,s=M.useRef(null),i=M.useRef(null),a=M.useRef(null),[r,c]=M.useState(!1),[l,h]=M.useState(!1),[u,f]=M.useState({left:0,top:-4,openToLeft:!1}),p=M.useCallback(()=>{if(!s.current||!i.current)return;const _=s.current.getBoundingClientRect(),E=i.current.getBoundingClientRect();let C=_.width-Dn,k=!1;_.right-Dn+E.width>window.innerWidth-bt&&(C=-E.width+Dn,k=!0),_.left+C<bt&&(C=bt-_.left,k=!1);let P=-4,I=_.top+P;I+E.height>window.innerHeight-bt&&(P-=I+E.height-(window.innerHeight-bt),I=_.top+P),I<bt&&(P+=bt-I),f({left:C,top:P,openToLeft:k}),h(!0)},[]);M.useEffect(()=>{r||h(!1)},[r]),M.useEffect(()=>()=>{a.current!==null&&window.clearTimeout(a.current)},[]),M.useLayoutEffect(()=>{r&&p()},[r,p]),M.useEffect(()=>{if(!r)return;const _=o(()=>{p()},"handleResize");return window.addEventListener("resize",_),()=>{window.removeEventListener("resize",_)}},[r,p]);const m=o(()=>{a.current!==null&&(window.clearTimeout(a.current),a.current=null)},"clearCloseTimeout"),x=o(()=>{e&&(m(),c(!0))},"openSubmenu"),b=o(()=>{m(),c(!1)},"closeSubmenu"),w=o(()=>{e&&(m(),a.current=window.setTimeout(()=>{c(!1),a.current=null},Hl))},"scheduleCloseSubmenu"),v=o(_=>{const E=_.relatedTarget;(!E||!_.currentTarget.contains(E))&&b()},"handleBlur");return d.jsxs("li",{ref:s,className:["diagram__context_menu_item",n.disabled&&"disabled",n.danger&&"danger",e&&"has_submenu",r&&"submenu_open"].filter(Boolean).join(" "),onMouseEnter:x,onMouseLeave:w,onFocusCapture:x,onBlurCapture:v,children:[d.jsxs("button",{type:"button",className:"diagram__context_menu_button",disabled:n.disabled,onClick:o(_=>{_.stopPropagation(),_.preventDefault(),t(n)},"onClick"),children:[d.jsx("span",{className:"diagram__context_menu_label",children:n.label}),e&&d.jsx("span",{className:"diagram__context_menu_chevron",children:u.openToLeft?"<":">"})]}),e&&r&&d.jsx("div",{ref:i,className:"diagram__context_menu_submenu",style:{left:u.left,top:u.top,opacity:l?1:0},children:d.jsx("div",{className:"diagram__context_menu diagram__context_menu--nested",children:d.jsx(Or,{items:n.submenu,onAction:t})})})]})}o(Gl,"MenuItem");function Or({items:n,onAction:t}){return d.jsx("ul",{className:"diagram__context_menu_list",children:n.map((e,s)=>d.jsx(Gl,{item:e,onAction:t},`${e.label}_${s}`))})}o(Or,"MenuItems");const Rl=A.observer(({menu:n})=>{const t=M.useRef(null),[e,s]=M.useState(n.position);return M.useEffect(()=>{n.opened&&s(n.position)},[n.openVersion,n.opened,n.position]),M.useLayoutEffect(()=>{if(!n.opened||!t.current)return;const{width:i,height:a}=t.current.getBoundingClientRect(),{x:r,y:c}=Bl(n.position,{width:i,height:a});(r!==e.x||c!==e.y)&&s({x:r,y:c})},[n.openVersion,n.opened,n.position,e.x,e.y]),M.useEffect(()=>{if(!n.opened)return;const i=o(l=>{l.code==="Escape"&&n.close()},"closeOnEscape"),a=o(l=>{const h=l.target;h&&t.current?.contains(h)||n.close()},"closeOnOutsideMouseDown"),r=o(l=>{const h=l.target;if(h&&t.current?.contains(h)){l.preventDefault();return}n.close()},"closeOnOutsideContextMenu"),c=o(()=>{n.close()},"closeOnResize");return document.addEventListener("keydown",i),document.addEventListener("mousedown",a,!0),document.addEventListener("contextmenu",r,!0),window.addEventListener("resize",c),()=>{document.removeEventListener("keydown",i),document.removeEventListener("mousedown",a,!0),document.removeEventListener("contextmenu",r,!0),window.removeEventListener("resize",c)}},[n,n.openVersion,n.opened]),!n.opened||!n.elements.length?null:d.jsx("div",{className:"diagram__context_menu_layer",children:d.jsx("div",{ref:t,className:"diagram__context_menu",style:{left:e.x,top:e.y},onMouseDown:o(i=>{i.stopPropagation()},"onMouseDown"),onContextMenu:o(i=>{i.preventDefault(),i.stopPropagation()},"onContextMenu"),children:d.jsx(Or,{items:n.elements,onAction:o(i=>{n.execute(i)},"onAction")})})})}),Aa=class Aa{_elements=[];_opened=!1;_position={x:0,y:0};_openVersion=0;Component=o(()=>d.jsx(Rl,{menu:this}),"Component");constructor(){g.makeAutoObservable(this,{Component:!1},{autoBind:!0})}get elements(){return this._elements}get opened(){return this._opened}get position(){return this._position}get openVersion(){return this._openVersion}open(t,e={}){if(!t.length){this.close();return}const s=ae.getInstance().coordinates;this._elements=t,this._position={x:e.x??s.x,y:e.y??s.y},this._openVersion+=1,this._opened=!0}close(){this._opened&&(this._opened=!1,this._elements=[])}execute(t){if(!t.disabled){try{const e=t.onClick();e instanceof Promise&&e.catch(()=>{})}catch{}t.submenu?.length||this.close()}}};o(Aa,"ContextMenuStore");let jn=Aa;const Nn=new jn,Ue=o(()=>{},"noop");function Vl(){return typeof navigator<"u"&&!!navigator.clipboard?.writeText&&!!navigator.clipboard?.readText}o(Vl,"hasClipboardSupport");function Fr(n){return()=>{n().catch(()=>{})}}o(Fr,"runAsync");function Yl(n,t,e){const s=n.getExtension(Y),i=t.closest(".diagram__node")?.dataset.id,a=t.closest(".edge")?.dataset.id,r=i?n.getNodeById(i):void 0,c=a?n.getEdgeById(a):void 0;r&&!r.selected?(s.clearSelection(),s.selectNode(r)):c&&!c.state.selected&&(s.clearSelection(),s.selectEdge(c));const l=s.selectedNodes,h=s.selectedEdges,u=l.length+h.length>0,f=Vl(),p=f&&l.length>0,m=o(()=>{s.selectedNodes.forEach(w=>{n.delete(w)}),s.selectedEdges.forEach(w=>{n.disconnect(w)})},"deleteSelection"),x=[];r?x.push({label:`Node: ${r.state.label||r.id}`,onClick:Ue,submenu:[{label:"Center node",onClick:o(()=>{n.canvas.centerOnPoint(r.box.middle)},"onClick")},{label:"Delete node",onClick:o(()=>{n.delete(r)},"onClick"),danger:!0}]}):c&&x.push({label:"Edge",onClick:Ue,submenu:[{label:"Delete edge",onClick:o(()=>{n.disconnect(c)},"onClick"),danger:!0}]}),u&&x.push({label:"Delete selection",onClick:m,danger:!0}),x.push({label:"Selection",onClick:Ue,submenu:[{label:s.selectionMode==="element"?"Element mode (active)":"Element mode",onClick:o(()=>{s.toggleSelectionMode("element")},"onClick")},{label:s.selectionMode==="area"?"Area mode (active)":"Area mode",onClick:o(()=>{s.toggleSelectionMode("area")},"onClick")},{label:"Clear selection",onClick:o(()=>{s.clearSelection()},"onClick"),disabled:!u},{label:"Copy selection",onClick:Fr(async()=>{await navigator.clipboard.writeText(s.copy())}),disabled:!p},{label:"Paste",onClick:Fr(async()=>{const w=await navigator.clipboard.readText();w.trim().length&&n.paste(w)}),disabled:!f}]});const b=new y([e.x,e.y]);return x.push({label:"View",onClick:Ue,submenu:[{label:n.showGrid?"Hide grid":"Show grid",onClick:o(()=>{n.toggleGrid()},"onClick")},{label:`Zoom (${Math.round(n.canvas.scale*100)}%)`,onClick:Ue,submenu:[{label:"Zoom in",onClick:o(()=>{n.canvas.setScale(n.canvas.scale+.1,b)},"onClick")},{label:"Zoom out",onClick:o(()=>{n.canvas.setScale(n.canvas.scale-.1,b)},"onClick")},{label:"Reset zoom",onClick:o(()=>{n.canvas.setScale(1,b)},"onClick")}]}]}),x}o(Yl,"buildDiagramContextMenu");const Wl=A.observer(()=>{const n=q.use();return d.jsx("div",{className:"diagram__extension_ui",children:n.extensions.map(t=>{const e=t.RenderUI;return e?d.jsx(e,{diagram:n,extension:t},t.constructor.name):null})})}),Zl=A.observer(({diagram:n,leftPanel:t,toolbar:e})=>{const s=o(i=>{const a=i.target;if(a instanceof HTMLElement){if(a.closest('input, textarea, [contenteditable="true"]')){Nn.close();return}i.preventDefault(),Nn.open(Yl(n,a,{x:i.clientX,y:i.clientY}),{x:i.clientX,y:i.clientY})}},"handleContextMenu");return d.jsxs(n.Context,{children:[d.jsxs(zl,{onContextMenu:s,children:[t,d.jsxs($l,{children:[d.jsx(vl,{}),d.jsx(ml,{}),d.jsx(yl,{}),d.jsx(Ol,{}),d.jsx(wl,{}),d.jsx(Fl,{})]}),d.jsx(Wl,{})]}),d.jsx(Nn.Component,{}),e]})}),Pa=class Pa extends y{direction="left";get rawDirectedPoint(){return{x:this.x,y:this.y,direction:this.direction}}stepBack(){switch(this.direction){case"down":this.y--;break;case"left":this.x++;break;case"right":this.x--;break;case"up":this.y++;break}return this}stepForward(){switch(this.direction){case"down":this.y++;break;case"left":this.x--;break;case"right":this.x++;break;case"up":this.y--;break}return this}};o(Pa,"DirectedPoint");let Tn=Pa;const Xl=Object.freeze(Object.defineProperty({__proto__:null,DirectedPoint:Tn},Symbol.toStringTag,{value:"Module"}));F.AgentDiagram=yn,F.BPMDiagram=An,F.BPMN_LABELS=ft,F.CommunicationDiagram=Pn,F.Diagram=q,F.DiagramEditor=Zl,F.ToolsStates=es,F.configureBPMNLabels=bn,Object.defineProperty(F,Symbol.toStringTag,{value:"Module"})}));
6
7
  //# sourceMappingURL=index.umd.js.map