@xyflow/react 12.3.1 → 12.3.2

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.
package/dist/esm/index.js CHANGED
@@ -2854,11 +2854,16 @@ const createStore = ({ nodes, edges, defaultNodes, defaultEdges, width, height,
2854
2854
  triggerNodeChanges(getSelectionChanges(nodeLookup, new Set(), true));
2855
2855
  },
2856
2856
  unselectNodesAndEdges: ({ nodes, edges } = {}) => {
2857
- const { edges: storeEdges, nodes: storeNodes, triggerNodeChanges, triggerEdgeChanges } = get();
2857
+ const { edges: storeEdges, nodes: storeNodes, nodeLookup, triggerNodeChanges, triggerEdgeChanges } = get();
2858
2858
  const nodesToUnselect = nodes ? nodes : storeNodes;
2859
2859
  const edgesToUnselect = edges ? edges : storeEdges;
2860
2860
  const nodeChanges = nodesToUnselect.map((n) => {
2861
- n.selected = false;
2861
+ const internalNode = nodeLookup.get(n.id);
2862
+ if (internalNode) {
2863
+ // we need to unselect the internal node that was selected previously before we
2864
+ // send the change to the user to prevent it to be selected while dragging the new node
2865
+ internalNode.selected = false;
2866
+ }
2862
2867
  return createSelectionChange(n.id, false);
2863
2868
  });
2864
2869
  const edgeChanges = edgesToUnselect.map((edge) => createSelectionChange(edge.id, false));
@@ -2854,11 +2854,16 @@ const createStore = ({ nodes, edges, defaultNodes, defaultEdges, width, height,
2854
2854
  triggerNodeChanges(getSelectionChanges(nodeLookup, new Set(), true));
2855
2855
  },
2856
2856
  unselectNodesAndEdges: ({ nodes, edges } = {}) => {
2857
- const { edges: storeEdges, nodes: storeNodes, triggerNodeChanges, triggerEdgeChanges } = get();
2857
+ const { edges: storeEdges, nodes: storeNodes, nodeLookup, triggerNodeChanges, triggerEdgeChanges } = get();
2858
2858
  const nodesToUnselect = nodes ? nodes : storeNodes;
2859
2859
  const edgesToUnselect = edges ? edges : storeEdges;
2860
2860
  const nodeChanges = nodesToUnselect.map((n) => {
2861
- n.selected = false;
2861
+ const internalNode = nodeLookup.get(n.id);
2862
+ if (internalNode) {
2863
+ // we need to unselect the internal node that was selected previously before we
2864
+ // send the change to the user to prevent it to be selected while dragging the new node
2865
+ internalNode.selected = false;
2866
+ }
2862
2867
  return createSelectionChange(n.id, false);
2863
2868
  });
2864
2869
  const edgeChanges = edgesToUnselect.map((edge) => createSelectionChange(edge.id, false));
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AACA,OAAO,EAcL,UAAU,EACV,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAIxB,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAA+C,MAAM,UAAU,CAAC;AAExG,QAAA,MAAM,WAAW;;;;;;;;;;2GA6Vd,CAAC;AAEJ,OAAO,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AACA,OAAO,EAcL,UAAU,EACV,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAIxB,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAA+C,MAAM,UAAU,CAAC;AAExG,QAAA,MAAM,WAAW;;;;;;;;;;2GAkWd,CAAC;AAEJ,OAAO,EAAE,WAAW,EAAE,CAAC"}
package/dist/umd/index.js CHANGED
@@ -7,4 +7,4 @@
7
7
  *
8
8
  * This source code is licensed under the MIT license found in the
9
9
  * LICENSE file in the root directory of this source tree.
10
- */ci.exports=function(){if(li)return ui;li=1;var e=n,t=fi(),o="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},r=t.useSyncExternalStore,i=e.useRef,s=e.useEffect,a=e.useMemo,l=e.useDebugValue;return ui.useSyncExternalStoreWithSelector=function(e,t,n,c,u){var d=i(null);if(null===d.current){var h={hasValue:!1,value:null};d.current=h}else h=d.current;d=a((function(){function e(e){if(!s){if(s=!0,r=e,e=c(e),void 0!==u&&h.hasValue){var t=h.value;if(u(t,e))return i=t}return i=e}if(t=i,o(r,e))return t;var n=c(e);return void 0!==u&&u(t,n)?t:(r=e,i=n)}var r,i,s=!1,a=void 0===n?null:n;return[function(){return e(t())},null===a?void 0:function(){return e(a())}]}),[t,n,c,u]);var f=r(e,d[0],d[1]);return s((function(){h.hasValue=!0,h.value=f}),[f]),l(f),f},ui}();var gi=ii(ci.exports);const pi=e=>{let t;const n=new Set,o=(e,o)=>{const r="function"==typeof e?e(t):e;if(!Object.is(r,t)){const e=t;t=(null!=o?o:"object"!=typeof r)?r:Object.assign({},t,r),n.forEach((n=>n(t,e)))}},r=()=>t,i={setState:o,getState:r,subscribe:e=>(n.add(e),()=>n.delete(e)),destroy:()=>{console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),n.clear()}};return t=e(o,r,i),i},{useSyncExternalStoreWithSelector:mi}=gi;function yi(e,t=e.getState,o){const r=mi(e.subscribe,e.getState,e.getServerState||e.getState,t,o);return n.useDebugValue(r),r}const vi=(e,t)=>{const n=(e=>e?pi(e):pi)(e),o=(e,o=t)=>yi(n,e,o);return Object.assign(o,n),o},xi=n.createContext(null),wi=xi.Provider,bi=Qn.error001();function Si(e,t){const o=n.useContext(xi);if(null===o)throw new Error(bi);return yi(o,e,t)}function Ci(){const e=n.useContext(xi);if(null===e)throw new Error(bi);return n.useMemo((()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe})),[e])}const Ei={display:"none"},ki={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},_i="react-flow__node-desc",Mi="react-flow__edge-desc",Ni="react-flow__aria-live",Pi=e=>e.ariaLiveMessage;function zi({rfId:e}){const n=Si(Pi);return t.jsx("div",{id:`${Ni}-${e}`,"aria-live":"assertive","aria-atomic":"true",style:ki,children:n})}function Oi({rfId:e,disableKeyboardA11y:n}){return t.jsxs(t.Fragment,{children:[t.jsxs("div",{id:`${_i}-${e}`,style:Ei,children:["Press enter or space to select a node.",!n&&"You can then use the arrow keys to move the node around."," Press delete to remove it and escape to cancel."," "]}),t.jsx("div",{id:`${Mi}-${e}`,style:Ei,children:"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel."}),!n&&t.jsx(zi,{rfId:e})]})}const Ai=e=>e.userSelectionActive?"none":"all";function Ii({position:e="top-left",children:n,className:o,style:i,...s}){const a=Si(Ai),l=`${e}`.split("-");return t.jsx("div",{className:r(["react-flow__panel",o,...l]),style:{...i,pointerEvents:a},...s,children:n})}function Ri({proOptions:e,position:n="bottom-right"}){return e?.hideAttribution?null:t.jsx(Ii,{position:n,className:"react-flow__attribution","data-message":"Please only hide this attribution when you are subscribed to React Flow Pro: https://pro.reactflow.dev",children:t.jsx("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution",children:"React Flow"})})}function Di(e,t){if(Object.is(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(const[n,o]of e)if(!Object.is(o,t.get(n)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(const n of e)if(!t.has(n))return!1;return!0}const n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(let o=0;o<n.length;o++)if(!Object.prototype.hasOwnProperty.call(t,n[o])||!Object.is(e[n[o]],t[n[o]]))return!1;return!0}const Li=e=>{const t=[],n=[];for(const[,n]of e.nodeLookup)n.selected&&t.push(n.internals.userNode);for(const[,t]of e.edgeLookup)t.selected&&n.push(t);return{selectedNodes:t,selectedEdges:n}},$i=e=>e.id;function Bi(e,t){return Di(e.selectedNodes.map($i),t.selectedNodes.map($i))&&Di(e.selectedEdges.map($i),t.selectedEdges.map($i))}function Ti({onSelectionChange:e}){const t=Ci(),{selectedNodes:o,selectedEdges:r}=Si(Li,Bi);return n.useEffect((()=>{const n={nodes:o,edges:r};e?.(n),t.getState().onSelectionChangeHandlers.forEach((e=>e(n)))}),[o,r,e]),null}const Vi=e=>!!e.onSelectionChangeHandlers;function ji({onSelectionChange:e}){const n=Si(Vi);return e||n?t.jsx(Ti,{onSelectionChange:e}):null}const Hi=[0,0],Zi={x:0,y:0,zoom:1},Xi=["nodes","edges","defaultNodes","defaultEdges","onConnect","onConnectStart","onConnectEnd","onClickConnectStart","onClickConnectEnd","nodesDraggable","nodesConnectable","nodesFocusable","edgesFocusable","edgesReconnectable","elevateNodesOnSelect","elevateEdgesOnSelect","minZoom","maxZoom","nodeExtent","onNodesChange","onEdgesChange","elementsSelectable","connectionMode","snapGrid","snapToGrid","translateExtent","connectOnClick","defaultEdgeOptions","fitView","fitViewOptions","onNodesDelete","onEdgesDelete","onDelete","onNodeDrag","onNodeDragStart","onNodeDragStop","onSelectionDrag","onSelectionDragStart","onSelectionDragStop","onMoveStart","onMove","onMoveEnd","noPanClassName","nodeOrigin","autoPanOnConnect","autoPanOnNodeDrag","onError","connectionRadius","isValidConnection","selectNodesOnDrag","nodeDragThreshold","onBeforeDelete","debug","autoPanSpeed","paneClickDistance","rfId"],Yi=e=>({setNodes:e.setNodes,setEdges:e.setEdges,setMinZoom:e.setMinZoom,setMaxZoom:e.setMaxZoom,setTranslateExtent:e.setTranslateExtent,setNodeExtent:e.setNodeExtent,reset:e.reset,setDefaultNodesAndEdges:e.setDefaultNodesAndEdges,setPaneClickDistance:e.setPaneClickDistance}),Wi={translateExtent:Jn,nodeOrigin:Hi,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:"nopan",rfId:"1",paneClickDistance:0};function Fi(e){const{setNodes:t,setEdges:o,setMinZoom:r,setMaxZoom:i,setTranslateExtent:s,setNodeExtent:a,reset:l,setDefaultNodesAndEdges:c,setPaneClickDistance:u}=Si(Yi,Di),d=Ci();n.useEffect((()=>(c(e.defaultNodes,e.defaultEdges),()=>{h.current=Wi,l()})),[]);const h=n.useRef(Wi);return n.useEffect((()=>{for(const n of Xi){const l=e[n];l!==h.current[n]&&(void 0!==e[n]&&("nodes"===n?t(l):"edges"===n?o(l):"minZoom"===n?r(l):"maxZoom"===n?i(l):"translateExtent"===n?s(l):"nodeExtent"===n?a(l):"paneClickDistance"===n?u(l):"fitView"===n?d.setState({fitViewOnInit:l}):"fitViewOptions"===n?d.setState({fitViewOnInitOptions:l}):d.setState({[n]:l})))}h.current=e}),Xi.map((t=>e[t]))),null}function Ki(){return"undefined"!=typeof window&&window.matchMedia?window.matchMedia("(prefers-color-scheme: dark)"):null}const Gi="undefined"!=typeof document?document:null;function qi(e=null,t={target:Gi,actInsideInputWithModifier:!0}){const[o,r]=n.useState(!1),i=n.useRef(!1),s=n.useRef(new Set([])),[a,l]=n.useMemo((()=>{if(null!==e){const t=(Array.isArray(e)?e:[e]).filter((e=>"string"==typeof e)).map((e=>e.split("+"))),n=t.reduce(((e,t)=>e.concat(...t)),[]);return[t,n]}return[[],[]]}),[e]);return n.useEffect((()=>{const n=t?.target||Gi;if(null!==e){const e=e=>{i.current=e.ctrlKey||e.metaKey||e.shiftKey;if((!i.current||i.current&&!t.actInsideInputWithModifier)&&Uo(e))return!1;const n=Qi(e.code,l);s.current.add(e[n]),Ui(a,s.current,!1)&&(e.preventDefault(),r(!0))},o=e=>{if((!i.current||i.current&&!t.actInsideInputWithModifier)&&Uo(e))return!1;const n=Qi(e.code,l);Ui(a,s.current,!0)?(r(!1),s.current.clear()):s.current.delete(e[n]),"Meta"===e.key&&s.current.clear(),i.current=!1},c=()=>{s.current.clear(),r(!1)};return n?.addEventListener("keydown",e),n?.addEventListener("keyup",o),window.addEventListener("blur",c),window.addEventListener("contextmenu",c),()=>{n?.removeEventListener("keydown",e),n?.removeEventListener("keyup",o),window.removeEventListener("blur",c),window.removeEventListener("contextmenu",c)}}}),[e,r]),o}function Ui(e,t,n){return e.filter((e=>n||e.length===t.size)).some((e=>e.every((e=>t.has(e)))))}function Qi(e,t){return t.includes(e)?"code":"key"}const Ji=()=>{const e=Ci();return n.useMemo((()=>({zoomIn:t=>{const{panZoom:n}=e.getState();return n?n.scaleBy(1.2,{duration:t?.duration}):Promise.resolve(!1)},zoomOut:t=>{const{panZoom:n}=e.getState();return n?n.scaleBy(1/1.2,{duration:t?.duration}):Promise.resolve(!1)},zoomTo:(t,n)=>{const{panZoom:o}=e.getState();return o?o.scaleTo(t,{duration:n?.duration}):Promise.resolve(!1)},getZoom:()=>e.getState().transform[2],setViewport:async(t,n)=>{const{transform:[o,r,i],panZoom:s}=e.getState();return s?(await s.setViewport({x:t.x??o,y:t.y??r,zoom:t.zoom??i},{duration:n?.duration}),Promise.resolve(!0)):Promise.resolve(!1)},getViewport:()=>{const[t,n,o]=e.getState().transform;return{x:t,y:n,zoom:o}},fitView:t=>{const{nodeLookup:n,minZoom:o,maxZoom:r,panZoom:i,domNode:s}=e.getState();if(!i||!s)return Promise.resolve(!1);const a=wo(n,t),{width:l,height:c}=Ko(s);return bo({nodes:a,width:l,height:c,minZoom:o,maxZoom:r,panZoom:i},t)},setCenter:async(t,n,o)=>{const{width:r,height:i,maxZoom:s,panZoom:a}=e.getState(),l=void 0!==o?.zoom?o.zoom:s,c=r/2-t*l,u=i/2-n*l;return a?(await a.setViewport({x:c,y:u,zoom:l},{duration:o?.duration}),Promise.resolve(!0)):Promise.resolve(!1)},fitBounds:async(t,n)=>{const{width:o,height:r,minZoom:i,maxZoom:s,panZoom:a}=e.getState(),l=jo(t,o,r,i,s,n?.padding??.1);return a?(await a.setViewport(l,{duration:n?.duration}),Promise.resolve(!0)):Promise.resolve(!1)},screenToFlowPosition:(t,n={snapToGrid:!0})=>{const{transform:o,snapGrid:r,domNode:i}=e.getState();if(!i)return t;const{x:s,y:a}=i.getBoundingClientRect(),l={x:t.x-s,y:t.y-a};return To(l,o,n.snapToGrid,r)},flowToScreenPosition:t=>{const{transform:n,domNode:o}=e.getState();if(!o)return t;const{x:r,y:i}=o.getBoundingClientRect(),s=Vo(t,n);return{x:s.x+r,y:s.y+i}}})),[])};function es(e,t){const n=[],o=new Map,r=[];for(const t of e)if("add"!==t.type)if("remove"===t.type||"replace"===t.type)o.set(t.id,[t]);else{const e=o.get(t.id);e?e.push(t):o.set(t.id,[t])}else r.push(t);for(const e of t){const t=o.get(e.id);if(!t){n.push(e);continue}if("remove"===t[0].type)continue;if("replace"===t[0].type){n.push({...t[0].item});continue}const r={...e};for(const e of t)ts(e,r);n.push(r)}return r.length&&r.forEach((e=>{void 0!==e.index?n.splice(e.index,0,{...e.item}):n.push({...e.item})})),n}function ts(e,t){switch(e.type){case"select":t.selected=e.selected;break;case"position":void 0!==e.position&&(t.position=e.position),void 0!==e.dragging&&(t.dragging=e.dragging);break;case"dimensions":void 0!==e.dimensions&&(t.measured??={},t.measured.width=e.dimensions.width,t.measured.height=e.dimensions.height,e.setAttributes&&(t.width=e.dimensions.width,t.height=e.dimensions.height)),"boolean"==typeof e.resizing&&(t.resizing=e.resizing)}}function ns(e,t){return es(e,t)}function os(e,t){return es(e,t)}function rs(e,t){return{id:e,type:"select",selected:t}}function is(e,t=new Set,n=!1){const o=[];for(const[r,i]of e){const e=t.has(r);void 0===i.selected&&!e||i.selected===e||(n&&(i.selected=e),o.push(rs(i.id,e)))}return o}function ss({items:e=[],lookup:t}){const n=[],o=new Map(e.map((e=>[e.id,e])));for(const[o,r]of e.entries()){const e=t.get(r.id),i=e?.internals?.userNode??e;void 0!==i&&i!==r&&n.push({id:r.id,item:r,type:"replace"}),void 0===i&&n.push({item:r,type:"add",index:o})}for(const[e]of t){void 0===o.get(e)&&n.push({id:e,type:"remove"})}return n}function as(e){return{id:e.id,type:"remove"}}const ls=e=>(e=>"id"in e&&"position"in e&&!("source"in e)&&!("target"in e))(e),cs=e=>fo(e);function us(e){return n.forwardRef(e)}const ds="undefined"!=typeof window?n.useLayoutEffect:n.useEffect;function hs(e){const[t,o]=n.useState(!1),[r]=n.useState((()=>function(e){let t=[];return{get:()=>t,reset:()=>{t=[]},push:n=>{t.push(n),e()}}}((()=>o(!0)))));return ds((()=>{if(!t)return void r.reset();const n=r.get();n.length&&(e(n),r.reset()),o(!1)}),[t]),r}const fs=n.createContext(null);function gs({children:e}){const o=Ci(),r=hs(n.useCallback((e=>{const{nodes:t=[],setNodes:n,hasDefaultNodes:r,onNodesChange:i,nodeLookup:s}=o.getState();let a=t;for(const t of e)a="function"==typeof t?t(a):t;r?n(a):i&&i(ss({items:a,lookup:s}))}),[])),i=hs(n.useCallback((e=>{const{edges:t=[],setEdges:n,hasDefaultEdges:r,onEdgesChange:i,edgeLookup:s}=o.getState();let a=t;for(const t of e)a="function"==typeof t?t(a):t;r?n(a):i&&i(ss({items:a,lookup:s}))}),[])),s=n.useMemo((()=>({nodeQueue:r,edgeQueue:i})),[]);return t.jsx(fs.Provider,{value:s,children:e})}const ps=e=>!!e.panZoom;function ms(){const e=Ji(),t=Ci(),o=function(){const e=n.useContext(fs);if(!e)throw new Error("useBatchContext must be used within a BatchProvider");return e}(),r=Si(ps),i=n.useMemo((()=>{const e=e=>t.getState().nodeLookup.get(e),n=e=>{o.nodeQueue.push(e)},r=e=>{o.edgeQueue.push(e)},i=e=>{const{nodeLookup:n,nodeOrigin:o}=t.getState(),r=ls(e)?e:n.get(e.id),i=r.parentId?Wo(r.position,r.measured,r.parentId,n,o):r.position,s={id:r.id,position:i,width:r.measured?.width??r.width,height:r.measured?.height??r.height,data:r.data};return Oo(s)},s=(e,t,o={replace:!1})=>{n((n=>n.map((n=>{if(n.id===e){const e="function"==typeof t?t(n):t;return o.replace&&ls(e)?e:{...n,...e}}return n}))))},a=(e,t,n={replace:!1})=>{r((o=>o.map((o=>{if(o.id===e){const e="function"==typeof t?t(o):t;return n.replace&&cs(e)?e:{...o,...e}}return o}))))};return{getNodes:()=>t.getState().nodes.map((e=>({...e}))),getNode:t=>e(t)?.internals.userNode,getInternalNode:e,getEdges:()=>{const{edges:e=[]}=t.getState();return e.map((e=>({...e})))},getEdge:e=>t.getState().edgeLookup.get(e),setNodes:n,setEdges:r,addNodes:e=>{const t=Array.isArray(e)?e:[e];o.nodeQueue.push((e=>[...e,...t]))},addEdges:e=>{const t=Array.isArray(e)?e:[e];o.edgeQueue.push((e=>[...e,...t]))},toObject:()=>{const{nodes:e=[],edges:n=[],transform:o}=t.getState(),[r,i,s]=o;return{nodes:e.map((e=>({...e}))),edges:n.map((e=>({...e}))),viewport:{x:r,y:i,zoom:s}}},deleteElements:async({nodes:e=[],edges:n=[]})=>{const{nodes:o,edges:r,onNodesDelete:i,onEdgesDelete:s,triggerNodeChanges:a,triggerEdgeChanges:l,onDelete:c,onBeforeDelete:u}=t.getState(),{nodes:d,edges:h}=await async function({nodesToRemove:e=[],edgesToRemove:t=[],nodes:n,edges:o,onBeforeDelete:r}){const i=new Set(e.map((e=>e.id))),s=[];for(const e of n){if(!1===e.deletable)continue;const t=i.has(e.id),n=!t&&e.parentId&&s.find((t=>t.id===e.parentId));(t||n)&&s.push(e)}const a=new Set(t.map((e=>e.id))),l=o.filter((e=>!1!==e.deletable)),c=xo(s,l);for(const e of l)a.has(e.id)&&!c.find((t=>t.id===e.id))&&c.push(e);if(!r)return{edges:c,nodes:s};const u=await r({nodes:s,edges:c});return"boolean"==typeof u?u?{edges:c,nodes:s}:{edges:[],nodes:[]}:u}({nodesToRemove:e,edgesToRemove:n,nodes:o,edges:r,onBeforeDelete:u}),f=h.length>0,g=d.length>0;if(f){const e=h.map(as);s?.(h),l(e)}if(g){const e=d.map(as);i?.(d),a(e)}return(g||f)&&c?.({nodes:d,edges:h}),{deletedNodes:d,deletedEdges:h}},getIntersectingNodes:(e,n=!0,o)=>{const r=Do(e),s=r?e:i(e),a=void 0!==o;return s?(o||t.getState().nodes).filter((o=>{const i=t.getState().nodeLookup.get(o.id);if(i&&!r&&(o.id===e.id||!i.internals.positionAbsolute))return!1;const l=Oo(a?o:i),c=Ro(l,s);return n&&c>0||c>=s.width*s.height})):[]},isNodeIntersecting:(e,t,n=!0)=>{const o=Do(e)?e:i(e);if(!o)return!1;const r=Ro(o,t);return n&&r>0||r>=o.width*o.height},updateNode:s,updateNodeData:(e,t,n={replace:!1})=>{s(e,(e=>{const o="function"==typeof t?t(e):t;return n.replace?{...e,data:o}:{...e,data:{...e.data,...o}}}),n)},updateEdge:a,updateEdgeData:(e,t,n={replace:!1})=>{a(e,(e=>{const o="function"==typeof t?t(e):t;return n.replace?{...e,data:o}:{...e,data:{...e.data,...o}}}),n)},getNodesBounds:e=>{const{nodeLookup:n,nodeOrigin:o}=t.getState();return mo(e,{nodeLookup:n,nodeOrigin:o})},getHandleConnections:({type:e,id:n,nodeId:o})=>Array.from(t.getState().connectionLookup.get(`${o}-${e}-${n??null}`)?.values()??[])}}),[]);return n.useMemo((()=>({...i,...e,viewportInitialized:r})),[r])}const ys=e=>e.selected,vs={actInsideInputWithModifier:!1},xs="undefined"!=typeof window?window:void 0;const ws={position:"absolute",width:"100%",height:"100%",top:0,left:0},bs=e=>({userSelectionActive:e.userSelectionActive,lib:e.lib});function Ss({onPaneContextMenu:o,zoomOnScroll:r=!0,zoomOnPinch:i=!0,panOnScroll:s=!1,panOnScrollSpeed:a=.5,panOnScrollMode:l=e.PanOnScrollMode.Free,zoomOnDoubleClick:c=!0,panOnDrag:u=!0,defaultViewport:d,translateExtent:h,minZoom:f,maxZoom:g,zoomActivationKeyCode:p,preventScrolling:m=!0,children:y,noWheelClassName:v,noPanClassName:x,onViewportChange:w,isControlledViewport:b,paneClickDistance:S}){const C=Ci(),E=n.useRef(null),{userSelectionActive:k,lib:_}=Si(bs,Di),M=qi(p),N=n.useRef();!function(e){const t=Ci();n.useEffect((()=>{const n=()=>{if(!e.current)return!1;const n=Ko(e.current);0!==n.height&&0!==n.width||t.getState().onError?.("004",Qn.error004()),t.setState({width:n.width||500,height:n.height||500})};if(e.current){n(),window.addEventListener("resize",n);const t=new ResizeObserver((()=>n()));return t.observe(e.current),()=>{window.removeEventListener("resize",n),t&&e.current&&t.unobserve(e.current)}}}),[])}(E);const P=n.useCallback((e=>{w?.({x:e[0],y:e[1],zoom:e[2]}),b||C.setState({transform:e})}),[w,b]);return n.useEffect((()=>{if(E.current){N.current=Fr({domNode:E.current,minZoom:f,maxZoom:g,translateExtent:h,viewport:d,paneClickDistance:S,onDraggingChange:e=>C.setState({paneDragging:e}),onPanZoomStart:(e,t)=>{const{onViewportChangeStart:n,onMoveStart:o}=C.getState();o?.(e,t),n?.(t)},onPanZoom:(e,t)=>{const{onViewportChange:n,onMove:o}=C.getState();o?.(e,t),n?.(t)},onPanZoomEnd:(e,t)=>{const{onViewportChangeEnd:n,onMoveEnd:o}=C.getState();o?.(e,t),n?.(t)}});const{x:e,y:t,zoom:n}=N.current.getViewport();return C.setState({panZoom:N.current,transform:[e,t,n],domNode:E.current.closest(".react-flow")}),()=>{N.current?.destroy()}}}),[]),n.useEffect((()=>{N.current?.update({onPaneContextMenu:o,zoomOnScroll:r,zoomOnPinch:i,panOnScroll:s,panOnScrollSpeed:a,panOnScrollMode:l,zoomOnDoubleClick:c,panOnDrag:u,zoomActivationKeyPressed:M,preventScrolling:m,noPanClassName:x,userSelectionActive:k,noWheelClassName:v,lib:_,onTransformChange:P})}),[o,r,i,s,a,l,c,u,M,m,x,k,v,_,P]),t.jsx("div",{className:"react-flow__renderer",ref:E,style:ws,children:y})}const Cs=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function Es(){const{userSelectionActive:e,userSelectionRect:n}=Si(Cs,Di);return e&&n?t.jsx("div",{className:"react-flow__selection react-flow__container",style:{width:n.width,height:n.height,transform:`translate(${n.x}px, ${n.y}px)`}}):null}const ks=(e,t)=>n=>{n.target===t.current&&e?.(n)},_s=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,dragging:e.paneDragging});function Ms({isSelecting:o,selectionKeyPressed:i,selectionMode:s=e.SelectionMode.Full,panOnDrag:a,selectionOnDrag:l,onSelectionStart:c,onSelectionEnd:u,onPaneClick:d,onPaneContextMenu:h,onPaneScroll:f,onPaneMouseEnter:g,onPaneMouseMove:p,onPaneMouseLeave:m,children:y}){const v=n.useRef(null),x=Ci(),w=n.useRef(0),b=n.useRef(0),S=n.useRef(),C=n.useRef(new Map),{userSelectionActive:E,elementsSelectable:k,dragging:_}=Si(_s,Di),M=k&&(o||E),N=n.useRef(!1),P=n.useRef(!1),z=e=>{N.current?N.current=!1:(d?.(e),x.getState().resetSelectedElements(),x.setState({nodesSelectionActive:!1}))},O=f?e=>f(e):void 0,A=!0===a||Array.isArray(a)&&a.includes(0);return t.jsxs("div",{className:r(["react-flow__pane",{draggable:A,dragging:_,selection:o}]),onClick:M?void 0:ks(z,v),onContextMenu:ks((e=>{Array.isArray(a)&&a?.includes(2)?e.preventDefault():h?.(e)}),v),onWheel:ks(O,v),onPointerEnter:M?void 0:g,onPointerDown:M?e=>{const{resetSelectedElements:t,domNode:n,edgeLookup:r}=x.getState();if(S.current=n?.getBoundingClientRect(),!k||!o||0!==e.button||e.target!==v.current||!S.current)return;e.target?.setPointerCapture?.(e.pointerId),P.current=!0,N.current=!1,C.current=new Map;for(const[e,t]of r)C.current.set(t.source,C.current.get(t.source)?.add(e)||new Set([e])),C.current.set(t.target,C.current.get(t.target)?.add(e)||new Set([e]));const{x:i,y:s}=Jo(e.nativeEvent,S.current);t(),x.setState({userSelectionRect:{width:0,height:0,startX:i,startY:s,x:i,y:s}}),c?.(e)}:p,onPointerMove:M?t=>{const{userSelectionRect:n,edgeLookup:o,transform:r,nodeLookup:i,triggerNodeChanges:a,triggerEdgeChanges:l}=x.getState();if(!S.current||!n)return;N.current=!0;const{x:c,y:u}=Jo(t.nativeEvent,S.current),{startX:d,startY:h}=n,f={startX:d,startY:h,x:c<d?c:d,y:u<h?u:h,width:Math.abs(c-d),height:Math.abs(u-h)},g=vo(i,f,r,s===e.SelectionMode.Partial,!0),p=new Set,m=new Set;for(const e of g){m.add(e.id);const t=C.current.get(e.id);if(t)for(const e of t)p.add(e)}if(w.current!==m.size){w.current=m.size;a(is(i,m,!0))}if(b.current!==p.size){b.current=p.size;l(is(o,p))}x.setState({userSelectionRect:f,userSelectionActive:!0,nodesSelectionActive:!1})}:p,onPointerUp:M?e=>{if(0!==e.button||!P.current)return;e.target?.releasePointerCapture?.(e.pointerId);const{userSelectionRect:t}=x.getState();!E&&t&&e.target===v.current&&z?.(e),w.current>0&&x.setState({nodesSelectionActive:!0}),x.setState({userSelectionActive:!1,userSelectionRect:null}),w.current=0,b.current=0,u?.(e),(i||l)&&(N.current=!1),P.current=!1}:void 0,onPointerLeave:m,ref:v,style:ws,children:[y,t.jsx(Es,{})]})}function Ns({id:e,store:t,unselect:n=!1,nodeRef:o}){const{addSelectedNodes:r,unselectNodesAndEdges:i,multiSelectionActive:s,nodeLookup:a,onError:l}=t.getState(),c=a.get(e);c?(t.setState({nodesSelectionActive:!1}),c.selected?(n||c.selected&&s)&&(i({nodes:[c],edges:[]}),requestAnimationFrame((()=>o?.current?.blur()))):r([e])):l?.("012",Qn.error012(e))}function Ps({nodeRef:e,disabled:t=!1,noDragClassName:o,handleSelector:r,nodeId:i,isSelectable:s,nodeClickDistance:a}){const l=Ci(),[c,u]=n.useState(!1),d=n.useRef();return n.useEffect((()=>{d.current=Ar({getStoreItems:()=>l.getState(),onNodeMouseDown:t=>{Ns({id:t,store:l,nodeRef:e})},onDragStart:()=>{u(!0)},onDragStop:()=>{u(!1)}})}),[]),n.useEffect((()=>{if(t)d.current?.destroy();else if(e.current)return d.current?.update({noDragClassName:o,handleSelector:r,domNode:e.current,isSelectable:s,nodeId:i,nodeClickDistance:a}),()=>{d.current?.destroy()}}),[o,r,t,s,e,i]),c}const zs=e=>t=>t.selected&&(t.draggable||e&&void 0===t.draggable);function Os(){const e=Ci();return n.useCallback((t=>{const{nodeExtent:n,snapToGrid:o,snapGrid:r,nodesDraggable:i,onError:s,updateNodePositions:a,nodeLookup:l,nodeOrigin:c}=e.getState(),u=new Map,d=zs(i),h=o?r[0]:5,f=o?r[1]:5,g=t.direction.x*h*t.factor,p=t.direction.y*f*t.factor;for(const[,e]of l){if(!d(e))continue;let t={x:e.internals.positionAbsolute.x+g,y:e.internals.positionAbsolute.y+p};o&&(t=Bo(t,r));const{position:i,positionAbsolute:a}=So({nodeId:e.id,nextPosition:t,nodeLookup:l,nodeExtent:n,nodeOrigin:c,onError:s});e.position=i,e.internals.positionAbsolute=a,u.set(e.id,e)}a(u)}),[])}const As=n.createContext(null),Is=As.Provider;As.Consumer;const Rs=()=>n.useContext(As),Ds=e=>({connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName,rfId:e.rfId});const Ls=n.memo(us((function({type:n="source",position:o=e.Position.Top,isValidConnection:i,isConnectable:s=!0,isConnectableStart:a=!0,isConnectableEnd:l=!0,id:c,onConnect:u,children:d,className:h,onMouseDown:f,onTouchStart:g,...p},m){const y=c||null,v="target"===n,x=Ci(),w=Rs(),{connectOnClick:b,noPanClassName:S,rfId:C}=Si(Ds,Di),{connectingFrom:E,connectingTo:k,clickConnecting:_,isPossibleEndHandle:M,connectionInProcess:N,valid:P}=Si(((t,n,o)=>r=>{const{connectionClickStartHandle:i,connectionMode:s,connection:a}=r,{fromHandle:l,toHandle:c,isValid:u}=a,d=c?.nodeId===t&&c?.id===n&&c?.type===o;return{connectingFrom:l?.nodeId===t&&l?.id===n&&l?.type===o,connectingTo:d,clickConnecting:i?.nodeId===t&&i?.id===n&&i?.type===o,isPossibleEndHandle:s===e.ConnectionMode.Strict?l?.type!==o:t!==l?.nodeId||n!==l?.id,connectionInProcess:!!l,valid:d&&u}})(w,y,n),Di);w||x.getState().onError?.("010",Qn.error010());const z=e=>{const{defaultEdgeOptions:t,onConnect:n,hasDefaultEdges:o}=x.getState(),r={...t,...e};if(o){const{edges:e,setEdges:t}=x.getState();t(lr(r,e))}n?.(r),u?.(r)},O=e=>{if(!w)return;const t=Qo(e.nativeEvent);if(a&&(t&&0===e.button||!t)){const t=x.getState();Tr.onPointerDown(e.nativeEvent,{autoPanOnConnect:t.autoPanOnConnect,connectionMode:t.connectionMode,connectionRadius:t.connectionRadius,domNode:t.domNode,nodeLookup:t.nodeLookup,lib:t.lib,isTarget:v,handleId:y,nodeId:w,flowId:t.rfId,panBy:t.panBy,cancelConnection:t.cancelConnection,onConnectStart:t.onConnectStart,onConnectEnd:t.onConnectEnd,updateConnection:t.updateConnection,onConnect:z,isValidConnection:i||t.isValidConnection,getTransform:()=>x.getState().transform,getFromHandle:()=>x.getState().connection.fromHandle,autoPanSpeed:t.autoPanSpeed})}t?f?.(e):g?.(e)};return t.jsx("div",{"data-handleid":y,"data-nodeid":w,"data-handlepos":o,"data-id":`${C}-${w}-${y}-${n}`,className:r(["react-flow__handle",`react-flow__handle-${o}`,"nodrag",S,h,{source:!v,target:v,connectable:s,connectablestart:a,connectableend:l,clickconnecting:_,connectingfrom:E,connectingto:k,valid:P,connectionindicator:s&&(!N||M)&&(N?l:a)}]),onMouseDown:O,onTouchStart:O,onClick:b?e=>{const{onClickConnectStart:t,onClickConnectEnd:o,connectionClickStartHandle:r,connectionMode:s,isValidConnection:l,lib:c,rfId:u,nodeLookup:d,connection:h}=x.getState();if(!w||!r&&!a)return;if(!r)return t?.(e.nativeEvent,{nodeId:w,handleId:y,handleType:n}),void x.setState({connectionClickStartHandle:{nodeId:w,type:n,id:y}});const f=Go(e.target),g=i||l,{connection:p,isValid:m}=Tr.isValid(e.nativeEvent,{handle:{nodeId:w,id:y,type:n},connectionMode:s,fromNodeId:r.nodeId,fromHandleId:r.id||null,fromType:r.type,isValidConnection:g,flowId:u,doc:f,lib:c,nodeLookup:d});m&&p&&z(p);const v=structuredClone(h);delete v.inProgress,v.toPosition=v.toHandle?v.toHandle.position:null,o?.(e,v),x.setState({connectionClickStartHandle:null})}:void 0,ref:m,...p,children:d})})));const $s={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},Bs={input:function({data:n,isConnectable:o,sourcePosition:r=e.Position.Bottom}){return t.jsxs(t.Fragment,{children:[n?.label,t.jsx(Ls,{type:"source",position:r,isConnectable:o})]})},default:function({data:n,isConnectable:o,targetPosition:r=e.Position.Top,sourcePosition:i=e.Position.Bottom}){return t.jsxs(t.Fragment,{children:[t.jsx(Ls,{type:"target",position:r,isConnectable:o}),n?.label,t.jsx(Ls,{type:"source",position:i,isConnectable:o})]})},output:function({data:n,isConnectable:o,targetPosition:r=e.Position.Top}){return t.jsxs(t.Fragment,{children:[t.jsx(Ls,{type:"target",position:r,isConnectable:o}),n?.label]})},group:function(){return null}};const Ts=e=>{const{width:t,height:n,x:o,y:r}=yo(e.nodeLookup,{filter:e=>!!e.selected});return{width:Lo(t)?t:null,height:Lo(n)?n:null,userSelectionActive:e.userSelectionActive,transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]}) translate(${o}px,${r}px)`}};function Vs({onSelectionContextMenu:e,noPanClassName:o,disableKeyboardA11y:i}){const s=Ci(),{width:a,height:l,transformString:c,userSelectionActive:u}=Si(Ts,Di),d=Os(),h=n.useRef(null);if(n.useEffect((()=>{i||h.current?.focus({preventScroll:!0})}),[i]),Ps({nodeRef:h}),u||!a||!l)return null;const f=e?t=>{const n=s.getState().nodes.filter((e=>e.selected));e(t,n)}:void 0;return t.jsx("div",{className:r(["react-flow__nodesselection","react-flow__container",o]),style:{transform:c},children:t.jsx("div",{ref:h,className:"react-flow__nodesselection-rect",onContextMenu:f,tabIndex:i?void 0:-1,onKeyDown:i?void 0:e=>{Object.prototype.hasOwnProperty.call($s,e.key)&&d({direction:$s[e.key],factor:e.shiftKey?4:1})},style:{width:a,height:l}})})}const js="undefined"!=typeof window?window:void 0,Hs=e=>({nodesSelectionActive:e.nodesSelectionActive,userSelectionActive:e.userSelectionActive});function Zs({children:e,onPaneClick:o,onPaneMouseEnter:r,onPaneMouseMove:i,onPaneMouseLeave:s,onPaneContextMenu:a,onPaneScroll:l,paneClickDistance:c,deleteKeyCode:u,selectionKeyCode:d,selectionOnDrag:h,selectionMode:f,onSelectionStart:g,onSelectionEnd:p,multiSelectionKeyCode:m,panActivationKeyCode:y,zoomActivationKeyCode:v,elementsSelectable:x,zoomOnScroll:w,zoomOnPinch:b,panOnScroll:S,panOnScrollSpeed:C,panOnScrollMode:E,zoomOnDoubleClick:k,panOnDrag:_,defaultViewport:M,translateExtent:N,minZoom:P,maxZoom:z,preventScrolling:O,onSelectionContextMenu:A,noWheelClassName:I,noPanClassName:R,disableKeyboardA11y:D,onViewportChange:L,isControlledViewport:$}){const{nodesSelectionActive:B,userSelectionActive:T}=Si(Hs),V=qi(d,{target:js}),j=qi(y,{target:js}),H=j||_,Z=j||S,X=h&&!0!==H,Y=V||T||X;return function({deleteKeyCode:e,multiSelectionKeyCode:t}){const o=Ci(),{deleteElements:r}=ms(),i=qi(e,vs),s=qi(t,{target:xs});n.useEffect((()=>{if(i){const{edges:e,nodes:t}=o.getState();r({nodes:t.filter(ys),edges:e.filter(ys)}),o.setState({nodesSelectionActive:!1})}}),[i]),n.useEffect((()=>{o.setState({multiSelectionActive:s})}),[s])}({deleteKeyCode:u,multiSelectionKeyCode:m}),t.jsx(Ss,{onPaneContextMenu:a,elementsSelectable:x,zoomOnScroll:w,zoomOnPinch:b,panOnScroll:Z,panOnScrollSpeed:C,panOnScrollMode:E,zoomOnDoubleClick:k,panOnDrag:!V&&H,defaultViewport:M,translateExtent:N,minZoom:P,maxZoom:z,zoomActivationKeyCode:v,preventScrolling:O,noWheelClassName:I,noPanClassName:R,onViewportChange:L,isControlledViewport:$,paneClickDistance:c,children:t.jsxs(Ms,{onSelectionStart:g,onSelectionEnd:p,onPaneClick:o,onPaneMouseEnter:r,onPaneMouseMove:i,onPaneMouseLeave:s,onPaneContextMenu:a,onPaneScroll:l,panOnDrag:H,isSelecting:!!Y,selectionMode:f,selectionKeyPressed:V,selectionOnDrag:X,children:[e,B&&t.jsx(Vs,{onSelectionContextMenu:A,noPanClassName:R,disableKeyboardA11y:D})]})})}Zs.displayName="FlowRenderer";const Xs=n.memo(Zs),Ys=e=>t=>e?vo(t.nodeLookup,{x:0,y:0,width:t.width,height:t.height},t.transform,!0).map((e=>e.id)):Array.from(t.nodeLookup.keys());const Ws=e=>e.updateNodeInternals;function Fs({id:e,onClick:o,onMouseEnter:i,onMouseMove:s,onMouseLeave:a,onContextMenu:l,onDoubleClick:c,nodesDraggable:u,elementsSelectable:d,nodesConnectable:h,nodesFocusable:f,resizeObserver:g,noDragClassName:p,noPanClassName:m,disableKeyboardA11y:y,rfId:v,nodeTypes:x,nodeExtent:w,nodeClickDistance:b,onError:S}){const{node:C,internals:E,isParent:k}=Si((t=>{const n=t.nodeLookup.get(e),o=t.parentLookup.has(e);return{node:n,internals:n.internals,isParent:o}}),Di);let _=C.type||"default",M=x?.[_]||Bs[_];void 0===M&&(S?.("003",Qn.error003(_)),_="default",M=Bs.default);const N=!!(C.draggable||u&&void 0===C.draggable),P=!!(C.selectable||d&&void 0===C.selectable),z=!!(C.connectable||h&&void 0===C.connectable),O=!!(C.focusable||f&&void 0===C.focusable),A=Ci(),I=Yo(C),R=function({node:e,nodeType:t,hasDimensions:o,resizeObserver:r}){const i=Ci(),s=n.useRef(null),a=n.useRef(null),l=n.useRef(e.sourcePosition),c=n.useRef(e.targetPosition),u=n.useRef(t),d=o&&!!e.internals.handleBounds;return n.useEffect((()=>{!s.current||e.hidden||d&&a.current===s.current||(a.current&&r?.unobserve(a.current),r?.observe(s.current),a.current=s.current)}),[d,e.hidden]),n.useEffect((()=>()=>{a.current&&(r?.unobserve(a.current),a.current=null)}),[]),n.useEffect((()=>{if(s.current){const n=u.current!==t,o=l.current!==e.sourcePosition,r=c.current!==e.targetPosition;(n||o||r)&&(u.current=t,l.current=e.sourcePosition,c.current=e.targetPosition,i.getState().updateNodeInternals(new Map([[e.id,{id:e.id,nodeElement:s.current,force:!0}]])))}}),[e.id,t,e.sourcePosition,e.targetPosition]),s}({node:C,nodeType:_,hasDimensions:I,resizeObserver:g}),D=Ps({nodeRef:R,disabled:C.hidden||!N,noDragClassName:p,handleSelector:C.dragHandle,nodeId:e,isSelectable:P,nodeClickDistance:b}),L=Os();if(C.hidden)return null;const $=Xo(C),B=function(e){return void 0===e.internals.handleBounds?{width:e.width??e.initialWidth??e.style?.width,height:e.height??e.initialHeight??e.style?.height}:{width:e.width??e.style?.width,height:e.height??e.style?.height}}(C),T=P||N||o||i||s||a,V=i?e=>i(e,{...E.userNode}):void 0,j=s?e=>s(e,{...E.userNode}):void 0,H=a?e=>a(e,{...E.userNode}):void 0,Z=l?e=>l(e,{...E.userNode}):void 0,X=c?e=>c(e,{...E.userNode}):void 0;return t.jsx("div",{className:r(["react-flow__node",`react-flow__node-${_}`,{[m]:N},C.className,{selected:C.selected,selectable:P,parent:k,draggable:N,dragging:D}]),ref:R,style:{zIndex:E.z,transform:`translate(${E.positionAbsolute.x}px,${E.positionAbsolute.y}px)`,pointerEvents:T?"all":"none",visibility:I?"visible":"hidden",...C.style,...B},"data-id":e,"data-testid":`rf__node-${e}`,onMouseEnter:V,onMouseMove:j,onMouseLeave:H,onContextMenu:Z,onClick:t=>{const{selectNodesOnDrag:n,nodeDragThreshold:r}=A.getState();P&&(!n||!N||r>0)&&Ns({id:e,store:A,nodeRef:R}),o&&o(t,{...E.userNode})},onDoubleClick:X,onKeyDown:O?t=>{if(!Uo(t.nativeEvent)&&!y)if(eo.includes(t.key)&&P){const n="Escape"===t.key;Ns({id:e,store:A,unselect:n,nodeRef:R})}else N&&C.selected&&Object.prototype.hasOwnProperty.call($s,t.key)&&(A.setState({ariaLiveMessage:`Moved selected node ${t.key.replace("Arrow","").toLowerCase()}. New position, x: ${~~E.positionAbsolute.x}, y: ${~~E.positionAbsolute.y}`}),L({direction:$s[t.key],factor:t.shiftKey?4:1}))}:void 0,tabIndex:O?0:void 0,role:O?"button":void 0,"aria-describedby":y?void 0:`${_i}-${v}`,"aria-label":C.ariaLabel,children:t.jsx(Is,{value:e,children:t.jsx(M,{id:e,data:C.data,type:_,positionAbsoluteX:E.positionAbsolute.x,positionAbsoluteY:E.positionAbsolute.y,selected:C.selected,selectable:P,draggable:N,deletable:C.deletable??!0,isConnectable:z,sourcePosition:C.sourcePosition,targetPosition:C.targetPosition,dragging:D,dragHandle:C.dragHandle,zIndex:E.z,parentId:C.parentId,...$})})})}const Ks=e=>({nodesDraggable:e.nodesDraggable,nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,onError:e.onError});function Gs(e){const{nodesDraggable:o,nodesConnectable:r,nodesFocusable:i,elementsSelectable:s,onError:a}=Si(Ks,Di),l=(c=e.onlyRenderVisibleElements,Si(n.useCallback(Ys(c),[c]),Di));var c;const u=function(){const e=Si(Ws),[t]=n.useState((()=>"undefined"==typeof ResizeObserver?null:new ResizeObserver((t=>{const n=new Map;t.forEach((e=>{const t=e.target.getAttribute("data-id");n.set(t,{id:t,nodeElement:e.target,force:!0})})),e(n)}))));return n.useEffect((()=>()=>{t?.disconnect()}),[t]),t}();return t.jsx("div",{className:"react-flow__nodes",style:ws,children:l.map((n=>t.jsx(Fs,{id:n,nodeTypes:e.nodeTypes,nodeExtent:e.nodeExtent,onClick:e.onNodeClick,onMouseEnter:e.onNodeMouseEnter,onMouseMove:e.onNodeMouseMove,onMouseLeave:e.onNodeMouseLeave,onContextMenu:e.onNodeContextMenu,onDoubleClick:e.onNodeDoubleClick,noDragClassName:e.noDragClassName,noPanClassName:e.noPanClassName,rfId:e.rfId,disableKeyboardA11y:e.disableKeyboardA11y,resizeObserver:u,nodesDraggable:o,nodesConnectable:r,nodesFocusable:i,elementsSelectable:s,nodeClickDistance:e.nodeClickDistance,onError:a},n)))})}Gs.displayName="NodeRenderer";const qs=n.memo(Gs);const Us={[e.MarkerType.Arrow]:({color:e="none",strokeWidth:n=1})=>t.jsx("polyline",{style:{stroke:e,strokeWidth:n},strokeLinecap:"round",strokeLinejoin:"round",fill:"none",points:"-5,-4 0,0 -5,4"}),[e.MarkerType.ArrowClosed]:({color:e="none",strokeWidth:n=1})=>t.jsx("polyline",{style:{stroke:e,fill:e,strokeWidth:n},strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"})};const Qs=({id:e,type:o,color:r,width:i=12.5,height:s=12.5,markerUnits:a="strokeWidth",strokeWidth:l,orient:c="auto-start-reverse"})=>{const u=function(e){const t=Ci();return n.useMemo((()=>Object.prototype.hasOwnProperty.call(Us,e)?Us[e]:(t.getState().onError?.("009",Qn.error009(e)),null)),[e])}(o);return u?t.jsx("marker",{className:"react-flow__arrowhead",id:e,markerWidth:`${i}`,markerHeight:`${s}`,viewBox:"-10 -10 20 20",markerUnits:a,orient:c,refX:"0",refY:"0",children:t.jsx(u,{color:r,strokeWidth:l})}):null},Js=({defaultColor:e,rfId:o})=>{const r=Si((e=>e.edges)),i=Si((e=>e.defaultEdgeOptions)),s=n.useMemo((()=>{const t=function(e,{id:t,defaultColor:n,defaultMarkerStart:o,defaultMarkerEnd:r}){const i=new Set;return e.reduce(((e,s)=>([s.markerStart||o,s.markerEnd||r].forEach((o=>{if(o&&"object"==typeof o){const r=vr(o,t);i.has(r)||(e.push({id:r,color:o.color||n,...o}),i.add(r))}})),e)),[]).sort(((e,t)=>e.id.localeCompare(t.id)))}(r,{id:o,defaultColor:e,defaultMarkerStart:i?.markerStart,defaultMarkerEnd:i?.markerEnd});return t}),[r,i,o,e]);return s.length?t.jsx("svg",{className:"react-flow__marker",children:t.jsx("defs",{children:s.map((e=>t.jsx(Qs,{id:e.id,type:e.type,color:e.color,width:e.width,height:e.height,markerUnits:e.markerUnits,strokeWidth:e.strokeWidth,orient:e.orient},e.id)))})}):null};Js.displayName="MarkerDefinitions";var ea=n.memo(Js);function ta({x:e,y:o,label:i,labelStyle:s={},labelShowBg:a=!0,labelBgStyle:l={},labelBgPadding:c=[2,4],labelBgBorderRadius:u=2,children:d,className:h,...f}){const[g,p]=n.useState({x:1,y:0,width:0,height:0}),m=r(["react-flow__edge-textwrapper",h]),y=n.useRef(null);return n.useEffect((()=>{if(y.current){const e=y.current.getBBox();p({x:e.x,y:e.y,width:e.width,height:e.height})}}),[i]),void 0!==i&&i?t.jsxs("g",{transform:`translate(${e-g.width/2} ${o-g.height/2})`,className:m,visibility:g.width?"visible":"hidden",...f,children:[a&&t.jsx("rect",{width:g.width+2*c[0],x:-c[0],y:-c[1],height:g.height+2*c[1],className:"react-flow__edge-textbg",style:l,rx:u,ry:u}),t.jsx("text",{className:"react-flow__edge-text",y:g.height/2,dy:"0.3em",ref:y,style:s,children:i}),d]}):null}ta.displayName="EdgeText";const na=n.memo(ta);function oa({id:e,path:n,labelX:o,labelY:i,label:s,labelStyle:a,labelShowBg:l,labelBgStyle:c,labelBgPadding:u,labelBgBorderRadius:d,style:h,markerEnd:f,markerStart:g,className:p,interactionWidth:m=20}){return t.jsxs(t.Fragment,{children:[t.jsx("path",{id:e,style:h,d:n,fill:"none",className:r(["react-flow__edge-path",p]),markerEnd:f,markerStart:g}),m&&t.jsx("path",{d:n,fill:"none",strokeOpacity:0,strokeWidth:m,className:"react-flow__edge-interaction"}),s&&Lo(o)&&Lo(i)?t.jsx(na,{x:o,y:i,label:s,labelStyle:a,labelShowBg:l,labelBgStyle:c,labelBgPadding:u,labelBgBorderRadius:d}):null]})}function ra({pos:t,x1:n,y1:o,x2:r,y2:i}){return t===e.Position.Left||t===e.Position.Right?[.5*(n+r),o]:[n,.5*(o+i)]}function ia({sourceX:t,sourceY:n,sourcePosition:o=e.Position.Bottom,targetX:r,targetY:i,targetPosition:s=e.Position.Top}){const[a,l]=ra({pos:o,x1:t,y1:n,x2:r,y2:i}),[c,u]=ra({pos:s,x1:r,y1:i,x2:t,y2:n}),[d,h,f,g]=tr({sourceX:t,sourceY:n,targetX:r,targetY:i,sourceControlX:a,sourceControlY:l,targetControlX:c,targetControlY:u});return[`M${t},${n} C${a},${l} ${c},${u} ${r},${i}`,d,h,f,g]}function sa(o){return n.memo((({id:n,sourceX:r,sourceY:i,targetX:s,targetY:a,sourcePosition:l=e.Position.Bottom,targetPosition:c=e.Position.Top,label:u,labelStyle:d,labelShowBg:h,labelBgStyle:f,labelBgPadding:g,labelBgBorderRadius:p,style:m,markerEnd:y,markerStart:v,interactionWidth:x})=>{const[w,b,S]=ia({sourceX:r,sourceY:i,sourcePosition:l,targetX:s,targetY:a,targetPosition:c}),C=o.isInternal?void 0:n;return t.jsx(oa,{id:C,path:w,labelX:b,labelY:S,label:u,labelStyle:d,labelShowBg:h,labelBgStyle:f,labelBgPadding:g,labelBgBorderRadius:p,style:m,markerEnd:y,markerStart:v,interactionWidth:x})}))}const aa=sa({isInternal:!1}),la=sa({isInternal:!0});function ca(o){return n.memo((({id:n,sourceX:r,sourceY:i,targetX:s,targetY:a,label:l,labelStyle:c,labelShowBg:u,labelBgStyle:d,labelBgPadding:h,labelBgBorderRadius:f,style:g,sourcePosition:p=e.Position.Bottom,targetPosition:m=e.Position.Top,markerEnd:y,markerStart:v,pathOptions:x,interactionWidth:w})=>{const[b,S,C]=fr({sourceX:r,sourceY:i,sourcePosition:p,targetX:s,targetY:a,targetPosition:m,borderRadius:x?.borderRadius,offset:x?.offset}),E=o.isInternal?void 0:n;return t.jsx(oa,{id:E,path:b,labelX:S,labelY:C,label:l,labelStyle:c,labelShowBg:u,labelBgStyle:d,labelBgPadding:h,labelBgBorderRadius:f,style:g,markerEnd:y,markerStart:v,interactionWidth:w})}))}aa.displayName="SimpleBezierEdge",la.displayName="SimpleBezierEdgeInternal";const ua=ca({isInternal:!1}),da=ca({isInternal:!0});function ha(e){return n.memo((({id:o,...r})=>{const i=e.isInternal?void 0:o;return t.jsx(ua,{...r,id:i,pathOptions:n.useMemo((()=>({borderRadius:0,offset:r.pathOptions?.offset})),[r.pathOptions?.offset])})}))}ua.displayName="SmoothStepEdge",da.displayName="SmoothStepEdgeInternal";const fa=ha({isInternal:!1}),ga=ha({isInternal:!0});function pa(e){return n.memo((({id:n,sourceX:o,sourceY:r,targetX:i,targetY:s,label:a,labelStyle:l,labelShowBg:c,labelBgStyle:u,labelBgPadding:d,labelBgBorderRadius:h,style:f,markerEnd:g,markerStart:p,interactionWidth:m})=>{const[y,v,x]=cr({sourceX:o,sourceY:r,targetX:i,targetY:s}),w=e.isInternal?void 0:n;return t.jsx(oa,{id:w,path:y,labelX:v,labelY:x,label:a,labelStyle:l,labelShowBg:c,labelBgStyle:u,labelBgPadding:d,labelBgBorderRadius:h,style:f,markerEnd:g,markerStart:p,interactionWidth:m})}))}fa.displayName="StepEdge",ga.displayName="StepEdgeInternal";const ma=pa({isInternal:!1}),ya=pa({isInternal:!0});function va(o){return n.memo((({id:n,sourceX:r,sourceY:i,targetX:s,targetY:a,sourcePosition:l=e.Position.Bottom,targetPosition:c=e.Position.Top,label:u,labelStyle:d,labelShowBg:h,labelBgStyle:f,labelBgPadding:g,labelBgBorderRadius:p,style:m,markerEnd:y,markerStart:v,pathOptions:x,interactionWidth:w})=>{const[b,S,C]=rr({sourceX:r,sourceY:i,sourcePosition:l,targetX:s,targetY:a,targetPosition:c,curvature:x?.curvature}),E=o.isInternal?void 0:n;return t.jsx(oa,{id:E,path:b,labelX:S,labelY:C,label:u,labelStyle:d,labelShowBg:h,labelBgStyle:f,labelBgPadding:g,labelBgBorderRadius:p,style:m,markerEnd:y,markerStart:v,interactionWidth:w})}))}ma.displayName="StraightEdge",ya.displayName="StraightEdgeInternal";const xa=va({isInternal:!1}),wa=va({isInternal:!0});xa.displayName="BezierEdge",wa.displayName="BezierEdgeInternal";const ba={default:wa,straight:ya,step:ga,smoothstep:da,simplebezier:la},Sa={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null},Ca=(t,n,o)=>o===e.Position.Left?t-n:o===e.Position.Right?t+n:t,Ea=(t,n,o)=>o===e.Position.Top?t-n:o===e.Position.Bottom?t+n:t,ka="react-flow__edgeupdater";function _a({position:e,centerX:n,centerY:o,radius:i=10,onMouseDown:s,onMouseEnter:a,onMouseOut:l,type:c}){return t.jsx("circle",{onMouseDown:s,onMouseEnter:a,onMouseOut:l,className:r([ka,`${ka}-${c}`]),cx:Ca(n,i,e),cy:Ea(o,i,e),r:i,stroke:"transparent",fill:"transparent"})}function Ma({isReconnectable:e,reconnectRadius:n,edge:o,sourceX:r,sourceY:i,targetX:s,targetY:a,sourcePosition:l,targetPosition:c,onReconnect:u,onReconnectStart:d,onReconnectEnd:h,setReconnecting:f,setUpdateHover:g}){const p=Ci(),m=(e,t)=>{if(0!==e.button)return;const{autoPanOnConnect:n,domNode:r,isValidConnection:i,connectionMode:s,connectionRadius:a,lib:l,onConnectStart:c,onConnectEnd:g,cancelConnection:m,nodeLookup:y,rfId:v,panBy:x,updateConnection:w}=p.getState(),b="target"===t.type;f(!0),d?.(e,o,t.type);Tr.onPointerDown(e.nativeEvent,{autoPanOnConnect:n,connectionMode:s,connectionRadius:a,domNode:r,handleId:t.id,nodeId:t.nodeId,nodeLookup:y,isTarget:b,edgeUpdaterType:t.type,lib:l,flowId:v,cancelConnection:m,panBy:x,isValidConnection:i,onConnect:e=>u?.(o,e),onConnectStart:c,onConnectEnd:g,onReconnectEnd:(e,n)=>{f(!1),h?.(e,o,t.type,n)},updateConnection:w,getTransform:()=>p.getState().transform,getFromHandle:()=>p.getState().connection.fromHandle})},y=()=>g(!0),v=()=>g(!1);return t.jsxs(t.Fragment,{children:[(!0===e||"source"===e)&&t.jsx(_a,{position:l,centerX:r,centerY:i,radius:n,onMouseDown:e=>m(e,{nodeId:o.target,id:o.targetHandle??null,type:"target"}),onMouseEnter:y,onMouseOut:v,type:"source"}),(!0===e||"target"===e)&&t.jsx(_a,{position:c,centerX:s,centerY:a,radius:n,onMouseDown:e=>m(e,{nodeId:o.source,id:o.sourceHandle??null,type:"source"}),onMouseEnter:y,onMouseOut:v,type:"target"})]})}function Na({id:o,edgesFocusable:i,edgesReconnectable:s,elementsSelectable:a,onClick:l,onDoubleClick:c,onContextMenu:u,onMouseEnter:d,onMouseMove:h,onMouseLeave:f,reconnectRadius:g,onReconnect:p,onReconnectStart:m,onReconnectEnd:y,rfId:v,edgeTypes:x,noPanClassName:w,onError:b,disableKeyboardA11y:S}){let C=Si((e=>e.edgeLookup.get(o)));const E=Si((e=>e.defaultEdgeOptions));C=E?{...E,...C}:C;let k=C.type||"default",_=x?.[k]||ba[k];void 0===_&&(b?.("011",Qn.error011(k)),k="default",_=ba.default);const M=!!(C.focusable||i&&void 0===C.focusable),N=void 0!==p&&(C.reconnectable||s&&void 0===C.reconnectable),P=!!(C.selectable||a&&void 0===C.selectable),z=n.useRef(null),[O,A]=n.useState(!1),[I,R]=n.useState(!1),D=Ci(),{zIndex:L,sourceX:$,sourceY:B,targetX:T,targetY:V,sourcePosition:j,targetPosition:H}=Si(n.useCallback((t=>{const n=t.nodeLookup.get(C.source),r=t.nodeLookup.get(C.target);if(!n||!r)return{zIndex:C.zIndex,...Sa};const i=function(t){const{sourceNode:n,targetNode:o}=t;if(!gr(n)||!gr(o))return null;const r=n.internals.handleBounds||pr(n.handles),i=o.internals.handleBounds||pr(o.handles),s=yr(r?.source??[],t.sourceHandle),a=yr(t.connectionMode===e.ConnectionMode.Strict?i?.target??[]:(i?.target??[]).concat(i?.source??[]),t.targetHandle);if(!s||!a)return t.onError?.("008",Qn.error008(s?"target":"source",{id:t.id,sourceHandle:t.sourceHandle,targetHandle:t.targetHandle})),null;const l=s?.position||e.Position.Bottom,c=a?.position||e.Position.Top,u=mr(n,s,l),d=mr(o,a,c);return{sourceX:u.x,sourceY:u.y,targetX:d.x,targetY:d.y,sourcePosition:l,targetPosition:c}}({id:o,sourceNode:n,targetNode:r,sourceHandle:C.sourceHandle||null,targetHandle:C.targetHandle||null,connectionMode:t.connectionMode,onError:b}),s=function({sourceNode:e,targetNode:t,selected:n=!1,zIndex:o=0,elevateOnSelect:r=!1}){if(!r)return o;const i=n||t.selected||e.selected,s=Math.max(e.internals.z||0,t.internals.z||0,1e3);return o+(i?s:0)}({selected:C.selected,zIndex:C.zIndex,sourceNode:n,targetNode:r,elevateOnSelect:t.elevateEdgesOnSelect});return{zIndex:s,...i||Sa}}),[C.source,C.target,C.sourceHandle,C.targetHandle,C.selected,C.zIndex]),Di),Z=n.useMemo((()=>C.markerStart?`url('#${vr(C.markerStart,v)}')`:void 0),[C.markerStart,v]),X=n.useMemo((()=>C.markerEnd?`url('#${vr(C.markerEnd,v)}')`:void 0),[C.markerEnd,v]);if(C.hidden||null===$||null===B||null===T||null===V)return null;const Y=c?e=>{c(e,{...C})}:void 0,W=u?e=>{u(e,{...C})}:void 0,F=d?e=>{d(e,{...C})}:void 0,K=h?e=>{h(e,{...C})}:void 0,G=f?e=>{f(e,{...C})}:void 0;return t.jsx("svg",{style:{zIndex:L},children:t.jsxs("g",{className:r(["react-flow__edge",`react-flow__edge-${k}`,C.className,w,{selected:C.selected,animated:C.animated,inactive:!P&&!l,updating:O,selectable:P}]),onClick:e=>{const{addSelectedEdges:t,unselectNodesAndEdges:n,multiSelectionActive:r}=D.getState();P&&(D.setState({nodesSelectionActive:!1}),C.selected&&r?(n({nodes:[],edges:[C]}),z.current?.blur()):t([o])),l&&l(e,C)},onDoubleClick:Y,onContextMenu:W,onMouseEnter:F,onMouseMove:K,onMouseLeave:G,onKeyDown:M?e=>{if(!S&&eo.includes(e.key)&&P){const{unselectNodesAndEdges:t,addSelectedEdges:n}=D.getState();"Escape"===e.key?(z.current?.blur(),t({edges:[C]})):n([o])}}:void 0,tabIndex:M?0:void 0,role:M?"button":"img","data-id":o,"data-testid":`rf__edge-${o}`,"aria-label":null===C.ariaLabel?void 0:C.ariaLabel||`Edge from ${C.source} to ${C.target}`,"aria-describedby":M?`${Mi}-${v}`:void 0,ref:z,children:[!I&&t.jsx(_,{id:o,source:C.source,target:C.target,type:C.type,selected:C.selected,animated:C.animated,selectable:P,deletable:C.deletable??!0,label:C.label,labelStyle:C.labelStyle,labelShowBg:C.labelShowBg,labelBgStyle:C.labelBgStyle,labelBgPadding:C.labelBgPadding,labelBgBorderRadius:C.labelBgBorderRadius,sourceX:$,sourceY:B,targetX:T,targetY:V,sourcePosition:j,targetPosition:H,data:C.data,style:C.style,sourceHandleId:C.sourceHandle,targetHandleId:C.targetHandle,markerStart:Z,markerEnd:X,pathOptions:"pathOptions"in C?C.pathOptions:void 0,interactionWidth:C.interactionWidth}),N&&t.jsx(Ma,{edge:C,isReconnectable:N,reconnectRadius:g,onReconnect:p,onReconnectStart:m,onReconnectEnd:y,sourceX:$,sourceY:B,targetX:T,targetY:V,sourcePosition:j,targetPosition:H,setUpdateHover:A,setReconnecting:R})]})})}const Pa=e=>({width:e.width,height:e.height,edgesFocusable:e.edgesFocusable,edgesReconnectable:e.edgesReconnectable,elementsSelectable:e.elementsSelectable,connectionMode:e.connectionMode,onError:e.onError});function za({defaultMarkerColor:e,onlyRenderVisibleElements:o,rfId:r,edgeTypes:i,noPanClassName:s,onReconnect:a,onEdgeContextMenu:l,onEdgeMouseEnter:c,onEdgeMouseMove:u,onEdgeMouseLeave:d,onEdgeClick:h,reconnectRadius:f,onEdgeDoubleClick:g,onReconnectStart:p,onReconnectEnd:m,disableKeyboardA11y:y}){const{edgesFocusable:v,edgesReconnectable:x,elementsSelectable:w,onError:b}=Si(Pa,Di),S=(C=o,Si(n.useCallback((e=>{if(!C)return e.edges.map((e=>e.id));const t=[];if(e.width&&e.height)for(const n of e.edges){const o=e.nodeLookup.get(n.source),r=e.nodeLookup.get(n.target);o&&r&&sr({sourceNode:o,targetNode:r,width:e.width,height:e.height,transform:e.transform})&&t.push(n.id)}return t}),[C]),Di));var C;return t.jsxs("div",{className:"react-flow__edges",children:[t.jsx(ea,{defaultColor:e,rfId:r}),S.map((e=>t.jsx(Na,{id:e,edgesFocusable:v,edgesReconnectable:x,elementsSelectable:w,noPanClassName:s,onReconnect:a,onContextMenu:l,onMouseEnter:c,onMouseMove:u,onMouseLeave:d,onClick:h,reconnectRadius:f,onDoubleClick:g,onReconnectStart:p,onReconnectEnd:m,rfId:r,onError:b,edgeTypes:i,disableKeyboardA11y:y},e)))]})}za.displayName="EdgeRenderer";const Oa=n.memo(za),Aa=e=>`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`;function Ia({children:e}){const n=Si(Aa);return t.jsx("div",{className:"react-flow__viewport xyflow__viewport react-flow__container",style:{transform:n},children:e})}const Ra=e=>e.panZoom?.syncViewport;function Da(e){return e.connection.inProgress?{...e.connection,to:To(e.connection.to,e.transform)}:{...e.connection}}function La(e){const t=function(e){if(e)return t=>{const n=Da(t);return e(n)};return Da}(e);return Si(t,Di)}const $a=e=>({nodesConnectable:e.nodesConnectable,isValid:e.connection.isValid,inProgress:e.connection.inProgress,width:e.width,height:e.height});function Ba({containerStyle:e,style:n,type:o,component:i}){const{nodesConnectable:s,width:a,height:l,isValid:c,inProgress:u}=Si($a,Di);return!!(a&&s&&u)?t.jsx("svg",{style:e,width:a,height:l,className:"react-flow__connectionline react-flow__container",children:t.jsx("g",{className:r(["react-flow__connection",ho(c)]),children:t.jsx(Ta,{style:n,type:o,CustomComponent:i,isValid:c})})}):null}const Ta=({style:n,type:o=e.ConnectionLineType.Bezier,CustomComponent:r,isValid:i})=>{const{inProgress:s,from:a,fromNode:l,fromHandle:c,fromPosition:u,to:d,toNode:h,toHandle:f,toPosition:g}=La();if(!s)return;if(r)return t.jsx(r,{connectionLineType:o,connectionLineStyle:n,fromNode:l,fromHandle:c,fromX:a.x,fromY:a.y,toX:d.x,toY:d.y,fromPosition:u,toPosition:g,connectionStatus:ho(i),toNode:h,toHandle:f});let p="";const m={sourceX:a.x,sourceY:a.y,sourcePosition:u,targetX:d.x,targetY:d.y,targetPosition:g};switch(o){case e.ConnectionLineType.Bezier:[p]=rr(m);break;case e.ConnectionLineType.SimpleBezier:[p]=ia(m);break;case e.ConnectionLineType.Step:[p]=fr({...m,borderRadius:0});break;case e.ConnectionLineType.SmoothStep:[p]=fr(m);break;default:[p]=cr(m)}return t.jsx("path",{d:p,fill:"none",className:"react-flow__connection-path",style:n})};Ta.displayName="ConnectionLine";const Va={};function ja(e=Va){n.useRef(e),Ci(),n.useEffect((()=>{}),[e])}function Ha({nodeTypes:e,edgeTypes:o,onInit:r,onNodeClick:i,onEdgeClick:s,onNodeDoubleClick:a,onEdgeDoubleClick:l,onNodeMouseEnter:c,onNodeMouseMove:u,onNodeMouseLeave:d,onNodeContextMenu:h,onSelectionContextMenu:f,onSelectionStart:g,onSelectionEnd:p,connectionLineType:m,connectionLineStyle:y,connectionLineComponent:v,connectionLineContainerStyle:x,selectionKeyCode:w,selectionOnDrag:b,selectionMode:S,multiSelectionKeyCode:C,panActivationKeyCode:E,zoomActivationKeyCode:k,deleteKeyCode:_,onlyRenderVisibleElements:M,elementsSelectable:N,defaultViewport:P,translateExtent:z,minZoom:O,maxZoom:A,preventScrolling:I,defaultMarkerColor:R,zoomOnScroll:D,zoomOnPinch:L,panOnScroll:$,panOnScrollSpeed:B,panOnScrollMode:T,zoomOnDoubleClick:V,panOnDrag:j,onPaneClick:H,onPaneMouseEnter:Z,onPaneMouseMove:X,onPaneMouseLeave:Y,onPaneScroll:W,onPaneContextMenu:F,paneClickDistance:K,nodeClickDistance:G,onEdgeContextMenu:q,onEdgeMouseEnter:U,onEdgeMouseMove:Q,onEdgeMouseLeave:J,reconnectRadius:ee,onReconnect:te,onReconnectStart:ne,onReconnectEnd:oe,noDragClassName:re,noWheelClassName:ie,noPanClassName:se,disableKeyboardA11y:ae,nodeExtent:le,rfId:ce,viewport:ue,onViewportChange:de}){return ja(e),ja(o),Ci(),n.useRef(!1),n.useEffect((()=>{}),[]),function(e){const t=ms(),o=n.useRef(!1);n.useEffect((()=>{!o.current&&t.viewportInitialized&&e&&(setTimeout((()=>e(t)),1),o.current=!0)}),[e,t.viewportInitialized])}(r),function(e){const t=Si(Ra),o=Ci();n.useEffect((()=>{e&&(t?.(e),o.setState({transform:[e.x,e.y,e.zoom]}))}),[e,t])}(ue),t.jsx(Xs,{onPaneClick:H,onPaneMouseEnter:Z,onPaneMouseMove:X,onPaneMouseLeave:Y,onPaneContextMenu:F,onPaneScroll:W,paneClickDistance:K,deleteKeyCode:_,selectionKeyCode:w,selectionOnDrag:b,selectionMode:S,onSelectionStart:g,onSelectionEnd:p,multiSelectionKeyCode:C,panActivationKeyCode:E,zoomActivationKeyCode:k,elementsSelectable:N,zoomOnScroll:D,zoomOnPinch:L,zoomOnDoubleClick:V,panOnScroll:$,panOnScrollSpeed:B,panOnScrollMode:T,panOnDrag:j,defaultViewport:P,translateExtent:z,minZoom:O,maxZoom:A,onSelectionContextMenu:f,preventScrolling:I,noDragClassName:re,noWheelClassName:ie,noPanClassName:se,disableKeyboardA11y:ae,onViewportChange:de,isControlledViewport:!!ue,children:t.jsxs(Ia,{children:[t.jsx(Oa,{edgeTypes:o,onEdgeClick:s,onEdgeDoubleClick:l,onReconnect:te,onReconnectStart:ne,onReconnectEnd:oe,onlyRenderVisibleElements:M,onEdgeContextMenu:q,onEdgeMouseEnter:U,onEdgeMouseMove:Q,onEdgeMouseLeave:J,reconnectRadius:ee,defaultMarkerColor:R,noPanClassName:se,disableKeyboardA11y:ae,rfId:ce}),t.jsx(Ba,{style:y,type:m,component:v,containerStyle:x}),t.jsx("div",{className:"react-flow__edgelabel-renderer"}),t.jsx(qs,{nodeTypes:e,onNodeClick:i,onNodeDoubleClick:a,onNodeMouseEnter:c,onNodeMouseMove:u,onNodeMouseLeave:d,onNodeContextMenu:h,nodeClickDistance:G,onlyRenderVisibleElements:M,noPanClassName:se,noDragClassName:re,disableKeyboardA11y:ae,nodeExtent:le,rfId:ce}),t.jsx("div",{className:"react-flow__viewport-portal"})]})})}Ha.displayName="GraphView";const Za=n.memo(Ha),Xa=({nodes:t,edges:n,defaultNodes:o,defaultEdges:r,width:i,height:s,fitView:a,nodeOrigin:l,nodeExtent:c}={})=>{const u=new Map,d=new Map,h=new Map,f=new Map,g=r??n??[],p=o??t??[],m=l??[0,0],y=c??Jn;Mr(h,f,g),Cr(p,u,d,{nodeOrigin:m,nodeExtent:y,elevateNodesOnSelect:!1});let v=[0,0,1];if(a&&i&&s){const e=yo(u,{filter:e=>!(!e.width&&!e.initialWidth||!e.height&&!e.initialHeight)}),{x:t,y:n,zoom:o}=jo(e,i,s,.5,2,.1);v=[t,n,o]}return{rfId:"1",width:0,height:0,transform:v,nodes:p,nodeLookup:u,parentLookup:d,edges:g,edgeLookup:f,connectionLookup:h,onNodesChange:null,onEdgesChange:null,hasDefaultNodes:void 0!==o,hasDefaultEdges:void 0!==r,panZoom:null,minZoom:.5,maxZoom:2,translateExtent:Jn,nodeExtent:y,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:e.ConnectionMode.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:m,nodeDragThreshold:1,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesReconnectable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,elevateEdgesOnSelect:!1,fitViewOnInit:!1,fitViewDone:!1,fitViewOnInitOptions:void 0,selectNodesOnDrag:!0,multiSelectionActive:!1,connection:{...ro},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanSpeed:15,connectionRadius:20,onError:$o,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:"react",debug:!1}},Ya=({nodes:e,edges:t,defaultNodes:n,defaultEdges:o,width:r,height:i,fitView:s,nodeOrigin:a,nodeExtent:l})=>{return c=(c,u)=>({...Xa({nodes:e,edges:t,width:r,height:i,fitView:s,nodeOrigin:a,nodeExtent:l,defaultNodes:n,defaultEdges:o}),setNodes:e=>{const{nodeLookup:t,parentLookup:n,nodeOrigin:o,elevateNodesOnSelect:r}=u();Cr(e,t,n,{nodeOrigin:o,nodeExtent:l,elevateNodesOnSelect:r,checkEquality:!0}),c({nodes:e})},setEdges:e=>{const{connectionLookup:t,edgeLookup:n}=u();Mr(t,n,e),c({edges:e})},setDefaultNodesAndEdges:(e,t)=>{if(e){const{setNodes:t}=u();t(e),c({hasDefaultNodes:!0})}if(t){const{setEdges:e}=u();e(t),c({hasDefaultEdges:!0})}},updateNodeInternals:(e,t={triggerFitView:!0})=>{const{triggerNodeChanges:n,nodeLookup:o,parentLookup:r,fitViewOnInit:i,fitViewDone:s,fitViewOnInitOptions:a,domNode:l,nodeOrigin:d,nodeExtent:h,debug:f,fitViewSync:g}=u(),{changes:p,updatedInternals:m}=function(e,t,n,o,r,i){const s=o?.querySelector(".xyflow__viewport");let a=!1;if(!s)return{changes:[],updatedInternals:a};const l=[],c=window.getComputedStyle(s),{m22:u}=new window.DOMMatrixReadOnly(c.transform),d=[];for(const o of e.values()){const e=t.get(o.id);if(e)if(e.hidden)e.internals={...e.internals,handleBounds:void 0},a=!0;else{const s=Ko(o.nodeElement),c=e.measured.width!==s.width||e.measured.height!==s.height;if(s.width&&s.height&&(c||!e.internals.handleBounds||o.force)){const h=o.nodeElement.getBoundingClientRect(),f=Zo(e.extent)?e.extent:i;let{positionAbsolute:g}=e.internals;e.parentId&&"parent"===e.extent?g=ko(g,s,t.get(e.parentId)):f&&(g=Eo(g,f,s)),e.measured=s,e.internals={...e.internals,positionAbsolute:g,handleBounds:{source:er("source",o.nodeElement,h,u,e.id),target:er("target",o.nodeElement,h,u,e.id)}},e.parentId&&Er(e,t,n,{nodeOrigin:r}),a=!0,c&&(l.push({id:e.id,type:"dimensions",dimensions:s}),e.expandParent&&e.parentId&&d.push({id:e.id,parentId:e.parentId,rect:Oo(e,r)}))}}}if(d.length>0){const e=_r(d,t,n,r);l.push(...e)}return{changes:l,updatedInternals:a}}(e,o,r,l,d,h);if(m){if(function(e,t,n){const o=Sr(wr,n);for(const n of e.values())if(n.parentId)Er(n,e,t,o);else{const e=po(n,o.nodeOrigin),t=Zo(n.extent)?n.extent:o.nodeExtent,r=Eo(e,t,Xo(n));n.internals.positionAbsolute=r}}(o,r,{nodeOrigin:d,nodeExtent:h}),t.triggerFitView){let e=s;!s&&i&&(e=g({...a,nodes:a?.nodes})),c({fitViewDone:e})}else c({});p?.length>0&&(f&&console.log("React Flow: trigger node changes",p),n?.(p))}},updateNodePositions:(e,t=!1)=>{const n=[],o=[];for(const[r,i]of e){const e={id:r,type:"position",position:i.position,dragging:t};i?.expandParent&&i?.parentId&&e.position&&(n.push({id:r,parentId:i.parentId,rect:{...i.internals.positionAbsolute,width:i.measured.width,height:i.measured.height}}),e.position.x=Math.max(0,e.position.x),e.position.y=Math.max(0,e.position.y)),o.push(e)}if(n.length>0){const{nodeLookup:e,parentLookup:t,nodeOrigin:r}=u(),i=_r(n,e,t,r);o.push(...i)}u().triggerNodeChanges(o)},triggerNodeChanges:e=>{const{onNodesChange:t,setNodes:n,nodes:o,hasDefaultNodes:r,debug:i}=u();e?.length&&(r&&n(ns(e,o)),i&&console.log("React Flow: trigger node changes",e),t?.(e))},triggerEdgeChanges:e=>{const{onEdgesChange:t,setEdges:n,edges:o,hasDefaultEdges:r,debug:i}=u();e?.length&&(r&&n(os(e,o)),i&&console.log("React Flow: trigger edge changes",e),t?.(e))},addSelectedNodes:e=>{const{multiSelectionActive:t,edgeLookup:n,nodeLookup:o,triggerNodeChanges:r,triggerEdgeChanges:i}=u();t?r(e.map((e=>rs(e,!0)))):(r(is(o,new Set([...e]),!0)),i(is(n)))},addSelectedEdges:e=>{const{multiSelectionActive:t,edgeLookup:n,nodeLookup:o,triggerNodeChanges:r,triggerEdgeChanges:i}=u();t?i(e.map((e=>rs(e,!0)))):(i(is(n,new Set([...e]))),r(is(o,new Set,!0)))},unselectNodesAndEdges:({nodes:e,edges:t}={})=>{const{edges:n,nodes:o,triggerNodeChanges:r,triggerEdgeChanges:i}=u(),s=t||n,a=(e||o).map((e=>(e.selected=!1,rs(e.id,!1)))),l=s.map((e=>rs(e.id,!1)));r(a),i(l)},setMinZoom:e=>{const{panZoom:t,maxZoom:n}=u();t?.setScaleExtent([e,n]),c({minZoom:e})},setMaxZoom:e=>{const{panZoom:t,minZoom:n}=u();t?.setScaleExtent([n,e]),c({maxZoom:e})},setTranslateExtent:e=>{u().panZoom?.setTranslateExtent(e),c({translateExtent:e})},setPaneClickDistance:e=>{u().panZoom?.setClickDistance(e)},resetSelectedElements:()=>{const{edges:e,nodes:t,triggerNodeChanges:n,triggerEdgeChanges:o}=u(),r=t.reduce(((e,t)=>t.selected?[...e,rs(t.id,!1)]:e),[]),i=e.reduce(((e,t)=>t.selected?[...e,rs(t.id,!1)]:e),[]);n(r),o(i)},setNodeExtent:e=>{const{nodes:t,nodeLookup:n,parentLookup:o,nodeOrigin:r,elevateNodesOnSelect:i,nodeExtent:s}=u();e[0][0]===s[0][0]&&e[0][1]===s[0][1]&&e[1][0]===s[1][0]&&e[1][1]===s[1][1]||(Cr(t,n,o,{nodeOrigin:r,nodeExtent:e,elevateNodesOnSelect:i,checkEquality:!1}),c({nodeExtent:e}))},panBy:e=>{const{transform:t,width:n,height:o,panZoom:r,translateExtent:i}=u();return async function({delta:e,panZoom:t,transform:n,translateExtent:o,width:r,height:i}){if(!t||!e.x&&!e.y)return Promise.resolve(!1);const s=await t.setViewportConstrained({x:n[0]+e.x,y:n[1]+e.y,zoom:n[2]},[[0,0],[r,i]],o),a=!!s&&(s.x!==n[0]||s.y!==n[1]||s.k!==n[2]);return Promise.resolve(a)}({delta:e,panZoom:r,transform:t,translateExtent:i,width:n,height:o})},fitView:e=>{const{panZoom:t,width:n,height:o,minZoom:r,maxZoom:i,nodeLookup:s}=u();return t?bo({nodes:wo(s,e),width:n,height:o,panZoom:t,minZoom:r,maxZoom:i},e):Promise.resolve(!1)},fitViewSync:e=>{const{panZoom:t,width:n,height:o,minZoom:r,maxZoom:i,nodeLookup:s}=u();if(!t)return!1;const a=wo(s,e);return bo({nodes:a,width:n,height:o,panZoom:t,minZoom:r,maxZoom:i},e),a.size>0},cancelConnection:()=>{c({connection:{...ro}})},updateConnection:e=>{c({connection:e})},reset:()=>c({...Xa()})}),u=Object.is,c?vi(c,u):vi;var c,u};function Wa({initialNodes:e,initialEdges:o,defaultNodes:r,defaultEdges:i,initialWidth:s,initialHeight:a,fitView:l,nodeOrigin:c,nodeExtent:u,children:d}){const[h]=n.useState((()=>Ya({nodes:e,edges:o,defaultNodes:r,defaultEdges:i,width:s,height:a,fitView:l,nodeOrigin:c,nodeExtent:u})));return t.jsx(wi,{value:h,children:t.jsx(gs,{children:d})})}function Fa({children:e,nodes:o,edges:r,defaultNodes:i,defaultEdges:s,width:a,height:l,fitView:c,nodeOrigin:u,nodeExtent:d}){return n.useContext(xi)?t.jsx(t.Fragment,{children:e}):t.jsx(Wa,{initialNodes:o,initialEdges:r,defaultNodes:i,defaultEdges:s,initialWidth:a,initialHeight:l,fitView:c,nodeOrigin:u,nodeExtent:d,children:e})}const Ka={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0};var Ga=us((function({nodes:o,edges:i,defaultNodes:s,defaultEdges:a,className:l,nodeTypes:c,edgeTypes:u,onNodeClick:d,onEdgeClick:h,onInit:f,onMove:g,onMoveStart:p,onMoveEnd:m,onConnect:y,onConnectStart:v,onConnectEnd:x,onClickConnectStart:w,onClickConnectEnd:b,onNodeMouseEnter:S,onNodeMouseMove:C,onNodeMouseLeave:E,onNodeContextMenu:k,onNodeDoubleClick:_,onNodeDragStart:M,onNodeDrag:N,onNodeDragStop:P,onNodesDelete:z,onEdgesDelete:O,onDelete:A,onSelectionChange:I,onSelectionDragStart:R,onSelectionDrag:D,onSelectionDragStop:L,onSelectionContextMenu:$,onSelectionStart:B,onSelectionEnd:T,onBeforeDelete:V,connectionMode:j,connectionLineType:H=e.ConnectionLineType.Bezier,connectionLineStyle:Z,connectionLineComponent:X,connectionLineContainerStyle:Y,deleteKeyCode:W="Backspace",selectionKeyCode:F="Shift",selectionOnDrag:K=!1,selectionMode:G=e.SelectionMode.Full,panActivationKeyCode:q="Space",multiSelectionKeyCode:U=(Ho()?"Meta":"Control"),zoomActivationKeyCode:Q=(Ho()?"Meta":"Control"),snapToGrid:J,snapGrid:ee,onlyRenderVisibleElements:te=!1,selectNodesOnDrag:ne,nodesDraggable:oe,nodesConnectable:re,nodesFocusable:ie,nodeOrigin:se=Hi,edgesFocusable:ae,edgesReconnectable:le,elementsSelectable:ce=!0,defaultViewport:ue=Zi,minZoom:de=.5,maxZoom:he=2,translateExtent:fe=Jn,preventScrolling:ge=!0,nodeExtent:pe,defaultMarkerColor:me="#b1b1b7",zoomOnScroll:ye=!0,zoomOnPinch:ve=!0,panOnScroll:xe=!1,panOnScrollSpeed:we=.5,panOnScrollMode:be=e.PanOnScrollMode.Free,zoomOnDoubleClick:Se=!0,panOnDrag:Ce=!0,onPaneClick:Ee,onPaneMouseEnter:ke,onPaneMouseMove:_e,onPaneMouseLeave:Me,onPaneScroll:Ne,onPaneContextMenu:Pe,paneClickDistance:ze=0,nodeClickDistance:Oe=0,children:Ae,onReconnect:Ie,onReconnectStart:Re,onReconnectEnd:De,onEdgeContextMenu:Le,onEdgeDoubleClick:$e,onEdgeMouseEnter:Be,onEdgeMouseMove:Te,onEdgeMouseLeave:Ve,reconnectRadius:je=10,onNodesChange:He,onEdgesChange:Ze,noDragClassName:Xe="nodrag",noWheelClassName:Ye="nowheel",noPanClassName:We="nopan",fitView:Fe,fitViewOptions:Ke,connectOnClick:Ge,attributionPosition:qe,proOptions:Ue,defaultEdgeOptions:Qe,elevateNodesOnSelect:Je,elevateEdgesOnSelect:et,disableKeyboardA11y:tt=!1,autoPanOnConnect:nt,autoPanOnNodeDrag:ot,autoPanSpeed:rt,connectionRadius:it,isValidConnection:st,onError:at,style:lt,id:ct,nodeDragThreshold:ut,viewport:dt,onViewportChange:ht,width:ft,height:gt,colorMode:pt="light",debug:mt,...yt},vt){const xt=ct||"1",wt=function(e){const[t,o]=n.useState("system"===e?null:e);return n.useEffect((()=>{if("system"!==e)return void o(e);const t=Ki(),n=()=>o(t?.matches?"dark":"light");return n(),t?.addEventListener("change",n),()=>{t?.removeEventListener("change",n)}}),[e]),null!==t?t:Ki()?.matches?"dark":"light"}(pt);return t.jsx("div",{...yt,style:{...lt,...Ka},ref:vt,className:r(["react-flow",l,wt]),"data-testid":"rf__wrapper",id:ct,children:t.jsxs(Fa,{nodes:o,edges:i,width:ft,height:gt,fitView:Fe,nodeOrigin:se,nodeExtent:pe,children:[t.jsx(Za,{onInit:f,onNodeClick:d,onEdgeClick:h,onNodeMouseEnter:S,onNodeMouseMove:C,onNodeMouseLeave:E,onNodeContextMenu:k,onNodeDoubleClick:_,nodeTypes:c,edgeTypes:u,connectionLineType:H,connectionLineStyle:Z,connectionLineComponent:X,connectionLineContainerStyle:Y,selectionKeyCode:F,selectionOnDrag:K,selectionMode:G,deleteKeyCode:W,multiSelectionKeyCode:U,panActivationKeyCode:q,zoomActivationKeyCode:Q,onlyRenderVisibleElements:te,defaultViewport:ue,translateExtent:fe,minZoom:de,maxZoom:he,preventScrolling:ge,zoomOnScroll:ye,zoomOnPinch:ve,zoomOnDoubleClick:Se,panOnScroll:xe,panOnScrollSpeed:we,panOnScrollMode:be,panOnDrag:Ce,onPaneClick:Ee,onPaneMouseEnter:ke,onPaneMouseMove:_e,onPaneMouseLeave:Me,onPaneScroll:Ne,onPaneContextMenu:Pe,paneClickDistance:ze,nodeClickDistance:Oe,onSelectionContextMenu:$,onSelectionStart:B,onSelectionEnd:T,onReconnect:Ie,onReconnectStart:Re,onReconnectEnd:De,onEdgeContextMenu:Le,onEdgeDoubleClick:$e,onEdgeMouseEnter:Be,onEdgeMouseMove:Te,onEdgeMouseLeave:Ve,reconnectRadius:je,defaultMarkerColor:me,noDragClassName:Xe,noWheelClassName:Ye,noPanClassName:We,rfId:xt,disableKeyboardA11y:tt,nodeExtent:pe,viewport:dt,onViewportChange:ht}),t.jsx(Fi,{nodes:o,edges:i,defaultNodes:s,defaultEdges:a,onConnect:y,onConnectStart:v,onConnectEnd:x,onClickConnectStart:w,onClickConnectEnd:b,nodesDraggable:oe,nodesConnectable:re,nodesFocusable:ie,edgesFocusable:ae,edgesReconnectable:le,elementsSelectable:ce,elevateNodesOnSelect:Je,elevateEdgesOnSelect:et,minZoom:de,maxZoom:he,nodeExtent:pe,onNodesChange:He,onEdgesChange:Ze,snapToGrid:J,snapGrid:ee,connectionMode:j,translateExtent:fe,connectOnClick:Ge,defaultEdgeOptions:Qe,fitView:Fe,fitViewOptions:Ke,onNodesDelete:z,onEdgesDelete:O,onDelete:A,onNodeDragStart:M,onNodeDrag:N,onNodeDragStop:P,onSelectionDrag:D,onSelectionDragStart:R,onSelectionDragStop:L,onMove:g,onMoveStart:p,onMoveEnd:m,noPanClassName:We,nodeOrigin:se,rfId:xt,autoPanOnConnect:nt,autoPanOnNodeDrag:ot,autoPanSpeed:rt,onError:at,connectionRadius:it,isValidConnection:st,selectNodesOnDrag:ne,nodeDragThreshold:ut,onBeforeDelete:V,paneClickDistance:ze,debug:mt}),t.jsx(ji,{onSelectionChange:I}),Ae,t.jsx(Ri,{proOptions:Ue,position:qe}),t.jsx(Oi,{rfId:xt,disableKeyboardA11y:tt})]})})}));const qa=e=>e.domNode?.querySelector(".react-flow__edgelabel-renderer");const Ua=e=>e.domNode?.querySelector(".react-flow__viewport-portal");const Qa=e=>e.nodes;const Ja=e=>e.edges;const el=e=>({x:e.transform[0],y:e.transform[1],zoom:e.transform[2]});const tl={includeHiddenNodes:!1};function nl({dimensions:e,lineWidth:n,variant:o,className:i}){return t.jsx("path",{strokeWidth:n,d:`M${e[0]/2} 0 V${e[1]} M0 ${e[1]/2} H${e[0]}`,className:r(["react-flow__background-pattern",o,i])})}function ol({radius:e,className:n}){return t.jsx("circle",{cx:e,cy:e,r:e,className:r(["react-flow__background-pattern","dots",n])})}var rl;e.BackgroundVariant=void 0,(rl=e.BackgroundVariant||(e.BackgroundVariant={})).Lines="lines",rl.Dots="dots",rl.Cross="cross";const il={[e.BackgroundVariant.Dots]:1,[e.BackgroundVariant.Lines]:1,[e.BackgroundVariant.Cross]:6},sl=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function al({id:o,variant:i=e.BackgroundVariant.Dots,gap:s=20,size:a,lineWidth:l=1,offset:c=0,color:u,bgColor:d,style:h,className:f,patternClassName:g}){const p=n.useRef(null),{transform:m,patternId:y}=Si(sl,Di),v=a||il[i],x=i===e.BackgroundVariant.Dots,w=i===e.BackgroundVariant.Cross,b=Array.isArray(s)?s:[s,s],S=[b[0]*m[2]||1,b[1]*m[2]||1],C=v*m[2],E=Array.isArray(c)?c:[c,c],k=w?[C,C]:S,_=[E[0]*m[2]||1+k[0]/2,E[1]*m[2]||1+k[1]/2],M=`${y}${o||""}`;return t.jsxs("svg",{className:r(["react-flow__background",f]),style:{...h,...ws,"--xy-background-color-props":d,"--xy-background-pattern-color-props":u},ref:p,"data-testid":"rf__background",children:[t.jsx("pattern",{id:M,x:m[0]%S[0],y:m[1]%S[1],width:S[0],height:S[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${_[0]},-${_[1]})`,children:x?t.jsx(ol,{radius:C/2,className:g}):t.jsx(nl,{dimensions:k,lineWidth:l,variant:i,className:g})}),t.jsx("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${M})`})]})}al.displayName="Background";const ll=n.memo(al);function cl(){return t.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",children:t.jsx("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"})})}function ul(){return t.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5",children:t.jsx("path",{d:"M0 0h32v4.2H0z"})})}function dl(){return t.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30",children:t.jsx("path",{d:"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z"})})}function hl(){return t.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:t.jsx("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z"})})}function fl(){return t.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:t.jsx("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z"})})}function gl({children:e,className:n,...o}){return t.jsx("button",{type:"button",className:r(["react-flow__controls-button",n]),...o,children:e})}const pl=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom});function ml({style:e,showZoom:n=!0,showFitView:o=!0,showInteractive:i=!0,fitViewOptions:s,onZoomIn:a,onZoomOut:l,onFitView:c,onInteractiveChange:u,className:d,children:h,position:f="bottom-left",orientation:g="vertical","aria-label":p="React Flow controls"}){const m=Ci(),{isInteractive:y,minZoomReached:v,maxZoomReached:x}=Si(pl,Di),{zoomIn:w,zoomOut:b,fitView:S}=ms(),C="horizontal"===g?"horizontal":"vertical";return t.jsxs(Ii,{className:r(["react-flow__controls",C,d]),position:f,style:e,"data-testid":"rf__controls","aria-label":p,children:[n&&t.jsxs(t.Fragment,{children:[t.jsx(gl,{onClick:()=>{w(),a?.()},className:"react-flow__controls-zoomin",title:"zoom in","aria-label":"zoom in",disabled:x,children:t.jsx(cl,{})}),t.jsx(gl,{onClick:()=>{b(),l?.()},className:"react-flow__controls-zoomout",title:"zoom out","aria-label":"zoom out",disabled:v,children:t.jsx(ul,{})})]}),o&&t.jsx(gl,{className:"react-flow__controls-fitview",onClick:()=>{S(s),c?.()},title:"fit view","aria-label":"fit view",children:t.jsx(dl,{})}),i&&t.jsx(gl,{className:"react-flow__controls-interactive",onClick:()=>{m.setState({nodesDraggable:!y,nodesConnectable:!y,elementsSelectable:!y}),u?.(!y)},title:"toggle interactivity","aria-label":"toggle interactivity",children:y?t.jsx(fl,{}):t.jsx(hl,{})}),h]})}ml.displayName="Controls";const yl=n.memo(ml);const vl=n.memo((function({id:e,x:n,y:o,width:i,height:s,style:a,color:l,strokeColor:c,strokeWidth:u,className:d,borderRadius:h,shapeRendering:f,selected:g,onClick:p}){const{background:m,backgroundColor:y}=a||{},v=l||m||y;return t.jsx("rect",{className:r(["react-flow__minimap-node",{selected:g},d]),x:n,y:o,rx:h,ry:h,width:i,height:s,style:{fill:v,stroke:c,strokeWidth:u},shapeRendering:f,onClick:p?t=>p(t,e):void 0})})),xl=e=>e.nodes.map((e=>e.id)),wl=e=>e instanceof Function?e:()=>e;const bl=n.memo((function({id:e,nodeColorFunc:n,nodeStrokeColorFunc:o,nodeClassNameFunc:r,nodeBorderRadius:i,nodeStrokeWidth:s,shapeRendering:a,NodeComponent:l,onClick:c}){const{node:u,x:d,y:h,width:f,height:g}=Si((t=>{const n=t.nodeLookup.get(e),{x:o,y:r}=n.internals.positionAbsolute,{width:i,height:s}=Xo(n);return{node:n,x:o,y:r,width:i,height:s}}),Di);return u&&!u.hidden&&Yo(u)?t.jsx(l,{x:d,y:h,width:f,height:g,style:u.style,selected:!!u.selected,className:r(u),color:n(u),borderRadius:i,strokeColor:o(u),strokeWidth:s,shapeRendering:a,onClick:c,id:u.id}):null}));var Sl=n.memo((function({nodeStrokeColor:e,nodeColor:n,nodeClassName:o="",nodeBorderRadius:r=5,nodeStrokeWidth:i,nodeComponent:s=vl,onClick:a}){const l=Si(xl,Di),c=wl(n),u=wl(e),d=wl(o),h="undefined"==typeof window||window.chrome?"crispEdges":"geometricPrecision";return t.jsx(t.Fragment,{children:l.map((e=>t.jsx(bl,{id:e,nodeColorFunc:c,nodeStrokeColorFunc:u,nodeClassNameFunc:d,nodeBorderRadius:r,nodeStrokeWidth:i,NodeComponent:s,onClick:a,shapeRendering:h},e)))})}));const Cl=e=>{const t={x:-e.transform[0]/e.transform[2],y:-e.transform[1]/e.transform[2],width:e.width/e.transform[2],height:e.height/e.transform[2]};return{viewBB:t,boundingRect:e.nodeLookup.size>0?Io(yo(e.nodeLookup),t):t,rfId:e.rfId,panZoom:e.panZoom,translateExtent:e.translateExtent,flowWidth:e.width,flowHeight:e.height}};function El({style:e,className:o,nodeStrokeColor:i,nodeColor:s,nodeClassName:a="",nodeBorderRadius:l=5,nodeStrokeWidth:c,nodeComponent:u,bgColor:d,maskColor:h,maskStrokeColor:f,maskStrokeWidth:g,position:p="bottom-right",onClick:m,onNodeClick:y,pannable:v=!1,zoomable:x=!1,ariaLabel:w="React Flow mini map",inversePan:b,zoomStep:S=10,offsetScale:C=5}){const E=Ci(),k=n.useRef(null),{boundingRect:_,viewBB:M,rfId:N,panZoom:P,translateExtent:z,flowWidth:O,flowHeight:A}=Si(Cl,Di),I=e?.width??200,R=e?.height??150,D=_.width/I,L=_.height/R,$=Math.max(D,L),B=$*I,T=$*R,V=C*$,j=_.x-(B-_.width)/2-V,H=_.y-(T-_.height)/2-V,Z=B+2*V,X=T+2*V,Y=`react-flow__minimap-desc-${N}`,W=n.useRef(0),F=n.useRef();W.current=$,n.useEffect((()=>{if(k.current&&P)return F.current=function({domNode:e,panZoom:t,getTransform:n,getViewScale:o}){const r=Se(e);return{update:function({translateExtent:e,width:i,height:s,zoomStep:a=10,pannable:l=!0,zoomable:c=!0,inversePan:u=!1}){let d=[0,0];const h=Un().on("start",(e=>{"mousedown"!==e.sourceEvent.type&&"touchstart"!==e.sourceEvent.type||(d=[e.sourceEvent.clientX??e.sourceEvent.touches[0].clientX,e.sourceEvent.clientY??e.sourceEvent.touches[0].clientY])})).on("zoom",l?r=>{const a=n();if("mousemove"!==r.sourceEvent.type&&"touchmove"!==r.sourceEvent.type||!t)return;const l=[r.sourceEvent.clientX??r.sourceEvent.touches[0].clientX,r.sourceEvent.clientY??r.sourceEvent.touches[0].clientY],c=[l[0]-d[0],l[1]-d[1]];d=l;const h=o()*Math.max(a[2],Math.log(a[2]))*(u?-1:1),f={x:a[0]-c[0]*h,y:a[1]-c[1]*h},g=[[0,0],[i,s]];t.setViewportConstrained({x:f.x,y:f.y,zoom:a[2]},g,e)}:null).on("zoom.wheel",c?e=>{const o=n();if("wheel"!==e.sourceEvent.type||!t)return;const r=-e.sourceEvent.deltaY*(1===e.sourceEvent.deltaMode?.05:e.sourceEvent.deltaMode?1:.002)*a,i=o[2]*Math.pow(2,r);t.scaleTo(i)}:null);r.call(h,{})},destroy:function(){r.on("zoom",null)},pointer:Ce}}({domNode:k.current,panZoom:P,getTransform:()=>E.getState().transform,getViewScale:()=>W.current}),()=>{F.current?.destroy()}}),[P]),n.useEffect((()=>{F.current?.update({translateExtent:z,width:O,height:A,inversePan:b,pannable:v,zoomStep:S,zoomable:x})}),[v,x,b,S,z,O,A]);const K=m?e=>{const[t,n]=F.current?.pointer(e)||[0,0];m(e,{x:t,y:n})}:void 0,G=y?n.useCallback(((e,t)=>{const n=E.getState().nodeLookup.get(t);y(e,n)}),[]):void 0;return t.jsx(Ii,{position:p,style:{...e,"--xy-minimap-background-color-props":"string"==typeof d?d:void 0,"--xy-minimap-mask-background-color-props":"string"==typeof h?h:void 0,"--xy-minimap-mask-stroke-color-props":"string"==typeof f?f:void 0,"--xy-minimap-mask-stroke-width-props":"number"==typeof g?g*$:void 0,"--xy-minimap-node-background-color-props":"string"==typeof s?s:void 0,"--xy-minimap-node-stroke-color-props":"string"==typeof i?i:void 0,"--xy-minimap-node-stroke-width-props":"string"==typeof c?c:void 0},className:r(["react-flow__minimap",o]),"data-testid":"rf__minimap",children:t.jsxs("svg",{width:I,height:R,viewBox:`${j} ${H} ${Z} ${X}`,className:"react-flow__minimap-svg",role:"img","aria-labelledby":Y,ref:k,onClick:K,children:[w&&t.jsx("title",{id:Y,children:w}),t.jsx(Sl,{onClick:G,nodeColor:s,nodeStrokeColor:i,nodeBorderRadius:l,nodeClassName:a,nodeStrokeWidth:c,nodeComponent:u}),t.jsx("path",{className:"react-flow__minimap-mask",d:`M${j-V},${H-V}h${Z+2*V}v${X+2*V}h${-Z-2*V}z\n M${M.x},${M.y}h${M.width}v${M.height}h${-M.width}z`,fillRule:"evenodd",pointerEvents:"none"})]})})}El.displayName="MiniMap";const kl=n.memo(El);const _l=n.memo((function({nodeId:e,position:o,variant:i=Kr.Handle,className:s,style:a={},children:l,color:c,minWidth:u=10,minHeight:d=10,maxWidth:h=Number.MAX_VALUE,maxHeight:f=Number.MAX_VALUE,keepAspectRatio:g=!1,shouldResize:p,onResizeStart:m,onResize:y,onResizeEnd:v}){const x=Rs(),w="string"==typeof e?e:x,b=Ci(),S=n.useRef(null),C=i===Kr.Line?"right":"bottom-right",E=o??C,k=n.useRef(null);n.useEffect((()=>{if(S.current&&w)return k.current||(k.current=ri({domNode:S.current,nodeId:w,getStoreItems:()=>{const{nodeLookup:e,transform:t,snapGrid:n,snapToGrid:o,nodeOrigin:r}=b.getState();return{nodeLookup:e,transform:t,snapGrid:n,snapToGrid:o,nodeOrigin:r}},onChange:(e,t)=>{const{triggerNodeChanges:n,nodeLookup:o,parentLookup:r,nodeOrigin:i}=b.getState(),s=[],a={x:e.x,y:e.y},l=o.get(w);if(l&&l.expandParent&&l.parentId){const t=l.origin??i,n=e.width??l.measured.width,c=e.height??l.measured.height,u=_r([{id:l.id,parentId:l.parentId,rect:{width:n,height:c,...Wo({x:e.x??l.position.x,y:e.y??l.position.y},{width:n,height:c},l.parentId,o,t)}}],o,r,i);s.push(...u),a.x=e.x?Math.max(t[0]*n,e.x):void 0,a.y=e.y?Math.max(t[1]*c,e.y):void 0}if(void 0!==a.x&&void 0!==a.y){const e={id:w,type:"position",position:{...a}};s.push(e)}if(void 0!==e.width&&void 0!==e.height){const t={id:w,type:"dimensions",resizing:!0,setAttributes:!0,dimensions:{width:e.width,height:e.height}};s.push(t)}for(const e of t){const t={...e,type:"position"};s.push(t)}n(s)},onEnd:()=>{const e={id:w,type:"dimensions",resizing:!1};b.getState().triggerNodeChanges([e])}})),k.current.update({controlPosition:E,boundaries:{minWidth:u,minHeight:d,maxWidth:h,maxHeight:f},keepAspectRatio:g,onResizeStart:m,onResize:y,onResizeEnd:v,shouldResize:p}),()=>{k.current?.destroy()}}),[E,u,d,h,f,g,m,y,v,p]);const _=E.split("-"),M=i===Kr.Line?"borderColor":"backgroundColor",N=c?{...a,[M]:c}:a;return t.jsx("div",{className:r(["react-flow__resize-control","nodrag",..._,i,s]),ref:S,style:N,children:l})}));const Ml=e=>e.domNode?.querySelector(".react-flow__renderer");function Nl({children:e}){const t=Si(Ml);return t?o.createPortal(e,t):null}const Pl=(e,t)=>e?.internals.positionAbsolute.x!==t?.internals.positionAbsolute.x||e?.internals.positionAbsolute.y!==t?.internals.positionAbsolute.y||e?.measured.width!==t?.measured.width||e?.measured.height!==t?.measured.height||e?.selected!==t?.selected||e?.internals.z!==t?.internals.z,zl=(e,t)=>{if(e.size!==t.size)return!1;for(const[n,o]of e)if(Pl(o,t.get(n)))return!1;return!0},Ol=e=>({x:e.transform[0],y:e.transform[1],zoom:e.transform[2],selectedNodesCount:e.nodes.filter((e=>e.selected)).length});e.Background=ll,e.BaseEdge=oa,e.BezierEdge=xa,e.ControlButton=gl,e.Controls=yl,e.EdgeLabelRenderer=function({children:e}){const t=Si(qa);return t?o.createPortal(e,t):null},e.EdgeText=na,e.Handle=Ls,e.MiniMap=kl,e.NodeResizeControl=_l,e.NodeResizer=function({nodeId:e,isVisible:n=!0,handleClassName:o,handleStyle:r,lineClassName:i,lineStyle:s,color:a,minWidth:l=10,minHeight:c=10,maxWidth:u=Number.MAX_VALUE,maxHeight:d=Number.MAX_VALUE,keepAspectRatio:h=!1,shouldResize:f,onResizeStart:g,onResize:p,onResizeEnd:m}){return n?t.jsxs(t.Fragment,{children:[qr.map((n=>t.jsx(_l,{className:i,style:s,nodeId:e,position:n,variant:Kr.Line,color:a,minWidth:l,minHeight:c,maxWidth:u,maxHeight:d,onResizeStart:g,keepAspectRatio:h,shouldResize:f,onResize:p,onResizeEnd:m},n))),Gr.map((n=>t.jsx(_l,{className:o,style:r,nodeId:e,position:n,color:a,minWidth:l,minHeight:c,maxWidth:u,maxHeight:d,onResizeStart:g,keepAspectRatio:h,shouldResize:f,onResize:p,onResizeEnd:m},n)))]}):null},e.NodeToolbar=function({nodeId:o,children:i,className:s,style:a,isVisible:l,position:c=e.Position.Top,offset:u=10,align:d="center",...h}){const f=Rs(),g=n.useCallback((e=>{const t=(Array.isArray(o)?o:[o||f||""]).reduce(((t,n)=>{const o=e.nodeLookup.get(n);return o&&t.set(o.id,o),t}),new Map);return t}),[o,f]),p=Si(g,zl),{x:m,y:y,zoom:v,selectedNodesCount:x}=Si(Ol,Di);if(!("boolean"==typeof l?l:1===p.size&&p.values().next().value.selected&&1===x)||!p.size)return null;const w=yo(p),b=Array.from(p.values()),S=Math.max(...b.map((e=>e.internals.z+1))),C={position:"absolute",transform:xr(w,{x:m,y:y,zoom:v},c,u,d),zIndex:S,...a};return t.jsx(Nl,{children:t.jsx("div",{style:C,className:r(["react-flow__node-toolbar",s]),...h,"data-id":b.reduce(((e,t)=>`${e}${t.id} `),"").trim(),children:i})})},e.Panel=Ii,e.ReactFlow=Ga,e.ReactFlowProvider=Wa,e.SimpleBezierEdge=aa,e.SmoothStepEdge=ua,e.StepEdge=fa,e.StraightEdge=ma,e.ViewportPortal=function({children:e}){const t=Si(Ua);return t?o.createPortal(e,t):null},e.addEdge=lr,e.applyEdgeChanges=os,e.applyNodeChanges=ns,e.getBezierEdgeCenter=tr,e.getBezierPath=rr,e.getConnectedEdges=xo,e.getEdgeCenter=ir,e.getIncomers=(e,t,n)=>{if(!e.id)return[];const o=new Set;return n.forEach((t=>{t.target===e.id&&o.add(t.source)})),t.filter((e=>o.has(e.id)))},e.getNodesBounds=mo,e.getOutgoers=(e,t,n)=>{if(!e.id)return[];const o=new Set;return n.forEach((t=>{t.source===e.id&&o.add(t.target)})),t.filter((e=>o.has(e.id)))},e.getSimpleBezierPath=ia,e.getSmoothStepPath=fr,e.getStraightPath=cr,e.getViewportForBounds=jo,e.isEdge=cs,e.isNode=ls,e.reconnectEdge=(e,t,n,o={shouldReplaceId:!0})=>{const{id:r,...i}=e;if(!t.source||!t.target)return n;if(!n.find((t=>t.id===e.id)))return n;const s={...i,id:o.shouldReplaceId?ar(t):r,source:t.source,target:t.target,sourceHandle:t.sourceHandle,targetHandle:t.targetHandle};return n.filter((e=>e.id!==r)).concat(s)},e.useConnection=La,e.useEdges=function(){return Si(Ja,Di)},e.useEdgesState=function(e){const[t,o]=n.useState(e),r=n.useCallback((e=>o((t=>os(e,t)))),[]);return[t,o,r]},e.useHandleConnections=function({type:e,id:t=null,nodeId:o,onConnect:r,onDisconnect:i}){const s=Rs(),a=o??s,l=n.useRef(null),c=Si((n=>n.connectionLookup.get(`${a}-${e}-${t}`)),co);return n.useEffect((()=>{if(l.current&&l.current!==c){const e=c??new Map;uo(l.current,e,i),uo(e,l.current,r)}l.current=c??new Map}),[c,r,i]),n.useMemo((()=>Array.from(c?.values()??[])),[c])},e.useInternalNode=function(e){return Si(n.useCallback((t=>t.nodeLookup.get(e)),[e]),Di)},e.useKeyPress=qi,e.useNodeId=Rs,e.useNodes=function(){return Si(Qa,Di)},e.useNodesData=function(e){return Si(n.useCallback((t=>{const n=[],o=Array.isArray(e),r=o?e:[e];for(const e of r){const o=t.nodeLookup.get(e);o&&n.push({id:o.id,type:o.type,data:o.data})}return o?n:n[0]??null}),[e]),Nr)},e.useNodesInitialized=function(e=tl){return Si((e=>t=>{if(0===t.nodeLookup.size)return!1;for(const[,{hidden:n,internals:o}]of t.nodeLookup)if((e.includeHiddenNodes||!n)&&(void 0===o.handleBounds||!Yo(o.userNode)))return!1;return!0})(e))},e.useNodesState=function(e){const[t,o]=n.useState(e),r=n.useCallback((e=>o((t=>ns(e,t)))),[]);return[t,o,r]},e.useOnSelectionChange=function({onChange:e}){const t=Ci();n.useEffect((()=>{const n=[...t.getState().onSelectionChangeHandlers,e];return t.setState({onSelectionChangeHandlers:n}),()=>{const n=t.getState().onSelectionChangeHandlers.filter((t=>t!==e));t.setState({onSelectionChangeHandlers:n})}}),[e])},e.useOnViewportChange=function({onStart:e,onChange:t,onEnd:o}){const r=Ci();n.useEffect((()=>{r.setState({onViewportChangeStart:e})}),[e]),n.useEffect((()=>{r.setState({onViewportChange:t})}),[t]),n.useEffect((()=>{r.setState({onViewportChangeEnd:o})}),[o])},e.useReactFlow=ms,e.useStore=Si,e.useStoreApi=Ci,e.useUpdateNodeInternals=function(){const e=Ci();return n.useCallback((t=>{const{domNode:n,updateNodeInternals:o}=e.getState(),r=Array.isArray(t)?t:[t],i=new Map;r.forEach((e=>{const t=n?.querySelector(`.react-flow__node[data-id="${e}"]`);t&&i.set(e,{id:e,nodeElement:t,force:!0})})),requestAnimationFrame((()=>o(i,{triggerFitView:!1})))}),[])},e.useViewport=function(){return Si(el,Di)}}));
10
+ */ci.exports=function(){if(li)return ui;li=1;var e=n,t=fi(),o="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},r=t.useSyncExternalStore,i=e.useRef,s=e.useEffect,a=e.useMemo,l=e.useDebugValue;return ui.useSyncExternalStoreWithSelector=function(e,t,n,c,u){var d=i(null);if(null===d.current){var h={hasValue:!1,value:null};d.current=h}else h=d.current;d=a((function(){function e(e){if(!s){if(s=!0,r=e,e=c(e),void 0!==u&&h.hasValue){var t=h.value;if(u(t,e))return i=t}return i=e}if(t=i,o(r,e))return t;var n=c(e);return void 0!==u&&u(t,n)?t:(r=e,i=n)}var r,i,s=!1,a=void 0===n?null:n;return[function(){return e(t())},null===a?void 0:function(){return e(a())}]}),[t,n,c,u]);var f=r(e,d[0],d[1]);return s((function(){h.hasValue=!0,h.value=f}),[f]),l(f),f},ui}();var gi=ii(ci.exports);const pi=e=>{let t;const n=new Set,o=(e,o)=>{const r="function"==typeof e?e(t):e;if(!Object.is(r,t)){const e=t;t=(null!=o?o:"object"!=typeof r)?r:Object.assign({},t,r),n.forEach((n=>n(t,e)))}},r=()=>t,i={setState:o,getState:r,subscribe:e=>(n.add(e),()=>n.delete(e)),destroy:()=>{console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),n.clear()}};return t=e(o,r,i),i},{useSyncExternalStoreWithSelector:mi}=gi;function yi(e,t=e.getState,o){const r=mi(e.subscribe,e.getState,e.getServerState||e.getState,t,o);return n.useDebugValue(r),r}const vi=(e,t)=>{const n=(e=>e?pi(e):pi)(e),o=(e,o=t)=>yi(n,e,o);return Object.assign(o,n),o},xi=n.createContext(null),wi=xi.Provider,bi=Qn.error001();function Si(e,t){const o=n.useContext(xi);if(null===o)throw new Error(bi);return yi(o,e,t)}function Ci(){const e=n.useContext(xi);if(null===e)throw new Error(bi);return n.useMemo((()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe})),[e])}const Ei={display:"none"},ki={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},_i="react-flow__node-desc",Mi="react-flow__edge-desc",Ni="react-flow__aria-live",Pi=e=>e.ariaLiveMessage;function zi({rfId:e}){const n=Si(Pi);return t.jsx("div",{id:`${Ni}-${e}`,"aria-live":"assertive","aria-atomic":"true",style:ki,children:n})}function Oi({rfId:e,disableKeyboardA11y:n}){return t.jsxs(t.Fragment,{children:[t.jsxs("div",{id:`${_i}-${e}`,style:Ei,children:["Press enter or space to select a node.",!n&&"You can then use the arrow keys to move the node around."," Press delete to remove it and escape to cancel."," "]}),t.jsx("div",{id:`${Mi}-${e}`,style:Ei,children:"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel."}),!n&&t.jsx(zi,{rfId:e})]})}const Ai=e=>e.userSelectionActive?"none":"all";function Ii({position:e="top-left",children:n,className:o,style:i,...s}){const a=Si(Ai),l=`${e}`.split("-");return t.jsx("div",{className:r(["react-flow__panel",o,...l]),style:{...i,pointerEvents:a},...s,children:n})}function Ri({proOptions:e,position:n="bottom-right"}){return e?.hideAttribution?null:t.jsx(Ii,{position:n,className:"react-flow__attribution","data-message":"Please only hide this attribution when you are subscribed to React Flow Pro: https://pro.reactflow.dev",children:t.jsx("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution",children:"React Flow"})})}function Di(e,t){if(Object.is(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(const[n,o]of e)if(!Object.is(o,t.get(n)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(const n of e)if(!t.has(n))return!1;return!0}const n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(let o=0;o<n.length;o++)if(!Object.prototype.hasOwnProperty.call(t,n[o])||!Object.is(e[n[o]],t[n[o]]))return!1;return!0}const Li=e=>{const t=[],n=[];for(const[,n]of e.nodeLookup)n.selected&&t.push(n.internals.userNode);for(const[,t]of e.edgeLookup)t.selected&&n.push(t);return{selectedNodes:t,selectedEdges:n}},$i=e=>e.id;function Bi(e,t){return Di(e.selectedNodes.map($i),t.selectedNodes.map($i))&&Di(e.selectedEdges.map($i),t.selectedEdges.map($i))}function Ti({onSelectionChange:e}){const t=Ci(),{selectedNodes:o,selectedEdges:r}=Si(Li,Bi);return n.useEffect((()=>{const n={nodes:o,edges:r};e?.(n),t.getState().onSelectionChangeHandlers.forEach((e=>e(n)))}),[o,r,e]),null}const Vi=e=>!!e.onSelectionChangeHandlers;function ji({onSelectionChange:e}){const n=Si(Vi);return e||n?t.jsx(Ti,{onSelectionChange:e}):null}const Hi=[0,0],Zi={x:0,y:0,zoom:1},Xi=["nodes","edges","defaultNodes","defaultEdges","onConnect","onConnectStart","onConnectEnd","onClickConnectStart","onClickConnectEnd","nodesDraggable","nodesConnectable","nodesFocusable","edgesFocusable","edgesReconnectable","elevateNodesOnSelect","elevateEdgesOnSelect","minZoom","maxZoom","nodeExtent","onNodesChange","onEdgesChange","elementsSelectable","connectionMode","snapGrid","snapToGrid","translateExtent","connectOnClick","defaultEdgeOptions","fitView","fitViewOptions","onNodesDelete","onEdgesDelete","onDelete","onNodeDrag","onNodeDragStart","onNodeDragStop","onSelectionDrag","onSelectionDragStart","onSelectionDragStop","onMoveStart","onMove","onMoveEnd","noPanClassName","nodeOrigin","autoPanOnConnect","autoPanOnNodeDrag","onError","connectionRadius","isValidConnection","selectNodesOnDrag","nodeDragThreshold","onBeforeDelete","debug","autoPanSpeed","paneClickDistance","rfId"],Yi=e=>({setNodes:e.setNodes,setEdges:e.setEdges,setMinZoom:e.setMinZoom,setMaxZoom:e.setMaxZoom,setTranslateExtent:e.setTranslateExtent,setNodeExtent:e.setNodeExtent,reset:e.reset,setDefaultNodesAndEdges:e.setDefaultNodesAndEdges,setPaneClickDistance:e.setPaneClickDistance}),Wi={translateExtent:Jn,nodeOrigin:Hi,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:"nopan",rfId:"1",paneClickDistance:0};function Fi(e){const{setNodes:t,setEdges:o,setMinZoom:r,setMaxZoom:i,setTranslateExtent:s,setNodeExtent:a,reset:l,setDefaultNodesAndEdges:c,setPaneClickDistance:u}=Si(Yi,Di),d=Ci();n.useEffect((()=>(c(e.defaultNodes,e.defaultEdges),()=>{h.current=Wi,l()})),[]);const h=n.useRef(Wi);return n.useEffect((()=>{for(const n of Xi){const l=e[n];l!==h.current[n]&&(void 0!==e[n]&&("nodes"===n?t(l):"edges"===n?o(l):"minZoom"===n?r(l):"maxZoom"===n?i(l):"translateExtent"===n?s(l):"nodeExtent"===n?a(l):"paneClickDistance"===n?u(l):"fitView"===n?d.setState({fitViewOnInit:l}):"fitViewOptions"===n?d.setState({fitViewOnInitOptions:l}):d.setState({[n]:l})))}h.current=e}),Xi.map((t=>e[t]))),null}function Ki(){return"undefined"!=typeof window&&window.matchMedia?window.matchMedia("(prefers-color-scheme: dark)"):null}const Gi="undefined"!=typeof document?document:null;function qi(e=null,t={target:Gi,actInsideInputWithModifier:!0}){const[o,r]=n.useState(!1),i=n.useRef(!1),s=n.useRef(new Set([])),[a,l]=n.useMemo((()=>{if(null!==e){const t=(Array.isArray(e)?e:[e]).filter((e=>"string"==typeof e)).map((e=>e.split("+"))),n=t.reduce(((e,t)=>e.concat(...t)),[]);return[t,n]}return[[],[]]}),[e]);return n.useEffect((()=>{const n=t?.target||Gi;if(null!==e){const e=e=>{i.current=e.ctrlKey||e.metaKey||e.shiftKey;if((!i.current||i.current&&!t.actInsideInputWithModifier)&&Uo(e))return!1;const n=Qi(e.code,l);s.current.add(e[n]),Ui(a,s.current,!1)&&(e.preventDefault(),r(!0))},o=e=>{if((!i.current||i.current&&!t.actInsideInputWithModifier)&&Uo(e))return!1;const n=Qi(e.code,l);Ui(a,s.current,!0)?(r(!1),s.current.clear()):s.current.delete(e[n]),"Meta"===e.key&&s.current.clear(),i.current=!1},c=()=>{s.current.clear(),r(!1)};return n?.addEventListener("keydown",e),n?.addEventListener("keyup",o),window.addEventListener("blur",c),window.addEventListener("contextmenu",c),()=>{n?.removeEventListener("keydown",e),n?.removeEventListener("keyup",o),window.removeEventListener("blur",c),window.removeEventListener("contextmenu",c)}}}),[e,r]),o}function Ui(e,t,n){return e.filter((e=>n||e.length===t.size)).some((e=>e.every((e=>t.has(e)))))}function Qi(e,t){return t.includes(e)?"code":"key"}const Ji=()=>{const e=Ci();return n.useMemo((()=>({zoomIn:t=>{const{panZoom:n}=e.getState();return n?n.scaleBy(1.2,{duration:t?.duration}):Promise.resolve(!1)},zoomOut:t=>{const{panZoom:n}=e.getState();return n?n.scaleBy(1/1.2,{duration:t?.duration}):Promise.resolve(!1)},zoomTo:(t,n)=>{const{panZoom:o}=e.getState();return o?o.scaleTo(t,{duration:n?.duration}):Promise.resolve(!1)},getZoom:()=>e.getState().transform[2],setViewport:async(t,n)=>{const{transform:[o,r,i],panZoom:s}=e.getState();return s?(await s.setViewport({x:t.x??o,y:t.y??r,zoom:t.zoom??i},{duration:n?.duration}),Promise.resolve(!0)):Promise.resolve(!1)},getViewport:()=>{const[t,n,o]=e.getState().transform;return{x:t,y:n,zoom:o}},fitView:t=>{const{nodeLookup:n,minZoom:o,maxZoom:r,panZoom:i,domNode:s}=e.getState();if(!i||!s)return Promise.resolve(!1);const a=wo(n,t),{width:l,height:c}=Ko(s);return bo({nodes:a,width:l,height:c,minZoom:o,maxZoom:r,panZoom:i},t)},setCenter:async(t,n,o)=>{const{width:r,height:i,maxZoom:s,panZoom:a}=e.getState(),l=void 0!==o?.zoom?o.zoom:s,c=r/2-t*l,u=i/2-n*l;return a?(await a.setViewport({x:c,y:u,zoom:l},{duration:o?.duration}),Promise.resolve(!0)):Promise.resolve(!1)},fitBounds:async(t,n)=>{const{width:o,height:r,minZoom:i,maxZoom:s,panZoom:a}=e.getState(),l=jo(t,o,r,i,s,n?.padding??.1);return a?(await a.setViewport(l,{duration:n?.duration}),Promise.resolve(!0)):Promise.resolve(!1)},screenToFlowPosition:(t,n={snapToGrid:!0})=>{const{transform:o,snapGrid:r,domNode:i}=e.getState();if(!i)return t;const{x:s,y:a}=i.getBoundingClientRect(),l={x:t.x-s,y:t.y-a};return To(l,o,n.snapToGrid,r)},flowToScreenPosition:t=>{const{transform:n,domNode:o}=e.getState();if(!o)return t;const{x:r,y:i}=o.getBoundingClientRect(),s=Vo(t,n);return{x:s.x+r,y:s.y+i}}})),[])};function es(e,t){const n=[],o=new Map,r=[];for(const t of e)if("add"!==t.type)if("remove"===t.type||"replace"===t.type)o.set(t.id,[t]);else{const e=o.get(t.id);e?e.push(t):o.set(t.id,[t])}else r.push(t);for(const e of t){const t=o.get(e.id);if(!t){n.push(e);continue}if("remove"===t[0].type)continue;if("replace"===t[0].type){n.push({...t[0].item});continue}const r={...e};for(const e of t)ts(e,r);n.push(r)}return r.length&&r.forEach((e=>{void 0!==e.index?n.splice(e.index,0,{...e.item}):n.push({...e.item})})),n}function ts(e,t){switch(e.type){case"select":t.selected=e.selected;break;case"position":void 0!==e.position&&(t.position=e.position),void 0!==e.dragging&&(t.dragging=e.dragging);break;case"dimensions":void 0!==e.dimensions&&(t.measured??={},t.measured.width=e.dimensions.width,t.measured.height=e.dimensions.height,e.setAttributes&&(t.width=e.dimensions.width,t.height=e.dimensions.height)),"boolean"==typeof e.resizing&&(t.resizing=e.resizing)}}function ns(e,t){return es(e,t)}function os(e,t){return es(e,t)}function rs(e,t){return{id:e,type:"select",selected:t}}function is(e,t=new Set,n=!1){const o=[];for(const[r,i]of e){const e=t.has(r);void 0===i.selected&&!e||i.selected===e||(n&&(i.selected=e),o.push(rs(i.id,e)))}return o}function ss({items:e=[],lookup:t}){const n=[],o=new Map(e.map((e=>[e.id,e])));for(const[o,r]of e.entries()){const e=t.get(r.id),i=e?.internals?.userNode??e;void 0!==i&&i!==r&&n.push({id:r.id,item:r,type:"replace"}),void 0===i&&n.push({item:r,type:"add",index:o})}for(const[e]of t){void 0===o.get(e)&&n.push({id:e,type:"remove"})}return n}function as(e){return{id:e.id,type:"remove"}}const ls=e=>(e=>"id"in e&&"position"in e&&!("source"in e)&&!("target"in e))(e),cs=e=>fo(e);function us(e){return n.forwardRef(e)}const ds="undefined"!=typeof window?n.useLayoutEffect:n.useEffect;function hs(e){const[t,o]=n.useState(!1),[r]=n.useState((()=>function(e){let t=[];return{get:()=>t,reset:()=>{t=[]},push:n=>{t.push(n),e()}}}((()=>o(!0)))));return ds((()=>{if(!t)return void r.reset();const n=r.get();n.length&&(e(n),r.reset()),o(!1)}),[t]),r}const fs=n.createContext(null);function gs({children:e}){const o=Ci(),r=hs(n.useCallback((e=>{const{nodes:t=[],setNodes:n,hasDefaultNodes:r,onNodesChange:i,nodeLookup:s}=o.getState();let a=t;for(const t of e)a="function"==typeof t?t(a):t;r?n(a):i&&i(ss({items:a,lookup:s}))}),[])),i=hs(n.useCallback((e=>{const{edges:t=[],setEdges:n,hasDefaultEdges:r,onEdgesChange:i,edgeLookup:s}=o.getState();let a=t;for(const t of e)a="function"==typeof t?t(a):t;r?n(a):i&&i(ss({items:a,lookup:s}))}),[])),s=n.useMemo((()=>({nodeQueue:r,edgeQueue:i})),[]);return t.jsx(fs.Provider,{value:s,children:e})}const ps=e=>!!e.panZoom;function ms(){const e=Ji(),t=Ci(),o=function(){const e=n.useContext(fs);if(!e)throw new Error("useBatchContext must be used within a BatchProvider");return e}(),r=Si(ps),i=n.useMemo((()=>{const e=e=>t.getState().nodeLookup.get(e),n=e=>{o.nodeQueue.push(e)},r=e=>{o.edgeQueue.push(e)},i=e=>{const{nodeLookup:n,nodeOrigin:o}=t.getState(),r=ls(e)?e:n.get(e.id),i=r.parentId?Wo(r.position,r.measured,r.parentId,n,o):r.position,s={id:r.id,position:i,width:r.measured?.width??r.width,height:r.measured?.height??r.height,data:r.data};return Oo(s)},s=(e,t,o={replace:!1})=>{n((n=>n.map((n=>{if(n.id===e){const e="function"==typeof t?t(n):t;return o.replace&&ls(e)?e:{...n,...e}}return n}))))},a=(e,t,n={replace:!1})=>{r((o=>o.map((o=>{if(o.id===e){const e="function"==typeof t?t(o):t;return n.replace&&cs(e)?e:{...o,...e}}return o}))))};return{getNodes:()=>t.getState().nodes.map((e=>({...e}))),getNode:t=>e(t)?.internals.userNode,getInternalNode:e,getEdges:()=>{const{edges:e=[]}=t.getState();return e.map((e=>({...e})))},getEdge:e=>t.getState().edgeLookup.get(e),setNodes:n,setEdges:r,addNodes:e=>{const t=Array.isArray(e)?e:[e];o.nodeQueue.push((e=>[...e,...t]))},addEdges:e=>{const t=Array.isArray(e)?e:[e];o.edgeQueue.push((e=>[...e,...t]))},toObject:()=>{const{nodes:e=[],edges:n=[],transform:o}=t.getState(),[r,i,s]=o;return{nodes:e.map((e=>({...e}))),edges:n.map((e=>({...e}))),viewport:{x:r,y:i,zoom:s}}},deleteElements:async({nodes:e=[],edges:n=[]})=>{const{nodes:o,edges:r,onNodesDelete:i,onEdgesDelete:s,triggerNodeChanges:a,triggerEdgeChanges:l,onDelete:c,onBeforeDelete:u}=t.getState(),{nodes:d,edges:h}=await async function({nodesToRemove:e=[],edgesToRemove:t=[],nodes:n,edges:o,onBeforeDelete:r}){const i=new Set(e.map((e=>e.id))),s=[];for(const e of n){if(!1===e.deletable)continue;const t=i.has(e.id),n=!t&&e.parentId&&s.find((t=>t.id===e.parentId));(t||n)&&s.push(e)}const a=new Set(t.map((e=>e.id))),l=o.filter((e=>!1!==e.deletable)),c=xo(s,l);for(const e of l)a.has(e.id)&&!c.find((t=>t.id===e.id))&&c.push(e);if(!r)return{edges:c,nodes:s};const u=await r({nodes:s,edges:c});return"boolean"==typeof u?u?{edges:c,nodes:s}:{edges:[],nodes:[]}:u}({nodesToRemove:e,edgesToRemove:n,nodes:o,edges:r,onBeforeDelete:u}),f=h.length>0,g=d.length>0;if(f){const e=h.map(as);s?.(h),l(e)}if(g){const e=d.map(as);i?.(d),a(e)}return(g||f)&&c?.({nodes:d,edges:h}),{deletedNodes:d,deletedEdges:h}},getIntersectingNodes:(e,n=!0,o)=>{const r=Do(e),s=r?e:i(e),a=void 0!==o;return s?(o||t.getState().nodes).filter((o=>{const i=t.getState().nodeLookup.get(o.id);if(i&&!r&&(o.id===e.id||!i.internals.positionAbsolute))return!1;const l=Oo(a?o:i),c=Ro(l,s);return n&&c>0||c>=s.width*s.height})):[]},isNodeIntersecting:(e,t,n=!0)=>{const o=Do(e)?e:i(e);if(!o)return!1;const r=Ro(o,t);return n&&r>0||r>=o.width*o.height},updateNode:s,updateNodeData:(e,t,n={replace:!1})=>{s(e,(e=>{const o="function"==typeof t?t(e):t;return n.replace?{...e,data:o}:{...e,data:{...e.data,...o}}}),n)},updateEdge:a,updateEdgeData:(e,t,n={replace:!1})=>{a(e,(e=>{const o="function"==typeof t?t(e):t;return n.replace?{...e,data:o}:{...e,data:{...e.data,...o}}}),n)},getNodesBounds:e=>{const{nodeLookup:n,nodeOrigin:o}=t.getState();return mo(e,{nodeLookup:n,nodeOrigin:o})},getHandleConnections:({type:e,id:n,nodeId:o})=>Array.from(t.getState().connectionLookup.get(`${o}-${e}-${n??null}`)?.values()??[])}}),[]);return n.useMemo((()=>({...i,...e,viewportInitialized:r})),[r])}const ys=e=>e.selected,vs={actInsideInputWithModifier:!1},xs="undefined"!=typeof window?window:void 0;const ws={position:"absolute",width:"100%",height:"100%",top:0,left:0},bs=e=>({userSelectionActive:e.userSelectionActive,lib:e.lib});function Ss({onPaneContextMenu:o,zoomOnScroll:r=!0,zoomOnPinch:i=!0,panOnScroll:s=!1,panOnScrollSpeed:a=.5,panOnScrollMode:l=e.PanOnScrollMode.Free,zoomOnDoubleClick:c=!0,panOnDrag:u=!0,defaultViewport:d,translateExtent:h,minZoom:f,maxZoom:g,zoomActivationKeyCode:p,preventScrolling:m=!0,children:y,noWheelClassName:v,noPanClassName:x,onViewportChange:w,isControlledViewport:b,paneClickDistance:S}){const C=Ci(),E=n.useRef(null),{userSelectionActive:k,lib:_}=Si(bs,Di),M=qi(p),N=n.useRef();!function(e){const t=Ci();n.useEffect((()=>{const n=()=>{if(!e.current)return!1;const n=Ko(e.current);0!==n.height&&0!==n.width||t.getState().onError?.("004",Qn.error004()),t.setState({width:n.width||500,height:n.height||500})};if(e.current){n(),window.addEventListener("resize",n);const t=new ResizeObserver((()=>n()));return t.observe(e.current),()=>{window.removeEventListener("resize",n),t&&e.current&&t.unobserve(e.current)}}}),[])}(E);const P=n.useCallback((e=>{w?.({x:e[0],y:e[1],zoom:e[2]}),b||C.setState({transform:e})}),[w,b]);return n.useEffect((()=>{if(E.current){N.current=Fr({domNode:E.current,minZoom:f,maxZoom:g,translateExtent:h,viewport:d,paneClickDistance:S,onDraggingChange:e=>C.setState({paneDragging:e}),onPanZoomStart:(e,t)=>{const{onViewportChangeStart:n,onMoveStart:o}=C.getState();o?.(e,t),n?.(t)},onPanZoom:(e,t)=>{const{onViewportChange:n,onMove:o}=C.getState();o?.(e,t),n?.(t)},onPanZoomEnd:(e,t)=>{const{onViewportChangeEnd:n,onMoveEnd:o}=C.getState();o?.(e,t),n?.(t)}});const{x:e,y:t,zoom:n}=N.current.getViewport();return C.setState({panZoom:N.current,transform:[e,t,n],domNode:E.current.closest(".react-flow")}),()=>{N.current?.destroy()}}}),[]),n.useEffect((()=>{N.current?.update({onPaneContextMenu:o,zoomOnScroll:r,zoomOnPinch:i,panOnScroll:s,panOnScrollSpeed:a,panOnScrollMode:l,zoomOnDoubleClick:c,panOnDrag:u,zoomActivationKeyPressed:M,preventScrolling:m,noPanClassName:x,userSelectionActive:k,noWheelClassName:v,lib:_,onTransformChange:P})}),[o,r,i,s,a,l,c,u,M,m,x,k,v,_,P]),t.jsx("div",{className:"react-flow__renderer",ref:E,style:ws,children:y})}const Cs=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function Es(){const{userSelectionActive:e,userSelectionRect:n}=Si(Cs,Di);return e&&n?t.jsx("div",{className:"react-flow__selection react-flow__container",style:{width:n.width,height:n.height,transform:`translate(${n.x}px, ${n.y}px)`}}):null}const ks=(e,t)=>n=>{n.target===t.current&&e?.(n)},_s=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,dragging:e.paneDragging});function Ms({isSelecting:o,selectionKeyPressed:i,selectionMode:s=e.SelectionMode.Full,panOnDrag:a,selectionOnDrag:l,onSelectionStart:c,onSelectionEnd:u,onPaneClick:d,onPaneContextMenu:h,onPaneScroll:f,onPaneMouseEnter:g,onPaneMouseMove:p,onPaneMouseLeave:m,children:y}){const v=n.useRef(null),x=Ci(),w=n.useRef(0),b=n.useRef(0),S=n.useRef(),C=n.useRef(new Map),{userSelectionActive:E,elementsSelectable:k,dragging:_}=Si(_s,Di),M=k&&(o||E),N=n.useRef(!1),P=n.useRef(!1),z=e=>{N.current?N.current=!1:(d?.(e),x.getState().resetSelectedElements(),x.setState({nodesSelectionActive:!1}))},O=f?e=>f(e):void 0,A=!0===a||Array.isArray(a)&&a.includes(0);return t.jsxs("div",{className:r(["react-flow__pane",{draggable:A,dragging:_,selection:o}]),onClick:M?void 0:ks(z,v),onContextMenu:ks((e=>{Array.isArray(a)&&a?.includes(2)?e.preventDefault():h?.(e)}),v),onWheel:ks(O,v),onPointerEnter:M?void 0:g,onPointerDown:M?e=>{const{resetSelectedElements:t,domNode:n,edgeLookup:r}=x.getState();if(S.current=n?.getBoundingClientRect(),!k||!o||0!==e.button||e.target!==v.current||!S.current)return;e.target?.setPointerCapture?.(e.pointerId),P.current=!0,N.current=!1,C.current=new Map;for(const[e,t]of r)C.current.set(t.source,C.current.get(t.source)?.add(e)||new Set([e])),C.current.set(t.target,C.current.get(t.target)?.add(e)||new Set([e]));const{x:i,y:s}=Jo(e.nativeEvent,S.current);t(),x.setState({userSelectionRect:{width:0,height:0,startX:i,startY:s,x:i,y:s}}),c?.(e)}:p,onPointerMove:M?t=>{const{userSelectionRect:n,edgeLookup:o,transform:r,nodeLookup:i,triggerNodeChanges:a,triggerEdgeChanges:l}=x.getState();if(!S.current||!n)return;N.current=!0;const{x:c,y:u}=Jo(t.nativeEvent,S.current),{startX:d,startY:h}=n,f={startX:d,startY:h,x:c<d?c:d,y:u<h?u:h,width:Math.abs(c-d),height:Math.abs(u-h)},g=vo(i,f,r,s===e.SelectionMode.Partial,!0),p=new Set,m=new Set;for(const e of g){m.add(e.id);const t=C.current.get(e.id);if(t)for(const e of t)p.add(e)}if(w.current!==m.size){w.current=m.size;a(is(i,m,!0))}if(b.current!==p.size){b.current=p.size;l(is(o,p))}x.setState({userSelectionRect:f,userSelectionActive:!0,nodesSelectionActive:!1})}:p,onPointerUp:M?e=>{if(0!==e.button||!P.current)return;e.target?.releasePointerCapture?.(e.pointerId);const{userSelectionRect:t}=x.getState();!E&&t&&e.target===v.current&&z?.(e),w.current>0&&x.setState({nodesSelectionActive:!0}),x.setState({userSelectionActive:!1,userSelectionRect:null}),w.current=0,b.current=0,u?.(e),(i||l)&&(N.current=!1),P.current=!1}:void 0,onPointerLeave:m,ref:v,style:ws,children:[y,t.jsx(Es,{})]})}function Ns({id:e,store:t,unselect:n=!1,nodeRef:o}){const{addSelectedNodes:r,unselectNodesAndEdges:i,multiSelectionActive:s,nodeLookup:a,onError:l}=t.getState(),c=a.get(e);c?(t.setState({nodesSelectionActive:!1}),c.selected?(n||c.selected&&s)&&(i({nodes:[c],edges:[]}),requestAnimationFrame((()=>o?.current?.blur()))):r([e])):l?.("012",Qn.error012(e))}function Ps({nodeRef:e,disabled:t=!1,noDragClassName:o,handleSelector:r,nodeId:i,isSelectable:s,nodeClickDistance:a}){const l=Ci(),[c,u]=n.useState(!1),d=n.useRef();return n.useEffect((()=>{d.current=Ar({getStoreItems:()=>l.getState(),onNodeMouseDown:t=>{Ns({id:t,store:l,nodeRef:e})},onDragStart:()=>{u(!0)},onDragStop:()=>{u(!1)}})}),[]),n.useEffect((()=>{if(t)d.current?.destroy();else if(e.current)return d.current?.update({noDragClassName:o,handleSelector:r,domNode:e.current,isSelectable:s,nodeId:i,nodeClickDistance:a}),()=>{d.current?.destroy()}}),[o,r,t,s,e,i]),c}const zs=e=>t=>t.selected&&(t.draggable||e&&void 0===t.draggable);function Os(){const e=Ci();return n.useCallback((t=>{const{nodeExtent:n,snapToGrid:o,snapGrid:r,nodesDraggable:i,onError:s,updateNodePositions:a,nodeLookup:l,nodeOrigin:c}=e.getState(),u=new Map,d=zs(i),h=o?r[0]:5,f=o?r[1]:5,g=t.direction.x*h*t.factor,p=t.direction.y*f*t.factor;for(const[,e]of l){if(!d(e))continue;let t={x:e.internals.positionAbsolute.x+g,y:e.internals.positionAbsolute.y+p};o&&(t=Bo(t,r));const{position:i,positionAbsolute:a}=So({nodeId:e.id,nextPosition:t,nodeLookup:l,nodeExtent:n,nodeOrigin:c,onError:s});e.position=i,e.internals.positionAbsolute=a,u.set(e.id,e)}a(u)}),[])}const As=n.createContext(null),Is=As.Provider;As.Consumer;const Rs=()=>n.useContext(As),Ds=e=>({connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName,rfId:e.rfId});const Ls=n.memo(us((function({type:n="source",position:o=e.Position.Top,isValidConnection:i,isConnectable:s=!0,isConnectableStart:a=!0,isConnectableEnd:l=!0,id:c,onConnect:u,children:d,className:h,onMouseDown:f,onTouchStart:g,...p},m){const y=c||null,v="target"===n,x=Ci(),w=Rs(),{connectOnClick:b,noPanClassName:S,rfId:C}=Si(Ds,Di),{connectingFrom:E,connectingTo:k,clickConnecting:_,isPossibleEndHandle:M,connectionInProcess:N,valid:P}=Si(((t,n,o)=>r=>{const{connectionClickStartHandle:i,connectionMode:s,connection:a}=r,{fromHandle:l,toHandle:c,isValid:u}=a,d=c?.nodeId===t&&c?.id===n&&c?.type===o;return{connectingFrom:l?.nodeId===t&&l?.id===n&&l?.type===o,connectingTo:d,clickConnecting:i?.nodeId===t&&i?.id===n&&i?.type===o,isPossibleEndHandle:s===e.ConnectionMode.Strict?l?.type!==o:t!==l?.nodeId||n!==l?.id,connectionInProcess:!!l,valid:d&&u}})(w,y,n),Di);w||x.getState().onError?.("010",Qn.error010());const z=e=>{const{defaultEdgeOptions:t,onConnect:n,hasDefaultEdges:o}=x.getState(),r={...t,...e};if(o){const{edges:e,setEdges:t}=x.getState();t(lr(r,e))}n?.(r),u?.(r)},O=e=>{if(!w)return;const t=Qo(e.nativeEvent);if(a&&(t&&0===e.button||!t)){const t=x.getState();Tr.onPointerDown(e.nativeEvent,{autoPanOnConnect:t.autoPanOnConnect,connectionMode:t.connectionMode,connectionRadius:t.connectionRadius,domNode:t.domNode,nodeLookup:t.nodeLookup,lib:t.lib,isTarget:v,handleId:y,nodeId:w,flowId:t.rfId,panBy:t.panBy,cancelConnection:t.cancelConnection,onConnectStart:t.onConnectStart,onConnectEnd:t.onConnectEnd,updateConnection:t.updateConnection,onConnect:z,isValidConnection:i||t.isValidConnection,getTransform:()=>x.getState().transform,getFromHandle:()=>x.getState().connection.fromHandle,autoPanSpeed:t.autoPanSpeed})}t?f?.(e):g?.(e)};return t.jsx("div",{"data-handleid":y,"data-nodeid":w,"data-handlepos":o,"data-id":`${C}-${w}-${y}-${n}`,className:r(["react-flow__handle",`react-flow__handle-${o}`,"nodrag",S,h,{source:!v,target:v,connectable:s,connectablestart:a,connectableend:l,clickconnecting:_,connectingfrom:E,connectingto:k,valid:P,connectionindicator:s&&(!N||M)&&(N?l:a)}]),onMouseDown:O,onTouchStart:O,onClick:b?e=>{const{onClickConnectStart:t,onClickConnectEnd:o,connectionClickStartHandle:r,connectionMode:s,isValidConnection:l,lib:c,rfId:u,nodeLookup:d,connection:h}=x.getState();if(!w||!r&&!a)return;if(!r)return t?.(e.nativeEvent,{nodeId:w,handleId:y,handleType:n}),void x.setState({connectionClickStartHandle:{nodeId:w,type:n,id:y}});const f=Go(e.target),g=i||l,{connection:p,isValid:m}=Tr.isValid(e.nativeEvent,{handle:{nodeId:w,id:y,type:n},connectionMode:s,fromNodeId:r.nodeId,fromHandleId:r.id||null,fromType:r.type,isValidConnection:g,flowId:u,doc:f,lib:c,nodeLookup:d});m&&p&&z(p);const v=structuredClone(h);delete v.inProgress,v.toPosition=v.toHandle?v.toHandle.position:null,o?.(e,v),x.setState({connectionClickStartHandle:null})}:void 0,ref:m,...p,children:d})})));const $s={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},Bs={input:function({data:n,isConnectable:o,sourcePosition:r=e.Position.Bottom}){return t.jsxs(t.Fragment,{children:[n?.label,t.jsx(Ls,{type:"source",position:r,isConnectable:o})]})},default:function({data:n,isConnectable:o,targetPosition:r=e.Position.Top,sourcePosition:i=e.Position.Bottom}){return t.jsxs(t.Fragment,{children:[t.jsx(Ls,{type:"target",position:r,isConnectable:o}),n?.label,t.jsx(Ls,{type:"source",position:i,isConnectable:o})]})},output:function({data:n,isConnectable:o,targetPosition:r=e.Position.Top}){return t.jsxs(t.Fragment,{children:[t.jsx(Ls,{type:"target",position:r,isConnectable:o}),n?.label]})},group:function(){return null}};const Ts=e=>{const{width:t,height:n,x:o,y:r}=yo(e.nodeLookup,{filter:e=>!!e.selected});return{width:Lo(t)?t:null,height:Lo(n)?n:null,userSelectionActive:e.userSelectionActive,transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]}) translate(${o}px,${r}px)`}};function Vs({onSelectionContextMenu:e,noPanClassName:o,disableKeyboardA11y:i}){const s=Ci(),{width:a,height:l,transformString:c,userSelectionActive:u}=Si(Ts,Di),d=Os(),h=n.useRef(null);if(n.useEffect((()=>{i||h.current?.focus({preventScroll:!0})}),[i]),Ps({nodeRef:h}),u||!a||!l)return null;const f=e?t=>{const n=s.getState().nodes.filter((e=>e.selected));e(t,n)}:void 0;return t.jsx("div",{className:r(["react-flow__nodesselection","react-flow__container",o]),style:{transform:c},children:t.jsx("div",{ref:h,className:"react-flow__nodesselection-rect",onContextMenu:f,tabIndex:i?void 0:-1,onKeyDown:i?void 0:e=>{Object.prototype.hasOwnProperty.call($s,e.key)&&d({direction:$s[e.key],factor:e.shiftKey?4:1})},style:{width:a,height:l}})})}const js="undefined"!=typeof window?window:void 0,Hs=e=>({nodesSelectionActive:e.nodesSelectionActive,userSelectionActive:e.userSelectionActive});function Zs({children:e,onPaneClick:o,onPaneMouseEnter:r,onPaneMouseMove:i,onPaneMouseLeave:s,onPaneContextMenu:a,onPaneScroll:l,paneClickDistance:c,deleteKeyCode:u,selectionKeyCode:d,selectionOnDrag:h,selectionMode:f,onSelectionStart:g,onSelectionEnd:p,multiSelectionKeyCode:m,panActivationKeyCode:y,zoomActivationKeyCode:v,elementsSelectable:x,zoomOnScroll:w,zoomOnPinch:b,panOnScroll:S,panOnScrollSpeed:C,panOnScrollMode:E,zoomOnDoubleClick:k,panOnDrag:_,defaultViewport:M,translateExtent:N,minZoom:P,maxZoom:z,preventScrolling:O,onSelectionContextMenu:A,noWheelClassName:I,noPanClassName:R,disableKeyboardA11y:D,onViewportChange:L,isControlledViewport:$}){const{nodesSelectionActive:B,userSelectionActive:T}=Si(Hs),V=qi(d,{target:js}),j=qi(y,{target:js}),H=j||_,Z=j||S,X=h&&!0!==H,Y=V||T||X;return function({deleteKeyCode:e,multiSelectionKeyCode:t}){const o=Ci(),{deleteElements:r}=ms(),i=qi(e,vs),s=qi(t,{target:xs});n.useEffect((()=>{if(i){const{edges:e,nodes:t}=o.getState();r({nodes:t.filter(ys),edges:e.filter(ys)}),o.setState({nodesSelectionActive:!1})}}),[i]),n.useEffect((()=>{o.setState({multiSelectionActive:s})}),[s])}({deleteKeyCode:u,multiSelectionKeyCode:m}),t.jsx(Ss,{onPaneContextMenu:a,elementsSelectable:x,zoomOnScroll:w,zoomOnPinch:b,panOnScroll:Z,panOnScrollSpeed:C,panOnScrollMode:E,zoomOnDoubleClick:k,panOnDrag:!V&&H,defaultViewport:M,translateExtent:N,minZoom:P,maxZoom:z,zoomActivationKeyCode:v,preventScrolling:O,noWheelClassName:I,noPanClassName:R,onViewportChange:L,isControlledViewport:$,paneClickDistance:c,children:t.jsxs(Ms,{onSelectionStart:g,onSelectionEnd:p,onPaneClick:o,onPaneMouseEnter:r,onPaneMouseMove:i,onPaneMouseLeave:s,onPaneContextMenu:a,onPaneScroll:l,panOnDrag:H,isSelecting:!!Y,selectionMode:f,selectionKeyPressed:V,selectionOnDrag:X,children:[e,B&&t.jsx(Vs,{onSelectionContextMenu:A,noPanClassName:R,disableKeyboardA11y:D})]})})}Zs.displayName="FlowRenderer";const Xs=n.memo(Zs),Ys=e=>t=>e?vo(t.nodeLookup,{x:0,y:0,width:t.width,height:t.height},t.transform,!0).map((e=>e.id)):Array.from(t.nodeLookup.keys());const Ws=e=>e.updateNodeInternals;function Fs({id:e,onClick:o,onMouseEnter:i,onMouseMove:s,onMouseLeave:a,onContextMenu:l,onDoubleClick:c,nodesDraggable:u,elementsSelectable:d,nodesConnectable:h,nodesFocusable:f,resizeObserver:g,noDragClassName:p,noPanClassName:m,disableKeyboardA11y:y,rfId:v,nodeTypes:x,nodeExtent:w,nodeClickDistance:b,onError:S}){const{node:C,internals:E,isParent:k}=Si((t=>{const n=t.nodeLookup.get(e),o=t.parentLookup.has(e);return{node:n,internals:n.internals,isParent:o}}),Di);let _=C.type||"default",M=x?.[_]||Bs[_];void 0===M&&(S?.("003",Qn.error003(_)),_="default",M=Bs.default);const N=!!(C.draggable||u&&void 0===C.draggable),P=!!(C.selectable||d&&void 0===C.selectable),z=!!(C.connectable||h&&void 0===C.connectable),O=!!(C.focusable||f&&void 0===C.focusable),A=Ci(),I=Yo(C),R=function({node:e,nodeType:t,hasDimensions:o,resizeObserver:r}){const i=Ci(),s=n.useRef(null),a=n.useRef(null),l=n.useRef(e.sourcePosition),c=n.useRef(e.targetPosition),u=n.useRef(t),d=o&&!!e.internals.handleBounds;return n.useEffect((()=>{!s.current||e.hidden||d&&a.current===s.current||(a.current&&r?.unobserve(a.current),r?.observe(s.current),a.current=s.current)}),[d,e.hidden]),n.useEffect((()=>()=>{a.current&&(r?.unobserve(a.current),a.current=null)}),[]),n.useEffect((()=>{if(s.current){const n=u.current!==t,o=l.current!==e.sourcePosition,r=c.current!==e.targetPosition;(n||o||r)&&(u.current=t,l.current=e.sourcePosition,c.current=e.targetPosition,i.getState().updateNodeInternals(new Map([[e.id,{id:e.id,nodeElement:s.current,force:!0}]])))}}),[e.id,t,e.sourcePosition,e.targetPosition]),s}({node:C,nodeType:_,hasDimensions:I,resizeObserver:g}),D=Ps({nodeRef:R,disabled:C.hidden||!N,noDragClassName:p,handleSelector:C.dragHandle,nodeId:e,isSelectable:P,nodeClickDistance:b}),L=Os();if(C.hidden)return null;const $=Xo(C),B=function(e){return void 0===e.internals.handleBounds?{width:e.width??e.initialWidth??e.style?.width,height:e.height??e.initialHeight??e.style?.height}:{width:e.width??e.style?.width,height:e.height??e.style?.height}}(C),T=P||N||o||i||s||a,V=i?e=>i(e,{...E.userNode}):void 0,j=s?e=>s(e,{...E.userNode}):void 0,H=a?e=>a(e,{...E.userNode}):void 0,Z=l?e=>l(e,{...E.userNode}):void 0,X=c?e=>c(e,{...E.userNode}):void 0;return t.jsx("div",{className:r(["react-flow__node",`react-flow__node-${_}`,{[m]:N},C.className,{selected:C.selected,selectable:P,parent:k,draggable:N,dragging:D}]),ref:R,style:{zIndex:E.z,transform:`translate(${E.positionAbsolute.x}px,${E.positionAbsolute.y}px)`,pointerEvents:T?"all":"none",visibility:I?"visible":"hidden",...C.style,...B},"data-id":e,"data-testid":`rf__node-${e}`,onMouseEnter:V,onMouseMove:j,onMouseLeave:H,onContextMenu:Z,onClick:t=>{const{selectNodesOnDrag:n,nodeDragThreshold:r}=A.getState();P&&(!n||!N||r>0)&&Ns({id:e,store:A,nodeRef:R}),o&&o(t,{...E.userNode})},onDoubleClick:X,onKeyDown:O?t=>{if(!Uo(t.nativeEvent)&&!y)if(eo.includes(t.key)&&P){const n="Escape"===t.key;Ns({id:e,store:A,unselect:n,nodeRef:R})}else N&&C.selected&&Object.prototype.hasOwnProperty.call($s,t.key)&&(A.setState({ariaLiveMessage:`Moved selected node ${t.key.replace("Arrow","").toLowerCase()}. New position, x: ${~~E.positionAbsolute.x}, y: ${~~E.positionAbsolute.y}`}),L({direction:$s[t.key],factor:t.shiftKey?4:1}))}:void 0,tabIndex:O?0:void 0,role:O?"button":void 0,"aria-describedby":y?void 0:`${_i}-${v}`,"aria-label":C.ariaLabel,children:t.jsx(Is,{value:e,children:t.jsx(M,{id:e,data:C.data,type:_,positionAbsoluteX:E.positionAbsolute.x,positionAbsoluteY:E.positionAbsolute.y,selected:C.selected,selectable:P,draggable:N,deletable:C.deletable??!0,isConnectable:z,sourcePosition:C.sourcePosition,targetPosition:C.targetPosition,dragging:D,dragHandle:C.dragHandle,zIndex:E.z,parentId:C.parentId,...$})})})}const Ks=e=>({nodesDraggable:e.nodesDraggable,nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,onError:e.onError});function Gs(e){const{nodesDraggable:o,nodesConnectable:r,nodesFocusable:i,elementsSelectable:s,onError:a}=Si(Ks,Di),l=(c=e.onlyRenderVisibleElements,Si(n.useCallback(Ys(c),[c]),Di));var c;const u=function(){const e=Si(Ws),[t]=n.useState((()=>"undefined"==typeof ResizeObserver?null:new ResizeObserver((t=>{const n=new Map;t.forEach((e=>{const t=e.target.getAttribute("data-id");n.set(t,{id:t,nodeElement:e.target,force:!0})})),e(n)}))));return n.useEffect((()=>()=>{t?.disconnect()}),[t]),t}();return t.jsx("div",{className:"react-flow__nodes",style:ws,children:l.map((n=>t.jsx(Fs,{id:n,nodeTypes:e.nodeTypes,nodeExtent:e.nodeExtent,onClick:e.onNodeClick,onMouseEnter:e.onNodeMouseEnter,onMouseMove:e.onNodeMouseMove,onMouseLeave:e.onNodeMouseLeave,onContextMenu:e.onNodeContextMenu,onDoubleClick:e.onNodeDoubleClick,noDragClassName:e.noDragClassName,noPanClassName:e.noPanClassName,rfId:e.rfId,disableKeyboardA11y:e.disableKeyboardA11y,resizeObserver:u,nodesDraggable:o,nodesConnectable:r,nodesFocusable:i,elementsSelectable:s,nodeClickDistance:e.nodeClickDistance,onError:a},n)))})}Gs.displayName="NodeRenderer";const qs=n.memo(Gs);const Us={[e.MarkerType.Arrow]:({color:e="none",strokeWidth:n=1})=>t.jsx("polyline",{style:{stroke:e,strokeWidth:n},strokeLinecap:"round",strokeLinejoin:"round",fill:"none",points:"-5,-4 0,0 -5,4"}),[e.MarkerType.ArrowClosed]:({color:e="none",strokeWidth:n=1})=>t.jsx("polyline",{style:{stroke:e,fill:e,strokeWidth:n},strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"})};const Qs=({id:e,type:o,color:r,width:i=12.5,height:s=12.5,markerUnits:a="strokeWidth",strokeWidth:l,orient:c="auto-start-reverse"})=>{const u=function(e){const t=Ci();return n.useMemo((()=>Object.prototype.hasOwnProperty.call(Us,e)?Us[e]:(t.getState().onError?.("009",Qn.error009(e)),null)),[e])}(o);return u?t.jsx("marker",{className:"react-flow__arrowhead",id:e,markerWidth:`${i}`,markerHeight:`${s}`,viewBox:"-10 -10 20 20",markerUnits:a,orient:c,refX:"0",refY:"0",children:t.jsx(u,{color:r,strokeWidth:l})}):null},Js=({defaultColor:e,rfId:o})=>{const r=Si((e=>e.edges)),i=Si((e=>e.defaultEdgeOptions)),s=n.useMemo((()=>{const t=function(e,{id:t,defaultColor:n,defaultMarkerStart:o,defaultMarkerEnd:r}){const i=new Set;return e.reduce(((e,s)=>([s.markerStart||o,s.markerEnd||r].forEach((o=>{if(o&&"object"==typeof o){const r=vr(o,t);i.has(r)||(e.push({id:r,color:o.color||n,...o}),i.add(r))}})),e)),[]).sort(((e,t)=>e.id.localeCompare(t.id)))}(r,{id:o,defaultColor:e,defaultMarkerStart:i?.markerStart,defaultMarkerEnd:i?.markerEnd});return t}),[r,i,o,e]);return s.length?t.jsx("svg",{className:"react-flow__marker",children:t.jsx("defs",{children:s.map((e=>t.jsx(Qs,{id:e.id,type:e.type,color:e.color,width:e.width,height:e.height,markerUnits:e.markerUnits,strokeWidth:e.strokeWidth,orient:e.orient},e.id)))})}):null};Js.displayName="MarkerDefinitions";var ea=n.memo(Js);function ta({x:e,y:o,label:i,labelStyle:s={},labelShowBg:a=!0,labelBgStyle:l={},labelBgPadding:c=[2,4],labelBgBorderRadius:u=2,children:d,className:h,...f}){const[g,p]=n.useState({x:1,y:0,width:0,height:0}),m=r(["react-flow__edge-textwrapper",h]),y=n.useRef(null);return n.useEffect((()=>{if(y.current){const e=y.current.getBBox();p({x:e.x,y:e.y,width:e.width,height:e.height})}}),[i]),void 0!==i&&i?t.jsxs("g",{transform:`translate(${e-g.width/2} ${o-g.height/2})`,className:m,visibility:g.width?"visible":"hidden",...f,children:[a&&t.jsx("rect",{width:g.width+2*c[0],x:-c[0],y:-c[1],height:g.height+2*c[1],className:"react-flow__edge-textbg",style:l,rx:u,ry:u}),t.jsx("text",{className:"react-flow__edge-text",y:g.height/2,dy:"0.3em",ref:y,style:s,children:i}),d]}):null}ta.displayName="EdgeText";const na=n.memo(ta);function oa({id:e,path:n,labelX:o,labelY:i,label:s,labelStyle:a,labelShowBg:l,labelBgStyle:c,labelBgPadding:u,labelBgBorderRadius:d,style:h,markerEnd:f,markerStart:g,className:p,interactionWidth:m=20}){return t.jsxs(t.Fragment,{children:[t.jsx("path",{id:e,style:h,d:n,fill:"none",className:r(["react-flow__edge-path",p]),markerEnd:f,markerStart:g}),m&&t.jsx("path",{d:n,fill:"none",strokeOpacity:0,strokeWidth:m,className:"react-flow__edge-interaction"}),s&&Lo(o)&&Lo(i)?t.jsx(na,{x:o,y:i,label:s,labelStyle:a,labelShowBg:l,labelBgStyle:c,labelBgPadding:u,labelBgBorderRadius:d}):null]})}function ra({pos:t,x1:n,y1:o,x2:r,y2:i}){return t===e.Position.Left||t===e.Position.Right?[.5*(n+r),o]:[n,.5*(o+i)]}function ia({sourceX:t,sourceY:n,sourcePosition:o=e.Position.Bottom,targetX:r,targetY:i,targetPosition:s=e.Position.Top}){const[a,l]=ra({pos:o,x1:t,y1:n,x2:r,y2:i}),[c,u]=ra({pos:s,x1:r,y1:i,x2:t,y2:n}),[d,h,f,g]=tr({sourceX:t,sourceY:n,targetX:r,targetY:i,sourceControlX:a,sourceControlY:l,targetControlX:c,targetControlY:u});return[`M${t},${n} C${a},${l} ${c},${u} ${r},${i}`,d,h,f,g]}function sa(o){return n.memo((({id:n,sourceX:r,sourceY:i,targetX:s,targetY:a,sourcePosition:l=e.Position.Bottom,targetPosition:c=e.Position.Top,label:u,labelStyle:d,labelShowBg:h,labelBgStyle:f,labelBgPadding:g,labelBgBorderRadius:p,style:m,markerEnd:y,markerStart:v,interactionWidth:x})=>{const[w,b,S]=ia({sourceX:r,sourceY:i,sourcePosition:l,targetX:s,targetY:a,targetPosition:c}),C=o.isInternal?void 0:n;return t.jsx(oa,{id:C,path:w,labelX:b,labelY:S,label:u,labelStyle:d,labelShowBg:h,labelBgStyle:f,labelBgPadding:g,labelBgBorderRadius:p,style:m,markerEnd:y,markerStart:v,interactionWidth:x})}))}const aa=sa({isInternal:!1}),la=sa({isInternal:!0});function ca(o){return n.memo((({id:n,sourceX:r,sourceY:i,targetX:s,targetY:a,label:l,labelStyle:c,labelShowBg:u,labelBgStyle:d,labelBgPadding:h,labelBgBorderRadius:f,style:g,sourcePosition:p=e.Position.Bottom,targetPosition:m=e.Position.Top,markerEnd:y,markerStart:v,pathOptions:x,interactionWidth:w})=>{const[b,S,C]=fr({sourceX:r,sourceY:i,sourcePosition:p,targetX:s,targetY:a,targetPosition:m,borderRadius:x?.borderRadius,offset:x?.offset}),E=o.isInternal?void 0:n;return t.jsx(oa,{id:E,path:b,labelX:S,labelY:C,label:l,labelStyle:c,labelShowBg:u,labelBgStyle:d,labelBgPadding:h,labelBgBorderRadius:f,style:g,markerEnd:y,markerStart:v,interactionWidth:w})}))}aa.displayName="SimpleBezierEdge",la.displayName="SimpleBezierEdgeInternal";const ua=ca({isInternal:!1}),da=ca({isInternal:!0});function ha(e){return n.memo((({id:o,...r})=>{const i=e.isInternal?void 0:o;return t.jsx(ua,{...r,id:i,pathOptions:n.useMemo((()=>({borderRadius:0,offset:r.pathOptions?.offset})),[r.pathOptions?.offset])})}))}ua.displayName="SmoothStepEdge",da.displayName="SmoothStepEdgeInternal";const fa=ha({isInternal:!1}),ga=ha({isInternal:!0});function pa(e){return n.memo((({id:n,sourceX:o,sourceY:r,targetX:i,targetY:s,label:a,labelStyle:l,labelShowBg:c,labelBgStyle:u,labelBgPadding:d,labelBgBorderRadius:h,style:f,markerEnd:g,markerStart:p,interactionWidth:m})=>{const[y,v,x]=cr({sourceX:o,sourceY:r,targetX:i,targetY:s}),w=e.isInternal?void 0:n;return t.jsx(oa,{id:w,path:y,labelX:v,labelY:x,label:a,labelStyle:l,labelShowBg:c,labelBgStyle:u,labelBgPadding:d,labelBgBorderRadius:h,style:f,markerEnd:g,markerStart:p,interactionWidth:m})}))}fa.displayName="StepEdge",ga.displayName="StepEdgeInternal";const ma=pa({isInternal:!1}),ya=pa({isInternal:!0});function va(o){return n.memo((({id:n,sourceX:r,sourceY:i,targetX:s,targetY:a,sourcePosition:l=e.Position.Bottom,targetPosition:c=e.Position.Top,label:u,labelStyle:d,labelShowBg:h,labelBgStyle:f,labelBgPadding:g,labelBgBorderRadius:p,style:m,markerEnd:y,markerStart:v,pathOptions:x,interactionWidth:w})=>{const[b,S,C]=rr({sourceX:r,sourceY:i,sourcePosition:l,targetX:s,targetY:a,targetPosition:c,curvature:x?.curvature}),E=o.isInternal?void 0:n;return t.jsx(oa,{id:E,path:b,labelX:S,labelY:C,label:u,labelStyle:d,labelShowBg:h,labelBgStyle:f,labelBgPadding:g,labelBgBorderRadius:p,style:m,markerEnd:y,markerStart:v,interactionWidth:w})}))}ma.displayName="StraightEdge",ya.displayName="StraightEdgeInternal";const xa=va({isInternal:!1}),wa=va({isInternal:!0});xa.displayName="BezierEdge",wa.displayName="BezierEdgeInternal";const ba={default:wa,straight:ya,step:ga,smoothstep:da,simplebezier:la},Sa={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null},Ca=(t,n,o)=>o===e.Position.Left?t-n:o===e.Position.Right?t+n:t,Ea=(t,n,o)=>o===e.Position.Top?t-n:o===e.Position.Bottom?t+n:t,ka="react-flow__edgeupdater";function _a({position:e,centerX:n,centerY:o,radius:i=10,onMouseDown:s,onMouseEnter:a,onMouseOut:l,type:c}){return t.jsx("circle",{onMouseDown:s,onMouseEnter:a,onMouseOut:l,className:r([ka,`${ka}-${c}`]),cx:Ca(n,i,e),cy:Ea(o,i,e),r:i,stroke:"transparent",fill:"transparent"})}function Ma({isReconnectable:e,reconnectRadius:n,edge:o,sourceX:r,sourceY:i,targetX:s,targetY:a,sourcePosition:l,targetPosition:c,onReconnect:u,onReconnectStart:d,onReconnectEnd:h,setReconnecting:f,setUpdateHover:g}){const p=Ci(),m=(e,t)=>{if(0!==e.button)return;const{autoPanOnConnect:n,domNode:r,isValidConnection:i,connectionMode:s,connectionRadius:a,lib:l,onConnectStart:c,onConnectEnd:g,cancelConnection:m,nodeLookup:y,rfId:v,panBy:x,updateConnection:w}=p.getState(),b="target"===t.type;f(!0),d?.(e,o,t.type);Tr.onPointerDown(e.nativeEvent,{autoPanOnConnect:n,connectionMode:s,connectionRadius:a,domNode:r,handleId:t.id,nodeId:t.nodeId,nodeLookup:y,isTarget:b,edgeUpdaterType:t.type,lib:l,flowId:v,cancelConnection:m,panBy:x,isValidConnection:i,onConnect:e=>u?.(o,e),onConnectStart:c,onConnectEnd:g,onReconnectEnd:(e,n)=>{f(!1),h?.(e,o,t.type,n)},updateConnection:w,getTransform:()=>p.getState().transform,getFromHandle:()=>p.getState().connection.fromHandle})},y=()=>g(!0),v=()=>g(!1);return t.jsxs(t.Fragment,{children:[(!0===e||"source"===e)&&t.jsx(_a,{position:l,centerX:r,centerY:i,radius:n,onMouseDown:e=>m(e,{nodeId:o.target,id:o.targetHandle??null,type:"target"}),onMouseEnter:y,onMouseOut:v,type:"source"}),(!0===e||"target"===e)&&t.jsx(_a,{position:c,centerX:s,centerY:a,radius:n,onMouseDown:e=>m(e,{nodeId:o.source,id:o.sourceHandle??null,type:"source"}),onMouseEnter:y,onMouseOut:v,type:"target"})]})}function Na({id:o,edgesFocusable:i,edgesReconnectable:s,elementsSelectable:a,onClick:l,onDoubleClick:c,onContextMenu:u,onMouseEnter:d,onMouseMove:h,onMouseLeave:f,reconnectRadius:g,onReconnect:p,onReconnectStart:m,onReconnectEnd:y,rfId:v,edgeTypes:x,noPanClassName:w,onError:b,disableKeyboardA11y:S}){let C=Si((e=>e.edgeLookup.get(o)));const E=Si((e=>e.defaultEdgeOptions));C=E?{...E,...C}:C;let k=C.type||"default",_=x?.[k]||ba[k];void 0===_&&(b?.("011",Qn.error011(k)),k="default",_=ba.default);const M=!!(C.focusable||i&&void 0===C.focusable),N=void 0!==p&&(C.reconnectable||s&&void 0===C.reconnectable),P=!!(C.selectable||a&&void 0===C.selectable),z=n.useRef(null),[O,A]=n.useState(!1),[I,R]=n.useState(!1),D=Ci(),{zIndex:L,sourceX:$,sourceY:B,targetX:T,targetY:V,sourcePosition:j,targetPosition:H}=Si(n.useCallback((t=>{const n=t.nodeLookup.get(C.source),r=t.nodeLookup.get(C.target);if(!n||!r)return{zIndex:C.zIndex,...Sa};const i=function(t){const{sourceNode:n,targetNode:o}=t;if(!gr(n)||!gr(o))return null;const r=n.internals.handleBounds||pr(n.handles),i=o.internals.handleBounds||pr(o.handles),s=yr(r?.source??[],t.sourceHandle),a=yr(t.connectionMode===e.ConnectionMode.Strict?i?.target??[]:(i?.target??[]).concat(i?.source??[]),t.targetHandle);if(!s||!a)return t.onError?.("008",Qn.error008(s?"target":"source",{id:t.id,sourceHandle:t.sourceHandle,targetHandle:t.targetHandle})),null;const l=s?.position||e.Position.Bottom,c=a?.position||e.Position.Top,u=mr(n,s,l),d=mr(o,a,c);return{sourceX:u.x,sourceY:u.y,targetX:d.x,targetY:d.y,sourcePosition:l,targetPosition:c}}({id:o,sourceNode:n,targetNode:r,sourceHandle:C.sourceHandle||null,targetHandle:C.targetHandle||null,connectionMode:t.connectionMode,onError:b}),s=function({sourceNode:e,targetNode:t,selected:n=!1,zIndex:o=0,elevateOnSelect:r=!1}){if(!r)return o;const i=n||t.selected||e.selected,s=Math.max(e.internals.z||0,t.internals.z||0,1e3);return o+(i?s:0)}({selected:C.selected,zIndex:C.zIndex,sourceNode:n,targetNode:r,elevateOnSelect:t.elevateEdgesOnSelect});return{zIndex:s,...i||Sa}}),[C.source,C.target,C.sourceHandle,C.targetHandle,C.selected,C.zIndex]),Di),Z=n.useMemo((()=>C.markerStart?`url('#${vr(C.markerStart,v)}')`:void 0),[C.markerStart,v]),X=n.useMemo((()=>C.markerEnd?`url('#${vr(C.markerEnd,v)}')`:void 0),[C.markerEnd,v]);if(C.hidden||null===$||null===B||null===T||null===V)return null;const Y=c?e=>{c(e,{...C})}:void 0,W=u?e=>{u(e,{...C})}:void 0,F=d?e=>{d(e,{...C})}:void 0,K=h?e=>{h(e,{...C})}:void 0,G=f?e=>{f(e,{...C})}:void 0;return t.jsx("svg",{style:{zIndex:L},children:t.jsxs("g",{className:r(["react-flow__edge",`react-flow__edge-${k}`,C.className,w,{selected:C.selected,animated:C.animated,inactive:!P&&!l,updating:O,selectable:P}]),onClick:e=>{const{addSelectedEdges:t,unselectNodesAndEdges:n,multiSelectionActive:r}=D.getState();P&&(D.setState({nodesSelectionActive:!1}),C.selected&&r?(n({nodes:[],edges:[C]}),z.current?.blur()):t([o])),l&&l(e,C)},onDoubleClick:Y,onContextMenu:W,onMouseEnter:F,onMouseMove:K,onMouseLeave:G,onKeyDown:M?e=>{if(!S&&eo.includes(e.key)&&P){const{unselectNodesAndEdges:t,addSelectedEdges:n}=D.getState();"Escape"===e.key?(z.current?.blur(),t({edges:[C]})):n([o])}}:void 0,tabIndex:M?0:void 0,role:M?"button":"img","data-id":o,"data-testid":`rf__edge-${o}`,"aria-label":null===C.ariaLabel?void 0:C.ariaLabel||`Edge from ${C.source} to ${C.target}`,"aria-describedby":M?`${Mi}-${v}`:void 0,ref:z,children:[!I&&t.jsx(_,{id:o,source:C.source,target:C.target,type:C.type,selected:C.selected,animated:C.animated,selectable:P,deletable:C.deletable??!0,label:C.label,labelStyle:C.labelStyle,labelShowBg:C.labelShowBg,labelBgStyle:C.labelBgStyle,labelBgPadding:C.labelBgPadding,labelBgBorderRadius:C.labelBgBorderRadius,sourceX:$,sourceY:B,targetX:T,targetY:V,sourcePosition:j,targetPosition:H,data:C.data,style:C.style,sourceHandleId:C.sourceHandle,targetHandleId:C.targetHandle,markerStart:Z,markerEnd:X,pathOptions:"pathOptions"in C?C.pathOptions:void 0,interactionWidth:C.interactionWidth}),N&&t.jsx(Ma,{edge:C,isReconnectable:N,reconnectRadius:g,onReconnect:p,onReconnectStart:m,onReconnectEnd:y,sourceX:$,sourceY:B,targetX:T,targetY:V,sourcePosition:j,targetPosition:H,setUpdateHover:A,setReconnecting:R})]})})}const Pa=e=>({width:e.width,height:e.height,edgesFocusable:e.edgesFocusable,edgesReconnectable:e.edgesReconnectable,elementsSelectable:e.elementsSelectable,connectionMode:e.connectionMode,onError:e.onError});function za({defaultMarkerColor:e,onlyRenderVisibleElements:o,rfId:r,edgeTypes:i,noPanClassName:s,onReconnect:a,onEdgeContextMenu:l,onEdgeMouseEnter:c,onEdgeMouseMove:u,onEdgeMouseLeave:d,onEdgeClick:h,reconnectRadius:f,onEdgeDoubleClick:g,onReconnectStart:p,onReconnectEnd:m,disableKeyboardA11y:y}){const{edgesFocusable:v,edgesReconnectable:x,elementsSelectable:w,onError:b}=Si(Pa,Di),S=(C=o,Si(n.useCallback((e=>{if(!C)return e.edges.map((e=>e.id));const t=[];if(e.width&&e.height)for(const n of e.edges){const o=e.nodeLookup.get(n.source),r=e.nodeLookup.get(n.target);o&&r&&sr({sourceNode:o,targetNode:r,width:e.width,height:e.height,transform:e.transform})&&t.push(n.id)}return t}),[C]),Di));var C;return t.jsxs("div",{className:"react-flow__edges",children:[t.jsx(ea,{defaultColor:e,rfId:r}),S.map((e=>t.jsx(Na,{id:e,edgesFocusable:v,edgesReconnectable:x,elementsSelectable:w,noPanClassName:s,onReconnect:a,onContextMenu:l,onMouseEnter:c,onMouseMove:u,onMouseLeave:d,onClick:h,reconnectRadius:f,onDoubleClick:g,onReconnectStart:p,onReconnectEnd:m,rfId:r,onError:b,edgeTypes:i,disableKeyboardA11y:y},e)))]})}za.displayName="EdgeRenderer";const Oa=n.memo(za),Aa=e=>`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`;function Ia({children:e}){const n=Si(Aa);return t.jsx("div",{className:"react-flow__viewport xyflow__viewport react-flow__container",style:{transform:n},children:e})}const Ra=e=>e.panZoom?.syncViewport;function Da(e){return e.connection.inProgress?{...e.connection,to:To(e.connection.to,e.transform)}:{...e.connection}}function La(e){const t=function(e){if(e)return t=>{const n=Da(t);return e(n)};return Da}(e);return Si(t,Di)}const $a=e=>({nodesConnectable:e.nodesConnectable,isValid:e.connection.isValid,inProgress:e.connection.inProgress,width:e.width,height:e.height});function Ba({containerStyle:e,style:n,type:o,component:i}){const{nodesConnectable:s,width:a,height:l,isValid:c,inProgress:u}=Si($a,Di);return!!(a&&s&&u)?t.jsx("svg",{style:e,width:a,height:l,className:"react-flow__connectionline react-flow__container",children:t.jsx("g",{className:r(["react-flow__connection",ho(c)]),children:t.jsx(Ta,{style:n,type:o,CustomComponent:i,isValid:c})})}):null}const Ta=({style:n,type:o=e.ConnectionLineType.Bezier,CustomComponent:r,isValid:i})=>{const{inProgress:s,from:a,fromNode:l,fromHandle:c,fromPosition:u,to:d,toNode:h,toHandle:f,toPosition:g}=La();if(!s)return;if(r)return t.jsx(r,{connectionLineType:o,connectionLineStyle:n,fromNode:l,fromHandle:c,fromX:a.x,fromY:a.y,toX:d.x,toY:d.y,fromPosition:u,toPosition:g,connectionStatus:ho(i),toNode:h,toHandle:f});let p="";const m={sourceX:a.x,sourceY:a.y,sourcePosition:u,targetX:d.x,targetY:d.y,targetPosition:g};switch(o){case e.ConnectionLineType.Bezier:[p]=rr(m);break;case e.ConnectionLineType.SimpleBezier:[p]=ia(m);break;case e.ConnectionLineType.Step:[p]=fr({...m,borderRadius:0});break;case e.ConnectionLineType.SmoothStep:[p]=fr(m);break;default:[p]=cr(m)}return t.jsx("path",{d:p,fill:"none",className:"react-flow__connection-path",style:n})};Ta.displayName="ConnectionLine";const Va={};function ja(e=Va){n.useRef(e),Ci(),n.useEffect((()=>{}),[e])}function Ha({nodeTypes:e,edgeTypes:o,onInit:r,onNodeClick:i,onEdgeClick:s,onNodeDoubleClick:a,onEdgeDoubleClick:l,onNodeMouseEnter:c,onNodeMouseMove:u,onNodeMouseLeave:d,onNodeContextMenu:h,onSelectionContextMenu:f,onSelectionStart:g,onSelectionEnd:p,connectionLineType:m,connectionLineStyle:y,connectionLineComponent:v,connectionLineContainerStyle:x,selectionKeyCode:w,selectionOnDrag:b,selectionMode:S,multiSelectionKeyCode:C,panActivationKeyCode:E,zoomActivationKeyCode:k,deleteKeyCode:_,onlyRenderVisibleElements:M,elementsSelectable:N,defaultViewport:P,translateExtent:z,minZoom:O,maxZoom:A,preventScrolling:I,defaultMarkerColor:R,zoomOnScroll:D,zoomOnPinch:L,panOnScroll:$,panOnScrollSpeed:B,panOnScrollMode:T,zoomOnDoubleClick:V,panOnDrag:j,onPaneClick:H,onPaneMouseEnter:Z,onPaneMouseMove:X,onPaneMouseLeave:Y,onPaneScroll:W,onPaneContextMenu:F,paneClickDistance:K,nodeClickDistance:G,onEdgeContextMenu:q,onEdgeMouseEnter:U,onEdgeMouseMove:Q,onEdgeMouseLeave:J,reconnectRadius:ee,onReconnect:te,onReconnectStart:ne,onReconnectEnd:oe,noDragClassName:re,noWheelClassName:ie,noPanClassName:se,disableKeyboardA11y:ae,nodeExtent:le,rfId:ce,viewport:ue,onViewportChange:de}){return ja(e),ja(o),Ci(),n.useRef(!1),n.useEffect((()=>{}),[]),function(e){const t=ms(),o=n.useRef(!1);n.useEffect((()=>{!o.current&&t.viewportInitialized&&e&&(setTimeout((()=>e(t)),1),o.current=!0)}),[e,t.viewportInitialized])}(r),function(e){const t=Si(Ra),o=Ci();n.useEffect((()=>{e&&(t?.(e),o.setState({transform:[e.x,e.y,e.zoom]}))}),[e,t])}(ue),t.jsx(Xs,{onPaneClick:H,onPaneMouseEnter:Z,onPaneMouseMove:X,onPaneMouseLeave:Y,onPaneContextMenu:F,onPaneScroll:W,paneClickDistance:K,deleteKeyCode:_,selectionKeyCode:w,selectionOnDrag:b,selectionMode:S,onSelectionStart:g,onSelectionEnd:p,multiSelectionKeyCode:C,panActivationKeyCode:E,zoomActivationKeyCode:k,elementsSelectable:N,zoomOnScroll:D,zoomOnPinch:L,zoomOnDoubleClick:V,panOnScroll:$,panOnScrollSpeed:B,panOnScrollMode:T,panOnDrag:j,defaultViewport:P,translateExtent:z,minZoom:O,maxZoom:A,onSelectionContextMenu:f,preventScrolling:I,noDragClassName:re,noWheelClassName:ie,noPanClassName:se,disableKeyboardA11y:ae,onViewportChange:de,isControlledViewport:!!ue,children:t.jsxs(Ia,{children:[t.jsx(Oa,{edgeTypes:o,onEdgeClick:s,onEdgeDoubleClick:l,onReconnect:te,onReconnectStart:ne,onReconnectEnd:oe,onlyRenderVisibleElements:M,onEdgeContextMenu:q,onEdgeMouseEnter:U,onEdgeMouseMove:Q,onEdgeMouseLeave:J,reconnectRadius:ee,defaultMarkerColor:R,noPanClassName:se,disableKeyboardA11y:ae,rfId:ce}),t.jsx(Ba,{style:y,type:m,component:v,containerStyle:x}),t.jsx("div",{className:"react-flow__edgelabel-renderer"}),t.jsx(qs,{nodeTypes:e,onNodeClick:i,onNodeDoubleClick:a,onNodeMouseEnter:c,onNodeMouseMove:u,onNodeMouseLeave:d,onNodeContextMenu:h,nodeClickDistance:G,onlyRenderVisibleElements:M,noPanClassName:se,noDragClassName:re,disableKeyboardA11y:ae,nodeExtent:le,rfId:ce}),t.jsx("div",{className:"react-flow__viewport-portal"})]})})}Ha.displayName="GraphView";const Za=n.memo(Ha),Xa=({nodes:t,edges:n,defaultNodes:o,defaultEdges:r,width:i,height:s,fitView:a,nodeOrigin:l,nodeExtent:c}={})=>{const u=new Map,d=new Map,h=new Map,f=new Map,g=r??n??[],p=o??t??[],m=l??[0,0],y=c??Jn;Mr(h,f,g),Cr(p,u,d,{nodeOrigin:m,nodeExtent:y,elevateNodesOnSelect:!1});let v=[0,0,1];if(a&&i&&s){const e=yo(u,{filter:e=>!(!e.width&&!e.initialWidth||!e.height&&!e.initialHeight)}),{x:t,y:n,zoom:o}=jo(e,i,s,.5,2,.1);v=[t,n,o]}return{rfId:"1",width:0,height:0,transform:v,nodes:p,nodeLookup:u,parentLookup:d,edges:g,edgeLookup:f,connectionLookup:h,onNodesChange:null,onEdgesChange:null,hasDefaultNodes:void 0!==o,hasDefaultEdges:void 0!==r,panZoom:null,minZoom:.5,maxZoom:2,translateExtent:Jn,nodeExtent:y,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:e.ConnectionMode.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:m,nodeDragThreshold:1,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesReconnectable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,elevateEdgesOnSelect:!1,fitViewOnInit:!1,fitViewDone:!1,fitViewOnInitOptions:void 0,selectNodesOnDrag:!0,multiSelectionActive:!1,connection:{...ro},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanSpeed:15,connectionRadius:20,onError:$o,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:"react",debug:!1}},Ya=({nodes:e,edges:t,defaultNodes:n,defaultEdges:o,width:r,height:i,fitView:s,nodeOrigin:a,nodeExtent:l})=>{return c=(c,u)=>({...Xa({nodes:e,edges:t,width:r,height:i,fitView:s,nodeOrigin:a,nodeExtent:l,defaultNodes:n,defaultEdges:o}),setNodes:e=>{const{nodeLookup:t,parentLookup:n,nodeOrigin:o,elevateNodesOnSelect:r}=u();Cr(e,t,n,{nodeOrigin:o,nodeExtent:l,elevateNodesOnSelect:r,checkEquality:!0}),c({nodes:e})},setEdges:e=>{const{connectionLookup:t,edgeLookup:n}=u();Mr(t,n,e),c({edges:e})},setDefaultNodesAndEdges:(e,t)=>{if(e){const{setNodes:t}=u();t(e),c({hasDefaultNodes:!0})}if(t){const{setEdges:e}=u();e(t),c({hasDefaultEdges:!0})}},updateNodeInternals:(e,t={triggerFitView:!0})=>{const{triggerNodeChanges:n,nodeLookup:o,parentLookup:r,fitViewOnInit:i,fitViewDone:s,fitViewOnInitOptions:a,domNode:l,nodeOrigin:d,nodeExtent:h,debug:f,fitViewSync:g}=u(),{changes:p,updatedInternals:m}=function(e,t,n,o,r,i){const s=o?.querySelector(".xyflow__viewport");let a=!1;if(!s)return{changes:[],updatedInternals:a};const l=[],c=window.getComputedStyle(s),{m22:u}=new window.DOMMatrixReadOnly(c.transform),d=[];for(const o of e.values()){const e=t.get(o.id);if(e)if(e.hidden)e.internals={...e.internals,handleBounds:void 0},a=!0;else{const s=Ko(o.nodeElement),c=e.measured.width!==s.width||e.measured.height!==s.height;if(s.width&&s.height&&(c||!e.internals.handleBounds||o.force)){const h=o.nodeElement.getBoundingClientRect(),f=Zo(e.extent)?e.extent:i;let{positionAbsolute:g}=e.internals;e.parentId&&"parent"===e.extent?g=ko(g,s,t.get(e.parentId)):f&&(g=Eo(g,f,s)),e.measured=s,e.internals={...e.internals,positionAbsolute:g,handleBounds:{source:er("source",o.nodeElement,h,u,e.id),target:er("target",o.nodeElement,h,u,e.id)}},e.parentId&&Er(e,t,n,{nodeOrigin:r}),a=!0,c&&(l.push({id:e.id,type:"dimensions",dimensions:s}),e.expandParent&&e.parentId&&d.push({id:e.id,parentId:e.parentId,rect:Oo(e,r)}))}}}if(d.length>0){const e=_r(d,t,n,r);l.push(...e)}return{changes:l,updatedInternals:a}}(e,o,r,l,d,h);if(m){if(function(e,t,n){const o=Sr(wr,n);for(const n of e.values())if(n.parentId)Er(n,e,t,o);else{const e=po(n,o.nodeOrigin),t=Zo(n.extent)?n.extent:o.nodeExtent,r=Eo(e,t,Xo(n));n.internals.positionAbsolute=r}}(o,r,{nodeOrigin:d,nodeExtent:h}),t.triggerFitView){let e=s;!s&&i&&(e=g({...a,nodes:a?.nodes})),c({fitViewDone:e})}else c({});p?.length>0&&(f&&console.log("React Flow: trigger node changes",p),n?.(p))}},updateNodePositions:(e,t=!1)=>{const n=[],o=[];for(const[r,i]of e){const e={id:r,type:"position",position:i.position,dragging:t};i?.expandParent&&i?.parentId&&e.position&&(n.push({id:r,parentId:i.parentId,rect:{...i.internals.positionAbsolute,width:i.measured.width,height:i.measured.height}}),e.position.x=Math.max(0,e.position.x),e.position.y=Math.max(0,e.position.y)),o.push(e)}if(n.length>0){const{nodeLookup:e,parentLookup:t,nodeOrigin:r}=u(),i=_r(n,e,t,r);o.push(...i)}u().triggerNodeChanges(o)},triggerNodeChanges:e=>{const{onNodesChange:t,setNodes:n,nodes:o,hasDefaultNodes:r,debug:i}=u();e?.length&&(r&&n(ns(e,o)),i&&console.log("React Flow: trigger node changes",e),t?.(e))},triggerEdgeChanges:e=>{const{onEdgesChange:t,setEdges:n,edges:o,hasDefaultEdges:r,debug:i}=u();e?.length&&(r&&n(os(e,o)),i&&console.log("React Flow: trigger edge changes",e),t?.(e))},addSelectedNodes:e=>{const{multiSelectionActive:t,edgeLookup:n,nodeLookup:o,triggerNodeChanges:r,triggerEdgeChanges:i}=u();t?r(e.map((e=>rs(e,!0)))):(r(is(o,new Set([...e]),!0)),i(is(n)))},addSelectedEdges:e=>{const{multiSelectionActive:t,edgeLookup:n,nodeLookup:o,triggerNodeChanges:r,triggerEdgeChanges:i}=u();t?i(e.map((e=>rs(e,!0)))):(i(is(n,new Set([...e]))),r(is(o,new Set,!0)))},unselectNodesAndEdges:({nodes:e,edges:t}={})=>{const{edges:n,nodes:o,nodeLookup:r,triggerNodeChanges:i,triggerEdgeChanges:s}=u(),a=t||n,l=(e||o).map((e=>{const t=r.get(e.id);return t&&(t.selected=!1),rs(e.id,!1)})),c=a.map((e=>rs(e.id,!1)));i(l),s(c)},setMinZoom:e=>{const{panZoom:t,maxZoom:n}=u();t?.setScaleExtent([e,n]),c({minZoom:e})},setMaxZoom:e=>{const{panZoom:t,minZoom:n}=u();t?.setScaleExtent([n,e]),c({maxZoom:e})},setTranslateExtent:e=>{u().panZoom?.setTranslateExtent(e),c({translateExtent:e})},setPaneClickDistance:e=>{u().panZoom?.setClickDistance(e)},resetSelectedElements:()=>{const{edges:e,nodes:t,triggerNodeChanges:n,triggerEdgeChanges:o}=u(),r=t.reduce(((e,t)=>t.selected?[...e,rs(t.id,!1)]:e),[]),i=e.reduce(((e,t)=>t.selected?[...e,rs(t.id,!1)]:e),[]);n(r),o(i)},setNodeExtent:e=>{const{nodes:t,nodeLookup:n,parentLookup:o,nodeOrigin:r,elevateNodesOnSelect:i,nodeExtent:s}=u();e[0][0]===s[0][0]&&e[0][1]===s[0][1]&&e[1][0]===s[1][0]&&e[1][1]===s[1][1]||(Cr(t,n,o,{nodeOrigin:r,nodeExtent:e,elevateNodesOnSelect:i,checkEquality:!1}),c({nodeExtent:e}))},panBy:e=>{const{transform:t,width:n,height:o,panZoom:r,translateExtent:i}=u();return async function({delta:e,panZoom:t,transform:n,translateExtent:o,width:r,height:i}){if(!t||!e.x&&!e.y)return Promise.resolve(!1);const s=await t.setViewportConstrained({x:n[0]+e.x,y:n[1]+e.y,zoom:n[2]},[[0,0],[r,i]],o),a=!!s&&(s.x!==n[0]||s.y!==n[1]||s.k!==n[2]);return Promise.resolve(a)}({delta:e,panZoom:r,transform:t,translateExtent:i,width:n,height:o})},fitView:e=>{const{panZoom:t,width:n,height:o,minZoom:r,maxZoom:i,nodeLookup:s}=u();return t?bo({nodes:wo(s,e),width:n,height:o,panZoom:t,minZoom:r,maxZoom:i},e):Promise.resolve(!1)},fitViewSync:e=>{const{panZoom:t,width:n,height:o,minZoom:r,maxZoom:i,nodeLookup:s}=u();if(!t)return!1;const a=wo(s,e);return bo({nodes:a,width:n,height:o,panZoom:t,minZoom:r,maxZoom:i},e),a.size>0},cancelConnection:()=>{c({connection:{...ro}})},updateConnection:e=>{c({connection:e})},reset:()=>c({...Xa()})}),u=Object.is,c?vi(c,u):vi;var c,u};function Wa({initialNodes:e,initialEdges:o,defaultNodes:r,defaultEdges:i,initialWidth:s,initialHeight:a,fitView:l,nodeOrigin:c,nodeExtent:u,children:d}){const[h]=n.useState((()=>Ya({nodes:e,edges:o,defaultNodes:r,defaultEdges:i,width:s,height:a,fitView:l,nodeOrigin:c,nodeExtent:u})));return t.jsx(wi,{value:h,children:t.jsx(gs,{children:d})})}function Fa({children:e,nodes:o,edges:r,defaultNodes:i,defaultEdges:s,width:a,height:l,fitView:c,nodeOrigin:u,nodeExtent:d}){return n.useContext(xi)?t.jsx(t.Fragment,{children:e}):t.jsx(Wa,{initialNodes:o,initialEdges:r,defaultNodes:i,defaultEdges:s,initialWidth:a,initialHeight:l,fitView:c,nodeOrigin:u,nodeExtent:d,children:e})}const Ka={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0};var Ga=us((function({nodes:o,edges:i,defaultNodes:s,defaultEdges:a,className:l,nodeTypes:c,edgeTypes:u,onNodeClick:d,onEdgeClick:h,onInit:f,onMove:g,onMoveStart:p,onMoveEnd:m,onConnect:y,onConnectStart:v,onConnectEnd:x,onClickConnectStart:w,onClickConnectEnd:b,onNodeMouseEnter:S,onNodeMouseMove:C,onNodeMouseLeave:E,onNodeContextMenu:k,onNodeDoubleClick:_,onNodeDragStart:M,onNodeDrag:N,onNodeDragStop:P,onNodesDelete:z,onEdgesDelete:O,onDelete:A,onSelectionChange:I,onSelectionDragStart:R,onSelectionDrag:D,onSelectionDragStop:L,onSelectionContextMenu:$,onSelectionStart:B,onSelectionEnd:T,onBeforeDelete:V,connectionMode:j,connectionLineType:H=e.ConnectionLineType.Bezier,connectionLineStyle:Z,connectionLineComponent:X,connectionLineContainerStyle:Y,deleteKeyCode:W="Backspace",selectionKeyCode:F="Shift",selectionOnDrag:K=!1,selectionMode:G=e.SelectionMode.Full,panActivationKeyCode:q="Space",multiSelectionKeyCode:U=(Ho()?"Meta":"Control"),zoomActivationKeyCode:Q=(Ho()?"Meta":"Control"),snapToGrid:J,snapGrid:ee,onlyRenderVisibleElements:te=!1,selectNodesOnDrag:ne,nodesDraggable:oe,nodesConnectable:re,nodesFocusable:ie,nodeOrigin:se=Hi,edgesFocusable:ae,edgesReconnectable:le,elementsSelectable:ce=!0,defaultViewport:ue=Zi,minZoom:de=.5,maxZoom:he=2,translateExtent:fe=Jn,preventScrolling:ge=!0,nodeExtent:pe,defaultMarkerColor:me="#b1b1b7",zoomOnScroll:ye=!0,zoomOnPinch:ve=!0,panOnScroll:xe=!1,panOnScrollSpeed:we=.5,panOnScrollMode:be=e.PanOnScrollMode.Free,zoomOnDoubleClick:Se=!0,panOnDrag:Ce=!0,onPaneClick:Ee,onPaneMouseEnter:ke,onPaneMouseMove:_e,onPaneMouseLeave:Me,onPaneScroll:Ne,onPaneContextMenu:Pe,paneClickDistance:ze=0,nodeClickDistance:Oe=0,children:Ae,onReconnect:Ie,onReconnectStart:Re,onReconnectEnd:De,onEdgeContextMenu:Le,onEdgeDoubleClick:$e,onEdgeMouseEnter:Be,onEdgeMouseMove:Te,onEdgeMouseLeave:Ve,reconnectRadius:je=10,onNodesChange:He,onEdgesChange:Ze,noDragClassName:Xe="nodrag",noWheelClassName:Ye="nowheel",noPanClassName:We="nopan",fitView:Fe,fitViewOptions:Ke,connectOnClick:Ge,attributionPosition:qe,proOptions:Ue,defaultEdgeOptions:Qe,elevateNodesOnSelect:Je,elevateEdgesOnSelect:et,disableKeyboardA11y:tt=!1,autoPanOnConnect:nt,autoPanOnNodeDrag:ot,autoPanSpeed:rt,connectionRadius:it,isValidConnection:st,onError:at,style:lt,id:ct,nodeDragThreshold:ut,viewport:dt,onViewportChange:ht,width:ft,height:gt,colorMode:pt="light",debug:mt,...yt},vt){const xt=ct||"1",wt=function(e){const[t,o]=n.useState("system"===e?null:e);return n.useEffect((()=>{if("system"!==e)return void o(e);const t=Ki(),n=()=>o(t?.matches?"dark":"light");return n(),t?.addEventListener("change",n),()=>{t?.removeEventListener("change",n)}}),[e]),null!==t?t:Ki()?.matches?"dark":"light"}(pt);return t.jsx("div",{...yt,style:{...lt,...Ka},ref:vt,className:r(["react-flow",l,wt]),"data-testid":"rf__wrapper",id:ct,children:t.jsxs(Fa,{nodes:o,edges:i,width:ft,height:gt,fitView:Fe,nodeOrigin:se,nodeExtent:pe,children:[t.jsx(Za,{onInit:f,onNodeClick:d,onEdgeClick:h,onNodeMouseEnter:S,onNodeMouseMove:C,onNodeMouseLeave:E,onNodeContextMenu:k,onNodeDoubleClick:_,nodeTypes:c,edgeTypes:u,connectionLineType:H,connectionLineStyle:Z,connectionLineComponent:X,connectionLineContainerStyle:Y,selectionKeyCode:F,selectionOnDrag:K,selectionMode:G,deleteKeyCode:W,multiSelectionKeyCode:U,panActivationKeyCode:q,zoomActivationKeyCode:Q,onlyRenderVisibleElements:te,defaultViewport:ue,translateExtent:fe,minZoom:de,maxZoom:he,preventScrolling:ge,zoomOnScroll:ye,zoomOnPinch:ve,zoomOnDoubleClick:Se,panOnScroll:xe,panOnScrollSpeed:we,panOnScrollMode:be,panOnDrag:Ce,onPaneClick:Ee,onPaneMouseEnter:ke,onPaneMouseMove:_e,onPaneMouseLeave:Me,onPaneScroll:Ne,onPaneContextMenu:Pe,paneClickDistance:ze,nodeClickDistance:Oe,onSelectionContextMenu:$,onSelectionStart:B,onSelectionEnd:T,onReconnect:Ie,onReconnectStart:Re,onReconnectEnd:De,onEdgeContextMenu:Le,onEdgeDoubleClick:$e,onEdgeMouseEnter:Be,onEdgeMouseMove:Te,onEdgeMouseLeave:Ve,reconnectRadius:je,defaultMarkerColor:me,noDragClassName:Xe,noWheelClassName:Ye,noPanClassName:We,rfId:xt,disableKeyboardA11y:tt,nodeExtent:pe,viewport:dt,onViewportChange:ht}),t.jsx(Fi,{nodes:o,edges:i,defaultNodes:s,defaultEdges:a,onConnect:y,onConnectStart:v,onConnectEnd:x,onClickConnectStart:w,onClickConnectEnd:b,nodesDraggable:oe,nodesConnectable:re,nodesFocusable:ie,edgesFocusable:ae,edgesReconnectable:le,elementsSelectable:ce,elevateNodesOnSelect:Je,elevateEdgesOnSelect:et,minZoom:de,maxZoom:he,nodeExtent:pe,onNodesChange:He,onEdgesChange:Ze,snapToGrid:J,snapGrid:ee,connectionMode:j,translateExtent:fe,connectOnClick:Ge,defaultEdgeOptions:Qe,fitView:Fe,fitViewOptions:Ke,onNodesDelete:z,onEdgesDelete:O,onDelete:A,onNodeDragStart:M,onNodeDrag:N,onNodeDragStop:P,onSelectionDrag:D,onSelectionDragStart:R,onSelectionDragStop:L,onMove:g,onMoveStart:p,onMoveEnd:m,noPanClassName:We,nodeOrigin:se,rfId:xt,autoPanOnConnect:nt,autoPanOnNodeDrag:ot,autoPanSpeed:rt,onError:at,connectionRadius:it,isValidConnection:st,selectNodesOnDrag:ne,nodeDragThreshold:ut,onBeforeDelete:V,paneClickDistance:ze,debug:mt}),t.jsx(ji,{onSelectionChange:I}),Ae,t.jsx(Ri,{proOptions:Ue,position:qe}),t.jsx(Oi,{rfId:xt,disableKeyboardA11y:tt})]})})}));const qa=e=>e.domNode?.querySelector(".react-flow__edgelabel-renderer");const Ua=e=>e.domNode?.querySelector(".react-flow__viewport-portal");const Qa=e=>e.nodes;const Ja=e=>e.edges;const el=e=>({x:e.transform[0],y:e.transform[1],zoom:e.transform[2]});const tl={includeHiddenNodes:!1};function nl({dimensions:e,lineWidth:n,variant:o,className:i}){return t.jsx("path",{strokeWidth:n,d:`M${e[0]/2} 0 V${e[1]} M0 ${e[1]/2} H${e[0]}`,className:r(["react-flow__background-pattern",o,i])})}function ol({radius:e,className:n}){return t.jsx("circle",{cx:e,cy:e,r:e,className:r(["react-flow__background-pattern","dots",n])})}var rl;e.BackgroundVariant=void 0,(rl=e.BackgroundVariant||(e.BackgroundVariant={})).Lines="lines",rl.Dots="dots",rl.Cross="cross";const il={[e.BackgroundVariant.Dots]:1,[e.BackgroundVariant.Lines]:1,[e.BackgroundVariant.Cross]:6},sl=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function al({id:o,variant:i=e.BackgroundVariant.Dots,gap:s=20,size:a,lineWidth:l=1,offset:c=0,color:u,bgColor:d,style:h,className:f,patternClassName:g}){const p=n.useRef(null),{transform:m,patternId:y}=Si(sl,Di),v=a||il[i],x=i===e.BackgroundVariant.Dots,w=i===e.BackgroundVariant.Cross,b=Array.isArray(s)?s:[s,s],S=[b[0]*m[2]||1,b[1]*m[2]||1],C=v*m[2],E=Array.isArray(c)?c:[c,c],k=w?[C,C]:S,_=[E[0]*m[2]||1+k[0]/2,E[1]*m[2]||1+k[1]/2],M=`${y}${o||""}`;return t.jsxs("svg",{className:r(["react-flow__background",f]),style:{...h,...ws,"--xy-background-color-props":d,"--xy-background-pattern-color-props":u},ref:p,"data-testid":"rf__background",children:[t.jsx("pattern",{id:M,x:m[0]%S[0],y:m[1]%S[1],width:S[0],height:S[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${_[0]},-${_[1]})`,children:x?t.jsx(ol,{radius:C/2,className:g}):t.jsx(nl,{dimensions:k,lineWidth:l,variant:i,className:g})}),t.jsx("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${M})`})]})}al.displayName="Background";const ll=n.memo(al);function cl(){return t.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",children:t.jsx("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"})})}function ul(){return t.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5",children:t.jsx("path",{d:"M0 0h32v4.2H0z"})})}function dl(){return t.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30",children:t.jsx("path",{d:"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z"})})}function hl(){return t.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:t.jsx("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z"})})}function fl(){return t.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:t.jsx("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z"})})}function gl({children:e,className:n,...o}){return t.jsx("button",{type:"button",className:r(["react-flow__controls-button",n]),...o,children:e})}const pl=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom});function ml({style:e,showZoom:n=!0,showFitView:o=!0,showInteractive:i=!0,fitViewOptions:s,onZoomIn:a,onZoomOut:l,onFitView:c,onInteractiveChange:u,className:d,children:h,position:f="bottom-left",orientation:g="vertical","aria-label":p="React Flow controls"}){const m=Ci(),{isInteractive:y,minZoomReached:v,maxZoomReached:x}=Si(pl,Di),{zoomIn:w,zoomOut:b,fitView:S}=ms(),C="horizontal"===g?"horizontal":"vertical";return t.jsxs(Ii,{className:r(["react-flow__controls",C,d]),position:f,style:e,"data-testid":"rf__controls","aria-label":p,children:[n&&t.jsxs(t.Fragment,{children:[t.jsx(gl,{onClick:()=>{w(),a?.()},className:"react-flow__controls-zoomin",title:"zoom in","aria-label":"zoom in",disabled:x,children:t.jsx(cl,{})}),t.jsx(gl,{onClick:()=>{b(),l?.()},className:"react-flow__controls-zoomout",title:"zoom out","aria-label":"zoom out",disabled:v,children:t.jsx(ul,{})})]}),o&&t.jsx(gl,{className:"react-flow__controls-fitview",onClick:()=>{S(s),c?.()},title:"fit view","aria-label":"fit view",children:t.jsx(dl,{})}),i&&t.jsx(gl,{className:"react-flow__controls-interactive",onClick:()=>{m.setState({nodesDraggable:!y,nodesConnectable:!y,elementsSelectable:!y}),u?.(!y)},title:"toggle interactivity","aria-label":"toggle interactivity",children:y?t.jsx(fl,{}):t.jsx(hl,{})}),h]})}ml.displayName="Controls";const yl=n.memo(ml);const vl=n.memo((function({id:e,x:n,y:o,width:i,height:s,style:a,color:l,strokeColor:c,strokeWidth:u,className:d,borderRadius:h,shapeRendering:f,selected:g,onClick:p}){const{background:m,backgroundColor:y}=a||{},v=l||m||y;return t.jsx("rect",{className:r(["react-flow__minimap-node",{selected:g},d]),x:n,y:o,rx:h,ry:h,width:i,height:s,style:{fill:v,stroke:c,strokeWidth:u},shapeRendering:f,onClick:p?t=>p(t,e):void 0})})),xl=e=>e.nodes.map((e=>e.id)),wl=e=>e instanceof Function?e:()=>e;const bl=n.memo((function({id:e,nodeColorFunc:n,nodeStrokeColorFunc:o,nodeClassNameFunc:r,nodeBorderRadius:i,nodeStrokeWidth:s,shapeRendering:a,NodeComponent:l,onClick:c}){const{node:u,x:d,y:h,width:f,height:g}=Si((t=>{const n=t.nodeLookup.get(e),{x:o,y:r}=n.internals.positionAbsolute,{width:i,height:s}=Xo(n);return{node:n,x:o,y:r,width:i,height:s}}),Di);return u&&!u.hidden&&Yo(u)?t.jsx(l,{x:d,y:h,width:f,height:g,style:u.style,selected:!!u.selected,className:r(u),color:n(u),borderRadius:i,strokeColor:o(u),strokeWidth:s,shapeRendering:a,onClick:c,id:u.id}):null}));var Sl=n.memo((function({nodeStrokeColor:e,nodeColor:n,nodeClassName:o="",nodeBorderRadius:r=5,nodeStrokeWidth:i,nodeComponent:s=vl,onClick:a}){const l=Si(xl,Di),c=wl(n),u=wl(e),d=wl(o),h="undefined"==typeof window||window.chrome?"crispEdges":"geometricPrecision";return t.jsx(t.Fragment,{children:l.map((e=>t.jsx(bl,{id:e,nodeColorFunc:c,nodeStrokeColorFunc:u,nodeClassNameFunc:d,nodeBorderRadius:r,nodeStrokeWidth:i,NodeComponent:s,onClick:a,shapeRendering:h},e)))})}));const Cl=e=>{const t={x:-e.transform[0]/e.transform[2],y:-e.transform[1]/e.transform[2],width:e.width/e.transform[2],height:e.height/e.transform[2]};return{viewBB:t,boundingRect:e.nodeLookup.size>0?Io(yo(e.nodeLookup),t):t,rfId:e.rfId,panZoom:e.panZoom,translateExtent:e.translateExtent,flowWidth:e.width,flowHeight:e.height}};function El({style:e,className:o,nodeStrokeColor:i,nodeColor:s,nodeClassName:a="",nodeBorderRadius:l=5,nodeStrokeWidth:c,nodeComponent:u,bgColor:d,maskColor:h,maskStrokeColor:f,maskStrokeWidth:g,position:p="bottom-right",onClick:m,onNodeClick:y,pannable:v=!1,zoomable:x=!1,ariaLabel:w="React Flow mini map",inversePan:b,zoomStep:S=10,offsetScale:C=5}){const E=Ci(),k=n.useRef(null),{boundingRect:_,viewBB:M,rfId:N,panZoom:P,translateExtent:z,flowWidth:O,flowHeight:A}=Si(Cl,Di),I=e?.width??200,R=e?.height??150,D=_.width/I,L=_.height/R,$=Math.max(D,L),B=$*I,T=$*R,V=C*$,j=_.x-(B-_.width)/2-V,H=_.y-(T-_.height)/2-V,Z=B+2*V,X=T+2*V,Y=`react-flow__minimap-desc-${N}`,W=n.useRef(0),F=n.useRef();W.current=$,n.useEffect((()=>{if(k.current&&P)return F.current=function({domNode:e,panZoom:t,getTransform:n,getViewScale:o}){const r=Se(e);return{update:function({translateExtent:e,width:i,height:s,zoomStep:a=10,pannable:l=!0,zoomable:c=!0,inversePan:u=!1}){let d=[0,0];const h=Un().on("start",(e=>{"mousedown"!==e.sourceEvent.type&&"touchstart"!==e.sourceEvent.type||(d=[e.sourceEvent.clientX??e.sourceEvent.touches[0].clientX,e.sourceEvent.clientY??e.sourceEvent.touches[0].clientY])})).on("zoom",l?r=>{const a=n();if("mousemove"!==r.sourceEvent.type&&"touchmove"!==r.sourceEvent.type||!t)return;const l=[r.sourceEvent.clientX??r.sourceEvent.touches[0].clientX,r.sourceEvent.clientY??r.sourceEvent.touches[0].clientY],c=[l[0]-d[0],l[1]-d[1]];d=l;const h=o()*Math.max(a[2],Math.log(a[2]))*(u?-1:1),f={x:a[0]-c[0]*h,y:a[1]-c[1]*h},g=[[0,0],[i,s]];t.setViewportConstrained({x:f.x,y:f.y,zoom:a[2]},g,e)}:null).on("zoom.wheel",c?e=>{const o=n();if("wheel"!==e.sourceEvent.type||!t)return;const r=-e.sourceEvent.deltaY*(1===e.sourceEvent.deltaMode?.05:e.sourceEvent.deltaMode?1:.002)*a,i=o[2]*Math.pow(2,r);t.scaleTo(i)}:null);r.call(h,{})},destroy:function(){r.on("zoom",null)},pointer:Ce}}({domNode:k.current,panZoom:P,getTransform:()=>E.getState().transform,getViewScale:()=>W.current}),()=>{F.current?.destroy()}}),[P]),n.useEffect((()=>{F.current?.update({translateExtent:z,width:O,height:A,inversePan:b,pannable:v,zoomStep:S,zoomable:x})}),[v,x,b,S,z,O,A]);const K=m?e=>{const[t,n]=F.current?.pointer(e)||[0,0];m(e,{x:t,y:n})}:void 0,G=y?n.useCallback(((e,t)=>{const n=E.getState().nodeLookup.get(t);y(e,n)}),[]):void 0;return t.jsx(Ii,{position:p,style:{...e,"--xy-minimap-background-color-props":"string"==typeof d?d:void 0,"--xy-minimap-mask-background-color-props":"string"==typeof h?h:void 0,"--xy-minimap-mask-stroke-color-props":"string"==typeof f?f:void 0,"--xy-minimap-mask-stroke-width-props":"number"==typeof g?g*$:void 0,"--xy-minimap-node-background-color-props":"string"==typeof s?s:void 0,"--xy-minimap-node-stroke-color-props":"string"==typeof i?i:void 0,"--xy-minimap-node-stroke-width-props":"string"==typeof c?c:void 0},className:r(["react-flow__minimap",o]),"data-testid":"rf__minimap",children:t.jsxs("svg",{width:I,height:R,viewBox:`${j} ${H} ${Z} ${X}`,className:"react-flow__minimap-svg",role:"img","aria-labelledby":Y,ref:k,onClick:K,children:[w&&t.jsx("title",{id:Y,children:w}),t.jsx(Sl,{onClick:G,nodeColor:s,nodeStrokeColor:i,nodeBorderRadius:l,nodeClassName:a,nodeStrokeWidth:c,nodeComponent:u}),t.jsx("path",{className:"react-flow__minimap-mask",d:`M${j-V},${H-V}h${Z+2*V}v${X+2*V}h${-Z-2*V}z\n M${M.x},${M.y}h${M.width}v${M.height}h${-M.width}z`,fillRule:"evenodd",pointerEvents:"none"})]})})}El.displayName="MiniMap";const kl=n.memo(El);const _l=n.memo((function({nodeId:e,position:o,variant:i=Kr.Handle,className:s,style:a={},children:l,color:c,minWidth:u=10,minHeight:d=10,maxWidth:h=Number.MAX_VALUE,maxHeight:f=Number.MAX_VALUE,keepAspectRatio:g=!1,shouldResize:p,onResizeStart:m,onResize:y,onResizeEnd:v}){const x=Rs(),w="string"==typeof e?e:x,b=Ci(),S=n.useRef(null),C=i===Kr.Line?"right":"bottom-right",E=o??C,k=n.useRef(null);n.useEffect((()=>{if(S.current&&w)return k.current||(k.current=ri({domNode:S.current,nodeId:w,getStoreItems:()=>{const{nodeLookup:e,transform:t,snapGrid:n,snapToGrid:o,nodeOrigin:r}=b.getState();return{nodeLookup:e,transform:t,snapGrid:n,snapToGrid:o,nodeOrigin:r}},onChange:(e,t)=>{const{triggerNodeChanges:n,nodeLookup:o,parentLookup:r,nodeOrigin:i}=b.getState(),s=[],a={x:e.x,y:e.y},l=o.get(w);if(l&&l.expandParent&&l.parentId){const t=l.origin??i,n=e.width??l.measured.width,c=e.height??l.measured.height,u=_r([{id:l.id,parentId:l.parentId,rect:{width:n,height:c,...Wo({x:e.x??l.position.x,y:e.y??l.position.y},{width:n,height:c},l.parentId,o,t)}}],o,r,i);s.push(...u),a.x=e.x?Math.max(t[0]*n,e.x):void 0,a.y=e.y?Math.max(t[1]*c,e.y):void 0}if(void 0!==a.x&&void 0!==a.y){const e={id:w,type:"position",position:{...a}};s.push(e)}if(void 0!==e.width&&void 0!==e.height){const t={id:w,type:"dimensions",resizing:!0,setAttributes:!0,dimensions:{width:e.width,height:e.height}};s.push(t)}for(const e of t){const t={...e,type:"position"};s.push(t)}n(s)},onEnd:()=>{const e={id:w,type:"dimensions",resizing:!1};b.getState().triggerNodeChanges([e])}})),k.current.update({controlPosition:E,boundaries:{minWidth:u,minHeight:d,maxWidth:h,maxHeight:f},keepAspectRatio:g,onResizeStart:m,onResize:y,onResizeEnd:v,shouldResize:p}),()=>{k.current?.destroy()}}),[E,u,d,h,f,g,m,y,v,p]);const _=E.split("-"),M=i===Kr.Line?"borderColor":"backgroundColor",N=c?{...a,[M]:c}:a;return t.jsx("div",{className:r(["react-flow__resize-control","nodrag",..._,i,s]),ref:S,style:N,children:l})}));const Ml=e=>e.domNode?.querySelector(".react-flow__renderer");function Nl({children:e}){const t=Si(Ml);return t?o.createPortal(e,t):null}const Pl=(e,t)=>e?.internals.positionAbsolute.x!==t?.internals.positionAbsolute.x||e?.internals.positionAbsolute.y!==t?.internals.positionAbsolute.y||e?.measured.width!==t?.measured.width||e?.measured.height!==t?.measured.height||e?.selected!==t?.selected||e?.internals.z!==t?.internals.z,zl=(e,t)=>{if(e.size!==t.size)return!1;for(const[n,o]of e)if(Pl(o,t.get(n)))return!1;return!0},Ol=e=>({x:e.transform[0],y:e.transform[1],zoom:e.transform[2],selectedNodesCount:e.nodes.filter((e=>e.selected)).length});e.Background=ll,e.BaseEdge=oa,e.BezierEdge=xa,e.ControlButton=gl,e.Controls=yl,e.EdgeLabelRenderer=function({children:e}){const t=Si(qa);return t?o.createPortal(e,t):null},e.EdgeText=na,e.Handle=Ls,e.MiniMap=kl,e.NodeResizeControl=_l,e.NodeResizer=function({nodeId:e,isVisible:n=!0,handleClassName:o,handleStyle:r,lineClassName:i,lineStyle:s,color:a,minWidth:l=10,minHeight:c=10,maxWidth:u=Number.MAX_VALUE,maxHeight:d=Number.MAX_VALUE,keepAspectRatio:h=!1,shouldResize:f,onResizeStart:g,onResize:p,onResizeEnd:m}){return n?t.jsxs(t.Fragment,{children:[qr.map((n=>t.jsx(_l,{className:i,style:s,nodeId:e,position:n,variant:Kr.Line,color:a,minWidth:l,minHeight:c,maxWidth:u,maxHeight:d,onResizeStart:g,keepAspectRatio:h,shouldResize:f,onResize:p,onResizeEnd:m},n))),Gr.map((n=>t.jsx(_l,{className:o,style:r,nodeId:e,position:n,color:a,minWidth:l,minHeight:c,maxWidth:u,maxHeight:d,onResizeStart:g,keepAspectRatio:h,shouldResize:f,onResize:p,onResizeEnd:m},n)))]}):null},e.NodeToolbar=function({nodeId:o,children:i,className:s,style:a,isVisible:l,position:c=e.Position.Top,offset:u=10,align:d="center",...h}){const f=Rs(),g=n.useCallback((e=>{const t=(Array.isArray(o)?o:[o||f||""]).reduce(((t,n)=>{const o=e.nodeLookup.get(n);return o&&t.set(o.id,o),t}),new Map);return t}),[o,f]),p=Si(g,zl),{x:m,y:y,zoom:v,selectedNodesCount:x}=Si(Ol,Di);if(!("boolean"==typeof l?l:1===p.size&&p.values().next().value.selected&&1===x)||!p.size)return null;const w=yo(p),b=Array.from(p.values()),S=Math.max(...b.map((e=>e.internals.z+1))),C={position:"absolute",transform:xr(w,{x:m,y:y,zoom:v},c,u,d),zIndex:S,...a};return t.jsx(Nl,{children:t.jsx("div",{style:C,className:r(["react-flow__node-toolbar",s]),...h,"data-id":b.reduce(((e,t)=>`${e}${t.id} `),"").trim(),children:i})})},e.Panel=Ii,e.ReactFlow=Ga,e.ReactFlowProvider=Wa,e.SimpleBezierEdge=aa,e.SmoothStepEdge=ua,e.StepEdge=fa,e.StraightEdge=ma,e.ViewportPortal=function({children:e}){const t=Si(Ua);return t?o.createPortal(e,t):null},e.addEdge=lr,e.applyEdgeChanges=os,e.applyNodeChanges=ns,e.getBezierEdgeCenter=tr,e.getBezierPath=rr,e.getConnectedEdges=xo,e.getEdgeCenter=ir,e.getIncomers=(e,t,n)=>{if(!e.id)return[];const o=new Set;return n.forEach((t=>{t.target===e.id&&o.add(t.source)})),t.filter((e=>o.has(e.id)))},e.getNodesBounds=mo,e.getOutgoers=(e,t,n)=>{if(!e.id)return[];const o=new Set;return n.forEach((t=>{t.source===e.id&&o.add(t.target)})),t.filter((e=>o.has(e.id)))},e.getSimpleBezierPath=ia,e.getSmoothStepPath=fr,e.getStraightPath=cr,e.getViewportForBounds=jo,e.isEdge=cs,e.isNode=ls,e.reconnectEdge=(e,t,n,o={shouldReplaceId:!0})=>{const{id:r,...i}=e;if(!t.source||!t.target)return n;if(!n.find((t=>t.id===e.id)))return n;const s={...i,id:o.shouldReplaceId?ar(t):r,source:t.source,target:t.target,sourceHandle:t.sourceHandle,targetHandle:t.targetHandle};return n.filter((e=>e.id!==r)).concat(s)},e.useConnection=La,e.useEdges=function(){return Si(Ja,Di)},e.useEdgesState=function(e){const[t,o]=n.useState(e),r=n.useCallback((e=>o((t=>os(e,t)))),[]);return[t,o,r]},e.useHandleConnections=function({type:e,id:t=null,nodeId:o,onConnect:r,onDisconnect:i}){const s=Rs(),a=o??s,l=n.useRef(null),c=Si((n=>n.connectionLookup.get(`${a}-${e}-${t}`)),co);return n.useEffect((()=>{if(l.current&&l.current!==c){const e=c??new Map;uo(l.current,e,i),uo(e,l.current,r)}l.current=c??new Map}),[c,r,i]),n.useMemo((()=>Array.from(c?.values()??[])),[c])},e.useInternalNode=function(e){return Si(n.useCallback((t=>t.nodeLookup.get(e)),[e]),Di)},e.useKeyPress=qi,e.useNodeId=Rs,e.useNodes=function(){return Si(Qa,Di)},e.useNodesData=function(e){return Si(n.useCallback((t=>{const n=[],o=Array.isArray(e),r=o?e:[e];for(const e of r){const o=t.nodeLookup.get(e);o&&n.push({id:o.id,type:o.type,data:o.data})}return o?n:n[0]??null}),[e]),Nr)},e.useNodesInitialized=function(e=tl){return Si((e=>t=>{if(0===t.nodeLookup.size)return!1;for(const[,{hidden:n,internals:o}]of t.nodeLookup)if((e.includeHiddenNodes||!n)&&(void 0===o.handleBounds||!Yo(o.userNode)))return!1;return!0})(e))},e.useNodesState=function(e){const[t,o]=n.useState(e),r=n.useCallback((e=>o((t=>ns(e,t)))),[]);return[t,o,r]},e.useOnSelectionChange=function({onChange:e}){const t=Ci();n.useEffect((()=>{const n=[...t.getState().onSelectionChangeHandlers,e];return t.setState({onSelectionChangeHandlers:n}),()=>{const n=t.getState().onSelectionChangeHandlers.filter((t=>t!==e));t.setState({onSelectionChangeHandlers:n})}}),[e])},e.useOnViewportChange=function({onStart:e,onChange:t,onEnd:o}){const r=Ci();n.useEffect((()=>{r.setState({onViewportChangeStart:e})}),[e]),n.useEffect((()=>{r.setState({onViewportChange:t})}),[t]),n.useEffect((()=>{r.setState({onViewportChangeEnd:o})}),[o])},e.useReactFlow=ms,e.useStore=Si,e.useStoreApi=Ci,e.useUpdateNodeInternals=function(){const e=Ci();return n.useCallback((t=>{const{domNode:n,updateNodeInternals:o}=e.getState(),r=Array.isArray(t)?t:[t],i=new Map;r.forEach((e=>{const t=n?.querySelector(`.react-flow__node[data-id="${e}"]`);t&&i.set(e,{id:e,nodeElement:t,force:!0})})),requestAnimationFrame((()=>o(i,{triggerFitView:!1})))}),[])},e.useViewport=function(){return Si(el,Di)}}));
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AACA,OAAO,EAcL,UAAU,EACV,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAIxB,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAA+C,MAAM,UAAU,CAAC;AAExG,QAAA,MAAM,WAAW;;;;;;;;;;2GA6Vd,CAAC;AAEJ,OAAO,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AACA,OAAO,EAcL,UAAU,EACV,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAIxB,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAA+C,MAAM,UAAU,CAAC;AAExG,QAAA,MAAM,WAAW;;;;;;;;;;2GAkWd,CAAC;AAEJ,OAAO,EAAE,WAAW,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyflow/react",
3
- "version": "12.3.1",
3
+ "version": "12.3.2",
4
4
  "description": "React Flow - A highly customizable React library for building node-based editors and interactive flow charts.",
5
5
  "keywords": [
6
6
  "react",
@@ -66,8 +66,8 @@
66
66
  "postcss-rename": "^0.6.1",
67
67
  "react": "^18.2.0",
68
68
  "typescript": "5.1.3",
69
- "@xyflow/rollup-config": "0.0.0",
70
69
  "@xyflow/eslint-config": "0.0.0",
70
+ "@xyflow/rollup-config": "0.0.0",
71
71
  "@xyflow/tsconfig": "0.0.0"
72
72
  },
73
73
  "rollup": {