mirror of
https://github.com/bunny-lab-io/Borealis.git
synced 2026-02-06 07:10:31 -07:00
2 lines
85 KiB
JavaScript
2 lines
85 KiB
JavaScript
import{r as y,a as b}from"./react-CcTm0Ooe.js";import"./d3-transition-CT0P4Hy_.js";import{i as Oe,z as Lo}from"./d3-zoom-C9ulvfG5.js";import{c as le}from"./classcat-RvS1aOr8.js";import{u as Vo,c as Fo,s as se}from"./zustand-C9Nr5JuV.js";import"./react-dom-BH-0RoFc.js";import{s as pn,p as Yo}from"./d3-selection-DSeOx27A.js";import{d as Oo}from"./d3-drag-CKshNLwO.js";const dt=y.createContext(null),Uo=dt.Provider,xe={error001:()=>"[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001",error002:()=>"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.",error003:e=>`Node type "${e}" not found. Using fallback type "default".`,error004:()=>"The React Flow parent container needs a width and a height to render the graph.",error005:()=>"Only child nodes can use a parent extent.",error006:()=>"Can't create edge. An edge needs a source and a target.",error007:e=>`The old edge with id=${e} does not exist.`,error009:e=>`Marker type "${e}" doesn't exist.`,error008:(e,t)=>`Couldn't create edge for ${e?"target":"source"} handle id: "${e?t.targetHandle:t.sourceHandle}", edge id: ${t.id}.`,error010:()=>"Handle: No node id found. Make sure to only use a Handle inside a custom Node.",error011:e=>`Edge type "${e}" not found. Using fallback type "default".`,error012:e=>`Node with id "${e}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`},mn=xe.error001();function q(e,t){const n=y.useContext(dt);if(n===null)throw new Error(mn);return Vo(n,e,t)}const ne=()=>{const e=y.useContext(dt);if(e===null)throw new Error(mn);return y.useMemo(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe,destroy:e.destroy}),[e])},Zo=e=>e.userSelectionActive?"none":"all";function Xo({position:e,children:t,className:n,style:o,...s}){const i=q(Zo),r=`${e}`.split("-");return b.createElement("div",{className:le(["react-flow__panel",n,...r]),style:{...o,pointerEvents:i},...s},t)}function Wo({proOptions:e,position:t="bottom-right"}){return e!=null&&e.hideAttribution?null:b.createElement(Xo,{position:t,className:"react-flow__attribution","data-message":"Please only hide this attribution when you are subscribed to React Flow Pro: https://reactflow.dev/pro"},b.createElement("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution"},"React Flow"))}const Go=({x:e,y:t,label:n,labelStyle:o={},labelShowBg:s=!0,labelBgStyle:i={},labelBgPadding:r=[2,4],labelBgBorderRadius:c=2,children:l,className:u,...a})=>{const d=y.useRef(null),[p,f]=y.useState({x:0,y:0,width:0,height:0}),w=le(["react-flow__edge-textwrapper",u]);return y.useEffect(()=>{if(d.current){const g=d.current.getBBox();f({x:g.x,y:g.y,width:g.width,height:g.height})}},[n]),typeof n>"u"||!n?null:b.createElement("g",{transform:`translate(${e-p.width/2} ${t-p.height/2})`,className:w,visibility:p.width?"visible":"hidden",...a},s&&b.createElement("rect",{width:p.width+2*r[0],x:-r[0],y:-r[1],height:p.height+2*r[1],className:"react-flow__edge-textbg",style:i,rx:c,ry:c}),b.createElement("text",{className:"react-flow__edge-text",y:p.height/2,dy:"0.3em",ref:d,style:o},n),l)};var Ko=y.memo(Go);const It=e=>({width:e.offsetWidth,height:e.offsetHeight}),Xe=(e,t=0,n=1)=>Math.min(Math.max(e,t),n),Tt=(e={x:0,y:0},t)=>({x:Xe(e.x,t[0][0],t[1][0]),y:Xe(e.y,t[0][1],t[1][1])}),Ut=(e,t,n)=>e<t?Xe(Math.abs(e-t),1,50)/50:e>n?-Xe(Math.abs(e-n),1,50)/50:0,hn=(e,t)=>{const n=Ut(e.x,35,t.width-35)*20,o=Ut(e.y,35,t.height-35)*20;return[n,o]},yn=e=>{var t;return((t=e.getRootNode)==null?void 0:t.call(e))||(window==null?void 0:window.document)},jo=(e,t)=>({x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),x2:Math.max(e.x2,t.x2),y2:Math.max(e.y2,t.y2)}),_t=({x:e,y:t,width:n,height:o})=>({x:e,y:t,x2:e+n,y2:t+o}),qo=({x:e,y:t,x2:n,y2:o})=>({x:e,y:t,width:n-e,height:o-t}),Zt=e=>({...e.positionAbsolute||{x:0,y:0},width:e.width||0,height:e.height||0}),St=(e,t)=>{const n=Math.max(0,Math.min(e.x+e.width,t.x+t.width)-Math.max(e.x,t.x)),o=Math.max(0,Math.min(e.y+e.height,t.y+t.height)-Math.max(e.y,t.y));return Math.ceil(n*o)},Qo=e=>ae(e.width)&&ae(e.height)&&ae(e.x)&&ae(e.y),ae=e=>!isNaN(e)&&isFinite(e),j=Symbol.for("internals"),xn=["Enter"," ","Escape"],Jo=(e,t)=>{},es=e=>"nativeEvent"in e;function bt(e){var s,i;const t=es(e)?e.nativeEvent:e,n=((i=(s=t.composedPath)==null?void 0:s.call(t))==null?void 0:i[0])||e.target;return["INPUT","SELECT","TEXTAREA"].includes(n==null?void 0:n.nodeName)||(n==null?void 0:n.hasAttribute("contenteditable"))||!!(n!=null&&n.closest(".nokey"))}const wn=e=>"clientX"in e,be=(e,t)=>{var i,r;const n=wn(e),o=n?e.clientX:(i=e.touches)==null?void 0:i[0].clientX,s=n?e.clientY:(r=e.touches)==null?void 0:r[0].clientY;return{x:o-((t==null?void 0:t.left)??0),y:s-((t==null?void 0:t.top)??0)}},ct=()=>{var e;return typeof navigator<"u"&&((e=navigator==null?void 0:navigator.userAgent)==null?void 0:e.indexOf("Mac"))>=0},nt=({id:e,path:t,labelX:n,labelY:o,label:s,labelStyle:i,labelShowBg:r,labelBgStyle:c,labelBgPadding:l,labelBgBorderRadius:u,style:a,markerEnd:d,markerStart:p,interactionWidth:f=20})=>b.createElement(b.Fragment,null,b.createElement("path",{id:e,style:a,d:t,fill:"none",className:"react-flow__edge-path",markerEnd:d,markerStart:p}),f&&b.createElement("path",{d:t,fill:"none",strokeOpacity:0,strokeWidth:f,className:"react-flow__edge-interaction"}),s&&ae(n)&&ae(o)?b.createElement(Ko,{x:n,y:o,label:s,labelStyle:i,labelShowBg:r,labelBgStyle:c,labelBgPadding:l,labelBgBorderRadius:u}):null);nt.displayName="BaseEdge";function qe(e,t,n){return n===void 0?n:o=>{const s=t().edges.find(i=>i.id===e);s&&n(o,{...s})}}function En({sourceX:e,sourceY:t,targetX:n,targetY:o}){const s=Math.abs(n-e)/2,i=n<e?n+s:n-s,r=Math.abs(o-t)/2,c=o<t?o+r:o-r;return[i,c,s,r]}function Sn({sourceX:e,sourceY:t,targetX:n,targetY:o,sourceControlX:s,sourceControlY:i,targetControlX:r,targetControlY:c}){const l=e*.125+s*.375+r*.375+n*.125,u=t*.125+i*.375+c*.375+o*.125,a=Math.abs(l-e),d=Math.abs(u-t);return[l,u,a,d]}var Pe;(function(e){e.Strict="strict",e.Loose="loose"})(Pe||(Pe={}));var _e;(function(e){e.Free="free",e.Vertical="vertical",e.Horizontal="horizontal"})(_e||(_e={}));var et;(function(e){e.Partial="partial",e.Full="full"})(et||(et={}));var Se;(function(e){e.Bezier="default",e.Straight="straight",e.Step="step",e.SmoothStep="smoothstep",e.SimpleBezier="simplebezier"})(Se||(Se={}));var at;(function(e){e.Arrow="arrow",e.ArrowClosed="arrowclosed"})(at||(at={}));var L;(function(e){e.Left="left",e.Top="top",e.Right="right",e.Bottom="bottom"})(L||(L={}));function Xt({pos:e,x1:t,y1:n,x2:o,y2:s}){return e===L.Left||e===L.Right?[.5*(t+o),n]:[t,.5*(n+s)]}function bn({sourceX:e,sourceY:t,sourcePosition:n=L.Bottom,targetX:o,targetY:s,targetPosition:i=L.Top}){const[r,c]=Xt({pos:n,x1:e,y1:t,x2:o,y2:s}),[l,u]=Xt({pos:i,x1:o,y1:s,x2:e,y2:t}),[a,d,p,f]=Sn({sourceX:e,sourceY:t,targetX:o,targetY:s,sourceControlX:r,sourceControlY:c,targetControlX:l,targetControlY:u});return[`M${e},${t} C${r},${c} ${l},${u} ${o},${s}`,a,d,p,f]}const Pt=y.memo(({sourceX:e,sourceY:t,targetX:n,targetY:o,sourcePosition:s=L.Bottom,targetPosition:i=L.Top,label:r,labelStyle:c,labelShowBg:l,labelBgStyle:u,labelBgPadding:a,labelBgBorderRadius:d,style:p,markerEnd:f,markerStart:w,interactionWidth:g})=>{const[h,m,x]=bn({sourceX:e,sourceY:t,sourcePosition:s,targetX:n,targetY:o,targetPosition:i});return b.createElement(nt,{path:h,labelX:m,labelY:x,label:r,labelStyle:c,labelShowBg:l,labelBgStyle:u,labelBgPadding:a,labelBgBorderRadius:d,style:p,markerEnd:f,markerStart:w,interactionWidth:g})});Pt.displayName="SimpleBezierEdge";const Wt={[L.Left]:{x:-1,y:0},[L.Right]:{x:1,y:0},[L.Top]:{x:0,y:-1},[L.Bottom]:{x:0,y:1}},ts=({source:e,sourcePosition:t=L.Bottom,target:n})=>t===L.Left||t===L.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},Gt=(e,t)=>Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2));function ns({source:e,sourcePosition:t=L.Bottom,target:n,targetPosition:o=L.Top,center:s,offset:i}){const r=Wt[t],c=Wt[o],l={x:e.x+r.x*i,y:e.y+r.y*i},u={x:n.x+c.x*i,y:n.y+c.y*i},a=ts({source:l,sourcePosition:t,target:u}),d=a.x!==0?"x":"y",p=a[d];let f=[],w,g;const h={x:0,y:0},m={x:0,y:0},[x,N,M,I]=En({sourceX:e.x,sourceY:e.y,targetX:n.x,targetY:n.y});if(r[d]*c[d]===-1){w=s.x??x,g=s.y??N;const z=[{x:w,y:l.y},{x:w,y:u.y}],k=[{x:l.x,y:g},{x:u.x,y:g}];r[d]===p?f=d==="x"?z:k:f=d==="x"?k:z}else{const z=[{x:l.x,y:u.y}],k=[{x:u.x,y:l.y}];if(d==="x"?f=r.x===p?k:z:f=r.y===p?z:k,t===o){const $=Math.abs(e[d]-n[d]);if($<=i){const E=Math.min(i-1,i-$);r[d]===p?h[d]=(l[d]>e[d]?-1:1)*E:m[d]=(u[d]>n[d]?-1:1)*E}}if(t!==o){const $=d==="x"?"y":"x",E=r[d]===c[$],C=l[$]>u[$],B=l[$]<u[$];(r[d]===1&&(!E&&C||E&&B)||r[d]!==1&&(!E&&B||E&&C))&&(f=d==="x"?z:k)}const A={x:l.x+h.x,y:l.y+h.y},T={x:u.x+m.x,y:u.y+m.y},v=Math.max(Math.abs(A.x-f[0].x),Math.abs(T.x-f[0].x)),P=Math.max(Math.abs(A.y-f[0].y),Math.abs(T.y-f[0].y));v>=P?(w=(A.x+T.x)/2,g=f[0].y):(w=f[0].x,g=(A.y+T.y)/2)}return[[e,{x:l.x+h.x,y:l.y+h.y},...f,{x:u.x+m.x,y:u.y+m.y},n],w,g,M,I]}function os(e,t,n,o){const s=Math.min(Gt(e,t)/2,Gt(t,n)/2,o),{x:i,y:r}=t;if(e.x===i&&i===n.x||e.y===r&&r===n.y)return`L${i} ${r}`;if(e.y===r){const u=e.x<n.x?-1:1,a=e.y<n.y?1:-1;return`L ${i+s*u},${r}Q ${i},${r} ${i},${r+s*a}`}const c=e.x<n.x?1:-1,l=e.y<n.y?-1:1;return`L ${i},${r+s*l}Q ${i},${r} ${i+s*c},${r}`}function Nt({sourceX:e,sourceY:t,sourcePosition:n=L.Bottom,targetX:o,targetY:s,targetPosition:i=L.Top,borderRadius:r=5,centerX:c,centerY:l,offset:u=20}){const[a,d,p,f,w]=ns({source:{x:e,y:t},sourcePosition:n,target:{x:o,y:s},targetPosition:i,center:{x:c,y:l},offset:u});return[a.reduce((h,m,x)=>{let N="";return x>0&&x<a.length-1?N=os(a[x-1],m,a[x+1],r):N=`${x===0?"M":"L"}${m.x} ${m.y}`,h+=N,h},""),d,p,f,w]}const ft=y.memo(({sourceX:e,sourceY:t,targetX:n,targetY:o,label:s,labelStyle:i,labelShowBg:r,labelBgStyle:c,labelBgPadding:l,labelBgBorderRadius:u,style:a,sourcePosition:d=L.Bottom,targetPosition:p=L.Top,markerEnd:f,markerStart:w,pathOptions:g,interactionWidth:h})=>{const[m,x,N]=Nt({sourceX:e,sourceY:t,sourcePosition:d,targetX:n,targetY:o,targetPosition:p,borderRadius:g==null?void 0:g.borderRadius,offset:g==null?void 0:g.offset});return b.createElement(nt,{path:m,labelX:x,labelY:N,label:s,labelStyle:i,labelShowBg:r,labelBgStyle:c,labelBgPadding:l,labelBgBorderRadius:u,style:a,markerEnd:f,markerStart:w,interactionWidth:h})});ft.displayName="SmoothStepEdge";const Dt=y.memo(e=>{var t;return b.createElement(ft,{...e,pathOptions:y.useMemo(()=>{var n;return{borderRadius:0,offset:(n=e.pathOptions)==null?void 0:n.offset}},[(t=e.pathOptions)==null?void 0:t.offset])})});Dt.displayName="StepEdge";function ss({sourceX:e,sourceY:t,targetX:n,targetY:o}){const[s,i,r,c]=En({sourceX:e,sourceY:t,targetX:n,targetY:o});return[`M ${e},${t}L ${n},${o}`,s,i,r,c]}const Rt=y.memo(({sourceX:e,sourceY:t,targetX:n,targetY:o,label:s,labelStyle:i,labelShowBg:r,labelBgStyle:c,labelBgPadding:l,labelBgBorderRadius:u,style:a,markerEnd:d,markerStart:p,interactionWidth:f})=>{const[w,g,h]=ss({sourceX:e,sourceY:t,targetX:n,targetY:o});return b.createElement(nt,{path:w,labelX:g,labelY:h,label:s,labelStyle:i,labelShowBg:r,labelBgStyle:c,labelBgPadding:l,labelBgBorderRadius:u,style:a,markerEnd:d,markerStart:p,interactionWidth:f})});Rt.displayName="StraightEdge";function ot(e,t){return e>=0?.5*e:t*25*Math.sqrt(-e)}function Kt({pos:e,x1:t,y1:n,x2:o,y2:s,c:i}){switch(e){case L.Left:return[t-ot(t-o,i),n];case L.Right:return[t+ot(o-t,i),n];case L.Top:return[t,n-ot(n-s,i)];case L.Bottom:return[t,n+ot(s-n,i)]}}function Nn({sourceX:e,sourceY:t,sourcePosition:n=L.Bottom,targetX:o,targetY:s,targetPosition:i=L.Top,curvature:r=.25}){const[c,l]=Kt({pos:n,x1:e,y1:t,x2:o,y2:s,c:r}),[u,a]=Kt({pos:i,x1:o,y1:s,x2:e,y2:t,c:r}),[d,p,f,w]=Sn({sourceX:e,sourceY:t,targetX:o,targetY:s,sourceControlX:c,sourceControlY:l,targetControlX:u,targetControlY:a});return[`M${e},${t} C${c},${l} ${u},${a} ${o},${s}`,d,p,f,w]}const lt=y.memo(({sourceX:e,sourceY:t,targetX:n,targetY:o,sourcePosition:s=L.Bottom,targetPosition:i=L.Top,label:r,labelStyle:c,labelShowBg:l,labelBgStyle:u,labelBgPadding:a,labelBgBorderRadius:d,style:p,markerEnd:f,markerStart:w,pathOptions:g,interactionWidth:h})=>{const[m,x,N]=Nn({sourceX:e,sourceY:t,sourcePosition:s,targetX:n,targetY:o,targetPosition:i,curvature:g==null?void 0:g.curvature});return b.createElement(nt,{path:m,labelX:x,labelY:N,label:r,labelStyle:c,labelShowBg:l,labelBgStyle:u,labelBgPadding:a,labelBgBorderRadius:d,style:p,markerEnd:f,markerStart:w,interactionWidth:h})});lt.displayName="BezierEdge";const kt=y.createContext(null),rs=kt.Provider;kt.Consumer;const is=()=>y.useContext(kt),cs=e=>"id"in e&&"source"in e&&"target"in e,as=({source:e,sourceHandle:t,target:n,targetHandle:o})=>`reactflow__edge-${e}${t||""}-${n}${o||""}`,At=(e,t)=>typeof e>"u"?"":typeof e=="string"?e:`${t?`${t}__`:""}${Object.keys(e).sort().map(o=>`${o}=${e[o]}`).join("&")}`,ls=(e,t)=>t.some(n=>n.source===e.source&&n.target===e.target&&(n.sourceHandle===e.sourceHandle||!n.sourceHandle&&!e.sourceHandle)&&(n.targetHandle===e.targetHandle||!n.targetHandle&&!e.targetHandle)),us=(e,t)=>{if(!e.source||!e.target)return t;let n;return cs(e)?n={...e}:n={...e,id:as(e)},ls(n,t)?t:t.concat(n)},Mt=({x:e,y:t},[n,o,s],i,[r,c])=>{const l={x:(e-n)/s,y:(t-o)/s};return i?{x:r*Math.round(l.x/r),y:c*Math.round(l.y/c)}:l},An=({x:e,y:t},[n,o,s])=>({x:e*s+n,y:t*s+o}),Ue=(e,t=[0,0])=>{if(!e)return{x:0,y:0,positionAbsolute:{x:0,y:0}};const n=(e.width??0)*t[0],o=(e.height??0)*t[1],s={x:e.position.x-n,y:e.position.y-o};return{...s,positionAbsolute:e.positionAbsolute?{x:e.positionAbsolute.x-n,y:e.positionAbsolute.y-o}:s}},Ht=(e,t=[0,0])=>{if(e.length===0)return{x:0,y:0,width:0,height:0};const n=e.reduce((o,s)=>{const{x:i,y:r}=Ue(s,t).positionAbsolute;return jo(o,_t({x:i,y:r,width:s.width||0,height:s.height||0}))},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return qo(n)},Mn=(e,t,[n,o,s]=[0,0,1],i=!1,r=!1,c=[0,0])=>{const l={x:(t.x-n)/s,y:(t.y-o)/s,width:t.width/s,height:t.height/s},u=[];return e.forEach(a=>{const{width:d,height:p,selectable:f=!0,hidden:w=!1}=a;if(r&&!f||w)return!1;const{positionAbsolute:g}=Ue(a,c),h={x:g.x,y:g.y,width:d||0,height:p||0},m=St(l,h),x=typeof d>"u"||typeof p>"u"||d===null||p===null,N=i&&m>0,M=(d||0)*(p||0);(x||N||m>=M||a.dragging)&&u.push(a)}),u},$n=(e,t)=>{const n=e.map(o=>o.id);return t.filter(o=>n.includes(o.source)||n.includes(o.target))},Cn=(e,t,n,o,s,i=.1)=>{const r=t/(e.width*(1+i)),c=n/(e.height*(1+i)),l=Math.min(r,c),u=Xe(l,o,s),a=e.x+e.width/2,d=e.y+e.height/2,p=t/2-a*u,f=n/2-d*u;return{x:p,y:f,zoom:u}},Te=(e,t=0)=>e.transition().duration(t);function jt(e,t,n,o){return(t[n]||[]).reduce((s,i)=>{var r,c;return`${e.id}-${i.id}-${n}`!==o&&s.push({id:i.id||null,type:n,nodeId:e.id,x:(((r=e.positionAbsolute)==null?void 0:r.x)??0)+i.x+i.width/2,y:(((c=e.positionAbsolute)==null?void 0:c.y)??0)+i.y+i.height/2}),s},[])}function ds(e,t,n,o,s,i){const{x:r,y:c}=be(e),u=t.elementsFromPoint(r,c).find(w=>w.classList.contains("react-flow__handle"));if(u){const w=u.getAttribute("data-nodeid");if(w){const g=zt(void 0,u),h=u.getAttribute("data-handleid"),m=i({nodeId:w,id:h,type:g});if(m){const x=s.find(N=>N.nodeId===w&&N.type===g&&N.id===h);return{handle:{id:h,type:g,nodeId:w,x:(x==null?void 0:x.x)||n.x,y:(x==null?void 0:x.y)||n.y},validHandleResult:m}}}}let a=[],d=1/0;if(s.forEach(w=>{const g=Math.sqrt((w.x-n.x)**2+(w.y-n.y)**2);if(g<=o){const h=i(w);g<=d&&(g<d?a=[{handle:w,validHandleResult:h}]:g===d&&a.push({handle:w,validHandleResult:h}),d=g)}}),!a.length)return{handle:null,validHandleResult:vn()};if(a.length===1)return a[0];const p=a.some(({validHandleResult:w})=>w.isValid),f=a.some(({handle:w})=>w.type==="target");return a.find(({handle:w,validHandleResult:g})=>f?w.type==="target":p?g.isValid:!0)||a[0]}const fs={source:null,target:null,sourceHandle:null,targetHandle:null},vn=()=>({handleDomNode:null,isValid:!1,connection:fs,endHandle:null});function In(e,t,n,o,s,i,r){const c=s==="target",l=r.querySelector(`.react-flow__handle[data-id="${e==null?void 0:e.nodeId}-${e==null?void 0:e.id}-${e==null?void 0:e.type}"]`),u={...vn(),handleDomNode:l};if(l){const a=zt(void 0,l),d=l.getAttribute("data-nodeid"),p=l.getAttribute("data-handleid"),f=l.classList.contains("connectable"),w=l.classList.contains("connectableend"),g={source:c?d:n,sourceHandle:c?p:o,target:c?n:d,targetHandle:c?o:p};u.connection=g,f&&w&&(t===Pe.Strict?c&&a==="source"||!c&&a==="target":d!==n||p!==o)&&(u.endHandle={nodeId:d,handleId:p,type:a},u.isValid=i(g))}return u}function gs({nodes:e,nodeId:t,handleId:n,handleType:o}){return e.reduce((s,i)=>{if(i[j]){const{handleBounds:r}=i[j];let c=[],l=[];r&&(c=jt(i,r,"source",`${t}-${n}-${o}`),l=jt(i,r,"target",`${t}-${n}-${o}`)),s.push(...c,...l)}return s},[])}function zt(e,t){return e||(t!=null&&t.classList.contains("target")?"target":t!=null&&t.classList.contains("source")?"source":null)}function ht(e){e==null||e.classList.remove("valid","connecting","react-flow__handle-valid","react-flow__handle-connecting")}function ps(e,t){let n=null;return t?n="valid":e&&!t&&(n="invalid"),n}function Tn({event:e,handleId:t,nodeId:n,onConnect:o,isTarget:s,getState:i,setState:r,isValidConnection:c,edgeUpdaterType:l,onReconnectEnd:u}){const a=yn(e.target),{connectionMode:d,domNode:p,autoPanOnConnect:f,connectionRadius:w,onConnectStart:g,panBy:h,getNodes:m,cancelConnection:x}=i();let N=0,M;const{x:I,y:H}=be(e),z=a==null?void 0:a.elementFromPoint(I,H),k=zt(l,z),A=p==null?void 0:p.getBoundingClientRect();if(!A||!k)return;let T,v=be(e,A),P=!1,$=null,E=!1,C=null;const B=gs({nodes:m(),nodeId:n,handleId:t,handleType:k}),O=()=>{if(!f)return;const[D,R]=hn(v,A);h({x:D,y:R}),N=requestAnimationFrame(O)};r({connectionPosition:v,connectionStatus:null,connectionNodeId:n,connectionHandleId:t,connectionHandleType:k,connectionStartHandle:{nodeId:n,handleId:t,type:k},connectionEndHandle:null}),g==null||g(e,{nodeId:n,handleId:t,handleType:k});function Y(D){const{transform:R}=i();v=be(D,A);const{handle:_,validHandleResult:F}=ds(D,a,Mt(v,R,!1,[1,1]),w,B,U=>In(U,d,n,t,s?"target":"source",c,a));if(M=_,P||(O(),P=!0),C=F.handleDomNode,$=F.connection,E=F.isValid,r({connectionPosition:M&&E?An({x:M.x,y:M.y},R):v,connectionStatus:ps(!!M,E),connectionEndHandle:F.endHandle}),!M&&!E&&!C)return ht(T);$.source!==$.target&&C&&(ht(T),T=C,C.classList.add("connecting","react-flow__handle-connecting"),C.classList.toggle("valid",E),C.classList.toggle("react-flow__handle-valid",E))}function S(D){var R,_;(M||C)&&$&&E&&(o==null||o($)),(_=(R=i()).onConnectEnd)==null||_.call(R,D),l&&(u==null||u(D)),ht(T),x(),cancelAnimationFrame(N),P=!1,E=!1,$=null,C=null,a.removeEventListener("mousemove",Y),a.removeEventListener("mouseup",S),a.removeEventListener("touchmove",Y),a.removeEventListener("touchend",S)}a.addEventListener("mousemove",Y),a.addEventListener("mouseup",S),a.addEventListener("touchmove",Y),a.addEventListener("touchend",S)}const qt=()=>!0,ms=e=>({connectionStartHandle:e.connectionStartHandle,connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName}),hs=(e,t,n)=>o=>{const{connectionStartHandle:s,connectionEndHandle:i,connectionClickStartHandle:r}=o;return{connecting:(s==null?void 0:s.nodeId)===e&&(s==null?void 0:s.handleId)===t&&(s==null?void 0:s.type)===n||(i==null?void 0:i.nodeId)===e&&(i==null?void 0:i.handleId)===t&&(i==null?void 0:i.type)===n,clickConnecting:(r==null?void 0:r.nodeId)===e&&(r==null?void 0:r.handleId)===t&&(r==null?void 0:r.type)===n}},_n=y.forwardRef(({type:e="source",position:t=L.Top,isValidConnection:n,isConnectable:o=!0,isConnectableStart:s=!0,isConnectableEnd:i=!0,id:r,onConnect:c,children:l,className:u,onMouseDown:a,onTouchStart:d,...p},f)=>{var A,T;const w=r||null,g=e==="target",h=ne(),m=is(),{connectOnClick:x,noPanClassName:N}=q(ms,se),{connecting:M,clickConnecting:I}=q(hs(m,w,e),se);m||(T=(A=h.getState()).onError)==null||T.call(A,"010",xe.error010());const H=v=>{const{defaultEdgeOptions:P,onConnect:$,hasDefaultEdges:E}=h.getState(),C={...P,...v};if(E){const{edges:B,setEdges:O}=h.getState();O(us(C,B))}$==null||$(C),c==null||c(C)},z=v=>{if(!m)return;const P=wn(v);s&&(P&&v.button===0||!P)&&Tn({event:v,handleId:w,nodeId:m,onConnect:H,isTarget:g,getState:h.getState,setState:h.setState,isValidConnection:n||h.getState().isValidConnection||qt}),P?a==null||a(v):d==null||d(v)},k=v=>{const{onClickConnectStart:P,onClickConnectEnd:$,connectionClickStartHandle:E,connectionMode:C,isValidConnection:B}=h.getState();if(!m||!E&&!s)return;if(!E){P==null||P(v,{nodeId:m,handleId:w,handleType:e}),h.setState({connectionClickStartHandle:{nodeId:m,type:e,handleId:w}});return}const O=yn(v.target),Y=n||B||qt,{connection:S,isValid:D}=In({nodeId:m,id:w,type:e},C,E.nodeId,E.handleId||null,E.type,Y,O);D&&H(S),$==null||$(v),h.setState({connectionClickStartHandle:null})};return b.createElement("div",{"data-handleid":w,"data-nodeid":m,"data-handlepos":t,"data-id":`${m}-${w}-${e}`,className:le(["react-flow__handle",`react-flow__handle-${t}`,"nodrag",N,u,{source:!g,target:g,connectable:o,connectablestart:s,connectableend:i,connecting:I,connectionindicator:o&&(s&&!M||i&&M)}]),onMouseDown:z,onTouchStart:z,onClick:x?k:void 0,ref:f,...p},l)});_n.displayName="Handle";var ut=y.memo(_n);const Pn=({data:e,isConnectable:t,targetPosition:n=L.Top,sourcePosition:o=L.Bottom})=>b.createElement(b.Fragment,null,b.createElement(ut,{type:"target",position:n,isConnectable:t}),e==null?void 0:e.label,b.createElement(ut,{type:"source",position:o,isConnectable:t}));Pn.displayName="DefaultNode";var $t=y.memo(Pn);const Dn=({data:e,isConnectable:t,sourcePosition:n=L.Bottom})=>b.createElement(b.Fragment,null,e==null?void 0:e.label,b.createElement(ut,{type:"source",position:n,isConnectable:t}));Dn.displayName="InputNode";var Rn=y.memo(Dn);const kn=({data:e,isConnectable:t,targetPosition:n=L.Top})=>b.createElement(b.Fragment,null,b.createElement(ut,{type:"target",position:n,isConnectable:t}),e==null?void 0:e.label);kn.displayName="OutputNode";var Hn=y.memo(kn);const Bt=()=>null;Bt.displayName="GroupNode";const ys=e=>({selectedNodes:e.getNodes().filter(t=>t.selected),selectedEdges:e.edges.filter(t=>t.selected).map(t=>({...t}))}),st=e=>e.id;function xs(e,t){return se(e.selectedNodes.map(st),t.selectedNodes.map(st))&&se(e.selectedEdges.map(st),t.selectedEdges.map(st))}const zn=y.memo(({onSelectionChange:e})=>{const t=ne(),{selectedNodes:n,selectedEdges:o}=q(ys,xs);return y.useEffect(()=>{const s={nodes:n,edges:o};e==null||e(s),t.getState().onSelectionChange.forEach(i=>i(s))},[n,o,e]),null});zn.displayName="SelectionListener";const ws=e=>!!e.onSelectionChange;function Es({onSelectionChange:e}){const t=q(ws);return e||t?b.createElement(zn,{onSelectionChange:e}):null}const Ss=e=>({setNodes:e.setNodes,setEdges:e.setEdges,setDefaultNodesAndEdges:e.setDefaultNodesAndEdges,setMinZoom:e.setMinZoom,setMaxZoom:e.setMaxZoom,setTranslateExtent:e.setTranslateExtent,setNodeExtent:e.setNodeExtent,reset:e.reset});function Be(e,t){y.useEffect(()=>{typeof e<"u"&&t(e)},[e])}function Z(e,t,n){y.useEffect(()=>{typeof t<"u"&&n({[e]:t})},[t])}const bs=({nodes:e,edges:t,defaultNodes:n,defaultEdges:o,onConnect:s,onConnectStart:i,onConnectEnd:r,onClickConnectStart:c,onClickConnectEnd:l,nodesDraggable:u,nodesConnectable:a,nodesFocusable:d,edgesFocusable:p,edgesUpdatable:f,elevateNodesOnSelect:w,minZoom:g,maxZoom:h,nodeExtent:m,onNodesChange:x,onEdgesChange:N,elementsSelectable:M,connectionMode:I,snapGrid:H,snapToGrid:z,translateExtent:k,connectOnClick:A,defaultEdgeOptions:T,fitView:v,fitViewOptions:P,onNodesDelete:$,onEdgesDelete:E,onNodeDrag:C,onNodeDragStart:B,onNodeDragStop:O,onSelectionDrag:Y,onSelectionDragStart:S,onSelectionDragStop:D,noPanClassName:R,nodeOrigin:_,rfId:F,autoPanOnConnect:U,autoPanOnNodeDrag:X,onError:K,connectionRadius:Q,isValidConnection:te,nodeDragThreshold:ee})=>{const{setNodes:W,setEdges:ue,setDefaultNodesAndEdges:ie,setMinZoom:de,setMaxZoom:ce,setTranslateExtent:J,setNodeExtent:pe,reset:G}=q(Ss,se),V=ne();return y.useEffect(()=>{const re=o==null?void 0:o.map(Ne=>({...Ne,...T}));return ie(n,re),()=>{G()}},[]),Z("defaultEdgeOptions",T,V.setState),Z("connectionMode",I,V.setState),Z("onConnect",s,V.setState),Z("onConnectStart",i,V.setState),Z("onConnectEnd",r,V.setState),Z("onClickConnectStart",c,V.setState),Z("onClickConnectEnd",l,V.setState),Z("nodesDraggable",u,V.setState),Z("nodesConnectable",a,V.setState),Z("nodesFocusable",d,V.setState),Z("edgesFocusable",p,V.setState),Z("edgesUpdatable",f,V.setState),Z("elementsSelectable",M,V.setState),Z("elevateNodesOnSelect",w,V.setState),Z("snapToGrid",z,V.setState),Z("snapGrid",H,V.setState),Z("onNodesChange",x,V.setState),Z("onEdgesChange",N,V.setState),Z("connectOnClick",A,V.setState),Z("fitViewOnInit",v,V.setState),Z("fitViewOnInitOptions",P,V.setState),Z("onNodesDelete",$,V.setState),Z("onEdgesDelete",E,V.setState),Z("onNodeDrag",C,V.setState),Z("onNodeDragStart",B,V.setState),Z("onNodeDragStop",O,V.setState),Z("onSelectionDrag",Y,V.setState),Z("onSelectionDragStart",S,V.setState),Z("onSelectionDragStop",D,V.setState),Z("noPanClassName",R,V.setState),Z("nodeOrigin",_,V.setState),Z("rfId",F,V.setState),Z("autoPanOnConnect",U,V.setState),Z("autoPanOnNodeDrag",X,V.setState),Z("onError",K,V.setState),Z("connectionRadius",Q,V.setState),Z("isValidConnection",te,V.setState),Z("nodeDragThreshold",ee,V.setState),Be(e,W),Be(t,ue),Be(g,de),Be(h,ce),Be(k,J),Be(m,pe),null},Qt={display:"none"},Ns={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},Bn="react-flow__node-desc",Ln="react-flow__edge-desc",As="react-flow__aria-live",Ms=e=>e.ariaLiveMessage;function $s({rfId:e}){const t=q(Ms);return b.createElement("div",{id:`${As}-${e}`,"aria-live":"assertive","aria-atomic":"true",style:Ns},t)}function Cs({rfId:e,disableKeyboardA11y:t}){return b.createElement(b.Fragment,null,b.createElement("div",{id:`${Bn}-${e}`,style:Qt},"Press enter or space to select a node.",!t&&"You can then use the arrow keys to move the node around."," Press delete to remove it and escape to cancel."," "),b.createElement("div",{id:`${Ln}-${e}`,style:Qt},"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel."),!t&&b.createElement($s,{rfId:e}))}var tt=(e=null,t={actInsideInputWithModifier:!0})=>{const[n,o]=y.useState(!1),s=y.useRef(!1),i=y.useRef(new Set([])),[r,c]=y.useMemo(()=>{if(e!==null){const u=(Array.isArray(e)?e:[e]).filter(d=>typeof d=="string").map(d=>d.split("+")),a=u.reduce((d,p)=>d.concat(...p),[]);return[u,a]}return[[],[]]},[e]);return y.useEffect(()=>{const l=typeof document<"u"?document:null,u=(t==null?void 0:t.target)||l;if(e!==null){const a=f=>{if(s.current=f.ctrlKey||f.metaKey||f.shiftKey,(!s.current||s.current&&!t.actInsideInputWithModifier)&&bt(f))return!1;const g=en(f.code,c);i.current.add(f[g]),Jt(r,i.current,!1)&&(f.preventDefault(),o(!0))},d=f=>{if((!s.current||s.current&&!t.actInsideInputWithModifier)&&bt(f))return!1;const g=en(f.code,c);Jt(r,i.current,!0)?(o(!1),i.current.clear()):i.current.delete(f[g]),f.key==="Meta"&&i.current.clear(),s.current=!1},p=()=>{i.current.clear(),o(!1)};return u==null||u.addEventListener("keydown",a),u==null||u.addEventListener("keyup",d),window.addEventListener("blur",p),()=>{u==null||u.removeEventListener("keydown",a),u==null||u.removeEventListener("keyup",d),window.removeEventListener("blur",p)}}},[e,o]),n};function Jt(e,t,n){return e.filter(o=>n||o.length===t.size).some(o=>o.every(s=>t.has(s)))}function en(e,t){return t.includes(e)?"code":"key"}function Vn(e,t,n,o){var c,l;const s=e.parentNode||e.parentId;if(!s)return n;const i=t.get(s),r=Ue(i,o);return Vn(i,t,{x:(n.x??0)+r.x,y:(n.y??0)+r.y,z:(((c=i[j])==null?void 0:c.z)??0)>(n.z??0)?((l=i[j])==null?void 0:l.z)??0:n.z??0},o)}function Fn(e,t,n){e.forEach(o=>{var i;const s=o.parentNode||o.parentId;if(s&&!e.has(s))throw new Error(`Parent node ${s} not found`);if(s||n!=null&&n[o.id]){const{x:r,y:c,z:l}=Vn(o,e,{...o.position,z:((i=o[j])==null?void 0:i.z)??0},t);o.positionAbsolute={x:r,y:c},o[j].z=l,n!=null&&n[o.id]&&(o[j].isParent=!0)}})}function yt(e,t,n,o){const s=new Map,i={},r=o?1e3:0;return e.forEach(c=>{var f;const l=(ae(c.zIndex)?c.zIndex:0)+(c.selected?r:0),u=t.get(c.id),a={...c,positionAbsolute:{x:c.position.x,y:c.position.y}},d=c.parentNode||c.parentId;d&&(i[d]=!0);const p=(u==null?void 0:u.type)&&(u==null?void 0:u.type)!==c.type;Object.defineProperty(a,j,{enumerable:!1,value:{handleBounds:p||(f=u==null?void 0:u[j])==null?void 0:f.handleBounds,z:l}}),s.set(c.id,a)}),Fn(s,n,i),s}function Yn(e,t={}){const{getNodes:n,width:o,height:s,minZoom:i,maxZoom:r,d3Zoom:c,d3Selection:l,fitViewOnInitDone:u,fitViewOnInit:a,nodeOrigin:d}=e(),p=t.initial&&!u&&a;if(c&&l&&(p||!t.initial)){const w=n().filter(h=>{var x;const m=t.includeHiddenNodes?h.width&&h.height:!h.hidden;return(x=t.nodes)!=null&&x.length?m&&t.nodes.some(N=>N.id===h.id):m}),g=w.every(h=>h.width&&h.height);if(w.length>0&&g){const h=Ht(w,d),{x:m,y:x,zoom:N}=Cn(h,o,s,t.minZoom??i,t.maxZoom??r,t.padding??.1),M=Oe.translate(m,x).scale(N);return typeof t.duration=="number"&&t.duration>0?c.transform(Te(l,t.duration),M):c.transform(l,M),!0}}return!1}function vs(e,t){return e.forEach(n=>{const o=t.get(n.id);o&&t.set(o.id,{...o,[j]:o[j],selected:n.selected})}),new Map(t)}function Is(e,t){return t.map(n=>{const o=e.find(s=>s.id===n.id);return o&&(n.selected=o.selected),n})}function rt({changedNodes:e,changedEdges:t,get:n,set:o}){const{nodeInternals:s,edges:i,onNodesChange:r,onEdgesChange:c,hasDefaultNodes:l,hasDefaultEdges:u}=n();e!=null&&e.length&&(l&&o({nodeInternals:vs(e,s)}),r==null||r(e)),t!=null&&t.length&&(u&&o({edges:Is(t,i)}),c==null||c(t))}const Le=()=>{},Ts={zoomIn:Le,zoomOut:Le,zoomTo:Le,getZoom:()=>1,setViewport:Le,getViewport:()=>({x:0,y:0,zoom:1}),fitView:()=>!1,setCenter:Le,fitBounds:Le,project:e=>e,screenToFlowPosition:e=>e,flowToScreenPosition:e=>e,viewportInitialized:!1},_s=e=>({d3Zoom:e.d3Zoom,d3Selection:e.d3Selection}),Ps=()=>{const e=ne(),{d3Zoom:t,d3Selection:n}=q(_s,se);return y.useMemo(()=>n&&t?{zoomIn:s=>t.scaleBy(Te(n,s==null?void 0:s.duration),1.2),zoomOut:s=>t.scaleBy(Te(n,s==null?void 0:s.duration),1/1.2),zoomTo:(s,i)=>t.scaleTo(Te(n,i==null?void 0:i.duration),s),getZoom:()=>e.getState().transform[2],setViewport:(s,i)=>{const[r,c,l]=e.getState().transform,u=Oe.translate(s.x??r,s.y??c).scale(s.zoom??l);t.transform(Te(n,i==null?void 0:i.duration),u)},getViewport:()=>{const[s,i,r]=e.getState().transform;return{x:s,y:i,zoom:r}},fitView:s=>Yn(e.getState,s),setCenter:(s,i,r)=>{const{width:c,height:l,maxZoom:u}=e.getState(),a=typeof(r==null?void 0:r.zoom)<"u"?r.zoom:u,d=c/2-s*a,p=l/2-i*a,f=Oe.translate(d,p).scale(a);t.transform(Te(n,r==null?void 0:r.duration),f)},fitBounds:(s,i)=>{const{width:r,height:c,minZoom:l,maxZoom:u}=e.getState(),{x:a,y:d,zoom:p}=Cn(s,r,c,l,u,(i==null?void 0:i.padding)??.1),f=Oe.translate(a,d).scale(p);t.transform(Te(n,i==null?void 0:i.duration),f)},project:s=>{const{transform:i,snapToGrid:r,snapGrid:c}=e.getState();return console.warn("[DEPRECATED] `project` is deprecated. Instead use `screenToFlowPosition`. There is no need to subtract the react flow bounds anymore! https://reactflow.dev/api-reference/types/react-flow-instance#screen-to-flow-position"),Mt(s,i,r,c)},screenToFlowPosition:s=>{const{transform:i,snapToGrid:r,snapGrid:c,domNode:l}=e.getState();if(!l)return s;const{x:u,y:a}=l.getBoundingClientRect(),d={x:s.x-u,y:s.y-a};return Mt(d,i,r,c)},flowToScreenPosition:s=>{const{transform:i,domNode:r}=e.getState();if(!r)return s;const{x:c,y:l}=r.getBoundingClientRect(),u=An(s,i);return{x:u.x+c,y:u.y+l}},viewportInitialized:!0}:Ts,[t,n])};function On(){const e=Ps(),t=ne(),n=y.useCallback(()=>t.getState().getNodes().map(g=>({...g})),[]),o=y.useCallback(g=>t.getState().nodeInternals.get(g),[]),s=y.useCallback(()=>{const{edges:g=[]}=t.getState();return g.map(h=>({...h}))},[]),i=y.useCallback(g=>{const{edges:h=[]}=t.getState();return h.find(m=>m.id===g)},[]),r=y.useCallback(g=>{const{getNodes:h,setNodes:m,hasDefaultNodes:x,onNodesChange:N}=t.getState(),M=h(),I=typeof g=="function"?g(M):g;if(x)m(I);else if(N){const H=I.length===0?M.map(z=>({type:"remove",id:z.id})):I.map(z=>({item:z,type:"reset"}));N(H)}},[]),c=y.useCallback(g=>{const{edges:h=[],setEdges:m,hasDefaultEdges:x,onEdgesChange:N}=t.getState(),M=typeof g=="function"?g(h):g;if(x)m(M);else if(N){const I=M.length===0?h.map(H=>({type:"remove",id:H.id})):M.map(H=>({item:H,type:"reset"}));N(I)}},[]),l=y.useCallback(g=>{const h=Array.isArray(g)?g:[g],{getNodes:m,setNodes:x,hasDefaultNodes:N,onNodesChange:M}=t.getState();if(N){const H=[...m(),...h];x(H)}else if(M){const I=h.map(H=>({item:H,type:"add"}));M(I)}},[]),u=y.useCallback(g=>{const h=Array.isArray(g)?g:[g],{edges:m=[],setEdges:x,hasDefaultEdges:N,onEdgesChange:M}=t.getState();if(N)x([...m,...h]);else if(M){const I=h.map(H=>({item:H,type:"add"}));M(I)}},[]),a=y.useCallback(()=>{const{getNodes:g,edges:h=[],transform:m}=t.getState(),[x,N,M]=m;return{nodes:g().map(I=>({...I})),edges:h.map(I=>({...I})),viewport:{x,y:N,zoom:M}}},[]),d=y.useCallback(({nodes:g,edges:h})=>{const{nodeInternals:m,getNodes:x,edges:N,hasDefaultNodes:M,hasDefaultEdges:I,onNodesDelete:H,onEdgesDelete:z,onNodesChange:k,onEdgesChange:A}=t.getState(),T=(g||[]).map(C=>C.id),v=(h||[]).map(C=>C.id),P=x().reduce((C,B)=>{const O=B.parentNode||B.parentId,Y=!T.includes(B.id)&&O&&C.find(D=>D.id===O);return(typeof B.deletable=="boolean"?B.deletable:!0)&&(T.includes(B.id)||Y)&&C.push(B),C},[]),$=N.filter(C=>typeof C.deletable=="boolean"?C.deletable:!0),E=$.filter(C=>v.includes(C.id));if(P||E){const C=$n(P,$),B=[...E,...C],O=B.reduce((Y,S)=>(Y.includes(S.id)||Y.push(S.id),Y),[]);if((I||M)&&(I&&t.setState({edges:N.filter(Y=>!O.includes(Y.id))}),M&&(P.forEach(Y=>{m.delete(Y.id)}),t.setState({nodeInternals:new Map(m)}))),O.length>0&&(z==null||z(B),A&&A(O.map(Y=>({id:Y,type:"remove"})))),P.length>0&&(H==null||H(P),k)){const Y=P.map(S=>({id:S.id,type:"remove"}));k(Y)}}},[]),p=y.useCallback(g=>{const h=Qo(g),m=h?null:t.getState().nodeInternals.get(g.id);return!h&&!m?[null,null,h]:[h?g:Zt(m),m,h]},[]),f=y.useCallback((g,h=!0,m)=>{const[x,N,M]=p(g);return x?(m||t.getState().getNodes()).filter(I=>{if(!M&&(I.id===N.id||!I.positionAbsolute))return!1;const H=Zt(I),z=St(H,x);return h&&z>0||z>=x.width*x.height}):[]},[]),w=y.useCallback((g,h,m=!0)=>{const[x]=p(g);if(!x)return!1;const N=St(x,h);return m&&N>0||N>=x.width*x.height},[]);return y.useMemo(()=>({...e,getNodes:n,getNode:o,getEdges:s,getEdge:i,setNodes:r,setEdges:c,addNodes:l,addEdges:u,toObject:a,deleteElements:d,getIntersectingNodes:f,isNodeIntersecting:w}),[e,n,o,s,i,r,c,l,u,a,d,f,w])}const Ds={actInsideInputWithModifier:!1};var Rs=({deleteKeyCode:e,multiSelectionKeyCode:t})=>{const n=ne(),{deleteElements:o}=On(),s=tt(e,Ds),i=tt(t);y.useEffect(()=>{if(s){const{edges:r,getNodes:c}=n.getState(),l=c().filter(a=>a.selected),u=r.filter(a=>a.selected);o({nodes:l,edges:u}),n.setState({nodesSelectionActive:!1})}},[s]),y.useEffect(()=>{n.setState({multiSelectionActive:i})},[i])};function ks(e){const t=ne();y.useEffect(()=>{let n;const o=()=>{var i,r;if(!e.current)return;const s=It(e.current);(s.height===0||s.width===0)&&((r=(i=t.getState()).onError)==null||r.call(i,"004",xe.error004())),t.setState({width:s.width||500,height:s.height||500})};return o(),window.addEventListener("resize",o),e.current&&(n=new ResizeObserver(()=>o()),n.observe(e.current)),()=>{window.removeEventListener("resize",o),n&&e.current&&n.unobserve(e.current)}},[])}const Lt={position:"absolute",width:"100%",height:"100%",top:0,left:0},Hs=(e,t)=>e.x!==t.x||e.y!==t.y||e.zoom!==t.k,it=e=>({x:e.x,y:e.y,zoom:e.k}),Ve=(e,t)=>e.target.closest(`.${t}`),tn=(e,t)=>t===2&&Array.isArray(e)&&e.includes(2),nn=e=>{const t=e.ctrlKey&&ct()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*t},zs=e=>({d3Zoom:e.d3Zoom,d3Selection:e.d3Selection,d3ZoomHandler:e.d3ZoomHandler,userSelectionActive:e.userSelectionActive}),Bs=({onMove:e,onMoveStart:t,onMoveEnd:n,onPaneContextMenu:o,zoomOnScroll:s=!0,zoomOnPinch:i=!0,panOnScroll:r=!1,panOnScrollSpeed:c=.5,panOnScrollMode:l=_e.Free,zoomOnDoubleClick:u=!0,elementsSelectable:a,panOnDrag:d=!0,defaultViewport:p,translateExtent:f,minZoom:w,maxZoom:g,zoomActivationKeyCode:h,preventScrolling:m=!0,children:x,noWheelClassName:N,noPanClassName:M})=>{const I=y.useRef(),H=ne(),z=y.useRef(!1),k=y.useRef(!1),A=y.useRef(null),T=y.useRef({x:0,y:0,zoom:0}),{d3Zoom:v,d3Selection:P,d3ZoomHandler:$,userSelectionActive:E}=q(zs,se),C=tt(h),B=y.useRef(0),O=y.useRef(!1),Y=y.useRef();return ks(A),y.useEffect(()=>{if(A.current){const S=A.current.getBoundingClientRect(),D=Lo().scaleExtent([w,g]).translateExtent(f),R=pn(A.current).call(D),_=Oe.translate(p.x,p.y).scale(Xe(p.zoom,w,g)),F=[[0,0],[S.width,S.height]],U=D.constrain()(_,F,f);D.transform(R,U),D.wheelDelta(nn),H.setState({d3Zoom:D,d3Selection:R,d3ZoomHandler:R.on("wheel.zoom"),transform:[U.x,U.y,U.k],domNode:A.current.closest(".react-flow")})}},[]),y.useEffect(()=>{P&&v&&(r&&!C&&!E?P.on("wheel.zoom",S=>{if(Ve(S,N))return!1;S.preventDefault(),S.stopImmediatePropagation();const D=P.property("__zoom").k||1;if(S.ctrlKey&&i){const te=Yo(S),ee=nn(S),W=D*Math.pow(2,ee);v.scaleTo(P,W,te,S);return}const R=S.deltaMode===1?20:1;let _=l===_e.Vertical?0:S.deltaX*R,F=l===_e.Horizontal?0:S.deltaY*R;!ct()&&S.shiftKey&&l!==_e.Vertical&&(_=S.deltaY*R,F=0),v.translateBy(P,-(_/D)*c,-(F/D)*c,{internal:!0});const U=it(P.property("__zoom")),{onViewportChangeStart:X,onViewportChange:K,onViewportChangeEnd:Q}=H.getState();clearTimeout(Y.current),O.current||(O.current=!0,t==null||t(S,U),X==null||X(U)),O.current&&(e==null||e(S,U),K==null||K(U),Y.current=setTimeout(()=>{n==null||n(S,U),Q==null||Q(U),O.current=!1},150))},{passive:!1}):typeof $<"u"&&P.on("wheel.zoom",function(S,D){if(!m&&S.type==="wheel"&&!S.ctrlKey||Ve(S,N))return null;S.preventDefault(),$.call(this,S,D)},{passive:!1}))},[E,r,l,P,v,$,C,i,m,N,t,e,n]),y.useEffect(()=>{v&&v.on("start",S=>{var _,F;if(!S.sourceEvent||S.sourceEvent.internal)return null;B.current=(_=S.sourceEvent)==null?void 0:_.button;const{onViewportChangeStart:D}=H.getState(),R=it(S.transform);z.current=!0,T.current=R,((F=S.sourceEvent)==null?void 0:F.type)==="mousedown"&&H.setState({paneDragging:!0}),D==null||D(R),t==null||t(S.sourceEvent,R)})},[v,t]),y.useEffect(()=>{v&&(E&&!z.current?v.on("zoom",null):E||v.on("zoom",S=>{var R;const{onViewportChange:D}=H.getState();if(H.setState({transform:[S.transform.x,S.transform.y,S.transform.k]}),k.current=!!(o&&tn(d,B.current??0)),(e||D)&&!((R=S.sourceEvent)!=null&&R.internal)){const _=it(S.transform);D==null||D(_),e==null||e(S.sourceEvent,_)}}))},[E,v,e,d,o]),y.useEffect(()=>{v&&v.on("end",S=>{if(!S.sourceEvent||S.sourceEvent.internal)return null;const{onViewportChangeEnd:D}=H.getState();if(z.current=!1,H.setState({paneDragging:!1}),o&&tn(d,B.current??0)&&!k.current&&o(S.sourceEvent),k.current=!1,(n||D)&&Hs(T.current,S.transform)){const R=it(S.transform);T.current=R,clearTimeout(I.current),I.current=setTimeout(()=>{D==null||D(R),n==null||n(S.sourceEvent,R)},r?150:0)}})},[v,r,d,n,o]),y.useEffect(()=>{v&&v.filter(S=>{const D=C||s,R=i&&S.ctrlKey;if((d===!0||Array.isArray(d)&&d.includes(1))&&S.button===1&&S.type==="mousedown"&&(Ve(S,"react-flow__node")||Ve(S,"react-flow__edge")))return!0;if(!d&&!D&&!r&&!u&&!i||E||!u&&S.type==="dblclick"||Ve(S,N)&&S.type==="wheel"||Ve(S,M)&&(S.type!=="wheel"||r&&S.type==="wheel"&&!C)||!i&&S.ctrlKey&&S.type==="wheel"||!D&&!r&&!R&&S.type==="wheel"||!d&&(S.type==="mousedown"||S.type==="touchstart")||Array.isArray(d)&&!d.includes(S.button)&&S.type==="mousedown")return!1;const _=Array.isArray(d)&&d.includes(S.button)||!S.button||S.button<=1;return(!S.ctrlKey||S.type==="wheel")&&_})},[E,v,s,i,r,u,d,a,C]),b.createElement("div",{className:"react-flow__renderer",ref:A,style:Lt},x)},Ls=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function Vs(){const{userSelectionActive:e,userSelectionRect:t}=q(Ls,se);return e&&t?b.createElement("div",{className:"react-flow__selection react-flow__container",style:{width:t.width,height:t.height,transform:`translate(${t.x}px, ${t.y}px)`}}):null}function on(e,t){const n=t.parentNode||t.parentId,o=e.find(s=>s.id===n);if(o){const s=t.position.x+t.width-o.width,i=t.position.y+t.height-o.height;if(s>0||i>0||t.position.x<0||t.position.y<0){if(o.style={...o.style},o.style.width=o.style.width??o.width,o.style.height=o.style.height??o.height,s>0&&(o.style.width+=s),i>0&&(o.style.height+=i),t.position.x<0){const r=Math.abs(t.position.x);o.position.x=o.position.x-r,o.style.width+=r,t.position.x=0}if(t.position.y<0){const r=Math.abs(t.position.y);o.position.y=o.position.y-r,o.style.height+=r,t.position.y=0}o.width=o.style.width,o.height=o.style.height}}}function Un(e,t){if(e.some(o=>o.type==="reset"))return e.filter(o=>o.type==="reset").map(o=>o.item);const n=e.filter(o=>o.type==="add").map(o=>o.item);return t.reduce((o,s)=>{const i=e.filter(c=>c.id===s.id);if(i.length===0)return o.push(s),o;const r={...s};for(const c of i)if(c)switch(c.type){case"select":{r.selected=c.selected;break}case"position":{typeof c.position<"u"&&(r.position=c.position),typeof c.positionAbsolute<"u"&&(r.positionAbsolute=c.positionAbsolute),typeof c.dragging<"u"&&(r.dragging=c.dragging),r.expandParent&&on(o,r);break}case"dimensions":{typeof c.dimensions<"u"&&(r.width=c.dimensions.width,r.height=c.dimensions.height),typeof c.updateStyle<"u"&&(r.style={...r.style||{},...c.dimensions}),typeof c.resizing=="boolean"&&(r.resizing=c.resizing),r.expandParent&&on(o,r);break}case"remove":return o}return o.push(r),o},n)}function Fs(e,t){return Un(e,t)}function Wr(e,t){return Un(e,t)}const Ee=(e,t)=>({id:e,type:"select",selected:t});function Ye(e,t){return e.reduce((n,o)=>{const s=t.includes(o.id);return!o.selected&&s?(o.selected=!0,n.push(Ee(o.id,!0))):o.selected&&!s&&(o.selected=!1,n.push(Ee(o.id,!1))),n},[])}const xt=(e,t)=>n=>{n.target===t.current&&(e==null||e(n))},Ys=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,dragging:e.paneDragging}),Zn=y.memo(({isSelecting:e,selectionMode:t=et.Full,panOnDrag:n,onSelectionStart:o,onSelectionEnd:s,onPaneClick:i,onPaneContextMenu:r,onPaneScroll:c,onPaneMouseEnter:l,onPaneMouseMove:u,onPaneMouseLeave:a,children:d})=>{const p=y.useRef(null),f=ne(),w=y.useRef(0),g=y.useRef(0),h=y.useRef(),{userSelectionActive:m,elementsSelectable:x,dragging:N}=q(Ys,se),M=()=>{f.setState({userSelectionActive:!1,userSelectionRect:null}),w.current=0,g.current=0},I=$=>{i==null||i($),f.getState().resetSelectedElements(),f.setState({nodesSelectionActive:!1})},H=$=>{if(Array.isArray(n)&&(n!=null&&n.includes(2))){$.preventDefault();return}r==null||r($)},z=c?$=>c($):void 0,k=$=>{const{resetSelectedElements:E,domNode:C}=f.getState();if(h.current=C==null?void 0:C.getBoundingClientRect(),!x||!e||$.button!==0||$.target!==p.current||!h.current)return;const{x:B,y:O}=be($,h.current);E(),f.setState({userSelectionRect:{width:0,height:0,startX:B,startY:O,x:B,y:O}}),o==null||o($)},A=$=>{const{userSelectionRect:E,nodeInternals:C,edges:B,transform:O,onNodesChange:Y,onEdgesChange:S,nodeOrigin:D,getNodes:R}=f.getState();if(!e||!h.current||!E)return;f.setState({userSelectionActive:!0,nodesSelectionActive:!1});const _=be($,h.current),F=E.startX??0,U=E.startY??0,X={...E,x:_.x<F?_.x:F,y:_.y<U?_.y:U,width:Math.abs(_.x-F),height:Math.abs(_.y-U)},K=R(),Q=Mn(C,X,O,t===et.Partial,!0,D),te=$n(Q,B).map(W=>W.id),ee=Q.map(W=>W.id);if(w.current!==ee.length){w.current=ee.length;const W=Ye(K,ee);W.length&&(Y==null||Y(W))}if(g.current!==te.length){g.current=te.length;const W=Ye(B,te);W.length&&(S==null||S(W))}f.setState({userSelectionRect:X})},T=$=>{if($.button!==0)return;const{userSelectionRect:E}=f.getState();!m&&E&&$.target===p.current&&(I==null||I($)),f.setState({nodesSelectionActive:w.current>0}),M(),s==null||s($)},v=$=>{m&&(f.setState({nodesSelectionActive:w.current>0}),s==null||s($)),M()},P=x&&(e||m);return b.createElement("div",{className:le(["react-flow__pane",{dragging:N,selection:e}]),onClick:P?void 0:xt(I,p),onContextMenu:xt(H,p),onWheel:xt(z,p),onMouseEnter:P?void 0:l,onMouseDown:P?k:void 0,onMouseMove:P?A:u,onMouseUp:P?T:void 0,onMouseLeave:P?v:a,ref:p,style:Lt},d,b.createElement(Vs,null))});Zn.displayName="Pane";function Xn(e,t){const n=e.parentNode||e.parentId;if(!n)return!1;const o=t.get(n);return o?o.selected?!0:Xn(o,t):!1}function sn(e,t,n){let o=e;do{if(o!=null&&o.matches(t))return!0;if(o===n.current)return!1;o=o.parentElement}while(o);return!1}function Os(e,t,n,o){return Array.from(e.values()).filter(s=>(s.selected||s.id===o)&&(!s.parentNode||s.parentId||!Xn(s,e))&&(s.draggable||t&&typeof s.draggable>"u")).map(s=>{var i,r;return{id:s.id,position:s.position||{x:0,y:0},positionAbsolute:s.positionAbsolute||{x:0,y:0},distance:{x:n.x-(((i=s.positionAbsolute)==null?void 0:i.x)??0),y:n.y-(((r=s.positionAbsolute)==null?void 0:r.y)??0)},delta:{x:0,y:0},extent:s.extent,parentNode:s.parentNode||s.parentId,parentId:s.parentNode||s.parentId,width:s.width,height:s.height,expandParent:s.expandParent}})}function Us(e,t){return!t||t==="parent"?t:[t[0],[t[1][0]-(e.width||0),t[1][1]-(e.height||0)]]}function Wn(e,t,n,o,s=[0,0],i){const r=Us(e,e.extent||o);let c=r;const l=e.parentNode||e.parentId;if(e.extent==="parent"&&!e.expandParent)if(l&&e.width&&e.height){const d=n.get(l),{x:p,y:f}=Ue(d,s).positionAbsolute;c=d&&ae(p)&&ae(f)&&ae(d.width)&&ae(d.height)?[[p+e.width*s[0],f+e.height*s[1]],[p+d.width-e.width+e.width*s[0],f+d.height-e.height+e.height*s[1]]]:c}else i==null||i("005",xe.error005()),c=r;else if(e.extent&&l&&e.extent!=="parent"){const d=n.get(l),{x:p,y:f}=Ue(d,s).positionAbsolute;c=[[e.extent[0][0]+p,e.extent[0][1]+f],[e.extent[1][0]+p,e.extent[1][1]+f]]}let u={x:0,y:0};if(l){const d=n.get(l);u=Ue(d,s).positionAbsolute}const a=c&&c!=="parent"?Tt(t,c):t;return{position:{x:a.x-u.x,y:a.y-u.y},positionAbsolute:a}}function wt({nodeId:e,dragItems:t,nodeInternals:n}){const o=t.map(s=>({...n.get(s.id),position:s.position,positionAbsolute:s.positionAbsolute}));return[e?o.find(s=>s.id===e):o[0],o]}const rn=(e,t,n,o)=>{const s=t.querySelectorAll(e);if(!s||!s.length)return null;const i=Array.from(s),r=t.getBoundingClientRect(),c={x:r.width*o[0],y:r.height*o[1]};return i.map(l=>{const u=l.getBoundingClientRect();return{id:l.getAttribute("data-handleid"),position:l.getAttribute("data-handlepos"),x:(u.left-r.left-c.x)/n,y:(u.top-r.top-c.y)/n,...It(l)}})};function Qe(e,t,n){return n===void 0?n:o=>{const s=t().nodeInternals.get(e);s&&n(o,{...s})}}function Ct({id:e,store:t,unselect:n=!1,nodeRef:o}){const{addSelectedNodes:s,unselectNodesAndEdges:i,multiSelectionActive:r,nodeInternals:c,onError:l}=t.getState(),u=c.get(e);if(!u){l==null||l("012",xe.error012(e));return}t.setState({nodesSelectionActive:!1}),u.selected?(n||u.selected&&r)&&(i({nodes:[u],edges:[]}),requestAnimationFrame(()=>{var a;return(a=o==null?void 0:o.current)==null?void 0:a.blur()})):s([e])}function Zs(){const e=ne();return y.useCallback(({sourceEvent:n})=>{const{transform:o,snapGrid:s,snapToGrid:i}=e.getState(),r=n.touches?n.touches[0].clientX:n.clientX,c=n.touches?n.touches[0].clientY:n.clientY,l={x:(r-o[0])/o[2],y:(c-o[1])/o[2]};return{xSnapped:i?s[0]*Math.round(l.x/s[0]):l.x,ySnapped:i?s[1]*Math.round(l.y/s[1]):l.y,...l}},[])}function Et(e){return(t,n,o)=>e==null?void 0:e(t,o)}function Gn({nodeRef:e,disabled:t=!1,noDragClassName:n,handleSelector:o,nodeId:s,isSelectable:i,selectNodesOnDrag:r}){const c=ne(),[l,u]=y.useState(!1),a=y.useRef([]),d=y.useRef({x:null,y:null}),p=y.useRef(0),f=y.useRef(null),w=y.useRef({x:0,y:0}),g=y.useRef(null),h=y.useRef(!1),m=y.useRef(!1),x=y.useRef(!1),N=Zs();return y.useEffect(()=>{if(e!=null&&e.current){const M=pn(e.current),I=({x:k,y:A})=>{const{nodeInternals:T,onNodeDrag:v,onSelectionDrag:P,updateNodePositions:$,nodeExtent:E,snapGrid:C,snapToGrid:B,nodeOrigin:O,onError:Y}=c.getState();d.current={x:k,y:A};let S=!1,D={x:0,y:0,x2:0,y2:0};if(a.current.length>1&&E){const _=Ht(a.current,O);D=_t(_)}if(a.current=a.current.map(_=>{const F={x:k-_.distance.x,y:A-_.distance.y};B&&(F.x=C[0]*Math.round(F.x/C[0]),F.y=C[1]*Math.round(F.y/C[1]));const U=[[E[0][0],E[0][1]],[E[1][0],E[1][1]]];a.current.length>1&&E&&!_.extent&&(U[0][0]=_.positionAbsolute.x-D.x+E[0][0],U[1][0]=_.positionAbsolute.x+(_.width??0)-D.x2+E[1][0],U[0][1]=_.positionAbsolute.y-D.y+E[0][1],U[1][1]=_.positionAbsolute.y+(_.height??0)-D.y2+E[1][1]);const X=Wn(_,F,T,U,O,Y);return S=S||_.position.x!==X.position.x||_.position.y!==X.position.y,_.position=X.position,_.positionAbsolute=X.positionAbsolute,_}),!S)return;$(a.current,!0,!0),u(!0);const R=s?v:Et(P);if(R&&g.current){const[_,F]=wt({nodeId:s,dragItems:a.current,nodeInternals:T});R(g.current,_,F)}},H=()=>{if(!f.current)return;const[k,A]=hn(w.current,f.current);if(k!==0||A!==0){const{transform:T,panBy:v}=c.getState();d.current.x=(d.current.x??0)-k/T[2],d.current.y=(d.current.y??0)-A/T[2],v({x:k,y:A})&&I(d.current)}p.current=requestAnimationFrame(H)},z=k=>{var O;const{nodeInternals:A,multiSelectionActive:T,nodesDraggable:v,unselectNodesAndEdges:P,onNodeDragStart:$,onSelectionDragStart:E}=c.getState();m.current=!0;const C=s?$:Et(E);(!r||!i)&&!T&&s&&((O=A.get(s))!=null&&O.selected||P()),s&&i&&r&&Ct({id:s,store:c,nodeRef:e});const B=N(k);if(d.current=B,a.current=Os(A,v,B,s),C&&a.current){const[Y,S]=wt({nodeId:s,dragItems:a.current,nodeInternals:A});C(k.sourceEvent,Y,S)}};if(t)M.on(".drag",null);else{const k=Oo().on("start",A=>{const{domNode:T,nodeDragThreshold:v}=c.getState();v===0&&z(A),x.current=!1;const P=N(A);d.current=P,f.current=(T==null?void 0:T.getBoundingClientRect())||null,w.current=be(A.sourceEvent,f.current)}).on("drag",A=>{var $,E;const T=N(A),{autoPanOnNodeDrag:v,nodeDragThreshold:P}=c.getState();if(A.sourceEvent.type==="touchmove"&&A.sourceEvent.touches.length>1&&(x.current=!0),!x.current){if(!h.current&&m.current&&v&&(h.current=!0,H()),!m.current){const C=T.xSnapped-((($=d==null?void 0:d.current)==null?void 0:$.x)??0),B=T.ySnapped-(((E=d==null?void 0:d.current)==null?void 0:E.y)??0);Math.sqrt(C*C+B*B)>P&&z(A)}(d.current.x!==T.xSnapped||d.current.y!==T.ySnapped)&&a.current&&m.current&&(g.current=A.sourceEvent,w.current=be(A.sourceEvent,f.current),I(T))}}).on("end",A=>{if(!(!m.current||x.current)&&(u(!1),h.current=!1,m.current=!1,cancelAnimationFrame(p.current),a.current)){const{updateNodePositions:T,nodeInternals:v,onNodeDragStop:P,onSelectionDragStop:$}=c.getState(),E=s?P:Et($);if(T(a.current,!1,!1),E){const[C,B]=wt({nodeId:s,dragItems:a.current,nodeInternals:v});E(A.sourceEvent,C,B)}}}).filter(A=>{const T=A.target;return!A.button&&(!n||!sn(T,`.${n}`,e))&&(!o||sn(T,o,e))});return M.call(k),()=>{M.on(".drag",null)}}}},[e,t,n,o,i,c,s,r,N]),l}function Kn(){const e=ne();return y.useCallback(n=>{const{nodeInternals:o,nodeExtent:s,updateNodePositions:i,getNodes:r,snapToGrid:c,snapGrid:l,onError:u,nodesDraggable:a}=e.getState(),d=r().filter(x=>x.selected&&(x.draggable||a&&typeof x.draggable>"u")),p=c?l[0]:5,f=c?l[1]:5,w=n.isShiftPressed?4:1,g=n.x*p*w,h=n.y*f*w,m=d.map(x=>{if(x.positionAbsolute){const N={x:x.positionAbsolute.x+g,y:x.positionAbsolute.y+h};c&&(N.x=l[0]*Math.round(N.x/l[0]),N.y=l[1]*Math.round(N.y/l[1]));const{positionAbsolute:M,position:I}=Wn(x,N,o,s,void 0,u);x.position=I,x.positionAbsolute=M}return x});i(m,!0,!1)},[])}const Ze={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}};var Je=e=>{const t=({id:n,type:o,data:s,xPos:i,yPos:r,xPosOrigin:c,yPosOrigin:l,selected:u,onClick:a,onMouseEnter:d,onMouseMove:p,onMouseLeave:f,onContextMenu:w,onDoubleClick:g,style:h,className:m,isDraggable:x,isSelectable:N,isConnectable:M,isFocusable:I,selectNodesOnDrag:H,sourcePosition:z,targetPosition:k,hidden:A,resizeObserver:T,dragHandle:v,zIndex:P,isParent:$,noDragClassName:E,noPanClassName:C,initialized:B,disableKeyboardA11y:O,ariaLabel:Y,rfId:S,hasHandleBounds:D})=>{const R=ne(),_=y.useRef(null),F=y.useRef(null),U=y.useRef(z),X=y.useRef(k),K=y.useRef(o),Q=N||x||a||d||p||f,te=Kn(),ee=Qe(n,R.getState,d),W=Qe(n,R.getState,p),ue=Qe(n,R.getState,f),ie=Qe(n,R.getState,w),de=Qe(n,R.getState,g),ce=G=>{const{nodeDragThreshold:V}=R.getState();if(N&&(!H||!x||V>0)&&Ct({id:n,store:R,nodeRef:_}),a){const re=R.getState().nodeInternals.get(n);re&&a(G,{...re})}},J=G=>{if(!bt(G)&&!O)if(xn.includes(G.key)&&N){const V=G.key==="Escape";Ct({id:n,store:R,unselect:V,nodeRef:_})}else x&&u&&Object.prototype.hasOwnProperty.call(Ze,G.key)&&(R.setState({ariaLiveMessage:`Moved selected node ${G.key.replace("Arrow","").toLowerCase()}. New position, x: ${~~i}, y: ${~~r}`}),te({x:Ze[G.key].x,y:Ze[G.key].y,isShiftPressed:G.shiftKey}))};y.useEffect(()=>()=>{F.current&&(T==null||T.unobserve(F.current),F.current=null)},[]),y.useEffect(()=>{if(_.current&&!A){const G=_.current;(!B||!D||F.current!==G)&&(F.current&&(T==null||T.unobserve(F.current)),T==null||T.observe(G),F.current=G)}},[A,B,D]),y.useEffect(()=>{const G=K.current!==o,V=U.current!==z,re=X.current!==k;_.current&&(G||V||re)&&(G&&(K.current=o),V&&(U.current=z),re&&(X.current=k),R.getState().updateNodeDimensions([{id:n,nodeElement:_.current,forceUpdate:!0}]))},[n,o,z,k]);const pe=Gn({nodeRef:_,disabled:A||!x,noDragClassName:E,handleSelector:v,nodeId:n,isSelectable:N,selectNodesOnDrag:H});return A?null:b.createElement("div",{className:le(["react-flow__node",`react-flow__node-${o}`,{[C]:x},m,{selected:u,selectable:N,parent:$,dragging:pe}]),ref:_,style:{zIndex:P,transform:`translate(${c}px,${l}px)`,pointerEvents:Q?"all":"none",visibility:B?"visible":"hidden",...h},"data-id":n,"data-testid":`rf__node-${n}`,onMouseEnter:ee,onMouseMove:W,onMouseLeave:ue,onContextMenu:ie,onClick:ce,onDoubleClick:de,onKeyDown:I?J:void 0,tabIndex:I?0:void 0,role:I?"button":void 0,"aria-describedby":O?void 0:`${Bn}-${S}`,"aria-label":Y},b.createElement(rs,{value:n},b.createElement(e,{id:n,data:s,type:o,xPos:i,yPos:r,selected:u,isConnectable:M,sourcePosition:z,targetPosition:k,dragging:pe,dragHandle:v,zIndex:P})))};return t.displayName="NodeWrapper",y.memo(t)};const Xs=e=>{const t=e.getNodes().filter(n=>n.selected);return{...Ht(t,e.nodeOrigin),transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`,userSelectionActive:e.userSelectionActive}};function Ws({onSelectionContextMenu:e,noPanClassName:t,disableKeyboardA11y:n}){const o=ne(),{width:s,height:i,x:r,y:c,transformString:l,userSelectionActive:u}=q(Xs,se),a=Kn(),d=y.useRef(null);if(y.useEffect(()=>{var w;n||(w=d.current)==null||w.focus({preventScroll:!0})},[n]),Gn({nodeRef:d}),u||!s||!i)return null;const p=e?w=>{const g=o.getState().getNodes().filter(h=>h.selected);e(w,g)}:void 0,f=w=>{Object.prototype.hasOwnProperty.call(Ze,w.key)&&a({x:Ze[w.key].x,y:Ze[w.key].y,isShiftPressed:w.shiftKey})};return b.createElement("div",{className:le(["react-flow__nodesselection","react-flow__container",t]),style:{transform:l}},b.createElement("div",{ref:d,className:"react-flow__nodesselection-rect",onContextMenu:p,tabIndex:n?void 0:-1,onKeyDown:n?void 0:f,style:{width:s,height:i,top:c,left:r}}))}var Gs=y.memo(Ws);const Ks=e=>e.nodesSelectionActive,jn=({children:e,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:o,onPaneMouseLeave:s,onPaneContextMenu:i,onPaneScroll:r,deleteKeyCode:c,onMove:l,onMoveStart:u,onMoveEnd:a,selectionKeyCode:d,selectionOnDrag:p,selectionMode:f,onSelectionStart:w,onSelectionEnd:g,multiSelectionKeyCode:h,panActivationKeyCode:m,zoomActivationKeyCode:x,elementsSelectable:N,zoomOnScroll:M,zoomOnPinch:I,panOnScroll:H,panOnScrollSpeed:z,panOnScrollMode:k,zoomOnDoubleClick:A,panOnDrag:T,defaultViewport:v,translateExtent:P,minZoom:$,maxZoom:E,preventScrolling:C,onSelectionContextMenu:B,noWheelClassName:O,noPanClassName:Y,disableKeyboardA11y:S})=>{const D=q(Ks),R=tt(d),_=tt(m),F=_||T,U=_||H,X=R||p&&F!==!0;return Rs({deleteKeyCode:c,multiSelectionKeyCode:h}),b.createElement(Bs,{onMove:l,onMoveStart:u,onMoveEnd:a,onPaneContextMenu:i,elementsSelectable:N,zoomOnScroll:M,zoomOnPinch:I,panOnScroll:U,panOnScrollSpeed:z,panOnScrollMode:k,zoomOnDoubleClick:A,panOnDrag:!R&&F,defaultViewport:v,translateExtent:P,minZoom:$,maxZoom:E,zoomActivationKeyCode:x,preventScrolling:C,noWheelClassName:O,noPanClassName:Y},b.createElement(Zn,{onSelectionStart:w,onSelectionEnd:g,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:o,onPaneMouseLeave:s,onPaneContextMenu:i,onPaneScroll:r,panOnDrag:F,isSelecting:!!X,selectionMode:f},e,D&&b.createElement(Gs,{onSelectionContextMenu:B,noPanClassName:Y,disableKeyboardA11y:S})))};jn.displayName="FlowRenderer";var js=y.memo(jn);function qs(e){return q(y.useCallback(n=>e?Mn(n.nodeInternals,{x:0,y:0,width:n.width,height:n.height},n.transform,!0):n.getNodes(),[e]))}function Qs(e){const t={input:Je(e.input||Rn),default:Je(e.default||$t),output:Je(e.output||Hn),group:Je(e.group||Bt)},n={},o=Object.keys(e).filter(s=>!["input","default","output","group"].includes(s)).reduce((s,i)=>(s[i]=Je(e[i]||$t),s),n);return{...t,...o}}const Js=({x:e,y:t,width:n,height:o,origin:s})=>!n||!o?{x:e,y:t}:s[0]<0||s[1]<0||s[0]>1||s[1]>1?{x:e,y:t}:{x:e-n*s[0],y:t-o*s[1]},er=e=>({nodesDraggable:e.nodesDraggable,nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,updateNodeDimensions:e.updateNodeDimensions,onError:e.onError}),qn=e=>{const{nodesDraggable:t,nodesConnectable:n,nodesFocusable:o,elementsSelectable:s,updateNodeDimensions:i,onError:r}=q(er,se),c=qs(e.onlyRenderVisibleElements),l=y.useRef(),u=y.useMemo(()=>{if(typeof ResizeObserver>"u")return null;const a=new ResizeObserver(d=>{const p=d.map(f=>({id:f.target.getAttribute("data-id"),nodeElement:f.target,forceUpdate:!0}));i(p)});return l.current=a,a},[]);return y.useEffect(()=>()=>{var a;(a=l==null?void 0:l.current)==null||a.disconnect()},[]),b.createElement("div",{className:"react-flow__nodes",style:Lt},c.map(a=>{var I,H,z;let d=a.type||"default";e.nodeTypes[d]||(r==null||r("003",xe.error003(d)),d="default");const p=e.nodeTypes[d]||e.nodeTypes.default,f=!!(a.draggable||t&&typeof a.draggable>"u"),w=!!(a.selectable||s&&typeof a.selectable>"u"),g=!!(a.connectable||n&&typeof a.connectable>"u"),h=!!(a.focusable||o&&typeof a.focusable>"u"),m=e.nodeExtent?Tt(a.positionAbsolute,e.nodeExtent):a.positionAbsolute,x=(m==null?void 0:m.x)??0,N=(m==null?void 0:m.y)??0,M=Js({x,y:N,width:a.width??0,height:a.height??0,origin:e.nodeOrigin});return b.createElement(p,{key:a.id,id:a.id,className:a.className,style:a.style,type:d,data:a.data,sourcePosition:a.sourcePosition||L.Bottom,targetPosition:a.targetPosition||L.Top,hidden:a.hidden,xPos:x,yPos:N,xPosOrigin:M.x,yPosOrigin:M.y,selectNodesOnDrag:e.selectNodesOnDrag,onClick:e.onNodeClick,onMouseEnter:e.onNodeMouseEnter,onMouseMove:e.onNodeMouseMove,onMouseLeave:e.onNodeMouseLeave,onContextMenu:e.onNodeContextMenu,onDoubleClick:e.onNodeDoubleClick,selected:!!a.selected,isDraggable:f,isSelectable:w,isConnectable:g,isFocusable:h,resizeObserver:u,dragHandle:a.dragHandle,zIndex:((I=a[j])==null?void 0:I.z)??0,isParent:!!((H=a[j])!=null&&H.isParent),noDragClassName:e.noDragClassName,noPanClassName:e.noPanClassName,initialized:!!a.width&&!!a.height,rfId:e.rfId,disableKeyboardA11y:e.disableKeyboardA11y,ariaLabel:a.ariaLabel,hasHandleBounds:!!((z=a[j])!=null&&z.handleBounds)})}))};qn.displayName="NodeRenderer";var tr=y.memo(qn);const nr=(e,t,n)=>n===L.Left?e-t:n===L.Right?e+t:e,or=(e,t,n)=>n===L.Top?e-t:n===L.Bottom?e+t:e,cn="react-flow__edgeupdater",an=({position:e,centerX:t,centerY:n,radius:o=10,onMouseDown:s,onMouseEnter:i,onMouseOut:r,type:c})=>b.createElement("circle",{onMouseDown:s,onMouseEnter:i,onMouseOut:r,className:le([cn,`${cn}-${c}`]),cx:nr(t,o,e),cy:or(n,o,e),r:o,stroke:"transparent",fill:"transparent"}),sr=()=>!0;var Fe=e=>{const t=({id:n,className:o,type:s,data:i,onClick:r,onEdgeDoubleClick:c,selected:l,animated:u,label:a,labelStyle:d,labelShowBg:p,labelBgStyle:f,labelBgPadding:w,labelBgBorderRadius:g,style:h,source:m,target:x,sourceX:N,sourceY:M,targetX:I,targetY:H,sourcePosition:z,targetPosition:k,elementsSelectable:A,hidden:T,sourceHandleId:v,targetHandleId:P,onContextMenu:$,onMouseEnter:E,onMouseMove:C,onMouseLeave:B,reconnectRadius:O,onReconnect:Y,onReconnectStart:S,onReconnectEnd:D,markerEnd:R,markerStart:_,rfId:F,ariaLabel:U,isFocusable:X,isReconnectable:K,pathOptions:Q,interactionWidth:te,disableKeyboardA11y:ee})=>{const W=y.useRef(null),[ue,ie]=y.useState(!1),[de,ce]=y.useState(!1),J=ne(),pe=y.useMemo(()=>`url('#${At(_,F)}')`,[_,F]),G=y.useMemo(()=>`url('#${At(R,F)}')`,[R,F]);if(T)return null;const V=oe=>{var me;const{edges:fe,addSelectedEdges:$e,unselectNodesAndEdges:Ce,multiSelectionActive:ve}=J.getState(),ye=fe.find(Ke=>Ke.id===n);ye&&(A&&(J.setState({nodesSelectionActive:!1}),ye.selected&&ve?(Ce({nodes:[],edges:[ye]}),(me=W.current)==null||me.blur()):$e([n])),r&&r(oe,ye))},re=qe(n,J.getState,c),Ne=qe(n,J.getState,$),We=qe(n,J.getState,E),De=qe(n,J.getState,C),Re=qe(n,J.getState,B),he=(oe,fe)=>{if(oe.button!==0)return;const{edges:$e,isValidConnection:Ce}=J.getState(),ve=fe?x:m,ye=(fe?P:v)||null,me=fe?"target":"source",Ke=Ce||sr,gt=fe,je=$e.find(Ie=>Ie.id===n);ce(!0),S==null||S(oe,je,me);const pt=Ie=>{ce(!1),D==null||D(Ie,je,me)};Tn({event:oe,handleId:ye,nodeId:ve,onConnect:Ie=>Y==null?void 0:Y(je,Ie),isTarget:gt,getState:J.getState,setState:J.setState,isValidConnection:Ke,edgeUpdaterType:me,onReconnectEnd:pt})},ke=oe=>he(oe,!0),Ae=oe=>he(oe,!1),Me=()=>ie(!0),He=()=>ie(!1),ze=!A&&!r,Ge=oe=>{var fe;if(!ee&&xn.includes(oe.key)&&A){const{unselectNodesAndEdges:$e,addSelectedEdges:Ce,edges:ve}=J.getState();oe.key==="Escape"?((fe=W.current)==null||fe.blur(),$e({edges:[ve.find(me=>me.id===n)]})):Ce([n])}};return b.createElement("g",{className:le(["react-flow__edge",`react-flow__edge-${s}`,o,{selected:l,animated:u,inactive:ze,updating:ue}]),onClick:V,onDoubleClick:re,onContextMenu:Ne,onMouseEnter:We,onMouseMove:De,onMouseLeave:Re,onKeyDown:X?Ge:void 0,tabIndex:X?0:void 0,role:X?"button":"img","data-testid":`rf__edge-${n}`,"aria-label":U===null?void 0:U||`Edge from ${m} to ${x}`,"aria-describedby":X?`${Ln}-${F}`:void 0,ref:W},!de&&b.createElement(e,{id:n,source:m,target:x,selected:l,animated:u,label:a,labelStyle:d,labelShowBg:p,labelBgStyle:f,labelBgPadding:w,labelBgBorderRadius:g,data:i,style:h,sourceX:N,sourceY:M,targetX:I,targetY:H,sourcePosition:z,targetPosition:k,sourceHandleId:v,targetHandleId:P,markerStart:pe,markerEnd:G,pathOptions:Q,interactionWidth:te}),K&&b.createElement(b.Fragment,null,(K==="source"||K===!0)&&b.createElement(an,{position:z,centerX:N,centerY:M,radius:O,onMouseDown:ke,onMouseEnter:Me,onMouseOut:He,type:"source"}),(K==="target"||K===!0)&&b.createElement(an,{position:k,centerX:I,centerY:H,radius:O,onMouseDown:Ae,onMouseEnter:Me,onMouseOut:He,type:"target"})))};return t.displayName="EdgeWrapper",y.memo(t)};function rr(e){const t={default:Fe(e.default||lt),straight:Fe(e.bezier||Rt),step:Fe(e.step||Dt),smoothstep:Fe(e.step||ft),simplebezier:Fe(e.simplebezier||Pt)},n={},o=Object.keys(e).filter(s=>!["default","bezier"].includes(s)).reduce((s,i)=>(s[i]=Fe(e[i]||lt),s),n);return{...t,...o}}function ln(e,t,n=null){const o=((n==null?void 0:n.x)||0)+t.x,s=((n==null?void 0:n.y)||0)+t.y,i=(n==null?void 0:n.width)||t.width,r=(n==null?void 0:n.height)||t.height;switch(e){case L.Top:return{x:o+i/2,y:s};case L.Right:return{x:o+i,y:s+r/2};case L.Bottom:return{x:o+i/2,y:s+r};case L.Left:return{x:o,y:s+r/2}}}function un(e,t){return e?e.length===1||!t?e[0]:t&&e.find(n=>n.id===t)||null:null}const ir=(e,t,n,o,s,i)=>{const r=ln(n,e,t),c=ln(i,o,s);return{sourceX:r.x,sourceY:r.y,targetX:c.x,targetY:c.y}};function cr({sourcePos:e,targetPos:t,sourceWidth:n,sourceHeight:o,targetWidth:s,targetHeight:i,width:r,height:c,transform:l}){const u={x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),x2:Math.max(e.x+n,t.x+s),y2:Math.max(e.y+o,t.y+i)};u.x===u.x2&&(u.x2+=1),u.y===u.y2&&(u.y2+=1);const a=_t({x:(0-l[0])/l[2],y:(0-l[1])/l[2],width:r/l[2],height:c/l[2]}),d=Math.max(0,Math.min(a.x2,u.x2)-Math.max(a.x,u.x)),p=Math.max(0,Math.min(a.y2,u.y2)-Math.max(a.y,u.y));return Math.ceil(d*p)>0}function dn(e){var o,s,i,r,c;const t=((o=e==null?void 0:e[j])==null?void 0:o.handleBounds)||null,n=t&&(e==null?void 0:e.width)&&(e==null?void 0:e.height)&&typeof((s=e==null?void 0:e.positionAbsolute)==null?void 0:s.x)<"u"&&typeof((i=e==null?void 0:e.positionAbsolute)==null?void 0:i.y)<"u";return[{x:((r=e==null?void 0:e.positionAbsolute)==null?void 0:r.x)||0,y:((c=e==null?void 0:e.positionAbsolute)==null?void 0:c.y)||0,width:(e==null?void 0:e.width)||0,height:(e==null?void 0:e.height)||0},t,!!n]}const ar=[{level:0,isMaxLevel:!0,edges:[]}];function lr(e,t,n=!1){let o=-1;const s=e.reduce((r,c)=>{var a,d;const l=ae(c.zIndex);let u=l?c.zIndex:0;if(n){const p=t.get(c.target),f=t.get(c.source),w=c.selected||(p==null?void 0:p.selected)||(f==null?void 0:f.selected),g=Math.max(((a=f==null?void 0:f[j])==null?void 0:a.z)||0,((d=p==null?void 0:p[j])==null?void 0:d.z)||0,1e3);u=(l?c.zIndex:0)+(w?g:0)}return r[u]?r[u].push(c):r[u]=[c],o=u>o?u:o,r},{}),i=Object.entries(s).map(([r,c])=>{const l=+r;return{edges:c,level:l,isMaxLevel:l===o}});return i.length===0?ar:i}function ur(e,t,n){const o=q(y.useCallback(s=>e?s.edges.filter(i=>{const r=t.get(i.source),c=t.get(i.target);return(r==null?void 0:r.width)&&(r==null?void 0:r.height)&&(c==null?void 0:c.width)&&(c==null?void 0:c.height)&&cr({sourcePos:r.positionAbsolute||{x:0,y:0},targetPos:c.positionAbsolute||{x:0,y:0},sourceWidth:r.width,sourceHeight:r.height,targetWidth:c.width,targetHeight:c.height,width:s.width,height:s.height,transform:s.transform})}):s.edges,[e,t]));return lr(o,t,n)}const dr=({color:e="none",strokeWidth:t=1})=>b.createElement("polyline",{style:{stroke:e,strokeWidth:t},strokeLinecap:"round",strokeLinejoin:"round",fill:"none",points:"-5,-4 0,0 -5,4"}),fr=({color:e="none",strokeWidth:t=1})=>b.createElement("polyline",{style:{stroke:e,fill:e,strokeWidth:t},strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"}),fn={[at.Arrow]:dr,[at.ArrowClosed]:fr};function gr(e){const t=ne();return y.useMemo(()=>{var s,i;return Object.prototype.hasOwnProperty.call(fn,e)?fn[e]:((i=(s=t.getState()).onError)==null||i.call(s,"009",xe.error009(e)),null)},[e])}const pr=({id:e,type:t,color:n,width:o=12.5,height:s=12.5,markerUnits:i="strokeWidth",strokeWidth:r,orient:c="auto-start-reverse"})=>{const l=gr(t);return l?b.createElement("marker",{className:"react-flow__arrowhead",id:e,markerWidth:`${o}`,markerHeight:`${s}`,viewBox:"-10 -10 20 20",markerUnits:i,orient:c,refX:"0",refY:"0"},b.createElement(l,{color:n,strokeWidth:r})):null},mr=({defaultColor:e,rfId:t})=>n=>{const o=[];return n.edges.reduce((s,i)=>([i.markerStart,i.markerEnd].forEach(r=>{if(r&&typeof r=="object"){const c=At(r,t);o.includes(c)||(s.push({id:c,color:r.color||e,...r}),o.push(c))}}),s),[]).sort((s,i)=>s.id.localeCompare(i.id))},Qn=({defaultColor:e,rfId:t})=>{const n=q(y.useCallback(mr({defaultColor:e,rfId:t}),[e,t]),(o,s)=>!(o.length!==s.length||o.some((i,r)=>i.id!==s[r].id)));return b.createElement("defs",null,n.map(o=>b.createElement(pr,{id:o.id,key:o.id,type:o.type,color:o.color,width:o.width,height:o.height,markerUnits:o.markerUnits,strokeWidth:o.strokeWidth,orient:o.orient})))};Qn.displayName="MarkerDefinitions";var hr=y.memo(Qn);const yr=e=>({nodesConnectable:e.nodesConnectable,edgesFocusable:e.edgesFocusable,edgesUpdatable:e.edgesUpdatable,elementsSelectable:e.elementsSelectable,width:e.width,height:e.height,connectionMode:e.connectionMode,nodeInternals:e.nodeInternals,onError:e.onError}),Jn=({defaultMarkerColor:e,onlyRenderVisibleElements:t,elevateEdgesOnSelect:n,rfId:o,edgeTypes:s,noPanClassName:i,onEdgeContextMenu:r,onEdgeMouseEnter:c,onEdgeMouseMove:l,onEdgeMouseLeave:u,onEdgeClick:a,onEdgeDoubleClick:d,onReconnect:p,onReconnectStart:f,onReconnectEnd:w,reconnectRadius:g,children:h,disableKeyboardA11y:m})=>{const{edgesFocusable:x,edgesUpdatable:N,elementsSelectable:M,width:I,height:H,connectionMode:z,nodeInternals:k,onError:A}=q(yr,se),T=ur(t,k,n);return I?b.createElement(b.Fragment,null,T.map(({level:v,edges:P,isMaxLevel:$})=>b.createElement("svg",{key:v,style:{zIndex:v},width:I,height:H,className:"react-flow__edges react-flow__container"},$&&b.createElement(hr,{defaultColor:e,rfId:o}),b.createElement("g",null,P.map(E=>{const[C,B,O]=dn(k.get(E.source)),[Y,S,D]=dn(k.get(E.target));if(!O||!D)return null;let R=E.type||"default";s[R]||(A==null||A("011",xe.error011(R)),R="default");const _=s[R]||s.default,F=z===Pe.Strict?S.target:(S.target??[]).concat(S.source??[]),U=un(B.source,E.sourceHandle),X=un(F,E.targetHandle),K=(U==null?void 0:U.position)||L.Bottom,Q=(X==null?void 0:X.position)||L.Top,te=!!(E.focusable||x&&typeof E.focusable>"u"),ee=E.reconnectable||E.updatable,W=typeof p<"u"&&(ee||N&&typeof ee>"u");if(!U||!X)return A==null||A("008",xe.error008(U,E)),null;const{sourceX:ue,sourceY:ie,targetX:de,targetY:ce}=ir(C,U,K,Y,X,Q);return b.createElement(_,{key:E.id,id:E.id,className:le([E.className,i]),type:R,data:E.data,selected:!!E.selected,animated:!!E.animated,hidden:!!E.hidden,label:E.label,labelStyle:E.labelStyle,labelShowBg:E.labelShowBg,labelBgStyle:E.labelBgStyle,labelBgPadding:E.labelBgPadding,labelBgBorderRadius:E.labelBgBorderRadius,style:E.style,source:E.source,target:E.target,sourceHandleId:E.sourceHandle,targetHandleId:E.targetHandle,markerEnd:E.markerEnd,markerStart:E.markerStart,sourceX:ue,sourceY:ie,targetX:de,targetY:ce,sourcePosition:K,targetPosition:Q,elementsSelectable:M,onContextMenu:r,onMouseEnter:c,onMouseMove:l,onMouseLeave:u,onClick:a,onEdgeDoubleClick:d,onReconnect:p,onReconnectStart:f,onReconnectEnd:w,reconnectRadius:g,rfId:o,ariaLabel:E.ariaLabel,isFocusable:te,isReconnectable:W,pathOptions:"pathOptions"in E?E.pathOptions:void 0,interactionWidth:E.interactionWidth,disableKeyboardA11y:m})})))),h):null};Jn.displayName="EdgeRenderer";var xr=y.memo(Jn);const wr=e=>`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`;function Er({children:e}){const t=q(wr);return b.createElement("div",{className:"react-flow__viewport react-flow__container",style:{transform:t}},e)}function Sr(e){const t=On(),n=y.useRef(!1);y.useEffect(()=>{!n.current&&t.viewportInitialized&&e&&(setTimeout(()=>e(t),1),n.current=!0)},[e,t.viewportInitialized])}const br={[L.Left]:L.Right,[L.Right]:L.Left,[L.Top]:L.Bottom,[L.Bottom]:L.Top},eo=({nodeId:e,handleType:t,style:n,type:o=Se.Bezier,CustomComponent:s,connectionStatus:i})=>{var H,z,k;const{fromNode:r,handleId:c,toX:l,toY:u,connectionMode:a}=q(y.useCallback(A=>({fromNode:A.nodeInternals.get(e),handleId:A.connectionHandleId,toX:(A.connectionPosition.x-A.transform[0])/A.transform[2],toY:(A.connectionPosition.y-A.transform[1])/A.transform[2],connectionMode:A.connectionMode}),[e]),se),d=(H=r==null?void 0:r[j])==null?void 0:H.handleBounds;let p=d==null?void 0:d[t];if(a===Pe.Loose&&(p=p||(d==null?void 0:d[t==="source"?"target":"source"])),!r||!p)return null;const f=c?p.find(A=>A.id===c):p[0],w=f?f.x+f.width/2:(r.width??0)/2,g=f?f.y+f.height/2:r.height??0,h=(((z=r.positionAbsolute)==null?void 0:z.x)??0)+w,m=(((k=r.positionAbsolute)==null?void 0:k.y)??0)+g,x=f==null?void 0:f.position,N=x?br[x]:null;if(!x||!N)return null;if(s)return b.createElement(s,{connectionLineType:o,connectionLineStyle:n,fromNode:r,fromHandle:f,fromX:h,fromY:m,toX:l,toY:u,fromPosition:x,toPosition:N,connectionStatus:i});let M="";const I={sourceX:h,sourceY:m,sourcePosition:x,targetX:l,targetY:u,targetPosition:N};return o===Se.Bezier?[M]=Nn(I):o===Se.Step?[M]=Nt({...I,borderRadius:0}):o===Se.SmoothStep?[M]=Nt(I):o===Se.SimpleBezier?[M]=bn(I):M=`M${h},${m} ${l},${u}`,b.createElement("path",{d:M,fill:"none",className:"react-flow__connection-path",style:n})};eo.displayName="ConnectionLine";const Nr=e=>({nodeId:e.connectionNodeId,handleType:e.connectionHandleType,nodesConnectable:e.nodesConnectable,connectionStatus:e.connectionStatus,width:e.width,height:e.height});function Ar({containerStyle:e,style:t,type:n,component:o}){const{nodeId:s,handleType:i,nodesConnectable:r,width:c,height:l,connectionStatus:u}=q(Nr,se);return!(s&&i&&c&&r)?null:b.createElement("svg",{style:e,width:c,height:l,className:"react-flow__edges react-flow__connectionline react-flow__container"},b.createElement("g",{className:le(["react-flow__connection",u])},b.createElement(eo,{nodeId:s,handleType:i,style:t,type:n,CustomComponent:o,connectionStatus:u})))}function gn(e,t){return y.useRef(null),ne(),y.useMemo(()=>t(e),[e])}const to=({nodeTypes:e,edgeTypes:t,onMove:n,onMoveStart:o,onMoveEnd:s,onInit:i,onNodeClick:r,onEdgeClick:c,onNodeDoubleClick:l,onEdgeDoubleClick:u,onNodeMouseEnter:a,onNodeMouseMove:d,onNodeMouseLeave:p,onNodeContextMenu:f,onSelectionContextMenu:w,onSelectionStart:g,onSelectionEnd:h,connectionLineType:m,connectionLineStyle:x,connectionLineComponent:N,connectionLineContainerStyle:M,selectionKeyCode:I,selectionOnDrag:H,selectionMode:z,multiSelectionKeyCode:k,panActivationKeyCode:A,zoomActivationKeyCode:T,deleteKeyCode:v,onlyRenderVisibleElements:P,elementsSelectable:$,selectNodesOnDrag:E,defaultViewport:C,translateExtent:B,minZoom:O,maxZoom:Y,preventScrolling:S,defaultMarkerColor:D,zoomOnScroll:R,zoomOnPinch:_,panOnScroll:F,panOnScrollSpeed:U,panOnScrollMode:X,zoomOnDoubleClick:K,panOnDrag:Q,onPaneClick:te,onPaneMouseEnter:ee,onPaneMouseMove:W,onPaneMouseLeave:ue,onPaneScroll:ie,onPaneContextMenu:de,onEdgeContextMenu:ce,onEdgeMouseEnter:J,onEdgeMouseMove:pe,onEdgeMouseLeave:G,onReconnect:V,onReconnectStart:re,onReconnectEnd:Ne,reconnectRadius:We,noDragClassName:De,noWheelClassName:Re,noPanClassName:he,elevateEdgesOnSelect:ke,disableKeyboardA11y:Ae,nodeOrigin:Me,nodeExtent:He,rfId:ze})=>{const Ge=gn(e,Qs),oe=gn(t,rr);return Sr(i),b.createElement(js,{onPaneClick:te,onPaneMouseEnter:ee,onPaneMouseMove:W,onPaneMouseLeave:ue,onPaneContextMenu:de,onPaneScroll:ie,deleteKeyCode:v,selectionKeyCode:I,selectionOnDrag:H,selectionMode:z,onSelectionStart:g,onSelectionEnd:h,multiSelectionKeyCode:k,panActivationKeyCode:A,zoomActivationKeyCode:T,elementsSelectable:$,onMove:n,onMoveStart:o,onMoveEnd:s,zoomOnScroll:R,zoomOnPinch:_,zoomOnDoubleClick:K,panOnScroll:F,panOnScrollSpeed:U,panOnScrollMode:X,panOnDrag:Q,defaultViewport:C,translateExtent:B,minZoom:O,maxZoom:Y,onSelectionContextMenu:w,preventScrolling:S,noDragClassName:De,noWheelClassName:Re,noPanClassName:he,disableKeyboardA11y:Ae},b.createElement(Er,null,b.createElement(xr,{edgeTypes:oe,onEdgeClick:c,onEdgeDoubleClick:u,onlyRenderVisibleElements:P,onEdgeContextMenu:ce,onEdgeMouseEnter:J,onEdgeMouseMove:pe,onEdgeMouseLeave:G,onReconnect:V,onReconnectStart:re,onReconnectEnd:Ne,reconnectRadius:We,defaultMarkerColor:D,noPanClassName:he,elevateEdgesOnSelect:!!ke,disableKeyboardA11y:Ae,rfId:ze},b.createElement(Ar,{style:x,type:m,component:N,containerStyle:M})),b.createElement("div",{className:"react-flow__edgelabel-renderer"}),b.createElement(tr,{nodeTypes:Ge,onNodeClick:r,onNodeDoubleClick:l,onNodeMouseEnter:a,onNodeMouseMove:d,onNodeMouseLeave:p,onNodeContextMenu:f,selectNodesOnDrag:E,onlyRenderVisibleElements:P,noPanClassName:he,noDragClassName:De,disableKeyboardA11y:Ae,nodeOrigin:Me,nodeExtent:He,rfId:ze})))};to.displayName="GraphView";var Mr=y.memo(to);const vt=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],we={rfId:"1",width:0,height:0,transform:[0,0,1],nodeInternals:new Map,edges:[],onNodesChange:null,onEdgesChange:null,hasDefaultNodes:!1,hasDefaultEdges:!1,d3Zoom:null,d3Selection:null,d3ZoomHandler:void 0,minZoom:.5,maxZoom:2,translateExtent:vt,nodeExtent:vt,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionNodeId:null,connectionHandleId:null,connectionHandleType:"source",connectionPosition:{x:0,y:0},connectionStatus:null,connectionMode:Pe.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:[0,0],nodeDragThreshold:0,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesUpdatable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,fitViewOnInit:!1,fitViewOnInitDone:!1,fitViewOnInitOptions:void 0,onSelectionChange:[],multiSelectionActive:!1,connectionStartHandle:null,connectionEndHandle:null,connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,connectionRadius:20,onError:Jo,isValidConnection:void 0},$r=()=>Fo((e,t)=>({...we,setNodes:n=>{const{nodeInternals:o,nodeOrigin:s,elevateNodesOnSelect:i}=t();e({nodeInternals:yt(n,o,s,i)})},getNodes:()=>Array.from(t().nodeInternals.values()),setEdges:n=>{const{defaultEdgeOptions:o={}}=t();e({edges:n.map(s=>({...o,...s}))})},setDefaultNodesAndEdges:(n,o)=>{const s=typeof n<"u",i=typeof o<"u",r=s?yt(n,new Map,t().nodeOrigin,t().elevateNodesOnSelect):new Map;e({nodeInternals:r,edges:i?o:[],hasDefaultNodes:s,hasDefaultEdges:i})},updateNodeDimensions:n=>{const{onNodesChange:o,nodeInternals:s,fitViewOnInit:i,fitViewOnInitDone:r,fitViewOnInitOptions:c,domNode:l,nodeOrigin:u}=t(),a=l==null?void 0:l.querySelector(".react-flow__viewport");if(!a)return;const d=window.getComputedStyle(a),{m22:p}=new window.DOMMatrixReadOnly(d.transform),f=n.reduce((g,h)=>{const m=s.get(h.id);if(m!=null&&m.hidden)s.set(m.id,{...m,[j]:{...m[j],handleBounds:void 0}});else if(m){const x=It(h.nodeElement);!!(x.width&&x.height&&(m.width!==x.width||m.height!==x.height||h.forceUpdate))&&(s.set(m.id,{...m,[j]:{...m[j],handleBounds:{source:rn(".source",h.nodeElement,p,u),target:rn(".target",h.nodeElement,p,u)}},...x}),g.push({id:m.id,type:"dimensions",dimensions:x}))}return g},[]);Fn(s,u);const w=r||i&&!r&&Yn(t,{initial:!0,...c});e({nodeInternals:new Map(s),fitViewOnInitDone:w}),(f==null?void 0:f.length)>0&&(o==null||o(f))},updateNodePositions:(n,o=!0,s=!1)=>{const{triggerNodeChanges:i}=t(),r=n.map(c=>{const l={id:c.id,type:"position",dragging:s};return o&&(l.positionAbsolute=c.positionAbsolute,l.position=c.position),l});i(r)},triggerNodeChanges:n=>{const{onNodesChange:o,nodeInternals:s,hasDefaultNodes:i,nodeOrigin:r,getNodes:c,elevateNodesOnSelect:l}=t();if(n!=null&&n.length){if(i){const u=Fs(n,c()),a=yt(u,s,r,l);e({nodeInternals:a})}o==null||o(n)}},addSelectedNodes:n=>{const{multiSelectionActive:o,edges:s,getNodes:i}=t();let r,c=null;o?r=n.map(l=>Ee(l,!0)):(r=Ye(i(),n),c=Ye(s,[])),rt({changedNodes:r,changedEdges:c,get:t,set:e})},addSelectedEdges:n=>{const{multiSelectionActive:o,edges:s,getNodes:i}=t();let r,c=null;o?r=n.map(l=>Ee(l,!0)):(r=Ye(s,n),c=Ye(i(),[])),rt({changedNodes:c,changedEdges:r,get:t,set:e})},unselectNodesAndEdges:({nodes:n,edges:o}={})=>{const{edges:s,getNodes:i}=t(),r=n||i(),c=o||s,l=r.map(a=>(a.selected=!1,Ee(a.id,!1))),u=c.map(a=>Ee(a.id,!1));rt({changedNodes:l,changedEdges:u,get:t,set:e})},setMinZoom:n=>{const{d3Zoom:o,maxZoom:s}=t();o==null||o.scaleExtent([n,s]),e({minZoom:n})},setMaxZoom:n=>{const{d3Zoom:o,minZoom:s}=t();o==null||o.scaleExtent([s,n]),e({maxZoom:n})},setTranslateExtent:n=>{var o;(o=t().d3Zoom)==null||o.translateExtent(n),e({translateExtent:n})},resetSelectedElements:()=>{const{edges:n,getNodes:o}=t(),i=o().filter(c=>c.selected).map(c=>Ee(c.id,!1)),r=n.filter(c=>c.selected).map(c=>Ee(c.id,!1));rt({changedNodes:i,changedEdges:r,get:t,set:e})},setNodeExtent:n=>{const{nodeInternals:o}=t();o.forEach(s=>{s.positionAbsolute=Tt(s.position,n)}),e({nodeExtent:n,nodeInternals:new Map(o)})},panBy:n=>{const{transform:o,width:s,height:i,d3Zoom:r,d3Selection:c,translateExtent:l}=t();if(!r||!c||!n.x&&!n.y)return!1;const u=Oe.translate(o[0]+n.x,o[1]+n.y).scale(o[2]),a=[[0,0],[s,i]],d=r==null?void 0:r.constrain()(u,a,l);return r.transform(c,d),o[0]!==d.x||o[1]!==d.y||o[2]!==d.k},cancelConnection:()=>e({connectionNodeId:we.connectionNodeId,connectionHandleId:we.connectionHandleId,connectionHandleType:we.connectionHandleType,connectionStatus:we.connectionStatus,connectionStartHandle:we.connectionStartHandle,connectionEndHandle:we.connectionEndHandle}),reset:()=>e({...we})}),Object.is),no=({children:e})=>{const t=y.useRef(null);return t.current||(t.current=$r()),b.createElement(Uo,{value:t.current},e)};no.displayName="ReactFlowProvider";const oo=({children:e})=>y.useContext(dt)?b.createElement(b.Fragment,null,e):b.createElement(no,null,e);oo.displayName="ReactFlowWrapper";const Cr={input:Rn,default:$t,output:Hn,group:Bt},vr={default:lt,straight:Rt,step:Dt,smoothstep:ft,simplebezier:Pt},Ir=[0,0],Tr=[15,15],_r={x:0,y:0,zoom:1},Pr={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0},Dr=y.forwardRef(({nodes:e,edges:t,defaultNodes:n,defaultEdges:o,className:s,nodeTypes:i=Cr,edgeTypes:r=vr,onNodeClick:c,onEdgeClick:l,onInit:u,onMove:a,onMoveStart:d,onMoveEnd:p,onConnect:f,onConnectStart:w,onConnectEnd:g,onClickConnectStart:h,onClickConnectEnd:m,onNodeMouseEnter:x,onNodeMouseMove:N,onNodeMouseLeave:M,onNodeContextMenu:I,onNodeDoubleClick:H,onNodeDragStart:z,onNodeDrag:k,onNodeDragStop:A,onNodesDelete:T,onEdgesDelete:v,onSelectionChange:P,onSelectionDragStart:$,onSelectionDrag:E,onSelectionDragStop:C,onSelectionContextMenu:B,onSelectionStart:O,onSelectionEnd:Y,connectionMode:S=Pe.Strict,connectionLineType:D=Se.Bezier,connectionLineStyle:R,connectionLineComponent:_,connectionLineContainerStyle:F,deleteKeyCode:U="Backspace",selectionKeyCode:X="Shift",selectionOnDrag:K=!1,selectionMode:Q=et.Full,panActivationKeyCode:te="Space",multiSelectionKeyCode:ee=ct()?"Meta":"Control",zoomActivationKeyCode:W=ct()?"Meta":"Control",snapToGrid:ue=!1,snapGrid:ie=Tr,onlyRenderVisibleElements:de=!1,selectNodesOnDrag:ce=!0,nodesDraggable:J,nodesConnectable:pe,nodesFocusable:G,nodeOrigin:V=Ir,edgesFocusable:re,edgesUpdatable:Ne,elementsSelectable:We,defaultViewport:De=_r,minZoom:Re=.5,maxZoom:he=2,translateExtent:ke=vt,preventScrolling:Ae=!0,nodeExtent:Me,defaultMarkerColor:He="#b1b1b7",zoomOnScroll:ze=!0,zoomOnPinch:Ge=!0,panOnScroll:oe=!1,panOnScrollSpeed:fe=.5,panOnScrollMode:$e=_e.Free,zoomOnDoubleClick:Ce=!0,panOnDrag:ve=!0,onPaneClick:ye,onPaneMouseEnter:me,onPaneMouseMove:Ke,onPaneMouseLeave:gt,onPaneScroll:je,onPaneContextMenu:pt,children:Vt,onEdgeContextMenu:Ie,onEdgeDoubleClick:ro,onEdgeMouseEnter:io,onEdgeMouseMove:co,onEdgeMouseLeave:ao,onEdgeUpdate:lo,onEdgeUpdateStart:uo,onEdgeUpdateEnd:fo,onReconnect:go,onReconnectStart:po,onReconnectEnd:mo,reconnectRadius:ho=10,edgeUpdaterRadius:yo=10,onNodesChange:xo,onEdgesChange:wo,noDragClassName:Eo="nodrag",noWheelClassName:So="nowheel",noPanClassName:Ft="nopan",fitView:bo=!1,fitViewOptions:No,connectOnClick:Ao=!0,attributionPosition:Mo,proOptions:$o,defaultEdgeOptions:Co,elevateNodesOnSelect:vo=!0,elevateEdgesOnSelect:Io=!1,disableKeyboardA11y:Yt=!1,autoPanOnConnect:To=!0,autoPanOnNodeDrag:_o=!0,connectionRadius:Po=20,isValidConnection:Do,onError:Ro,style:ko,id:Ot,nodeDragThreshold:Ho,...zo},Bo)=>{const mt=Ot||"1";return b.createElement("div",{...zo,style:{...ko,...Pr},ref:Bo,className:le(["react-flow",s]),"data-testid":"rf__wrapper",id:Ot},b.createElement(oo,null,b.createElement(Mr,{onInit:u,onMove:a,onMoveStart:d,onMoveEnd:p,onNodeClick:c,onEdgeClick:l,onNodeMouseEnter:x,onNodeMouseMove:N,onNodeMouseLeave:M,onNodeContextMenu:I,onNodeDoubleClick:H,nodeTypes:i,edgeTypes:r,connectionLineType:D,connectionLineStyle:R,connectionLineComponent:_,connectionLineContainerStyle:F,selectionKeyCode:X,selectionOnDrag:K,selectionMode:Q,deleteKeyCode:U,multiSelectionKeyCode:ee,panActivationKeyCode:te,zoomActivationKeyCode:W,onlyRenderVisibleElements:de,selectNodesOnDrag:ce,defaultViewport:De,translateExtent:ke,minZoom:Re,maxZoom:he,preventScrolling:Ae,zoomOnScroll:ze,zoomOnPinch:Ge,zoomOnDoubleClick:Ce,panOnScroll:oe,panOnScrollSpeed:fe,panOnScrollMode:$e,panOnDrag:ve,onPaneClick:ye,onPaneMouseEnter:me,onPaneMouseMove:Ke,onPaneMouseLeave:gt,onPaneScroll:je,onPaneContextMenu:pt,onSelectionContextMenu:B,onSelectionStart:O,onSelectionEnd:Y,onEdgeContextMenu:Ie,onEdgeDoubleClick:ro,onEdgeMouseEnter:io,onEdgeMouseMove:co,onEdgeMouseLeave:ao,onReconnect:go??lo,onReconnectStart:po??uo,onReconnectEnd:mo??fo,reconnectRadius:ho??yo,defaultMarkerColor:He,noDragClassName:Eo,noWheelClassName:So,noPanClassName:Ft,elevateEdgesOnSelect:Io,rfId:mt,disableKeyboardA11y:Yt,nodeOrigin:V,nodeExtent:Me}),b.createElement(bs,{nodes:e,edges:t,defaultNodes:n,defaultEdges:o,onConnect:f,onConnectStart:w,onConnectEnd:g,onClickConnectStart:h,onClickConnectEnd:m,nodesDraggable:J,nodesConnectable:pe,nodesFocusable:G,edgesFocusable:re,edgesUpdatable:Ne,elementsSelectable:We,elevateNodesOnSelect:vo,minZoom:Re,maxZoom:he,nodeExtent:Me,onNodesChange:xo,onEdgesChange:wo,snapToGrid:ue,snapGrid:ie,connectionMode:S,translateExtent:ke,connectOnClick:Ao,defaultEdgeOptions:Co,fitView:bo,fitViewOptions:No,onNodesDelete:T,onEdgesDelete:v,onNodeDragStart:z,onNodeDrag:k,onNodeDragStop:A,onSelectionDrag:E,onSelectionDragStart:$,onSelectionDragStop:C,noPanClassName:Ft,nodeOrigin:V,rfId:mt,autoPanOnConnect:To,autoPanOnNodeDrag:_o,onError:Ro,connectionRadius:Po,isValidConnection:Do,nodeDragThreshold:Ho}),b.createElement(Es,{onSelectionChange:P}),Vt,b.createElement(Wo,{proOptions:$o,position:Mo}),b.createElement(Cs,{rfId:mt,disableKeyboardA11y:Yt})))});Dr.displayName="ReactFlow";var ge;(function(e){e.Lines="lines",e.Dots="dots",e.Cross="cross"})(ge||(ge={}));function Rr({color:e,dimensions:t,lineWidth:n}){return b.createElement("path",{stroke:e,strokeWidth:n,d:`M${t[0]/2} 0 V${t[1]} M0 ${t[1]/2} H${t[0]}`})}function kr({color:e,radius:t}){return b.createElement("circle",{cx:t,cy:t,r:t,fill:e})}const Hr={[ge.Dots]:"#91919a",[ge.Lines]:"#eee",[ge.Cross]:"#e2e2e2"},zr={[ge.Dots]:1,[ge.Lines]:1,[ge.Cross]:6},Br=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function so({id:e,variant:t=ge.Dots,gap:n=20,size:o,lineWidth:s=1,offset:i=2,color:r,style:c,className:l}){const u=y.useRef(null),{transform:a,patternId:d}=q(Br,se),p=r||Hr[t],f=o||zr[t],w=t===ge.Dots,g=t===ge.Cross,h=Array.isArray(n)?n:[n,n],m=[h[0]*a[2]||1,h[1]*a[2]||1],x=f*a[2],N=g?[x,x]:m,M=w?[x/i,x/i]:[N[0]/i,N[1]/i];return b.createElement("svg",{className:le(["react-flow__background",l]),style:{...c,position:"absolute",width:"100%",height:"100%",top:0,left:0},ref:u,"data-testid":"rf__background"},b.createElement("pattern",{id:d+e,x:a[0]%m[0],y:a[1]%m[1],width:m[0],height:m[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${M[0]},-${M[1]})`},w?b.createElement(kr,{color:p,radius:x/i}):b.createElement(Rr,{dimensions:N,color:p,lineWidth:s})),b.createElement("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${d+e})`}))}so.displayName="Background";var Gr=y.memo(so);export{Gr as B,ut as H,L as P,Dr as R,q as a,Fs as b,us as c,Wr as d,no as e,On as u};
|