@stonecrop/node-editor 0.6.1 → 0.6.3

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.
@@ -23,5 +23,5 @@ Edge: ${e}
23
23
  Source: ${t}
24
24
  Target: ${n}`,EDGE_ORPHANED:e=>`Edge was orphaned (suddenly missing source or target) and has been removed
25
25
  Edge: ${e}`,EDGE_NOT_FOUND:e=>`Edge not found
26
- Edge: ${e}`,USEVUEFLOW_OPTIONS:()=>"The options parameter is deprecated and will be removed in the next major version. Please use the id parameter instead"};class ge extends Error{constructor(t,...n){var o;super((o=ui[t])==null?void 0:o.call(ui,...n)),this.name="VueFlowError",this.code=t,this.args=n}}function Pn(e){return"clientX"in e}function js(e){return"sourceEvent"in e}function Se(e,t){const n=Pn(e);let o,i;return n?(o=e.clientX,i=e.clientY):"touches"in e&&e.touches.length>0?(o=e.touches[0].clientX,i=e.touches[0].clientY):"changedTouches"in e&&e.changedTouches.length>0?(o=e.changedTouches[0].clientX,i=e.changedTouches[0].clientY):(o=0,i=0),{x:o-(t?.left??0),y:i-(t?.top??0)}}const Xt=()=>{var e;return typeof navigator<"u"&&((e=navigator?.userAgent)==null?void 0:e.indexOf("Mac"))>=0};function Js(e){var t,n;return{width:((t=e.dimensions)==null?void 0:t.width)??e.width??0,height:((n=e.dimensions)==null?void 0:n.height)??e.height??0}}function Ut(e,t=[1,1]){return{x:t[0]*Math.round(e.x/t[0]),y:t[1]*Math.round(e.y/t[1])}}const Qs=()=>!0;function Tn(e){e?.classList.remove("valid","connecting","vue-flow__handle-valid","vue-flow__handle-connecting")}function eu(e,t,n){const o=[],i={x:e.x-n,y:e.y-n,width:n*2,height:n*2};for(const r of t.values())Ft(i,Lt(r))>0&&o.push(r);return o}const tu=250;function nu(e,t,n,o){var i,r;let l=[],s=Number.POSITIVE_INFINITY;const u=eu(e,n,t+tu);for(const c of u){const d=[...((i=c.handleBounds)==null?void 0:i.source)??[],...((r=c.handleBounds)==null?void 0:r.target)??[]];for(const f of d){if(o.nodeId===f.nodeId&&o.type===f.type&&o.id===f.id)continue;const{x:h,y:p}=Je(c,f,f.position,!0),b=Math.sqrt((h-e.x)**2+(p-e.y)**2);b>t||(b<s?(l=[{...f,x:h,y:p}],s=b):b===s&&l.push({...f,x:h,y:p}))}}if(!l.length)return null;if(l.length>1){const c=o.type==="source"?"target":"source";return l.find(d=>d.type===c)??l[0]}return l[0]}function ci(e,{handle:t,connectionMode:n,fromNodeId:o,fromHandleId:i,fromType:r,doc:l,lib:s,flowId:u,isValidConnection:c=Qs},d,f,h,p){const b=r==="target",x=t?l.querySelector(`.${s}-flow__handle[data-id="${u}-${t?.nodeId}-${t?.id}-${t?.type}"]`):null,{x:N,y:k}=Se(e),M=l.elementFromPoint(N,k),_=M?.classList.contains(`${s}-flow__handle`)?M:x,C={handleDomNode:_,isValid:!1,connection:null,toHandle:null};if(_){const A=di(void 0,_),P=_.getAttribute("data-nodeid"),$=_.getAttribute("data-handleid"),B=_.classList.contains("connectable"),K=_.classList.contains("connectableend");if(!P||!A)return C;const F={source:b?P:o,sourceHandle:b?$:i,target:b?o:P,targetHandle:b?i:$};C.connection=F;const E=B&&K&&(n===Te.Strict?b&&A==="source"||!b&&A==="target":P!==o||$!==i);C.isValid=E&&c(F,{nodes:f,edges:d,sourceNode:h(F.source),targetNode:h(F.target)}),C.toHandle=fi(P,A,$,p,n,!0)}return C}function di(e,t){return e||(t?.classList.contains("target")?"target":t?.classList.contains("source")?"source":null)}function ou(e,t){let n=null;return t?n="valid":e&&!t&&(n="invalid"),n}function iu(e,t){let n=null;return t?n=!0:e&&!t&&(n=!1),n}function fi(e,t,n,o,i,r=!1){var l,s,u;const c=o.get(e);if(!c)return null;const d=i===Te.Strict?(l=c.handleBounds)==null?void 0:l[t]:[...((s=c.handleBounds)==null?void 0:s.source)??[],...((u=c.handleBounds)==null?void 0:u.target)??[]],f=(n?d?.find(h=>h.id===n):d?.[0])??null;return f&&r?{...f,...Je(c,f,f.position,!0)}:f}const $n={[z.Left]:z.Right,[z.Right]:z.Left,[z.Top]:z.Bottom,[z.Bottom]:z.Top},ru=["production","prod"];function vt(e,...t){hi()&&console.warn(`[Vue Flow]: ${e}`,...t)}function hi(){return!ru.includes(process.env.NODE_ENV||"")}function gi(e,t,n,o,i){const r=t.querySelectorAll(`.vue-flow__handle.${e}`);return r?.length?Array.from(r).map(l=>{const s=l.getBoundingClientRect();return{id:l.getAttribute("data-handleid"),type:e,nodeId:i,position:l.getAttribute("data-handlepos"),x:(s.left-n.left)/o,y:(s.top-n.top)/o,...Yt(l)}}):null}function Dn(e,t,n,o,i,r=!1,l){i.value=!1,e.selected?(r||e.selected&&t)&&(o([e]),a.nextTick(()=>{l.blur()})):n([e])}function he(e){return typeof a.unref(e)<"u"}function lu(e,t,n,o){if(!e||!e.source||!e.target)return n(new ge(fe.EDGE_INVALID,e?.id??"[ID UNKNOWN]")),!1;let i;return $e(e)?i=e:i={...e,id:Xo(e)},i=Yo(i,void 0,o),Rs(i,t)?!1:i}function au(e,t,n,o,i){if(!t.source||!t.target)return i(new ge(fe.EDGE_INVALID,e.id)),!1;if(!n)return i(new ge(fe.EDGE_NOT_FOUND,e.id)),!1;const{id:r,...l}=e;return{...l,id:o?Xo(t):r,source:t.source,target:t.target,sourceHandle:t.sourceHandle,targetHandle:t.targetHandle}}function pi(e,t,n){const o={},i=[];for(let r=0;r<e.length;++r){const l=e[r];if(!Fe(l)){n(new ge(fe.NODE_INVALID,l?.id)||`[ID UNKNOWN|INDEX ${r}]`);continue}const s=As(l,t(l.id),l.parentNode);l.parentNode&&(o[l.parentNode]=!0),i[r]=s}for(const r of i){const l=t(r.parentNode)||i.find(s=>s.id===r.parentNode);r.parentNode&&!l&&n(new ge(fe.NODE_MISSING_PARENT,r.id,r.parentNode)),(r.parentNode||o[r.id])&&(o[r.id]&&(r.isParent=!0),l&&(l.isParent=!0))}return i}function mi(e,t,n,o,i,r){let l=i;const s=o.get(l)||new Map;o.set(l,s.set(n,t)),l=`${i}-${e}`;const u=o.get(l)||new Map;if(o.set(l,u.set(n,t)),r){l=`${i}-${e}-${r}`;const c=o.get(l)||new Map;o.set(l,c.set(n,t))}}function Bn(e,t,n){e.clear();for(const o of n){const{source:i,target:r,sourceHandle:l=null,targetHandle:s=null}=o,u={edgeId:o.id,source:i,target:r,sourceHandle:l,targetHandle:s},c=`${i}-${l}--${r}-${s}`,d=`${r}-${s}--${i}-${l}`;mi("source",u,d,e,i,l),mi("target",u,c,e,r,s)}}function yi(e,t){if(e.size!==t.size)return!1;for(const n of e)if(!t.has(n))return!1;return!0}function Vn(e,t,n,o,i,r,l,s){const u=[];for(const c of e){const d=$e(c)?c:lu(c,s,i,r);if(!d)continue;const f=n(d.source),h=n(d.target);if(!f||!h){i(new ge(fe.EDGE_SOURCE_TARGET_MISSING,d.id,d.source,d.target));continue}if(!f){i(new ge(fe.EDGE_SOURCE_MISSING,d.id,d.source));continue}if(!h){i(new ge(fe.EDGE_TARGET_MISSING,d.id,d.target));continue}if(t&&!t(d,{edges:s,nodes:l,sourceNode:f,targetNode:h})){i(new ge(fe.EDGE_INVALID,d.id));continue}const p=o(d.id);u.push({...Yo(d,p,r),sourceNode:f,targetNode:h})}return u}const vi=Symbol("vueFlow"),wi=Symbol("nodeId"),_i=Symbol("nodeRef"),su=Symbol("edgeId"),uu=Symbol("edgeRef"),Zt=Symbol("slots");function Ei(e){const{vueFlowRef:t,snapToGrid:n,snapGrid:o,noDragClassName:i,nodeLookup:r,nodeExtent:l,nodeDragThreshold:s,viewport:u,autoPanOnNodeDrag:c,autoPanSpeed:d,nodesDraggable:f,panBy:h,findNode:p,multiSelectionActive:b,nodesSelectionActive:x,selectNodesOnDrag:N,removeSelectedElements:k,addSelectedNodes:M,updateNodePositions:_,emits:C}=de(),{onStart:A,onDrag:P,onStop:$,onClick:B,el:K,disabled:F,id:O,selectable:E,dragHandle:Z}=e,w=a.shallowRef(!1);let T=[],S,D=null,V={x:void 0,y:void 0},R={x:0,y:0},H=null,W=!1,Q=!1,te=0,Y=!1;const j=fu(),q=({x:ee,y:ie})=>{V={x:ee,y:ie};let m=!1;if(T=T.map(g=>{const v={x:ee-g.distance.x,y:ie-g.distance.y},{computedPosition:y}=In(g,n.value?Ut(v,o.value):v,C.error,l.value,g.parentNode?p(g.parentNode):void 0);return m=m||g.position.x!==y.x||g.position.y!==y.y,g.position=y,g}),Q=Q||m,!!m&&(_(T,!0,!0),w.value=!0,H)){const[g,v]=Mn({id:O,dragItems:T,findNode:p});P({event:H,node:g,nodes:v})}},re=()=>{if(!D)return;const[ee,ie]=ei(R,D,d.value);if(ee!==0||ie!==0){const m={x:(V.x??0)-ee/u.value.zoom,y:(V.y??0)-ie/u.value.zoom};h({x:ee,y:ie})&&q(m)}te=requestAnimationFrame(re)},le=(ee,ie)=>{W=!0;const m=p(O);!N.value&&!b.value&&m&&(m.selected||k()),m&&a.toValue(E)&&N.value&&Dn(m,b.value,M,k,x,!1,ie);const g=j(ee.sourceEvent);if(V=g,T=Xs(r.value,f.value,g,O),T.length){const[v,y]=Mn({id:O,dragItems:T,findNode:p});A({event:ee.sourceEvent,node:v,nodes:y})}},oe=(ee,ie)=>{var m;ee.sourceEvent.type==="touchmove"&&ee.sourceEvent.touches.length>1||(Q=!1,s.value===0&&le(ee,ie),V=j(ee.sourceEvent),D=((m=t.value)==null?void 0:m.getBoundingClientRect())||null,R=Se(ee.sourceEvent,D))},se=(ee,ie)=>{const m=j(ee.sourceEvent);if(!Y&&W&&c.value&&(Y=!0,re()),!W){const g=m.xSnapped-(V.x??0),v=m.ySnapped-(V.y??0);Math.sqrt(g*g+v*v)>s.value&&le(ee,ie)}(V.x!==m.xSnapped||V.y!==m.ySnapped)&&T.length&&W&&(H=ee.sourceEvent,R=Se(ee.sourceEvent,D),q(m))},ce=ee=>{let ie=!1;if(!W&&!w.value&&!b.value){const m=ee.sourceEvent,g=j(m),v=g.xSnapped-(V.x??0),y=g.ySnapped-(V.y??0),I=Math.sqrt(v*v+y*y);I!==0&&I<=s.value&&(B?.(m),ie=!0)}if(T.length&&!ie){Q&&(_(T,!1,!1),Q=!1);const[m,g]=Mn({id:O,dragItems:T,findNode:p});$({event:ee.sourceEvent,node:m,nodes:g})}T=[],w.value=!1,Y=!1,W=!1,V={x:void 0,y:void 0},cancelAnimationFrame(te)};return a.watch([()=>a.toValue(F),K],([ee,ie],m,g)=>{if(ie){const v=ye(ie);ee||(S=Vl().on("start",y=>oe(y,ie)).on("drag",y=>se(y,ie)).on("end",y=>ce(y)).filter(y=>{const I=y.target,G=a.toValue(Z);return!y.button&&(!i.value||!li(I,`.${i.value}`,ie)&&(!G||li(I,G,ie)))}),v.call(S)),g(()=>{v.on(".drag",null),S&&(S.on("start",null),S.on("drag",null),S.on("end",null))})}}),w}function cu(){return{doubleClick:L(),click:L(),mouseEnter:L(),mouseMove:L(),mouseLeave:L(),contextMenu:L(),updateStart:L(),update:L(),updateEnd:L()}}function du(e,t){const n=cu();return n.doubleClick.on(o=>{var i,r;t.edgeDoubleClick(o),(r=(i=e.events)==null?void 0:i.doubleClick)==null||r.call(i,o)}),n.click.on(o=>{var i,r;t.edgeClick(o),(r=(i=e.events)==null?void 0:i.click)==null||r.call(i,o)}),n.mouseEnter.on(o=>{var i,r;t.edgeMouseEnter(o),(r=(i=e.events)==null?void 0:i.mouseEnter)==null||r.call(i,o)}),n.mouseMove.on(o=>{var i,r;t.edgeMouseMove(o),(r=(i=e.events)==null?void 0:i.mouseMove)==null||r.call(i,o)}),n.mouseLeave.on(o=>{var i,r;t.edgeMouseLeave(o),(r=(i=e.events)==null?void 0:i.mouseLeave)==null||r.call(i,o)}),n.contextMenu.on(o=>{var i,r;t.edgeContextMenu(o),(r=(i=e.events)==null?void 0:i.contextMenu)==null||r.call(i,o)}),n.updateStart.on(o=>{var i,r;t.edgeUpdateStart(o),(r=(i=e.events)==null?void 0:i.updateStart)==null||r.call(i,o)}),n.update.on(o=>{var i,r;t.edgeUpdate(o),(r=(i=e.events)==null?void 0:i.update)==null||r.call(i,o)}),n.updateEnd.on(o=>{var i,r;t.edgeUpdateEnd(o),(r=(i=e.events)==null?void 0:i.updateEnd)==null||r.call(i,o)}),Object.entries(n).reduce((o,[i,r])=>(o.emit[i]=r.trigger,o.on[i]=r.on,o),{emit:{},on:{}})}function fu(){const{viewport:e,snapGrid:t,snapToGrid:n,vueFlowRef:o}=de();return i=>{var r;const l=((r=o.value)==null?void 0:r.getBoundingClientRect())??{left:0,top:0},s=js(i)?i.sourceEvent:i,{x:u,y:c}=Se(s,l),d=mt({x:u,y:c},e.value),{x:f,y:h}=n.value?Ut(d,t.value):d;return{xSnapped:f,ySnapped:h,...d}}}function Wt(){return!0}function bi({handleId:e,nodeId:t,type:n,isValidConnection:o,edgeUpdaterType:i,onEdgeUpdate:r,onEdgeUpdateEnd:l}){const{id:s,vueFlowRef:u,connectionMode:c,connectionRadius:d,connectOnClick:f,connectionClickStartHandle:h,nodesConnectable:p,autoPanOnConnect:b,autoPanSpeed:x,findNode:N,panBy:k,startConnection:M,updateConnection:_,endConnection:C,emits:A,viewport:P,edges:$,nodes:B,isValidConnection:K,nodeLookup:F}=de();let O=null,E=!1,Z=null;function w(S){var D;const V=a.toValue(n)==="target",R=Pn(S),H=Fo(S.target),W=S.currentTarget;if(W&&(R&&S.button===0||!R)){let Q=function(J){m=Se(J,ce),q=nu(mt(m,P.value,!1,[1,1]),d.value,F.value,y),g||(v(),g=!0);const ne=ci(J,{handle:q,connectionMode:c.value,fromNodeId:a.toValue(t),fromHandleId:a.toValue(e),fromType:V?"target":"source",isValidConnection:j,doc:H,lib:"vue",flowId:s,nodeLookup:F.value},$.value,B.value,N,F.value);Z=ne.handleDomNode,O=ne.connection,E=iu(!!q,ne.isValid);const ae={...U,isValid:E,to:ne.toHandle&&E?pt({x:ne.toHandle.x,y:ne.toHandle.y},P.value):m,toHandle:ne.toHandle,toPosition:E&&ne.toHandle?ne.toHandle.position:$n[y.position],toNode:ne.toHandle?F.value.get(ne.toHandle.nodeId):null};if(E&&q&&U?.toHandle&&ae.toHandle&&U.toHandle.type===ae.toHandle.type&&U.toHandle.nodeId===ae.toHandle.nodeId&&U.toHandle.id===ae.toHandle.id&&U.to.x===ae.to.x&&U.to.y===ae.to.y)return;const ue=q??ne.toHandle;if(_(ue&&E?pt({x:ue.x,y:ue.y},P.value):m,ne.toHandle,ou(!!ue,E)),U=ae,!q&&!E&&!Z)return Tn(ie);O&&O.source!==O.target&&Z&&(Tn(ie),ie=Z,Z.classList.add("connecting","vue-flow__handle-connecting"),Z.classList.toggle("valid",!!E),Z.classList.toggle("vue-flow__handle-valid",!!E))},te=function(J){"touches"in J&&J.touches.length>0||((q||Z)&&O&&E&&(r?r(J,O):A.connect(O)),A.connectEnd(J),i&&l?.(J),Tn(ie),cancelAnimationFrame(re),C(J),g=!1,E=!1,O=null,Z=null,H.removeEventListener("mousemove",Q),H.removeEventListener("mouseup",te),H.removeEventListener("touchmove",Q),H.removeEventListener("touchend",te))};const Y=N(a.toValue(t));let j=a.toValue(o)||K.value||Wt;!j&&Y&&(j=(V?Y.isValidSourcePos:Y.isValidTargetPos)||Wt);let q,re=0;const{x:le,y:oe}=Se(S),se=di(a.toValue(i),W),ce=(D=u.value)==null?void 0:D.getBoundingClientRect();if(!ce||!se)return;const ee=fi(a.toValue(t),se,a.toValue(e),F.value,c.value);if(!ee)return;let ie,m=Se(S,ce),g=!1;const v=()=>{if(!b.value)return;const[J,ne]=ei(m,ce,x.value);k({x:J,y:ne}),re=requestAnimationFrame(v)},y={...ee,nodeId:a.toValue(t),type:se,position:ee.position},I=F.value.get(a.toValue(t)),X={inProgress:!0,isValid:null,from:Je(I,y,z.Left,!0),fromHandle:y,fromPosition:y.position,fromNode:I,to:m,toHandle:null,toPosition:$n[y.position],toNode:null};M({nodeId:a.toValue(t),id:a.toValue(e),type:se,position:W?.getAttribute("data-handlepos")||z.Top,...m},{x:le-ce.left,y:oe-ce.top}),A.connectStart({event:S,nodeId:a.toValue(t),handleId:a.toValue(e),handleType:se});let U=X;H.addEventListener("mousemove",Q),H.addEventListener("mouseup",te),H.addEventListener("touchmove",Q),H.addEventListener("touchend",te)}}function T(S){var D,V;if(!f.value)return;const R=a.toValue(n)==="target";if(!h.value){A.clickConnectStart({event:S,nodeId:a.toValue(t),handleId:a.toValue(e)}),M({nodeId:a.toValue(t),type:a.toValue(n),id:a.toValue(e),position:z.Top,...Se(S)},void 0,!0);return}let H=a.toValue(o)||K.value||Wt;const W=N(a.toValue(t));if(!H&&W&&(H=(R?W.isValidSourcePos:W.isValidTargetPos)||Wt),W&&(typeof W.connectable>"u"?p.value:W.connectable)===!1)return;const Q=Fo(S.target),te=ci(S,{handle:{nodeId:a.toValue(t),id:a.toValue(e),type:a.toValue(n),position:z.Top,...Se(S)},connectionMode:c.value,fromNodeId:h.value.nodeId,fromHandleId:h.value.id??null,fromType:h.value.type,isValidConnection:H,doc:Q,lib:"vue",flowId:s,nodeLookup:F.value},$.value,B.value,N,F.value),Y=((D=te.connection)==null?void 0:D.source)===((V=te.connection)==null?void 0:V.target);te.isValid&&te.connection&&!Y&&A.connect(te.connection),A.clickConnectEnd(S),C(S,!0)}return{handlePointerDown:w,handleClick:T}}function hu(){return a.inject(wi,"")}function xi(e){const t=e??hu()??"",n=a.inject(_i,a.ref(null)),{findNode:o,edges:i,emits:r}=de(),l=o(t);return l||r.error(new ge(fe.NODE_NOT_FOUND,t)),{id:t,nodeEl:n,node:l,parentNode:a.computed(()=>o(l.parentNode)),connectedEdges:a.computed(()=>Ko([l],i.value))}}function gu(){return{doubleClick:L(),click:L(),mouseEnter:L(),mouseMove:L(),mouseLeave:L(),contextMenu:L(),dragStart:L(),drag:L(),dragStop:L()}}function pu(e,t){const n=gu();return n.doubleClick.on(o=>{var i,r;t.nodeDoubleClick(o),(r=(i=e.events)==null?void 0:i.doubleClick)==null||r.call(i,o)}),n.click.on(o=>{var i,r;t.nodeClick(o),(r=(i=e.events)==null?void 0:i.click)==null||r.call(i,o)}),n.mouseEnter.on(o=>{var i,r;t.nodeMouseEnter(o),(r=(i=e.events)==null?void 0:i.mouseEnter)==null||r.call(i,o)}),n.mouseMove.on(o=>{var i,r;t.nodeMouseMove(o),(r=(i=e.events)==null?void 0:i.mouseMove)==null||r.call(i,o)}),n.mouseLeave.on(o=>{var i,r;t.nodeMouseLeave(o),(r=(i=e.events)==null?void 0:i.mouseLeave)==null||r.call(i,o)}),n.contextMenu.on(o=>{var i,r;t.nodeContextMenu(o),(r=(i=e.events)==null?void 0:i.contextMenu)==null||r.call(i,o)}),n.dragStart.on(o=>{var i,r;t.nodeDragStart(o),(r=(i=e.events)==null?void 0:i.dragStart)==null||r.call(i,o)}),n.drag.on(o=>{var i,r;t.nodeDrag(o),(r=(i=e.events)==null?void 0:i.drag)==null||r.call(i,o)}),n.dragStop.on(o=>{var i,r;t.nodeDragStop(o),(r=(i=e.events)==null?void 0:i.dragStop)==null||r.call(i,o)}),Object.entries(n).reduce((o,[i,r])=>(o.emit[i]=r.trigger,o.on[i]=r.on,o),{emit:{},on:{}})}function Si(){const{getSelectedNodes:e,nodeExtent:t,updateNodePositions:n,findNode:o,snapGrid:i,snapToGrid:r,nodesDraggable:l,emits:s}=de();return(u,c=!1)=>{const d=r.value?i.value[0]:5,f=r.value?i.value[1]:5,h=c?4:1,p=u.x*d*h,b=u.y*f*h,x=[];for(const N of e.value)if(N.draggable||l&&typeof N.draggable>"u"){const k={x:N.computedPosition.x+p,y:N.computedPosition.y+b},{computedPosition:M}=In(N,k,s.error,t.value,N.parentNode?o(N.parentNode):void 0);x.push({id:N.id,position:M,from:N.position,distance:{x:u.x,y:u.y},dimensions:N.dimensions})}n(x,!0,!1)}}const Kt=.1,mu=e=>((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2;function Ve(){return vt("Viewport not initialized yet."),Promise.resolve(!1)}const yu={zoomIn:Ve,zoomOut:Ve,zoomTo:Ve,fitView:Ve,setCenter:Ve,fitBounds:Ve,project:e=>e,screenToFlowCoordinate:e=>e,flowToScreenCoordinate:e=>e,setViewport:Ve,setTransform:Ve,getViewport:()=>({x:0,y:0,zoom:1}),getTransform:()=>({x:0,y:0,zoom:1}),viewportInitialized:!1};function vu(e){function t(o,i){return new Promise(r=>{e.d3Selection&&e.d3Zoom?e.d3Zoom.interpolate(i?.interpolate==="linear"?lt:Tt).scaleBy(An(e.d3Selection,i?.duration,i?.ease,()=>{r(!0)}),o):r(!1)})}function n(o,i,r,l){return new Promise(s=>{var u;const{x:c,y:d}=Lo({x:-o,y:-i},e.translateExtent),f=Ke.translate(-c,-d).scale(r);e.d3Selection&&e.d3Zoom?(u=e.d3Zoom)==null||u.interpolate(l?.interpolate==="linear"?lt:Tt).transform(An(e.d3Selection,l?.duration,l?.ease,()=>{s(!0)}),f):s(!1)})}return a.computed(()=>e.d3Zoom&&e.d3Selection&&e.dimensions.width&&e.dimensions.height?{viewportInitialized:!0,zoomIn:i=>t(1.2,i),zoomOut:i=>t(1/1.2,i),zoomTo:(i,r)=>new Promise(l=>{e.d3Selection&&e.d3Zoom?e.d3Zoom.interpolate(r?.interpolate==="linear"?lt:Tt).scaleTo(An(e.d3Selection,r?.duration,r?.ease,()=>{l(!0)}),i):l(!1)}),setViewport:(i,r)=>n(i.x,i.y,i.zoom,r),setTransform:(i,r)=>n(i.x,i.y,i.zoom,r),getViewport:()=>({x:e.viewport.x,y:e.viewport.y,zoom:e.viewport.zoom}),getTransform:()=>({x:e.viewport.x,y:e.viewport.y,zoom:e.viewport.zoom}),fitView:(i={padding:Kt,includeHiddenNodes:!1,duration:0})=>{var r,l;const s=[];for(const h of e.nodes)h.dimensions.width&&h.dimensions.height&&(i?.includeHiddenNodes||!h.hidden)&&(!((r=i.nodes)!=null&&r.length)||(l=i.nodes)!=null&&l.length&&i.nodes.includes(h.id))&&s.push(h);if(!s.length)return Promise.resolve(!1);const u=Zo(s),{x:c,y:d,zoom:f}=qo(u,e.dimensions.width,e.dimensions.height,i.minZoom??e.minZoom,i.maxZoom??e.maxZoom,i.padding??Kt);return n(c,d,f,i)},setCenter:(i,r,l)=>{const s=typeof l?.zoom<"u"?l.zoom:e.maxZoom,u=e.dimensions.width/2-i*s,c=e.dimensions.height/2-r*s;return n(u,c,s,l)},fitBounds:(i,r={padding:Kt})=>{const{x:l,y:s,zoom:u}=qo(i,e.dimensions.width,e.dimensions.height,e.minZoom,e.maxZoom,r.padding??Kt);return n(l,s,u,r)},project:i=>mt(i,e.viewport,e.snapToGrid,e.snapGrid),screenToFlowCoordinate:i=>{if(e.vueFlowRef){const{x:r,y:l}=e.vueFlowRef.getBoundingClientRect(),s={x:i.x-r,y:i.y-l};return mt(s,e.viewport,e.snapToGrid,e.snapGrid)}return{x:0,y:0}},flowToScreenCoordinate:i=>{if(e.vueFlowRef){const{x:r,y:l}=e.vueFlowRef.getBoundingClientRect(),s={x:i.x+r,y:i.y+l};return pt(s,e.viewport)}return{x:0,y:0}}}:yu)}function An(e,t=0,n=mu,o=()=>{}){const i=typeof t=="number"&&t>0;return i||o(),i?e.transition().duration(t).ease(n).on("end",o):e}function wu(e,t,n){const o=a.effectScope(!0);return o.run(()=>{const i=()=>{o.run(()=>{let x,N,k=!!(n.nodes.value.length||n.edges.value.length);x=Ge([e.modelValue,()=>{var M,_;return(_=(M=e.modelValue)==null?void 0:M.value)==null?void 0:_.length}],([M])=>{M&&Array.isArray(M)&&(N?.pause(),n.setElements(M),!N&&!k&&M.length?k=!0:N?.resume())}),N=Ge([n.nodes,n.edges,()=>n.edges.value.length,()=>n.nodes.value.length],([M,_])=>{var C;(C=e.modelValue)!=null&&C.value&&Array.isArray(e.modelValue.value)&&(x?.pause(),e.modelValue.value=[...M,..._],a.nextTick(()=>{x?.resume()}))},{immediate:k}),a.onScopeDispose(()=>{x?.stop(),N?.stop()})})},r=()=>{o.run(()=>{let x,N,k=!!n.nodes.value.length;x=Ge([e.nodes,()=>{var M,_;return(_=(M=e.nodes)==null?void 0:M.value)==null?void 0:_.length}],([M])=>{M&&Array.isArray(M)&&(N?.pause(),n.setNodes(M),!N&&!k&&M.length?k=!0:N?.resume())}),N=Ge([n.nodes,()=>n.nodes.value.length],([M])=>{var _;(_=e.nodes)!=null&&_.value&&Array.isArray(e.nodes.value)&&(x?.pause(),e.nodes.value=[...M],a.nextTick(()=>{x?.resume()}))},{immediate:k}),a.onScopeDispose(()=>{x?.stop(),N?.stop()})})},l=()=>{o.run(()=>{let x,N,k=!!n.edges.value.length;x=Ge([e.edges,()=>{var M,_;return(_=(M=e.edges)==null?void 0:M.value)==null?void 0:_.length}],([M])=>{M&&Array.isArray(M)&&(N?.pause(),n.setEdges(M),!N&&!k&&M.length?k=!0:N?.resume())}),N=Ge([n.edges,()=>n.edges.value.length],([M])=>{var _;(_=e.edges)!=null&&_.value&&Array.isArray(e.edges.value)&&(x?.pause(),e.edges.value=[...M],a.nextTick(()=>{x?.resume()}))},{immediate:k}),a.onScopeDispose(()=>{x?.stop(),N?.stop()})})},s=()=>{o.run(()=>{a.watch(()=>t.maxZoom,()=>{t.maxZoom&&he(t.maxZoom)&&n.setMaxZoom(t.maxZoom)},{immediate:!0})})},u=()=>{o.run(()=>{a.watch(()=>t.minZoom,()=>{t.minZoom&&he(t.minZoom)&&n.setMinZoom(t.minZoom)},{immediate:!0})})},c=()=>{o.run(()=>{a.watch(()=>t.translateExtent,()=>{t.translateExtent&&he(t.translateExtent)&&n.setTranslateExtent(t.translateExtent)},{immediate:!0})})},d=()=>{o.run(()=>{a.watch(()=>t.nodeExtent,()=>{t.nodeExtent&&he(t.nodeExtent)&&n.setNodeExtent(t.nodeExtent)},{immediate:!0})})},f=()=>{o.run(()=>{a.watch(()=>t.applyDefault,()=>{he(t.applyDefault)&&(n.applyDefault.value=t.applyDefault)},{immediate:!0})})},h=()=>{o.run(()=>{const x=async N=>{let k=N;typeof t.autoConnect=="function"&&(k=await t.autoConnect(N)),k!==!1&&n.addEdges([k])};a.watch(()=>t.autoConnect,()=>{he(t.autoConnect)&&(n.autoConnect.value=t.autoConnect)},{immediate:!0}),a.watch(n.autoConnect,(N,k,M)=>{N?n.onConnect(x):n.hooks.value.connect.off(x),M(()=>{n.hooks.value.connect.off(x)})},{immediate:!0})})},p=()=>{const x=["id","modelValue","translateExtent","nodeExtent","edges","nodes","maxZoom","minZoom","applyDefault","autoConnect"];for(const N of Object.keys(t)){const k=N;if(!x.includes(k)){const M=a.toRef(()=>t[k]),_=n[k];a.isRef(_)&&o.run(()=>{a.watch(M,C=>{he(C)&&(_.value=C)},{immediate:!0})})}}};(()=>{i(),r(),l(),u(),s(),c(),d(),f(),h(),p()})()}),()=>o.stop()}function _u(){return{edgesChange:L(),nodesChange:L(),nodeDoubleClick:L(),nodeClick:L(),nodeMouseEnter:L(),nodeMouseMove:L(),nodeMouseLeave:L(),nodeContextMenu:L(),nodeDragStart:L(),nodeDrag:L(),nodeDragStop:L(),nodesInitialized:L(),miniMapNodeClick:L(),miniMapNodeDoubleClick:L(),miniMapNodeMouseEnter:L(),miniMapNodeMouseMove:L(),miniMapNodeMouseLeave:L(),connect:L(),connectStart:L(),connectEnd:L(),clickConnectStart:L(),clickConnectEnd:L(),paneReady:L(),init:L(),move:L(),moveStart:L(),moveEnd:L(),selectionDragStart:L(),selectionDrag:L(),selectionDragStop:L(),selectionContextMenu:L(),selectionStart:L(),selectionEnd:L(),viewportChangeStart:L(),viewportChange:L(),viewportChangeEnd:L(),paneScroll:L(),paneClick:L(),paneContextMenu:L(),paneMouseEnter:L(),paneMouseMove:L(),paneMouseLeave:L(),edgeContextMenu:L(),edgeMouseEnter:L(),edgeMouseMove:L(),edgeMouseLeave:L(),edgeDoubleClick:L(),edgeClick:L(),edgeUpdateStart:L(),edgeUpdate:L(),edgeUpdateEnd:L(),updateNodeInternals:L(),error:L(e=>vt(e.message))}}function Eu(e,t){const n=a.getCurrentInstance();a.onBeforeMount(()=>{for(const[i,r]of Object.entries(t.value)){const l=s=>{e(i,s)};r.setEmitter(l),et(r.removeEmitter),r.setHasEmitListeners(()=>o(i)),et(r.removeHasEmitListeners)}});function o(i){var r;const l=bu(i);return!!((r=n?.vnode.props)==null?void 0:r[l])}}function bu(e){const[t,...n]=e.split(":");return`on${t.replace(/(?:^|-)(\w)/g,(i,r)=>r.toUpperCase())}${n.length?`:${n.join(":")}`:""}`}function Ni(){return{vueFlowRef:null,viewportRef:null,nodes:[],edges:[],connectionLookup:new Map,nodeTypes:{},edgeTypes:{},initialized:!1,dimensions:{width:0,height:0},viewport:{x:0,y:0,zoom:1},d3Zoom:null,d3Selection:null,d3ZoomHandler:null,minZoom:.5,maxZoom:2,translateExtent:[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],nodeExtent:[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],selectionMode:Sn.Full,paneDragging:!1,preventScrolling:!0,zoomOnScroll:!0,zoomOnPinch:!0,zoomOnDoubleClick:!0,panOnScroll:!1,panOnScrollSpeed:.5,panOnScrollMode:ft.Free,paneClickDistance:0,panOnDrag:!0,edgeUpdaterRadius:10,onlyRenderVisibleElements:!1,defaultViewport:{x:0,y:0,zoom:1},nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,defaultMarkerColor:"#b1b1b7",connectionLineStyle:{},connectionLineType:null,connectionLineOptions:{type:He.Bezier,style:{}},connectionMode:Te.Loose,connectionStartHandle:null,connectionEndHandle:null,connectionClickStartHandle:null,connectionPosition:{x:Number.NaN,y:Number.NaN},connectionRadius:20,connectOnClick:!0,connectionStatus:null,isValidConnection:null,snapGrid:[15,15],snapToGrid:!1,edgesUpdatable:!1,edgesFocusable:!0,nodesFocusable:!0,nodesConnectable:!0,nodesDraggable:!0,nodeDragThreshold:1,elementsSelectable:!0,selectNodesOnDrag:!0,multiSelectionActive:!1,selectionKeyCode:"Shift",multiSelectionKeyCode:Xt()?"Meta":"Control",zoomActivationKeyCode:Xt()?"Meta":"Control",deleteKeyCode:"Backspace",panActivationKeyCode:"Space",hooks:_u(),applyDefault:!0,autoConnect:!1,fitViewOnInit:!1,fitViewOnInitDone:!1,noDragClassName:"nodrag",noWheelClassName:"nowheel",noPanClassName:"nopan",defaultEdgeOptions:void 0,elevateEdgesOnSelect:!1,elevateNodesOnSelect:!0,autoPanOnNodeDrag:!0,autoPanOnConnect:!0,autoPanSpeed:15,disableKeyboardA11y:!1,ariaLiveMessage:""}}const xu=["id","vueFlowRef","viewportRef","initialized","modelValue","nodes","edges","maxZoom","minZoom","translateExtent","hooks","defaultEdgeOptions"];function Su(e,t,n){const o=vu(e),i=m=>{const g=m??[];e.hooks.updateNodeInternals.trigger(g)},r=m=>zs(m,e.nodes,e.edges),l=m=>Os(m,e.nodes,e.edges),s=m=>Ko(m,e.edges),u=({id:m,type:g,nodeId:v})=>{var y;const I=m?`-${g}-${m}`:`-${g}`;return Array.from(((y=e.connectionLookup.get(`${v}${I}`))==null?void 0:y.values())??[])},c=m=>{if(m)return t.value.get(m)},d=m=>{if(m)return n.value.get(m)},f=(m,g,v)=>{var y,I;const G=[];for(const X of m){const U={id:X.id,type:"position",dragging:v,from:X.from};if(g&&(U.position=X.position,X.parentNode)){const J=c(X.parentNode);U.position={x:U.position.x-(((y=J?.computedPosition)==null?void 0:y.x)??0),y:U.position.y-(((I=J?.computedPosition)==null?void 0:I.y)??0)}}G.push(U)}G?.length&&e.hooks.nodesChange.trigger(G)},h=m=>{if(!e.vueFlowRef)return;const g=e.vueFlowRef.querySelector(".vue-flow__transformationpane");if(!g)return;const v=window.getComputedStyle(g),{m22:y}=new window.DOMMatrixReadOnly(v.transform),I=[];for(const G of m){const X=G,U=c(X.id);if(U){const J=Yt(X.nodeElement);if(!!(J.width&&J.height&&(U.dimensions.width!==J.width||U.dimensions.height!==J.height||X.forceUpdate))){const ae=X.nodeElement.getBoundingClientRect();U.dimensions=J,U.handleBounds.source=gi("source",X.nodeElement,ae,y,U.id),U.handleBounds.target=gi("target",X.nodeElement,ae,y,U.id),I.push({id:U.id,type:"dimensions",dimensions:J})}}}!e.fitViewOnInitDone&&e.fitViewOnInit&&o.value.fitView().then(()=>{e.fitViewOnInitDone=!0}),I.length&&e.hooks.nodesChange.trigger(I)},p=(m,g)=>{const v=new Set,y=new Set;for(const X of m)Fe(X)?v.add(X.id):$e(X)&&y.add(X.id);const I=Be(t.value,v,!0),G=Be(n.value,y);if(e.multiSelectionActive){for(const X of v)I.push(De(X,g));for(const X of y)G.push(De(X,g))}I.length&&e.hooks.nodesChange.trigger(I),G.length&&e.hooks.edgesChange.trigger(G)},b=m=>{if(e.multiSelectionActive){const g=m.map(v=>De(v.id,!0));e.hooks.nodesChange.trigger(g);return}e.hooks.nodesChange.trigger(Be(t.value,new Set(m.map(g=>g.id)),!0)),e.hooks.edgesChange.trigger(Be(n.value))},x=m=>{if(e.multiSelectionActive){const g=m.map(v=>De(v.id,!0));e.hooks.edgesChange.trigger(g);return}e.hooks.edgesChange.trigger(Be(n.value,new Set(m.map(g=>g.id)))),e.hooks.nodesChange.trigger(Be(t.value,new Set,!0))},N=m=>{p(m,!0)},k=m=>{const v=(m||e.nodes).map(y=>(y.selected=!1,De(y.id,!1)));e.hooks.nodesChange.trigger(v)},M=m=>{const v=(m||e.edges).map(y=>(y.selected=!1,De(y.id,!1)));e.hooks.edgesChange.trigger(v)},_=m=>{if(!m||!m.length)return p([],!1);const g=m.reduce((v,y)=>{const I=De(y.id,!1);return Fe(y)?v.nodes.push(I):v.edges.push(I),v},{nodes:[],edges:[]});g.nodes.length&&e.hooks.nodesChange.trigger(g.nodes),g.edges.length&&e.hooks.edgesChange.trigger(g.edges)},C=m=>{var g;(g=e.d3Zoom)==null||g.scaleExtent([m,e.maxZoom]),e.minZoom=m},A=m=>{var g;(g=e.d3Zoom)==null||g.scaleExtent([e.minZoom,m]),e.maxZoom=m},P=m=>{var g;(g=e.d3Zoom)==null||g.translateExtent(m),e.translateExtent=m},$=m=>{e.nodeExtent=m,i()},B=m=>{var g;(g=e.d3Zoom)==null||g.clickDistance(m)},K=m=>{e.nodesDraggable=m,e.nodesConnectable=m,e.elementsSelectable=m},F=m=>{const g=m instanceof Function?m(e.nodes):m;!e.initialized&&!g.length||(e.nodes=pi(g,c,e.hooks.error.trigger))},O=m=>{const g=m instanceof Function?m(e.edges):m;if(!e.initialized&&!g.length)return;const v=Vn(g,e.isValidConnection,c,d,e.hooks.error.trigger,e.defaultEdgeOptions,e.nodes,e.edges);Bn(e.connectionLookup,n.value,v),e.edges=v},E=m=>{const g=m instanceof Function?m([...e.nodes,...e.edges]):m;!e.initialized&&!g.length||(F(g.filter(Fe)),O(g.filter($e)))},Z=m=>{let g=m instanceof Function?m(e.nodes):m;g=Array.isArray(g)?g:[g];const v=pi(g,c,e.hooks.error.trigger),y=[];for(const I of v)y.push(ni(I));y.length&&e.hooks.nodesChange.trigger(y)},w=m=>{let g=m instanceof Function?m(e.edges):m;g=Array.isArray(g)?g:[g];const v=Vn(g,e.isValidConnection,c,d,e.hooks.error.trigger,e.defaultEdgeOptions,e.nodes,e.edges),y=[];for(const I of v)y.push(ni(I));y.length&&e.hooks.edgesChange.trigger(y)},T=(m,g=!0,v=!1)=>{const y=m instanceof Function?m(e.nodes):m,I=Array.isArray(y)?y:[y],G=[],X=[];function U(ne){const ae=s(ne);for(const ue of ae)(!he(ue.deletable)||ue.deletable)&&X.push(ii(ue.id,ue.source,ue.target,ue.sourceHandle,ue.targetHandle))}function J(ne){const ae=[];for(const ue of e.nodes)ue.parentNode===ne&&ae.push(ue);if(ae.length){for(const ue of ae)G.push(oi(ue.id));g&&U(ae);for(const ue of ae)J(ue.id)}}for(const ne of I){const ae=typeof ne=="string"?c(ne):ne;ae&&(he(ae.deletable)&&!ae.deletable||(G.push(oi(ae.id)),g&&U([ae]),v&&J(ae.id)))}X.length&&e.hooks.edgesChange.trigger(X),G.length&&e.hooks.nodesChange.trigger(G)},S=m=>{const g=m instanceof Function?m(e.edges):m,v=Array.isArray(g)?g:[g],y=[];for(const I of v){const G=typeof I=="string"?d(I):I;G&&(he(G.deletable)&&!G.deletable||y.push(ii(typeof I=="string"?I:I.id,G.source,G.target,G.sourceHandle,G.targetHandle)))}e.hooks.edgesChange.trigger(y)},D=(m,g,v=!0)=>{const y=d(m.id);if(!y)return!1;const I=e.edges.indexOf(y),G=au(m,g,y,v,e.hooks.error.trigger);if(G){const[X]=Vn([G],e.isValidConnection,c,d,e.hooks.error.trigger,e.defaultEdgeOptions,e.nodes,e.edges);return e.edges=e.edges.map((U,J)=>J===I?X:U),Bn(e.connectionLookup,n.value,[X]),X}return!1},V=(m,g,v={replace:!1})=>{const y=d(m);if(!y)return;const I=typeof g=="function"?g(y):g;y.data=v.replace?I:{...y.data,...I}},R=m=>ti(m,e.nodes),H=m=>{const g=ti(m,e.edges);return Bn(e.connectionLookup,n.value,g),g},W=(m,g,v={replace:!1})=>{const y=c(m);if(!y)return;const I=typeof g=="function"?g(y):g;v.replace?e.nodes.splice(e.nodes.indexOf(y),1,I):Object.assign(y,I)},Q=(m,g,v={replace:!1})=>{const y=c(m);if(!y)return;const I=typeof g=="function"?g(y):g;y.data=v.replace?I:{...y.data,...I}},te=(m,g,v=!1)=>{v?e.connectionClickStartHandle=m:e.connectionStartHandle=m,e.connectionEndHandle=null,e.connectionStatus=null,g&&(e.connectionPosition=g)},Y=(m,g=null,v=null)=>{e.connectionStartHandle&&(e.connectionPosition=m,e.connectionEndHandle=g,e.connectionStatus=v)},j=(m,g)=>{e.connectionPosition={x:Number.NaN,y:Number.NaN},e.connectionEndHandle=null,e.connectionStatus=null,g?e.connectionClickStartHandle=null:e.connectionStartHandle=null},q=m=>{const g=Vs(m),v=g?null:gt(m)?m:c(m.id);return!g&&!v?[null,null,g]:[g?m:Lt(v),v,g]},re=(m,g=!0,v=e.nodes)=>{const[y,I,G]=q(m);if(!y)return[];const X=[];for(const U of v||e.nodes){if(!G&&(U.id===I.id||!U.computedPosition))continue;const J=Lt(U),ne=Ft(J,y);(g&&ne>0||ne>=J.width*J.height||ne>=Number(y.width)*Number(y.height))&&X.push(U)}return X},le=(m,g,v=!0)=>{const[y]=q(m);if(!y)return!1;const I=Ft(y,g);return v&&I>0||I>=Number(y.width)*Number(y.height)},oe=m=>{const{viewport:g,dimensions:v,d3Zoom:y,d3Selection:I,translateExtent:G}=e;if(!y||!I||!m.x&&!m.y)return!1;const X=Ke.translate(g.x+m.x,g.y+m.y).scale(g.zoom),U=[[0,0],[v.width,v.height]],J=y.constrain()(X,U,G),ne=e.viewport.x!==J.x||e.viewport.y!==J.y||e.viewport.zoom!==J.k;return y.transform(I,J),ne},se=m=>{const g=m instanceof Function?m(e):m,v=["d3Zoom","d3Selection","d3ZoomHandler","viewportRef","vueFlowRef","dimensions","hooks"];he(g.defaultEdgeOptions)&&(e.defaultEdgeOptions=g.defaultEdgeOptions);const y=g.modelValue||g.nodes||g.edges?[]:void 0;y&&(g.modelValue&&y.push(...g.modelValue),g.nodes&&y.push(...g.nodes),g.edges&&y.push(...g.edges),E(y));const I=()=>{he(g.maxZoom)&&A(g.maxZoom),he(g.minZoom)&&C(g.minZoom),he(g.translateExtent)&&P(g.translateExtent)};for(const G of Object.keys(g)){const X=G,U=g[X];![...xu,...v].includes(X)&&he(U)&&(e[X]=U)}nn(()=>e.d3Zoom).not.toBeNull().then(I),e.initialized||(e.initialized=!0)};return{updateNodePositions:f,updateNodeDimensions:h,setElements:E,setNodes:F,setEdges:O,addNodes:Z,addEdges:w,removeNodes:T,removeEdges:S,findNode:c,findEdge:d,updateEdge:D,updateEdgeData:V,updateNode:W,updateNodeData:Q,applyEdgeChanges:H,applyNodeChanges:R,addSelectedElements:N,addSelectedNodes:b,addSelectedEdges:x,setMinZoom:C,setMaxZoom:A,setTranslateExtent:P,setNodeExtent:$,setPaneClickDistance:B,removeSelectedElements:_,removeSelectedNodes:k,removeSelectedEdges:M,startConnection:te,updateConnection:Y,endConnection:j,setInteractive:K,setState:se,getIntersectingNodes:re,getIncomers:r,getOutgoers:l,getConnectedEdges:s,getHandleConnections:u,isNodeIntersecting:le,panBy:oe,fitView:m=>o.value.fitView(m),zoomIn:m=>o.value.zoomIn(m),zoomOut:m=>o.value.zoomOut(m),zoomTo:(m,g)=>o.value.zoomTo(m,g),setViewport:(m,g)=>o.value.setViewport(m,g),setTransform:(m,g)=>o.value.setTransform(m,g),getViewport:()=>o.value.getViewport(),getTransform:()=>o.value.getTransform(),setCenter:(m,g,v)=>o.value.setCenter(m,g,v),fitBounds:(m,g)=>o.value.fitBounds(m,g),project:m=>o.value.project(m),screenToFlowCoordinate:m=>o.value.screenToFlowCoordinate(m),flowToScreenCoordinate:m=>o.value.flowToScreenCoordinate(m),toObject:()=>{const m=[],g=[];for(const v of e.nodes){const{computedPosition:y,handleBounds:I,selected:G,dimensions:X,isParent:U,resizing:J,dragging:ne,events:ae,...ue}=v;m.push(ue)}for(const v of e.edges){const{selected:y,sourceNode:I,targetNode:G,events:X,...U}=v;g.push(U)}return JSON.parse(JSON.stringify({nodes:m,edges:g,position:[e.viewport.x,e.viewport.y],zoom:e.viewport.zoom,viewport:e.viewport}))},fromObject:m=>new Promise(g=>{const{nodes:v,edges:y,position:I,zoom:G,viewport:X}=m;if(v&&F(v),y&&O(y),X?.x&&X?.y||I){const U=X?.x||I[0],J=X?.y||I[1],ne=X?.zoom||G||e.viewport.zoom;return nn(()=>o.value.viewportInitialized).toBe(!0).then(()=>{o.value.setViewport({x:U,y:J,zoom:ne}).then(()=>{g(!0)})})}else g(!0)}),updateNodeInternals:i,viewportHelper:o,$reset:()=>{const m=Ni();if(e.edges=[],e.nodes=[],e.d3Zoom&&e.d3Selection){const g=Ke.translate(m.defaultViewport.x??0,m.defaultViewport.y??0).scale(Le(m.defaultViewport.zoom??1,m.minZoom,m.maxZoom)),v=e.viewportRef.getBoundingClientRect(),y=[[0,0],[v.width,v.height]],I=e.d3Zoom.constrain()(g,y,m.translateExtent);e.d3Zoom.transform(e.d3Selection,I)}se(m)},$destroy:()=>{}}}const Nu=["data-id","data-handleid","data-nodeid","data-handlepos"],Cu={name:"Handle",compatConfig:{MODE:3}},Qe=a.defineComponent({...Cu,props:{id:{default:null},type:{},position:{default:()=>z.Top},isValidConnection:{type:Function},connectable:{type:[Boolean,Number,String,Function],default:void 0},connectableStart:{type:Boolean,default:!0},connectableEnd:{type:Boolean,default:!0}},setup(e,{expose:t}){const n=a.createPropsRestProxy(e,["position","connectable","connectableStart","connectableEnd","id"]),o=a.toRef(()=>n.type??"source"),i=a.toRef(()=>n.isValidConnection??null),{id:r,connectionStartHandle:l,connectionClickStartHandle:s,connectionEndHandle:u,vueFlowRef:c,nodesConnectable:d,noDragClassName:f,noPanClassName:h}=de(),{id:p,node:b,nodeEl:x,connectedEdges:N}=xi(),k=a.ref(),M=a.toRef(()=>typeof e.connectableStart<"u"?e.connectableStart:!0),_=a.toRef(()=>typeof e.connectableEnd<"u"?e.connectableEnd:!0),C=a.toRef(()=>{var O,E,Z,w,T,S;return((O=l.value)==null?void 0:O.nodeId)===p&&((E=l.value)==null?void 0:E.id)===e.id&&((Z=l.value)==null?void 0:Z.type)===o.value||((w=u.value)==null?void 0:w.nodeId)===p&&((T=u.value)==null?void 0:T.id)===e.id&&((S=u.value)==null?void 0:S.type)===o.value}),A=a.toRef(()=>{var O,E,Z;return((O=s.value)==null?void 0:O.nodeId)===p&&((E=s.value)==null?void 0:E.id)===e.id&&((Z=s.value)==null?void 0:Z.type)===o.value}),{handlePointerDown:P,handleClick:$}=bi({nodeId:p,handleId:e.id,isValidConnection:i,type:o}),B=a.computed(()=>typeof e.connectable=="string"&&e.connectable==="single"?!N.value.some(O=>{const E=O[`${o.value}Handle`];return O[o.value]!==p?!1:E?E===e.id:!0}):typeof e.connectable=="number"?N.value.filter(O=>{const E=O[`${o.value}Handle`];return O[o.value]!==p?!1:E?E===e.id:!0}).length<e.connectable:typeof e.connectable=="function"?e.connectable(b,N.value):he(e.connectable)?e.connectable:d.value);a.onMounted(()=>{var O;if(!b.dimensions.width||!b.dimensions.height)return;const E=(O=b.handleBounds[o.value])==null?void 0:O.find(R=>R.id===e.id);if(!c.value||E)return;const Z=c.value.querySelector(".vue-flow__transformationpane");if(!x.value||!k.value||!Z||!e.id)return;const w=x.value.getBoundingClientRect(),T=k.value.getBoundingClientRect(),S=window.getComputedStyle(Z),{m22:D}=new window.DOMMatrixReadOnly(S.transform),V={id:e.id,position:e.position,x:(T.left-w.left)/D,y:(T.top-w.top)/D,type:o.value,nodeId:p,...Yt(k.value)};b.handleBounds[o.value]=[...b.handleBounds[o.value]??[],V]});function K(O){const E=Pn(O);B.value&&M.value&&(E&&O.button===0||!E)&&P(O)}function F(O){!p||!s.value&&!M.value||B.value&&$(O)}return t({handleClick:$,handlePointerDown:P,onClick:F,onPointerDown:K}),(O,E)=>(a.openBlock(),a.createElementBlock("div",{ref_key:"handle",ref:k,"data-id":`${a.unref(r)}-${a.unref(p)}-${e.id}-${o.value}`,"data-handleid":e.id,"data-nodeid":a.unref(p),"data-handlepos":O.position,class:a.normalizeClass(["vue-flow__handle",[`vue-flow__handle-${O.position}`,`vue-flow__handle-${e.id}`,a.unref(f),a.unref(h),o.value,{connectable:B.value,connecting:A.value,connectablestart:M.value,connectableend:_.value,connectionindicator:B.value&&(M.value&&!C.value||_.value&&C.value)}]]),onMousedown:K,onTouchstartPassive:K,onClick:F},[a.renderSlot(O.$slots,"default",{id:O.id})],42,Nu))}}),qt=function({sourcePosition:e=z.Bottom,targetPosition:t=z.Top,label:n,connectable:o=!0,isValidTargetPos:i,isValidSourcePos:r,data:l}){const s=l.label??n;return[a.h(Qe,{type:"target",position:t,connectable:o,isValidConnection:i}),typeof s!="string"&&s?a.h(s):a.h(a.Fragment,[s]),a.h(Qe,{type:"source",position:e,connectable:o,isValidConnection:r})]};qt.props=["sourcePosition","targetPosition","label","isValidTargetPos","isValidSourcePos","connectable","data"],qt.inheritAttrs=!1,qt.compatConfig={MODE:3};const ku=qt,jt=function({targetPosition:e=z.Top,label:t,connectable:n=!0,isValidTargetPos:o,data:i}){const r=i.label??t;return[a.h(Qe,{type:"target",position:e,connectable:n,isValidConnection:o}),typeof r!="string"&&r?a.h(r):a.h(a.Fragment,[r])]};jt.props=["targetPosition","label","isValidTargetPos","connectable","data"],jt.inheritAttrs=!1,jt.compatConfig={MODE:3};const Mu=jt,Jt=function({sourcePosition:e=z.Bottom,label:t,connectable:n=!0,isValidSourcePos:o,data:i}){const r=i.label??t;return[typeof r!="string"&&r?a.h(r):a.h(a.Fragment,[r]),a.h(Qe,{type:"source",position:e,connectable:n,isValidConnection:o})]};Jt.props=["sourcePosition","label","isValidSourcePos","connectable","data"],Jt.inheritAttrs=!1,Jt.compatConfig={MODE:3};const Iu=Jt,Pu=["transform"],Tu=["width","height","x","y","rx","ry"],$u=["y"],Du={name:"EdgeText",compatConfig:{MODE:3}},Bu=a.defineComponent({...Du,props:{x:{},y:{},label:{},labelStyle:{default:()=>({})},labelShowBg:{type:Boolean,default:!0},labelBgStyle:{default:()=>({})},labelBgPadding:{default:()=>[2,4]},labelBgBorderRadius:{default:2}},setup(e){const t=a.ref({x:0,y:0,width:0,height:0}),n=a.ref(null),o=a.computed(()=>`translate(${e.x-t.value.width/2} ${e.y-t.value.height/2})`);a.onMounted(i),a.watch([()=>e.x,()=>e.y,n,()=>e.label],i);function i(){if(!n.value)return;const r=n.value.getBBox();(r.width!==t.value.width||r.height!==t.value.height)&&(t.value=r)}return(r,l)=>(a.openBlock(),a.createElementBlock("g",{transform:o.value,class:"vue-flow__edge-textwrapper"},[r.labelShowBg?(a.openBlock(),a.createElementBlock("rect",{key:0,class:"vue-flow__edge-textbg",width:`${t.value.width+2*r.labelBgPadding[0]}px`,height:`${t.value.height+2*r.labelBgPadding[1]}px`,x:-r.labelBgPadding[0],y:-r.labelBgPadding[1],style:a.normalizeStyle(r.labelBgStyle),rx:r.labelBgBorderRadius,ry:r.labelBgBorderRadius},null,12,Tu)):a.createCommentVNode("",!0),a.createElementVNode("text",a.mergeProps(r.$attrs,{ref_key:"el",ref:n,class:"vue-flow__edge-text",y:t.value.height/2,dy:"0.3em",style:r.labelStyle}),[a.renderSlot(r.$slots,"default",{},()=>[typeof r.label!="string"?(a.openBlock(),a.createBlock(a.resolveDynamicComponent(r.label),{key:0})):(a.openBlock(),a.createElementBlock(a.Fragment,{key:1},[a.createTextVNode(a.toDisplayString(r.label),1)],64))])],16,$u)],8,Pu))}}),Vu=["id","d","marker-end","marker-start"],Au=["d","stroke-width"],Ou={name:"BaseEdge",inheritAttrs:!1,compatConfig:{MODE:3}},Qt=a.defineComponent({...Ou,props:{id:{},labelX:{},labelY:{},path:{},label:{},markerStart:{},markerEnd:{},interactionWidth:{default:20},labelStyle:{},labelShowBg:{type:Boolean},labelBgStyle:{},labelBgPadding:{},labelBgBorderRadius:{}},setup(e,{expose:t}){const n=a.ref(null),o=a.ref(null),i=a.ref(null),r=a.useAttrs();return t({pathEl:n,interactionEl:o,labelEl:i}),(l,s)=>(a.openBlock(),a.createElementBlock(a.Fragment,null,[a.createElementVNode("path",a.mergeProps(a.unref(r),{id:l.id,ref_key:"pathEl",ref:n,d:l.path,class:"vue-flow__edge-path","marker-end":l.markerEnd,"marker-start":l.markerStart}),null,16,Vu),l.interactionWidth?(a.openBlock(),a.createElementBlock("path",{key:0,ref_key:"interactionEl",ref:o,fill:"none",d:l.path,"stroke-width":l.interactionWidth,"stroke-opacity":0,class:"vue-flow__edge-interaction"},null,8,Au)):a.createCommentVNode("",!0),l.label&&l.labelX&&l.labelY?(a.openBlock(),a.createBlock(Bu,{key:1,ref_key:"labelEl",ref:i,x:l.labelX,y:l.labelY,label:l.label,"label-show-bg":l.labelShowBg,"label-bg-style":l.labelBgStyle,"label-bg-padding":l.labelBgPadding,"label-bg-border-radius":l.labelBgBorderRadius,"label-style":l.labelStyle},null,8,["x","y","label","label-show-bg","label-bg-style","label-bg-padding","label-bg-border-radius","label-style"])):a.createCommentVNode("",!0)],64))}});function Ci({sourceX:e,sourceY:t,targetX:n,targetY:o}){const i=Math.abs(n-e)/2,r=n<e?n+i:n-i,l=Math.abs(o-t)/2,s=o<t?o+l:o-l;return[r,s,i,l]}function ki({sourceX:e,sourceY:t,targetX:n,targetY:o,sourceControlX:i,sourceControlY:r,targetControlX:l,targetControlY:s}){const u=e*.125+i*.375+l*.375+n*.125,c=t*.125+r*.375+s*.375+o*.125,d=Math.abs(u-e),f=Math.abs(c-t);return[u,c,d,f]}function en(e,t){return e>=0?.5*e:t*25*Math.sqrt(-e)}function Mi({pos:e,x1:t,y1:n,x2:o,y2:i,c:r}){let l,s;switch(e){case z.Left:l=t-en(t-o,r),s=n;break;case z.Right:l=t+en(o-t,r),s=n;break;case z.Top:l=t,s=n-en(n-i,r);break;case z.Bottom:l=t,s=n+en(i-n,r);break}return[l,s]}function On(e){const{sourceX:t,sourceY:n,sourcePosition:o=z.Bottom,targetX:i,targetY:r,targetPosition:l=z.Top,curvature:s=.25}=e,[u,c]=Mi({pos:o,x1:t,y1:n,x2:i,y2:r,c:s}),[d,f]=Mi({pos:l,x1:i,y1:r,x2:t,y2:n,c:s}),[h,p,b,x]=ki({sourceX:t,sourceY:n,targetX:i,targetY:r,sourceControlX:u,sourceControlY:c,targetControlX:d,targetControlY:f});return[`M${t},${n} C${u},${c} ${d},${f} ${i},${r}`,h,p,b,x]}function Ii({pos:e,x1:t,y1:n,x2:o,y2:i}){let r,l;switch(e){case z.Left:case z.Right:r=.5*(t+o),l=n;break;case z.Top:case z.Bottom:r=t,l=.5*(n+i);break}return[r,l]}function Pi(e){const{sourceX:t,sourceY:n,sourcePosition:o=z.Bottom,targetX:i,targetY:r,targetPosition:l=z.Top}=e,[s,u]=Ii({pos:o,x1:t,y1:n,x2:i,y2:r}),[c,d]=Ii({pos:l,x1:i,y1:r,x2:t,y2:n}),[f,h,p,b]=ki({sourceX:t,sourceY:n,targetX:i,targetY:r,sourceControlX:s,sourceControlY:u,targetControlX:c,targetControlY:d});return[`M${t},${n} C${s},${u} ${c},${d} ${i},${r}`,f,h,p,b]}const Ti={[z.Left]:{x:-1,y:0},[z.Right]:{x:1,y:0},[z.Top]:{x:0,y:-1},[z.Bottom]:{x:0,y:1}};function zu({source:e,sourcePosition:t=z.Bottom,target:n}){return t===z.Left||t===z.Right?e.x<n.x?{x:1,y:0}:{x:-1,y:0}:e.y<n.y?{x:0,y:1}:{x:0,y:-1}}function $i(e,t){return Math.sqrt((t.x-e.x)**2+(t.y-e.y)**2)}function Ru({source:e,sourcePosition:t=z.Bottom,target:n,targetPosition:o=z.Top,center:i,offset:r}){const l=Ti[t],s=Ti[o],u={x:e.x+l.x*r,y:e.y+l.y*r},c={x:n.x+s.x*r,y:n.y+s.y*r},d=zu({source:u,sourcePosition:t,target:c}),f=d.x!==0?"x":"y",h=d[f];let p,b,x;const N={x:0,y:0},k={x:0,y:0},[M,_,C,A]=Ci({sourceX:e.x,sourceY:e.y,targetX:n.x,targetY:n.y});if(l[f]*s[f]===-1){b=i.x??M,x=i.y??_;const $=[{x:b,y:u.y},{x:b,y:c.y}],B=[{x:u.x,y:x},{x:c.x,y:x}];l[f]===h?p=f==="x"?$:B:p=f==="x"?B:$}else{const $=[{x:u.x,y:c.y}],B=[{x:c.x,y:u.y}];if(f==="x"?p=l.x===h?B:$:p=l.y===h?$:B,t===o){const Z=Math.abs(e[f]-n[f]);if(Z<=r){const w=Math.min(r-1,r-Z);l[f]===h?N[f]=(u[f]>e[f]?-1:1)*w:k[f]=(c[f]>n[f]?-1:1)*w}}if(t!==o){const Z=f==="x"?"y":"x",w=l[f]===s[Z],T=u[Z]>c[Z],S=u[Z]<c[Z];(l[f]===1&&(!w&&T||w&&S)||l[f]!==1&&(!w&&S||w&&T))&&(p=f==="x"?$:B)}const K={x:u.x+N.x,y:u.y+N.y},F={x:c.x+k.x,y:c.y+k.y},O=Math.max(Math.abs(K.x-p[0].x),Math.abs(F.x-p[0].x)),E=Math.max(Math.abs(K.y-p[0].y),Math.abs(F.y-p[0].y));O>=E?(b=(K.x+F.x)/2,x=p[0].y):(b=p[0].x,x=(K.y+F.y)/2)}return[[e,{x:u.x+N.x,y:u.y+N.y},...p,{x:c.x+k.x,y:c.y+k.y},n],b,x,C,A]}function Hu(e,t,n,o){const i=Math.min($i(e,t)/2,$i(t,n)/2,o),{x:r,y:l}=t;if(e.x===r&&r===n.x||e.y===l&&l===n.y)return`L${r} ${l}`;if(e.y===l){const c=e.x<n.x?-1:1,d=e.y<n.y?1:-1;return`L ${r+i*c},${l}Q ${r},${l} ${r},${l+i*d}`}const s=e.x<n.x?1:-1,u=e.y<n.y?-1:1;return`L ${r},${l+i*u}Q ${r},${l} ${r+i*s},${l}`}function zn(e){const{sourceX:t,sourceY:n,sourcePosition:o=z.Bottom,targetX:i,targetY:r,targetPosition:l=z.Top,borderRadius:s=5,centerX:u,centerY:c,offset:d=20}=e,[f,h,p,b,x]=Ru({source:{x:t,y:n},sourcePosition:o,target:{x:i,y:r},targetPosition:l,center:{x:u,y:c},offset:d});return[f.reduce((k,M,_)=>{let C;return _>0&&_<f.length-1?C=Hu(f[_-1],M,f[_+1],s):C=`${_===0?"M":"L"}${M.x} ${M.y}`,k+=C,k},""),h,p,b,x]}function Lu(e){const{sourceX:t,sourceY:n,targetX:o,targetY:i}=e,[r,l,s,u]=Ci({sourceX:t,sourceY:n,targetX:o,targetY:i});return[`M ${t},${n}L ${o},${i}`,r,l,s,u]}const Fu=a.defineComponent({name:"StraightEdge",props:["label","labelStyle","labelShowBg","labelBgStyle","labelBgPadding","labelBgBorderRadius","sourceY","sourceX","targetX","targetY","markerEnd","markerStart","interactionWidth"],compatConfig:{MODE:3},setup(e,{attrs:t}){return()=>{const[n,o,i]=Lu(e);return a.h(Qt,{path:n,labelX:o,labelY:i,...t,...e})}}}),Di=a.defineComponent({name:"SmoothStepEdge",props:["sourcePosition","targetPosition","label","labelStyle","labelShowBg","labelBgStyle","labelBgPadding","labelBgBorderRadius","sourceY","sourceX","targetX","targetY","borderRadius","markerEnd","markerStart","interactionWidth","offset"],compatConfig:{MODE:3},setup(e,{attrs:t}){return()=>{const[n,o,i]=zn({...e,sourcePosition:e.sourcePosition??z.Bottom,targetPosition:e.targetPosition??z.Top});return a.h(Qt,{path:n,labelX:o,labelY:i,...t,...e})}}}),Yu=a.defineComponent({name:"StepEdge",props:["sourcePosition","targetPosition","label","labelStyle","labelShowBg","labelBgStyle","labelBgPadding","labelBgBorderRadius","sourceY","sourceX","targetX","targetY","markerEnd","markerStart","interactionWidth"],setup(e,{attrs:t}){return()=>a.h(Di,{...e,...t,borderRadius:0})}}),Gu=a.defineComponent({name:"BezierEdge",props:["sourcePosition","targetPosition","label","labelStyle","labelShowBg","labelBgStyle","labelBgPadding","labelBgBorderRadius","sourceY","sourceX","targetX","targetY","curvature","markerEnd","markerStart","interactionWidth"],compatConfig:{MODE:3},setup(e,{attrs:t}){return()=>{const[n,o,i]=On({...e,sourcePosition:e.sourcePosition??z.Bottom,targetPosition:e.targetPosition??z.Top});return a.h(Qt,{path:n,labelX:o,labelY:i,...t,...e})}}}),Xu=a.defineComponent({name:"SimpleBezierEdge",props:["sourcePosition","targetPosition","label","labelStyle","labelShowBg","labelBgStyle","labelBgPadding","labelBgBorderRadius","sourceY","sourceX","targetX","targetY","markerEnd","markerStart","interactionWidth"],compatConfig:{MODE:3},setup(e,{attrs:t}){return()=>{const[n,o,i]=Pi({...e,sourcePosition:e.sourcePosition??z.Bottom,targetPosition:e.targetPosition??z.Top});return a.h(Qt,{path:n,labelX:o,labelY:i,...t,...e})}}}),Uu={input:Iu,default:ku,output:Mu},Zu={default:Gu,straight:Fu,step:Yu,smoothstep:Di,simplebezier:Xu};function Wu(e,t,n){const o=a.computed(()=>x=>t.value.get(x)),i=a.computed(()=>x=>n.value.get(x)),r=a.computed(()=>{const x={...Zu,...e.edgeTypes},N=Object.keys(x);for(const k of e.edges)k.type&&!N.includes(k.type)&&(x[k.type]=k.type);return x}),l=a.computed(()=>{const x={...Uu,...e.nodeTypes},N=Object.keys(x);for(const k of e.nodes)k.type&&!N.includes(k.type)&&(x[k.type]=k.type);return x}),s=a.computed(()=>e.onlyRenderVisibleElements?Wo(e.nodes,{x:0,y:0,width:e.dimensions.width,height:e.dimensions.height},e.viewport,!0):e.nodes),u=a.computed(()=>{if(e.onlyRenderVisibleElements){const x=[];for(const N of e.edges){const k=t.value.get(N.source),M=t.value.get(N.target);Ks({sourcePos:k.computedPosition||{x:0,y:0},targetPos:M.computedPosition||{x:0,y:0},sourceWidth:k.dimensions.width,sourceHeight:k.dimensions.height,targetWidth:M.dimensions.width,targetHeight:M.dimensions.height,width:e.dimensions.width,height:e.dimensions.height,viewport:e.viewport})&&x.push(N)}return x}return e.edges}),c=a.computed(()=>[...s.value,...u.value]),d=a.computed(()=>{const x=[];for(const N of e.nodes)N.selected&&x.push(N);return x}),f=a.computed(()=>{const x=[];for(const N of e.edges)N.selected&&x.push(N);return x}),h=a.computed(()=>[...d.value,...f.value]),p=a.computed(()=>{const x=[];for(const N of e.nodes)N.dimensions.width&&N.dimensions.height&&N.handleBounds!==void 0&&x.push(N);return x}),b=a.computed(()=>s.value.length>0&&p.value.length===s.value.length);return{getNode:o,getEdge:i,getElements:c,getEdgeTypes:r,getNodeTypes:l,getEdges:u,getNodes:s,getSelectedElements:h,getSelectedNodes:d,getSelectedEdges:f,getNodesInitialized:p,areNodesInitialized:b}}class Ye{constructor(){this.currentId=0,this.flows=new Map}static getInstance(){var t;const n=(t=a.getCurrentInstance())==null?void 0:t.appContext.app,o=n?.config.globalProperties.$vueFlowStorage??Ye.instance;return Ye.instance=o??new Ye,n&&(n.config.globalProperties.$vueFlowStorage=Ye.instance),Ye.instance}set(t,n){return this.flows.set(t,n)}get(t){return this.flows.get(t)}remove(t){return this.flows.delete(t)}create(t,n){const o=Ni(),i=a.reactive(o),r={};for(const[h,p]of Object.entries(i.hooks)){const b=`on${h.charAt(0).toUpperCase()+h.slice(1)}`;r[b]=p.on}const l={};for(const[h,p]of Object.entries(i.hooks))l[h]=p.trigger;const s=a.computed(()=>{const h=new Map;for(const p of i.nodes)h.set(p.id,p);return h}),u=a.computed(()=>{const h=new Map;for(const p of i.edges)h.set(p.id,p);return h}),c=Wu(i,s,u),d=Su(i,s,u);d.setState({...i,...n});const f={...r,...c,...d,...Gi(i),nodeLookup:s,edgeLookup:u,emits:l,id:t,vueFlowVersion:"1.47.0",$destroy:()=>{this.remove(t)}};return this.set(t,f),f}getId(){return`vue-flow-${this.currentId++}`}}function de(e){const t=Ye.getInstance(),n=a.getCurrentScope(),o=typeof e=="object",i=o?e:{id:e},r=i.id,l=r??n?.vueFlowId;let s;if(n){const u=a.inject(vi,null);typeof u<"u"&&u!==null&&(!l||u.id===l)&&(s=u)}if(s||l&&(s=t.get(l)),!s||l&&s.id!==l){const u=r??t.getId(),c=t.create(u,i);s=c,(n??a.effectScope(!0)).run(()=>{a.watch(c.applyDefault,(f,h,p)=>{const b=N=>{c.applyNodeChanges(N)},x=N=>{c.applyEdgeChanges(N)};f?(c.onNodesChange(b),c.onEdgesChange(x)):(c.hooks.value.nodesChange.off(b),c.hooks.value.edgesChange.off(x)),p(()=>{c.hooks.value.nodesChange.off(b),c.hooks.value.edgesChange.off(x)})},{immediate:!0}),et(()=>{if(s){const f=t.get(s.id);f?f.$destroy():vt(`No store instance found for id ${s.id} in storage.`)}})})}else o&&s.setState(i);if(n&&(a.provide(vi,s),n.vueFlowId=s.id),o){const u=a.getCurrentInstance();u?.type.name!=="VueFlow"&&s.emits.error(new ge(fe.USEVUEFLOW_OPTIONS))}return s}function Ku(e){const{emits:t,dimensions:n}=de();let o;a.onMounted(()=>{const i=()=>{var r,l;if(!e.value||!(((l=(r=e.value).checkVisibility)==null?void 0:l.call(r))??!0))return;const s=Yt(e.value);(s.width===0||s.height===0)&&t.error(new ge(fe.MISSING_VIEWPORT_DIMENSIONS)),n.value={width:s.width||500,height:s.height||500}};i(),window.addEventListener("resize",i),e.value&&(o=new ResizeObserver(()=>i()),o.observe(e.value)),a.onBeforeUnmount(()=>{window.removeEventListener("resize",i),o&&e.value&&o.unobserve(e.value)})})}const qu={name:"UserSelection",compatConfig:{MODE:3}},ju=a.defineComponent({...qu,props:{userSelectionRect:{}},setup(e){return(t,n)=>(a.openBlock(),a.createElementBlock("div",{class:"vue-flow__selection vue-flow__container",style:a.normalizeStyle({width:`${t.userSelectionRect.width}px`,height:`${t.userSelectionRect.height}px`,transform:`translate(${t.userSelectionRect.x}px, ${t.userSelectionRect.y}px)`})},null,4))}}),Ju=["tabIndex"],Qu={name:"NodesSelection",compatConfig:{MODE:3}},ec=a.defineComponent({...Qu,setup(e){const{emits:t,viewport:n,getSelectedNodes:o,noPanClassName:i,disableKeyboardA11y:r,userSelectionActive:l}=de(),s=Si(),u=a.ref(null),c=Ei({el:u,onStart(b){t.selectionDragStart(b),t.nodeDragStart(b)},onDrag(b){t.selectionDrag(b),t.nodeDrag(b)},onStop(b){t.selectionDragStop(b),t.nodeDragStop(b)}});a.onMounted(()=>{var b;r.value||(b=u.value)==null||b.focus({preventScroll:!0})});const d=a.computed(()=>Zo(o.value)),f=a.computed(()=>({width:`${d.value.width}px`,height:`${d.value.height}px`,top:`${d.value.y}px`,left:`${d.value.x}px`}));function h(b){t.selectionContextMenu({event:b,nodes:o.value})}function p(b){r||qe[b.key]&&(b.preventDefault(),s({x:qe[b.key].x,y:qe[b.key].y},b.shiftKey))}return(b,x)=>!a.unref(l)&&d.value.width&&d.value.height?(a.openBlock(),a.createElementBlock("div",{key:0,class:a.normalizeClass(["vue-flow__nodesselection vue-flow__container",a.unref(i)]),style:a.normalizeStyle({transform:`translate(${a.unref(n).x}px,${a.unref(n).y}px) scale(${a.unref(n).zoom})`})},[a.createElementVNode("div",{ref_key:"el",ref:u,class:a.normalizeClass([{dragging:a.unref(c)},"vue-flow__nodesselection-rect"]),style:a.normalizeStyle(f.value),tabIndex:a.unref(r)?void 0:-1,onContextmenu:h,onKeydown:p},null,46,Ju)],6)):a.createCommentVNode("",!0)}});function tc(e,t){return{x:e.clientX-t.left,y:e.clientY-t.top}}const nc={name:"Pane",compatConfig:{MODE:3}},oc=a.defineComponent({...nc,props:{isSelecting:{type:Boolean},selectionKeyPressed:{type:Boolean}},setup(e){const{vueFlowRef:t,nodes:n,viewport:o,emits:i,userSelectionActive:r,removeSelectedElements:l,userSelectionRect:s,elementsSelectable:u,nodesSelectionActive:c,getSelectedEdges:d,getSelectedNodes:f,removeNodes:h,removeEdges:p,selectionMode:b,deleteKeyCode:x,multiSelectionKeyCode:N,multiSelectionActive:k,edgeLookup:M,nodeLookup:_,connectionLookup:C,defaultEdgeOptions:A,connectionStartHandle:P}=de(),$=a.ref(null),B=a.ref(new Set),K=a.ref(new Set),F=a.ref(),O=a.toRef(()=>u.value&&(e.isSelecting||r.value)),E=a.toRef(()=>P.value!==null);let Z=!1,w=!1;const T=ht(x,{actInsideInputWithModifier:!1}),S=ht(N);a.watch(T,Y=>{Y&&(h(f.value),p(d.value),c.value=!1)}),a.watch(S,Y=>{k.value=Y});function D(Y,j){return q=>{q.target===j&&Y?.(q)}}function V(Y){if(Z||E.value){Z=!1;return}i.paneClick(Y),l(),c.value=!1}function R(Y){Y.preventDefault(),Y.stopPropagation(),i.paneContextMenu(Y)}function H(Y){i.paneScroll(Y)}function W(Y){var j,q,re;if(F.value=(j=t.value)==null?void 0:j.getBoundingClientRect(),!u.value||!e.isSelecting||Y.button!==0||Y.target!==$.value||!F.value)return;(re=(q=Y.target)==null?void 0:q.setPointerCapture)==null||re.call(q,Y.pointerId);const{x:le,y:oe}=tc(Y,F.value);w=!0,Z=!1,l(),s.value={width:0,height:0,startX:le,startY:oe,x:le,y:oe},i.selectionStart(Y)}function Q(Y){var j;if(!F.value||!s.value)return;Z=!0;const{x:q,y:re}=Se(Y,F.value),{startX:le=0,startY:oe=0}=s.value,se={startX:le,startY:oe,x:q<le?q:le,y:re<oe?re:oe,width:Math.abs(q-le),height:Math.abs(re-oe)},ce=B.value,ee=K.value;B.value=new Set(Wo(n.value,se,o.value,b.value===Sn.Partial,!0).map(m=>m.id)),K.value=new Set;const ie=((j=A.value)==null?void 0:j.selectable)??!0;for(const m of B.value){const g=C.value.get(m);if(g)for(const{edgeId:v}of g.values()){const y=M.value.get(v);y&&(y.selectable??ie)&&K.value.add(v)}}if(!yi(ce,B.value)){const m=Be(_.value,B.value,!0);i.nodesChange(m)}if(!yi(ee,K.value)){const m=Be(M.value,K.value);i.edgesChange(m)}s.value=se,r.value=!0,c.value=!1}function te(Y){var j;Y.button!==0||!w||((j=Y.target)==null||j.releasePointerCapture(Y.pointerId),!r.value&&s.value&&Y.target===$.value&&V(Y),r.value=!1,s.value=null,c.value=B.value.size>0,i.selectionEnd(Y),e.selectionKeyPressed&&(Z=!1),w=!1)}return(Y,j)=>(a.openBlock(),a.createElementBlock("div",{ref_key:"container",ref:$,class:a.normalizeClass(["vue-flow__pane vue-flow__container",{selection:Y.isSelecting}]),onClick:j[0]||(j[0]=q=>O.value?void 0:D(V,$.value)(q)),onContextmenu:j[1]||(j[1]=q=>D(R,$.value)(q)),onWheelPassive:j[2]||(j[2]=q=>D(H,$.value)(q)),onPointerenter:j[3]||(j[3]=q=>O.value?void 0:a.unref(i).paneMouseEnter(q)),onPointerdown:j[4]||(j[4]=q=>O.value?W(q):a.unref(i).paneMouseMove(q)),onPointermove:j[5]||(j[5]=q=>O.value?Q(q):a.unref(i).paneMouseMove(q)),onPointerup:j[6]||(j[6]=q=>O.value?te(q):void 0),onPointerleave:j[7]||(j[7]=q=>a.unref(i).paneMouseLeave(q))},[a.renderSlot(Y.$slots,"default"),a.unref(r)&&a.unref(s)?(a.openBlock(),a.createBlock(ju,{key:0,"user-selection-rect":a.unref(s)},null,8,["user-selection-rect"])):a.createCommentVNode("",!0),a.unref(c)&&a.unref(f).length?(a.openBlock(),a.createBlock(ec,{key:1})):a.createCommentVNode("",!0)],34))}}),ic={name:"Transform",compatConfig:{MODE:3}},rc=a.defineComponent({...ic,setup(e){const{viewport:t,fitViewOnInit:n,fitViewOnInitDone:o}=de(),i=a.computed(()=>n.value?!o.value:!1),r=a.computed(()=>`translate(${t.value.x}px,${t.value.y}px) scale(${t.value.zoom})`);return(l,s)=>(a.openBlock(),a.createElementBlock("div",{class:"vue-flow__transformationpane vue-flow__container",style:a.normalizeStyle({transform:r.value,opacity:i.value?0:void 0})},[a.renderSlot(l.$slots,"default")],4))}}),lc={name:"Viewport",compatConfig:{MODE:3}},ac=a.defineComponent({...lc,setup(e){const{minZoom:t,maxZoom:n,defaultViewport:o,translateExtent:i,zoomActivationKeyCode:r,selectionKeyCode:l,panActivationKeyCode:s,panOnScroll:u,panOnScrollMode:c,panOnScrollSpeed:d,panOnDrag:f,zoomOnDoubleClick:h,zoomOnPinch:p,zoomOnScroll:b,preventScrolling:x,noWheelClassName:N,noPanClassName:k,emits:M,connectionStartHandle:_,userSelectionActive:C,paneDragging:A,d3Zoom:P,d3Selection:$,d3ZoomHandler:B,viewport:K,viewportRef:F,paneClickDistance:O}=de();Ku(F);const E=a.shallowRef(!1),Z=a.shallowRef(!1);let w=null,T=!1,S=0,D={x:0,y:0,zoom:0};const V=ht(s),R=ht(l),H=ht(r),W=a.toRef(()=>(!R.value||R.value&&l.value===!0)&&(V.value||f.value)),Q=a.toRef(()=>V.value||u.value),te=a.toRef(()=>R.value||l.value===!0&&W.value!==!0),Y=a.toRef(()=>_.value!==null);a.onMounted(()=>{if(!F.value){vt("Viewport element is missing");return}const oe=F.value,se=oe.getBoundingClientRect(),ce=Ms().clickDistance(O.value).scaleExtent([t.value,n.value]).translateExtent(i.value),ee=ye(oe).call(ce),ie=ee.on("wheel.zoom"),m=Ke.translate(o.value.x??0,o.value.y??0).scale(Le(o.value.zoom??1,t.value,n.value)),g=[[0,0],[se.width,se.height]],v=ce.constrain()(m,g,i.value);ce.transform(ee,v),ce.wheelDelta(Jo),P.value=ce,$.value=ee,B.value=ie,K.value={x:v.x,y:v.y,zoom:v.k},ce.on("start",y=>{var I;if(!y.sourceEvent)return null;S=y.sourceEvent.button,E.value=!0;const G=re(y.transform);((I=y.sourceEvent)==null?void 0:I.type)==="mousedown"&&(A.value=!0),D=G,M.viewportChangeStart(G),M.moveStart({event:y,flowTransform:G})}),ce.on("end",y=>{if(!y.sourceEvent)return null;if(E.value=!1,A.value=!1,j(W.value,S??0)&&!T&&M.paneContextMenu(y.sourceEvent),T=!1,q(D,y.transform)){const I=re(y.transform);D=I,M.viewportChangeEnd(I),M.moveEnd({event:y,flowTransform:I})}}),ce.filter(y=>{var I;const G=H.value||b.value,X=p.value&&y.ctrlKey,U=y.button,J=y.type==="wheel";if(U===1&&y.type==="mousedown"&&(le(y,"vue-flow__node")||le(y,"vue-flow__edge")))return!0;if(!W.value&&!G&&!Q.value&&!h.value&&!p.value||C.value||Y.value&&!J||!h.value&&y.type==="dblclick"||le(y,N.value)&&J||le(y,k.value)&&(!J||Q.value&&J&&!H.value)||!p.value&&y.ctrlKey&&J||!G&&!Q.value&&!X&&J)return!1;if(!p&&y.type==="touchstart"&&((I=y.touches)==null?void 0:I.length)>1)return y.preventDefault(),!1;if(!W.value&&(y.type==="mousedown"||y.type==="touchstart")||l.value===!0&&Array.isArray(f.value)&&f.value.includes(0)&&U===0||Array.isArray(f.value)&&!f.value.includes(U)&&(y.type==="mousedown"||y.type==="touchstart"))return!1;const ne=Array.isArray(f.value)&&f.value.includes(U)||l.value===!0&&Array.isArray(f.value)&&!f.value.includes(0)||!U||U<=1;return(!y.ctrlKey||V.value||J)&&ne}),a.watch([C,W],()=>{C.value&&!E.value?ce.on("zoom",null):C.value||ce.on("zoom",y=>{K.value={x:y.transform.x,y:y.transform.y,zoom:y.transform.k};const I=re(y.transform);T=j(W.value,S??0),M.viewportChange(I),M.move({event:y,flowTransform:I})})},{immediate:!0}),a.watch([C,Q,c,H,p,x,N],()=>{Q.value&&!H.value&&!C.value?ee.on("wheel.zoom",y=>{if(le(y,N.value))return!1;const I=H.value||b.value,G=p.value&&y.ctrlKey;if(!(!x.value||Q.value||I||G))return!1;y.preventDefault(),y.stopImmediatePropagation();const U=ee.property("__zoom").k||1,J=Xt();if(!V.value&&y.ctrlKey&&p.value&&J){const wt=_e(y),jc=Jo(y),Jc=U*2**jc;ce.scaleTo(ee,Jc,wt,y);return}const ne=y.deltaMode===1?20:1;let ae=c.value===ft.Vertical?0:y.deltaX*ne,ue=c.value===ft.Horizontal?0:y.deltaY*ne;!J&&y.shiftKey&&c.value!==ft.Vertical&&!ae&&ue&&(ae=ue,ue=0),ce.translateBy(ee,-(ae/U)*d.value,-(ue/U)*d.value);const Ne=re(ee.property("__zoom"));w&&clearTimeout(w),Z.value?(M.move({event:y,flowTransform:Ne}),M.viewportChange(Ne),w=setTimeout(()=>{M.moveEnd({event:y,flowTransform:Ne}),M.viewportChangeEnd(Ne),Z.value=!1},150)):(Z.value=!0,M.moveStart({event:y,flowTransform:Ne}),M.viewportChangeStart(Ne))},{passive:!1}):typeof ie<"u"&&ee.on("wheel.zoom",function(y,I){const G=!x.value&&y.type==="wheel"&&!y.ctrlKey,X=H.value||b.value,U=p.value&&y.ctrlKey;if(!X&&!u.value&&!U&&y.type==="wheel"||G||le(y,N.value))return null;y.preventDefault(),ie.call(this,y,I)},{passive:!1})},{immediate:!0})});function j(oe,se){return se===2&&Array.isArray(oe)&&oe.includes(2)}function q(oe,se){return oe.x!==se.x&&!Number.isNaN(se.x)||oe.y!==se.y&&!Number.isNaN(se.y)||oe.zoom!==se.k&&!Number.isNaN(se.k)}function re(oe){return{x:oe.x,y:oe.y,zoom:oe.k}}function le(oe,se){return oe.target.closest(`.${se}`)}return(oe,se)=>(a.openBlock(),a.createElementBlock("div",{ref_key:"viewportRef",ref:F,class:"vue-flow__viewport vue-flow__container"},[a.createVNode(oc,{"is-selecting":te.value,"selection-key-pressed":a.unref(R),class:a.normalizeClass({connecting:Y.value,dragging:a.unref(A),draggable:a.unref(f)===!0||Array.isArray(a.unref(f))&&a.unref(f).includes(0)})},{default:a.withCtx(()=>[a.createVNode(rc,null,{default:a.withCtx(()=>[a.renderSlot(oe.$slots,"default")]),_:3})]),_:3},8,["is-selecting","selection-key-pressed","class"])],512))}}),sc=["id"],uc=["id"],cc=["id"],dc={name:"A11yDescriptions",compatConfig:{MODE:3}},fc=a.defineComponent({...dc,setup(e){const{id:t,disableKeyboardA11y:n,ariaLiveMessage:o}=de();return(i,r)=>(a.openBlock(),a.createElementBlock(a.Fragment,null,[a.createElementVNode("div",{id:`${a.unref(zo)}-${a.unref(t)}`,style:{display:"none"}}," Press enter or space to select a node. "+a.toDisplayString(a.unref(n)?"":"You can then use the arrow keys to move the node around.")+" You can then use the arrow keys to move the node around, press delete to remove it and press escape to cancel. ",9,sc),a.createElementVNode("div",{id:`${a.unref(Ro)}-${a.unref(t)}`,style:{display:"none"}}," Press enter or space to select an edge. You can then press delete to remove it or press escape to cancel. ",8,uc),a.unref(n)?a.createCommentVNode("",!0):(a.openBlock(),a.createElementBlock("div",{key:0,id:`${a.unref(Bs)}-${a.unref(t)}`,"aria-live":"assertive","aria-atomic":"true",style:{position:"absolute",width:"1px",height:"1px",margin:"-1px",border:"0",padding:"0",overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)","clip-path":"inset(100%)"}},a.toDisplayString(a.unref(o)),9,cc))],64))}});function hc(){const e=de();a.watch(()=>e.viewportHelper.value.viewportInitialized,t=>{t&&setTimeout(()=>{e.emits.init(e),e.emits.paneReady(e)},1)})}function gc(e,t,n){return n===z.Left?e-t:n===z.Right?e+t:e}function pc(e,t,n){return n===z.Top?e-t:n===z.Bottom?e+t:e}const Rn=function({radius:e=10,centerX:t=0,centerY:n=0,position:o=z.Top,type:i}){return a.h("circle",{class:`vue-flow__edgeupdater vue-flow__edgeupdater-${i}`,cx:gc(t,e,o),cy:pc(n,e,o),r:e,stroke:"transparent",fill:"transparent"})};Rn.props=["radius","centerX","centerY","position","type"],Rn.compatConfig={MODE:3};const Bi=Rn,mc=a.defineComponent({name:"Edge",compatConfig:{MODE:3},props:["id"],setup(e){const{id:t,addSelectedEdges:n,connectionMode:o,edgeUpdaterRadius:i,emits:r,nodesSelectionActive:l,noPanClassName:s,getEdgeTypes:u,removeSelectedEdges:c,findEdge:d,findNode:f,isValidConnection:h,multiSelectionActive:p,disableKeyboardA11y:b,elementsSelectable:x,edgesUpdatable:N,edgesFocusable:k,hooks:M}=de(),_=a.computed(()=>d(e.id)),{emit:C,on:A}=du(_.value,r),P=a.inject(Zt),$=a.getCurrentInstance(),B=a.ref(!1),K=a.ref(!1),F=a.ref(""),O=a.ref(null),E=a.ref("source"),Z=a.ref(null),w=a.toRef(()=>typeof _.value.selectable>"u"?x.value:_.value.selectable),T=a.toRef(()=>typeof _.value.updatable>"u"?N.value:_.value.updatable),S=a.toRef(()=>typeof _.value.focusable>"u"?k.value:_.value.focusable);a.provide(su,e.id),a.provide(uu,Z);const D=a.computed(()=>_.value.class instanceof Function?_.value.class(_.value):_.value.class),V=a.computed(()=>_.value.style instanceof Function?_.value.style(_.value):_.value.style),R=a.computed(()=>{const g=_.value.type||"default",v=P?.[`edge-${g}`];if(v)return v;let y=_.value.template??u.value[g];if(typeof y=="string"&&$){const I=Object.keys($.appContext.components);I&&I.includes(g)&&(y=a.resolveComponent(g,!1))}return y&&typeof y!="string"?y:(r.error(new ge(fe.EDGE_TYPE_MISSING,y)),!1)}),{handlePointerDown:H}=bi({nodeId:F,handleId:O,type:E,isValidConnection:h,edgeUpdaterType:E,onEdgeUpdate:te,onEdgeUpdateEnd:Y});return()=>{const g=f(_.value.source),v=f(_.value.target),y="pathOptions"in _.value?_.value.pathOptions:{};if(!g&&!v)return r.error(new ge(fe.EDGE_SOURCE_TARGET_MISSING,_.value.id,_.value.source,_.value.target)),null;if(!g)return r.error(new ge(fe.EDGE_SOURCE_MISSING,_.value.id,_.value.source)),null;if(!v)return r.error(new ge(fe.EDGE_TARGET_MISSING,_.value.id,_.value.target)),null;if(!_.value||_.value.hidden||g.hidden||v.hidden)return null;let I;o.value===Te.Strict?I=g.handleBounds.source:I=[...g.handleBounds.source||[],...g.handleBounds.target||[]];const G=si(I,_.value.sourceHandle);let X;o.value===Te.Strict?X=v.handleBounds.target:X=[...v.handleBounds.target||[],...v.handleBounds.source||[]];const U=si(X,_.value.targetHandle),J=G?.position||z.Bottom,ne=U?.position||z.Top,{x:ae,y:ue}=Je(g,G,J),{x:Ne,y:wt}=Je(v,U,ne);return _.value.sourceX=ae,_.value.sourceY=ue,_.value.targetX=Ne,_.value.targetY=wt,a.h("g",{ref:Z,key:e.id,"data-id":e.id,class:["vue-flow__edge",`vue-flow__edge-${R.value===!1?"default":_.value.type||"default"}`,s.value,D.value,{updating:B.value,selected:_.value.selected,animated:_.value.animated,inactive:!w.value&&!M.value.edgeClick.hasListeners()}],tabIndex:S.value?0:void 0,"aria-label":_.value.ariaLabel===null?void 0:_.value.ariaLabel??`Edge from ${_.value.source} to ${_.value.target}`,"aria-describedby":S.value?`${Ro}-${t}`:void 0,"aria-roledescription":"edge",role:S.value?"group":"img",..._.value.domAttributes,onClick:q,onContextmenu:re,onDblclick:le,onMouseenter:oe,onMousemove:se,onMouseleave:ce,onKeyDown:S.value?m:void 0},[K.value?null:a.h(R.value===!1?u.value.default:R.value,{id:e.id,sourceNode:g,targetNode:v,source:_.value.source,target:_.value.target,type:_.value.type,updatable:T.value,selected:_.value.selected,animated:_.value.animated,label:_.value.label,labelStyle:_.value.labelStyle,labelShowBg:_.value.labelShowBg,labelBgStyle:_.value.labelBgStyle,labelBgPadding:_.value.labelBgPadding,labelBgBorderRadius:_.value.labelBgBorderRadius,data:_.value.data,events:{..._.value.events,...A},style:V.value,markerStart:`url('#${yt(_.value.markerStart,t)}')`,markerEnd:`url('#${yt(_.value.markerEnd,t)}')`,sourcePosition:J,targetPosition:ne,sourceX:ae,sourceY:ue,targetX:Ne,targetY:wt,sourceHandleId:_.value.sourceHandle,targetHandleId:_.value.targetHandle,interactionWidth:_.value.interactionWidth,...y}),[T.value==="source"||T.value===!0?[a.h("g",{onMousedown:ee,onMouseenter:W,onMouseout:Q},a.h(Bi,{position:J,centerX:ae,centerY:ue,radius:i.value,type:"source","data-type":"source"}))]:null,T.value==="target"||T.value===!0?[a.h("g",{onMousedown:ie,onMouseenter:W,onMouseout:Q},a.h(Bi,{position:ne,centerX:Ne,centerY:wt,radius:i.value,type:"target","data-type":"target"}))]:null]])};function W(){B.value=!0}function Q(){B.value=!1}function te(g,v){C.update({event:g,edge:_.value,connection:v})}function Y(g){C.updateEnd({event:g,edge:_.value}),K.value=!1}function j(g,v){g.button===0&&(K.value=!0,F.value=v?_.value.target:_.value.source,O.value=(v?_.value.targetHandle:_.value.sourceHandle)??null,E.value=v?"target":"source",C.updateStart({event:g,edge:_.value}),H(g))}function q(g){var v;const y={event:g,edge:_.value};w.value&&(l.value=!1,_.value.selected&&p.value?(c([_.value]),(v=Z.value)==null||v.blur()):n([_.value])),C.click(y)}function re(g){C.contextMenu({event:g,edge:_.value})}function le(g){C.doubleClick({event:g,edge:_.value})}function oe(g){C.mouseEnter({event:g,edge:_.value})}function se(g){C.mouseMove({event:g,edge:_.value})}function ce(g){C.mouseLeave({event:g,edge:_.value})}function ee(g){j(g,!0)}function ie(g){j(g,!1)}function m(g){var v;!b.value&&Ho.includes(g.key)&&w.value&&(g.key==="Escape"?((v=Z.value)==null||v.blur(),c([d(e.id)])):n([d(e.id)]))}}}),yc=a.defineComponent({name:"ConnectionLine",compatConfig:{MODE:3},setup(){var e;const{id:t,connectionMode:n,connectionStartHandle:o,connectionEndHandle:i,connectionPosition:r,connectionLineType:l,connectionLineStyle:s,connectionLineOptions:u,connectionStatus:c,viewport:d,findNode:f}=de(),h=(e=a.inject(Zt))==null?void 0:e["connection-line"],p=a.computed(()=>{var M;return f((M=o.value)==null?void 0:M.nodeId)}),b=a.computed(()=>{var M;return f((M=i.value)==null?void 0:M.nodeId)??null}),x=a.computed(()=>({x:(r.value.x-d.value.x)/d.value.zoom,y:(r.value.y-d.value.y)/d.value.zoom})),N=a.computed(()=>u.value.markerStart?`url(#${yt(u.value.markerStart,t)})`:""),k=a.computed(()=>u.value.markerEnd?`url(#${yt(u.value.markerEnd,t)})`:"");return()=>{var M,_,C;if(!p.value||!o.value)return null;const A=o.value.id,P=o.value.type,$=p.value.handleBounds;let B=$?.[P]??[];if(n.value===Te.Loose){const V=$?.[P==="source"?"target":"source"]??[];B=[...B,...V]}if(!B)return null;const K=(A?B.find(V=>V.id===A):B[0])??null,F=K?.position??z.Top,{x:O,y:E}=Je(p.value,K,F);let Z=null;b.value&&(n.value===Te.Strict?Z=((M=b.value.handleBounds[P==="source"?"target":"source"])==null?void 0:M.find(V=>{var R;return V.id===((R=i.value)==null?void 0:R.id)}))||null:Z=((_=[...b.value.handleBounds.source??[],...b.value.handleBounds.target??[]])==null?void 0:_.find(V=>{var R;return V.id===((R=i.value)==null?void 0:R.id)}))||null);const w=((C=i.value)==null?void 0:C.position)??(F?$n[F]:null);if(!F||!w)return null;const T=l.value??u.value.type??He.Bezier;let S="";const D={sourceX:O,sourceY:E,sourcePosition:F,targetX:x.value.x,targetY:x.value.y,targetPosition:w};return T===He.Bezier?[S]=On(D):T===He.Step?[S]=zn({...D,borderRadius:0}):T===He.SmoothStep?[S]=zn(D):T===He.SimpleBezier?[S]=Pi(D):S=`M${O},${E} ${x.value.x},${x.value.y}`,a.h("svg",{class:"vue-flow__edges vue-flow__connectionline vue-flow__container"},a.h("g",{class:"vue-flow__connection"},h?a.h(h,{sourceX:O,sourceY:E,sourcePosition:F,targetX:x.value.x,targetY:x.value.y,targetPosition:w,sourceNode:p.value,sourceHandle:K,targetNode:b.value,targetHandle:Z,markerEnd:k.value,markerStart:N.value,connectionStatus:c.value}):a.h("path",{d:S,class:[u.value.class,c.value,"vue-flow__connection-path"],style:{...s.value,...u.value.style},"marker-end":k.value,"marker-start":N.value})))}}}),vc=["id","markerWidth","markerHeight","markerUnits","orient"],wc={name:"MarkerType",compatConfig:{MODE:3}},_c=a.defineComponent({...wc,props:{id:{},type:{},color:{default:"none"},width:{default:12.5},height:{default:12.5},markerUnits:{default:"strokeWidth"},orient:{default:"auto-start-reverse"},strokeWidth:{default:1}},setup(e){return(t,n)=>(a.openBlock(),a.createElementBlock("marker",{id:t.id,class:"vue-flow__arrowhead",viewBox:"-10 -10 20 20",refX:"0",refY:"0",markerWidth:`${t.width}`,markerHeight:`${t.height}`,markerUnits:t.markerUnits,orient:t.orient},[t.type===a.unref(Nn).ArrowClosed?(a.openBlock(),a.createElementBlock("polyline",{key:0,style:a.normalizeStyle({stroke:t.color,fill:t.color,strokeWidth:t.strokeWidth}),"stroke-linecap":"round","stroke-linejoin":"round",points:"-5,-4 0,0 -5,4 -5,-4"},null,4)):a.createCommentVNode("",!0),t.type===a.unref(Nn).Arrow?(a.openBlock(),a.createElementBlock("polyline",{key:1,style:a.normalizeStyle({stroke:t.color,strokeWidth:t.strokeWidth}),"stroke-linecap":"round","stroke-linejoin":"round",fill:"none",points:"-5,-4 0,0 -5,4"},null,4)):a.createCommentVNode("",!0)],8,vc))}}),Ec={class:"vue-flow__marker vue-flow__container","aria-hidden":"true"},bc={name:"MarkerDefinitions",compatConfig:{MODE:3}},xc=a.defineComponent({...bc,setup(e){const{id:t,edges:n,connectionLineOptions:o,defaultMarkerColor:i}=de(),r=a.computed(()=>{const l=new Set,s=[],u=c=>{if(c){const d=yt(c,t);l.has(d)||(typeof c=="object"?s.push({...c,id:d,color:c.color||i.value}):s.push({id:d,color:i.value,type:c}),l.add(d))}};for(const c of[o.value.markerEnd,o.value.markerStart])u(c);for(const c of n.value)for(const d of[c.markerStart,c.markerEnd])u(d);return s.sort((c,d)=>c.id.localeCompare(d.id))});return(l,s)=>(a.openBlock(),a.createElementBlock("svg",Ec,[a.createElementVNode("defs",null,[(a.openBlock(!0),a.createElementBlock(a.Fragment,null,a.renderList(r.value,u=>(a.openBlock(),a.createBlock(_c,{id:u.id,key:u.id,type:u.type,color:u.color,width:u.width,height:u.height,markerUnits:u.markerUnits,"stroke-width":u.strokeWidth,orient:u.orient},null,8,["id","type","color","width","height","markerUnits","stroke-width","orient"]))),128))])]))}}),Sc={name:"Edges",compatConfig:{MODE:3}},Nc=a.defineComponent({...Sc,setup(e){const{findNode:t,getEdges:n,elevateEdgesOnSelect:o}=de();return(i,r)=>(a.openBlock(),a.createElementBlock(a.Fragment,null,[a.createVNode(xc),(a.openBlock(!0),a.createElementBlock(a.Fragment,null,a.renderList(a.unref(n),l=>(a.openBlock(),a.createElementBlock("svg",{key:l.id,class:"vue-flow__edges vue-flow__container",style:a.normalizeStyle({zIndex:a.unref(qs)(l,a.unref(t),a.unref(o))})},[a.createVNode(a.unref(mc),{id:l.id},null,8,["id"])],4))),128)),a.createVNode(a.unref(yc))],64))}}),Cc=a.defineComponent({name:"Node",compatConfig:{MODE:3},props:["id","resizeObserver"],setup(e){const{id:t,noPanClassName:n,selectNodesOnDrag:o,nodesSelectionActive:i,multiSelectionActive:r,emits:l,removeSelectedNodes:s,addSelectedNodes:u,updateNodeDimensions:c,onUpdateNodeInternals:d,getNodeTypes:f,nodeExtent:h,elevateNodesOnSelect:p,disableKeyboardA11y:b,ariaLiveMessage:x,snapToGrid:N,snapGrid:k,nodeDragThreshold:M,nodesDraggable:_,elementsSelectable:C,nodesConnectable:A,nodesFocusable:P,hooks:$}=de(),B=a.ref(null);a.provide(_i,B),a.provide(wi,e.id);const K=a.inject(Zt),F=a.getCurrentInstance(),O=Si(),{node:E,parentNode:Z}=xi(e.id),{emit:w,on:T}=pu(E,l),S=a.toRef(()=>typeof E.draggable>"u"?_.value:E.draggable),D=a.toRef(()=>typeof E.selectable>"u"?C.value:E.selectable),V=a.toRef(()=>typeof E.connectable>"u"?A.value:E.connectable),R=a.toRef(()=>typeof E.focusable>"u"?P.value:E.focusable),H=a.computed(()=>D.value||S.value||$.value.nodeClick.hasListeners()||$.value.nodeDoubleClick.hasListeners()||$.value.nodeMouseEnter.hasListeners()||$.value.nodeMouseMove.hasListeners()||$.value.nodeMouseLeave.hasListeners()),W=a.toRef(()=>!!E.dimensions.width&&!!E.dimensions.height),Q=a.computed(()=>{const v=E.type||"default",y=K?.[`node-${v}`];if(y)return y;let I=E.template||f.value[v];if(typeof I=="string"&&F){const G=Object.keys(F.appContext.components);G&&G.includes(v)&&(I=a.resolveComponent(v,!1))}return I&&typeof I!="string"?I:(l.error(new ge(fe.NODE_TYPE_MISSING,I)),!1)}),te=Ei({id:e.id,el:B,disabled:()=>!S.value,selectable:D,dragHandle:()=>E.dragHandle,onStart(v){w.dragStart(v)},onDrag(v){w.drag(v)},onStop(v){w.dragStop(v)},onClick(v){m(v)}}),Y=a.computed(()=>E.class instanceof Function?E.class(E):E.class),j=a.computed(()=>{const v=(E.style instanceof Function?E.style(E):E.style)||{},y=E.width instanceof Function?E.width(E):E.width,I=E.height instanceof Function?E.height(E):E.height;return!v.width&&y&&(v.width=typeof y=="string"?y:`${y}px`),!v.height&&I&&(v.height=typeof I=="string"?I:`${I}px`),v}),q=a.toRef(()=>Number(E.zIndex??j.value.zIndex??0));return d(v=>{(v.includes(e.id)||!v.length)&&le()}),a.onMounted(()=>{a.watch(()=>E.hidden,(v=!1,y,I)=>{!v&&B.value&&(e.resizeObserver.observe(B.value),I(()=>{B.value&&e.resizeObserver.unobserve(B.value)}))},{immediate:!0,flush:"post"})}),a.watch([()=>E.type,()=>E.sourcePosition,()=>E.targetPosition],()=>{a.nextTick(()=>{c([{id:e.id,nodeElement:B.value,forceUpdate:!0}])})}),a.watch([()=>E.position.x,()=>E.position.y,()=>{var v;return(v=Z.value)==null?void 0:v.computedPosition.x},()=>{var v;return(v=Z.value)==null?void 0:v.computedPosition.y},()=>{var v;return(v=Z.value)==null?void 0:v.computedPosition.z},q,()=>E.selected,()=>E.dimensions.height,()=>E.dimensions.width,()=>{var v;return(v=Z.value)==null?void 0:v.dimensions.height},()=>{var v;return(v=Z.value)==null?void 0:v.dimensions.width}],([v,y,I,G,X,U])=>{const J={x:v,y,z:U+(p.value&&E.selected?1e3:0)};typeof I<"u"&&typeof G<"u"?E.computedPosition=Gs({x:I,y:G,z:X},J):E.computedPosition=J},{flush:"post",immediate:!0}),a.watch([()=>E.extent,h],([v,y],[I,G])=>{(v!==I||y!==G)&&re()}),E.extent==="parent"||typeof E.extent=="object"&&"range"in E.extent&&E.extent.range==="parent"?nn(()=>W).toBe(!0).then(re):re(),()=>E.hidden?null:a.h("div",{ref:B,"data-id":E.id,class:["vue-flow__node",`vue-flow__node-${Q.value===!1?"default":E.type||"default"}`,{[n.value]:S.value,dragging:te?.value,draggable:S.value,selected:E.selected,selectable:D.value,parent:E.isParent},Y.value],style:{visibility:W.value?"visible":"hidden",zIndex:E.computedPosition.z??q.value,transform:`translate(${E.computedPosition.x}px,${E.computedPosition.y}px)`,pointerEvents:H.value?"all":"none",...j.value},tabIndex:R.value?0:void 0,role:R.value?"group":void 0,"aria-describedby":b.value?void 0:`${zo}-${t}`,"aria-label":E.ariaLabel,"aria-roledescription":"node",...E.domAttributes,onMouseenter:oe,onMousemove:se,onMouseleave:ce,onContextmenu:ee,onClick:m,onDblclick:ie,onKeydown:g},[a.h(Q.value===!1?f.value.default:Q.value,{id:E.id,type:E.type,data:E.data,events:{...E.events,...T},selected:E.selected,resizing:E.resizing,dragging:te.value,connectable:V.value,position:E.computedPosition,dimensions:E.dimensions,isValidTargetPos:E.isValidTargetPos,isValidSourcePos:E.isValidSourcePos,parent:E.parentNode,parentNodeId:E.parentNode,zIndex:E.computedPosition.z??q.value,targetPosition:E.targetPosition,sourcePosition:E.sourcePosition,label:E.label,dragHandle:E.dragHandle,onUpdateNodeInternals:le})]);function re(){const v=E.computedPosition,{computedPosition:y,position:I}=In(E,N.value?Ut(v,k.value):v,l.error,h.value,Z.value);(E.computedPosition.x!==y.x||E.computedPosition.y!==y.y)&&(E.computedPosition={...E.computedPosition,...y}),(E.position.x!==I.x||E.position.y!==I.y)&&(E.position=I)}function le(){B.value&&c([{id:e.id,nodeElement:B.value,forceUpdate:!0}])}function oe(v){te?.value||w.mouseEnter({event:v,node:E})}function se(v){te?.value||w.mouseMove({event:v,node:E})}function ce(v){te?.value||w.mouseLeave({event:v,node:E})}function ee(v){return w.contextMenu({event:v,node:E})}function ie(v){return w.doubleClick({event:v,node:E})}function m(v){D.value&&(!o.value||!S.value||M.value>0)&&Dn(E,r.value,u,s,i,!1,B.value),w.click({event:v,node:E})}function g(v){if(!(Cn(v)||b.value))if(Ho.includes(v.key)&&D.value){const y=v.key==="Escape";Dn(E,r.value,u,s,i,y,B.value)}else S.value&&E.selected&&qe[v.key]&&(v.preventDefault(),x.value=`Moved selected node ${v.key.replace("Arrow","").toLowerCase()}. New position, x: ${~~E.position.x}, y: ${~~E.position.y}`,O({x:qe[v.key].x,y:qe[v.key].y},v.shiftKey))}}}),kc={height:"0",width:"0"},Mc={name:"EdgeLabelRenderer",compatConfig:{MODE:3}},Ic=a.defineComponent({...Mc,setup(e){const{viewportRef:t}=de(),n=a.toRef(()=>{var o;return(o=t.value)==null?void 0:o.getElementsByClassName("vue-flow__edge-labels")[0]});return(o,i)=>(a.openBlock(),a.createElementBlock("svg",null,[(a.openBlock(),a.createElementBlock("foreignObject",kc,[(a.openBlock(),a.createBlock(a.Teleport,{to:n.value,disabled:!n.value},[a.renderSlot(o.$slots,"default")],8,["to","disabled"]))]))]))}});function Pc(e={includeHiddenNodes:!1}){const{nodes:t}=de();return a.computed(()=>{if(t.value.length===0)return!1;for(const n of t.value)if((e.includeHiddenNodes||!n.hidden)&&(n?.handleBounds===void 0||n.dimensions.width===0||n.dimensions.height===0))return!1;return!0})}const Tc={class:"vue-flow__nodes vue-flow__container"},$c={name:"Nodes",compatConfig:{MODE:3}},Dc=a.defineComponent({...$c,setup(e){const{getNodes:t,updateNodeDimensions:n,emits:o}=de(),i=Pc(),r=a.ref();return a.watch(i,l=>{l&&a.nextTick(()=>{o.nodesInitialized(t.value)})},{immediate:!0}),a.onMounted(()=>{r.value=new ResizeObserver(l=>{const s=l.map(u=>({id:u.target.getAttribute("data-id"),nodeElement:u.target,forceUpdate:!0}));a.nextTick(()=>n(s))})}),a.onBeforeUnmount(()=>{var l;return(l=r.value)==null?void 0:l.disconnect()}),(l,s)=>(a.openBlock(),a.createElementBlock("div",Tc,[r.value?(a.openBlock(!0),a.createElementBlock(a.Fragment,{key:0},a.renderList(a.unref(t),(u,c,d,f)=>{const h=[u.id];if(f&&f.key===u.id&&a.isMemoSame(f,h))return f;const p=(a.openBlock(),a.createBlock(a.unref(Cc),{id:u.id,key:u.id,"resize-observer":r.value},null,8,["id","resize-observer"]));return p.memo=h,p},s,0),128)):a.createCommentVNode("",!0)]))}});function Bc(){const{emits:e}=de();a.onMounted(()=>{if(hi()){const t=document.querySelector(".vue-flow__pane");t&&window.getComputedStyle(t).zIndex!=="1"&&e.error(new ge(fe.MISSING_STYLES))}})}const Vc=a.createElementVNode("div",{class:"vue-flow__edge-labels"},null,-1),Ac={name:"VueFlow",compatConfig:{MODE:3}},Oc=a.defineComponent({...Ac,props:{id:{},modelValue:{},nodes:{},edges:{},edgeTypes:{},nodeTypes:{},connectionMode:{},connectionLineType:{},connectionLineStyle:{default:void 0},connectionLineOptions:{default:void 0},connectionRadius:{},isValidConnection:{type:[Function,null],default:void 0},deleteKeyCode:{default:void 0},selectionKeyCode:{type:[Boolean,null],default:void 0},multiSelectionKeyCode:{default:void 0},zoomActivationKeyCode:{default:void 0},panActivationKeyCode:{default:void 0},snapToGrid:{type:Boolean,default:void 0},snapGrid:{},onlyRenderVisibleElements:{type:Boolean,default:void 0},edgesUpdatable:{type:[Boolean,String],default:void 0},nodesDraggable:{type:Boolean,default:void 0},nodesConnectable:{type:Boolean,default:void 0},nodeDragThreshold:{},elementsSelectable:{type:Boolean,default:void 0},selectNodesOnDrag:{type:Boolean,default:void 0},panOnDrag:{type:[Boolean,Array],default:void 0},minZoom:{},maxZoom:{},defaultViewport:{},translateExtent:{},nodeExtent:{},defaultMarkerColor:{},zoomOnScroll:{type:Boolean,default:void 0},zoomOnPinch:{type:Boolean,default:void 0},panOnScroll:{type:Boolean,default:void 0},panOnScrollSpeed:{},panOnScrollMode:{},paneClickDistance:{},zoomOnDoubleClick:{type:Boolean,default:void 0},preventScrolling:{type:Boolean,default:void 0},selectionMode:{},edgeUpdaterRadius:{},fitViewOnInit:{type:Boolean,default:void 0},connectOnClick:{type:Boolean,default:void 0},applyDefault:{type:Boolean,default:void 0},autoConnect:{type:[Boolean,Function],default:void 0},noDragClassName:{},noWheelClassName:{},noPanClassName:{},defaultEdgeOptions:{},elevateEdgesOnSelect:{type:Boolean,default:void 0},elevateNodesOnSelect:{type:Boolean,default:void 0},disableKeyboardA11y:{type:Boolean,default:void 0},edgesFocusable:{type:Boolean,default:void 0},nodesFocusable:{type:Boolean,default:void 0},autoPanOnConnect:{type:Boolean,default:void 0},autoPanOnNodeDrag:{type:Boolean,default:void 0},autoPanSpeed:{}},emits:["nodesChange","edgesChange","nodesInitialized","paneReady","init","updateNodeInternals","error","connect","connectStart","connectEnd","clickConnectStart","clickConnectEnd","moveStart","move","moveEnd","selectionDragStart","selectionDrag","selectionDragStop","selectionContextMenu","selectionStart","selectionEnd","viewportChangeStart","viewportChange","viewportChangeEnd","paneScroll","paneClick","paneContextMenu","paneMouseEnter","paneMouseMove","paneMouseLeave","edgeUpdate","edgeContextMenu","edgeMouseEnter","edgeMouseMove","edgeMouseLeave","edgeDoubleClick","edgeClick","edgeUpdateStart","edgeUpdateEnd","nodeContextMenu","nodeMouseEnter","nodeMouseMove","nodeMouseLeave","nodeDoubleClick","nodeClick","nodeDragStart","nodeDrag","nodeDragStop","miniMapNodeClick","miniMapNodeDoubleClick","miniMapNodeMouseEnter","miniMapNodeMouseMove","miniMapNodeMouseLeave","update:modelValue","update:nodes","update:edges"],setup(e,{expose:t,emit:n}){const o=e,i=a.useSlots(),r=on(o,"modelValue",n),l=on(o,"nodes",n),s=on(o,"edges",n),u=de(o),c=wu({modelValue:r,nodes:l,edges:s},o,u);return Eu(n,u.hooks),hc(),Bc(),a.provide(Zt,i),a.onUnmounted(c),t(u),(d,f)=>(a.openBlock(),a.createElementBlock("div",{ref:a.unref(u).vueFlowRef,class:"vue-flow"},[a.createVNode(ac,null,{default:a.withCtx(()=>[a.createVNode(Nc),Vc,a.createVNode(Dc),a.renderSlot(d.$slots,"zoom-pane")]),_:3}),a.renderSlot(d.$slots,"default"),a.createVNode(fc)],512))}}),zc=["id","d","marker-end"],Rc={class:"vue-flow__edge-label"},Hc={key:0,class:"label-input-wrapper"},Lc={inheritAttrs:!1},Fc=a.defineComponent({...Lc,__name:"EditableEdge",props:{id:{},sourceNode:{},targetNode:{},source:{},target:{},type:{},label:{type:[String,Object,Function]},style:{},selected:{type:Boolean},sourcePosition:{},targetPosition:{},sourceHandleId:{},targetHandleId:{},animated:{type:Boolean},updatable:{type:Boolean},markerStart:{},markerEnd:{},curvature:{},interactionWidth:{},data:{},events:{},labelStyle:{},labelShowBg:{type:Boolean},labelBgStyle:{},labelBgPadding:{},labelBgBorderRadius:{},sourceX:{},sourceY:{},targetX:{},targetY:{}},emits:["change"],setup(e,{emit:t}){const n=e,o=t,i=a.useTemplateRef("labelInput"),r=a.ref(""),l=a.ref(!1);let s=0;const u=async()=>{let h=Date.now();h-s<500&&!l.value&&await c(),s=h},c=async()=>{r.value=n.label,l.value=!0,await a.nextTick(),i.value.focus()},d=()=>{l.value=!1,o("change",r.value)},f=a.computed(()=>On(n));return(h,p)=>(a.openBlock(),a.createElementBlock(a.Fragment,null,[a.createElementVNode("path",{id:e.id,style:a.normalizeStyle(e.style),class:"vue-flow__edge-path",d:f.value[0],"marker-end":e.markerEnd},null,12,zc),a.createVNode(a.unref(Ic),null,{default:a.withCtx(()=>[a.createElementVNode("div",{style:a.normalizeStyle({pointerEvents:"all",position:"absolute",transform:`translate(-50%, -50%) translate(${f.value[1]}px,${f.value[2]}px)`}),class:"nodrag nopan editable-edge-label",onClick:p[2]||(p[2]=b=>u())},[a.createElementVNode("div",Rc,a.toDisplayString(e.label),1),l.value?(a.openBlock(),a.createElementBlock("div",Hc,[a.withDirectives(a.createElementVNode("input",{ref:"labelInput","onUpdate:modelValue":p[0]||(p[0]=b=>r.value=b),class:"label-input",onBlur:p[1]||(p[1]=b=>l.value=!1),onKeypress:a.withKeys(d,["enter"])},null,544),[[a.vModelText,r.value]])])):a.createCommentVNode("",!0)],4)]),_:1})],64))}}),Yc={key:0,class:"label-input-wrapper"},Gc=a.defineComponent({__name:"EditableNode",props:{id:{},type:{},selected:{type:Boolean},connectable:{type:[Boolean,Number,String,Function]},position:{},dimensions:{},label:{},isValidTargetPos:{type:Function},isValidSourcePos:{type:Function},parent:{},parentNodeId:{},dragging:{type:Boolean},resizing:{type:Boolean},zIndex:{},targetPosition:{},sourcePosition:{},dragHandle:{},data:{},events:{}},emits:["change"],setup(e,{emit:t}){const n=e,o=t,i=a.useTemplateRef("labelInput"),r=a.ref(""),l=a.ref(!1);let s=0;const u=async()=>{let f=Date.now();f-s<500&&!l.value&&await c(),s=f},c=async()=>{r.value=n.label,l.value=!0,await a.nextTick(),i.value.focus()},d=()=>{l.value=!1,o("change",r.value)};return(f,h)=>(a.openBlock(),a.createElementBlock("div",{onClick:h[2]||(h[2]=p=>u())},[a.createElementVNode("div",null,a.toDisplayString(e.label),1),l.value?(a.openBlock(),a.createElementBlock("div",Yc,[a.withDirectives(a.createElementVNode("input",{ref:"labelInput","onUpdate:modelValue":h[0]||(h[0]=p=>r.value=p),class:"label-input",onBlur:h[1]||(h[1]=p=>l.value=!1),onKeypress:a.withKeys(d,["enter"])},null,544),[[a.vModelText,r.value]])])):a.createCommentVNode("",!0),e.data.hasInput?(a.openBlock(),a.createBlock(a.unref(Qe),{key:1,id:"a",type:"target",position:e.targetPosition},null,8,["position"])):a.createCommentVNode("",!0),e.data.hasOutput?(a.openBlock(),a.createBlock(a.unref(Qe),{key:2,id:"b",type:"source",position:e.sourcePosition},null,8,["position"])):a.createCommentVNode("",!0)]))}}),Xc={class:"chart-controls"},Uc={class:"chart-controls-left"},Zc={class:"chart-controls-right"},Wc={key:0},Kc={key:1},Hn=a.defineComponent({__name:"NodeEditor",props:{modelValue:{},nodeContainerClass:{default:""}},emits:["update:modelValue"],setup(e,{emit:t}){const n=t,o=a.ref(!1),i=a.ref([]),r=a.ref(),l=a.ref(""),s=a.computed(()=>(i.value.forEach((P,$)=>{if(P.id===l.value)return $}),-1)),u=a.computed({get:()=>{const P=e.modelValue;for(const $ of P)$.data={},$.type==="input"?($.data.hasInput=!1,$.data.hasOutput=!0):$.type==="output"?($.data.hasInput=!0,$.data.hasOutput=!1):($.data.hasInput=!0,$.data.hasOutput=!0),$.class="vue-flow__node-default",$.type="editable";for(const $ of P)$.events={click:()=>{l.value=$.id}};return P},set:P=>{n("update:modelValue",JSON.parse(JSON.stringify(P)))}}),{addEdges:c,removeEdges:d}=de();a.onMounted(()=>{document.removeEventListener("keypress",N),document.addEventListener("keypress",N)}),a.onBeforeUnmount(()=>{document.removeEventListener("keypress",N)});const f=P=>{r.value=P};i.value=u.value;const h=P=>({[z.Top]:z.Right,[z.Right]:z.Bottom,[z.Bottom]:z.Left,[z.Left]:z.Top})[P],p=()=>{if(s.value>-1){const P=i.value[s.value];if(!P.sourcePosition)return;P.sourcePosition=h(P.sourcePosition)}},b=()=>{if(s.value>-1){const P=i.value[s.value];if(!P.targetPosition)return;P.targetPosition=h(P.targetPosition)}},x=P=>{window.scrollBy(0,P.deltaY)},N=P=>{o.value&&P.ctrlKey==!0&&((P.key=="+"||P.key=="=")&&r.value?.zoomIn(),P.key=="-"&&r.value?.zoomOut())},k=async()=>{await r.value?.fitView()},M=()=>{let P=!1,$={x:Math.random()*200,y:Math.random()*200};if(s.value>-1){const F=i.value[s.value];F.data?.hasOutput&&($={x:F.position.x+200,y:F.position.y+50},P=!0)}const B=i.value.length,K=`node-${B}`;if(i.value.push({id:K,label:"Node "+B,sourcePosition:z.Right,targetPosition:z.Left,class:"vue-flow__node-default",type:"editable",data:{hasInput:!0,hasOutput:!0},events:{click:()=>{l.value=K}},position:$}),P){let F=`edge-${B+1}`;i.value.push({id:F,source:l.value,target:K,type:"editable",label:`EDGE ${B+1}`,animated:!0,events:{click:()=>{l.value=F}}})}},_=(P,$)=>{for(let B=0;B<i.value.length;B++)if(i.value[B].id==$){i.value[B].label=P;break}},C=P=>{const B={id:`edge-${i.value.length}`,source:P.source,target:P.target,type:"editable",label:"New Edge",interactionWidth:400,animated:!0,events:{click:()=>{l.value=B.id}}};c([B])},A=P=>{d(P.edge.id)};return(P,$)=>(a.openBlock(),a.createElementBlock("div",{class:a.normalizeClass(["node-editor-wrapper",e.nodeContainerClass]),onMouseover:$[1]||($[1]=B=>o.value=!0),onMouseleave:$[2]||($[2]=B=>o.value=!1)},[a.createElementVNode("div",Xc,[a.createElementVNode("div",Uc,[a.createElementVNode("div",null,[$[3]||($[3]=a.createElementVNode("b",null,"Selected Node:",-1)),a.createTextVNode(" "+a.toDisplayString(l.value?l.value:"none"),1)])]),a.createElementVNode("div",Zc,[a.createElementVNode("div",null,[a.createElementVNode("button",{class:"button-default",onClick:M},"Add Node")]),a.createElementVNode("div",null,[a.createElementVNode("button",{class:"button-default",onClick:k},"Center")]),s.value>-1?(a.openBlock(),a.createElementBlock("div",Wc,[a.createElementVNode("button",{class:"button-default",onClick:b},"Shift Input Position")])):a.createCommentVNode("",!0),s.value>-1?(a.openBlock(),a.createElementBlock("div",Kc,[a.createElementVNode("button",{class:"button-default",onClick:p},"Shift Output Position")])):a.createCommentVNode("",!0)])]),i.value&&i.value.length?(a.openBlock(),a.createBlock(a.unref(Oc),{key:0,modelValue:i.value,"onUpdate:modelValue":$[0]||($[0]=B=>i.value=B),class:"nowheel","prevent-scrolling":!0,"zoom-on-scroll":!1,"fit-view-on-init":!0,onConnect:C,onPaneReady:f,onEdgeContextMenu:A,onWheel:a.withModifiers(x,["prevent"])},{"node-editable":a.withCtx(B=>[a.createVNode(Gc,a.mergeProps(B,{onChange:K=>_(K,B.id)}),null,16,["onChange"])]),"edge-editable":a.withCtx(B=>[a.createVNode(Fc,a.mergeProps(B,{onChange:K=>_(K,B.id)}),null,16,["onChange"])]),_:1},8,["modelValue"])):a.createCommentVNode("",!0)],34))}}),Vi=a.defineComponent({__name:"StateEditor",props:a.mergeModels({layout:{},nodeContainerClass:{default:""}},{modelValue:{},modelModifiers:{}}),emits:a.mergeModels(["update:modelValue"],["update:modelValue"]),setup(e,{emit:t}){const n=t,o=a.useModel(e,"modelValue"),i=a.computed({get:()=>{const l={},s=[],u={};if(!o.value)return s;let c=0;for(const[d,f]of Object.entries(o.value)){const h={id:d,label:d,position:e.layout[d]?.position||{x:200*c,y:100},targetPosition:e.layout[d]?.targetPosition||z.Left,sourcePosition:e.layout[d]?.sourcePosition||z.Right};f?.type==="final"&&(h.type="output",h.class="default-output-node"),u[d]=h}for(const[d,f]of Object.entries(o.value)){if(f?.on)for(const[h,p]of Object.entries(f.on)){const b=p.target||p;s.push({id:`${d}-${b}`,source:d,target:b,label:h,animated:!0}),l[b]=!0}c++}for(const[d,f]of Object.entries(u))l[d]||(f.type="input",f.class="default-input-node"),s.push(f);return s},set:l=>{r(l)}}),r=l=>{const s={},u={},c={};for(const d of l){const f=d.label;d.type==="input"?c[f]={on:{}}:d.type==="output"?c[f]={type:"final"}:d.source&&d.target?(s[d.source]=s[d.source]||{},s[d.source][f]={target:d.target}):c[f]={on:{}},u[d.id]=f}for(const[d,f]of Object.entries(s)){const h=u[d];for(const[p,b]of Object.entries(f))c[h]||(c[h]={on:{}}),c[h].on[p]=b}n("update:modelValue",c)};return(l,s)=>(a.openBlock(),a.createElementBlock("div",null,[a.createVNode(Hn,{modelValue:i.value,"onUpdate:modelValue":s[0]||(s[0]=u=>i.value=u),"node-container-class":e.nodeContainerClass},null,8,["modelValue","node-container-class"])]))}});function qc(e){e.component("NodeEditor",Hn),e.component("StateEditor",Vi)}Ce.NodeEditor=Hn,Ce.StateEditor=Vi,Ce.install=qc,Object.defineProperty(Ce,Symbol.toStringTag,{value:"Module"})}));
26
+ Edge: ${e}`,USEVUEFLOW_OPTIONS:()=>"The options parameter is deprecated and will be removed in the next major version. Please use the id parameter instead"};class ge extends Error{constructor(t,...n){var o;super((o=ui[t])==null?void 0:o.call(ui,...n)),this.name="VueFlowError",this.code=t,this.args=n}}function Pn(e){return"clientX"in e}function js(e){return"sourceEvent"in e}function Se(e,t){const n=Pn(e);let o,i;return n?(o=e.clientX,i=e.clientY):"touches"in e&&e.touches.length>0?(o=e.touches[0].clientX,i=e.touches[0].clientY):"changedTouches"in e&&e.changedTouches.length>0?(o=e.changedTouches[0].clientX,i=e.changedTouches[0].clientY):(o=0,i=0),{x:o-(t?.left??0),y:i-(t?.top??0)}}const Xt=()=>{var e;return typeof navigator<"u"&&((e=navigator?.userAgent)==null?void 0:e.indexOf("Mac"))>=0};function Js(e){var t,n;return{width:((t=e.dimensions)==null?void 0:t.width)??e.width??0,height:((n=e.dimensions)==null?void 0:n.height)??e.height??0}}function Ut(e,t=[1,1]){return{x:t[0]*Math.round(e.x/t[0]),y:t[1]*Math.round(e.y/t[1])}}const Qs=()=>!0;function Tn(e){e?.classList.remove("valid","connecting","vue-flow__handle-valid","vue-flow__handle-connecting")}function eu(e,t,n){const o=[],i={x:e.x-n,y:e.y-n,width:n*2,height:n*2};for(const r of t.values())Ft(i,Lt(r))>0&&o.push(r);return o}const tu=250;function nu(e,t,n,o){var i,r;let l=[],s=Number.POSITIVE_INFINITY;const u=eu(e,n,t+tu);for(const c of u){const d=[...((i=c.handleBounds)==null?void 0:i.source)??[],...((r=c.handleBounds)==null?void 0:r.target)??[]];for(const f of d){if(o.nodeId===f.nodeId&&o.type===f.type&&o.id===f.id)continue;const{x:h,y:p}=Je(c,f,f.position,!0),b=Math.sqrt((h-e.x)**2+(p-e.y)**2);b>t||(b<s?(l=[{...f,x:h,y:p}],s=b):b===s&&l.push({...f,x:h,y:p}))}}if(!l.length)return null;if(l.length>1){const c=o.type==="source"?"target":"source";return l.find(d=>d.type===c)??l[0]}return l[0]}function ci(e,{handle:t,connectionMode:n,fromNodeId:o,fromHandleId:i,fromType:r,doc:l,lib:s,flowId:u,isValidConnection:c=Qs},d,f,h,p){const b=r==="target",x=t?l.querySelector(`.${s}-flow__handle[data-id="${u}-${t?.nodeId}-${t?.id}-${t?.type}"]`):null,{x:N,y:k}=Se(e),M=l.elementFromPoint(N,k),_=M?.classList.contains(`${s}-flow__handle`)?M:x,C={handleDomNode:_,isValid:!1,connection:null,toHandle:null};if(_){const A=di(void 0,_),P=_.getAttribute("data-nodeid"),$=_.getAttribute("data-handleid"),B=_.classList.contains("connectable"),K=_.classList.contains("connectableend");if(!P||!A)return C;const F={source:b?P:o,sourceHandle:b?$:i,target:b?o:P,targetHandle:b?i:$};C.connection=F;const E=B&&K&&(n===Te.Strict?b&&A==="source"||!b&&A==="target":P!==o||$!==i);C.isValid=E&&c(F,{nodes:f,edges:d,sourceNode:h(F.source),targetNode:h(F.target)}),C.toHandle=fi(P,A,$,p,n,!0)}return C}function di(e,t){return e||(t?.classList.contains("target")?"target":t?.classList.contains("source")?"source":null)}function ou(e,t){let n=null;return t?n="valid":e&&!t&&(n="invalid"),n}function iu(e,t){let n=null;return t?n=!0:e&&!t&&(n=!1),n}function fi(e,t,n,o,i,r=!1){var l,s,u;const c=o.get(e);if(!c)return null;const d=i===Te.Strict?(l=c.handleBounds)==null?void 0:l[t]:[...((s=c.handleBounds)==null?void 0:s.source)??[],...((u=c.handleBounds)==null?void 0:u.target)??[]],f=(n?d?.find(h=>h.id===n):d?.[0])??null;return f&&r?{...f,...Je(c,f,f.position,!0)}:f}const $n={[z.Left]:z.Right,[z.Right]:z.Left,[z.Top]:z.Bottom,[z.Bottom]:z.Top},ru=["production","prod"];function vt(e,...t){hi()&&console.warn(`[Vue Flow]: ${e}`,...t)}function hi(){return!ru.includes(process.env.NODE_ENV||"")}function gi(e,t,n,o,i){const r=t.querySelectorAll(`.vue-flow__handle.${e}`);return r?.length?Array.from(r).map(l=>{const s=l.getBoundingClientRect();return{id:l.getAttribute("data-handleid"),type:e,nodeId:i,position:l.getAttribute("data-handlepos"),x:(s.left-n.left)/o,y:(s.top-n.top)/o,...Yt(l)}}):null}function Dn(e,t,n,o,i,r=!1,l){i.value=!1,e.selected?(r||e.selected&&t)&&(o([e]),a.nextTick(()=>{l.blur()})):n([e])}function he(e){return typeof a.unref(e)<"u"}function lu(e,t,n,o){if(!e||!e.source||!e.target)return n(new ge(fe.EDGE_INVALID,e?.id??"[ID UNKNOWN]")),!1;let i;return $e(e)?i=e:i={...e,id:Xo(e)},i=Yo(i,void 0,o),Rs(i,t)?!1:i}function au(e,t,n,o,i){if(!t.source||!t.target)return i(new ge(fe.EDGE_INVALID,e.id)),!1;if(!n)return i(new ge(fe.EDGE_NOT_FOUND,e.id)),!1;const{id:r,...l}=e;return{...l,id:o?Xo(t):r,source:t.source,target:t.target,sourceHandle:t.sourceHandle,targetHandle:t.targetHandle}}function pi(e,t,n){const o={},i=[];for(let r=0;r<e.length;++r){const l=e[r];if(!Fe(l)){n(new ge(fe.NODE_INVALID,l?.id)||`[ID UNKNOWN|INDEX ${r}]`);continue}const s=As(l,t(l.id),l.parentNode);l.parentNode&&(o[l.parentNode]=!0),i[r]=s}for(const r of i){const l=t(r.parentNode)||i.find(s=>s.id===r.parentNode);r.parentNode&&!l&&n(new ge(fe.NODE_MISSING_PARENT,r.id,r.parentNode)),(r.parentNode||o[r.id])&&(o[r.id]&&(r.isParent=!0),l&&(l.isParent=!0))}return i}function mi(e,t,n,o,i,r){let l=i;const s=o.get(l)||new Map;o.set(l,s.set(n,t)),l=`${i}-${e}`;const u=o.get(l)||new Map;if(o.set(l,u.set(n,t)),r){l=`${i}-${e}-${r}`;const c=o.get(l)||new Map;o.set(l,c.set(n,t))}}function Bn(e,t,n){e.clear();for(const o of n){const{source:i,target:r,sourceHandle:l=null,targetHandle:s=null}=o,u={edgeId:o.id,source:i,target:r,sourceHandle:l,targetHandle:s},c=`${i}-${l}--${r}-${s}`,d=`${r}-${s}--${i}-${l}`;mi("source",u,d,e,i,l),mi("target",u,c,e,r,s)}}function yi(e,t){if(e.size!==t.size)return!1;for(const n of e)if(!t.has(n))return!1;return!0}function Vn(e,t,n,o,i,r,l,s){const u=[];for(const c of e){const d=$e(c)?c:lu(c,s,i,r);if(!d)continue;const f=n(d.source),h=n(d.target);if(!f||!h){i(new ge(fe.EDGE_SOURCE_TARGET_MISSING,d.id,d.source,d.target));continue}if(!f){i(new ge(fe.EDGE_SOURCE_MISSING,d.id,d.source));continue}if(!h){i(new ge(fe.EDGE_TARGET_MISSING,d.id,d.target));continue}if(t&&!t(d,{edges:s,nodes:l,sourceNode:f,targetNode:h})){i(new ge(fe.EDGE_INVALID,d.id));continue}const p=o(d.id);u.push({...Yo(d,p,r),sourceNode:f,targetNode:h})}return u}const vi=Symbol("vueFlow"),wi=Symbol("nodeId"),_i=Symbol("nodeRef"),su=Symbol("edgeId"),uu=Symbol("edgeRef"),Zt=Symbol("slots");function Ei(e){const{vueFlowRef:t,snapToGrid:n,snapGrid:o,noDragClassName:i,nodeLookup:r,nodeExtent:l,nodeDragThreshold:s,viewport:u,autoPanOnNodeDrag:c,autoPanSpeed:d,nodesDraggable:f,panBy:h,findNode:p,multiSelectionActive:b,nodesSelectionActive:x,selectNodesOnDrag:N,removeSelectedElements:k,addSelectedNodes:M,updateNodePositions:_,emits:C}=de(),{onStart:A,onDrag:P,onStop:$,onClick:B,el:K,disabled:F,id:O,selectable:E,dragHandle:Z}=e,w=a.shallowRef(!1);let T=[],S,D=null,V={x:void 0,y:void 0},R={x:0,y:0},H=null,W=!1,Q=!1,te=0,Y=!1;const j=fu(),q=({x:ee,y:ie})=>{V={x:ee,y:ie};let m=!1;if(T=T.map(g=>{const v={x:ee-g.distance.x,y:ie-g.distance.y},{computedPosition:y}=In(g,n.value?Ut(v,o.value):v,C.error,l.value,g.parentNode?p(g.parentNode):void 0);return m=m||g.position.x!==y.x||g.position.y!==y.y,g.position=y,g}),Q=Q||m,!!m&&(_(T,!0,!0),w.value=!0,H)){const[g,v]=Mn({id:O,dragItems:T,findNode:p});P({event:H,node:g,nodes:v})}},re=()=>{if(!D)return;const[ee,ie]=ei(R,D,d.value);if(ee!==0||ie!==0){const m={x:(V.x??0)-ee/u.value.zoom,y:(V.y??0)-ie/u.value.zoom};h({x:ee,y:ie})&&q(m)}te=requestAnimationFrame(re)},le=(ee,ie)=>{W=!0;const m=p(O);!N.value&&!b.value&&m&&(m.selected||k()),m&&a.toValue(E)&&N.value&&Dn(m,b.value,M,k,x,!1,ie);const g=j(ee.sourceEvent);if(V=g,T=Xs(r.value,f.value,g,O),T.length){const[v,y]=Mn({id:O,dragItems:T,findNode:p});A({event:ee.sourceEvent,node:v,nodes:y})}},oe=(ee,ie)=>{var m;ee.sourceEvent.type==="touchmove"&&ee.sourceEvent.touches.length>1||(Q=!1,s.value===0&&le(ee,ie),V=j(ee.sourceEvent),D=((m=t.value)==null?void 0:m.getBoundingClientRect())||null,R=Se(ee.sourceEvent,D))},se=(ee,ie)=>{const m=j(ee.sourceEvent);if(!Y&&W&&c.value&&(Y=!0,re()),!W){const g=m.xSnapped-(V.x??0),v=m.ySnapped-(V.y??0);Math.sqrt(g*g+v*v)>s.value&&le(ee,ie)}(V.x!==m.xSnapped||V.y!==m.ySnapped)&&T.length&&W&&(H=ee.sourceEvent,R=Se(ee.sourceEvent,D),q(m))},ce=ee=>{let ie=!1;if(!W&&!w.value&&!b.value){const m=ee.sourceEvent,g=j(m),v=g.xSnapped-(V.x??0),y=g.ySnapped-(V.y??0),I=Math.sqrt(v*v+y*y);I!==0&&I<=s.value&&(B?.(m),ie=!0)}if(T.length&&!ie){Q&&(_(T,!1,!1),Q=!1);const[m,g]=Mn({id:O,dragItems:T,findNode:p});$({event:ee.sourceEvent,node:m,nodes:g})}T=[],w.value=!1,Y=!1,W=!1,V={x:void 0,y:void 0},cancelAnimationFrame(te)};return a.watch([()=>a.toValue(F),K],([ee,ie],m,g)=>{if(ie){const v=ye(ie);ee||(S=Vl().on("start",y=>oe(y,ie)).on("drag",y=>se(y,ie)).on("end",y=>ce(y)).filter(y=>{const I=y.target,G=a.toValue(Z);return!y.button&&(!i.value||!li(I,`.${i.value}`,ie)&&(!G||li(I,G,ie)))}),v.call(S)),g(()=>{v.on(".drag",null),S&&(S.on("start",null),S.on("drag",null),S.on("end",null))})}}),w}function cu(){return{doubleClick:L(),click:L(),mouseEnter:L(),mouseMove:L(),mouseLeave:L(),contextMenu:L(),updateStart:L(),update:L(),updateEnd:L()}}function du(e,t){const n=cu();return n.doubleClick.on(o=>{var i,r;t.edgeDoubleClick(o),(r=(i=e.events)==null?void 0:i.doubleClick)==null||r.call(i,o)}),n.click.on(o=>{var i,r;t.edgeClick(o),(r=(i=e.events)==null?void 0:i.click)==null||r.call(i,o)}),n.mouseEnter.on(o=>{var i,r;t.edgeMouseEnter(o),(r=(i=e.events)==null?void 0:i.mouseEnter)==null||r.call(i,o)}),n.mouseMove.on(o=>{var i,r;t.edgeMouseMove(o),(r=(i=e.events)==null?void 0:i.mouseMove)==null||r.call(i,o)}),n.mouseLeave.on(o=>{var i,r;t.edgeMouseLeave(o),(r=(i=e.events)==null?void 0:i.mouseLeave)==null||r.call(i,o)}),n.contextMenu.on(o=>{var i,r;t.edgeContextMenu(o),(r=(i=e.events)==null?void 0:i.contextMenu)==null||r.call(i,o)}),n.updateStart.on(o=>{var i,r;t.edgeUpdateStart(o),(r=(i=e.events)==null?void 0:i.updateStart)==null||r.call(i,o)}),n.update.on(o=>{var i,r;t.edgeUpdate(o),(r=(i=e.events)==null?void 0:i.update)==null||r.call(i,o)}),n.updateEnd.on(o=>{var i,r;t.edgeUpdateEnd(o),(r=(i=e.events)==null?void 0:i.updateEnd)==null||r.call(i,o)}),Object.entries(n).reduce((o,[i,r])=>(o.emit[i]=r.trigger,o.on[i]=r.on,o),{emit:{},on:{}})}function fu(){const{viewport:e,snapGrid:t,snapToGrid:n,vueFlowRef:o}=de();return i=>{var r;const l=((r=o.value)==null?void 0:r.getBoundingClientRect())??{left:0,top:0},s=js(i)?i.sourceEvent:i,{x:u,y:c}=Se(s,l),d=mt({x:u,y:c},e.value),{x:f,y:h}=n.value?Ut(d,t.value):d;return{xSnapped:f,ySnapped:h,...d}}}function Wt(){return!0}function bi({handleId:e,nodeId:t,type:n,isValidConnection:o,edgeUpdaterType:i,onEdgeUpdate:r,onEdgeUpdateEnd:l}){const{id:s,vueFlowRef:u,connectionMode:c,connectionRadius:d,connectOnClick:f,connectionClickStartHandle:h,nodesConnectable:p,autoPanOnConnect:b,autoPanSpeed:x,findNode:N,panBy:k,startConnection:M,updateConnection:_,endConnection:C,emits:A,viewport:P,edges:$,nodes:B,isValidConnection:K,nodeLookup:F}=de();let O=null,E=!1,Z=null;function w(S){var D;const V=a.toValue(n)==="target",R=Pn(S),H=Fo(S.target),W=S.currentTarget;if(W&&(R&&S.button===0||!R)){let Q=function(J){m=Se(J,ce),q=nu(mt(m,P.value,!1,[1,1]),d.value,F.value,y),g||(v(),g=!0);const ne=ci(J,{handle:q,connectionMode:c.value,fromNodeId:a.toValue(t),fromHandleId:a.toValue(e),fromType:V?"target":"source",isValidConnection:j,doc:H,lib:"vue",flowId:s,nodeLookup:F.value},$.value,B.value,N,F.value);Z=ne.handleDomNode,O=ne.connection,E=iu(!!q,ne.isValid);const ae={...U,isValid:E,to:ne.toHandle&&E?pt({x:ne.toHandle.x,y:ne.toHandle.y},P.value):m,toHandle:ne.toHandle,toPosition:E&&ne.toHandle?ne.toHandle.position:$n[y.position],toNode:ne.toHandle?F.value.get(ne.toHandle.nodeId):null};if(E&&q&&U?.toHandle&&ae.toHandle&&U.toHandle.type===ae.toHandle.type&&U.toHandle.nodeId===ae.toHandle.nodeId&&U.toHandle.id===ae.toHandle.id&&U.to.x===ae.to.x&&U.to.y===ae.to.y)return;const ue=q??ne.toHandle;if(_(ue&&E?pt({x:ue.x,y:ue.y},P.value):m,ne.toHandle,ou(!!ue,E)),U=ae,!q&&!E&&!Z)return Tn(ie);O&&O.source!==O.target&&Z&&(Tn(ie),ie=Z,Z.classList.add("connecting","vue-flow__handle-connecting"),Z.classList.toggle("valid",!!E),Z.classList.toggle("vue-flow__handle-valid",!!E))},te=function(J){"touches"in J&&J.touches.length>0||((q||Z)&&O&&E&&(r?r(J,O):A.connect(O)),A.connectEnd(J),i&&l?.(J),Tn(ie),cancelAnimationFrame(re),C(J),g=!1,E=!1,O=null,Z=null,H.removeEventListener("mousemove",Q),H.removeEventListener("mouseup",te),H.removeEventListener("touchmove",Q),H.removeEventListener("touchend",te))};const Y=N(a.toValue(t));let j=a.toValue(o)||K.value||Wt;!j&&Y&&(j=(V?Y.isValidSourcePos:Y.isValidTargetPos)||Wt);let q,re=0;const{x:le,y:oe}=Se(S),se=di(a.toValue(i),W),ce=(D=u.value)==null?void 0:D.getBoundingClientRect();if(!ce||!se)return;const ee=fi(a.toValue(t),se,a.toValue(e),F.value,c.value);if(!ee)return;let ie,m=Se(S,ce),g=!1;const v=()=>{if(!b.value)return;const[J,ne]=ei(m,ce,x.value);k({x:J,y:ne}),re=requestAnimationFrame(v)},y={...ee,nodeId:a.toValue(t),type:se,position:ee.position},I=F.value.get(a.toValue(t)),X={inProgress:!0,isValid:null,from:Je(I,y,z.Left,!0),fromHandle:y,fromPosition:y.position,fromNode:I,to:m,toHandle:null,toPosition:$n[y.position],toNode:null};M({nodeId:a.toValue(t),id:a.toValue(e),type:se,position:W?.getAttribute("data-handlepos")||z.Top,...m},{x:le-ce.left,y:oe-ce.top}),A.connectStart({event:S,nodeId:a.toValue(t),handleId:a.toValue(e),handleType:se});let U=X;H.addEventListener("mousemove",Q),H.addEventListener("mouseup",te),H.addEventListener("touchmove",Q),H.addEventListener("touchend",te)}}function T(S){var D,V;if(!f.value)return;const R=a.toValue(n)==="target";if(!h.value){A.clickConnectStart({event:S,nodeId:a.toValue(t),handleId:a.toValue(e)}),M({nodeId:a.toValue(t),type:a.toValue(n),id:a.toValue(e),position:z.Top,...Se(S)},void 0,!0);return}let H=a.toValue(o)||K.value||Wt;const W=N(a.toValue(t));if(!H&&W&&(H=(R?W.isValidSourcePos:W.isValidTargetPos)||Wt),W&&(typeof W.connectable>"u"?p.value:W.connectable)===!1)return;const Q=Fo(S.target),te=ci(S,{handle:{nodeId:a.toValue(t),id:a.toValue(e),type:a.toValue(n),position:z.Top,...Se(S)},connectionMode:c.value,fromNodeId:h.value.nodeId,fromHandleId:h.value.id??null,fromType:h.value.type,isValidConnection:H,doc:Q,lib:"vue",flowId:s,nodeLookup:F.value},$.value,B.value,N,F.value),Y=((D=te.connection)==null?void 0:D.source)===((V=te.connection)==null?void 0:V.target);te.isValid&&te.connection&&!Y&&A.connect(te.connection),A.clickConnectEnd(S),C(S,!0)}return{handlePointerDown:w,handleClick:T}}function hu(){return a.inject(wi,"")}function xi(e){const t=e??hu()??"",n=a.inject(_i,a.ref(null)),{findNode:o,edges:i,emits:r}=de(),l=o(t);return l||r.error(new ge(fe.NODE_NOT_FOUND,t)),{id:t,nodeEl:n,node:l,parentNode:a.computed(()=>o(l.parentNode)),connectedEdges:a.computed(()=>Ko([l],i.value))}}function gu(){return{doubleClick:L(),click:L(),mouseEnter:L(),mouseMove:L(),mouseLeave:L(),contextMenu:L(),dragStart:L(),drag:L(),dragStop:L()}}function pu(e,t){const n=gu();return n.doubleClick.on(o=>{var i,r;t.nodeDoubleClick(o),(r=(i=e.events)==null?void 0:i.doubleClick)==null||r.call(i,o)}),n.click.on(o=>{var i,r;t.nodeClick(o),(r=(i=e.events)==null?void 0:i.click)==null||r.call(i,o)}),n.mouseEnter.on(o=>{var i,r;t.nodeMouseEnter(o),(r=(i=e.events)==null?void 0:i.mouseEnter)==null||r.call(i,o)}),n.mouseMove.on(o=>{var i,r;t.nodeMouseMove(o),(r=(i=e.events)==null?void 0:i.mouseMove)==null||r.call(i,o)}),n.mouseLeave.on(o=>{var i,r;t.nodeMouseLeave(o),(r=(i=e.events)==null?void 0:i.mouseLeave)==null||r.call(i,o)}),n.contextMenu.on(o=>{var i,r;t.nodeContextMenu(o),(r=(i=e.events)==null?void 0:i.contextMenu)==null||r.call(i,o)}),n.dragStart.on(o=>{var i,r;t.nodeDragStart(o),(r=(i=e.events)==null?void 0:i.dragStart)==null||r.call(i,o)}),n.drag.on(o=>{var i,r;t.nodeDrag(o),(r=(i=e.events)==null?void 0:i.drag)==null||r.call(i,o)}),n.dragStop.on(o=>{var i,r;t.nodeDragStop(o),(r=(i=e.events)==null?void 0:i.dragStop)==null||r.call(i,o)}),Object.entries(n).reduce((o,[i,r])=>(o.emit[i]=r.trigger,o.on[i]=r.on,o),{emit:{},on:{}})}function Si(){const{getSelectedNodes:e,nodeExtent:t,updateNodePositions:n,findNode:o,snapGrid:i,snapToGrid:r,nodesDraggable:l,emits:s}=de();return(u,c=!1)=>{const d=r.value?i.value[0]:5,f=r.value?i.value[1]:5,h=c?4:1,p=u.x*d*h,b=u.y*f*h,x=[];for(const N of e.value)if(N.draggable||l&&typeof N.draggable>"u"){const k={x:N.computedPosition.x+p,y:N.computedPosition.y+b},{computedPosition:M}=In(N,k,s.error,t.value,N.parentNode?o(N.parentNode):void 0);x.push({id:N.id,position:M,from:N.position,distance:{x:u.x,y:u.y},dimensions:N.dimensions})}n(x,!0,!1)}}const Kt=.1,mu=e=>((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2;function Ve(){return vt("Viewport not initialized yet."),Promise.resolve(!1)}const yu={zoomIn:Ve,zoomOut:Ve,zoomTo:Ve,fitView:Ve,setCenter:Ve,fitBounds:Ve,project:e=>e,screenToFlowCoordinate:e=>e,flowToScreenCoordinate:e=>e,setViewport:Ve,setTransform:Ve,getViewport:()=>({x:0,y:0,zoom:1}),getTransform:()=>({x:0,y:0,zoom:1}),viewportInitialized:!1};function vu(e){function t(o,i){return new Promise(r=>{e.d3Selection&&e.d3Zoom?e.d3Zoom.interpolate(i?.interpolate==="linear"?lt:Tt).scaleBy(An(e.d3Selection,i?.duration,i?.ease,()=>{r(!0)}),o):r(!1)})}function n(o,i,r,l){return new Promise(s=>{var u;const{x:c,y:d}=Lo({x:-o,y:-i},e.translateExtent),f=Ke.translate(-c,-d).scale(r);e.d3Selection&&e.d3Zoom?(u=e.d3Zoom)==null||u.interpolate(l?.interpolate==="linear"?lt:Tt).transform(An(e.d3Selection,l?.duration,l?.ease,()=>{s(!0)}),f):s(!1)})}return a.computed(()=>e.d3Zoom&&e.d3Selection&&e.dimensions.width&&e.dimensions.height?{viewportInitialized:!0,zoomIn:i=>t(1.2,i),zoomOut:i=>t(1/1.2,i),zoomTo:(i,r)=>new Promise(l=>{e.d3Selection&&e.d3Zoom?e.d3Zoom.interpolate(r?.interpolate==="linear"?lt:Tt).scaleTo(An(e.d3Selection,r?.duration,r?.ease,()=>{l(!0)}),i):l(!1)}),setViewport:(i,r)=>n(i.x,i.y,i.zoom,r),setTransform:(i,r)=>n(i.x,i.y,i.zoom,r),getViewport:()=>({x:e.viewport.x,y:e.viewport.y,zoom:e.viewport.zoom}),getTransform:()=>({x:e.viewport.x,y:e.viewport.y,zoom:e.viewport.zoom}),fitView:(i={padding:Kt,includeHiddenNodes:!1,duration:0})=>{var r,l;const s=[];for(const h of e.nodes)h.dimensions.width&&h.dimensions.height&&(i?.includeHiddenNodes||!h.hidden)&&(!((r=i.nodes)!=null&&r.length)||(l=i.nodes)!=null&&l.length&&i.nodes.includes(h.id))&&s.push(h);if(!s.length)return Promise.resolve(!1);const u=Zo(s),{x:c,y:d,zoom:f}=qo(u,e.dimensions.width,e.dimensions.height,i.minZoom??e.minZoom,i.maxZoom??e.maxZoom,i.padding??Kt);return n(c,d,f,i)},setCenter:(i,r,l)=>{const s=typeof l?.zoom<"u"?l.zoom:e.maxZoom,u=e.dimensions.width/2-i*s,c=e.dimensions.height/2-r*s;return n(u,c,s,l)},fitBounds:(i,r={padding:Kt})=>{const{x:l,y:s,zoom:u}=qo(i,e.dimensions.width,e.dimensions.height,e.minZoom,e.maxZoom,r.padding??Kt);return n(l,s,u,r)},project:i=>mt(i,e.viewport,e.snapToGrid,e.snapGrid),screenToFlowCoordinate:i=>{if(e.vueFlowRef){const{x:r,y:l}=e.vueFlowRef.getBoundingClientRect(),s={x:i.x-r,y:i.y-l};return mt(s,e.viewport,e.snapToGrid,e.snapGrid)}return{x:0,y:0}},flowToScreenCoordinate:i=>{if(e.vueFlowRef){const{x:r,y:l}=e.vueFlowRef.getBoundingClientRect(),s={x:i.x+r,y:i.y+l};return pt(s,e.viewport)}return{x:0,y:0}}}:yu)}function An(e,t=0,n=mu,o=()=>{}){const i=typeof t=="number"&&t>0;return i||o(),i?e.transition().duration(t).ease(n).on("end",o):e}function wu(e,t,n){const o=a.effectScope(!0);return o.run(()=>{const i=()=>{o.run(()=>{let x,N,k=!!(n.nodes.value.length||n.edges.value.length);x=Ge([e.modelValue,()=>{var M,_;return(_=(M=e.modelValue)==null?void 0:M.value)==null?void 0:_.length}],([M])=>{M&&Array.isArray(M)&&(N?.pause(),n.setElements(M),!N&&!k&&M.length?k=!0:N?.resume())}),N=Ge([n.nodes,n.edges,()=>n.edges.value.length,()=>n.nodes.value.length],([M,_])=>{var C;(C=e.modelValue)!=null&&C.value&&Array.isArray(e.modelValue.value)&&(x?.pause(),e.modelValue.value=[...M,..._],a.nextTick(()=>{x?.resume()}))},{immediate:k}),a.onScopeDispose(()=>{x?.stop(),N?.stop()})})},r=()=>{o.run(()=>{let x,N,k=!!n.nodes.value.length;x=Ge([e.nodes,()=>{var M,_;return(_=(M=e.nodes)==null?void 0:M.value)==null?void 0:_.length}],([M])=>{M&&Array.isArray(M)&&(N?.pause(),n.setNodes(M),!N&&!k&&M.length?k=!0:N?.resume())}),N=Ge([n.nodes,()=>n.nodes.value.length],([M])=>{var _;(_=e.nodes)!=null&&_.value&&Array.isArray(e.nodes.value)&&(x?.pause(),e.nodes.value=[...M],a.nextTick(()=>{x?.resume()}))},{immediate:k}),a.onScopeDispose(()=>{x?.stop(),N?.stop()})})},l=()=>{o.run(()=>{let x,N,k=!!n.edges.value.length;x=Ge([e.edges,()=>{var M,_;return(_=(M=e.edges)==null?void 0:M.value)==null?void 0:_.length}],([M])=>{M&&Array.isArray(M)&&(N?.pause(),n.setEdges(M),!N&&!k&&M.length?k=!0:N?.resume())}),N=Ge([n.edges,()=>n.edges.value.length],([M])=>{var _;(_=e.edges)!=null&&_.value&&Array.isArray(e.edges.value)&&(x?.pause(),e.edges.value=[...M],a.nextTick(()=>{x?.resume()}))},{immediate:k}),a.onScopeDispose(()=>{x?.stop(),N?.stop()})})},s=()=>{o.run(()=>{a.watch(()=>t.maxZoom,()=>{t.maxZoom&&he(t.maxZoom)&&n.setMaxZoom(t.maxZoom)},{immediate:!0})})},u=()=>{o.run(()=>{a.watch(()=>t.minZoom,()=>{t.minZoom&&he(t.minZoom)&&n.setMinZoom(t.minZoom)},{immediate:!0})})},c=()=>{o.run(()=>{a.watch(()=>t.translateExtent,()=>{t.translateExtent&&he(t.translateExtent)&&n.setTranslateExtent(t.translateExtent)},{immediate:!0})})},d=()=>{o.run(()=>{a.watch(()=>t.nodeExtent,()=>{t.nodeExtent&&he(t.nodeExtent)&&n.setNodeExtent(t.nodeExtent)},{immediate:!0})})},f=()=>{o.run(()=>{a.watch(()=>t.applyDefault,()=>{he(t.applyDefault)&&(n.applyDefault.value=t.applyDefault)},{immediate:!0})})},h=()=>{o.run(()=>{const x=async N=>{let k=N;typeof t.autoConnect=="function"&&(k=await t.autoConnect(N)),k!==!1&&n.addEdges([k])};a.watch(()=>t.autoConnect,()=>{he(t.autoConnect)&&(n.autoConnect.value=t.autoConnect)},{immediate:!0}),a.watch(n.autoConnect,(N,k,M)=>{N?n.onConnect(x):n.hooks.value.connect.off(x),M(()=>{n.hooks.value.connect.off(x)})},{immediate:!0})})},p=()=>{const x=["id","modelValue","translateExtent","nodeExtent","edges","nodes","maxZoom","minZoom","applyDefault","autoConnect"];for(const N of Object.keys(t)){const k=N;if(!x.includes(k)){const M=a.toRef(()=>t[k]),_=n[k];a.isRef(_)&&o.run(()=>{a.watch(M,C=>{he(C)&&(_.value=C)},{immediate:!0})})}}};i(),r(),l(),u(),s(),c(),d(),f(),h(),p()}),()=>o.stop()}function _u(){return{edgesChange:L(),nodesChange:L(),nodeDoubleClick:L(),nodeClick:L(),nodeMouseEnter:L(),nodeMouseMove:L(),nodeMouseLeave:L(),nodeContextMenu:L(),nodeDragStart:L(),nodeDrag:L(),nodeDragStop:L(),nodesInitialized:L(),miniMapNodeClick:L(),miniMapNodeDoubleClick:L(),miniMapNodeMouseEnter:L(),miniMapNodeMouseMove:L(),miniMapNodeMouseLeave:L(),connect:L(),connectStart:L(),connectEnd:L(),clickConnectStart:L(),clickConnectEnd:L(),paneReady:L(),init:L(),move:L(),moveStart:L(),moveEnd:L(),selectionDragStart:L(),selectionDrag:L(),selectionDragStop:L(),selectionContextMenu:L(),selectionStart:L(),selectionEnd:L(),viewportChangeStart:L(),viewportChange:L(),viewportChangeEnd:L(),paneScroll:L(),paneClick:L(),paneContextMenu:L(),paneMouseEnter:L(),paneMouseMove:L(),paneMouseLeave:L(),edgeContextMenu:L(),edgeMouseEnter:L(),edgeMouseMove:L(),edgeMouseLeave:L(),edgeDoubleClick:L(),edgeClick:L(),edgeUpdateStart:L(),edgeUpdate:L(),edgeUpdateEnd:L(),updateNodeInternals:L(),error:L(e=>vt(e.message))}}function Eu(e,t){const n=a.getCurrentInstance();a.onBeforeMount(()=>{for(const[i,r]of Object.entries(t.value)){const l=s=>{e(i,s)};r.setEmitter(l),et(r.removeEmitter),r.setHasEmitListeners(()=>o(i)),et(r.removeHasEmitListeners)}});function o(i){var r;const l=bu(i);return!!((r=n?.vnode.props)==null?void 0:r[l])}}function bu(e){const[t,...n]=e.split(":");return`on${t.replace(/(?:^|-)(\w)/g,(i,r)=>r.toUpperCase())}${n.length?`:${n.join(":")}`:""}`}function Ni(){return{vueFlowRef:null,viewportRef:null,nodes:[],edges:[],connectionLookup:new Map,nodeTypes:{},edgeTypes:{},initialized:!1,dimensions:{width:0,height:0},viewport:{x:0,y:0,zoom:1},d3Zoom:null,d3Selection:null,d3ZoomHandler:null,minZoom:.5,maxZoom:2,translateExtent:[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],nodeExtent:[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],selectionMode:Sn.Full,paneDragging:!1,preventScrolling:!0,zoomOnScroll:!0,zoomOnPinch:!0,zoomOnDoubleClick:!0,panOnScroll:!1,panOnScrollSpeed:.5,panOnScrollMode:ft.Free,paneClickDistance:0,panOnDrag:!0,edgeUpdaterRadius:10,onlyRenderVisibleElements:!1,defaultViewport:{x:0,y:0,zoom:1},nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,defaultMarkerColor:"#b1b1b7",connectionLineStyle:{},connectionLineType:null,connectionLineOptions:{type:He.Bezier,style:{}},connectionMode:Te.Loose,connectionStartHandle:null,connectionEndHandle:null,connectionClickStartHandle:null,connectionPosition:{x:Number.NaN,y:Number.NaN},connectionRadius:20,connectOnClick:!0,connectionStatus:null,isValidConnection:null,snapGrid:[15,15],snapToGrid:!1,edgesUpdatable:!1,edgesFocusable:!0,nodesFocusable:!0,nodesConnectable:!0,nodesDraggable:!0,nodeDragThreshold:1,elementsSelectable:!0,selectNodesOnDrag:!0,multiSelectionActive:!1,selectionKeyCode:"Shift",multiSelectionKeyCode:Xt()?"Meta":"Control",zoomActivationKeyCode:Xt()?"Meta":"Control",deleteKeyCode:"Backspace",panActivationKeyCode:"Space",hooks:_u(),applyDefault:!0,autoConnect:!1,fitViewOnInit:!1,fitViewOnInitDone:!1,noDragClassName:"nodrag",noWheelClassName:"nowheel",noPanClassName:"nopan",defaultEdgeOptions:void 0,elevateEdgesOnSelect:!1,elevateNodesOnSelect:!0,autoPanOnNodeDrag:!0,autoPanOnConnect:!0,autoPanSpeed:15,disableKeyboardA11y:!1,ariaLiveMessage:""}}const xu=["id","vueFlowRef","viewportRef","initialized","modelValue","nodes","edges","maxZoom","minZoom","translateExtent","hooks","defaultEdgeOptions"];function Su(e,t,n){const o=vu(e),i=m=>{const g=m??[];e.hooks.updateNodeInternals.trigger(g)},r=m=>zs(m,e.nodes,e.edges),l=m=>Os(m,e.nodes,e.edges),s=m=>Ko(m,e.edges),u=({id:m,type:g,nodeId:v})=>{var y;const I=m?`-${g}-${m}`:`-${g}`;return Array.from(((y=e.connectionLookup.get(`${v}${I}`))==null?void 0:y.values())??[])},c=m=>{if(m)return t.value.get(m)},d=m=>{if(m)return n.value.get(m)},f=(m,g,v)=>{var y,I;const G=[];for(const X of m){const U={id:X.id,type:"position",dragging:v,from:X.from};if(g&&(U.position=X.position,X.parentNode)){const J=c(X.parentNode);U.position={x:U.position.x-(((y=J?.computedPosition)==null?void 0:y.x)??0),y:U.position.y-(((I=J?.computedPosition)==null?void 0:I.y)??0)}}G.push(U)}G?.length&&e.hooks.nodesChange.trigger(G)},h=m=>{if(!e.vueFlowRef)return;const g=e.vueFlowRef.querySelector(".vue-flow__transformationpane");if(!g)return;const v=window.getComputedStyle(g),{m22:y}=new window.DOMMatrixReadOnly(v.transform),I=[];for(const G of m){const X=G,U=c(X.id);if(U){const J=Yt(X.nodeElement);if(!!(J.width&&J.height&&(U.dimensions.width!==J.width||U.dimensions.height!==J.height||X.forceUpdate))){const ae=X.nodeElement.getBoundingClientRect();U.dimensions=J,U.handleBounds.source=gi("source",X.nodeElement,ae,y,U.id),U.handleBounds.target=gi("target",X.nodeElement,ae,y,U.id),I.push({id:U.id,type:"dimensions",dimensions:J})}}}!e.fitViewOnInitDone&&e.fitViewOnInit&&o.value.fitView().then(()=>{e.fitViewOnInitDone=!0}),I.length&&e.hooks.nodesChange.trigger(I)},p=(m,g)=>{const v=new Set,y=new Set;for(const X of m)Fe(X)?v.add(X.id):$e(X)&&y.add(X.id);const I=Be(t.value,v,!0),G=Be(n.value,y);if(e.multiSelectionActive){for(const X of v)I.push(De(X,g));for(const X of y)G.push(De(X,g))}I.length&&e.hooks.nodesChange.trigger(I),G.length&&e.hooks.edgesChange.trigger(G)},b=m=>{if(e.multiSelectionActive){const g=m.map(v=>De(v.id,!0));e.hooks.nodesChange.trigger(g);return}e.hooks.nodesChange.trigger(Be(t.value,new Set(m.map(g=>g.id)),!0)),e.hooks.edgesChange.trigger(Be(n.value))},x=m=>{if(e.multiSelectionActive){const g=m.map(v=>De(v.id,!0));e.hooks.edgesChange.trigger(g);return}e.hooks.edgesChange.trigger(Be(n.value,new Set(m.map(g=>g.id)))),e.hooks.nodesChange.trigger(Be(t.value,new Set,!0))},N=m=>{p(m,!0)},k=m=>{const v=(m||e.nodes).map(y=>(y.selected=!1,De(y.id,!1)));e.hooks.nodesChange.trigger(v)},M=m=>{const v=(m||e.edges).map(y=>(y.selected=!1,De(y.id,!1)));e.hooks.edgesChange.trigger(v)},_=m=>{if(!m||!m.length)return p([],!1);const g=m.reduce((v,y)=>{const I=De(y.id,!1);return Fe(y)?v.nodes.push(I):v.edges.push(I),v},{nodes:[],edges:[]});g.nodes.length&&e.hooks.nodesChange.trigger(g.nodes),g.edges.length&&e.hooks.edgesChange.trigger(g.edges)},C=m=>{var g;(g=e.d3Zoom)==null||g.scaleExtent([m,e.maxZoom]),e.minZoom=m},A=m=>{var g;(g=e.d3Zoom)==null||g.scaleExtent([e.minZoom,m]),e.maxZoom=m},P=m=>{var g;(g=e.d3Zoom)==null||g.translateExtent(m),e.translateExtent=m},$=m=>{e.nodeExtent=m,i()},B=m=>{var g;(g=e.d3Zoom)==null||g.clickDistance(m)},K=m=>{e.nodesDraggable=m,e.nodesConnectable=m,e.elementsSelectable=m},F=m=>{const g=m instanceof Function?m(e.nodes):m;!e.initialized&&!g.length||(e.nodes=pi(g,c,e.hooks.error.trigger))},O=m=>{const g=m instanceof Function?m(e.edges):m;if(!e.initialized&&!g.length)return;const v=Vn(g,e.isValidConnection,c,d,e.hooks.error.trigger,e.defaultEdgeOptions,e.nodes,e.edges);Bn(e.connectionLookup,n.value,v),e.edges=v},E=m=>{const g=m instanceof Function?m([...e.nodes,...e.edges]):m;!e.initialized&&!g.length||(F(g.filter(Fe)),O(g.filter($e)))},Z=m=>{let g=m instanceof Function?m(e.nodes):m;g=Array.isArray(g)?g:[g];const v=pi(g,c,e.hooks.error.trigger),y=[];for(const I of v)y.push(ni(I));y.length&&e.hooks.nodesChange.trigger(y)},w=m=>{let g=m instanceof Function?m(e.edges):m;g=Array.isArray(g)?g:[g];const v=Vn(g,e.isValidConnection,c,d,e.hooks.error.trigger,e.defaultEdgeOptions,e.nodes,e.edges),y=[];for(const I of v)y.push(ni(I));y.length&&e.hooks.edgesChange.trigger(y)},T=(m,g=!0,v=!1)=>{const y=m instanceof Function?m(e.nodes):m,I=Array.isArray(y)?y:[y],G=[],X=[];function U(ne){const ae=s(ne);for(const ue of ae)(!he(ue.deletable)||ue.deletable)&&X.push(ii(ue.id,ue.source,ue.target,ue.sourceHandle,ue.targetHandle))}function J(ne){const ae=[];for(const ue of e.nodes)ue.parentNode===ne&&ae.push(ue);if(ae.length){for(const ue of ae)G.push(oi(ue.id));g&&U(ae);for(const ue of ae)J(ue.id)}}for(const ne of I){const ae=typeof ne=="string"?c(ne):ne;ae&&(he(ae.deletable)&&!ae.deletable||(G.push(oi(ae.id)),g&&U([ae]),v&&J(ae.id)))}X.length&&e.hooks.edgesChange.trigger(X),G.length&&e.hooks.nodesChange.trigger(G)},S=m=>{const g=m instanceof Function?m(e.edges):m,v=Array.isArray(g)?g:[g],y=[];for(const I of v){const G=typeof I=="string"?d(I):I;G&&(he(G.deletable)&&!G.deletable||y.push(ii(typeof I=="string"?I:I.id,G.source,G.target,G.sourceHandle,G.targetHandle)))}e.hooks.edgesChange.trigger(y)},D=(m,g,v=!0)=>{const y=d(m.id);if(!y)return!1;const I=e.edges.indexOf(y),G=au(m,g,y,v,e.hooks.error.trigger);if(G){const[X]=Vn([G],e.isValidConnection,c,d,e.hooks.error.trigger,e.defaultEdgeOptions,e.nodes,e.edges);return e.edges=e.edges.map((U,J)=>J===I?X:U),Bn(e.connectionLookup,n.value,[X]),X}return!1},V=(m,g,v={replace:!1})=>{const y=d(m);if(!y)return;const I=typeof g=="function"?g(y):g;y.data=v.replace?I:{...y.data,...I}},R=m=>ti(m,e.nodes),H=m=>{const g=ti(m,e.edges);return Bn(e.connectionLookup,n.value,g),g},W=(m,g,v={replace:!1})=>{const y=c(m);if(!y)return;const I=typeof g=="function"?g(y):g;v.replace?e.nodes.splice(e.nodes.indexOf(y),1,I):Object.assign(y,I)},Q=(m,g,v={replace:!1})=>{const y=c(m);if(!y)return;const I=typeof g=="function"?g(y):g;y.data=v.replace?I:{...y.data,...I}},te=(m,g,v=!1)=>{v?e.connectionClickStartHandle=m:e.connectionStartHandle=m,e.connectionEndHandle=null,e.connectionStatus=null,g&&(e.connectionPosition=g)},Y=(m,g=null,v=null)=>{e.connectionStartHandle&&(e.connectionPosition=m,e.connectionEndHandle=g,e.connectionStatus=v)},j=(m,g)=>{e.connectionPosition={x:Number.NaN,y:Number.NaN},e.connectionEndHandle=null,e.connectionStatus=null,g?e.connectionClickStartHandle=null:e.connectionStartHandle=null},q=m=>{const g=Vs(m),v=g?null:gt(m)?m:c(m.id);return!g&&!v?[null,null,g]:[g?m:Lt(v),v,g]},re=(m,g=!0,v=e.nodes)=>{const[y,I,G]=q(m);if(!y)return[];const X=[];for(const U of v||e.nodes){if(!G&&(U.id===I.id||!U.computedPosition))continue;const J=Lt(U),ne=Ft(J,y);(g&&ne>0||ne>=J.width*J.height||ne>=Number(y.width)*Number(y.height))&&X.push(U)}return X},le=(m,g,v=!0)=>{const[y]=q(m);if(!y)return!1;const I=Ft(y,g);return v&&I>0||I>=Number(y.width)*Number(y.height)},oe=m=>{const{viewport:g,dimensions:v,d3Zoom:y,d3Selection:I,translateExtent:G}=e;if(!y||!I||!m.x&&!m.y)return!1;const X=Ke.translate(g.x+m.x,g.y+m.y).scale(g.zoom),U=[[0,0],[v.width,v.height]],J=y.constrain()(X,U,G),ne=e.viewport.x!==J.x||e.viewport.y!==J.y||e.viewport.zoom!==J.k;return y.transform(I,J),ne},se=m=>{const g=m instanceof Function?m(e):m,v=["d3Zoom","d3Selection","d3ZoomHandler","viewportRef","vueFlowRef","dimensions","hooks"];he(g.defaultEdgeOptions)&&(e.defaultEdgeOptions=g.defaultEdgeOptions);const y=g.modelValue||g.nodes||g.edges?[]:void 0;y&&(g.modelValue&&y.push(...g.modelValue),g.nodes&&y.push(...g.nodes),g.edges&&y.push(...g.edges),E(y));const I=()=>{he(g.maxZoom)&&A(g.maxZoom),he(g.minZoom)&&C(g.minZoom),he(g.translateExtent)&&P(g.translateExtent)};for(const G of Object.keys(g)){const X=G,U=g[X];![...xu,...v].includes(X)&&he(U)&&(e[X]=U)}nn(()=>e.d3Zoom).not.toBeNull().then(I),e.initialized||(e.initialized=!0)};return{updateNodePositions:f,updateNodeDimensions:h,setElements:E,setNodes:F,setEdges:O,addNodes:Z,addEdges:w,removeNodes:T,removeEdges:S,findNode:c,findEdge:d,updateEdge:D,updateEdgeData:V,updateNode:W,updateNodeData:Q,applyEdgeChanges:H,applyNodeChanges:R,addSelectedElements:N,addSelectedNodes:b,addSelectedEdges:x,setMinZoom:C,setMaxZoom:A,setTranslateExtent:P,setNodeExtent:$,setPaneClickDistance:B,removeSelectedElements:_,removeSelectedNodes:k,removeSelectedEdges:M,startConnection:te,updateConnection:Y,endConnection:j,setInteractive:K,setState:se,getIntersectingNodes:re,getIncomers:r,getOutgoers:l,getConnectedEdges:s,getHandleConnections:u,isNodeIntersecting:le,panBy:oe,fitView:m=>o.value.fitView(m),zoomIn:m=>o.value.zoomIn(m),zoomOut:m=>o.value.zoomOut(m),zoomTo:(m,g)=>o.value.zoomTo(m,g),setViewport:(m,g)=>o.value.setViewport(m,g),setTransform:(m,g)=>o.value.setTransform(m,g),getViewport:()=>o.value.getViewport(),getTransform:()=>o.value.getTransform(),setCenter:(m,g,v)=>o.value.setCenter(m,g,v),fitBounds:(m,g)=>o.value.fitBounds(m,g),project:m=>o.value.project(m),screenToFlowCoordinate:m=>o.value.screenToFlowCoordinate(m),flowToScreenCoordinate:m=>o.value.flowToScreenCoordinate(m),toObject:()=>{const m=[],g=[];for(const v of e.nodes){const{computedPosition:y,handleBounds:I,selected:G,dimensions:X,isParent:U,resizing:J,dragging:ne,events:ae,...ue}=v;m.push(ue)}for(const v of e.edges){const{selected:y,sourceNode:I,targetNode:G,events:X,...U}=v;g.push(U)}return JSON.parse(JSON.stringify({nodes:m,edges:g,position:[e.viewport.x,e.viewport.y],zoom:e.viewport.zoom,viewport:e.viewport}))},fromObject:m=>new Promise(g=>{const{nodes:v,edges:y,position:I,zoom:G,viewport:X}=m;if(v&&F(v),y&&O(y),X?.x&&X?.y||I){const U=X?.x||I[0],J=X?.y||I[1],ne=X?.zoom||G||e.viewport.zoom;return nn(()=>o.value.viewportInitialized).toBe(!0).then(()=>{o.value.setViewport({x:U,y:J,zoom:ne}).then(()=>{g(!0)})})}else g(!0)}),updateNodeInternals:i,viewportHelper:o,$reset:()=>{const m=Ni();if(e.edges=[],e.nodes=[],e.d3Zoom&&e.d3Selection){const g=Ke.translate(m.defaultViewport.x??0,m.defaultViewport.y??0).scale(Le(m.defaultViewport.zoom??1,m.minZoom,m.maxZoom)),v=e.viewportRef.getBoundingClientRect(),y=[[0,0],[v.width,v.height]],I=e.d3Zoom.constrain()(g,y,m.translateExtent);e.d3Zoom.transform(e.d3Selection,I)}se(m)},$destroy:()=>{}}}const Nu=["data-id","data-handleid","data-nodeid","data-handlepos"],Cu={name:"Handle",compatConfig:{MODE:3}},Qe=a.defineComponent({...Cu,props:{id:{default:null},type:{},position:{default:()=>z.Top},isValidConnection:{type:Function},connectable:{type:[Boolean,Number,String,Function],default:void 0},connectableStart:{type:Boolean,default:!0},connectableEnd:{type:Boolean,default:!0}},setup(e,{expose:t}){const n=a.createPropsRestProxy(e,["position","connectable","connectableStart","connectableEnd","id"]),o=a.toRef(()=>n.type??"source"),i=a.toRef(()=>n.isValidConnection??null),{id:r,connectionStartHandle:l,connectionClickStartHandle:s,connectionEndHandle:u,vueFlowRef:c,nodesConnectable:d,noDragClassName:f,noPanClassName:h}=de(),{id:p,node:b,nodeEl:x,connectedEdges:N}=xi(),k=a.ref(),M=a.toRef(()=>typeof e.connectableStart<"u"?e.connectableStart:!0),_=a.toRef(()=>typeof e.connectableEnd<"u"?e.connectableEnd:!0),C=a.toRef(()=>{var O,E,Z,w,T,S;return((O=l.value)==null?void 0:O.nodeId)===p&&((E=l.value)==null?void 0:E.id)===e.id&&((Z=l.value)==null?void 0:Z.type)===o.value||((w=u.value)==null?void 0:w.nodeId)===p&&((T=u.value)==null?void 0:T.id)===e.id&&((S=u.value)==null?void 0:S.type)===o.value}),A=a.toRef(()=>{var O,E,Z;return((O=s.value)==null?void 0:O.nodeId)===p&&((E=s.value)==null?void 0:E.id)===e.id&&((Z=s.value)==null?void 0:Z.type)===o.value}),{handlePointerDown:P,handleClick:$}=bi({nodeId:p,handleId:e.id,isValidConnection:i,type:o}),B=a.computed(()=>typeof e.connectable=="string"&&e.connectable==="single"?!N.value.some(O=>{const E=O[`${o.value}Handle`];return O[o.value]!==p?!1:E?E===e.id:!0}):typeof e.connectable=="number"?N.value.filter(O=>{const E=O[`${o.value}Handle`];return O[o.value]!==p?!1:E?E===e.id:!0}).length<e.connectable:typeof e.connectable=="function"?e.connectable(b,N.value):he(e.connectable)?e.connectable:d.value);a.onMounted(()=>{var O;if(!b.dimensions.width||!b.dimensions.height)return;const E=(O=b.handleBounds[o.value])==null?void 0:O.find(R=>R.id===e.id);if(!c.value||E)return;const Z=c.value.querySelector(".vue-flow__transformationpane");if(!x.value||!k.value||!Z||!e.id)return;const w=x.value.getBoundingClientRect(),T=k.value.getBoundingClientRect(),S=window.getComputedStyle(Z),{m22:D}=new window.DOMMatrixReadOnly(S.transform),V={id:e.id,position:e.position,x:(T.left-w.left)/D,y:(T.top-w.top)/D,type:o.value,nodeId:p,...Yt(k.value)};b.handleBounds[o.value]=[...b.handleBounds[o.value]??[],V]});function K(O){const E=Pn(O);B.value&&M.value&&(E&&O.button===0||!E)&&P(O)}function F(O){!p||!s.value&&!M.value||B.value&&$(O)}return t({handleClick:$,handlePointerDown:P,onClick:F,onPointerDown:K}),(O,E)=>(a.openBlock(),a.createElementBlock("div",{ref_key:"handle",ref:k,"data-id":`${a.unref(r)}-${a.unref(p)}-${e.id}-${o.value}`,"data-handleid":e.id,"data-nodeid":a.unref(p),"data-handlepos":O.position,class:a.normalizeClass(["vue-flow__handle",[`vue-flow__handle-${O.position}`,`vue-flow__handle-${e.id}`,a.unref(f),a.unref(h),o.value,{connectable:B.value,connecting:A.value,connectablestart:M.value,connectableend:_.value,connectionindicator:B.value&&(M.value&&!C.value||_.value&&C.value)}]]),onMousedown:K,onTouchstartPassive:K,onClick:F},[a.renderSlot(O.$slots,"default",{id:O.id})],42,Nu))}}),qt=function({sourcePosition:e=z.Bottom,targetPosition:t=z.Top,label:n,connectable:o=!0,isValidTargetPos:i,isValidSourcePos:r,data:l}){const s=l.label??n;return[a.h(Qe,{type:"target",position:t,connectable:o,isValidConnection:i}),typeof s!="string"&&s?a.h(s):a.h(a.Fragment,[s]),a.h(Qe,{type:"source",position:e,connectable:o,isValidConnection:r})]};qt.props=["sourcePosition","targetPosition","label","isValidTargetPos","isValidSourcePos","connectable","data"],qt.inheritAttrs=!1,qt.compatConfig={MODE:3};const ku=qt,jt=function({targetPosition:e=z.Top,label:t,connectable:n=!0,isValidTargetPos:o,data:i}){const r=i.label??t;return[a.h(Qe,{type:"target",position:e,connectable:n,isValidConnection:o}),typeof r!="string"&&r?a.h(r):a.h(a.Fragment,[r])]};jt.props=["targetPosition","label","isValidTargetPos","connectable","data"],jt.inheritAttrs=!1,jt.compatConfig={MODE:3};const Mu=jt,Jt=function({sourcePosition:e=z.Bottom,label:t,connectable:n=!0,isValidSourcePos:o,data:i}){const r=i.label??t;return[typeof r!="string"&&r?a.h(r):a.h(a.Fragment,[r]),a.h(Qe,{type:"source",position:e,connectable:n,isValidConnection:o})]};Jt.props=["sourcePosition","label","isValidSourcePos","connectable","data"],Jt.inheritAttrs=!1,Jt.compatConfig={MODE:3};const Iu=Jt,Pu=["transform"],Tu=["width","height","x","y","rx","ry"],$u=["y"],Du={name:"EdgeText",compatConfig:{MODE:3}},Bu=a.defineComponent({...Du,props:{x:{},y:{},label:{},labelStyle:{default:()=>({})},labelShowBg:{type:Boolean,default:!0},labelBgStyle:{default:()=>({})},labelBgPadding:{default:()=>[2,4]},labelBgBorderRadius:{default:2}},setup(e){const t=a.ref({x:0,y:0,width:0,height:0}),n=a.ref(null),o=a.computed(()=>`translate(${e.x-t.value.width/2} ${e.y-t.value.height/2})`);a.onMounted(i),a.watch([()=>e.x,()=>e.y,n,()=>e.label],i);function i(){if(!n.value)return;const r=n.value.getBBox();(r.width!==t.value.width||r.height!==t.value.height)&&(t.value=r)}return(r,l)=>(a.openBlock(),a.createElementBlock("g",{transform:o.value,class:"vue-flow__edge-textwrapper"},[r.labelShowBg?(a.openBlock(),a.createElementBlock("rect",{key:0,class:"vue-flow__edge-textbg",width:`${t.value.width+2*r.labelBgPadding[0]}px`,height:`${t.value.height+2*r.labelBgPadding[1]}px`,x:-r.labelBgPadding[0],y:-r.labelBgPadding[1],style:a.normalizeStyle(r.labelBgStyle),rx:r.labelBgBorderRadius,ry:r.labelBgBorderRadius},null,12,Tu)):a.createCommentVNode("",!0),a.createElementVNode("text",a.mergeProps(r.$attrs,{ref_key:"el",ref:n,class:"vue-flow__edge-text",y:t.value.height/2,dy:"0.3em",style:r.labelStyle}),[a.renderSlot(r.$slots,"default",{},()=>[typeof r.label!="string"?(a.openBlock(),a.createBlock(a.resolveDynamicComponent(r.label),{key:0})):(a.openBlock(),a.createElementBlock(a.Fragment,{key:1},[a.createTextVNode(a.toDisplayString(r.label),1)],64))])],16,$u)],8,Pu))}}),Vu=["id","d","marker-end","marker-start"],Au=["d","stroke-width"],Ou={name:"BaseEdge",inheritAttrs:!1,compatConfig:{MODE:3}},Qt=a.defineComponent({...Ou,props:{id:{},labelX:{},labelY:{},path:{},label:{},markerStart:{},markerEnd:{},interactionWidth:{default:20},labelStyle:{},labelShowBg:{type:Boolean},labelBgStyle:{},labelBgPadding:{},labelBgBorderRadius:{}},setup(e,{expose:t}){const n=a.ref(null),o=a.ref(null),i=a.ref(null),r=a.useAttrs();return t({pathEl:n,interactionEl:o,labelEl:i}),(l,s)=>(a.openBlock(),a.createElementBlock(a.Fragment,null,[a.createElementVNode("path",a.mergeProps(a.unref(r),{id:l.id,ref_key:"pathEl",ref:n,d:l.path,class:"vue-flow__edge-path","marker-end":l.markerEnd,"marker-start":l.markerStart}),null,16,Vu),l.interactionWidth?(a.openBlock(),a.createElementBlock("path",{key:0,ref_key:"interactionEl",ref:o,fill:"none",d:l.path,"stroke-width":l.interactionWidth,"stroke-opacity":0,class:"vue-flow__edge-interaction"},null,8,Au)):a.createCommentVNode("",!0),l.label&&l.labelX&&l.labelY?(a.openBlock(),a.createBlock(Bu,{key:1,ref_key:"labelEl",ref:i,x:l.labelX,y:l.labelY,label:l.label,"label-show-bg":l.labelShowBg,"label-bg-style":l.labelBgStyle,"label-bg-padding":l.labelBgPadding,"label-bg-border-radius":l.labelBgBorderRadius,"label-style":l.labelStyle},null,8,["x","y","label","label-show-bg","label-bg-style","label-bg-padding","label-bg-border-radius","label-style"])):a.createCommentVNode("",!0)],64))}});function Ci({sourceX:e,sourceY:t,targetX:n,targetY:o}){const i=Math.abs(n-e)/2,r=n<e?n+i:n-i,l=Math.abs(o-t)/2,s=o<t?o+l:o-l;return[r,s,i,l]}function ki({sourceX:e,sourceY:t,targetX:n,targetY:o,sourceControlX:i,sourceControlY:r,targetControlX:l,targetControlY:s}){const u=e*.125+i*.375+l*.375+n*.125,c=t*.125+r*.375+s*.375+o*.125,d=Math.abs(u-e),f=Math.abs(c-t);return[u,c,d,f]}function en(e,t){return e>=0?.5*e:t*25*Math.sqrt(-e)}function Mi({pos:e,x1:t,y1:n,x2:o,y2:i,c:r}){let l,s;switch(e){case z.Left:l=t-en(t-o,r),s=n;break;case z.Right:l=t+en(o-t,r),s=n;break;case z.Top:l=t,s=n-en(n-i,r);break;case z.Bottom:l=t,s=n+en(i-n,r);break}return[l,s]}function On(e){const{sourceX:t,sourceY:n,sourcePosition:o=z.Bottom,targetX:i,targetY:r,targetPosition:l=z.Top,curvature:s=.25}=e,[u,c]=Mi({pos:o,x1:t,y1:n,x2:i,y2:r,c:s}),[d,f]=Mi({pos:l,x1:i,y1:r,x2:t,y2:n,c:s}),[h,p,b,x]=ki({sourceX:t,sourceY:n,targetX:i,targetY:r,sourceControlX:u,sourceControlY:c,targetControlX:d,targetControlY:f});return[`M${t},${n} C${u},${c} ${d},${f} ${i},${r}`,h,p,b,x]}function Ii({pos:e,x1:t,y1:n,x2:o,y2:i}){let r,l;switch(e){case z.Left:case z.Right:r=.5*(t+o),l=n;break;case z.Top:case z.Bottom:r=t,l=.5*(n+i);break}return[r,l]}function Pi(e){const{sourceX:t,sourceY:n,sourcePosition:o=z.Bottom,targetX:i,targetY:r,targetPosition:l=z.Top}=e,[s,u]=Ii({pos:o,x1:t,y1:n,x2:i,y2:r}),[c,d]=Ii({pos:l,x1:i,y1:r,x2:t,y2:n}),[f,h,p,b]=ki({sourceX:t,sourceY:n,targetX:i,targetY:r,sourceControlX:s,sourceControlY:u,targetControlX:c,targetControlY:d});return[`M${t},${n} C${s},${u} ${c},${d} ${i},${r}`,f,h,p,b]}const Ti={[z.Left]:{x:-1,y:0},[z.Right]:{x:1,y:0},[z.Top]:{x:0,y:-1},[z.Bottom]:{x:0,y:1}};function zu({source:e,sourcePosition:t=z.Bottom,target:n}){return t===z.Left||t===z.Right?e.x<n.x?{x:1,y:0}:{x:-1,y:0}:e.y<n.y?{x:0,y:1}:{x:0,y:-1}}function $i(e,t){return Math.sqrt((t.x-e.x)**2+(t.y-e.y)**2)}function Ru({source:e,sourcePosition:t=z.Bottom,target:n,targetPosition:o=z.Top,center:i,offset:r}){const l=Ti[t],s=Ti[o],u={x:e.x+l.x*r,y:e.y+l.y*r},c={x:n.x+s.x*r,y:n.y+s.y*r},d=zu({source:u,sourcePosition:t,target:c}),f=d.x!==0?"x":"y",h=d[f];let p,b,x;const N={x:0,y:0},k={x:0,y:0},[M,_,C,A]=Ci({sourceX:e.x,sourceY:e.y,targetX:n.x,targetY:n.y});if(l[f]*s[f]===-1){b=i.x??M,x=i.y??_;const $=[{x:b,y:u.y},{x:b,y:c.y}],B=[{x:u.x,y:x},{x:c.x,y:x}];l[f]===h?p=f==="x"?$:B:p=f==="x"?B:$}else{const $=[{x:u.x,y:c.y}],B=[{x:c.x,y:u.y}];if(f==="x"?p=l.x===h?B:$:p=l.y===h?$:B,t===o){const Z=Math.abs(e[f]-n[f]);if(Z<=r){const w=Math.min(r-1,r-Z);l[f]===h?N[f]=(u[f]>e[f]?-1:1)*w:k[f]=(c[f]>n[f]?-1:1)*w}}if(t!==o){const Z=f==="x"?"y":"x",w=l[f]===s[Z],T=u[Z]>c[Z],S=u[Z]<c[Z];(l[f]===1&&(!w&&T||w&&S)||l[f]!==1&&(!w&&S||w&&T))&&(p=f==="x"?$:B)}const K={x:u.x+N.x,y:u.y+N.y},F={x:c.x+k.x,y:c.y+k.y},O=Math.max(Math.abs(K.x-p[0].x),Math.abs(F.x-p[0].x)),E=Math.max(Math.abs(K.y-p[0].y),Math.abs(F.y-p[0].y));O>=E?(b=(K.x+F.x)/2,x=p[0].y):(b=p[0].x,x=(K.y+F.y)/2)}return[[e,{x:u.x+N.x,y:u.y+N.y},...p,{x:c.x+k.x,y:c.y+k.y},n],b,x,C,A]}function Hu(e,t,n,o){const i=Math.min($i(e,t)/2,$i(t,n)/2,o),{x:r,y:l}=t;if(e.x===r&&r===n.x||e.y===l&&l===n.y)return`L${r} ${l}`;if(e.y===l){const c=e.x<n.x?-1:1,d=e.y<n.y?1:-1;return`L ${r+i*c},${l}Q ${r},${l} ${r},${l+i*d}`}const s=e.x<n.x?1:-1,u=e.y<n.y?-1:1;return`L ${r},${l+i*u}Q ${r},${l} ${r+i*s},${l}`}function zn(e){const{sourceX:t,sourceY:n,sourcePosition:o=z.Bottom,targetX:i,targetY:r,targetPosition:l=z.Top,borderRadius:s=5,centerX:u,centerY:c,offset:d=20}=e,[f,h,p,b,x]=Ru({source:{x:t,y:n},sourcePosition:o,target:{x:i,y:r},targetPosition:l,center:{x:u,y:c},offset:d});return[f.reduce((k,M,_)=>{let C;return _>0&&_<f.length-1?C=Hu(f[_-1],M,f[_+1],s):C=`${_===0?"M":"L"}${M.x} ${M.y}`,k+=C,k},""),h,p,b,x]}function Lu(e){const{sourceX:t,sourceY:n,targetX:o,targetY:i}=e,[r,l,s,u]=Ci({sourceX:t,sourceY:n,targetX:o,targetY:i});return[`M ${t},${n}L ${o},${i}`,r,l,s,u]}const Fu=a.defineComponent({name:"StraightEdge",props:["label","labelStyle","labelShowBg","labelBgStyle","labelBgPadding","labelBgBorderRadius","sourceY","sourceX","targetX","targetY","markerEnd","markerStart","interactionWidth"],compatConfig:{MODE:3},setup(e,{attrs:t}){return()=>{const[n,o,i]=Lu(e);return a.h(Qt,{path:n,labelX:o,labelY:i,...t,...e})}}}),Di=a.defineComponent({name:"SmoothStepEdge",props:["sourcePosition","targetPosition","label","labelStyle","labelShowBg","labelBgStyle","labelBgPadding","labelBgBorderRadius","sourceY","sourceX","targetX","targetY","borderRadius","markerEnd","markerStart","interactionWidth","offset"],compatConfig:{MODE:3},setup(e,{attrs:t}){return()=>{const[n,o,i]=zn({...e,sourcePosition:e.sourcePosition??z.Bottom,targetPosition:e.targetPosition??z.Top});return a.h(Qt,{path:n,labelX:o,labelY:i,...t,...e})}}}),Yu=a.defineComponent({name:"StepEdge",props:["sourcePosition","targetPosition","label","labelStyle","labelShowBg","labelBgStyle","labelBgPadding","labelBgBorderRadius","sourceY","sourceX","targetX","targetY","markerEnd","markerStart","interactionWidth"],setup(e,{attrs:t}){return()=>a.h(Di,{...e,...t,borderRadius:0})}}),Gu=a.defineComponent({name:"BezierEdge",props:["sourcePosition","targetPosition","label","labelStyle","labelShowBg","labelBgStyle","labelBgPadding","labelBgBorderRadius","sourceY","sourceX","targetX","targetY","curvature","markerEnd","markerStart","interactionWidth"],compatConfig:{MODE:3},setup(e,{attrs:t}){return()=>{const[n,o,i]=On({...e,sourcePosition:e.sourcePosition??z.Bottom,targetPosition:e.targetPosition??z.Top});return a.h(Qt,{path:n,labelX:o,labelY:i,...t,...e})}}}),Xu=a.defineComponent({name:"SimpleBezierEdge",props:["sourcePosition","targetPosition","label","labelStyle","labelShowBg","labelBgStyle","labelBgPadding","labelBgBorderRadius","sourceY","sourceX","targetX","targetY","markerEnd","markerStart","interactionWidth"],compatConfig:{MODE:3},setup(e,{attrs:t}){return()=>{const[n,o,i]=Pi({...e,sourcePosition:e.sourcePosition??z.Bottom,targetPosition:e.targetPosition??z.Top});return a.h(Qt,{path:n,labelX:o,labelY:i,...t,...e})}}}),Uu={input:Iu,default:ku,output:Mu},Zu={default:Gu,straight:Fu,step:Yu,smoothstep:Di,simplebezier:Xu};function Wu(e,t,n){const o=a.computed(()=>x=>t.value.get(x)),i=a.computed(()=>x=>n.value.get(x)),r=a.computed(()=>{const x={...Zu,...e.edgeTypes},N=Object.keys(x);for(const k of e.edges)k.type&&!N.includes(k.type)&&(x[k.type]=k.type);return x}),l=a.computed(()=>{const x={...Uu,...e.nodeTypes},N=Object.keys(x);for(const k of e.nodes)k.type&&!N.includes(k.type)&&(x[k.type]=k.type);return x}),s=a.computed(()=>e.onlyRenderVisibleElements?Wo(e.nodes,{x:0,y:0,width:e.dimensions.width,height:e.dimensions.height},e.viewport,!0):e.nodes),u=a.computed(()=>{if(e.onlyRenderVisibleElements){const x=[];for(const N of e.edges){const k=t.value.get(N.source),M=t.value.get(N.target);Ks({sourcePos:k.computedPosition||{x:0,y:0},targetPos:M.computedPosition||{x:0,y:0},sourceWidth:k.dimensions.width,sourceHeight:k.dimensions.height,targetWidth:M.dimensions.width,targetHeight:M.dimensions.height,width:e.dimensions.width,height:e.dimensions.height,viewport:e.viewport})&&x.push(N)}return x}return e.edges}),c=a.computed(()=>[...s.value,...u.value]),d=a.computed(()=>{const x=[];for(const N of e.nodes)N.selected&&x.push(N);return x}),f=a.computed(()=>{const x=[];for(const N of e.edges)N.selected&&x.push(N);return x}),h=a.computed(()=>[...d.value,...f.value]),p=a.computed(()=>{const x=[];for(const N of e.nodes)N.dimensions.width&&N.dimensions.height&&N.handleBounds!==void 0&&x.push(N);return x}),b=a.computed(()=>s.value.length>0&&p.value.length===s.value.length);return{getNode:o,getEdge:i,getElements:c,getEdgeTypes:r,getNodeTypes:l,getEdges:u,getNodes:s,getSelectedElements:h,getSelectedNodes:d,getSelectedEdges:f,getNodesInitialized:p,areNodesInitialized:b}}class Ye{constructor(){this.currentId=0,this.flows=new Map}static getInstance(){var t;const n=(t=a.getCurrentInstance())==null?void 0:t.appContext.app,o=n?.config.globalProperties.$vueFlowStorage??Ye.instance;return Ye.instance=o??new Ye,n&&(n.config.globalProperties.$vueFlowStorage=Ye.instance),Ye.instance}set(t,n){return this.flows.set(t,n)}get(t){return this.flows.get(t)}remove(t){return this.flows.delete(t)}create(t,n){const o=Ni(),i=a.reactive(o),r={};for(const[h,p]of Object.entries(i.hooks)){const b=`on${h.charAt(0).toUpperCase()+h.slice(1)}`;r[b]=p.on}const l={};for(const[h,p]of Object.entries(i.hooks))l[h]=p.trigger;const s=a.computed(()=>{const h=new Map;for(const p of i.nodes)h.set(p.id,p);return h}),u=a.computed(()=>{const h=new Map;for(const p of i.edges)h.set(p.id,p);return h}),c=Wu(i,s,u),d=Su(i,s,u);d.setState({...i,...n});const f={...r,...c,...d,...Gi(i),nodeLookup:s,edgeLookup:u,emits:l,id:t,vueFlowVersion:"1.47.0",$destroy:()=>{this.remove(t)}};return this.set(t,f),f}getId(){return`vue-flow-${this.currentId++}`}}function de(e){const t=Ye.getInstance(),n=a.getCurrentScope(),o=typeof e=="object",i=o?e:{id:e},r=i.id,l=r??n?.vueFlowId;let s;if(n){const u=a.inject(vi,null);typeof u<"u"&&u!==null&&(!l||u.id===l)&&(s=u)}if(s||l&&(s=t.get(l)),!s||l&&s.id!==l){const u=r??t.getId(),c=t.create(u,i);s=c,(n??a.effectScope(!0)).run(()=>{a.watch(c.applyDefault,(f,h,p)=>{const b=N=>{c.applyNodeChanges(N)},x=N=>{c.applyEdgeChanges(N)};f?(c.onNodesChange(b),c.onEdgesChange(x)):(c.hooks.value.nodesChange.off(b),c.hooks.value.edgesChange.off(x)),p(()=>{c.hooks.value.nodesChange.off(b),c.hooks.value.edgesChange.off(x)})},{immediate:!0}),et(()=>{if(s){const f=t.get(s.id);f?f.$destroy():vt(`No store instance found for id ${s.id} in storage.`)}})})}else o&&s.setState(i);if(n&&(a.provide(vi,s),n.vueFlowId=s.id),o){const u=a.getCurrentInstance();u?.type.name!=="VueFlow"&&s.emits.error(new ge(fe.USEVUEFLOW_OPTIONS))}return s}function Ku(e){const{emits:t,dimensions:n}=de();let o;a.onMounted(()=>{const i=()=>{var r,l;if(!e.value||!(((l=(r=e.value).checkVisibility)==null?void 0:l.call(r))??!0))return;const s=Yt(e.value);(s.width===0||s.height===0)&&t.error(new ge(fe.MISSING_VIEWPORT_DIMENSIONS)),n.value={width:s.width||500,height:s.height||500}};i(),window.addEventListener("resize",i),e.value&&(o=new ResizeObserver(()=>i()),o.observe(e.value)),a.onBeforeUnmount(()=>{window.removeEventListener("resize",i),o&&e.value&&o.unobserve(e.value)})})}const qu={name:"UserSelection",compatConfig:{MODE:3}},ju=a.defineComponent({...qu,props:{userSelectionRect:{}},setup(e){return(t,n)=>(a.openBlock(),a.createElementBlock("div",{class:"vue-flow__selection vue-flow__container",style:a.normalizeStyle({width:`${t.userSelectionRect.width}px`,height:`${t.userSelectionRect.height}px`,transform:`translate(${t.userSelectionRect.x}px, ${t.userSelectionRect.y}px)`})},null,4))}}),Ju=["tabIndex"],Qu={name:"NodesSelection",compatConfig:{MODE:3}},ec=a.defineComponent({...Qu,setup(e){const{emits:t,viewport:n,getSelectedNodes:o,noPanClassName:i,disableKeyboardA11y:r,userSelectionActive:l}=de(),s=Si(),u=a.ref(null),c=Ei({el:u,onStart(b){t.selectionDragStart(b),t.nodeDragStart(b)},onDrag(b){t.selectionDrag(b),t.nodeDrag(b)},onStop(b){t.selectionDragStop(b),t.nodeDragStop(b)}});a.onMounted(()=>{var b;r.value||(b=u.value)==null||b.focus({preventScroll:!0})});const d=a.computed(()=>Zo(o.value)),f=a.computed(()=>({width:`${d.value.width}px`,height:`${d.value.height}px`,top:`${d.value.y}px`,left:`${d.value.x}px`}));function h(b){t.selectionContextMenu({event:b,nodes:o.value})}function p(b){r||qe[b.key]&&(b.preventDefault(),s({x:qe[b.key].x,y:qe[b.key].y},b.shiftKey))}return(b,x)=>!a.unref(l)&&d.value.width&&d.value.height?(a.openBlock(),a.createElementBlock("div",{key:0,class:a.normalizeClass(["vue-flow__nodesselection vue-flow__container",a.unref(i)]),style:a.normalizeStyle({transform:`translate(${a.unref(n).x}px,${a.unref(n).y}px) scale(${a.unref(n).zoom})`})},[a.createElementVNode("div",{ref_key:"el",ref:u,class:a.normalizeClass([{dragging:a.unref(c)},"vue-flow__nodesselection-rect"]),style:a.normalizeStyle(f.value),tabIndex:a.unref(r)?void 0:-1,onContextmenu:h,onKeydown:p},null,46,Ju)],6)):a.createCommentVNode("",!0)}});function tc(e,t){return{x:e.clientX-t.left,y:e.clientY-t.top}}const nc={name:"Pane",compatConfig:{MODE:3}},oc=a.defineComponent({...nc,props:{isSelecting:{type:Boolean},selectionKeyPressed:{type:Boolean}},setup(e){const{vueFlowRef:t,nodes:n,viewport:o,emits:i,userSelectionActive:r,removeSelectedElements:l,userSelectionRect:s,elementsSelectable:u,nodesSelectionActive:c,getSelectedEdges:d,getSelectedNodes:f,removeNodes:h,removeEdges:p,selectionMode:b,deleteKeyCode:x,multiSelectionKeyCode:N,multiSelectionActive:k,edgeLookup:M,nodeLookup:_,connectionLookup:C,defaultEdgeOptions:A,connectionStartHandle:P}=de(),$=a.ref(null),B=a.ref(new Set),K=a.ref(new Set),F=a.ref(),O=a.toRef(()=>u.value&&(e.isSelecting||r.value)),E=a.toRef(()=>P.value!==null);let Z=!1,w=!1;const T=ht(x,{actInsideInputWithModifier:!1}),S=ht(N);a.watch(T,Y=>{Y&&(h(f.value),p(d.value),c.value=!1)}),a.watch(S,Y=>{k.value=Y});function D(Y,j){return q=>{q.target===j&&Y?.(q)}}function V(Y){if(Z||E.value){Z=!1;return}i.paneClick(Y),l(),c.value=!1}function R(Y){Y.preventDefault(),Y.stopPropagation(),i.paneContextMenu(Y)}function H(Y){i.paneScroll(Y)}function W(Y){var j,q,re;if(F.value=(j=t.value)==null?void 0:j.getBoundingClientRect(),!u.value||!e.isSelecting||Y.button!==0||Y.target!==$.value||!F.value)return;(re=(q=Y.target)==null?void 0:q.setPointerCapture)==null||re.call(q,Y.pointerId);const{x:le,y:oe}=tc(Y,F.value);w=!0,Z=!1,l(),s.value={width:0,height:0,startX:le,startY:oe,x:le,y:oe},i.selectionStart(Y)}function Q(Y){var j;if(!F.value||!s.value)return;Z=!0;const{x:q,y:re}=Se(Y,F.value),{startX:le=0,startY:oe=0}=s.value,se={startX:le,startY:oe,x:q<le?q:le,y:re<oe?re:oe,width:Math.abs(q-le),height:Math.abs(re-oe)},ce=B.value,ee=K.value;B.value=new Set(Wo(n.value,se,o.value,b.value===Sn.Partial,!0).map(m=>m.id)),K.value=new Set;const ie=((j=A.value)==null?void 0:j.selectable)??!0;for(const m of B.value){const g=C.value.get(m);if(g)for(const{edgeId:v}of g.values()){const y=M.value.get(v);y&&(y.selectable??ie)&&K.value.add(v)}}if(!yi(ce,B.value)){const m=Be(_.value,B.value,!0);i.nodesChange(m)}if(!yi(ee,K.value)){const m=Be(M.value,K.value);i.edgesChange(m)}s.value=se,r.value=!0,c.value=!1}function te(Y){var j;Y.button!==0||!w||((j=Y.target)==null||j.releasePointerCapture(Y.pointerId),!r.value&&s.value&&Y.target===$.value&&V(Y),r.value=!1,s.value=null,c.value=B.value.size>0,i.selectionEnd(Y),e.selectionKeyPressed&&(Z=!1),w=!1)}return(Y,j)=>(a.openBlock(),a.createElementBlock("div",{ref_key:"container",ref:$,class:a.normalizeClass(["vue-flow__pane vue-flow__container",{selection:Y.isSelecting}]),onClick:j[0]||(j[0]=q=>O.value?void 0:D(V,$.value)(q)),onContextmenu:j[1]||(j[1]=q=>D(R,$.value)(q)),onWheelPassive:j[2]||(j[2]=q=>D(H,$.value)(q)),onPointerenter:j[3]||(j[3]=q=>O.value?void 0:a.unref(i).paneMouseEnter(q)),onPointerdown:j[4]||(j[4]=q=>O.value?W(q):a.unref(i).paneMouseMove(q)),onPointermove:j[5]||(j[5]=q=>O.value?Q(q):a.unref(i).paneMouseMove(q)),onPointerup:j[6]||(j[6]=q=>O.value?te(q):void 0),onPointerleave:j[7]||(j[7]=q=>a.unref(i).paneMouseLeave(q))},[a.renderSlot(Y.$slots,"default"),a.unref(r)&&a.unref(s)?(a.openBlock(),a.createBlock(ju,{key:0,"user-selection-rect":a.unref(s)},null,8,["user-selection-rect"])):a.createCommentVNode("",!0),a.unref(c)&&a.unref(f).length?(a.openBlock(),a.createBlock(ec,{key:1})):a.createCommentVNode("",!0)],34))}}),ic={name:"Transform",compatConfig:{MODE:3}},rc=a.defineComponent({...ic,setup(e){const{viewport:t,fitViewOnInit:n,fitViewOnInitDone:o}=de(),i=a.computed(()=>n.value?!o.value:!1),r=a.computed(()=>`translate(${t.value.x}px,${t.value.y}px) scale(${t.value.zoom})`);return(l,s)=>(a.openBlock(),a.createElementBlock("div",{class:"vue-flow__transformationpane vue-flow__container",style:a.normalizeStyle({transform:r.value,opacity:i.value?0:void 0})},[a.renderSlot(l.$slots,"default")],4))}}),lc={name:"Viewport",compatConfig:{MODE:3}},ac=a.defineComponent({...lc,setup(e){const{minZoom:t,maxZoom:n,defaultViewport:o,translateExtent:i,zoomActivationKeyCode:r,selectionKeyCode:l,panActivationKeyCode:s,panOnScroll:u,panOnScrollMode:c,panOnScrollSpeed:d,panOnDrag:f,zoomOnDoubleClick:h,zoomOnPinch:p,zoomOnScroll:b,preventScrolling:x,noWheelClassName:N,noPanClassName:k,emits:M,connectionStartHandle:_,userSelectionActive:C,paneDragging:A,d3Zoom:P,d3Selection:$,d3ZoomHandler:B,viewport:K,viewportRef:F,paneClickDistance:O}=de();Ku(F);const E=a.shallowRef(!1),Z=a.shallowRef(!1);let w=null,T=!1,S=0,D={x:0,y:0,zoom:0};const V=ht(s),R=ht(l),H=ht(r),W=a.toRef(()=>(!R.value||R.value&&l.value===!0)&&(V.value||f.value)),Q=a.toRef(()=>V.value||u.value),te=a.toRef(()=>R.value||l.value===!0&&W.value!==!0),Y=a.toRef(()=>_.value!==null);a.onMounted(()=>{if(!F.value){vt("Viewport element is missing");return}const oe=F.value,se=oe.getBoundingClientRect(),ce=Ms().clickDistance(O.value).scaleExtent([t.value,n.value]).translateExtent(i.value),ee=ye(oe).call(ce),ie=ee.on("wheel.zoom"),m=Ke.translate(o.value.x??0,o.value.y??0).scale(Le(o.value.zoom??1,t.value,n.value)),g=[[0,0],[se.width,se.height]],v=ce.constrain()(m,g,i.value);ce.transform(ee,v),ce.wheelDelta(Jo),P.value=ce,$.value=ee,B.value=ie,K.value={x:v.x,y:v.y,zoom:v.k},ce.on("start",y=>{var I;if(!y.sourceEvent)return null;S=y.sourceEvent.button,E.value=!0;const G=re(y.transform);((I=y.sourceEvent)==null?void 0:I.type)==="mousedown"&&(A.value=!0),D=G,M.viewportChangeStart(G),M.moveStart({event:y,flowTransform:G})}),ce.on("end",y=>{if(!y.sourceEvent)return null;if(E.value=!1,A.value=!1,j(W.value,S??0)&&!T&&M.paneContextMenu(y.sourceEvent),T=!1,q(D,y.transform)){const I=re(y.transform);D=I,M.viewportChangeEnd(I),M.moveEnd({event:y,flowTransform:I})}}),ce.filter(y=>{var I;const G=H.value||b.value,X=p.value&&y.ctrlKey,U=y.button,J=y.type==="wheel";if(U===1&&y.type==="mousedown"&&(le(y,"vue-flow__node")||le(y,"vue-flow__edge")))return!0;if(!W.value&&!G&&!Q.value&&!h.value&&!p.value||C.value||Y.value&&!J||!h.value&&y.type==="dblclick"||le(y,N.value)&&J||le(y,k.value)&&(!J||Q.value&&J&&!H.value)||!p.value&&y.ctrlKey&&J||!G&&!Q.value&&!X&&J)return!1;if(!p&&y.type==="touchstart"&&((I=y.touches)==null?void 0:I.length)>1)return y.preventDefault(),!1;if(!W.value&&(y.type==="mousedown"||y.type==="touchstart")||l.value===!0&&Array.isArray(f.value)&&f.value.includes(0)&&U===0||Array.isArray(f.value)&&!f.value.includes(U)&&(y.type==="mousedown"||y.type==="touchstart"))return!1;const ne=Array.isArray(f.value)&&f.value.includes(U)||l.value===!0&&Array.isArray(f.value)&&!f.value.includes(0)||!U||U<=1;return(!y.ctrlKey||V.value||J)&&ne}),a.watch([C,W],()=>{C.value&&!E.value?ce.on("zoom",null):C.value||ce.on("zoom",y=>{K.value={x:y.transform.x,y:y.transform.y,zoom:y.transform.k};const I=re(y.transform);T=j(W.value,S??0),M.viewportChange(I),M.move({event:y,flowTransform:I})})},{immediate:!0}),a.watch([C,Q,c,H,p,x,N],()=>{Q.value&&!H.value&&!C.value?ee.on("wheel.zoom",y=>{if(le(y,N.value))return!1;const I=H.value||b.value,G=p.value&&y.ctrlKey;if(!(!x.value||Q.value||I||G))return!1;y.preventDefault(),y.stopImmediatePropagation();const U=ee.property("__zoom").k||1,J=Xt();if(!V.value&&y.ctrlKey&&p.value&&J){const wt=_e(y),jc=Jo(y),Jc=U*2**jc;ce.scaleTo(ee,Jc,wt,y);return}const ne=y.deltaMode===1?20:1;let ae=c.value===ft.Vertical?0:y.deltaX*ne,ue=c.value===ft.Horizontal?0:y.deltaY*ne;!J&&y.shiftKey&&c.value!==ft.Vertical&&!ae&&ue&&(ae=ue,ue=0),ce.translateBy(ee,-(ae/U)*d.value,-(ue/U)*d.value);const Ne=re(ee.property("__zoom"));w&&clearTimeout(w),Z.value?(M.move({event:y,flowTransform:Ne}),M.viewportChange(Ne),w=setTimeout(()=>{M.moveEnd({event:y,flowTransform:Ne}),M.viewportChangeEnd(Ne),Z.value=!1},150)):(Z.value=!0,M.moveStart({event:y,flowTransform:Ne}),M.viewportChangeStart(Ne))},{passive:!1}):typeof ie<"u"&&ee.on("wheel.zoom",function(y,I){const G=!x.value&&y.type==="wheel"&&!y.ctrlKey,X=H.value||b.value,U=p.value&&y.ctrlKey;if(!X&&!u.value&&!U&&y.type==="wheel"||G||le(y,N.value))return null;y.preventDefault(),ie.call(this,y,I)},{passive:!1})},{immediate:!0})});function j(oe,se){return se===2&&Array.isArray(oe)&&oe.includes(2)}function q(oe,se){return oe.x!==se.x&&!Number.isNaN(se.x)||oe.y!==se.y&&!Number.isNaN(se.y)||oe.zoom!==se.k&&!Number.isNaN(se.k)}function re(oe){return{x:oe.x,y:oe.y,zoom:oe.k}}function le(oe,se){return oe.target.closest(`.${se}`)}return(oe,se)=>(a.openBlock(),a.createElementBlock("div",{ref_key:"viewportRef",ref:F,class:"vue-flow__viewport vue-flow__container"},[a.createVNode(oc,{"is-selecting":te.value,"selection-key-pressed":a.unref(R),class:a.normalizeClass({connecting:Y.value,dragging:a.unref(A),draggable:a.unref(f)===!0||Array.isArray(a.unref(f))&&a.unref(f).includes(0)})},{default:a.withCtx(()=>[a.createVNode(rc,null,{default:a.withCtx(()=>[a.renderSlot(oe.$slots,"default")]),_:3})]),_:3},8,["is-selecting","selection-key-pressed","class"])],512))}}),sc=["id"],uc=["id"],cc=["id"],dc={name:"A11yDescriptions",compatConfig:{MODE:3}},fc=a.defineComponent({...dc,setup(e){const{id:t,disableKeyboardA11y:n,ariaLiveMessage:o}=de();return(i,r)=>(a.openBlock(),a.createElementBlock(a.Fragment,null,[a.createElementVNode("div",{id:`${a.unref(zo)}-${a.unref(t)}`,style:{display:"none"}}," Press enter or space to select a node. "+a.toDisplayString(a.unref(n)?"":"You can then use the arrow keys to move the node around.")+" You can then use the arrow keys to move the node around, press delete to remove it and press escape to cancel. ",9,sc),a.createElementVNode("div",{id:`${a.unref(Ro)}-${a.unref(t)}`,style:{display:"none"}}," Press enter or space to select an edge. You can then press delete to remove it or press escape to cancel. ",8,uc),a.unref(n)?a.createCommentVNode("",!0):(a.openBlock(),a.createElementBlock("div",{key:0,id:`${a.unref(Bs)}-${a.unref(t)}`,"aria-live":"assertive","aria-atomic":"true",style:{position:"absolute",width:"1px",height:"1px",margin:"-1px",border:"0",padding:"0",overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)","clip-path":"inset(100%)"}},a.toDisplayString(a.unref(o)),9,cc))],64))}});function hc(){const e=de();a.watch(()=>e.viewportHelper.value.viewportInitialized,t=>{t&&setTimeout(()=>{e.emits.init(e),e.emits.paneReady(e)},1)})}function gc(e,t,n){return n===z.Left?e-t:n===z.Right?e+t:e}function pc(e,t,n){return n===z.Top?e-t:n===z.Bottom?e+t:e}const Rn=function({radius:e=10,centerX:t=0,centerY:n=0,position:o=z.Top,type:i}){return a.h("circle",{class:`vue-flow__edgeupdater vue-flow__edgeupdater-${i}`,cx:gc(t,e,o),cy:pc(n,e,o),r:e,stroke:"transparent",fill:"transparent"})};Rn.props=["radius","centerX","centerY","position","type"],Rn.compatConfig={MODE:3};const Bi=Rn,mc=a.defineComponent({name:"Edge",compatConfig:{MODE:3},props:["id"],setup(e){const{id:t,addSelectedEdges:n,connectionMode:o,edgeUpdaterRadius:i,emits:r,nodesSelectionActive:l,noPanClassName:s,getEdgeTypes:u,removeSelectedEdges:c,findEdge:d,findNode:f,isValidConnection:h,multiSelectionActive:p,disableKeyboardA11y:b,elementsSelectable:x,edgesUpdatable:N,edgesFocusable:k,hooks:M}=de(),_=a.computed(()=>d(e.id)),{emit:C,on:A}=du(_.value,r),P=a.inject(Zt),$=a.getCurrentInstance(),B=a.ref(!1),K=a.ref(!1),F=a.ref(""),O=a.ref(null),E=a.ref("source"),Z=a.ref(null),w=a.toRef(()=>typeof _.value.selectable>"u"?x.value:_.value.selectable),T=a.toRef(()=>typeof _.value.updatable>"u"?N.value:_.value.updatable),S=a.toRef(()=>typeof _.value.focusable>"u"?k.value:_.value.focusable);a.provide(su,e.id),a.provide(uu,Z);const D=a.computed(()=>_.value.class instanceof Function?_.value.class(_.value):_.value.class),V=a.computed(()=>_.value.style instanceof Function?_.value.style(_.value):_.value.style),R=a.computed(()=>{const g=_.value.type||"default",v=P?.[`edge-${g}`];if(v)return v;let y=_.value.template??u.value[g];if(typeof y=="string"&&$){const I=Object.keys($.appContext.components);I&&I.includes(g)&&(y=a.resolveComponent(g,!1))}return y&&typeof y!="string"?y:(r.error(new ge(fe.EDGE_TYPE_MISSING,y)),!1)}),{handlePointerDown:H}=bi({nodeId:F,handleId:O,type:E,isValidConnection:h,edgeUpdaterType:E,onEdgeUpdate:te,onEdgeUpdateEnd:Y});return()=>{const g=f(_.value.source),v=f(_.value.target),y="pathOptions"in _.value?_.value.pathOptions:{};if(!g&&!v)return r.error(new ge(fe.EDGE_SOURCE_TARGET_MISSING,_.value.id,_.value.source,_.value.target)),null;if(!g)return r.error(new ge(fe.EDGE_SOURCE_MISSING,_.value.id,_.value.source)),null;if(!v)return r.error(new ge(fe.EDGE_TARGET_MISSING,_.value.id,_.value.target)),null;if(!_.value||_.value.hidden||g.hidden||v.hidden)return null;let I;o.value===Te.Strict?I=g.handleBounds.source:I=[...g.handleBounds.source||[],...g.handleBounds.target||[]];const G=si(I,_.value.sourceHandle);let X;o.value===Te.Strict?X=v.handleBounds.target:X=[...v.handleBounds.target||[],...v.handleBounds.source||[]];const U=si(X,_.value.targetHandle),J=G?.position||z.Bottom,ne=U?.position||z.Top,{x:ae,y:ue}=Je(g,G,J),{x:Ne,y:wt}=Je(v,U,ne);return _.value.sourceX=ae,_.value.sourceY=ue,_.value.targetX=Ne,_.value.targetY=wt,a.h("g",{ref:Z,key:e.id,"data-id":e.id,class:["vue-flow__edge",`vue-flow__edge-${R.value===!1?"default":_.value.type||"default"}`,s.value,D.value,{updating:B.value,selected:_.value.selected,animated:_.value.animated,inactive:!w.value&&!M.value.edgeClick.hasListeners()}],tabIndex:S.value?0:void 0,"aria-label":_.value.ariaLabel===null?void 0:_.value.ariaLabel??`Edge from ${_.value.source} to ${_.value.target}`,"aria-describedby":S.value?`${Ro}-${t}`:void 0,"aria-roledescription":"edge",role:S.value?"group":"img",..._.value.domAttributes,onClick:q,onContextmenu:re,onDblclick:le,onMouseenter:oe,onMousemove:se,onMouseleave:ce,onKeyDown:S.value?m:void 0},[K.value?null:a.h(R.value===!1?u.value.default:R.value,{id:e.id,sourceNode:g,targetNode:v,source:_.value.source,target:_.value.target,type:_.value.type,updatable:T.value,selected:_.value.selected,animated:_.value.animated,label:_.value.label,labelStyle:_.value.labelStyle,labelShowBg:_.value.labelShowBg,labelBgStyle:_.value.labelBgStyle,labelBgPadding:_.value.labelBgPadding,labelBgBorderRadius:_.value.labelBgBorderRadius,data:_.value.data,events:{..._.value.events,...A},style:V.value,markerStart:`url('#${yt(_.value.markerStart,t)}')`,markerEnd:`url('#${yt(_.value.markerEnd,t)}')`,sourcePosition:J,targetPosition:ne,sourceX:ae,sourceY:ue,targetX:Ne,targetY:wt,sourceHandleId:_.value.sourceHandle,targetHandleId:_.value.targetHandle,interactionWidth:_.value.interactionWidth,...y}),[T.value==="source"||T.value===!0?[a.h("g",{onMousedown:ee,onMouseenter:W,onMouseout:Q},a.h(Bi,{position:J,centerX:ae,centerY:ue,radius:i.value,type:"source","data-type":"source"}))]:null,T.value==="target"||T.value===!0?[a.h("g",{onMousedown:ie,onMouseenter:W,onMouseout:Q},a.h(Bi,{position:ne,centerX:Ne,centerY:wt,radius:i.value,type:"target","data-type":"target"}))]:null]])};function W(){B.value=!0}function Q(){B.value=!1}function te(g,v){C.update({event:g,edge:_.value,connection:v})}function Y(g){C.updateEnd({event:g,edge:_.value}),K.value=!1}function j(g,v){g.button===0&&(K.value=!0,F.value=v?_.value.target:_.value.source,O.value=(v?_.value.targetHandle:_.value.sourceHandle)??null,E.value=v?"target":"source",C.updateStart({event:g,edge:_.value}),H(g))}function q(g){var v;const y={event:g,edge:_.value};w.value&&(l.value=!1,_.value.selected&&p.value?(c([_.value]),(v=Z.value)==null||v.blur()):n([_.value])),C.click(y)}function re(g){C.contextMenu({event:g,edge:_.value})}function le(g){C.doubleClick({event:g,edge:_.value})}function oe(g){C.mouseEnter({event:g,edge:_.value})}function se(g){C.mouseMove({event:g,edge:_.value})}function ce(g){C.mouseLeave({event:g,edge:_.value})}function ee(g){j(g,!0)}function ie(g){j(g,!1)}function m(g){var v;!b.value&&Ho.includes(g.key)&&w.value&&(g.key==="Escape"?((v=Z.value)==null||v.blur(),c([d(e.id)])):n([d(e.id)]))}}}),yc=a.defineComponent({name:"ConnectionLine",compatConfig:{MODE:3},setup(){var e;const{id:t,connectionMode:n,connectionStartHandle:o,connectionEndHandle:i,connectionPosition:r,connectionLineType:l,connectionLineStyle:s,connectionLineOptions:u,connectionStatus:c,viewport:d,findNode:f}=de(),h=(e=a.inject(Zt))==null?void 0:e["connection-line"],p=a.computed(()=>{var M;return f((M=o.value)==null?void 0:M.nodeId)}),b=a.computed(()=>{var M;return f((M=i.value)==null?void 0:M.nodeId)??null}),x=a.computed(()=>({x:(r.value.x-d.value.x)/d.value.zoom,y:(r.value.y-d.value.y)/d.value.zoom})),N=a.computed(()=>u.value.markerStart?`url(#${yt(u.value.markerStart,t)})`:""),k=a.computed(()=>u.value.markerEnd?`url(#${yt(u.value.markerEnd,t)})`:"");return()=>{var M,_,C;if(!p.value||!o.value)return null;const A=o.value.id,P=o.value.type,$=p.value.handleBounds;let B=$?.[P]??[];if(n.value===Te.Loose){const V=$?.[P==="source"?"target":"source"]??[];B=[...B,...V]}if(!B)return null;const K=(A?B.find(V=>V.id===A):B[0])??null,F=K?.position??z.Top,{x:O,y:E}=Je(p.value,K,F);let Z=null;b.value&&(n.value===Te.Strict?Z=((M=b.value.handleBounds[P==="source"?"target":"source"])==null?void 0:M.find(V=>{var R;return V.id===((R=i.value)==null?void 0:R.id)}))||null:Z=((_=[...b.value.handleBounds.source??[],...b.value.handleBounds.target??[]])==null?void 0:_.find(V=>{var R;return V.id===((R=i.value)==null?void 0:R.id)}))||null);const w=((C=i.value)==null?void 0:C.position)??(F?$n[F]:null);if(!F||!w)return null;const T=l.value??u.value.type??He.Bezier;let S="";const D={sourceX:O,sourceY:E,sourcePosition:F,targetX:x.value.x,targetY:x.value.y,targetPosition:w};return T===He.Bezier?[S]=On(D):T===He.Step?[S]=zn({...D,borderRadius:0}):T===He.SmoothStep?[S]=zn(D):T===He.SimpleBezier?[S]=Pi(D):S=`M${O},${E} ${x.value.x},${x.value.y}`,a.h("svg",{class:"vue-flow__edges vue-flow__connectionline vue-flow__container"},a.h("g",{class:"vue-flow__connection"},h?a.h(h,{sourceX:O,sourceY:E,sourcePosition:F,targetX:x.value.x,targetY:x.value.y,targetPosition:w,sourceNode:p.value,sourceHandle:K,targetNode:b.value,targetHandle:Z,markerEnd:k.value,markerStart:N.value,connectionStatus:c.value}):a.h("path",{d:S,class:[u.value.class,c.value,"vue-flow__connection-path"],style:{...s.value,...u.value.style},"marker-end":k.value,"marker-start":N.value})))}}}),vc=["id","markerWidth","markerHeight","markerUnits","orient"],wc={name:"MarkerType",compatConfig:{MODE:3}},_c=a.defineComponent({...wc,props:{id:{},type:{},color:{default:"none"},width:{default:12.5},height:{default:12.5},markerUnits:{default:"strokeWidth"},orient:{default:"auto-start-reverse"},strokeWidth:{default:1}},setup(e){return(t,n)=>(a.openBlock(),a.createElementBlock("marker",{id:t.id,class:"vue-flow__arrowhead",viewBox:"-10 -10 20 20",refX:"0",refY:"0",markerWidth:`${t.width}`,markerHeight:`${t.height}`,markerUnits:t.markerUnits,orient:t.orient},[t.type===a.unref(Nn).ArrowClosed?(a.openBlock(),a.createElementBlock("polyline",{key:0,style:a.normalizeStyle({stroke:t.color,fill:t.color,strokeWidth:t.strokeWidth}),"stroke-linecap":"round","stroke-linejoin":"round",points:"-5,-4 0,0 -5,4 -5,-4"},null,4)):a.createCommentVNode("",!0),t.type===a.unref(Nn).Arrow?(a.openBlock(),a.createElementBlock("polyline",{key:1,style:a.normalizeStyle({stroke:t.color,strokeWidth:t.strokeWidth}),"stroke-linecap":"round","stroke-linejoin":"round",fill:"none",points:"-5,-4 0,0 -5,4"},null,4)):a.createCommentVNode("",!0)],8,vc))}}),Ec={class:"vue-flow__marker vue-flow__container","aria-hidden":"true"},bc={name:"MarkerDefinitions",compatConfig:{MODE:3}},xc=a.defineComponent({...bc,setup(e){const{id:t,edges:n,connectionLineOptions:o,defaultMarkerColor:i}=de(),r=a.computed(()=>{const l=new Set,s=[],u=c=>{if(c){const d=yt(c,t);l.has(d)||(typeof c=="object"?s.push({...c,id:d,color:c.color||i.value}):s.push({id:d,color:i.value,type:c}),l.add(d))}};for(const c of[o.value.markerEnd,o.value.markerStart])u(c);for(const c of n.value)for(const d of[c.markerStart,c.markerEnd])u(d);return s.sort((c,d)=>c.id.localeCompare(d.id))});return(l,s)=>(a.openBlock(),a.createElementBlock("svg",Ec,[a.createElementVNode("defs",null,[(a.openBlock(!0),a.createElementBlock(a.Fragment,null,a.renderList(r.value,u=>(a.openBlock(),a.createBlock(_c,{id:u.id,key:u.id,type:u.type,color:u.color,width:u.width,height:u.height,markerUnits:u.markerUnits,"stroke-width":u.strokeWidth,orient:u.orient},null,8,["id","type","color","width","height","markerUnits","stroke-width","orient"]))),128))])]))}}),Sc={name:"Edges",compatConfig:{MODE:3}},Nc=a.defineComponent({...Sc,setup(e){const{findNode:t,getEdges:n,elevateEdgesOnSelect:o}=de();return(i,r)=>(a.openBlock(),a.createElementBlock(a.Fragment,null,[a.createVNode(xc),(a.openBlock(!0),a.createElementBlock(a.Fragment,null,a.renderList(a.unref(n),l=>(a.openBlock(),a.createElementBlock("svg",{key:l.id,class:"vue-flow__edges vue-flow__container",style:a.normalizeStyle({zIndex:a.unref(qs)(l,a.unref(t),a.unref(o))})},[a.createVNode(a.unref(mc),{id:l.id},null,8,["id"])],4))),128)),a.createVNode(a.unref(yc))],64))}}),Cc=a.defineComponent({name:"Node",compatConfig:{MODE:3},props:["id","resizeObserver"],setup(e){const{id:t,noPanClassName:n,selectNodesOnDrag:o,nodesSelectionActive:i,multiSelectionActive:r,emits:l,removeSelectedNodes:s,addSelectedNodes:u,updateNodeDimensions:c,onUpdateNodeInternals:d,getNodeTypes:f,nodeExtent:h,elevateNodesOnSelect:p,disableKeyboardA11y:b,ariaLiveMessage:x,snapToGrid:N,snapGrid:k,nodeDragThreshold:M,nodesDraggable:_,elementsSelectable:C,nodesConnectable:A,nodesFocusable:P,hooks:$}=de(),B=a.ref(null);a.provide(_i,B),a.provide(wi,e.id);const K=a.inject(Zt),F=a.getCurrentInstance(),O=Si(),{node:E,parentNode:Z}=xi(e.id),{emit:w,on:T}=pu(E,l),S=a.toRef(()=>typeof E.draggable>"u"?_.value:E.draggable),D=a.toRef(()=>typeof E.selectable>"u"?C.value:E.selectable),V=a.toRef(()=>typeof E.connectable>"u"?A.value:E.connectable),R=a.toRef(()=>typeof E.focusable>"u"?P.value:E.focusable),H=a.computed(()=>D.value||S.value||$.value.nodeClick.hasListeners()||$.value.nodeDoubleClick.hasListeners()||$.value.nodeMouseEnter.hasListeners()||$.value.nodeMouseMove.hasListeners()||$.value.nodeMouseLeave.hasListeners()),W=a.toRef(()=>!!E.dimensions.width&&!!E.dimensions.height),Q=a.computed(()=>{const v=E.type||"default",y=K?.[`node-${v}`];if(y)return y;let I=E.template||f.value[v];if(typeof I=="string"&&F){const G=Object.keys(F.appContext.components);G&&G.includes(v)&&(I=a.resolveComponent(v,!1))}return I&&typeof I!="string"?I:(l.error(new ge(fe.NODE_TYPE_MISSING,I)),!1)}),te=Ei({id:e.id,el:B,disabled:()=>!S.value,selectable:D,dragHandle:()=>E.dragHandle,onStart(v){w.dragStart(v)},onDrag(v){w.drag(v)},onStop(v){w.dragStop(v)},onClick(v){m(v)}}),Y=a.computed(()=>E.class instanceof Function?E.class(E):E.class),j=a.computed(()=>{const v=(E.style instanceof Function?E.style(E):E.style)||{},y=E.width instanceof Function?E.width(E):E.width,I=E.height instanceof Function?E.height(E):E.height;return!v.width&&y&&(v.width=typeof y=="string"?y:`${y}px`),!v.height&&I&&(v.height=typeof I=="string"?I:`${I}px`),v}),q=a.toRef(()=>Number(E.zIndex??j.value.zIndex??0));return d(v=>{(v.includes(e.id)||!v.length)&&le()}),a.onMounted(()=>{a.watch(()=>E.hidden,(v=!1,y,I)=>{!v&&B.value&&(e.resizeObserver.observe(B.value),I(()=>{B.value&&e.resizeObserver.unobserve(B.value)}))},{immediate:!0,flush:"post"})}),a.watch([()=>E.type,()=>E.sourcePosition,()=>E.targetPosition],()=>{a.nextTick(()=>{c([{id:e.id,nodeElement:B.value,forceUpdate:!0}])})}),a.watch([()=>E.position.x,()=>E.position.y,()=>{var v;return(v=Z.value)==null?void 0:v.computedPosition.x},()=>{var v;return(v=Z.value)==null?void 0:v.computedPosition.y},()=>{var v;return(v=Z.value)==null?void 0:v.computedPosition.z},q,()=>E.selected,()=>E.dimensions.height,()=>E.dimensions.width,()=>{var v;return(v=Z.value)==null?void 0:v.dimensions.height},()=>{var v;return(v=Z.value)==null?void 0:v.dimensions.width}],([v,y,I,G,X,U])=>{const J={x:v,y,z:U+(p.value&&E.selected?1e3:0)};typeof I<"u"&&typeof G<"u"?E.computedPosition=Gs({x:I,y:G,z:X},J):E.computedPosition=J},{flush:"post",immediate:!0}),a.watch([()=>E.extent,h],([v,y],[I,G])=>{(v!==I||y!==G)&&re()}),E.extent==="parent"||typeof E.extent=="object"&&"range"in E.extent&&E.extent.range==="parent"?nn(()=>W).toBe(!0).then(re):re(),()=>E.hidden?null:a.h("div",{ref:B,"data-id":E.id,class:["vue-flow__node",`vue-flow__node-${Q.value===!1?"default":E.type||"default"}`,{[n.value]:S.value,dragging:te?.value,draggable:S.value,selected:E.selected,selectable:D.value,parent:E.isParent},Y.value],style:{visibility:W.value?"visible":"hidden",zIndex:E.computedPosition.z??q.value,transform:`translate(${E.computedPosition.x}px,${E.computedPosition.y}px)`,pointerEvents:H.value?"all":"none",...j.value},tabIndex:R.value?0:void 0,role:R.value?"group":void 0,"aria-describedby":b.value?void 0:`${zo}-${t}`,"aria-label":E.ariaLabel,"aria-roledescription":"node",...E.domAttributes,onMouseenter:oe,onMousemove:se,onMouseleave:ce,onContextmenu:ee,onClick:m,onDblclick:ie,onKeydown:g},[a.h(Q.value===!1?f.value.default:Q.value,{id:E.id,type:E.type,data:E.data,events:{...E.events,...T},selected:E.selected,resizing:E.resizing,dragging:te.value,connectable:V.value,position:E.computedPosition,dimensions:E.dimensions,isValidTargetPos:E.isValidTargetPos,isValidSourcePos:E.isValidSourcePos,parent:E.parentNode,parentNodeId:E.parentNode,zIndex:E.computedPosition.z??q.value,targetPosition:E.targetPosition,sourcePosition:E.sourcePosition,label:E.label,dragHandle:E.dragHandle,onUpdateNodeInternals:le})]);function re(){const v=E.computedPosition,{computedPosition:y,position:I}=In(E,N.value?Ut(v,k.value):v,l.error,h.value,Z.value);(E.computedPosition.x!==y.x||E.computedPosition.y!==y.y)&&(E.computedPosition={...E.computedPosition,...y}),(E.position.x!==I.x||E.position.y!==I.y)&&(E.position=I)}function le(){B.value&&c([{id:e.id,nodeElement:B.value,forceUpdate:!0}])}function oe(v){te?.value||w.mouseEnter({event:v,node:E})}function se(v){te?.value||w.mouseMove({event:v,node:E})}function ce(v){te?.value||w.mouseLeave({event:v,node:E})}function ee(v){return w.contextMenu({event:v,node:E})}function ie(v){return w.doubleClick({event:v,node:E})}function m(v){D.value&&(!o.value||!S.value||M.value>0)&&Dn(E,r.value,u,s,i,!1,B.value),w.click({event:v,node:E})}function g(v){if(!(Cn(v)||b.value))if(Ho.includes(v.key)&&D.value){const y=v.key==="Escape";Dn(E,r.value,u,s,i,y,B.value)}else S.value&&E.selected&&qe[v.key]&&(v.preventDefault(),x.value=`Moved selected node ${v.key.replace("Arrow","").toLowerCase()}. New position, x: ${~~E.position.x}, y: ${~~E.position.y}`,O({x:qe[v.key].x,y:qe[v.key].y},v.shiftKey))}}}),kc={height:"0",width:"0"},Mc={name:"EdgeLabelRenderer",compatConfig:{MODE:3}},Ic=a.defineComponent({...Mc,setup(e){const{viewportRef:t}=de(),n=a.toRef(()=>{var o;return(o=t.value)==null?void 0:o.getElementsByClassName("vue-flow__edge-labels")[0]});return(o,i)=>(a.openBlock(),a.createElementBlock("svg",null,[(a.openBlock(),a.createElementBlock("foreignObject",kc,[(a.openBlock(),a.createBlock(a.Teleport,{to:n.value,disabled:!n.value},[a.renderSlot(o.$slots,"default")],8,["to","disabled"]))]))]))}});function Pc(e={includeHiddenNodes:!1}){const{nodes:t}=de();return a.computed(()=>{if(t.value.length===0)return!1;for(const n of t.value)if((e.includeHiddenNodes||!n.hidden)&&(n?.handleBounds===void 0||n.dimensions.width===0||n.dimensions.height===0))return!1;return!0})}const Tc={class:"vue-flow__nodes vue-flow__container"},$c={name:"Nodes",compatConfig:{MODE:3}},Dc=a.defineComponent({...$c,setup(e){const{getNodes:t,updateNodeDimensions:n,emits:o}=de(),i=Pc(),r=a.ref();return a.watch(i,l=>{l&&a.nextTick(()=>{o.nodesInitialized(t.value)})},{immediate:!0}),a.onMounted(()=>{r.value=new ResizeObserver(l=>{const s=l.map(u=>({id:u.target.getAttribute("data-id"),nodeElement:u.target,forceUpdate:!0}));a.nextTick(()=>n(s))})}),a.onBeforeUnmount(()=>{var l;return(l=r.value)==null?void 0:l.disconnect()}),(l,s)=>(a.openBlock(),a.createElementBlock("div",Tc,[r.value?(a.openBlock(!0),a.createElementBlock(a.Fragment,{key:0},a.renderList(a.unref(t),(u,c,d,f)=>{const h=[u.id];if(f&&f.key===u.id&&a.isMemoSame(f,h))return f;const p=(a.openBlock(),a.createBlock(a.unref(Cc),{id:u.id,key:u.id,"resize-observer":r.value},null,8,["id","resize-observer"]));return p.memo=h,p},s,0),128)):a.createCommentVNode("",!0)]))}});function Bc(){const{emits:e}=de();a.onMounted(()=>{if(hi()){const t=document.querySelector(".vue-flow__pane");t&&window.getComputedStyle(t).zIndex!=="1"&&e.error(new ge(fe.MISSING_STYLES))}})}const Vc=a.createElementVNode("div",{class:"vue-flow__edge-labels"},null,-1),Ac={name:"VueFlow",compatConfig:{MODE:3}},Oc=a.defineComponent({...Ac,props:{id:{},modelValue:{},nodes:{},edges:{},edgeTypes:{},nodeTypes:{},connectionMode:{},connectionLineType:{},connectionLineStyle:{default:void 0},connectionLineOptions:{default:void 0},connectionRadius:{},isValidConnection:{type:[Function,null],default:void 0},deleteKeyCode:{default:void 0},selectionKeyCode:{type:[Boolean,null],default:void 0},multiSelectionKeyCode:{default:void 0},zoomActivationKeyCode:{default:void 0},panActivationKeyCode:{default:void 0},snapToGrid:{type:Boolean,default:void 0},snapGrid:{},onlyRenderVisibleElements:{type:Boolean,default:void 0},edgesUpdatable:{type:[Boolean,String],default:void 0},nodesDraggable:{type:Boolean,default:void 0},nodesConnectable:{type:Boolean,default:void 0},nodeDragThreshold:{},elementsSelectable:{type:Boolean,default:void 0},selectNodesOnDrag:{type:Boolean,default:void 0},panOnDrag:{type:[Boolean,Array],default:void 0},minZoom:{},maxZoom:{},defaultViewport:{},translateExtent:{},nodeExtent:{},defaultMarkerColor:{},zoomOnScroll:{type:Boolean,default:void 0},zoomOnPinch:{type:Boolean,default:void 0},panOnScroll:{type:Boolean,default:void 0},panOnScrollSpeed:{},panOnScrollMode:{},paneClickDistance:{},zoomOnDoubleClick:{type:Boolean,default:void 0},preventScrolling:{type:Boolean,default:void 0},selectionMode:{},edgeUpdaterRadius:{},fitViewOnInit:{type:Boolean,default:void 0},connectOnClick:{type:Boolean,default:void 0},applyDefault:{type:Boolean,default:void 0},autoConnect:{type:[Boolean,Function],default:void 0},noDragClassName:{},noWheelClassName:{},noPanClassName:{},defaultEdgeOptions:{},elevateEdgesOnSelect:{type:Boolean,default:void 0},elevateNodesOnSelect:{type:Boolean,default:void 0},disableKeyboardA11y:{type:Boolean,default:void 0},edgesFocusable:{type:Boolean,default:void 0},nodesFocusable:{type:Boolean,default:void 0},autoPanOnConnect:{type:Boolean,default:void 0},autoPanOnNodeDrag:{type:Boolean,default:void 0},autoPanSpeed:{}},emits:["nodesChange","edgesChange","nodesInitialized","paneReady","init","updateNodeInternals","error","connect","connectStart","connectEnd","clickConnectStart","clickConnectEnd","moveStart","move","moveEnd","selectionDragStart","selectionDrag","selectionDragStop","selectionContextMenu","selectionStart","selectionEnd","viewportChangeStart","viewportChange","viewportChangeEnd","paneScroll","paneClick","paneContextMenu","paneMouseEnter","paneMouseMove","paneMouseLeave","edgeUpdate","edgeContextMenu","edgeMouseEnter","edgeMouseMove","edgeMouseLeave","edgeDoubleClick","edgeClick","edgeUpdateStart","edgeUpdateEnd","nodeContextMenu","nodeMouseEnter","nodeMouseMove","nodeMouseLeave","nodeDoubleClick","nodeClick","nodeDragStart","nodeDrag","nodeDragStop","miniMapNodeClick","miniMapNodeDoubleClick","miniMapNodeMouseEnter","miniMapNodeMouseMove","miniMapNodeMouseLeave","update:modelValue","update:nodes","update:edges"],setup(e,{expose:t,emit:n}){const o=e,i=a.useSlots(),r=on(o,"modelValue",n),l=on(o,"nodes",n),s=on(o,"edges",n),u=de(o),c=wu({modelValue:r,nodes:l,edges:s},o,u);return Eu(n,u.hooks),hc(),Bc(),a.provide(Zt,i),a.onUnmounted(c),t(u),(d,f)=>(a.openBlock(),a.createElementBlock("div",{ref:a.unref(u).vueFlowRef,class:"vue-flow"},[a.createVNode(ac,null,{default:a.withCtx(()=>[a.createVNode(Nc),Vc,a.createVNode(Dc),a.renderSlot(d.$slots,"zoom-pane")]),_:3}),a.renderSlot(d.$slots,"default"),a.createVNode(fc)],512))}}),zc=["id","d","marker-end"],Rc={class:"vue-flow__edge-label"},Hc={key:0,class:"label-input-wrapper"},Lc={inheritAttrs:!1},Fc=a.defineComponent({...Lc,__name:"EditableEdge",props:{id:{},sourceNode:{},targetNode:{},source:{},target:{},type:{},label:{type:[String,Object,Function]},style:{},selected:{type:Boolean},sourcePosition:{},targetPosition:{},sourceHandleId:{},targetHandleId:{},animated:{type:Boolean},updatable:{type:Boolean},markerStart:{},markerEnd:{},curvature:{},interactionWidth:{},data:{},events:{},labelStyle:{},labelShowBg:{type:Boolean},labelBgStyle:{},labelBgPadding:{},labelBgBorderRadius:{},sourceX:{},sourceY:{},targetX:{},targetY:{}},emits:["change"],setup(e,{emit:t}){const n=e,o=t,i=a.useTemplateRef("labelInput"),r=a.ref(""),l=a.ref(!1);let s=0;const u=async()=>{let h=Date.now();h-s<500&&!l.value&&await c(),s=h},c=async()=>{r.value=n.label,l.value=!0,await a.nextTick(),i.value.focus()},d=()=>{l.value=!1,o("change",r.value)},f=a.computed(()=>On(n));return(h,p)=>(a.openBlock(),a.createElementBlock(a.Fragment,null,[a.createElementVNode("path",{id:e.id,style:a.normalizeStyle(e.style),class:"vue-flow__edge-path",d:f.value[0],"marker-end":e.markerEnd},null,12,zc),a.createVNode(a.unref(Ic),null,{default:a.withCtx(()=>[a.createElementVNode("div",{style:a.normalizeStyle({pointerEvents:"all",position:"absolute",transform:`translate(-50%, -50%) translate(${f.value[1]}px,${f.value[2]}px)`}),class:"nodrag nopan editable-edge-label",onClick:p[2]||(p[2]=b=>u())},[a.createElementVNode("div",Rc,a.toDisplayString(e.label),1),l.value?(a.openBlock(),a.createElementBlock("div",Hc,[a.withDirectives(a.createElementVNode("input",{ref:"labelInput","onUpdate:modelValue":p[0]||(p[0]=b=>r.value=b),class:"label-input",onBlur:p[1]||(p[1]=b=>l.value=!1),onKeypress:a.withKeys(d,["enter"])},null,544),[[a.vModelText,r.value]])])):a.createCommentVNode("",!0)],4)]),_:1})],64))}}),Yc={key:0,class:"label-input-wrapper"},Gc=a.defineComponent({__name:"EditableNode",props:{id:{},type:{},selected:{type:Boolean},connectable:{type:[Boolean,Number,String,Function]},position:{},dimensions:{},label:{},isValidTargetPos:{type:Function},isValidSourcePos:{type:Function},parent:{},parentNodeId:{},dragging:{type:Boolean},resizing:{type:Boolean},zIndex:{},targetPosition:{},sourcePosition:{},dragHandle:{},data:{},events:{}},emits:["change"],setup(e,{emit:t}){const n=e,o=t,i=a.useTemplateRef("labelInput"),r=a.ref(""),l=a.ref(!1);let s=0;const u=async()=>{let f=Date.now();f-s<500&&!l.value&&await c(),s=f},c=async()=>{r.value=n.label,l.value=!0,await a.nextTick(),i.value.focus()},d=()=>{l.value=!1,o("change",r.value)};return(f,h)=>(a.openBlock(),a.createElementBlock("div",{onClick:h[2]||(h[2]=p=>u())},[a.createElementVNode("div",null,a.toDisplayString(e.label),1),l.value?(a.openBlock(),a.createElementBlock("div",Yc,[a.withDirectives(a.createElementVNode("input",{ref:"labelInput","onUpdate:modelValue":h[0]||(h[0]=p=>r.value=p),class:"label-input",onBlur:h[1]||(h[1]=p=>l.value=!1),onKeypress:a.withKeys(d,["enter"])},null,544),[[a.vModelText,r.value]])])):a.createCommentVNode("",!0),e.data.hasInput?(a.openBlock(),a.createBlock(a.unref(Qe),{key:1,id:"a",type:"target",position:e.targetPosition},null,8,["position"])):a.createCommentVNode("",!0),e.data.hasOutput?(a.openBlock(),a.createBlock(a.unref(Qe),{key:2,id:"b",type:"source",position:e.sourcePosition},null,8,["position"])):a.createCommentVNode("",!0)]))}}),Xc={class:"chart-controls"},Uc={class:"chart-controls-left"},Zc={class:"chart-controls-right"},Wc={key:0},Kc={key:1},Hn=a.defineComponent({__name:"NodeEditor",props:{modelValue:{},nodeContainerClass:{default:""}},emits:["update:modelValue"],setup(e,{emit:t}){const n=t,o=a.ref(!1),i=a.ref([]),r=a.ref(),l=a.ref(""),s=a.computed(()=>(i.value.forEach((P,$)=>{if(P.id===l.value)return $}),-1)),u=a.computed({get:()=>{const P=e.modelValue;for(const $ of P)$.data={},$.type==="input"?($.data.hasInput=!1,$.data.hasOutput=!0):$.type==="output"?($.data.hasInput=!0,$.data.hasOutput=!1):($.data.hasInput=!0,$.data.hasOutput=!0),$.class="vue-flow__node-default",$.type="editable";for(const $ of P)$.events={click:()=>{l.value=$.id}};return P},set:P=>{n("update:modelValue",JSON.parse(JSON.stringify(P)))}}),{addEdges:c,removeEdges:d}=de();a.onMounted(()=>{document.removeEventListener("keypress",N),document.addEventListener("keypress",N)}),a.onBeforeUnmount(()=>{document.removeEventListener("keypress",N)});const f=P=>{r.value=P};i.value=u.value;const h=P=>({[z.Top]:z.Right,[z.Right]:z.Bottom,[z.Bottom]:z.Left,[z.Left]:z.Top})[P],p=()=>{if(s.value>-1){const P=i.value[s.value];if(!P.sourcePosition)return;P.sourcePosition=h(P.sourcePosition)}},b=()=>{if(s.value>-1){const P=i.value[s.value];if(!P.targetPosition)return;P.targetPosition=h(P.targetPosition)}},x=P=>{window.scrollBy(0,P.deltaY)},N=P=>{o.value&&P.ctrlKey==!0&&((P.key=="+"||P.key=="=")&&r.value?.zoomIn(),P.key=="-"&&r.value?.zoomOut())},k=async()=>{await r.value?.fitView()},M=()=>{let P=!1,$={x:Math.random()*200,y:Math.random()*200};if(s.value>-1){const F=i.value[s.value];F.data?.hasOutput&&($={x:F.position.x+200,y:F.position.y+50},P=!0)}const B=i.value.length,K=`node-${B}`;if(i.value.push({id:K,label:"Node "+B,sourcePosition:z.Right,targetPosition:z.Left,class:"vue-flow__node-default",type:"editable",data:{hasInput:!0,hasOutput:!0},events:{click:()=>{l.value=K}},position:$}),P){let F=`edge-${B+1}`;i.value.push({id:F,source:l.value,target:K,type:"editable",label:`EDGE ${B+1}`,animated:!0,events:{click:()=>{l.value=F}}})}},_=(P,$)=>{for(let B=0;B<i.value.length;B++)if(i.value[B].id==$){i.value[B].label=P;break}},C=P=>{const B={id:`edge-${i.value.length}`,source:P.source,target:P.target,type:"editable",label:"New Edge",interactionWidth:400,animated:!0,events:{click:()=>{l.value=B.id}}};c([B])},A=P=>{d(P.edge.id)};return(P,$)=>(a.openBlock(),a.createElementBlock("div",{class:a.normalizeClass(["node-editor-wrapper",e.nodeContainerClass]),onMouseover:$[1]||($[1]=B=>o.value=!0),onMouseleave:$[2]||($[2]=B=>o.value=!1)},[a.createElementVNode("div",Xc,[a.createElementVNode("div",Uc,[a.createElementVNode("div",null,[$[3]||($[3]=a.createElementVNode("b",null,"Selected Node:",-1)),a.createTextVNode(" "+a.toDisplayString(l.value?l.value:"none"),1)])]),a.createElementVNode("div",Zc,[a.createElementVNode("div",null,[a.createElementVNode("button",{class:"button-default",onClick:M},"Add Node")]),a.createElementVNode("div",null,[a.createElementVNode("button",{class:"button-default",onClick:k},"Center")]),s.value>-1?(a.openBlock(),a.createElementBlock("div",Wc,[a.createElementVNode("button",{class:"button-default",onClick:b},"Shift Input Position")])):a.createCommentVNode("",!0),s.value>-1?(a.openBlock(),a.createElementBlock("div",Kc,[a.createElementVNode("button",{class:"button-default",onClick:p},"Shift Output Position")])):a.createCommentVNode("",!0)])]),i.value&&i.value.length?(a.openBlock(),a.createBlock(a.unref(Oc),{key:0,modelValue:i.value,"onUpdate:modelValue":$[0]||($[0]=B=>i.value=B),class:"nowheel","prevent-scrolling":!0,"zoom-on-scroll":!1,"fit-view-on-init":!0,onConnect:C,onPaneReady:f,onEdgeContextMenu:A,onWheel:a.withModifiers(x,["prevent"])},{"node-editable":a.withCtx(B=>[a.createVNode(Gc,a.mergeProps(B,{onChange:K=>_(K,B.id)}),null,16,["onChange"])]),"edge-editable":a.withCtx(B=>[a.createVNode(Fc,a.mergeProps(B,{onChange:K=>_(K,B.id)}),null,16,["onChange"])]),_:1},8,["modelValue"])):a.createCommentVNode("",!0)],34))}}),Vi=a.defineComponent({__name:"StateEditor",props:a.mergeModels({layout:{},nodeContainerClass:{default:""}},{modelValue:{},modelModifiers:{}}),emits:a.mergeModels(["update:modelValue"],["update:modelValue"]),setup(e,{emit:t}){const n=t,o=a.useModel(e,"modelValue"),i=a.computed({get:()=>{const l={},s=[],u={};if(!o.value)return s;let c=0;for(const[d,f]of Object.entries(o.value)){const h={id:d,label:d,position:e.layout[d]?.position||{x:200*c,y:100},targetPosition:e.layout[d]?.targetPosition||z.Left,sourcePosition:e.layout[d]?.sourcePosition||z.Right};f?.type==="final"&&(h.type="output",h.class="default-output-node"),u[d]=h}for(const[d,f]of Object.entries(o.value)){if(f?.on)for(const[h,p]of Object.entries(f.on)){const b=p.target||p;s.push({id:`${d}-${b}`,source:d,target:b,label:h,animated:!0,type:"smoothstep"}),l[b]=!0}c++}for(const[d,f]of Object.entries(u))l[d]||(f.type="input",f.class="default-input-node"),s.push(f);return s},set:l=>{r(l)}}),r=l=>{const s={},u={},c={};for(const d of l){const f=d.label;d.type==="input"?c[f]={on:{}}:d.type==="output"?c[f]={type:"final"}:d.source&&d.target?(s[d.source]=s[d.source]||{},s[d.source][f]={target:d.target}):c[f]={on:{}},u[d.id]=f}for(const[d,f]of Object.entries(s)){const h=u[d];for(const[p,b]of Object.entries(f))c[h]||(c[h]={on:{}}),c[h].on[p]=b}n("update:modelValue",c)};return(l,s)=>(a.openBlock(),a.createElementBlock("div",null,[a.createVNode(Hn,{modelValue:i.value,"onUpdate:modelValue":s[0]||(s[0]=u=>i.value=u),"node-container-class":e.nodeContainerClass},null,8,["modelValue","node-container-class"])]))}});function qc(e){e.component("NodeEditor",Hn),e.component("StateEditor",Vi)}Ce.NodeEditor=Hn,Ce.StateEditor=Vi,Ce.install=qc,Object.defineProperty(Ce,Symbol.toStringTag,{value:"Module"})}));
27
27
  //# sourceMappingURL=node-editor.umd.cjs.map