@xyflow/react 12.0.3 → 12.0.4

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/container/Pane/index.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AASf,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,aAAa,CAAC;AAElE,KAAK,SAAS,GAAG;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,QAAQ,EAAE,SAAS,CAAC;CACrB,GAAG,OAAO,CACT,IAAI,CACF,cAAc,EACZ,eAAe,GACf,WAAW,GACX,kBAAkB,GAClB,gBAAgB,GAChB,aAAa,GACb,mBAAmB,GACnB,cAAc,GACd,kBAAkB,GAClB,iBAAiB,GACjB,kBAAkB,GAClB,iBAAiB,CACpB,CACF,CAAC;AAoBF,wBAAgB,IAAI,CAAC,EACnB,WAAW,EACX,mBAAmB,EACnB,aAAkC,EAClC,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,QAAQ,GACT,EAAE,SAAS,2CAsMX"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/container/Pane/index.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AASf,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,aAAa,CAAC;AAElE,KAAK,SAAS,GAAG;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,QAAQ,EAAE,SAAS,CAAC;CACrB,GAAG,OAAO,CACT,IAAI,CACF,cAAc,EACZ,eAAe,GACf,WAAW,GACX,kBAAkB,GAClB,gBAAgB,GAChB,aAAa,GACb,mBAAmB,GACnB,cAAc,GACd,kBAAkB,GAClB,iBAAiB,GACjB,kBAAkB,GAClB,iBAAiB,CACpB,CACF,CAAC;AAoBF,wBAAgB,IAAI,CAAC,EACnB,WAAW,EACX,mBAAmB,EACnB,aAAkC,EAClC,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,QAAQ,GACT,EAAE,SAAS,2CAuMX"}
package/dist/esm/index.js CHANGED
@@ -124,7 +124,7 @@ const defaultNodeOrigin = [0, 0];
124
124
  const defaultViewport = { x: 0, y: 0, zoom: 1 };
125
125
 
126
126
  /*
127
- * This component helps us to update the store with the vlues coming from the user.
127
+ * This component helps us to update the store with the values coming from the user.
128
128
  * We distinguish between values we can update directly with `useDirectStoreUpdater` (like `snapGrid`)
129
129
  * and values that have a dedicated setter function in the store (like `setNodes`).
130
130
  */
@@ -750,7 +750,7 @@ function useQueue(runQueue) {
750
750
  runQueue(queueItems);
751
751
  queue.reset();
752
752
  }
753
- // Beacuse we're using reactive state to trigger this effect, we need to flip
753
+ // Because we're using reactive state to trigger this effect, we need to flip
754
754
  // it back to false.
755
755
  setShouldFlush(false);
756
756
  }, [shouldFlush]);
@@ -1215,7 +1215,6 @@ function Pane({ isSelecting, selectionKeyPressed, selectionMode = SelectionMode.
1215
1215
  const onPointerDown = (event) => {
1216
1216
  const { resetSelectedElements, domNode, edgeLookup } = store.getState();
1217
1217
  containerBounds.current = domNode?.getBoundingClientRect();
1218
- event.target?.setPointerCapture?.(event.pointerId);
1219
1218
  if (!elementsSelectable ||
1220
1219
  !isSelecting ||
1221
1220
  event.button !== 0 ||
@@ -1223,6 +1222,7 @@ function Pane({ isSelecting, selectionKeyPressed, selectionMode = SelectionMode.
1223
1222
  !containerBounds.current) {
1224
1223
  return;
1225
1224
  }
1225
+ event.target?.setPointerCapture?.(event.pointerId);
1226
1226
  selectionStarted.current = true;
1227
1227
  selectionInProgress.current = false;
1228
1228
  edgeIdLookup.current = new Map();
@@ -2845,7 +2845,7 @@ const createStore = ({ nodes, edges, defaultNodes, defaultEdges, width, height,
2845
2845
  setNodeExtent: (nodeExtent) => {
2846
2846
  const { nodeLookup } = get();
2847
2847
  for (const [, node] of nodeLookup) {
2848
- const positionAbsolute = clampPosition(node.position, nodeExtent);
2848
+ const positionAbsolute = clampPosition(node.internals.positionAbsolute, nodeExtent);
2849
2849
  nodeLookup.set(node.id, {
2850
2850
  ...node,
2851
2851
  internals: {
@@ -124,7 +124,7 @@ const defaultNodeOrigin = [0, 0];
124
124
  const defaultViewport = { x: 0, y: 0, zoom: 1 };
125
125
 
126
126
  /*
127
- * This component helps us to update the store with the vlues coming from the user.
127
+ * This component helps us to update the store with the values coming from the user.
128
128
  * We distinguish between values we can update directly with `useDirectStoreUpdater` (like `snapGrid`)
129
129
  * and values that have a dedicated setter function in the store (like `setNodes`).
130
130
  */
@@ -750,7 +750,7 @@ function useQueue(runQueue) {
750
750
  runQueue(queueItems);
751
751
  queue.reset();
752
752
  }
753
- // Beacuse we're using reactive state to trigger this effect, we need to flip
753
+ // Because we're using reactive state to trigger this effect, we need to flip
754
754
  // it back to false.
755
755
  setShouldFlush(false);
756
756
  }, [shouldFlush]);
@@ -1215,7 +1215,6 @@ function Pane({ isSelecting, selectionKeyPressed, selectionMode = SelectionMode.
1215
1215
  const onPointerDown = (event) => {
1216
1216
  const { resetSelectedElements, domNode, edgeLookup } = store.getState();
1217
1217
  containerBounds.current = domNode?.getBoundingClientRect();
1218
- event.target?.setPointerCapture?.(event.pointerId);
1219
1218
  if (!elementsSelectable ||
1220
1219
  !isSelecting ||
1221
1220
  event.button !== 0 ||
@@ -1223,6 +1222,7 @@ function Pane({ isSelecting, selectionKeyPressed, selectionMode = SelectionMode.
1223
1222
  !containerBounds.current) {
1224
1223
  return;
1225
1224
  }
1225
+ event.target?.setPointerCapture?.(event.pointerId);
1226
1226
  selectionStarted.current = true;
1227
1227
  selectionInProgress.current = false;
1228
1228
  edgeIdLookup.current = new Map();
@@ -2845,7 +2845,7 @@ const createStore = ({ nodes, edges, defaultNodes, defaultEdges, width, height,
2845
2845
  setNodeExtent: (nodeExtent) => {
2846
2846
  const { nodeLookup } = get();
2847
2847
  for (const [, node] of nodeLookup) {
2848
- const positionAbsolute = clampPosition(node.position, nodeExtent);
2848
+ const positionAbsolute = clampPosition(node.internals.positionAbsolute, nodeExtent);
2849
2849
  nodeLookup.set(node.id, {
2850
2850
  ...node,
2851
2851
  internals: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/container/Pane/index.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AASf,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,aAAa,CAAC;AAElE,KAAK,SAAS,GAAG;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,QAAQ,EAAE,SAAS,CAAC;CACrB,GAAG,OAAO,CACT,IAAI,CACF,cAAc,EACZ,eAAe,GACf,WAAW,GACX,kBAAkB,GAClB,gBAAgB,GAChB,aAAa,GACb,mBAAmB,GACnB,cAAc,GACd,kBAAkB,GAClB,iBAAiB,GACjB,kBAAkB,GAClB,iBAAiB,CACpB,CACF,CAAC;AAoBF,wBAAgB,IAAI,CAAC,EACnB,WAAW,EACX,mBAAmB,EACnB,aAAkC,EAClC,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,QAAQ,GACT,EAAE,SAAS,2CAsMX"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/container/Pane/index.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AASf,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,aAAa,CAAC;AAElE,KAAK,SAAS,GAAG;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,QAAQ,EAAE,SAAS,CAAC;CACrB,GAAG,OAAO,CACT,IAAI,CACF,cAAc,EACZ,eAAe,GACf,WAAW,GACX,kBAAkB,GAClB,gBAAgB,GAChB,aAAa,GACb,mBAAmB,GACnB,cAAc,GACd,kBAAkB,GAClB,iBAAiB,GACjB,kBAAkB,GAClB,iBAAiB,CACpB,CACF,CAAC;AAoBF,wBAAgB,IAAI,CAAC,EACnB,WAAW,EACX,mBAAmB,EACnB,aAAkC,EAClC,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,QAAQ,GACT,EAAE,SAAS,2CAuMX"}
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
- */ri.exports=function(){if(oi)return ii;oi=1;var e=n,t=li(),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 ii.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},ii}();var ci=ei(ri.exports);const ui=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:di}=ci;function hi(e,t=e.getState,o){const r=di(e.subscribe,e.getState,e.getServerState||e.getState,t,o);return n.useDebugValue(r),r}const fi=(e,t)=>{const n=(e=>e?ui(e):ui)(e),o=(e,o=t)=>hi(n,e,o);return Object.assign(o,n),o},gi=n.createContext(null),pi=gi.Provider,mi=Qn.error001();function yi(e,t){const o=n.useContext(gi);if(null===o)throw new Error(mi);return hi(o,e,t)}function vi(){const e=n.useContext(gi);if(null===e)throw new Error(mi);return n.useMemo((()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe})),[e])}const xi={display:"none"},wi={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},bi="react-flow__node-desc",Si="react-flow__edge-desc",Ci="react-flow__aria-live",Ei=e=>e.ariaLiveMessage;function ki({rfId:e}){const n=yi(Ei);return t.jsx("div",{id:`${Ci}-${e}`,"aria-live":"assertive","aria-atomic":"true",style:wi,children:n})}function _i({rfId:e,disableKeyboardA11y:n}){return t.jsxs(t.Fragment,{children:[t.jsxs("div",{id:`${bi}-${e}`,style:xi,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:`${Si}-${e}`,style:xi,children:"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel."}),!n&&t.jsx(ki,{rfId:e})]})}const Mi=e=>e.userSelectionActive?"none":"all";function Ni({position:e="top-left",children:n,className:o,style:i,...s}){const a=yi(Mi),l=`${e}`.split("-");return t.jsx("div",{className:r(["react-flow__panel",o,...l]),style:{...i,pointerEvents:a},...s,children:n})}function Pi({proOptions:e,position:n="bottom-right"}){return e?.hideAttribution?null:t.jsx(Ni,{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 zi(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 Oi=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}},Ii=e=>e.id;function Ai(e,t){return zi(e.selectedNodes.map(Ii),t.selectedNodes.map(Ii))&&zi(e.selectedEdges.map(Ii),t.selectedEdges.map(Ii))}function Ri({onSelectionChange:e}){const t=vi(),{selectedNodes:o,selectedEdges:r}=yi(Oi,Ai);return n.useEffect((()=>{const n={nodes:o,edges:r};e?.(n),t.getState().onSelectionChangeHandlers.forEach((e=>e(n)))}),[o,r,e]),null}const Di=e=>!!e.onSelectionChangeHandlers;function $i({onSelectionChange:e}){const n=yi(Di);return e||n?t.jsx(Ri,{onSelectionChange:e}):null}const Li=[0,0],Ti={x:0,y:0,zoom:1},Bi=["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"],Vi=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}),ji={translateExtent:Jn,nodeOrigin:Li,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:"nopan",rfId:"1",paneClickDistance:0};function Hi(e){const{setNodes:t,setEdges:o,setMinZoom:r,setMaxZoom:i,setTranslateExtent:s,setNodeExtent:a,reset:l,setDefaultNodesAndEdges:c,setPaneClickDistance:u}=yi(Vi,zi),d=vi();n.useEffect((()=>(c(e.defaultNodes,e.defaultEdges),()=>{h.current=ji,l()})),[]);const h=n.useRef(ji);return n.useEffect((()=>{for(const n of Bi){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}),Bi.map((t=>e[t]))),null}function Zi(){return"undefined"!=typeof window&&window.matchMedia?window.matchMedia("(prefers-color-scheme: dark)"):null}const Xi="undefined"!=typeof document?document:null;function Yi(e=null,t={target:Xi,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||Xi;if(null!==e){const e=e=>{i.current=e.ctrlKey||e.metaKey||e.shiftKey;if((!i.current||i.current&&!t.actInsideInputWithModifier)&&Go(e))return!1;const n=Fi(e.code,l);s.current.add(e[n]),Wi(a,s.current,!1)&&(e.preventDefault(),r(!0))},o=e=>{if((!i.current||i.current&&!t.actInsideInputWithModifier)&&Go(e))return!1;const n=Fi(e.code,l);Wi(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 Wi(e,t,n){return e.filter((e=>n||e.length===t.size)).some((e=>e.every((e=>t.has(e)))))}function Fi(e,t){return t.includes(e)?"code":"key"}const Ki=()=>{const e=vi();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,width:o,height:r,minZoom:i,maxZoom:s,panZoom:a}=e.getState(),l=xo(n,t);return a?wo({nodes:l,width:o,height:r,minZoom:i,maxZoom:s,panZoom:a},t):Promise.resolve(!1)},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=Bo(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 Lo(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=To(t,n);return{x:s.x+r,y:s.y+i}}})),[])};function Gi(e,t){const n=[],o=new Map;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 n.push(t.item);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)qi(e,r);n.push(r)}return n}function qi(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 Ui(e,t){return Gi(e,t)}function Qi(e,t){return Gi(e,t)}function Ji(e,t){return{id:e,type:"select",selected:t}}function es(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(Ji(i.id,e)))}return o}function ts({items:e=[],lookup:t}){const n=[],o=new Map(e.map((e=>[e.id,e])));for(const o of e){const e=t.get(o.id),r=e?.internals?.userNode??e;void 0!==r&&r!==o&&n.push({id:o.id,item:o,type:"replace"}),void 0===r&&n.push({item:o,type:"add"})}for(const[e]of t){void 0===o.get(e)&&n.push({id:e,type:"remove"})}return n}function ns(e){return{id:e.id,type:"remove"}}const os=e=>(e=>"id"in e&&"position"in e&&!("source"in e)&&!("target"in e))(e),rs=e=>fo(e);function is(e){return n.forwardRef(e)}const ss="undefined"!=typeof window?n.useLayoutEffect:n.useEffect;function as(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 ss((()=>{if(!t)return void r.reset();const n=r.get();n.length&&(e(n),r.reset()),o(!1)}),[t]),r}const ls=n.createContext(null);function cs({children:e}){const o=vi(),r=as(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(ts({items:a,lookup:s}))}),[])),i=as(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(ts({items:a,lookup:s}))}),[])),s=n.useMemo((()=>({nodeQueue:r,edgeQueue:i})),[]);return t.jsx(ls.Provider,{value:s,children:e})}const us=e=>!!e.panZoom;function ds(){const e=Ki(),t=vi(),o=function(){const e=n.useContext(ls);if(!e)throw new Error("useBatchContext must be used within a BatchProvider");return e}(),r=yi(us),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=os(e)?e:n.get(e.id),i=r.parentId?Xo(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 Po(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&&os(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&&rs(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=vo(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(ns);s?.(h),l(e)}if(g){const e=d.map(ns);i?.(d),a(e)}return(g||f)&&c?.({nodes:d,edges:h}),{deletedNodes:d,deletedEdges:h}},getIntersectingNodes:(e,n=!0,o)=>{const r=Ao(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=Po(a?o:i),c=Io(l,s);return n&&c>0||c>=s.width*s.height})):[]},isNodeIntersecting:(e,t,n=!0)=>{const o=Ao(e)?e:i(e);if(!o)return!1;const r=Io(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)}}}),[]);return n.useMemo((()=>({...i,...e,viewportInitialized:r})),[r])}const hs=e=>e.selected,fs={actInsideInputWithModifier:!1},gs="undefined"!=typeof window?window:void 0;const ps={position:"absolute",width:"100%",height:"100%",top:0,left:0},ms=e=>({userSelectionActive:e.userSelectionActive,lib:e.lib});function ys({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=vi(),E=n.useRef(null),{userSelectionActive:k,lib:_}=yi(ms,zi),M=Yi(p),N=n.useRef();return function(e){const t=vi();n.useEffect((()=>{const n=()=>{if(!e.current)return!1;const n=Wo(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),n.useEffect((()=>{if(E.current){N.current=Hr({domNode:E.current,minZoom:f,maxZoom:g,translateExtent:h,viewport:d,paneClickDistance:S,onTransformChange:e=>{w?.({x:e[0],y:e[1],zoom:e[2]}),b||C.setState({transform:e})},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:_})}),[o,r,i,s,a,l,c,u,M,m,x,k,v,_]),t.jsx("div",{className:"react-flow__renderer",ref:E,style:ps,children:y})}const vs=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function xs(){const{userSelectionActive:e,userSelectionRect:n}=yi(vs,zi);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 ws=(e,t)=>n=>{n.target===t.current&&e?.(n)},bs=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,dragging:e.paneDragging});function Ss({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=vi(),w=n.useRef(0),b=n.useRef(0),S=n.useRef(),C=n.useRef(new Map),{userSelectionActive:E,elementsSelectable:k,dragging:_}=yi(bs,zi),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;return t.jsxs("div",{className:r(["react-flow__pane",{draggable:a,dragging:_,selection:o}]),onClick:M?void 0:ws(z,v),onContextMenu:ws((e=>{Array.isArray(a)&&a?.includes(2)?e.preventDefault():h?.(e)}),v),onWheel:ws(O,v),onPointerEnter:M?void 0:g,onPointerDown:M?e=>{const{resetSelectedElements:t,domNode:n,edgeLookup:r}=x.getState();if(S.current=n?.getBoundingClientRect(),e.target?.setPointerCapture?.(e.pointerId),!k||!o||0!==e.button||e.target!==v.current||!S.current)return;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}=Uo(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}=Uo(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=yo(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(es(i,m,!0))}if(b.current!==p.size){b.current=p.size;l(es(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:ps,children:[y,t.jsx(xs,{})]})}function Cs({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 Es({nodeRef:e,disabled:t=!1,noDragClassName:o,handleSelector:r,nodeId:i,isSelectable:s,nodeClickDistance:a}){const l=vi(),[c,u]=n.useState(!1),d=n.useRef();return n.useEffect((()=>{d.current=Pr({getStoreItems:()=>l.getState(),onNodeMouseDown:t=>{Cs({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 ks=e=>t=>t.selected&&(t.draggable||e&&void 0===t.draggable);function _s(){const e=vi();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=ks(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=$o(t,r));const{position:i,positionAbsolute:a}=bo({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 Ms=n.createContext(null),Ns=Ms.Provider;Ms.Consumer;const Ps=()=>n.useContext(Ms),zs=e=>({connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName,rfId:e.rfId});const Os=n.memo(is((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=vi(),w=Ps(),{connectOnClick:b,noPanClassName:S,rfId:C}=yi(zs,zi),{connectingFrom:E,connectingTo:k,clickConnecting:_,isPossibleEndHandle:M,connectionInProcess:N,valid:P}=yi(((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),zi);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(sr(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();Rr.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}=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 d=Fo(e.target),h=i||l,{connection:f,isValid:g}=Rr.isValid(e.nativeEvent,{handle:{nodeId:w,id:y,type:n},connectionMode:s,fromNodeId:r.nodeId,fromHandleId:r.id||null,fromType:r.type,isValidConnection:h,flowId:u,doc:d,lib:c});g&&f&&z(f),o?.(e),x.setState({connectionClickStartHandle:null})}:void 0,ref:m,...p,children:d})})));const Is={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},As={input:function({data:n,isConnectable:o,sourcePosition:r=e.Position.Bottom}){return t.jsxs(t.Fragment,{children:[n?.label,t.jsx(Os,{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(Os,{type:"target",position:r,isConnectable:o}),n?.label,t.jsx(Os,{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(Os,{type:"target",position:r,isConnectable:o}),n?.label]})},group:function(){return null}};const Rs=e=>{const{width:t,height:n,x:o,y:r}=mo(e.nodeLookup,{filter:e=>!!e.selected});return{width:Ro(t)?t:null,height:Ro(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 Ds({onSelectionContextMenu:e,noPanClassName:o,disableKeyboardA11y:i}){const s=vi(),{width:a,height:l,transformString:c,userSelectionActive:u}=yi(Rs,zi),d=_s(),h=n.useRef(null);if(n.useEffect((()=>{i||h.current?.focus({preventScroll:!0})}),[i]),Es({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(Is,e.key)&&d({direction:Is[e.key],factor:e.shiftKey?4:1})},style:{width:a,height:l}})})}const $s="undefined"!=typeof window?window:void 0,Ls=e=>({nodesSelectionActive:e.nodesSelectionActive,userSelectionActive:e.userSelectionActive});function Ts({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:I,noWheelClassName:A,noPanClassName:R,disableKeyboardA11y:D,onViewportChange:$,isControlledViewport:L}){const{nodesSelectionActive:T,userSelectionActive:B}=yi(Ls),V=Yi(d,{target:$s}),j=Yi(y,{target:$s}),H=j||_,Z=j||S,X=h&&!0!==H,Y=V||B||X;return function({deleteKeyCode:e,multiSelectionKeyCode:t}){const o=vi(),{deleteElements:r}=ds(),i=Yi(e,fs),s=Yi(t,{target:gs});n.useEffect((()=>{if(i){const{edges:e,nodes:t}=o.getState();r({nodes:t.filter(hs),edges:e.filter(hs)}),o.setState({nodesSelectionActive:!1})}}),[i]),n.useEffect((()=>{o.setState({multiSelectionActive:s})}),[s])}({deleteKeyCode:u,multiSelectionKeyCode:m}),t.jsx(ys,{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:A,noPanClassName:R,onViewportChange:$,isControlledViewport:L,paneClickDistance:c,children:t.jsxs(Ss,{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,T&&t.jsx(Ds,{onSelectionContextMenu:I,noPanClassName:R,disableKeyboardA11y:D})]})})}Ts.displayName="FlowRenderer";const Bs=n.memo(Ts),Vs=e=>t=>e?yo(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 js=e=>e.updateNodeInternals;function Hs({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}=yi((t=>{const n=t.nodeLookup.get(e),o=t.parentLookup.has(e);return{node:n,internals:n.internals,isParent:o}}),zi);let _=C.type||"default",M=x?.[_]||As[_];void 0===M&&(S?.("003",Qn.error003(_)),_="default",M=As.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),I=vi(),A=Zo(C),R=function({node:e,nodeType:t,hasDimensions:o,resizeObserver:r}){const i=vi(),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:A,resizeObserver:g}),D=Es({nodeRef:R,disabled:C.hidden||!N,noDragClassName:p,handleSelector:C.dragHandle,nodeId:e,isSelectable:P,nodeClickDistance:b}),$=_s();if(C.hidden)return null;const L=Ho(C),T=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),B=w?Co(E.positionAbsolute,w):E.positionAbsolute,V=P||N||o||i||s||a,j=i?e=>i(e,{...E.userNode}):void 0,H=s?e=>s(e,{...E.userNode}):void 0,Z=a?e=>a(e,{...E.userNode}):void 0,X=l?e=>l(e,{...E.userNode}):void 0,Y=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(${B.x}px,${B.y}px)`,pointerEvents:V?"all":"none",visibility:A?"visible":"hidden",...C.style,...T},"data-id":e,"data-testid":`rf__node-${e}`,onMouseEnter:j,onMouseMove:H,onMouseLeave:Z,onContextMenu:X,onClick:t=>{const{selectNodesOnDrag:n,nodeDragThreshold:r}=I.getState();P&&(!n||!N||r>0)&&Cs({id:e,store:I,nodeRef:R}),o&&o(t,{...E.userNode})},onDoubleClick:Y,onKeyDown:O?t=>{if(!Go(t.nativeEvent)&&!y)if(eo.includes(t.key)&&P){const n="Escape"===t.key;Cs({id:e,store:I,unselect:n,nodeRef:R})}else N&&C.selected&&Object.prototype.hasOwnProperty.call(Is,t.key)&&(I.setState({ariaLiveMessage:`Moved selected node ${t.key.replace("Arrow","").toLowerCase()}. New position, x: ${~~B.x}, y: ${~~B.y}`}),$({direction:Is[t.key],factor:t.shiftKey?4:1}))}:void 0,tabIndex:O?0:void 0,role:O?"button":void 0,"aria-describedby":y?void 0:`${bi}-${v}`,"aria-label":C.ariaLabel,children:t.jsx(Ns,{value:e,children:t.jsx(M,{id:e,data:C.data,type:_,positionAbsoluteX:B.x,positionAbsoluteY:B.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,...L})})})}const Zs=e=>({nodesDraggable:e.nodesDraggable,nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,onError:e.onError});function Xs(e){const{nodesDraggable:o,nodesConnectable:r,nodesFocusable:i,elementsSelectable:s,onError:a}=yi(Zs,zi),l=(c=e.onlyRenderVisibleElements,yi(n.useCallback(Vs(c),[c]),zi));var c;const u=function(){const e=yi(js),[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:ps,children:l.map((n=>t.jsx(Hs,{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)))})}Xs.displayName="NodeRenderer";const Ys=n.memo(Xs);const Ws={[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 Fs=({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=vi();return n.useMemo((()=>Object.prototype.hasOwnProperty.call(Ws,e)?Ws[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},Ks=({defaultColor:e,rfId:o})=>{const r=yi((e=>e.edges)),i=yi((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=mr(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(Fs,{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};Ks.displayName="MarkerDefinitions";var Gs=n.memo(Ks);function qs({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}qs.displayName="EdgeText";const Us=n.memo(qs);function Qs({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&&Ro(o)&&Ro(i)?t.jsx(Us,{x:o,y:i,label:s,labelStyle:a,labelShowBg:l,labelBgStyle:c,labelBgPadding:u,labelBgBorderRadius:d}):null]})}function Js({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 ea({sourceX:t,sourceY:n,sourcePosition:o=e.Position.Bottom,targetX:r,targetY:i,targetPosition:s=e.Position.Top}){const[a,l]=Js({pos:o,x1:t,y1:n,x2:r,y2:i}),[c,u]=Js({pos:s,x1:r,y1:i,x2:t,y2:n}),[d,h,f,g]=Jo({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 ta(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]=ea({sourceX:r,sourceY:i,sourcePosition:l,targetX:s,targetY:a,targetPosition:c}),C=o.isInternal?void 0:n;return t.jsx(Qs,{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 na=ta({isInternal:!1}),oa=ta({isInternal:!0});function ra(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]=dr({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(Qs,{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})}))}na.displayName="SimpleBezierEdge",oa.displayName="SimpleBezierEdgeInternal";const ia=ra({isInternal:!1}),sa=ra({isInternal:!0});function aa(e){return n.memo((({id:o,...r})=>{const i=e.isInternal?void 0:o;return t.jsx(ia,{...r,id:i,pathOptions:n.useMemo((()=>({borderRadius:0,offset:r.pathOptions?.offset})),[r.pathOptions?.offset])})}))}ia.displayName="SmoothStepEdge",sa.displayName="SmoothStepEdgeInternal";const la=aa({isInternal:!1}),ca=aa({isInternal:!0});function ua(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]=ar({sourceX:o,sourceY:r,targetX:i,targetY:s}),w=e.isInternal?void 0:n;return t.jsx(Qs,{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})}))}la.displayName="StepEdge",ca.displayName="StepEdgeInternal";const da=ua({isInternal:!1}),ha=ua({isInternal:!0});function fa(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]=nr({sourceX:r,sourceY:i,sourcePosition:l,targetX:s,targetY:a,targetPosition:c,curvature:x?.curvature}),E=o.isInternal?void 0:n;return t.jsx(Qs,{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})}))}da.displayName="StraightEdge",ha.displayName="StraightEdgeInternal";const ga=fa({isInternal:!1}),pa=fa({isInternal:!0});ga.displayName="BezierEdge",pa.displayName="BezierEdgeInternal";const ma={default:pa,straight:ha,step:ca,smoothstep:sa,simplebezier:oa},ya={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null},va=(t,n,o)=>o===e.Position.Left?t-n:o===e.Position.Right?t+n:t,xa=(t,n,o)=>o===e.Position.Top?t-n:o===e.Position.Bottom?t+n:t,wa="react-flow__edgeupdater";function ba({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([wa,`${wa}-${c}`]),cx:va(n,i,e),cy:xa(o,i,e),r:i,stroke:"transparent",fill:"transparent"})}function Sa({isReconnectable:e,reconnectRadius:n,edge:o,targetHandleId:r,sourceHandleId:i,sourceX:s,sourceY:a,targetX:l,targetY:c,sourcePosition:u,targetPosition:d,onReconnect:h,onReconnectStart:f,onReconnectEnd:g,setReconnecting:p,setUpdateHover:m}){const y=vi(),v=(e,t)=>{if(0!==e.button)return;const{autoPanOnConnect:n,domNode:s,isValidConnection:a,connectionMode:l,connectionRadius:c,lib:u,onConnectStart:d,onConnectEnd:m,cancelConnection:v,nodeLookup:x,rfId:w,panBy:b,updateConnection:S}=y.getState(),C=t?o.target:o.source,E=(t?r:i)||null,k=t?"target":"source",_=t;p(!0),f?.(e,o,k);Rr.onPointerDown(e.nativeEvent,{autoPanOnConnect:n,connectionMode:l,connectionRadius:c,domNode:s,handleId:E,nodeId:C,nodeLookup:x,isTarget:_,edgeUpdaterType:k,lib:u,flowId:w,cancelConnection:v,panBy:b,isValidConnection:a,onConnect:e=>h?.(o,e),onConnectStart:d,onConnectEnd:m,onReconnectEnd:e=>{p(!1),g?.(e,o,k)},updateConnection:S,getTransform:()=>y.getState().transform,getFromHandle:()=>y.getState().connection.fromHandle})},x=()=>m(!0),w=()=>m(!1);return t.jsxs(t.Fragment,{children:[("source"===e||!0===e)&&t.jsx(ba,{position:u,centerX:s,centerY:a,radius:n,onMouseDown:e=>v(e,!0),onMouseEnter:x,onMouseOut:w,type:"source"}),("target"===e||!0===e)&&t.jsx(ba,{position:d,centerX:l,centerY:c,radius:n,onMouseDown:e=>v(e,!1),onMouseEnter:x,onMouseOut:w,type:"target"})]})}function Ca({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=yi((e=>e.edgeLookup.get(o)));const E=yi((e=>e.defaultEdgeOptions));C=E?{...E,...C}:C;let k=C.type||"default",_=x?.[k]||ma[k];void 0===_&&(b?.("011",Qn.error011(k)),k="default",_=ma.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,I]=n.useState(!1),[A,R]=n.useState(!1),D=vi(),{zIndex:$,sourceX:L,sourceY:T,targetX:B,targetY:V,sourcePosition:j,targetPosition:H}=yi(n.useCallback((t=>{const n=t.nodeLookup.get(C.source),r=t.nodeLookup.get(C.target);if(!n||!r)return{zIndex:C.zIndex,...ya};const i=function(t){const{sourceNode:n,targetNode:o}=t;if(!hr(n)||!hr(o))return null;const r=n.internals.handleBounds||fr(n.handles),i=o.internals.handleBounds||fr(o.handles),s=pr(r?.source??[],t.sourceHandle),a=pr(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=gr(n,s,l),d=gr(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||ya}}),[C.source,C.target,C.sourceHandle,C.targetHandle,C.selected,C.zIndex]),zi),Z=n.useMemo((()=>C.markerStart?`url('#${mr(C.markerStart,v)}')`:void 0),[C.markerStart,v]),X=n.useMemo((()=>C.markerEnd?`url('#${mr(C.markerEnd,v)}')`:void 0),[C.markerEnd,v]);if(C.hidden||null===L||null===T||null===B||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:$},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?`${Si}-${v}`:void 0,ref:z,children:[!A&&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:L,sourceY:T,targetX:B,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(Sa,{edge:C,isReconnectable:N,reconnectRadius:g,onReconnect:p,onReconnectStart:m,onReconnectEnd:y,sourceX:L,sourceY:T,targetX:B,targetY:V,sourcePosition:j,targetPosition:H,setUpdateHover:I,setReconnecting:R,sourceHandleId:C.sourceHandle,targetHandleId:C.targetHandle})]})})}const Ea=e=>({width:e.width,height:e.height,edgesFocusable:e.edgesFocusable,edgesReconnectable:e.edgesReconnectable,elementsSelectable:e.elementsSelectable,connectionMode:e.connectionMode,onError:e.onError});function ka({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}=yi(Ea,zi),S=(C=o,yi(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&&rr({sourceNode:o,targetNode:r,width:e.width,height:e.height,transform:e.transform})&&t.push(n.id)}return t}),[C]),zi));var C;return t.jsxs("div",{className:"react-flow__edges",children:[t.jsx(Gs,{defaultColor:e,rfId:r}),S.map((e=>t.jsx(Ca,{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)))]})}ka.displayName="EdgeRenderer";const _a=n.memo(ka),Ma=e=>`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`;function Na({children:e}){const n=yi(Ma);return t.jsx("div",{className:"react-flow__viewport xyflow__viewport react-flow__container",style:{transform:n},children:e})}const Pa=e=>e.panZoom?.syncViewport;const za=e=>e.connection.inProgress?{...e.connection,to:Lo(e.connection.to,e.transform)}:{...e.connection};function Oa(){return yi(za,zi)}const Ia=e=>({nodesConnectable:e.nodesConnectable,isValid:e.connection.isValid,inProgress:e.connection.inProgress,width:e.width,height:e.height});function Aa({containerStyle:e,style:n,type:o,component:i}){const{nodesConnectable:s,width:a,height:l,isValid:c,inProgress:u}=yi(Ia,zi);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(Ra,{style:n,type:o,CustomComponent:i,isValid:c})})}):null}const Ra=({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}=Oa();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]=nr(m);break;case e.ConnectionLineType.SimpleBezier:[p]=ea(m);break;case e.ConnectionLineType.Step:[p]=dr({...m,borderRadius:0});break;case e.ConnectionLineType.SmoothStep:[p]=dr(m);break;default:[p]=ar(m)}return t.jsx("path",{d:p,fill:"none",className:"react-flow__connection-path",style:n})};Ra.displayName="ConnectionLine";const Da={};function $a(e=Da){n.useRef(e),vi(),n.useEffect((()=>{}),[e])}function La({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:I,preventScrolling:A,defaultMarkerColor:R,zoomOnScroll:D,zoomOnPinch:$,panOnScroll:L,panOnScrollSpeed:T,panOnScrollMode:B,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 $a(e),$a(o),vi(),n.useRef(!1),n.useEffect((()=>{}),[]),function(e){const t=ds(),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=yi(Pa),o=vi();n.useEffect((()=>{e&&(t?.(e),o.setState({transform:[e.x,e.y,e.zoom]}))}),[e,t])}(ue),t.jsx(Bs,{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:$,zoomOnDoubleClick:V,panOnScroll:L,panOnScrollSpeed:T,panOnScrollMode:B,panOnDrag:j,defaultViewport:P,translateExtent:z,minZoom:O,maxZoom:I,onSelectionContextMenu:f,preventScrolling:A,noDragClassName:re,noWheelClassName:ie,noPanClassName:se,disableKeyboardA11y:ae,onViewportChange:de,isControlledViewport:!!ue,children:t.jsxs(Na,{children:[t.jsx(_a,{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(Aa,{style:y,type:m,component:v,containerStyle:x}),t.jsx("div",{className:"react-flow__edgelabel-renderer"}),t.jsx(Ys,{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"})]})})}La.displayName="GraphView";const Ta=n.memo(La),Ba=({nodes:t,edges:n,defaultNodes:o,defaultEdges:r,width:i,height:s,fitView:a,nodeOrigin:l}={})=>{const c=new Map,u=new Map,d=new Map,h=new Map,f=r??n??[],g=o??t??[],p=l??[0,0];Er(d,h,f),wr(g,c,u,{nodeOrigin:p,elevateNodesOnSelect:!1});let m=[0,0,1];if(a&&i&&s){const e=mo(c,{filter:e=>!(!e.width&&!e.initialWidth||!e.height&&!e.initialHeight)}),{x:t,y:n,zoom:o}=Bo(e,i,s,.5,2,.1);m=[t,n,o]}return{rfId:"1",width:0,height:0,transform:m,nodes:g,nodeLookup:c,parentLookup:u,edges:f,edgeLookup:h,connectionLookup:d,onNodesChange:null,onEdgesChange:null,hasDefaultNodes:void 0!==o,hasDefaultEdges:void 0!==r,panZoom:null,minZoom:.5,maxZoom:2,translateExtent:Jn,nodeExtent:Jn,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:e.ConnectionMode.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:p,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:Do,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:"react",debug:!1}},Va=({nodes:e,edges:t,defaultNodes:n,defaultEdges:o,width:r,height:i,fitView:s,nodeOrigin:a})=>{return l=(l,c)=>({...Ba({nodes:e,edges:t,width:r,height:i,fitView:s,nodeOrigin:a,defaultNodes:n,defaultEdges:o}),setNodes:e=>{const{nodeLookup:t,parentLookup:n,nodeOrigin:o,elevateNodesOnSelect:r}=c();wr(e,t,n,{nodeOrigin:o,elevateNodesOnSelect:r,checkEquality:!0}),l({nodes:e})},setEdges:e=>{const{connectionLookup:t,edgeLookup:n}=c();Er(t,n,e),l({edges:e})},setDefaultNodesAndEdges:(e,t)=>{if(e){const{setNodes:t}=c();t(e),l({hasDefaultNodes:!0})}if(t){const{setEdges:e}=c();e(t),l({hasDefaultEdges:!0})}},updateNodeInternals:e=>{const{triggerNodeChanges:t,nodeLookup:n,parentLookup:o,fitViewOnInit:r,fitViewDone:i,fitViewOnInitOptions:s,domNode:a,nodeOrigin:u,debug:d,fitViewSync:h}=c(),{changes:f,updatedInternals:g}=function(e,t,n,o,r){const i=o?.querySelector(".xyflow__viewport");let s=!1;if(!i)return{changes:[],updatedInternals:s};const a=[],l=window.getComputedStyle(i),{m22:c}=new window.DOMMatrixReadOnly(l.transform),u=[];for(const o of e.values()){const e=t.get(o.id);if(e)if(e.hidden)e.internals={...e.internals,handleBounds:void 0},s=!0;else{const i=Wo(o.nodeElement),l=e.measured.width!==i.width||e.measured.height!==i.height;if(i.width&&i.height&&(l||!e.internals.handleBounds||o.force)){const d=o.nodeElement.getBoundingClientRect();e.measured=i,e.internals={...e.internals,positionAbsolute:po(e,r),handleBounds:{source:Qo("source",o.nodeElement,d,c,e.id),target:Qo("target",o.nodeElement,d,c,e.id)}},e.parentId&&br(e,t,n,{nodeOrigin:r}),s=!0,l&&(a.push({id:e.id,type:"dimensions",dimensions:i}),e.expandParent&&e.parentId&&u.push({id:e.id,parentId:e.parentId,rect:Po(e,r)}))}}}if(u.length>0){const e=Cr(u,t,n,r);a.push(...e)}return{changes:a,updatedInternals:s}}(e,n,o,a,u);if(!g)return;!function(e,t,n){const o={...vr,...n};for(const n of e.values())n.parentId&&br(n,e,t,o)}(n,o,{nodeOrigin:u});let p=i;!i&&r&&(p=h({...s,nodes:s?.nodes})),l({fitViewDone:p}),f?.length>0&&(d&&console.log("React Flow: trigger node changes",f),t?.(f))},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}=c(),i=Cr(n,e,t,r);o.push(...i)}c().triggerNodeChanges(o)},triggerNodeChanges:e=>{const{onNodesChange:t,setNodes:n,nodes:o,hasDefaultNodes:r,debug:i}=c();e?.length&&(r&&n(Ui(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}=c();e?.length&&(r&&n(Qi(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}=c();t?r(e.map((e=>Ji(e,!0)))):(r(es(o,new Set([...e]),!0)),i(es(n)))},addSelectedEdges:e=>{const{multiSelectionActive:t,edgeLookup:n,nodeLookup:o,triggerNodeChanges:r,triggerEdgeChanges:i}=c();t?i(e.map((e=>Ji(e,!0)))):(i(es(n,new Set([...e]))),r(es(o,new Set,!0)))},unselectNodesAndEdges:({nodes:e,edges:t}={})=>{const{edges:n,nodes:o,triggerNodeChanges:r,triggerEdgeChanges:i}=c(),s=t||n,a=(e||o).map((e=>(e.selected=!1,Ji(e.id,!1)))),l=s.map((e=>Ji(e.id,!1)));r(a),i(l)},setMinZoom:e=>{const{panZoom:t,maxZoom:n}=c();t?.setScaleExtent([e,n]),l({minZoom:e})},setMaxZoom:e=>{const{panZoom:t,minZoom:n}=c();t?.setScaleExtent([n,e]),l({maxZoom:e})},setTranslateExtent:e=>{c().panZoom?.setTranslateExtent(e),l({translateExtent:e})},setPaneClickDistance:e=>{c().panZoom?.setClickDistance(e)},resetSelectedElements:()=>{const{edges:e,nodes:t,triggerNodeChanges:n,triggerEdgeChanges:o}=c(),r=t.reduce(((e,t)=>t.selected?[...e,Ji(t.id,!1)]:e),[]),i=e.reduce(((e,t)=>t.selected?[...e,Ji(t.id,!1)]:e),[]);n(r),o(i)},setNodeExtent:e=>{const{nodeLookup:t}=c();for(const[,n]of t){const o=Co(n.position,e);t.set(n.id,{...n,internals:{...n.internals,positionAbsolute:o}})}l({nodeExtent:e})},panBy:e=>{const{transform:t,width:n,height:o,panZoom:r,translateExtent:i}=c();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}=c();return t?wo({nodes:xo(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}=c();if(!t)return!1;const a=xo(s,e);return wo({nodes:a,width:n,height:o,panZoom:t,minZoom:r,maxZoom:i},e),a.size>0},cancelConnection:()=>{l({connection:{...ro}})},updateConnection:e=>{l({connection:e})},reset:()=>l({...Ba()})}),c=Object.is,l?fi(l,c):fi;var l,c};function ja({initialNodes:e,initialEdges:o,defaultNodes:r,defaultEdges:i,initialWidth:s,initialHeight:a,fitView:l,nodeOrigin:c,children:u}){const[d]=n.useState((()=>Va({nodes:e,edges:o,defaultNodes:r,defaultEdges:i,width:s,height:a,fitView:l,nodeOrigin:c})));return t.jsx(pi,{value:d,children:t.jsx(cs,{children:u})})}function Ha({children:e,nodes:o,edges:r,defaultNodes:i,defaultEdges:s,width:a,height:l,fitView:c,nodeOrigin:u}){return n.useContext(gi)?t.jsx(t.Fragment,{children:e}):t.jsx(ja,{initialNodes:o,initialEdges:r,defaultNodes:i,defaultEdges:s,initialWidth:a,initialHeight:l,fitView:c,nodeOrigin:u,children:e})}const Za={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0};var Xa=is((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:I,onSelectionChange:A,onSelectionDragStart:R,onSelectionDrag:D,onSelectionDragStop:$,onSelectionContextMenu:L,onSelectionStart:T,onSelectionEnd:B,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=(Vo()?"Meta":"Control"),zoomActivationKeyCode:Q=(Vo()?"Meta":"Control"),snapToGrid:J,snapGrid:ee,onlyRenderVisibleElements:te=!1,selectNodesOnDrag:ne,nodesDraggable:oe,nodesConnectable:re,nodesFocusable:ie,nodeOrigin:se=Li,edgesFocusable:ae,edgesReconnectable:le,elementsSelectable:ce=!0,defaultViewport:ue=Ti,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:Ie,onReconnect:Ae,onReconnectStart:Re,onReconnectEnd:De,onEdgeContextMenu:$e,onEdgeDoubleClick:Le,onEdgeMouseEnter:Te,onEdgeMouseMove:Be,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=Zi(),n=()=>o(t?.matches?"dark":"light");return n(),t?.addEventListener("change",n),()=>{t?.removeEventListener("change",n)}}),[e]),null!==t?t:Zi()?.matches?"dark":"light"}(pt);return t.jsx("div",{...yt,style:{...lt,...Za},ref:vt,className:r(["react-flow",l,wt]),"data-testid":"rf__wrapper",id:ct,children:t.jsxs(Ha,{nodes:o,edges:i,width:ft,height:gt,fitView:Fe,nodeOrigin:se,children:[t.jsx(Ta,{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:L,onSelectionStart:T,onSelectionEnd:B,onReconnect:Ae,onReconnectStart:Re,onReconnectEnd:De,onEdgeContextMenu:$e,onEdgeDoubleClick:Le,onEdgeMouseEnter:Te,onEdgeMouseMove:Be,onEdgeMouseLeave:Ve,reconnectRadius:je,defaultMarkerColor:me,noDragClassName:Xe,noWheelClassName:Ye,noPanClassName:We,rfId:xt,disableKeyboardA11y:tt,nodeExtent:pe,viewport:dt,onViewportChange:ht}),t.jsx(Hi,{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:I,onNodeDragStart:M,onNodeDrag:N,onNodeDragStop:P,onSelectionDrag:D,onSelectionDragStart:R,onSelectionDragStop:$,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($i,{onSelectionChange:A}),Ie,t.jsx(Pi,{proOptions:Ue,position:qe}),t.jsx(_i,{rfId:xt,disableKeyboardA11y:tt})]})})}));const Ya=e=>e.domNode?.querySelector(".react-flow__edgelabel-renderer");const Wa=e=>e.domNode?.querySelector(".react-flow__viewport-portal");const Fa=e=>e.nodes;const Ka=e=>e.edges;const Ga=e=>({x:e.transform[0],y:e.transform[1],zoom:e.transform[2]});const qa={includeHiddenNodes:!1};function Ua({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 Qa({radius:e,className:n}){return t.jsx("circle",{cx:e,cy:e,r:e,className:r(["react-flow__background-pattern","dots",n])})}var Ja;e.BackgroundVariant=void 0,(Ja=e.BackgroundVariant||(e.BackgroundVariant={})).Lines="lines",Ja.Dots="dots",Ja.Cross="cross";const el={[e.BackgroundVariant.Dots]:1,[e.BackgroundVariant.Lines]:1,[e.BackgroundVariant.Cross]:6},tl=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function nl({id:o,variant:i=e.BackgroundVariant.Dots,gap:s=20,size:a,lineWidth:l=1,offset:c=2,color:u,bgColor:d,style:h,className:f,patternClassName:g}){const p=n.useRef(null),{transform:m,patternId:y}=yi(tl,zi),v=a||el[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=w?[C,C]:S,k=x?[C/c,C/c]:[E[0]/c,E[1]/c],_=`${y}${o||""}`;return t.jsxs("svg",{className:r(["react-flow__background",f]),style:{...h,...ps,"--xy-background-color-props":d,"--xy-background-pattern-color-props":u},ref:p,"data-testid":"rf__background",children:[t.jsx("pattern",{id:_,x:m[0]%S[0],y:m[1]%S[1],width:S[0],height:S[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${k[0]},-${k[1]})`,children:x?t.jsx(Qa,{radius:C/c,className:g}):t.jsx(Ua,{dimensions:E,lineWidth:l,variant:i,className:g})}),t.jsx("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${_})`})]})}nl.displayName="Background";const ol=n.memo(nl);function rl(){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 il(){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 sl(){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 al(){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 ll(){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 cl({children:e,className:n,...o}){return t.jsx("button",{type:"button",className:r(["react-flow__controls-button",n]),...o,children:e})}const ul=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom});function dl({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=vi(),{isInteractive:y,minZoomReached:v,maxZoomReached:x}=yi(ul,zi),{zoomIn:w,zoomOut:b,fitView:S}=ds(),C="horizontal"===g?"horizontal":"vertical";return t.jsxs(Ni,{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(cl,{onClick:()=>{w(),a?.()},className:"react-flow__controls-zoomin",title:"zoom in","aria-label":"zoom in",disabled:x,children:t.jsx(rl,{})}),t.jsx(cl,{onClick:()=>{b(),l?.()},className:"react-flow__controls-zoomout",title:"zoom out","aria-label":"zoom out",disabled:v,children:t.jsx(il,{})})]}),o&&t.jsx(cl,{className:"react-flow__controls-fitview",onClick:()=>{S(s),c?.()},title:"fit view","aria-label":"fit view",children:t.jsx(sl,{})}),i&&t.jsx(cl,{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(ll,{}):t.jsx(al,{})}),h]})}dl.displayName="Controls";const hl=n.memo(dl);const fl=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})})),gl=e=>e.nodes.map((e=>e.id)),pl=e=>e instanceof Function?e:()=>e;const ml=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}=yi((t=>{const n=t.nodeLookup.get(e),{x:o,y:r}=n.internals.positionAbsolute;return{node:n,x:o,y:r}}),zi);if(!u||u.hidden||!Zo(u))return null;const{width:f,height:g}=Ho(u);return 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})}));var yl=n.memo((function({nodeStrokeColor:e,nodeColor:n,nodeClassName:o="",nodeBorderRadius:r=5,nodeStrokeWidth:i,nodeComponent:s=fl,onClick:a}){const l=yi(gl,zi),c=pl(n),u=pl(e),d=pl(o),h="undefined"==typeof window||window.chrome?"crispEdges":"geometricPrecision";return t.jsx(t.Fragment,{children:l.map((e=>t.jsx(ml,{id:e,nodeColorFunc:c,nodeStrokeColorFunc:u,nodeClassNameFunc:d,nodeBorderRadius:r,nodeStrokeWidth:i,NodeComponent:s,onClick:a,shapeRendering:h},e)))})}));const vl=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?Oo(mo(e.nodeLookup),t):t,rfId:e.rfId,panZoom:e.panZoom,translateExtent:e.translateExtent,flowWidth:e.width,flowHeight:e.height}};function xl({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=vi(),k=n.useRef(null),{boundingRect:_,viewBB:M,rfId:N,panZoom:P,translateExtent:z,flowWidth:O,flowHeight:I}=yi(vl,zi),A=e?.width??200,R=e?.height??150,D=_.width/A,$=_.height/R,L=Math.max(D,$),T=L*A,B=L*R,V=C*L,j=_.x-(T-_.width)/2-V,H=_.y-(B-_.height)/2-V,Z=T+2*V,X=B+2*V,Y=`react-flow__minimap-desc-${N}`,W=n.useRef(0),F=n.useRef();W.current=L,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:I,inversePan:b,pannable:v,zoomStep:S,zoomable:x})}),[v,x,b,S,z,O,I]);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(Ni,{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*L: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:A,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(yl,{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"})]})})}xl.displayName="MiniMap";const wl=n.memo(xl);const bl=n.memo((function({nodeId:e,position:o,variant:i=Zr.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=Ps(),w="string"==typeof e?e:x,b=vi(),S=n.useRef(null),C=i===Zr.Line?"right":"bottom-right",E=o??C,k=n.useRef(null);n.useEffect((()=>{if(S.current&&w)return k.current||(k.current=Jr({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=Cr([{id:l.id,parentId:l.parentId,rect:{width:n,height:c,...Xo({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===Zr.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 Sl=e=>e.domNode?.querySelector(".react-flow__renderer");function Cl({children:e}){const t=yi(Sl);return t?o.createPortal(e,t):null}const El=(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,kl=(e,t)=>{if(e.size!==t.size)return!1;for(const[n,o]of e)if(El(o,t.get(n)))return!1;return!0},_l=e=>({x:e.transform[0],y:e.transform[1],zoom:e.transform[2],selectedNodesCount:e.nodes.filter((e=>e.selected)).length});e.Background=ol,e.BaseEdge=Qs,e.BezierEdge=ga,e.ControlButton=cl,e.Controls=hl,e.EdgeLabelRenderer=function({children:e}){const t=yi(Ya);return t?o.createPortal(e,t):null},e.EdgeText=Us,e.Handle=Os,e.MiniMap=wl,e.NodeResizeControl=bl,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:[Yr.map((n=>t.jsx(bl,{className:i,style:s,nodeId:e,position:n,variant:Zr.Line,color:a,minWidth:l,minHeight:c,maxWidth:u,maxHeight:d,onResizeStart:g,keepAspectRatio:h,shouldResize:f,onResize:p,onResizeEnd:m},n))),Xr.map((n=>t.jsx(bl,{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=Ps(),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=yi(g,kl),{x:m,y:y,zoom:v,selectedNodesCount:x}=yi(_l,zi);if(!("boolean"==typeof l?l:1===p.size&&p.values().next().value.selected&&1===x)||!p.size)return null;const w=mo(p),b=Array.from(p.values()),S=Math.max(...b.map((e=>e.internals.z+1))),C={position:"absolute",transform:yr(w,{x:m,y:y,zoom:v},c,u,d),zIndex:S,...a};return t.jsx(Cl,{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=Ni,e.ReactFlow=Xa,e.ReactFlowProvider=ja,e.SimpleBezierEdge=na,e.SmoothStepEdge=ia,e.StepEdge=la,e.StraightEdge=da,e.ViewportPortal=function({children:e}){const t=yi(Wa);return t?o.createPortal(e,t):null},e.addEdge=sr,e.applyEdgeChanges=Qi,e.applyNodeChanges=Ui,e.getBezierEdgeCenter=Jo,e.getBezierPath=nr,e.getConnectedEdges=vo,e.getEdgeCenter=or,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=(e,t={nodeOrigin:[0,0]})=>{if(0===e.length)return{x:0,y:0,width:0,height:0};const n=e.reduce(((e,n)=>{const o=zo(n,t.nodeOrigin);return _o(e,o)}),{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return No(n)},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=ea,e.getSmoothStepPath=dr,e.getStraightPath=ar,e.getViewportForBounds=Bo,e.isEdge=rs,e.isNode=os,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?ir(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=Oa,e.useEdges=function(){return yi(Ka,zi)},e.useEdgesState=function(e){const[t,o]=n.useState(e),r=n.useCallback((e=>o((t=>Qi(e,t)))),[]);return[t,o,r]},e.useHandleConnections=function({type:e,id:t=null,nodeId:o,onConnect:r,onDisconnect:i}){const s=Ps(),a=o??s,l=n.useRef(null),c=yi((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 yi(n.useCallback((t=>t.nodeLookup.get(e)),[e]),zi)},e.useKeyPress=Yi,e.useNodeId=Ps,e.useNodes=function(){return yi(Fa,zi)},e.useNodesData=function(e){return yi(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]),kr)},e.useNodesInitialized=function(e=qa){return yi((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||!Zo(o.userNode)))return!1;return!0})(e))},e.useNodesState=function(e){const[t,o]=n.useState(e),r=n.useCallback((e=>o((t=>Ui(e,t)))),[]);return[t,o,r]},e.useOnSelectionChange=function({onChange:e}){const t=vi();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=vi();n.useEffect((()=>{r.setState({onViewportChangeStart:e})}),[e]),n.useEffect((()=>{r.setState({onViewportChange:t})}),[t]),n.useEffect((()=>{r.setState({onViewportChangeEnd:o})}),[o])},e.useReactFlow=ds,e.useStore=yi,e.useStoreApi=vi,e.useUpdateNodeInternals=function(){const e=vi();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)))}),[])},e.useViewport=function(){return yi(Ga,zi)}}));
10
+ */ri.exports=function(){if(oi)return ii;oi=1;var e=n,t=li(),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 ii.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},ii}();var ci=ei(ri.exports);const ui=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:di}=ci;function hi(e,t=e.getState,o){const r=di(e.subscribe,e.getState,e.getServerState||e.getState,t,o);return n.useDebugValue(r),r}const fi=(e,t)=>{const n=(e=>e?ui(e):ui)(e),o=(e,o=t)=>hi(n,e,o);return Object.assign(o,n),o},gi=n.createContext(null),pi=gi.Provider,mi=Qn.error001();function yi(e,t){const o=n.useContext(gi);if(null===o)throw new Error(mi);return hi(o,e,t)}function vi(){const e=n.useContext(gi);if(null===e)throw new Error(mi);return n.useMemo((()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe})),[e])}const xi={display:"none"},wi={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},bi="react-flow__node-desc",Si="react-flow__edge-desc",Ci="react-flow__aria-live",Ei=e=>e.ariaLiveMessage;function ki({rfId:e}){const n=yi(Ei);return t.jsx("div",{id:`${Ci}-${e}`,"aria-live":"assertive","aria-atomic":"true",style:wi,children:n})}function _i({rfId:e,disableKeyboardA11y:n}){return t.jsxs(t.Fragment,{children:[t.jsxs("div",{id:`${bi}-${e}`,style:xi,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:`${Si}-${e}`,style:xi,children:"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel."}),!n&&t.jsx(ki,{rfId:e})]})}const Mi=e=>e.userSelectionActive?"none":"all";function Ni({position:e="top-left",children:n,className:o,style:i,...s}){const a=yi(Mi),l=`${e}`.split("-");return t.jsx("div",{className:r(["react-flow__panel",o,...l]),style:{...i,pointerEvents:a},...s,children:n})}function Pi({proOptions:e,position:n="bottom-right"}){return e?.hideAttribution?null:t.jsx(Ni,{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 zi(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 Oi=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}},Ii=e=>e.id;function Ai(e,t){return zi(e.selectedNodes.map(Ii),t.selectedNodes.map(Ii))&&zi(e.selectedEdges.map(Ii),t.selectedEdges.map(Ii))}function Ri({onSelectionChange:e}){const t=vi(),{selectedNodes:o,selectedEdges:r}=yi(Oi,Ai);return n.useEffect((()=>{const n={nodes:o,edges:r};e?.(n),t.getState().onSelectionChangeHandlers.forEach((e=>e(n)))}),[o,r,e]),null}const Di=e=>!!e.onSelectionChangeHandlers;function $i({onSelectionChange:e}){const n=yi(Di);return e||n?t.jsx(Ri,{onSelectionChange:e}):null}const Li=[0,0],Ti={x:0,y:0,zoom:1},Bi=["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"],Vi=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}),ji={translateExtent:Jn,nodeOrigin:Li,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:"nopan",rfId:"1",paneClickDistance:0};function Hi(e){const{setNodes:t,setEdges:o,setMinZoom:r,setMaxZoom:i,setTranslateExtent:s,setNodeExtent:a,reset:l,setDefaultNodesAndEdges:c,setPaneClickDistance:u}=yi(Vi,zi),d=vi();n.useEffect((()=>(c(e.defaultNodes,e.defaultEdges),()=>{h.current=ji,l()})),[]);const h=n.useRef(ji);return n.useEffect((()=>{for(const n of Bi){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}),Bi.map((t=>e[t]))),null}function Zi(){return"undefined"!=typeof window&&window.matchMedia?window.matchMedia("(prefers-color-scheme: dark)"):null}const Xi="undefined"!=typeof document?document:null;function Yi(e=null,t={target:Xi,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||Xi;if(null!==e){const e=e=>{i.current=e.ctrlKey||e.metaKey||e.shiftKey;if((!i.current||i.current&&!t.actInsideInputWithModifier)&&Go(e))return!1;const n=Fi(e.code,l);s.current.add(e[n]),Wi(a,s.current,!1)&&(e.preventDefault(),r(!0))},o=e=>{if((!i.current||i.current&&!t.actInsideInputWithModifier)&&Go(e))return!1;const n=Fi(e.code,l);Wi(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 Wi(e,t,n){return e.filter((e=>n||e.length===t.size)).some((e=>e.every((e=>t.has(e)))))}function Fi(e,t){return t.includes(e)?"code":"key"}const Ki=()=>{const e=vi();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,width:o,height:r,minZoom:i,maxZoom:s,panZoom:a}=e.getState(),l=xo(n,t);return a?wo({nodes:l,width:o,height:r,minZoom:i,maxZoom:s,panZoom:a},t):Promise.resolve(!1)},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=Bo(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 Lo(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=To(t,n);return{x:s.x+r,y:s.y+i}}})),[])};function Gi(e,t){const n=[],o=new Map;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 n.push(t.item);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)qi(e,r);n.push(r)}return n}function qi(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 Ui(e,t){return Gi(e,t)}function Qi(e,t){return Gi(e,t)}function Ji(e,t){return{id:e,type:"select",selected:t}}function es(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(Ji(i.id,e)))}return o}function ts({items:e=[],lookup:t}){const n=[],o=new Map(e.map((e=>[e.id,e])));for(const o of e){const e=t.get(o.id),r=e?.internals?.userNode??e;void 0!==r&&r!==o&&n.push({id:o.id,item:o,type:"replace"}),void 0===r&&n.push({item:o,type:"add"})}for(const[e]of t){void 0===o.get(e)&&n.push({id:e,type:"remove"})}return n}function ns(e){return{id:e.id,type:"remove"}}const os=e=>(e=>"id"in e&&"position"in e&&!("source"in e)&&!("target"in e))(e),rs=e=>fo(e);function is(e){return n.forwardRef(e)}const ss="undefined"!=typeof window?n.useLayoutEffect:n.useEffect;function as(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 ss((()=>{if(!t)return void r.reset();const n=r.get();n.length&&(e(n),r.reset()),o(!1)}),[t]),r}const ls=n.createContext(null);function cs({children:e}){const o=vi(),r=as(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(ts({items:a,lookup:s}))}),[])),i=as(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(ts({items:a,lookup:s}))}),[])),s=n.useMemo((()=>({nodeQueue:r,edgeQueue:i})),[]);return t.jsx(ls.Provider,{value:s,children:e})}const us=e=>!!e.panZoom;function ds(){const e=Ki(),t=vi(),o=function(){const e=n.useContext(ls);if(!e)throw new Error("useBatchContext must be used within a BatchProvider");return e}(),r=yi(us),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=os(e)?e:n.get(e.id),i=r.parentId?Xo(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 Po(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&&os(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&&rs(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=vo(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(ns);s?.(h),l(e)}if(g){const e=d.map(ns);i?.(d),a(e)}return(g||f)&&c?.({nodes:d,edges:h}),{deletedNodes:d,deletedEdges:h}},getIntersectingNodes:(e,n=!0,o)=>{const r=Ao(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=Po(a?o:i),c=Io(l,s);return n&&c>0||c>=s.width*s.height})):[]},isNodeIntersecting:(e,t,n=!0)=>{const o=Ao(e)?e:i(e);if(!o)return!1;const r=Io(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)}}}),[]);return n.useMemo((()=>({...i,...e,viewportInitialized:r})),[r])}const hs=e=>e.selected,fs={actInsideInputWithModifier:!1},gs="undefined"!=typeof window?window:void 0;const ps={position:"absolute",width:"100%",height:"100%",top:0,left:0},ms=e=>({userSelectionActive:e.userSelectionActive,lib:e.lib});function ys({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=vi(),E=n.useRef(null),{userSelectionActive:k,lib:_}=yi(ms,zi),M=Yi(p),N=n.useRef();return function(e){const t=vi();n.useEffect((()=>{const n=()=>{if(!e.current)return!1;const n=Wo(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),n.useEffect((()=>{if(E.current){N.current=Hr({domNode:E.current,minZoom:f,maxZoom:g,translateExtent:h,viewport:d,paneClickDistance:S,onTransformChange:e=>{w?.({x:e[0],y:e[1],zoom:e[2]}),b||C.setState({transform:e})},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:_})}),[o,r,i,s,a,l,c,u,M,m,x,k,v,_]),t.jsx("div",{className:"react-flow__renderer",ref:E,style:ps,children:y})}const vs=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function xs(){const{userSelectionActive:e,userSelectionRect:n}=yi(vs,zi);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 ws=(e,t)=>n=>{n.target===t.current&&e?.(n)},bs=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,dragging:e.paneDragging});function Ss({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=vi(),w=n.useRef(0),b=n.useRef(0),S=n.useRef(),C=n.useRef(new Map),{userSelectionActive:E,elementsSelectable:k,dragging:_}=yi(bs,zi),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;return t.jsxs("div",{className:r(["react-flow__pane",{draggable:a,dragging:_,selection:o}]),onClick:M?void 0:ws(z,v),onContextMenu:ws((e=>{Array.isArray(a)&&a?.includes(2)?e.preventDefault():h?.(e)}),v),onWheel:ws(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}=Uo(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}=Uo(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=yo(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(es(i,m,!0))}if(b.current!==p.size){b.current=p.size;l(es(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:ps,children:[y,t.jsx(xs,{})]})}function Cs({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 Es({nodeRef:e,disabled:t=!1,noDragClassName:o,handleSelector:r,nodeId:i,isSelectable:s,nodeClickDistance:a}){const l=vi(),[c,u]=n.useState(!1),d=n.useRef();return n.useEffect((()=>{d.current=Pr({getStoreItems:()=>l.getState(),onNodeMouseDown:t=>{Cs({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 ks=e=>t=>t.selected&&(t.draggable||e&&void 0===t.draggable);function _s(){const e=vi();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=ks(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=$o(t,r));const{position:i,positionAbsolute:a}=bo({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 Ms=n.createContext(null),Ns=Ms.Provider;Ms.Consumer;const Ps=()=>n.useContext(Ms),zs=e=>({connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName,rfId:e.rfId});const Os=n.memo(is((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=vi(),w=Ps(),{connectOnClick:b,noPanClassName:S,rfId:C}=yi(zs,zi),{connectingFrom:E,connectingTo:k,clickConnecting:_,isPossibleEndHandle:M,connectionInProcess:N,valid:P}=yi(((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),zi);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(sr(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();Rr.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}=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 d=Fo(e.target),h=i||l,{connection:f,isValid:g}=Rr.isValid(e.nativeEvent,{handle:{nodeId:w,id:y,type:n},connectionMode:s,fromNodeId:r.nodeId,fromHandleId:r.id||null,fromType:r.type,isValidConnection:h,flowId:u,doc:d,lib:c});g&&f&&z(f),o?.(e),x.setState({connectionClickStartHandle:null})}:void 0,ref:m,...p,children:d})})));const Is={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},As={input:function({data:n,isConnectable:o,sourcePosition:r=e.Position.Bottom}){return t.jsxs(t.Fragment,{children:[n?.label,t.jsx(Os,{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(Os,{type:"target",position:r,isConnectable:o}),n?.label,t.jsx(Os,{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(Os,{type:"target",position:r,isConnectable:o}),n?.label]})},group:function(){return null}};const Rs=e=>{const{width:t,height:n,x:o,y:r}=mo(e.nodeLookup,{filter:e=>!!e.selected});return{width:Ro(t)?t:null,height:Ro(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 Ds({onSelectionContextMenu:e,noPanClassName:o,disableKeyboardA11y:i}){const s=vi(),{width:a,height:l,transformString:c,userSelectionActive:u}=yi(Rs,zi),d=_s(),h=n.useRef(null);if(n.useEffect((()=>{i||h.current?.focus({preventScroll:!0})}),[i]),Es({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(Is,e.key)&&d({direction:Is[e.key],factor:e.shiftKey?4:1})},style:{width:a,height:l}})})}const $s="undefined"!=typeof window?window:void 0,Ls=e=>({nodesSelectionActive:e.nodesSelectionActive,userSelectionActive:e.userSelectionActive});function Ts({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:I,noWheelClassName:A,noPanClassName:R,disableKeyboardA11y:D,onViewportChange:$,isControlledViewport:L}){const{nodesSelectionActive:T,userSelectionActive:B}=yi(Ls),V=Yi(d,{target:$s}),j=Yi(y,{target:$s}),H=j||_,Z=j||S,X=h&&!0!==H,Y=V||B||X;return function({deleteKeyCode:e,multiSelectionKeyCode:t}){const o=vi(),{deleteElements:r}=ds(),i=Yi(e,fs),s=Yi(t,{target:gs});n.useEffect((()=>{if(i){const{edges:e,nodes:t}=o.getState();r({nodes:t.filter(hs),edges:e.filter(hs)}),o.setState({nodesSelectionActive:!1})}}),[i]),n.useEffect((()=>{o.setState({multiSelectionActive:s})}),[s])}({deleteKeyCode:u,multiSelectionKeyCode:m}),t.jsx(ys,{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:A,noPanClassName:R,onViewportChange:$,isControlledViewport:L,paneClickDistance:c,children:t.jsxs(Ss,{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,T&&t.jsx(Ds,{onSelectionContextMenu:I,noPanClassName:R,disableKeyboardA11y:D})]})})}Ts.displayName="FlowRenderer";const Bs=n.memo(Ts),Vs=e=>t=>e?yo(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 js=e=>e.updateNodeInternals;function Hs({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}=yi((t=>{const n=t.nodeLookup.get(e),o=t.parentLookup.has(e);return{node:n,internals:n.internals,isParent:o}}),zi);let _=C.type||"default",M=x?.[_]||As[_];void 0===M&&(S?.("003",Qn.error003(_)),_="default",M=As.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),I=vi(),A=Zo(C),R=function({node:e,nodeType:t,hasDimensions:o,resizeObserver:r}){const i=vi(),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:A,resizeObserver:g}),D=Es({nodeRef:R,disabled:C.hidden||!N,noDragClassName:p,handleSelector:C.dragHandle,nodeId:e,isSelectable:P,nodeClickDistance:b}),$=_s();if(C.hidden)return null;const L=Ho(C),T=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),B=w?Co(E.positionAbsolute,w):E.positionAbsolute,V=P||N||o||i||s||a,j=i?e=>i(e,{...E.userNode}):void 0,H=s?e=>s(e,{...E.userNode}):void 0,Z=a?e=>a(e,{...E.userNode}):void 0,X=l?e=>l(e,{...E.userNode}):void 0,Y=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(${B.x}px,${B.y}px)`,pointerEvents:V?"all":"none",visibility:A?"visible":"hidden",...C.style,...T},"data-id":e,"data-testid":`rf__node-${e}`,onMouseEnter:j,onMouseMove:H,onMouseLeave:Z,onContextMenu:X,onClick:t=>{const{selectNodesOnDrag:n,nodeDragThreshold:r}=I.getState();P&&(!n||!N||r>0)&&Cs({id:e,store:I,nodeRef:R}),o&&o(t,{...E.userNode})},onDoubleClick:Y,onKeyDown:O?t=>{if(!Go(t.nativeEvent)&&!y)if(eo.includes(t.key)&&P){const n="Escape"===t.key;Cs({id:e,store:I,unselect:n,nodeRef:R})}else N&&C.selected&&Object.prototype.hasOwnProperty.call(Is,t.key)&&(I.setState({ariaLiveMessage:`Moved selected node ${t.key.replace("Arrow","").toLowerCase()}. New position, x: ${~~B.x}, y: ${~~B.y}`}),$({direction:Is[t.key],factor:t.shiftKey?4:1}))}:void 0,tabIndex:O?0:void 0,role:O?"button":void 0,"aria-describedby":y?void 0:`${bi}-${v}`,"aria-label":C.ariaLabel,children:t.jsx(Ns,{value:e,children:t.jsx(M,{id:e,data:C.data,type:_,positionAbsoluteX:B.x,positionAbsoluteY:B.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,...L})})})}const Zs=e=>({nodesDraggable:e.nodesDraggable,nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,onError:e.onError});function Xs(e){const{nodesDraggable:o,nodesConnectable:r,nodesFocusable:i,elementsSelectable:s,onError:a}=yi(Zs,zi),l=(c=e.onlyRenderVisibleElements,yi(n.useCallback(Vs(c),[c]),zi));var c;const u=function(){const e=yi(js),[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:ps,children:l.map((n=>t.jsx(Hs,{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)))})}Xs.displayName="NodeRenderer";const Ys=n.memo(Xs);const Ws={[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 Fs=({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=vi();return n.useMemo((()=>Object.prototype.hasOwnProperty.call(Ws,e)?Ws[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},Ks=({defaultColor:e,rfId:o})=>{const r=yi((e=>e.edges)),i=yi((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=mr(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(Fs,{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};Ks.displayName="MarkerDefinitions";var Gs=n.memo(Ks);function qs({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}qs.displayName="EdgeText";const Us=n.memo(qs);function Qs({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&&Ro(o)&&Ro(i)?t.jsx(Us,{x:o,y:i,label:s,labelStyle:a,labelShowBg:l,labelBgStyle:c,labelBgPadding:u,labelBgBorderRadius:d}):null]})}function Js({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 ea({sourceX:t,sourceY:n,sourcePosition:o=e.Position.Bottom,targetX:r,targetY:i,targetPosition:s=e.Position.Top}){const[a,l]=Js({pos:o,x1:t,y1:n,x2:r,y2:i}),[c,u]=Js({pos:s,x1:r,y1:i,x2:t,y2:n}),[d,h,f,g]=Jo({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 ta(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]=ea({sourceX:r,sourceY:i,sourcePosition:l,targetX:s,targetY:a,targetPosition:c}),C=o.isInternal?void 0:n;return t.jsx(Qs,{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 na=ta({isInternal:!1}),oa=ta({isInternal:!0});function ra(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]=dr({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(Qs,{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})}))}na.displayName="SimpleBezierEdge",oa.displayName="SimpleBezierEdgeInternal";const ia=ra({isInternal:!1}),sa=ra({isInternal:!0});function aa(e){return n.memo((({id:o,...r})=>{const i=e.isInternal?void 0:o;return t.jsx(ia,{...r,id:i,pathOptions:n.useMemo((()=>({borderRadius:0,offset:r.pathOptions?.offset})),[r.pathOptions?.offset])})}))}ia.displayName="SmoothStepEdge",sa.displayName="SmoothStepEdgeInternal";const la=aa({isInternal:!1}),ca=aa({isInternal:!0});function ua(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]=ar({sourceX:o,sourceY:r,targetX:i,targetY:s}),w=e.isInternal?void 0:n;return t.jsx(Qs,{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})}))}la.displayName="StepEdge",ca.displayName="StepEdgeInternal";const da=ua({isInternal:!1}),ha=ua({isInternal:!0});function fa(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]=nr({sourceX:r,sourceY:i,sourcePosition:l,targetX:s,targetY:a,targetPosition:c,curvature:x?.curvature}),E=o.isInternal?void 0:n;return t.jsx(Qs,{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})}))}da.displayName="StraightEdge",ha.displayName="StraightEdgeInternal";const ga=fa({isInternal:!1}),pa=fa({isInternal:!0});ga.displayName="BezierEdge",pa.displayName="BezierEdgeInternal";const ma={default:pa,straight:ha,step:ca,smoothstep:sa,simplebezier:oa},ya={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null},va=(t,n,o)=>o===e.Position.Left?t-n:o===e.Position.Right?t+n:t,xa=(t,n,o)=>o===e.Position.Top?t-n:o===e.Position.Bottom?t+n:t,wa="react-flow__edgeupdater";function ba({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([wa,`${wa}-${c}`]),cx:va(n,i,e),cy:xa(o,i,e),r:i,stroke:"transparent",fill:"transparent"})}function Sa({isReconnectable:e,reconnectRadius:n,edge:o,targetHandleId:r,sourceHandleId:i,sourceX:s,sourceY:a,targetX:l,targetY:c,sourcePosition:u,targetPosition:d,onReconnect:h,onReconnectStart:f,onReconnectEnd:g,setReconnecting:p,setUpdateHover:m}){const y=vi(),v=(e,t)=>{if(0!==e.button)return;const{autoPanOnConnect:n,domNode:s,isValidConnection:a,connectionMode:l,connectionRadius:c,lib:u,onConnectStart:d,onConnectEnd:m,cancelConnection:v,nodeLookup:x,rfId:w,panBy:b,updateConnection:S}=y.getState(),C=t?o.target:o.source,E=(t?r:i)||null,k=t?"target":"source",_=t;p(!0),f?.(e,o,k);Rr.onPointerDown(e.nativeEvent,{autoPanOnConnect:n,connectionMode:l,connectionRadius:c,domNode:s,handleId:E,nodeId:C,nodeLookup:x,isTarget:_,edgeUpdaterType:k,lib:u,flowId:w,cancelConnection:v,panBy:b,isValidConnection:a,onConnect:e=>h?.(o,e),onConnectStart:d,onConnectEnd:m,onReconnectEnd:e=>{p(!1),g?.(e,o,k)},updateConnection:S,getTransform:()=>y.getState().transform,getFromHandle:()=>y.getState().connection.fromHandle})},x=()=>m(!0),w=()=>m(!1);return t.jsxs(t.Fragment,{children:[("source"===e||!0===e)&&t.jsx(ba,{position:u,centerX:s,centerY:a,radius:n,onMouseDown:e=>v(e,!0),onMouseEnter:x,onMouseOut:w,type:"source"}),("target"===e||!0===e)&&t.jsx(ba,{position:d,centerX:l,centerY:c,radius:n,onMouseDown:e=>v(e,!1),onMouseEnter:x,onMouseOut:w,type:"target"})]})}function Ca({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=yi((e=>e.edgeLookup.get(o)));const E=yi((e=>e.defaultEdgeOptions));C=E?{...E,...C}:C;let k=C.type||"default",_=x?.[k]||ma[k];void 0===_&&(b?.("011",Qn.error011(k)),k="default",_=ma.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,I]=n.useState(!1),[A,R]=n.useState(!1),D=vi(),{zIndex:$,sourceX:L,sourceY:T,targetX:B,targetY:V,sourcePosition:j,targetPosition:H}=yi(n.useCallback((t=>{const n=t.nodeLookup.get(C.source),r=t.nodeLookup.get(C.target);if(!n||!r)return{zIndex:C.zIndex,...ya};const i=function(t){const{sourceNode:n,targetNode:o}=t;if(!hr(n)||!hr(o))return null;const r=n.internals.handleBounds||fr(n.handles),i=o.internals.handleBounds||fr(o.handles),s=pr(r?.source??[],t.sourceHandle),a=pr(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=gr(n,s,l),d=gr(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||ya}}),[C.source,C.target,C.sourceHandle,C.targetHandle,C.selected,C.zIndex]),zi),Z=n.useMemo((()=>C.markerStart?`url('#${mr(C.markerStart,v)}')`:void 0),[C.markerStart,v]),X=n.useMemo((()=>C.markerEnd?`url('#${mr(C.markerEnd,v)}')`:void 0),[C.markerEnd,v]);if(C.hidden||null===L||null===T||null===B||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:$},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?`${Si}-${v}`:void 0,ref:z,children:[!A&&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:L,sourceY:T,targetX:B,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(Sa,{edge:C,isReconnectable:N,reconnectRadius:g,onReconnect:p,onReconnectStart:m,onReconnectEnd:y,sourceX:L,sourceY:T,targetX:B,targetY:V,sourcePosition:j,targetPosition:H,setUpdateHover:I,setReconnecting:R,sourceHandleId:C.sourceHandle,targetHandleId:C.targetHandle})]})})}const Ea=e=>({width:e.width,height:e.height,edgesFocusable:e.edgesFocusable,edgesReconnectable:e.edgesReconnectable,elementsSelectable:e.elementsSelectable,connectionMode:e.connectionMode,onError:e.onError});function ka({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}=yi(Ea,zi),S=(C=o,yi(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&&rr({sourceNode:o,targetNode:r,width:e.width,height:e.height,transform:e.transform})&&t.push(n.id)}return t}),[C]),zi));var C;return t.jsxs("div",{className:"react-flow__edges",children:[t.jsx(Gs,{defaultColor:e,rfId:r}),S.map((e=>t.jsx(Ca,{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)))]})}ka.displayName="EdgeRenderer";const _a=n.memo(ka),Ma=e=>`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`;function Na({children:e}){const n=yi(Ma);return t.jsx("div",{className:"react-flow__viewport xyflow__viewport react-flow__container",style:{transform:n},children:e})}const Pa=e=>e.panZoom?.syncViewport;const za=e=>e.connection.inProgress?{...e.connection,to:Lo(e.connection.to,e.transform)}:{...e.connection};function Oa(){return yi(za,zi)}const Ia=e=>({nodesConnectable:e.nodesConnectable,isValid:e.connection.isValid,inProgress:e.connection.inProgress,width:e.width,height:e.height});function Aa({containerStyle:e,style:n,type:o,component:i}){const{nodesConnectable:s,width:a,height:l,isValid:c,inProgress:u}=yi(Ia,zi);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(Ra,{style:n,type:o,CustomComponent:i,isValid:c})})}):null}const Ra=({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}=Oa();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]=nr(m);break;case e.ConnectionLineType.SimpleBezier:[p]=ea(m);break;case e.ConnectionLineType.Step:[p]=dr({...m,borderRadius:0});break;case e.ConnectionLineType.SmoothStep:[p]=dr(m);break;default:[p]=ar(m)}return t.jsx("path",{d:p,fill:"none",className:"react-flow__connection-path",style:n})};Ra.displayName="ConnectionLine";const Da={};function $a(e=Da){n.useRef(e),vi(),n.useEffect((()=>{}),[e])}function La({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:I,preventScrolling:A,defaultMarkerColor:R,zoomOnScroll:D,zoomOnPinch:$,panOnScroll:L,panOnScrollSpeed:T,panOnScrollMode:B,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 $a(e),$a(o),vi(),n.useRef(!1),n.useEffect((()=>{}),[]),function(e){const t=ds(),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=yi(Pa),o=vi();n.useEffect((()=>{e&&(t?.(e),o.setState({transform:[e.x,e.y,e.zoom]}))}),[e,t])}(ue),t.jsx(Bs,{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:$,zoomOnDoubleClick:V,panOnScroll:L,panOnScrollSpeed:T,panOnScrollMode:B,panOnDrag:j,defaultViewport:P,translateExtent:z,minZoom:O,maxZoom:I,onSelectionContextMenu:f,preventScrolling:A,noDragClassName:re,noWheelClassName:ie,noPanClassName:se,disableKeyboardA11y:ae,onViewportChange:de,isControlledViewport:!!ue,children:t.jsxs(Na,{children:[t.jsx(_a,{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(Aa,{style:y,type:m,component:v,containerStyle:x}),t.jsx("div",{className:"react-flow__edgelabel-renderer"}),t.jsx(Ys,{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"})]})})}La.displayName="GraphView";const Ta=n.memo(La),Ba=({nodes:t,edges:n,defaultNodes:o,defaultEdges:r,width:i,height:s,fitView:a,nodeOrigin:l}={})=>{const c=new Map,u=new Map,d=new Map,h=new Map,f=r??n??[],g=o??t??[],p=l??[0,0];Er(d,h,f),wr(g,c,u,{nodeOrigin:p,elevateNodesOnSelect:!1});let m=[0,0,1];if(a&&i&&s){const e=mo(c,{filter:e=>!(!e.width&&!e.initialWidth||!e.height&&!e.initialHeight)}),{x:t,y:n,zoom:o}=Bo(e,i,s,.5,2,.1);m=[t,n,o]}return{rfId:"1",width:0,height:0,transform:m,nodes:g,nodeLookup:c,parentLookup:u,edges:f,edgeLookup:h,connectionLookup:d,onNodesChange:null,onEdgesChange:null,hasDefaultNodes:void 0!==o,hasDefaultEdges:void 0!==r,panZoom:null,minZoom:.5,maxZoom:2,translateExtent:Jn,nodeExtent:Jn,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:e.ConnectionMode.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:p,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:Do,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:"react",debug:!1}},Va=({nodes:e,edges:t,defaultNodes:n,defaultEdges:o,width:r,height:i,fitView:s,nodeOrigin:a})=>{return l=(l,c)=>({...Ba({nodes:e,edges:t,width:r,height:i,fitView:s,nodeOrigin:a,defaultNodes:n,defaultEdges:o}),setNodes:e=>{const{nodeLookup:t,parentLookup:n,nodeOrigin:o,elevateNodesOnSelect:r}=c();wr(e,t,n,{nodeOrigin:o,elevateNodesOnSelect:r,checkEquality:!0}),l({nodes:e})},setEdges:e=>{const{connectionLookup:t,edgeLookup:n}=c();Er(t,n,e),l({edges:e})},setDefaultNodesAndEdges:(e,t)=>{if(e){const{setNodes:t}=c();t(e),l({hasDefaultNodes:!0})}if(t){const{setEdges:e}=c();e(t),l({hasDefaultEdges:!0})}},updateNodeInternals:e=>{const{triggerNodeChanges:t,nodeLookup:n,parentLookup:o,fitViewOnInit:r,fitViewDone:i,fitViewOnInitOptions:s,domNode:a,nodeOrigin:u,debug:d,fitViewSync:h}=c(),{changes:f,updatedInternals:g}=function(e,t,n,o,r){const i=o?.querySelector(".xyflow__viewport");let s=!1;if(!i)return{changes:[],updatedInternals:s};const a=[],l=window.getComputedStyle(i),{m22:c}=new window.DOMMatrixReadOnly(l.transform),u=[];for(const o of e.values()){const e=t.get(o.id);if(e)if(e.hidden)e.internals={...e.internals,handleBounds:void 0},s=!0;else{const i=Wo(o.nodeElement),l=e.measured.width!==i.width||e.measured.height!==i.height;if(i.width&&i.height&&(l||!e.internals.handleBounds||o.force)){const d=o.nodeElement.getBoundingClientRect();e.measured=i,e.internals={...e.internals,positionAbsolute:po(e,r),handleBounds:{source:Qo("source",o.nodeElement,d,c,e.id),target:Qo("target",o.nodeElement,d,c,e.id)}},e.parentId&&br(e,t,n,{nodeOrigin:r}),s=!0,l&&(a.push({id:e.id,type:"dimensions",dimensions:i}),e.expandParent&&e.parentId&&u.push({id:e.id,parentId:e.parentId,rect:Po(e,r)}))}}}if(u.length>0){const e=Cr(u,t,n,r);a.push(...e)}return{changes:a,updatedInternals:s}}(e,n,o,a,u);if(!g)return;!function(e,t,n){const o={...vr,...n};for(const n of e.values())n.parentId&&br(n,e,t,o)}(n,o,{nodeOrigin:u});let p=i;!i&&r&&(p=h({...s,nodes:s?.nodes})),l({fitViewDone:p}),f?.length>0&&(d&&console.log("React Flow: trigger node changes",f),t?.(f))},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}=c(),i=Cr(n,e,t,r);o.push(...i)}c().triggerNodeChanges(o)},triggerNodeChanges:e=>{const{onNodesChange:t,setNodes:n,nodes:o,hasDefaultNodes:r,debug:i}=c();e?.length&&(r&&n(Ui(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}=c();e?.length&&(r&&n(Qi(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}=c();t?r(e.map((e=>Ji(e,!0)))):(r(es(o,new Set([...e]),!0)),i(es(n)))},addSelectedEdges:e=>{const{multiSelectionActive:t,edgeLookup:n,nodeLookup:o,triggerNodeChanges:r,triggerEdgeChanges:i}=c();t?i(e.map((e=>Ji(e,!0)))):(i(es(n,new Set([...e]))),r(es(o,new Set,!0)))},unselectNodesAndEdges:({nodes:e,edges:t}={})=>{const{edges:n,nodes:o,triggerNodeChanges:r,triggerEdgeChanges:i}=c(),s=t||n,a=(e||o).map((e=>(e.selected=!1,Ji(e.id,!1)))),l=s.map((e=>Ji(e.id,!1)));r(a),i(l)},setMinZoom:e=>{const{panZoom:t,maxZoom:n}=c();t?.setScaleExtent([e,n]),l({minZoom:e})},setMaxZoom:e=>{const{panZoom:t,minZoom:n}=c();t?.setScaleExtent([n,e]),l({maxZoom:e})},setTranslateExtent:e=>{c().panZoom?.setTranslateExtent(e),l({translateExtent:e})},setPaneClickDistance:e=>{c().panZoom?.setClickDistance(e)},resetSelectedElements:()=>{const{edges:e,nodes:t,triggerNodeChanges:n,triggerEdgeChanges:o}=c(),r=t.reduce(((e,t)=>t.selected?[...e,Ji(t.id,!1)]:e),[]),i=e.reduce(((e,t)=>t.selected?[...e,Ji(t.id,!1)]:e),[]);n(r),o(i)},setNodeExtent:e=>{const{nodeLookup:t}=c();for(const[,n]of t){const o=Co(n.internals.positionAbsolute,e);t.set(n.id,{...n,internals:{...n.internals,positionAbsolute:o}})}l({nodeExtent:e})},panBy:e=>{const{transform:t,width:n,height:o,panZoom:r,translateExtent:i}=c();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}=c();return t?wo({nodes:xo(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}=c();if(!t)return!1;const a=xo(s,e);return wo({nodes:a,width:n,height:o,panZoom:t,minZoom:r,maxZoom:i},e),a.size>0},cancelConnection:()=>{l({connection:{...ro}})},updateConnection:e=>{l({connection:e})},reset:()=>l({...Ba()})}),c=Object.is,l?fi(l,c):fi;var l,c};function ja({initialNodes:e,initialEdges:o,defaultNodes:r,defaultEdges:i,initialWidth:s,initialHeight:a,fitView:l,nodeOrigin:c,children:u}){const[d]=n.useState((()=>Va({nodes:e,edges:o,defaultNodes:r,defaultEdges:i,width:s,height:a,fitView:l,nodeOrigin:c})));return t.jsx(pi,{value:d,children:t.jsx(cs,{children:u})})}function Ha({children:e,nodes:o,edges:r,defaultNodes:i,defaultEdges:s,width:a,height:l,fitView:c,nodeOrigin:u}){return n.useContext(gi)?t.jsx(t.Fragment,{children:e}):t.jsx(ja,{initialNodes:o,initialEdges:r,defaultNodes:i,defaultEdges:s,initialWidth:a,initialHeight:l,fitView:c,nodeOrigin:u,children:e})}const Za={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0};var Xa=is((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:I,onSelectionChange:A,onSelectionDragStart:R,onSelectionDrag:D,onSelectionDragStop:$,onSelectionContextMenu:L,onSelectionStart:T,onSelectionEnd:B,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=(Vo()?"Meta":"Control"),zoomActivationKeyCode:Q=(Vo()?"Meta":"Control"),snapToGrid:J,snapGrid:ee,onlyRenderVisibleElements:te=!1,selectNodesOnDrag:ne,nodesDraggable:oe,nodesConnectable:re,nodesFocusable:ie,nodeOrigin:se=Li,edgesFocusable:ae,edgesReconnectable:le,elementsSelectable:ce=!0,defaultViewport:ue=Ti,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:Ie,onReconnect:Ae,onReconnectStart:Re,onReconnectEnd:De,onEdgeContextMenu:$e,onEdgeDoubleClick:Le,onEdgeMouseEnter:Te,onEdgeMouseMove:Be,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=Zi(),n=()=>o(t?.matches?"dark":"light");return n(),t?.addEventListener("change",n),()=>{t?.removeEventListener("change",n)}}),[e]),null!==t?t:Zi()?.matches?"dark":"light"}(pt);return t.jsx("div",{...yt,style:{...lt,...Za},ref:vt,className:r(["react-flow",l,wt]),"data-testid":"rf__wrapper",id:ct,children:t.jsxs(Ha,{nodes:o,edges:i,width:ft,height:gt,fitView:Fe,nodeOrigin:se,children:[t.jsx(Ta,{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:L,onSelectionStart:T,onSelectionEnd:B,onReconnect:Ae,onReconnectStart:Re,onReconnectEnd:De,onEdgeContextMenu:$e,onEdgeDoubleClick:Le,onEdgeMouseEnter:Te,onEdgeMouseMove:Be,onEdgeMouseLeave:Ve,reconnectRadius:je,defaultMarkerColor:me,noDragClassName:Xe,noWheelClassName:Ye,noPanClassName:We,rfId:xt,disableKeyboardA11y:tt,nodeExtent:pe,viewport:dt,onViewportChange:ht}),t.jsx(Hi,{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:I,onNodeDragStart:M,onNodeDrag:N,onNodeDragStop:P,onSelectionDrag:D,onSelectionDragStart:R,onSelectionDragStop:$,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($i,{onSelectionChange:A}),Ie,t.jsx(Pi,{proOptions:Ue,position:qe}),t.jsx(_i,{rfId:xt,disableKeyboardA11y:tt})]})})}));const Ya=e=>e.domNode?.querySelector(".react-flow__edgelabel-renderer");const Wa=e=>e.domNode?.querySelector(".react-flow__viewport-portal");const Fa=e=>e.nodes;const Ka=e=>e.edges;const Ga=e=>({x:e.transform[0],y:e.transform[1],zoom:e.transform[2]});const qa={includeHiddenNodes:!1};function Ua({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 Qa({radius:e,className:n}){return t.jsx("circle",{cx:e,cy:e,r:e,className:r(["react-flow__background-pattern","dots",n])})}var Ja;e.BackgroundVariant=void 0,(Ja=e.BackgroundVariant||(e.BackgroundVariant={})).Lines="lines",Ja.Dots="dots",Ja.Cross="cross";const el={[e.BackgroundVariant.Dots]:1,[e.BackgroundVariant.Lines]:1,[e.BackgroundVariant.Cross]:6},tl=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function nl({id:o,variant:i=e.BackgroundVariant.Dots,gap:s=20,size:a,lineWidth:l=1,offset:c=2,color:u,bgColor:d,style:h,className:f,patternClassName:g}){const p=n.useRef(null),{transform:m,patternId:y}=yi(tl,zi),v=a||el[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=w?[C,C]:S,k=x?[C/c,C/c]:[E[0]/c,E[1]/c],_=`${y}${o||""}`;return t.jsxs("svg",{className:r(["react-flow__background",f]),style:{...h,...ps,"--xy-background-color-props":d,"--xy-background-pattern-color-props":u},ref:p,"data-testid":"rf__background",children:[t.jsx("pattern",{id:_,x:m[0]%S[0],y:m[1]%S[1],width:S[0],height:S[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${k[0]},-${k[1]})`,children:x?t.jsx(Qa,{radius:C/c,className:g}):t.jsx(Ua,{dimensions:E,lineWidth:l,variant:i,className:g})}),t.jsx("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${_})`})]})}nl.displayName="Background";const ol=n.memo(nl);function rl(){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 il(){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 sl(){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 al(){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 ll(){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 cl({children:e,className:n,...o}){return t.jsx("button",{type:"button",className:r(["react-flow__controls-button",n]),...o,children:e})}const ul=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom});function dl({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=vi(),{isInteractive:y,minZoomReached:v,maxZoomReached:x}=yi(ul,zi),{zoomIn:w,zoomOut:b,fitView:S}=ds(),C="horizontal"===g?"horizontal":"vertical";return t.jsxs(Ni,{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(cl,{onClick:()=>{w(),a?.()},className:"react-flow__controls-zoomin",title:"zoom in","aria-label":"zoom in",disabled:x,children:t.jsx(rl,{})}),t.jsx(cl,{onClick:()=>{b(),l?.()},className:"react-flow__controls-zoomout",title:"zoom out","aria-label":"zoom out",disabled:v,children:t.jsx(il,{})})]}),o&&t.jsx(cl,{className:"react-flow__controls-fitview",onClick:()=>{S(s),c?.()},title:"fit view","aria-label":"fit view",children:t.jsx(sl,{})}),i&&t.jsx(cl,{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(ll,{}):t.jsx(al,{})}),h]})}dl.displayName="Controls";const hl=n.memo(dl);const fl=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})})),gl=e=>e.nodes.map((e=>e.id)),pl=e=>e instanceof Function?e:()=>e;const ml=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}=yi((t=>{const n=t.nodeLookup.get(e),{x:o,y:r}=n.internals.positionAbsolute;return{node:n,x:o,y:r}}),zi);if(!u||u.hidden||!Zo(u))return null;const{width:f,height:g}=Ho(u);return 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})}));var yl=n.memo((function({nodeStrokeColor:e,nodeColor:n,nodeClassName:o="",nodeBorderRadius:r=5,nodeStrokeWidth:i,nodeComponent:s=fl,onClick:a}){const l=yi(gl,zi),c=pl(n),u=pl(e),d=pl(o),h="undefined"==typeof window||window.chrome?"crispEdges":"geometricPrecision";return t.jsx(t.Fragment,{children:l.map((e=>t.jsx(ml,{id:e,nodeColorFunc:c,nodeStrokeColorFunc:u,nodeClassNameFunc:d,nodeBorderRadius:r,nodeStrokeWidth:i,NodeComponent:s,onClick:a,shapeRendering:h},e)))})}));const vl=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?Oo(mo(e.nodeLookup),t):t,rfId:e.rfId,panZoom:e.panZoom,translateExtent:e.translateExtent,flowWidth:e.width,flowHeight:e.height}};function xl({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=vi(),k=n.useRef(null),{boundingRect:_,viewBB:M,rfId:N,panZoom:P,translateExtent:z,flowWidth:O,flowHeight:I}=yi(vl,zi),A=e?.width??200,R=e?.height??150,D=_.width/A,$=_.height/R,L=Math.max(D,$),T=L*A,B=L*R,V=C*L,j=_.x-(T-_.width)/2-V,H=_.y-(B-_.height)/2-V,Z=T+2*V,X=B+2*V,Y=`react-flow__minimap-desc-${N}`,W=n.useRef(0),F=n.useRef();W.current=L,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:I,inversePan:b,pannable:v,zoomStep:S,zoomable:x})}),[v,x,b,S,z,O,I]);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(Ni,{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*L: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:A,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(yl,{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"})]})})}xl.displayName="MiniMap";const wl=n.memo(xl);const bl=n.memo((function({nodeId:e,position:o,variant:i=Zr.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=Ps(),w="string"==typeof e?e:x,b=vi(),S=n.useRef(null),C=i===Zr.Line?"right":"bottom-right",E=o??C,k=n.useRef(null);n.useEffect((()=>{if(S.current&&w)return k.current||(k.current=Jr({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=Cr([{id:l.id,parentId:l.parentId,rect:{width:n,height:c,...Xo({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===Zr.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 Sl=e=>e.domNode?.querySelector(".react-flow__renderer");function Cl({children:e}){const t=yi(Sl);return t?o.createPortal(e,t):null}const El=(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,kl=(e,t)=>{if(e.size!==t.size)return!1;for(const[n,o]of e)if(El(o,t.get(n)))return!1;return!0},_l=e=>({x:e.transform[0],y:e.transform[1],zoom:e.transform[2],selectedNodesCount:e.nodes.filter((e=>e.selected)).length});e.Background=ol,e.BaseEdge=Qs,e.BezierEdge=ga,e.ControlButton=cl,e.Controls=hl,e.EdgeLabelRenderer=function({children:e}){const t=yi(Ya);return t?o.createPortal(e,t):null},e.EdgeText=Us,e.Handle=Os,e.MiniMap=wl,e.NodeResizeControl=bl,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:[Yr.map((n=>t.jsx(bl,{className:i,style:s,nodeId:e,position:n,variant:Zr.Line,color:a,minWidth:l,minHeight:c,maxWidth:u,maxHeight:d,onResizeStart:g,keepAspectRatio:h,shouldResize:f,onResize:p,onResizeEnd:m},n))),Xr.map((n=>t.jsx(bl,{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=Ps(),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=yi(g,kl),{x:m,y:y,zoom:v,selectedNodesCount:x}=yi(_l,zi);if(!("boolean"==typeof l?l:1===p.size&&p.values().next().value.selected&&1===x)||!p.size)return null;const w=mo(p),b=Array.from(p.values()),S=Math.max(...b.map((e=>e.internals.z+1))),C={position:"absolute",transform:yr(w,{x:m,y:y,zoom:v},c,u,d),zIndex:S,...a};return t.jsx(Cl,{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=Ni,e.ReactFlow=Xa,e.ReactFlowProvider=ja,e.SimpleBezierEdge=na,e.SmoothStepEdge=ia,e.StepEdge=la,e.StraightEdge=da,e.ViewportPortal=function({children:e}){const t=yi(Wa);return t?o.createPortal(e,t):null},e.addEdge=sr,e.applyEdgeChanges=Qi,e.applyNodeChanges=Ui,e.getBezierEdgeCenter=Jo,e.getBezierPath=nr,e.getConnectedEdges=vo,e.getEdgeCenter=or,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=(e,t={nodeOrigin:[0,0]})=>{if(0===e.length)return{x:0,y:0,width:0,height:0};const n=e.reduce(((e,n)=>{const o=zo(n,t.nodeOrigin);return _o(e,o)}),{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return No(n)},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=ea,e.getSmoothStepPath=dr,e.getStraightPath=ar,e.getViewportForBounds=Bo,e.isEdge=rs,e.isNode=os,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?ir(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=Oa,e.useEdges=function(){return yi(Ka,zi)},e.useEdgesState=function(e){const[t,o]=n.useState(e),r=n.useCallback((e=>o((t=>Qi(e,t)))),[]);return[t,o,r]},e.useHandleConnections=function({type:e,id:t=null,nodeId:o,onConnect:r,onDisconnect:i}){const s=Ps(),a=o??s,l=n.useRef(null),c=yi((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 yi(n.useCallback((t=>t.nodeLookup.get(e)),[e]),zi)},e.useKeyPress=Yi,e.useNodeId=Ps,e.useNodes=function(){return yi(Fa,zi)},e.useNodesData=function(e){return yi(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]),kr)},e.useNodesInitialized=function(e=qa){return yi((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||!Zo(o.userNode)))return!1;return!0})(e))},e.useNodesState=function(e){const[t,o]=n.useState(e),r=n.useCallback((e=>o((t=>Ui(e,t)))),[]);return[t,o,r]},e.useOnSelectionChange=function({onChange:e}){const t=vi();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=vi();n.useEffect((()=>{r.setState({onViewportChangeStart:e})}),[e]),n.useEffect((()=>{r.setState({onViewportChange:t})}),[t]),n.useEffect((()=>{r.setState({onViewportChangeEnd:o})}),[o])},e.useReactFlow=ds,e.useStore=yi,e.useStoreApi=vi,e.useUpdateNodeInternals=function(){const e=vi();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)))}),[])},e.useViewport=function(){return yi(Ga,zi)}}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyflow/react",
3
- "version": "12.0.3",
3
+ "version": "12.0.4",
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",