@opentrust/dashboard 7.3.4 → 7.3.6

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.
@@ -6,6 +6,7 @@ function registeredToDiscovered(a) {
6
6
  const m = (a.metadata ?? {});
7
7
  return {
8
8
  id: m.openclawId ?? a.id,
9
+ registeredAgentId: a.id,
9
10
  name: a.name,
10
11
  status: a.status,
11
12
  emoji: m.emoji ?? "🤖",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opentrust/dashboard",
3
- "version": "7.3.4",
3
+ "version": "7.3.6",
4
4
  "type": "module",
5
5
  "description": "OpenTrust Dashboard — management panel for AI Agent security (API + embedded web)",
6
6
  "main": "dist/index.js",
@@ -19,8 +19,8 @@
19
19
  "morgan": "^1.10.0",
20
20
  "nodemailer": "^8.0.1",
21
21
  "zod": "^3.23.0",
22
- "@opentrust/db": "7.3.4",
23
- "@opentrust/shared": "7.3.4"
22
+ "@opentrust/db": "7.3.6",
23
+ "@opentrust/shared": "7.3.6"
24
24
  },
25
25
  "devDependencies": {
26
26
  "@types/cors": "^2.8.17",
@@ -180,5 +180,5 @@ Please change the parent <Route path="${m}"> to <Route path="${m==="/"?"*":`${m}
180
180
  `,`
181
181
  +`).split(`
182
182
  `)),f=u.reduce((c,d)=>c.concat(...d),[]);return[u,f]}return[[],[]]},[e]);return k.useEffect(()=>{const a=(t==null?void 0:t.target)??ch,u=(t==null?void 0:t.actInsideInputWithModifier)??!0;if(e!==null){const f=y=>{var S,h;if(o.current=y.ctrlKey||y.metaKey||y.shiftKey||y.altKey,(!o.current||o.current&&!u)&&iy(y))return!1;const x=fh(y.code,l);if(i.current.add(y[x]),dh(s,i.current,!1)){const m=((h=(S=y.composedPath)==null?void 0:S.call(y))==null?void 0:h[0])||y.target,p=(m==null?void 0:m.nodeName)==="BUTTON"||(m==null?void 0:m.nodeName)==="A";t.preventDefault!==!1&&(o.current||!p)&&y.preventDefault(),r(!0)}},c=y=>{const v=fh(y.code,l);dh(s,i.current,!0)?(r(!1),i.current.clear()):i.current.delete(y[v]),y.key==="Meta"&&i.current.clear(),o.current=!1},d=()=>{i.current.clear(),r(!1)};return a==null||a.addEventListener("keydown",f),a==null||a.addEventListener("keyup",c),window.addEventListener("blur",d),window.addEventListener("contextmenu",d),()=>{a==null||a.removeEventListener("keydown",f),a==null||a.removeEventListener("keyup",c),window.removeEventListener("blur",d),window.removeEventListener("contextmenu",d)}}},[e,r]),n}function dh(e,t,n){return e.filter(r=>n||r.length===t.size).some(r=>r.every(o=>t.has(o)))}function fh(e,t){return t.includes(e)?"code":"key"}const eb=()=>{const e=ge();return k.useMemo(()=>({zoomIn:t=>{const{panZoom:n}=e.getState();return n?n.scaleBy(1.2,{duration:t==null?void 0:t.duration}):Promise.resolve(!1)},zoomOut:t=>{const{panZoom:n}=e.getState();return n?n.scaleBy(1/1.2,{duration:t==null?void 0:t.duration}):Promise.resolve(!1)},zoomTo:(t,n)=>{const{panZoom:r}=e.getState();return r?r.scaleTo(t,{duration:n==null?void 0:n.duration}):Promise.resolve(!1)},getZoom:()=>e.getState().transform[2],setViewport:async(t,n)=>{const{transform:[r,o,i],panZoom:s}=e.getState();return s?(await s.setViewport({x:t.x??r,y:t.y??o,zoom:t.zoom??i},n),Promise.resolve(!0)):Promise.resolve(!1)},getViewport:()=>{const[t,n,r]=e.getState().transform;return{x:t,y:n,zoom:r}},setCenter:async(t,n,r)=>e.getState().setCenter(t,n,r),fitBounds:async(t,n)=>{const{width:r,height:o,minZoom:i,maxZoom:s,panZoom:l}=e.getState(),a=Uc(t,r,o,i,s,(n==null?void 0:n.padding)??.1);return l?(await l.setViewport(a,{duration:n==null?void 0:n.duration,ease:n==null?void 0:n.ease,interpolate:n==null?void 0:n.interpolate}),Promise.resolve(!0)):Promise.resolve(!1)},screenToFlowPosition:(t,n={})=>{const{transform:r,snapGrid:o,snapToGrid:i,domNode:s}=e.getState();if(!s)return t;const{x:l,y:a}=s.getBoundingClientRect(),u={x:t.x-l,y:t.y-a},f=n.snapGrid??o,c=n.snapToGrid??i;return xi(u,r,c,f)},flowToScreenPosition:t=>{const{transform:n,domNode:r}=e.getState();if(!r)return t;const{x:o,y:i}=r.getBoundingClientRect(),s=Ks(t,n);return{x:s.x+o,y:s.y+i}}}),[])};function Ly(e,t){const n=[],r=new Map,o=[];for(const i of e)if(i.type==="add"){o.push(i);continue}else if(i.type==="remove"||i.type==="replace")r.set(i.id,[i]);else{const s=r.get(i.id);s?s.push(i):r.set(i.id,[i])}for(const i of t){const s=r.get(i.id);if(!s){n.push(i);continue}if(s[0].type==="remove")continue;if(s[0].type==="replace"){n.push({...s[0].item});continue}const l={...i};for(const a of s)tb(a,l);n.push(l)}return o.length&&o.forEach(i=>{i.index!==void 0?n.splice(i.index,0,{...i.item}):n.push({...i.item})}),n}function tb(e,t){switch(e.type){case"select":{t.selected=e.selected;break}case"position":{typeof e.position<"u"&&(t.position=e.position),typeof e.dragging<"u"&&(t.dragging=e.dragging);break}case"dimensions":{typeof e.dimensions<"u"&&(t.measured={...e.dimensions},e.setAttributes&&((e.setAttributes===!0||e.setAttributes==="width")&&(t.width=e.dimensions.width),(e.setAttributes===!0||e.setAttributes==="height")&&(t.height=e.dimensions.height))),typeof e.resizing=="boolean"&&(t.resizing=e.resizing);break}}}function nb(e,t){return Ly(e,t)}function rb(e,t){return Ly(e,t)}function Tn(e,t){return{id:e,type:"select",selected:t}}function xr(e,t=new Set,n=!1){const r=[];for(const[o,i]of e){const s=t.has(o);!(i.selected===void 0&&!s)&&i.selected!==s&&(n&&(i.selected=s),r.push(Tn(i.id,s)))}return r}function hh({items:e=[],lookup:t}){var o;const n=[],r=new Map(e.map(i=>[i.id,i]));for(const[i,s]of e.entries()){const l=t.get(s.id),a=((o=l==null?void 0:l.internals)==null?void 0:o.userNode)??l;a!==void 0&&a!==s&&n.push({id:s.id,item:s,type:"replace"}),a===void 0&&n.push({item:s,type:"add",index:i})}for(const[i]of t)r.get(i)===void 0&&n.push({id:i,type:"remove"});return n}function ph(e){return{id:e.id,type:"remove"}}const mh=e=>dC(e),ob=e=>Zg(e);function Ry(e){return k.forwardRef(e)}const ib=typeof window<"u"?k.useLayoutEffect:k.useEffect;function gh(e){const[t,n]=k.useState(BigInt(0)),[r]=k.useState(()=>sb(()=>n(o=>o+BigInt(1))));return ib(()=>{const o=r.get();o.length&&(e(o),r.reset())},[t]),r}function sb(e){let t=[];return{get:()=>t,reset:()=>{t=[]},push:n=>{t.push(n),e()}}}const Iy=k.createContext(null);function lb({children:e}){const t=ge(),n=k.useCallback(l=>{const{nodes:a=[],setNodes:u,hasDefaultNodes:f,onNodesChange:c,nodeLookup:d,fitViewQueued:y,onNodesChangeMiddlewareMap:v}=t.getState();let x=a;for(const h of l)x=typeof h=="function"?h(x):h;let S=hh({items:x,lookup:d});for(const h of v.values())S=h(S);f&&u(x),S.length>0?c==null||c(S):y&&window.requestAnimationFrame(()=>{const{fitViewQueued:h,nodes:m,setNodes:p}=t.getState();h&&p(m)})},[]),r=gh(n),o=k.useCallback(l=>{const{edges:a=[],setEdges:u,hasDefaultEdges:f,onEdgesChange:c,edgeLookup:d}=t.getState();let y=a;for(const v of l)y=typeof v=="function"?v(y):v;f?u(y):c&&c(hh({items:y,lookup:d}))},[]),i=gh(o),s=k.useMemo(()=>({nodeQueue:r,edgeQueue:i}),[]);return g.jsx(Iy.Provider,{value:s,children:e})}function ab(){const e=k.useContext(Iy);if(!e)throw new Error("useBatchContext must be used within a BatchProvider");return e}const ub=e=>!!e.panZoom;function Zc(){const e=eb(),t=ge(),n=ab(),r=re(ub),o=k.useMemo(()=>{const i=c=>t.getState().nodeLookup.get(c),s=c=>{n.nodeQueue.push(c)},l=c=>{n.edgeQueue.push(c)},a=c=>{var h,m;const{nodeLookup:d,nodeOrigin:y}=t.getState(),v=mh(c)?c:d.get(c.id),x=v.parentId?ry(v.position,v.measured,v.parentId,d,y):v.position,S={...v,position:x,width:((h=v.measured)==null?void 0:h.width)??v.width,height:((m=v.measured)==null?void 0:m.height)??v.height};return Or(S)},u=(c,d,y={replace:!1})=>{s(v=>v.map(x=>{if(x.id===c){const S=typeof d=="function"?d(x):d;return y.replace&&mh(S)?S:{...x,...S}}return x}))},f=(c,d,y={replace:!1})=>{l(v=>v.map(x=>{if(x.id===c){const S=typeof d=="function"?d(x):d;return y.replace&&ob(S)?S:{...x,...S}}return x}))};return{getNodes:()=>t.getState().nodes.map(c=>({...c})),getNode:c=>{var d;return(d=i(c))==null?void 0:d.internals.userNode},getInternalNode:i,getEdges:()=>{const{edges:c=[]}=t.getState();return c.map(d=>({...d}))},getEdge:c=>t.getState().edgeLookup.get(c),setNodes:s,setEdges:l,addNodes:c=>{const d=Array.isArray(c)?c:[c];n.nodeQueue.push(y=>[...y,...d])},addEdges:c=>{const d=Array.isArray(c)?c:[c];n.edgeQueue.push(y=>[...y,...d])},toObject:()=>{const{nodes:c=[],edges:d=[],transform:y}=t.getState(),[v,x,S]=y;return{nodes:c.map(h=>({...h})),edges:d.map(h=>({...h})),viewport:{x:v,y:x,zoom:S}}},deleteElements:async({nodes:c=[],edges:d=[]})=>{const{nodes:y,edges:v,onNodesDelete:x,onEdgesDelete:S,triggerNodeChanges:h,triggerEdgeChanges:m,onDelete:p,onBeforeDelete:w}=t.getState(),{nodes:E,edges:N}=await gC({nodesToRemove:c,edgesToRemove:d,nodes:y,edges:v,onBeforeDelete:w}),_=N.length>0,M=E.length>0;if(_){const R=N.map(ph);S==null||S(N),m(R)}if(M){const R=E.map(ph);x==null||x(E),h(R)}return(M||_)&&(p==null||p({nodes:E,edges:N})),{deletedNodes:E,deletedEdges:N}},getIntersectingNodes:(c,d=!0,y)=>{const v=Wf(c),x=v?c:a(c),S=y!==void 0;return x?(y||t.getState().nodes).filter(h=>{const m=t.getState().nodeLookup.get(h.id);if(m&&!v&&(h.id===c.id||!m.internals.positionAbsolute))return!1;const p=Or(S?h:m),w=oi(p,x);return d&&w>0||w>=p.width*p.height||w>=x.width*x.height}):[]},isNodeIntersecting:(c,d,y=!0)=>{const x=Wf(c)?c:a(c);if(!x)return!1;const S=oi(x,d);return y&&S>0||S>=d.width*d.height||S>=x.width*x.height},updateNode:u,updateNodeData:(c,d,y={replace:!1})=>{u(c,v=>{const x=typeof d=="function"?d(v):d;return y.replace?{...v,data:x}:{...v,data:{...v.data,...x}}},y)},updateEdge:f,updateEdgeData:(c,d,y={replace:!1})=>{f(c,v=>{const x=typeof d=="function"?d(v):d;return y.replace?{...v,data:x}:{...v,data:{...v.data,...x}}},y)},getNodesBounds:c=>{const{nodeLookup:d,nodeOrigin:y}=t.getState();return fC(c,{nodeLookup:d,nodeOrigin:y})},getHandleConnections:({type:c,id:d,nodeId:y})=>{var v;return Array.from(((v=t.getState().connectionLookup.get(`${y}-${c}${d?`-${d}`:""}`))==null?void 0:v.values())??[])},getNodeConnections:({type:c,handleId:d,nodeId:y})=>{var v;return Array.from(((v=t.getState().connectionLookup.get(`${y}${c?d?`-${c}-${d}`:`-${c}`:""}`))==null?void 0:v.values())??[])},fitView:async c=>{const d=t.getState().fitViewResolver??wC();return t.setState({fitViewQueued:!0,fitViewOptions:c,fitViewResolver:d}),n.nodeQueue.push(y=>[...y]),d.promise}}},[]);return k.useMemo(()=>({...o,...e,viewportInitialized:r}),[r])}const yh=e=>e.selected,cb=typeof window<"u"?window:void 0;function db({deleteKeyCode:e,multiSelectionKeyCode:t}){const n=ge(),{deleteElements:r}=Zc(),o=si(e,{actInsideInputWithModifier:!1}),i=si(t,{target:cb});k.useEffect(()=>{if(o){const{edges:s,nodes:l}=n.getState();r({nodes:l.filter(yh),edges:s.filter(yh)}),n.setState({nodesSelectionActive:!1})}},[o]),k.useEffect(()=>{n.setState({multiSelectionActive:i})},[i])}function fb(e){const t=ge();k.useEffect(()=>{const n=()=>{var o,i,s,l;if(!e.current||!(((i=(o=e.current).checkVisibility)==null?void 0:i.call(o))??!0))return!1;const r=Wc(e.current);(r.height===0||r.width===0)&&((l=(s=t.getState()).onError)==null||l.call(s,"004",Rt.error004())),t.setState({width:r.width||500,height:r.height||500})};if(e.current){n(),window.addEventListener("resize",n);const r=new ResizeObserver(()=>n());return r.observe(e.current),()=>{window.removeEventListener("resize",n),r&&e.current&&r.unobserve(e.current)}}},[])}const Ml={position:"absolute",width:"100%",height:"100%",top:0,left:0},hb=e=>({userSelectionActive:e.userSelectionActive,lib:e.lib,connectionInProgress:e.connection.inProgress});function pb({onPaneContextMenu:e,zoomOnScroll:t=!0,zoomOnPinch:n=!0,panOnScroll:r=!1,panOnScrollSpeed:o=.5,panOnScrollMode:i=Wn.Free,zoomOnDoubleClick:s=!0,panOnDrag:l=!0,defaultViewport:a,translateExtent:u,minZoom:f,maxZoom:c,zoomActivationKeyCode:d,preventScrolling:y=!0,children:v,noWheelClassName:x,noPanClassName:S,onViewportChange:h,isControlledViewport:m,paneClickDistance:p,selectionOnDrag:w}){const E=ge(),N=k.useRef(null),{userSelectionActive:_,lib:M,connectionInProgress:R}=re(hb,me),$=si(d),I=k.useRef();fb(N);const L=k.useCallback(F=>{h==null||h({x:F[0],y:F[1],zoom:F[2]}),m||E.setState({transform:F})},[h,m]);return k.useEffect(()=>{if(N.current){I.current=r_({domNode:N.current,minZoom:f,maxZoom:c,translateExtent:u,viewport:a,onDraggingChange:j=>E.setState({paneDragging:j}),onPanZoomStart:(j,A)=>{const{onViewportChangeStart:C,onMoveStart:P}=E.getState();P==null||P(j,A),C==null||C(A)},onPanZoom:(j,A)=>{const{onViewportChange:C,onMove:P}=E.getState();P==null||P(j,A),C==null||C(A)},onPanZoomEnd:(j,A)=>{const{onViewportChangeEnd:C,onMoveEnd:P}=E.getState();P==null||P(j,A),C==null||C(A)}});const{x:F,y:b,zoom:z}=I.current.getViewport();return E.setState({panZoom:I.current,transform:[F,b,z],domNode:N.current.closest(".react-flow")}),()=>{var j;(j=I.current)==null||j.destroy()}}},[]),k.useEffect(()=>{var F;(F=I.current)==null||F.update({onPaneContextMenu:e,zoomOnScroll:t,zoomOnPinch:n,panOnScroll:r,panOnScrollSpeed:o,panOnScrollMode:i,zoomOnDoubleClick:s,panOnDrag:l,zoomActivationKeyPressed:$,preventScrolling:y,noPanClassName:S,userSelectionActive:_,noWheelClassName:x,lib:M,onTransformChange:L,connectionInProgress:R,selectionOnDrag:w,paneClickDistance:p})},[e,t,n,r,o,i,s,l,$,y,S,_,x,M,L,R,w,p]),g.jsx("div",{className:"react-flow__renderer",ref:N,style:Ml,children:v})}const mb=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function gb(){const{userSelectionActive:e,userSelectionRect:t}=re(mb,me);return e&&t?g.jsx("div",{className:"react-flow__selection react-flow__container",style:{width:t.width,height:t.height,transform:`translate(${t.x}px, ${t.y}px)`}}):null}const ya=(e,t)=>n=>{n.target===t.current&&(e==null||e(n))},yb=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,connectionInProgress:e.connection.inProgress,dragging:e.paneDragging});function vb({isSelecting:e,selectionKeyPressed:t,selectionMode:n=ri.Full,panOnDrag:r,paneClickDistance:o,selectionOnDrag:i,onSelectionStart:s,onSelectionEnd:l,onPaneClick:a,onPaneContextMenu:u,onPaneScroll:f,onPaneMouseEnter:c,onPaneMouseMove:d,onPaneMouseLeave:y,children:v}){const x=ge(),{userSelectionActive:S,elementsSelectable:h,dragging:m,connectionInProgress:p}=re(yb,me),w=h&&(e||S),E=k.useRef(null),N=k.useRef(),_=k.useRef(new Set),M=k.useRef(new Set),R=k.useRef(!1),$=C=>{if(R.current||p){R.current=!1;return}a==null||a(C),x.getState().resetSelectedElements(),x.setState({nodesSelectionActive:!1})},I=C=>{if(Array.isArray(r)&&(r!=null&&r.includes(2))){C.preventDefault();return}u==null||u(C)},L=f?C=>f(C):void 0,F=C=>{R.current&&(C.stopPropagation(),R.current=!1)},b=C=>{var Y,X;const{domNode:P}=x.getState();if(N.current=P==null?void 0:P.getBoundingClientRect(),!N.current)return;const T=C.target===E.current;if(!T&&!!C.target.closest(".nokey")||!e||!(i&&T||t)||C.button!==0||!C.isPrimary)return;(X=(Y=C.target)==null?void 0:Y.setPointerCapture)==null||X.call(Y,C.pointerId),R.current=!1;const{x:U,y:B}=xt(C.nativeEvent,N.current);x.setState({userSelectionRect:{width:0,height:0,startX:U,startY:B,x:U,y:B}}),T||(C.stopPropagation(),C.preventDefault())},z=C=>{const{userSelectionRect:P,transform:T,nodeLookup:O,edgeLookup:D,connectionLookup:U,triggerNodeChanges:B,triggerEdgeChanges:Y,defaultEdgeOptions:X,resetSelectedElements:G}=x.getState();if(!N.current||!P)return;const{x:V,y:Q}=xt(C.nativeEvent,N.current),{startX:te,startY:J}=P;if(!R.current){const ie=t?0:o;if(Math.hypot(V-te,Q-J)<=ie)return;G(),s==null||s(C)}R.current=!0;const q={startX:te,startY:J,x:V<te?V:te,y:Q<J?Q:J,width:Math.abs(V-te),height:Math.abs(Q-J)},Z=_.current,se=M.current;_.current=new Set(Bc(O,q,T,n===ri.Partial,!0).map(ie=>ie.id)),M.current=new Set;const ue=(X==null?void 0:X.selectable)??!0;for(const ie of _.current){const Ie=U.get(ie);if(Ie)for(const{edgeId:Jt}of Ie.values()){const At=D.get(Jt);At&&(At.selectable??ue)&&M.current.add(Jt)}}if(!Yf(Z,_.current)){const ie=xr(O,_.current,!0);B(ie)}if(!Yf(se,M.current)){const ie=xr(D,M.current);Y(ie)}x.setState({userSelectionRect:q,userSelectionActive:!0,nodesSelectionActive:!1})},j=C=>{var P,T;C.button===0&&((T=(P=C.target)==null?void 0:P.releasePointerCapture)==null||T.call(P,C.pointerId),!S&&C.target===E.current&&x.getState().userSelectionRect&&($==null||$(C)),x.setState({userSelectionActive:!1,userSelectionRect:null}),R.current&&(l==null||l(C),x.setState({nodesSelectionActive:_.current.size>0})))},A=r===!0||Array.isArray(r)&&r.includes(0);return g.jsxs("div",{className:Ee(["react-flow__pane",{draggable:A,dragging:m,selection:e}]),onClick:w?void 0:ya($,E),onContextMenu:ya(I,E),onWheel:ya(L,E),onPointerEnter:w?void 0:c,onPointerMove:w?z:d,onPointerUp:w?j:void 0,onPointerDownCapture:w?b:void 0,onClickCapture:w?F:void 0,onPointerLeave:y,ref:E,style:Ml,children:[v,g.jsx(gb,{})]})}function Lu({id:e,store:t,unselect:n=!1,nodeRef:r}){const{addSelectedNodes:o,unselectNodesAndEdges:i,multiSelectionActive:s,nodeLookup:l,onError:a}=t.getState(),u=l.get(e);if(!u){a==null||a("012",Rt.error012(e));return}t.setState({nodesSelectionActive:!1}),u.selected?(n||u.selected&&s)&&(i({nodes:[u],edges:[]}),requestAnimationFrame(()=>{var f;return(f=r==null?void 0:r.current)==null?void 0:f.blur()})):o([e])}function Ty({nodeRef:e,disabled:t=!1,noDragClassName:n,handleSelector:r,nodeId:o,isSelectable:i,nodeClickDistance:s}){const l=ge(),[a,u]=k.useState(!1),f=k.useRef();return k.useEffect(()=>{f.current=BC({getStoreItems:()=>l.getState(),onNodeMouseDown:c=>{Lu({id:c,store:l,nodeRef:e})},onDragStart:()=>{u(!0)},onDragStop:()=>{u(!1)}})},[]),k.useEffect(()=>{var c,d;if(t)(c=f.current)==null||c.destroy();else if(e.current)return(d=f.current)==null||d.update({noDragClassName:n,handleSelector:r,domNode:e.current,isSelectable:i,nodeId:o,nodeClickDistance:s}),()=>{var y;(y=f.current)==null||y.destroy()}},[n,r,t,i,e,o]),a}const xb=e=>t=>t.selected&&(t.draggable||e&&typeof t.draggable>"u");function zy(){const e=ge();return k.useCallback(n=>{const{nodeExtent:r,snapToGrid:o,snapGrid:i,nodesDraggable:s,onError:l,updateNodePositions:a,nodeLookup:u,nodeOrigin:f}=e.getState(),c=new Map,d=xb(s),y=o?i[0]:5,v=o?i[1]:5,x=n.direction.x*y*n.factor,S=n.direction.y*v*n.factor;for(const[,h]of u){if(!d(h))continue;let m={x:h.internals.positionAbsolute.x+x,y:h.internals.positionAbsolute.y+S};o&&(m=vi(m,i));const{position:p,positionAbsolute:w}=qg({nodeId:h.id,nextPosition:m,nodeLookup:u,nodeExtent:r,nodeOrigin:f,onError:l});h.position=p,h.internals.positionAbsolute=w,c.set(h.id,h)}a(c)},[])}const qc=k.createContext(null),wb=qc.Provider;qc.Consumer;const Ay=()=>k.useContext(qc),Sb=e=>({connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName,rfId:e.rfId}),kb=(e,t,n)=>r=>{const{connectionClickStartHandle:o,connectionMode:i,connection:s}=r,{fromHandle:l,toHandle:a,isValid:u}=s,f=(a==null?void 0:a.nodeId)===e&&(a==null?void 0:a.id)===t&&(a==null?void 0:a.type)===n;return{connectingFrom:(l==null?void 0:l.nodeId)===e&&(l==null?void 0:l.id)===t&&(l==null?void 0:l.type)===n,connectingTo:f,clickConnecting:(o==null?void 0:o.nodeId)===e&&(o==null?void 0:o.id)===t&&(o==null?void 0:o.type)===n,isPossibleEndHandle:i===$r.Strict?(l==null?void 0:l.type)!==n:e!==(l==null?void 0:l.nodeId)||t!==(l==null?void 0:l.id),connectionInProcess:!!l,clickConnectionInProcess:!!o,valid:f&&u}};function Eb({type:e="source",position:t=K.Top,isValidConnection:n,isConnectable:r=!0,isConnectableStart:o=!0,isConnectableEnd:i=!0,id:s,onConnect:l,children:a,className:u,onMouseDown:f,onTouchStart:c,...d},y){var z,j;const v=s||null,x=e==="target",S=ge(),h=Ay(),{connectOnClick:m,noPanClassName:p,rfId:w}=re(Sb,me),{connectingFrom:E,connectingTo:N,clickConnecting:_,isPossibleEndHandle:M,connectionInProcess:R,clickConnectionInProcess:$,valid:I}=re(kb(h,v,e),me);h||(j=(z=S.getState()).onError)==null||j.call(z,"010",Rt.error010());const L=A=>{const{defaultEdgeOptions:C,onConnect:P,hasDefaultEdges:T}=S.getState(),O={...C,...A};if(T){const{edges:D,setEdges:U}=S.getState();U(bC(O,D))}P==null||P(O),l==null||l(O)},F=A=>{if(!h)return;const C=sy(A.nativeEvent);if(o&&(C&&A.button===0||!C)){const P=S.getState();ju.onPointerDown(A.nativeEvent,{handleDomNode:A.currentTarget,autoPanOnConnect:P.autoPanOnConnect,connectionMode:P.connectionMode,connectionRadius:P.connectionRadius,domNode:P.domNode,nodeLookup:P.nodeLookup,lib:P.lib,isTarget:x,handleId:v,nodeId:h,flowId:P.rfId,panBy:P.panBy,cancelConnection:P.cancelConnection,onConnectStart:P.onConnectStart,onConnectEnd:P.onConnectEnd,updateConnection:P.updateConnection,onConnect:L,isValidConnection:n||P.isValidConnection,getTransform:()=>S.getState().transform,getFromHandle:()=>S.getState().connection.fromHandle,autoPanSpeed:P.autoPanSpeed,dragThreshold:P.connectionDragThreshold})}C?f==null||f(A):c==null||c(A)},b=A=>{const{onClickConnectStart:C,onClickConnectEnd:P,connectionClickStartHandle:T,connectionMode:O,isValidConnection:D,lib:U,rfId:B,nodeLookup:Y,connection:X}=S.getState();if(!h||!T&&!o)return;if(!T){C==null||C(A.nativeEvent,{nodeId:h,handleId:v,handleType:e}),S.setState({connectionClickStartHandle:{nodeId:h,type:e,id:v}});return}const G=oy(A.target),V=n||D,{connection:Q,isValid:te}=ju.isValid(A.nativeEvent,{handle:{nodeId:h,id:v,type:e},connectionMode:O,fromNodeId:T.nodeId,fromHandleId:T.id||null,fromType:T.type,isValidConnection:V,flowId:B,doc:G,lib:U,nodeLookup:Y});te&&Q&&L(Q);const J=structuredClone(X);delete J.inProgress,J.toPosition=J.toHandle?J.toHandle.position:null,P==null||P(A,J),S.setState({connectionClickStartHandle:null})};return g.jsx("div",{"data-handleid":v,"data-nodeid":h,"data-handlepos":t,"data-id":`${w}-${h}-${v}-${e}`,className:Ee(["react-flow__handle",`react-flow__handle-${t}`,"nodrag",p,u,{source:!x,target:x,connectable:r,connectablestart:o,connectableend:i,clickconnecting:_,connectingfrom:E,connectingto:N,valid:I,connectionindicator:r&&(!R||M)&&(R||$?i:o)}]),onMouseDown:F,onTouchStart:F,onClick:m?b:void 0,ref:y,...d,children:a})}const Qs=k.memo(Ry(Eb));function Nb({data:e,isConnectable:t,sourcePosition:n=K.Bottom}){return g.jsxs(g.Fragment,{children:[e==null?void 0:e.label,g.jsx(Qs,{type:"source",position:n,isConnectable:t})]})}function Cb({data:e,isConnectable:t,targetPosition:n=K.Top,sourcePosition:r=K.Bottom}){return g.jsxs(g.Fragment,{children:[g.jsx(Qs,{type:"target",position:n,isConnectable:t}),e==null?void 0:e.label,g.jsx(Qs,{type:"source",position:r,isConnectable:t})]})}function _b(){return null}function bb({data:e,isConnectable:t,targetPosition:n=K.Top}){return g.jsxs(g.Fragment,{children:[g.jsx(Qs,{type:"target",position:n,isConnectable:t}),e==null?void 0:e.label]})}const Zs={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},vh={input:Nb,default:Cb,output:bb,group:_b};function Pb(e){var t,n,r,o;return e.internals.handleBounds===void 0?{width:e.width??e.initialWidth??((t=e.style)==null?void 0:t.width),height:e.height??e.initialHeight??((n=e.style)==null?void 0:n.height)}:{width:e.width??((r=e.style)==null?void 0:r.width),height:e.height??((o=e.style)==null?void 0:o.height)}}const Mb=e=>{const{width:t,height:n,x:r,y:o}=yi(e.nodeLookup,{filter:i=>!!i.selected});return{width:vt(t)?t:null,height:vt(n)?n:null,userSelectionActive:e.userSelectionActive,transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]}) translate(${r}px,${o}px)`}};function jb({onSelectionContextMenu:e,noPanClassName:t,disableKeyboardA11y:n}){const r=ge(),{width:o,height:i,transformString:s,userSelectionActive:l}=re(Mb,me),a=zy(),u=k.useRef(null);if(k.useEffect(()=>{var d;n||(d=u.current)==null||d.focus({preventScroll:!0})},[n]),Ty({nodeRef:u}),l||!o||!i)return null;const f=e?d=>{const y=r.getState().nodes.filter(v=>v.selected);e(d,y)}:void 0,c=d=>{Object.prototype.hasOwnProperty.call(Zs,d.key)&&(d.preventDefault(),a({direction:Zs[d.key],factor:d.shiftKey?4:1}))};return g.jsx("div",{className:Ee(["react-flow__nodesselection","react-flow__container",t]),style:{transform:s},children:g.jsx("div",{ref:u,className:"react-flow__nodesselection-rect",onContextMenu:f,tabIndex:n?void 0:-1,onKeyDown:n?void 0:c,style:{width:o,height:i}})})}const xh=typeof window<"u"?window:void 0,Lb=e=>({nodesSelectionActive:e.nodesSelectionActive,userSelectionActive:e.userSelectionActive});function $y({children:e,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:o,onPaneContextMenu:i,onPaneScroll:s,paneClickDistance:l,deleteKeyCode:a,selectionKeyCode:u,selectionOnDrag:f,selectionMode:c,onSelectionStart:d,onSelectionEnd:y,multiSelectionKeyCode:v,panActivationKeyCode:x,zoomActivationKeyCode:S,elementsSelectable:h,zoomOnScroll:m,zoomOnPinch:p,panOnScroll:w,panOnScrollSpeed:E,panOnScrollMode:N,zoomOnDoubleClick:_,panOnDrag:M,defaultViewport:R,translateExtent:$,minZoom:I,maxZoom:L,preventScrolling:F,onSelectionContextMenu:b,noWheelClassName:z,noPanClassName:j,disableKeyboardA11y:A,onViewportChange:C,isControlledViewport:P}){const{nodesSelectionActive:T,userSelectionActive:O}=re(Lb,me),D=si(u,{target:xh}),U=si(x,{target:xh}),B=U||M,Y=U||w,X=f&&B!==!0,G=D||O||X;return db({deleteKeyCode:a,multiSelectionKeyCode:v}),g.jsx(pb,{onPaneContextMenu:i,elementsSelectable:h,zoomOnScroll:m,zoomOnPinch:p,panOnScroll:Y,panOnScrollSpeed:E,panOnScrollMode:N,zoomOnDoubleClick:_,panOnDrag:!D&&B,defaultViewport:R,translateExtent:$,minZoom:I,maxZoom:L,zoomActivationKeyCode:S,preventScrolling:F,noWheelClassName:z,noPanClassName:j,onViewportChange:C,isControlledViewport:P,paneClickDistance:l,selectionOnDrag:X,children:g.jsxs(vb,{onSelectionStart:d,onSelectionEnd:y,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:o,onPaneContextMenu:i,onPaneScroll:s,panOnDrag:B,isSelecting:!!G,selectionMode:c,selectionKeyPressed:D,paneClickDistance:l,selectionOnDrag:X,children:[e,T&&g.jsx(jb,{onSelectionContextMenu:b,noPanClassName:j,disableKeyboardA11y:A})]})})}$y.displayName="FlowRenderer";const Rb=k.memo($y),Ib=e=>t=>e?Bc(t.nodeLookup,{x:0,y:0,width:t.width,height:t.height},t.transform,!0).map(n=>n.id):Array.from(t.nodeLookup.keys());function Tb(e){return re(k.useCallback(Ib(e),[e]),me)}const zb=e=>e.updateNodeInternals;function Ab(){const e=re(zb),[t]=k.useState(()=>typeof ResizeObserver>"u"?null:new ResizeObserver(n=>{const r=new Map;n.forEach(o=>{const i=o.target.getAttribute("data-id");r.set(i,{id:i,nodeElement:o.target,force:!0})}),e(r)}));return k.useEffect(()=>()=>{t==null||t.disconnect()},[t]),t}function $b({node:e,nodeType:t,hasDimensions:n,resizeObserver:r}){const o=ge(),i=k.useRef(null),s=k.useRef(null),l=k.useRef(e.sourcePosition),a=k.useRef(e.targetPosition),u=k.useRef(t),f=n&&!!e.internals.handleBounds;return k.useEffect(()=>{i.current&&!e.hidden&&(!f||s.current!==i.current)&&(s.current&&(r==null||r.unobserve(s.current)),r==null||r.observe(i.current),s.current=i.current)},[f,e.hidden]),k.useEffect(()=>()=>{s.current&&(r==null||r.unobserve(s.current),s.current=null)},[]),k.useEffect(()=>{if(i.current){const c=u.current!==t,d=l.current!==e.sourcePosition,y=a.current!==e.targetPosition;(c||d||y)&&(u.current=t,l.current=e.sourcePosition,a.current=e.targetPosition,o.getState().updateNodeInternals(new Map([[e.id,{id:e.id,nodeElement:i.current,force:!0}]])))}},[e.id,t,e.sourcePosition,e.targetPosition]),i}function Db({id:e,onClick:t,onMouseEnter:n,onMouseMove:r,onMouseLeave:o,onContextMenu:i,onDoubleClick:s,nodesDraggable:l,elementsSelectable:a,nodesConnectable:u,nodesFocusable:f,resizeObserver:c,noDragClassName:d,noPanClassName:y,disableKeyboardA11y:v,rfId:x,nodeTypes:S,nodeClickDistance:h,onError:m}){const{node:p,internals:w,isParent:E}=re(V=>{const Q=V.nodeLookup.get(e),te=V.parentLookup.has(e);return{node:Q,internals:Q.internals,isParent:te}},me);let N=p.type||"default",_=(S==null?void 0:S[N])||vh[N];_===void 0&&(m==null||m("003",Rt.error003(N)),N="default",_=(S==null?void 0:S.default)||vh.default);const M=!!(p.draggable||l&&typeof p.draggable>"u"),R=!!(p.selectable||a&&typeof p.selectable>"u"),$=!!(p.connectable||u&&typeof p.connectable>"u"),I=!!(p.focusable||f&&typeof p.focusable>"u"),L=ge(),F=ny(p),b=$b({node:p,nodeType:N,hasDimensions:F,resizeObserver:c}),z=Ty({nodeRef:b,disabled:p.hidden||!M,noDragClassName:d,handleSelector:p.dragHandle,nodeId:e,isSelectable:R,nodeClickDistance:h}),j=zy();if(p.hidden)return null;const A=qt(p),C=Pb(p),P=R||M||t||n||r||o,T=n?V=>n(V,{...w.userNode}):void 0,O=r?V=>r(V,{...w.userNode}):void 0,D=o?V=>o(V,{...w.userNode}):void 0,U=i?V=>i(V,{...w.userNode}):void 0,B=s?V=>s(V,{...w.userNode}):void 0,Y=V=>{const{selectNodesOnDrag:Q,nodeDragThreshold:te}=L.getState();R&&(!Q||!M||te>0)&&Lu({id:e,store:L,nodeRef:b}),t&&t(V,{...w.userNode})},X=V=>{if(!(iy(V.nativeEvent)||v)){if(Xg.includes(V.key)&&R){const Q=V.key==="Escape";Lu({id:e,store:L,unselect:Q,nodeRef:b})}else if(M&&p.selected&&Object.prototype.hasOwnProperty.call(Zs,V.key)){V.preventDefault();const{ariaLabelConfig:Q}=L.getState();L.setState({ariaLiveMessage:Q["node.a11yDescription.ariaLiveMessage"]({direction:V.key.replace("Arrow","").toLowerCase(),x:~~w.positionAbsolute.x,y:~~w.positionAbsolute.y})}),j({direction:Zs[V.key],factor:V.shiftKey?4:1})}}},G=()=>{var se;if(v||!((se=b.current)!=null&&se.matches(":focus-visible")))return;const{transform:V,width:Q,height:te,autoPanOnNodeFocus:J,setCenter:q}=L.getState();if(!J)return;Bc(new Map([[e,p]]),{x:0,y:0,width:Q,height:te},V,!0).length>0||q(p.position.x+A.width/2,p.position.y+A.height/2,{zoom:V[2]})};return g.jsx("div",{className:Ee(["react-flow__node",`react-flow__node-${N}`,{[y]:M},p.className,{selected:p.selected,selectable:R,parent:E,draggable:M,dragging:z}]),ref:b,style:{zIndex:w.z,transform:`translate(${w.positionAbsolute.x}px,${w.positionAbsolute.y}px)`,pointerEvents:P?"all":"none",visibility:F?"visible":"hidden",...p.style,...C},"data-id":e,"data-testid":`rf__node-${e}`,onMouseEnter:T,onMouseMove:O,onMouseLeave:D,onContextMenu:U,onClick:Y,onDoubleClick:B,onKeyDown:I?X:void 0,tabIndex:I?0:void 0,onFocus:I?G:void 0,role:p.ariaRole??(I?"group":void 0),"aria-roledescription":"node","aria-describedby":v?void 0:`${Py}-${x}`,"aria-label":p.ariaLabel,...p.domAttributes,children:g.jsx(wb,{value:e,children:g.jsx(_,{id:e,data:p.data,type:N,positionAbsoluteX:w.positionAbsolute.x,positionAbsoluteY:w.positionAbsolute.y,selected:p.selected??!1,selectable:R,draggable:M,deletable:p.deletable??!0,isConnectable:$,sourcePosition:p.sourcePosition,targetPosition:p.targetPosition,dragging:z,dragHandle:p.dragHandle,zIndex:w.z,parentId:p.parentId,...A})})})}var Ob=k.memo(Db);const Fb=e=>({nodesDraggable:e.nodesDraggable,nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,onError:e.onError});function Dy(e){const{nodesDraggable:t,nodesConnectable:n,nodesFocusable:r,elementsSelectable:o,onError:i}=re(Fb,me),s=Tb(e.onlyRenderVisibleElements),l=Ab();return g.jsx("div",{className:"react-flow__nodes",style:Ml,children:s.map(a=>g.jsx(Ob,{id:a,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:l,nodesDraggable:t,nodesConnectable:n,nodesFocusable:r,elementsSelectable:o,nodeClickDistance:e.nodeClickDistance,onError:i},a))})}Dy.displayName="NodeRenderer";const Hb=k.memo(Dy);function Vb(e){return re(k.useCallback(n=>{if(!e)return n.edges.map(o=>o.id);const r=[];if(n.width&&n.height)for(const o of n.edges){const i=n.nodeLookup.get(o.source),s=n.nodeLookup.get(o.target);i&&s&&NC({sourceNode:i,targetNode:s,width:n.width,height:n.height,transform:n.transform})&&r.push(o.id)}return r},[e]),me)}const Bb=({color:e="none",strokeWidth:t=1})=>{const n={strokeWidth:t,...e&&{stroke:e}};return g.jsx("polyline",{className:"arrow",style:n,strokeLinecap:"round",fill:"none",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4"})},Ub=({color:e="none",strokeWidth:t=1})=>{const n={strokeWidth:t,...e&&{stroke:e,fill:e}};return g.jsx("polyline",{className:"arrowclosed",style:n,strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"})},wh={[Xs.Arrow]:Bb,[Xs.ArrowClosed]:Ub};function Wb(e){const t=ge();return k.useMemo(()=>{var o,i;return Object.prototype.hasOwnProperty.call(wh,e)?wh[e]:((i=(o=t.getState()).onError)==null||i.call(o,"009",Rt.error009(e)),null)},[e])}const Yb=({id:e,type:t,color:n,width:r=12.5,height:o=12.5,markerUnits:i="strokeWidth",strokeWidth:s,orient:l="auto-start-reverse"})=>{const a=Wb(t);return a?g.jsx("marker",{className:"react-flow__arrowhead",id:e,markerWidth:`${r}`,markerHeight:`${o}`,viewBox:"-10 -10 20 20",markerUnits:i,orient:l,refX:"0",refY:"0",children:g.jsx(a,{color:n,strokeWidth:s})}):null},Oy=({defaultColor:e,rfId:t})=>{const n=re(i=>i.edges),r=re(i=>i.defaultEdgeOptions),o=k.useMemo(()=>RC(n,{id:t,defaultColor:e,defaultMarkerStart:r==null?void 0:r.markerStart,defaultMarkerEnd:r==null?void 0:r.markerEnd}),[n,r,t,e]);return o.length?g.jsx("svg",{className:"react-flow__marker","aria-hidden":"true",children:g.jsx("defs",{children:o.map(i=>g.jsx(Yb,{id:i.id,type:i.type,color:i.color,width:i.width,height:i.height,markerUnits:i.markerUnits,strokeWidth:i.strokeWidth,orient:i.orient},i.id))})}):null};Oy.displayName="MarkerDefinitions";var Xb=k.memo(Oy);function Fy({x:e,y:t,label:n,labelStyle:r,labelShowBg:o=!0,labelBgStyle:i,labelBgPadding:s=[2,4],labelBgBorderRadius:l=2,children:a,className:u,...f}){const[c,d]=k.useState({x:1,y:0,width:0,height:0}),y=Ee(["react-flow__edge-textwrapper",u]),v=k.useRef(null);return k.useEffect(()=>{if(v.current){const x=v.current.getBBox();d({x:x.x,y:x.y,width:x.width,height:x.height})}},[n]),n?g.jsxs("g",{transform:`translate(${e-c.width/2} ${t-c.height/2})`,className:y,visibility:c.width?"visible":"hidden",...f,children:[o&&g.jsx("rect",{width:c.width+2*s[0],x:-s[0],y:-s[1],height:c.height+2*s[1],className:"react-flow__edge-textbg",style:i,rx:l,ry:l}),g.jsx("text",{className:"react-flow__edge-text",y:c.height/2,dy:"0.3em",ref:v,style:r,children:n}),a]}):null}Fy.displayName="EdgeText";const Gb=k.memo(Fy);function jl({path:e,labelX:t,labelY:n,label:r,labelStyle:o,labelShowBg:i,labelBgStyle:s,labelBgPadding:l,labelBgBorderRadius:a,interactionWidth:u=20,...f}){return g.jsxs(g.Fragment,{children:[g.jsx("path",{...f,d:e,fill:"none",className:Ee(["react-flow__edge-path",f.className])}),u?g.jsx("path",{d:e,fill:"none",strokeOpacity:0,strokeWidth:u,className:"react-flow__edge-interaction"}):null,r&&vt(t)&&vt(n)?g.jsx(Gb,{x:t,y:n,label:r,labelStyle:o,labelShowBg:i,labelBgStyle:s,labelBgPadding:l,labelBgBorderRadius:a}):null]})}function Sh({pos:e,x1:t,y1:n,x2:r,y2:o}){return e===K.Left||e===K.Right?[.5*(t+r),n]:[t,.5*(n+o)]}function Hy({sourceX:e,sourceY:t,sourcePosition:n=K.Bottom,targetX:r,targetY:o,targetPosition:i=K.Top}){const[s,l]=Sh({pos:n,x1:e,y1:t,x2:r,y2:o}),[a,u]=Sh({pos:i,x1:r,y1:o,x2:e,y2:t}),[f,c,d,y]=ly({sourceX:e,sourceY:t,targetX:r,targetY:o,sourceControlX:s,sourceControlY:l,targetControlX:a,targetControlY:u});return[`M${e},${t} C${s},${l} ${a},${u} ${r},${o}`,f,c,d,y]}function Vy(e){return k.memo(({id:t,sourceX:n,sourceY:r,targetX:o,targetY:i,sourcePosition:s,targetPosition:l,label:a,labelStyle:u,labelShowBg:f,labelBgStyle:c,labelBgPadding:d,labelBgBorderRadius:y,style:v,markerEnd:x,markerStart:S,interactionWidth:h})=>{const[m,p,w]=Hy({sourceX:n,sourceY:r,sourcePosition:s,targetX:o,targetY:i,targetPosition:l}),E=e.isInternal?void 0:t;return g.jsx(jl,{id:E,path:m,labelX:p,labelY:w,label:a,labelStyle:u,labelShowBg:f,labelBgStyle:c,labelBgPadding:d,labelBgBorderRadius:y,style:v,markerEnd:x,markerStart:S,interactionWidth:h})})}const Kb=Vy({isInternal:!1}),By=Vy({isInternal:!0});Kb.displayName="SimpleBezierEdge";By.displayName="SimpleBezierEdgeInternal";function Uy(e){return k.memo(({id:t,sourceX:n,sourceY:r,targetX:o,targetY:i,label:s,labelStyle:l,labelShowBg:a,labelBgStyle:u,labelBgPadding:f,labelBgBorderRadius:c,style:d,sourcePosition:y=K.Bottom,targetPosition:v=K.Top,markerEnd:x,markerStart:S,pathOptions:h,interactionWidth:m})=>{const[p,w,E]=bu({sourceX:n,sourceY:r,sourcePosition:y,targetX:o,targetY:i,targetPosition:v,borderRadius:h==null?void 0:h.borderRadius,offset:h==null?void 0:h.offset,stepPosition:h==null?void 0:h.stepPosition}),N=e.isInternal?void 0:t;return g.jsx(jl,{id:N,path:p,labelX:w,labelY:E,label:s,labelStyle:l,labelShowBg:a,labelBgStyle:u,labelBgPadding:f,labelBgBorderRadius:c,style:d,markerEnd:x,markerStart:S,interactionWidth:m})})}const Wy=Uy({isInternal:!1}),Yy=Uy({isInternal:!0});Wy.displayName="SmoothStepEdge";Yy.displayName="SmoothStepEdgeInternal";function Xy(e){return k.memo(({id:t,...n})=>{var o;const r=e.isInternal?void 0:t;return g.jsx(Wy,{...n,id:r,pathOptions:k.useMemo(()=>{var i;return{borderRadius:0,offset:(i=n.pathOptions)==null?void 0:i.offset}},[(o=n.pathOptions)==null?void 0:o.offset])})})}const Qb=Xy({isInternal:!1}),Gy=Xy({isInternal:!0});Qb.displayName="StepEdge";Gy.displayName="StepEdgeInternal";function Ky(e){return k.memo(({id:t,sourceX:n,sourceY:r,targetX:o,targetY:i,label:s,labelStyle:l,labelShowBg:a,labelBgStyle:u,labelBgPadding:f,labelBgBorderRadius:c,style:d,markerEnd:y,markerStart:v,interactionWidth:x})=>{const[S,h,m]=cy({sourceX:n,sourceY:r,targetX:o,targetY:i}),p=e.isInternal?void 0:t;return g.jsx(jl,{id:p,path:S,labelX:h,labelY:m,label:s,labelStyle:l,labelShowBg:a,labelBgStyle:u,labelBgPadding:f,labelBgBorderRadius:c,style:d,markerEnd:y,markerStart:v,interactionWidth:x})})}const Zb=Ky({isInternal:!1}),Qy=Ky({isInternal:!0});Zb.displayName="StraightEdge";Qy.displayName="StraightEdgeInternal";function Zy(e){return k.memo(({id:t,sourceX:n,sourceY:r,targetX:o,targetY:i,sourcePosition:s=K.Bottom,targetPosition:l=K.Top,label:a,labelStyle:u,labelShowBg:f,labelBgStyle:c,labelBgPadding:d,labelBgBorderRadius:y,style:v,markerEnd:x,markerStart:S,pathOptions:h,interactionWidth:m})=>{const[p,w,E]=ay({sourceX:n,sourceY:r,sourcePosition:s,targetX:o,targetY:i,targetPosition:l,curvature:h==null?void 0:h.curvature}),N=e.isInternal?void 0:t;return g.jsx(jl,{id:N,path:p,labelX:w,labelY:E,label:a,labelStyle:u,labelShowBg:f,labelBgStyle:c,labelBgPadding:d,labelBgBorderRadius:y,style:v,markerEnd:x,markerStart:S,interactionWidth:m})})}const qb=Zy({isInternal:!1}),qy=Zy({isInternal:!0});qb.displayName="BezierEdge";qy.displayName="BezierEdgeInternal";const kh={default:qy,straight:Qy,step:Gy,smoothstep:Yy,simplebezier:By},Eh={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null},Jb=(e,t,n)=>n===K.Left?e-t:n===K.Right?e+t:e,eP=(e,t,n)=>n===K.Top?e-t:n===K.Bottom?e+t:e,Nh="react-flow__edgeupdater";function Ch({position:e,centerX:t,centerY:n,radius:r=10,onMouseDown:o,onMouseEnter:i,onMouseOut:s,type:l}){return g.jsx("circle",{onMouseDown:o,onMouseEnter:i,onMouseOut:s,className:Ee([Nh,`${Nh}-${l}`]),cx:Jb(t,r,e),cy:eP(n,r,e),r,stroke:"transparent",fill:"transparent"})}function tP({isReconnectable:e,reconnectRadius:t,edge:n,sourceX:r,sourceY:o,targetX:i,targetY:s,sourcePosition:l,targetPosition:a,onReconnect:u,onReconnectStart:f,onReconnectEnd:c,setReconnecting:d,setUpdateHover:y}){const v=ge(),x=(w,E)=>{if(w.button!==0)return;const{autoPanOnConnect:N,domNode:_,isValidConnection:M,connectionMode:R,connectionRadius:$,lib:I,onConnectStart:L,onConnectEnd:F,cancelConnection:b,nodeLookup:z,rfId:j,panBy:A,updateConnection:C}=v.getState(),P=E.type==="target",T=(U,B)=>{d(!1),c==null||c(U,n,E.type,B)},O=U=>u==null?void 0:u(n,U),D=(U,B)=>{d(!0),f==null||f(w,n,E.type),L==null||L(U,B)};ju.onPointerDown(w.nativeEvent,{autoPanOnConnect:N,connectionMode:R,connectionRadius:$,domNode:_,handleId:E.id,nodeId:E.nodeId,nodeLookup:z,isTarget:P,edgeUpdaterType:E.type,lib:I,flowId:j,cancelConnection:b,panBy:A,isValidConnection:M,onConnect:O,onConnectStart:D,onConnectEnd:F,onReconnectEnd:T,updateConnection:C,getTransform:()=>v.getState().transform,getFromHandle:()=>v.getState().connection.fromHandle,dragThreshold:v.getState().connectionDragThreshold,handleDomNode:w.currentTarget})},S=w=>x(w,{nodeId:n.target,id:n.targetHandle??null,type:"target"}),h=w=>x(w,{nodeId:n.source,id:n.sourceHandle??null,type:"source"}),m=()=>y(!0),p=()=>y(!1);return g.jsxs(g.Fragment,{children:[(e===!0||e==="source")&&g.jsx(Ch,{position:l,centerX:r,centerY:o,radius:t,onMouseDown:S,onMouseEnter:m,onMouseOut:p,type:"source"}),(e===!0||e==="target")&&g.jsx(Ch,{position:a,centerX:i,centerY:s,radius:t,onMouseDown:h,onMouseEnter:m,onMouseOut:p,type:"target"})]})}function nP({id:e,edgesFocusable:t,edgesReconnectable:n,elementsSelectable:r,onClick:o,onDoubleClick:i,onContextMenu:s,onMouseEnter:l,onMouseMove:a,onMouseLeave:u,reconnectRadius:f,onReconnect:c,onReconnectStart:d,onReconnectEnd:y,rfId:v,edgeTypes:x,noPanClassName:S,onError:h,disableKeyboardA11y:m}){let p=re(q=>q.edgeLookup.get(e));const w=re(q=>q.defaultEdgeOptions);p=w?{...w,...p}:p;let E=p.type||"default",N=(x==null?void 0:x[E])||kh[E];N===void 0&&(h==null||h("011",Rt.error011(E)),E="default",N=(x==null?void 0:x.default)||kh.default);const _=!!(p.focusable||t&&typeof p.focusable>"u"),M=typeof c<"u"&&(p.reconnectable||n&&typeof p.reconnectable>"u"),R=!!(p.selectable||r&&typeof p.selectable>"u"),$=k.useRef(null),[I,L]=k.useState(!1),[F,b]=k.useState(!1),z=ge(),{zIndex:j,sourceX:A,sourceY:C,targetX:P,targetY:T,sourcePosition:O,targetPosition:D}=re(k.useCallback(q=>{const Z=q.nodeLookup.get(p.source),se=q.nodeLookup.get(p.target);if(!Z||!se)return{zIndex:p.zIndex,...Eh};const ue=LC({id:e,sourceNode:Z,targetNode:se,sourceHandle:p.sourceHandle||null,targetHandle:p.targetHandle||null,connectionMode:q.connectionMode,onError:h});return{zIndex:EC({selected:p.selected,zIndex:p.zIndex,sourceNode:Z,targetNode:se,elevateOnSelect:q.elevateEdgesOnSelect,zIndexMode:q.zIndexMode}),...ue||Eh}},[p.source,p.target,p.sourceHandle,p.targetHandle,p.selected,p.zIndex]),me),U=k.useMemo(()=>p.markerStart?`url('#${Pu(p.markerStart,v)}')`:void 0,[p.markerStart,v]),B=k.useMemo(()=>p.markerEnd?`url('#${Pu(p.markerEnd,v)}')`:void 0,[p.markerEnd,v]);if(p.hidden||A===null||C===null||P===null||T===null)return null;const Y=q=>{var ie;const{addSelectedEdges:Z,unselectNodesAndEdges:se,multiSelectionActive:ue}=z.getState();R&&(z.setState({nodesSelectionActive:!1}),p.selected&&ue?(se({nodes:[],edges:[p]}),(ie=$.current)==null||ie.blur()):Z([e])),o&&o(q,p)},X=i?q=>{i(q,{...p})}:void 0,G=s?q=>{s(q,{...p})}:void 0,V=l?q=>{l(q,{...p})}:void 0,Q=a?q=>{a(q,{...p})}:void 0,te=u?q=>{u(q,{...p})}:void 0,J=q=>{var Z;if(!m&&Xg.includes(q.key)&&R){const{unselectNodesAndEdges:se,addSelectedEdges:ue}=z.getState();q.key==="Escape"?((Z=$.current)==null||Z.blur(),se({edges:[p]})):ue([e])}};return g.jsx("svg",{style:{zIndex:j},children:g.jsxs("g",{className:Ee(["react-flow__edge",`react-flow__edge-${E}`,p.className,S,{selected:p.selected,animated:p.animated,inactive:!R&&!o,updating:I,selectable:R}]),onClick:Y,onDoubleClick:X,onContextMenu:G,onMouseEnter:V,onMouseMove:Q,onMouseLeave:te,onKeyDown:_?J:void 0,tabIndex:_?0:void 0,role:p.ariaRole??(_?"group":"img"),"aria-roledescription":"edge","data-id":e,"data-testid":`rf__edge-${e}`,"aria-label":p.ariaLabel===null?void 0:p.ariaLabel||`Edge from ${p.source} to ${p.target}`,"aria-describedby":_?`${My}-${v}`:void 0,ref:$,...p.domAttributes,children:[!F&&g.jsx(N,{id:e,source:p.source,target:p.target,type:p.type,selected:p.selected,animated:p.animated,selectable:R,deletable:p.deletable??!0,label:p.label,labelStyle:p.labelStyle,labelShowBg:p.labelShowBg,labelBgStyle:p.labelBgStyle,labelBgPadding:p.labelBgPadding,labelBgBorderRadius:p.labelBgBorderRadius,sourceX:A,sourceY:C,targetX:P,targetY:T,sourcePosition:O,targetPosition:D,data:p.data,style:p.style,sourceHandleId:p.sourceHandle,targetHandleId:p.targetHandle,markerStart:U,markerEnd:B,pathOptions:"pathOptions"in p?p.pathOptions:void 0,interactionWidth:p.interactionWidth}),M&&g.jsx(tP,{edge:p,isReconnectable:M,reconnectRadius:f,onReconnect:c,onReconnectStart:d,onReconnectEnd:y,sourceX:A,sourceY:C,targetX:P,targetY:T,sourcePosition:O,targetPosition:D,setUpdateHover:L,setReconnecting:b})]})})}var rP=k.memo(nP);const oP=e=>({edgesFocusable:e.edgesFocusable,edgesReconnectable:e.edgesReconnectable,elementsSelectable:e.elementsSelectable,connectionMode:e.connectionMode,onError:e.onError});function Jy({defaultMarkerColor:e,onlyRenderVisibleElements:t,rfId:n,edgeTypes:r,noPanClassName:o,onReconnect:i,onEdgeContextMenu:s,onEdgeMouseEnter:l,onEdgeMouseMove:a,onEdgeMouseLeave:u,onEdgeClick:f,reconnectRadius:c,onEdgeDoubleClick:d,onReconnectStart:y,onReconnectEnd:v,disableKeyboardA11y:x}){const{edgesFocusable:S,edgesReconnectable:h,elementsSelectable:m,onError:p}=re(oP,me),w=Vb(t);return g.jsxs("div",{className:"react-flow__edges",children:[g.jsx(Xb,{defaultColor:e,rfId:n}),w.map(E=>g.jsx(rP,{id:E,edgesFocusable:S,edgesReconnectable:h,elementsSelectable:m,noPanClassName:o,onReconnect:i,onContextMenu:s,onMouseEnter:l,onMouseMove:a,onMouseLeave:u,onClick:f,reconnectRadius:c,onDoubleClick:d,onReconnectStart:y,onReconnectEnd:v,rfId:n,onError:p,edgeTypes:r,disableKeyboardA11y:x},E))]})}Jy.displayName="EdgeRenderer";const iP=k.memo(Jy),sP=e=>`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`;function lP({children:e}){const t=re(sP);return g.jsx("div",{className:"react-flow__viewport xyflow__viewport react-flow__container",style:{transform:t},children:e})}function aP(e){const t=Zc(),n=k.useRef(!1);k.useEffect(()=>{!n.current&&t.viewportInitialized&&e&&(setTimeout(()=>e(t),1),n.current=!0)},[e,t.viewportInitialized])}const uP=e=>{var t;return(t=e.panZoom)==null?void 0:t.syncViewport};function cP(e){const t=re(uP),n=ge();return k.useEffect(()=>{e&&(t==null||t(e),n.setState({transform:[e.x,e.y,e.zoom]}))},[e,t]),null}function dP(e){return e.connection.inProgress?{...e.connection,to:xi(e.connection.to,e.transform)}:{...e.connection}}function fP(e){return dP}function hP(e){const t=fP();return re(t,me)}const pP=e=>({nodesConnectable:e.nodesConnectable,isValid:e.connection.isValid,inProgress:e.connection.inProgress,width:e.width,height:e.height});function mP({containerStyle:e,style:t,type:n,component:r}){const{nodesConnectable:o,width:i,height:s,isValid:l,inProgress:a}=re(pP,me);return!(i&&o&&a)?null:g.jsx("svg",{style:e,width:i,height:s,className:"react-flow__connectionline react-flow__container",children:g.jsx("g",{className:Ee(["react-flow__connection",Qg(l)]),children:g.jsx(e0,{style:t,type:n,CustomComponent:r,isValid:l})})})}const e0=({style:e,type:t=cn.Bezier,CustomComponent:n,isValid:r})=>{const{inProgress:o,from:i,fromNode:s,fromHandle:l,fromPosition:a,to:u,toNode:f,toHandle:c,toPosition:d,pointer:y}=hP();if(!o)return;if(n)return g.jsx(n,{connectionLineType:t,connectionLineStyle:e,fromNode:s,fromHandle:l,fromX:i.x,fromY:i.y,toX:u.x,toY:u.y,fromPosition:a,toPosition:d,connectionStatus:Qg(r),toNode:f,toHandle:c,pointer:y});let v="";const x={sourceX:i.x,sourceY:i.y,sourcePosition:a,targetX:u.x,targetY:u.y,targetPosition:d};switch(t){case cn.Bezier:[v]=ay(x);break;case cn.SimpleBezier:[v]=Hy(x);break;case cn.Step:[v]=bu({...x,borderRadius:0});break;case cn.SmoothStep:[v]=bu(x);break;default:[v]=cy(x)}return g.jsx("path",{d:v,fill:"none",className:"react-flow__connection-path",style:e})};e0.displayName="ConnectionLine";const gP={};function _h(e=gP){k.useRef(e),ge(),k.useEffect(()=>{},[e])}function yP(){ge(),k.useRef(!1),k.useEffect(()=>{},[])}function t0({nodeTypes:e,edgeTypes:t,onInit:n,onNodeClick:r,onEdgeClick:o,onNodeDoubleClick:i,onEdgeDoubleClick:s,onNodeMouseEnter:l,onNodeMouseMove:a,onNodeMouseLeave:u,onNodeContextMenu:f,onSelectionContextMenu:c,onSelectionStart:d,onSelectionEnd:y,connectionLineType:v,connectionLineStyle:x,connectionLineComponent:S,connectionLineContainerStyle:h,selectionKeyCode:m,selectionOnDrag:p,selectionMode:w,multiSelectionKeyCode:E,panActivationKeyCode:N,zoomActivationKeyCode:_,deleteKeyCode:M,onlyRenderVisibleElements:R,elementsSelectable:$,defaultViewport:I,translateExtent:L,minZoom:F,maxZoom:b,preventScrolling:z,defaultMarkerColor:j,zoomOnScroll:A,zoomOnPinch:C,panOnScroll:P,panOnScrollSpeed:T,panOnScrollMode:O,zoomOnDoubleClick:D,panOnDrag:U,onPaneClick:B,onPaneMouseEnter:Y,onPaneMouseMove:X,onPaneMouseLeave:G,onPaneScroll:V,onPaneContextMenu:Q,paneClickDistance:te,nodeClickDistance:J,onEdgeContextMenu:q,onEdgeMouseEnter:Z,onEdgeMouseMove:se,onEdgeMouseLeave:ue,reconnectRadius:ie,onReconnect:Ie,onReconnectStart:Jt,onReconnectEnd:At,noDragClassName:Ln,noWheelClassName:Qr,noPanClassName:Zr,disableKeyboardA11y:qr,nodeExtent:Ll,rfId:wi,viewport:rr,onViewportChange:Jr}){return _h(e),_h(t),yP(),aP(n),cP(rr),g.jsx(Rb,{onPaneClick:B,onPaneMouseEnter:Y,onPaneMouseMove:X,onPaneMouseLeave:G,onPaneContextMenu:Q,onPaneScroll:V,paneClickDistance:te,deleteKeyCode:M,selectionKeyCode:m,selectionOnDrag:p,selectionMode:w,onSelectionStart:d,onSelectionEnd:y,multiSelectionKeyCode:E,panActivationKeyCode:N,zoomActivationKeyCode:_,elementsSelectable:$,zoomOnScroll:A,zoomOnPinch:C,zoomOnDoubleClick:D,panOnScroll:P,panOnScrollSpeed:T,panOnScrollMode:O,panOnDrag:U,defaultViewport:I,translateExtent:L,minZoom:F,maxZoom:b,onSelectionContextMenu:c,preventScrolling:z,noDragClassName:Ln,noWheelClassName:Qr,noPanClassName:Zr,disableKeyboardA11y:qr,onViewportChange:Jr,isControlledViewport:!!rr,children:g.jsxs(lP,{children:[g.jsx(iP,{edgeTypes:t,onEdgeClick:o,onEdgeDoubleClick:s,onReconnect:Ie,onReconnectStart:Jt,onReconnectEnd:At,onlyRenderVisibleElements:R,onEdgeContextMenu:q,onEdgeMouseEnter:Z,onEdgeMouseMove:se,onEdgeMouseLeave:ue,reconnectRadius:ie,defaultMarkerColor:j,noPanClassName:Zr,disableKeyboardA11y:qr,rfId:wi}),g.jsx(mP,{style:x,type:v,component:S,containerStyle:h}),g.jsx("div",{className:"react-flow__edgelabel-renderer"}),g.jsx(Hb,{nodeTypes:e,onNodeClick:r,onNodeDoubleClick:i,onNodeMouseEnter:l,onNodeMouseMove:a,onNodeMouseLeave:u,onNodeContextMenu:f,nodeClickDistance:J,onlyRenderVisibleElements:R,noPanClassName:Zr,noDragClassName:Ln,disableKeyboardA11y:qr,nodeExtent:Ll,rfId:wi}),g.jsx("div",{className:"react-flow__viewport-portal"})]})})}t0.displayName="GraphView";const vP=k.memo(t0),bh=({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,width:o,height:i,fitView:s,fitViewOptions:l,minZoom:a=.5,maxZoom:u=2,nodeOrigin:f,nodeExtent:c,zIndexMode:d="basic"}={})=>{const y=new Map,v=new Map,x=new Map,S=new Map,h=r??t??[],m=n??e??[],p=f??[0,0],w=c??ni;hy(x,S,h);const E=Mu(m,y,v,{nodeOrigin:p,nodeExtent:w,zIndexMode:d});let N=[0,0,1];if(s&&o&&i){const _=yi(y,{filter:I=>!!((I.width||I.initialWidth)&&(I.height||I.initialHeight))}),{x:M,y:R,zoom:$}=Uc(_,o,i,a,u,(l==null?void 0:l.padding)??.1);N=[M,R,$]}return{rfId:"1",width:o??0,height:i??0,transform:N,nodes:m,nodesInitialized:E,nodeLookup:y,parentLookup:v,edges:h,edgeLookup:S,connectionLookup:x,onNodesChange:null,onEdgesChange:null,hasDefaultNodes:n!==void 0,hasDefaultEdges:r!==void 0,panZoom:null,minZoom:a,maxZoom:u,translateExtent:ni,nodeExtent:w,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:$r.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:p,nodeDragThreshold:1,connectionDragThreshold:1,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesReconnectable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,elevateEdgesOnSelect:!0,selectNodesOnDrag:!0,multiSelectionActive:!1,fitViewQueued:s??!1,fitViewOptions:l,fitViewResolver:null,connection:{...Kg},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanOnNodeFocus:!0,autoPanSpeed:15,connectionRadius:20,onError:yC,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:"react",debug:!1,ariaLabelConfig:Gg,zIndexMode:d,onNodesChangeMiddlewareMap:new Map,onEdgesChangeMiddlewareMap:new Map}},xP=({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,width:o,height:i,fitView:s,fitViewOptions:l,minZoom:a,maxZoom:u,nodeOrigin:f,nodeExtent:c,zIndexMode:d})=>z_((y,v)=>{async function x(){const{nodeLookup:S,panZoom:h,fitViewOptions:m,fitViewResolver:p,width:w,height:E,minZoom:N,maxZoom:_}=v();h&&(await mC({nodes:S,width:w,height:E,panZoom:h,minZoom:N,maxZoom:_},m),p==null||p.resolve(!0),y({fitViewResolver:null}))}return{...bh({nodes:e,edges:t,width:o,height:i,fitView:s,fitViewOptions:l,minZoom:a,maxZoom:u,nodeOrigin:f,nodeExtent:c,defaultNodes:n,defaultEdges:r,zIndexMode:d}),setNodes:S=>{const{nodeLookup:h,parentLookup:m,nodeOrigin:p,elevateNodesOnSelect:w,fitViewQueued:E,zIndexMode:N}=v(),_=Mu(S,h,m,{nodeOrigin:p,nodeExtent:c,elevateNodesOnSelect:w,checkEquality:!0,zIndexMode:N});E&&_?(x(),y({nodes:S,nodesInitialized:_,fitViewQueued:!1,fitViewOptions:void 0})):y({nodes:S,nodesInitialized:_})},setEdges:S=>{const{connectionLookup:h,edgeLookup:m}=v();hy(h,m,S),y({edges:S})},setDefaultNodesAndEdges:(S,h)=>{if(S){const{setNodes:m}=v();m(S),y({hasDefaultNodes:!0})}if(h){const{setEdges:m}=v();m(h),y({hasDefaultEdges:!0})}},updateNodeInternals:S=>{const{triggerNodeChanges:h,nodeLookup:m,parentLookup:p,domNode:w,nodeOrigin:E,nodeExtent:N,debug:_,fitViewQueued:M,zIndexMode:R}=v(),{changes:$,updatedInternals:I}=OC(S,m,p,w,E,N,R);I&&(zC(m,p,{nodeOrigin:E,nodeExtent:N,zIndexMode:R}),M?(x(),y({fitViewQueued:!1,fitViewOptions:void 0})):y({}),($==null?void 0:$.length)>0&&(_&&console.log("React Flow: trigger node changes",$),h==null||h($)))},updateNodePositions:(S,h=!1)=>{const m=[];let p=[];const{nodeLookup:w,triggerNodeChanges:E,connection:N,updateConnection:_,onNodesChangeMiddlewareMap:M}=v();for(const[R,$]of S){const I=w.get(R),L=!!(I!=null&&I.expandParent&&(I!=null&&I.parentId)&&($!=null&&$.position)),F={id:R,type:"position",position:L?{x:Math.max(0,$.position.x),y:Math.max(0,$.position.y)}:$.position,dragging:h};if(I&&N.inProgress&&N.fromNode.id===I.id){const b=er(I,N.fromHandle,K.Left,!0);_({...N,from:b})}L&&I.parentId&&m.push({id:R,parentId:I.parentId,rect:{...$.internals.positionAbsolute,width:$.measured.width??0,height:$.measured.height??0}}),p.push(F)}if(m.length>0){const{parentLookup:R,nodeOrigin:$}=v(),I=Qc(m,w,R,$);p.push(...I)}for(const R of M.values())p=R(p);E(p)},triggerNodeChanges:S=>{const{onNodesChange:h,setNodes:m,nodes:p,hasDefaultNodes:w,debug:E}=v();if(S!=null&&S.length){if(w){const N=nb(S,p);m(N)}E&&console.log("React Flow: trigger node changes",S),h==null||h(S)}},triggerEdgeChanges:S=>{const{onEdgesChange:h,setEdges:m,edges:p,hasDefaultEdges:w,debug:E}=v();if(S!=null&&S.length){if(w){const N=rb(S,p);m(N)}E&&console.log("React Flow: trigger edge changes",S),h==null||h(S)}},addSelectedNodes:S=>{const{multiSelectionActive:h,edgeLookup:m,nodeLookup:p,triggerNodeChanges:w,triggerEdgeChanges:E}=v();if(h){const N=S.map(_=>Tn(_,!0));w(N);return}w(xr(p,new Set([...S]),!0)),E(xr(m))},addSelectedEdges:S=>{const{multiSelectionActive:h,edgeLookup:m,nodeLookup:p,triggerNodeChanges:w,triggerEdgeChanges:E}=v();if(h){const N=S.map(_=>Tn(_,!0));E(N);return}E(xr(m,new Set([...S]))),w(xr(p,new Set,!0))},unselectNodesAndEdges:({nodes:S,edges:h}={})=>{const{edges:m,nodes:p,nodeLookup:w,triggerNodeChanges:E,triggerEdgeChanges:N}=v(),_=S||p,M=h||m,R=_.map(I=>{const L=w.get(I.id);return L&&(L.selected=!1),Tn(I.id,!1)}),$=M.map(I=>Tn(I.id,!1));E(R),N($)},setMinZoom:S=>{const{panZoom:h,maxZoom:m}=v();h==null||h.setScaleExtent([S,m]),y({minZoom:S})},setMaxZoom:S=>{const{panZoom:h,minZoom:m}=v();h==null||h.setScaleExtent([m,S]),y({maxZoom:S})},setTranslateExtent:S=>{var h;(h=v().panZoom)==null||h.setTranslateExtent(S),y({translateExtent:S})},resetSelectedElements:()=>{const{edges:S,nodes:h,triggerNodeChanges:m,triggerEdgeChanges:p,elementsSelectable:w}=v();if(!w)return;const E=h.reduce((_,M)=>M.selected?[..._,Tn(M.id,!1)]:_,[]),N=S.reduce((_,M)=>M.selected?[..._,Tn(M.id,!1)]:_,[]);m(E),p(N)},setNodeExtent:S=>{const{nodes:h,nodeLookup:m,parentLookup:p,nodeOrigin:w,elevateNodesOnSelect:E,nodeExtent:N,zIndexMode:_}=v();S[0][0]===N[0][0]&&S[0][1]===N[0][1]&&S[1][0]===N[1][0]&&S[1][1]===N[1][1]||(Mu(h,m,p,{nodeOrigin:w,nodeExtent:S,elevateNodesOnSelect:E,checkEquality:!1,zIndexMode:_}),y({nodeExtent:S}))},panBy:S=>{const{transform:h,width:m,height:p,panZoom:w,translateExtent:E}=v();return FC({delta:S,panZoom:w,transform:h,translateExtent:E,width:m,height:p})},setCenter:async(S,h,m)=>{const{width:p,height:w,maxZoom:E,panZoom:N}=v();if(!N)return Promise.resolve(!1);const _=typeof(m==null?void 0:m.zoom)<"u"?m.zoom:E;return await N.setViewport({x:p/2-S*_,y:w/2-h*_,zoom:_},{duration:m==null?void 0:m.duration,ease:m==null?void 0:m.ease,interpolate:m==null?void 0:m.interpolate}),Promise.resolve(!0)},cancelConnection:()=>{y({connection:{...Kg}})},updateConnection:S=>{y({connection:S})},reset:()=>y({...bh()})}},Object.is);function wP({initialNodes:e,initialEdges:t,defaultNodes:n,defaultEdges:r,initialWidth:o,initialHeight:i,initialMinZoom:s,initialMaxZoom:l,initialFitViewOptions:a,fitView:u,nodeOrigin:f,nodeExtent:c,zIndexMode:d,children:y}){const[v]=k.useState(()=>xP({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,width:o,height:i,fitView:u,minZoom:s,maxZoom:l,fitViewOptions:a,nodeOrigin:f,nodeExtent:c,zIndexMode:d}));return g.jsx(A_,{value:v,children:g.jsx(lb,{children:y})})}function SP({children:e,nodes:t,edges:n,defaultNodes:r,defaultEdges:o,width:i,height:s,fitView:l,fitViewOptions:a,minZoom:u,maxZoom:f,nodeOrigin:c,nodeExtent:d,zIndexMode:y}){return k.useContext(bl)?g.jsx(g.Fragment,{children:e}):g.jsx(wP,{initialNodes:t,initialEdges:n,defaultNodes:r,defaultEdges:o,initialWidth:i,initialHeight:s,fitView:l,initialFitViewOptions:a,initialMinZoom:u,initialMaxZoom:f,nodeOrigin:c,nodeExtent:d,zIndexMode:y,children:e})}const kP={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0};function EP({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,className:o,nodeTypes:i,edgeTypes:s,onNodeClick:l,onEdgeClick:a,onInit:u,onMove:f,onMoveStart:c,onMoveEnd:d,onConnect:y,onConnectStart:v,onConnectEnd:x,onClickConnectStart:S,onClickConnectEnd:h,onNodeMouseEnter:m,onNodeMouseMove:p,onNodeMouseLeave:w,onNodeContextMenu:E,onNodeDoubleClick:N,onNodeDragStart:_,onNodeDrag:M,onNodeDragStop:R,onNodesDelete:$,onEdgesDelete:I,onDelete:L,onSelectionChange:F,onSelectionDragStart:b,onSelectionDrag:z,onSelectionDragStop:j,onSelectionContextMenu:A,onSelectionStart:C,onSelectionEnd:P,onBeforeDelete:T,connectionMode:O,connectionLineType:D=cn.Bezier,connectionLineStyle:U,connectionLineComponent:B,connectionLineContainerStyle:Y,deleteKeyCode:X="Backspace",selectionKeyCode:G="Shift",selectionOnDrag:V=!1,selectionMode:Q=ri.Full,panActivationKeyCode:te="Space",multiSelectionKeyCode:J=ii()?"Meta":"Control",zoomActivationKeyCode:q=ii()?"Meta":"Control",snapToGrid:Z,snapGrid:se,onlyRenderVisibleElements:ue=!1,selectNodesOnDrag:ie,nodesDraggable:Ie,autoPanOnNodeFocus:Jt,nodesConnectable:At,nodesFocusable:Ln,nodeOrigin:Qr=jy,edgesFocusable:Zr,edgesReconnectable:qr,elementsSelectable:Ll=!0,defaultViewport:wi=K_,minZoom:rr=.5,maxZoom:Jr=2,translateExtent:Jc=ni,preventScrolling:i0=!0,nodeExtent:Rl,defaultMarkerColor:s0="#b1b1b7",zoomOnScroll:l0=!0,zoomOnPinch:a0=!0,panOnScroll:u0=!1,panOnScrollSpeed:c0=.5,panOnScrollMode:d0=Wn.Free,zoomOnDoubleClick:f0=!0,panOnDrag:h0=!0,onPaneClick:p0,onPaneMouseEnter:m0,onPaneMouseMove:g0,onPaneMouseLeave:y0,onPaneScroll:v0,onPaneContextMenu:x0,paneClickDistance:w0=1,nodeClickDistance:S0=0,children:k0,onReconnect:E0,onReconnectStart:N0,onReconnectEnd:C0,onEdgeContextMenu:_0,onEdgeDoubleClick:b0,onEdgeMouseEnter:P0,onEdgeMouseMove:M0,onEdgeMouseLeave:j0,reconnectRadius:L0=10,onNodesChange:R0,onEdgesChange:I0,noDragClassName:T0="nodrag",noWheelClassName:z0="nowheel",noPanClassName:ed="nopan",fitView:td,fitViewOptions:nd,connectOnClick:A0,attributionPosition:$0,proOptions:D0,defaultEdgeOptions:O0,elevateNodesOnSelect:F0=!0,elevateEdgesOnSelect:H0=!1,disableKeyboardA11y:rd=!1,autoPanOnConnect:V0,autoPanOnNodeDrag:B0,autoPanSpeed:U0,connectionRadius:W0,isValidConnection:Y0,onError:X0,style:G0,id:od,nodeDragThreshold:K0,connectionDragThreshold:Q0,viewport:Z0,onViewportChange:q0,width:J0,height:ev,colorMode:tv="light",debug:nv,onScroll:Si,ariaLabelConfig:rv,zIndexMode:id="basic",...ov},iv){const Il=od||"1",sv=J_(tv),lv=k.useCallback(sd=>{sd.currentTarget.scrollTo({top:0,left:0,behavior:"instant"}),Si==null||Si(sd)},[Si]);return g.jsx("div",{"data-testid":"rf__wrapper",...ov,onScroll:lv,style:{...G0,...kP},ref:iv,className:Ee(["react-flow",o,sv]),id:od,role:"application",children:g.jsxs(SP,{nodes:e,edges:t,width:J0,height:ev,fitView:td,fitViewOptions:nd,minZoom:rr,maxZoom:Jr,nodeOrigin:Qr,nodeExtent:Rl,zIndexMode:id,children:[g.jsx(vP,{onInit:u,onNodeClick:l,onEdgeClick:a,onNodeMouseEnter:m,onNodeMouseMove:p,onNodeMouseLeave:w,onNodeContextMenu:E,onNodeDoubleClick:N,nodeTypes:i,edgeTypes:s,connectionLineType:D,connectionLineStyle:U,connectionLineComponent:B,connectionLineContainerStyle:Y,selectionKeyCode:G,selectionOnDrag:V,selectionMode:Q,deleteKeyCode:X,multiSelectionKeyCode:J,panActivationKeyCode:te,zoomActivationKeyCode:q,onlyRenderVisibleElements:ue,defaultViewport:wi,translateExtent:Jc,minZoom:rr,maxZoom:Jr,preventScrolling:i0,zoomOnScroll:l0,zoomOnPinch:a0,zoomOnDoubleClick:f0,panOnScroll:u0,panOnScrollSpeed:c0,panOnScrollMode:d0,panOnDrag:h0,onPaneClick:p0,onPaneMouseEnter:m0,onPaneMouseMove:g0,onPaneMouseLeave:y0,onPaneScroll:v0,onPaneContextMenu:x0,paneClickDistance:w0,nodeClickDistance:S0,onSelectionContextMenu:A,onSelectionStart:C,onSelectionEnd:P,onReconnect:E0,onReconnectStart:N0,onReconnectEnd:C0,onEdgeContextMenu:_0,onEdgeDoubleClick:b0,onEdgeMouseEnter:P0,onEdgeMouseMove:M0,onEdgeMouseLeave:j0,reconnectRadius:L0,defaultMarkerColor:s0,noDragClassName:T0,noWheelClassName:z0,noPanClassName:ed,rfId:Il,disableKeyboardA11y:rd,nodeExtent:Rl,viewport:Z0,onViewportChange:q0}),g.jsx(q_,{nodes:e,edges:t,defaultNodes:n,defaultEdges:r,onConnect:y,onConnectStart:v,onConnectEnd:x,onClickConnectStart:S,onClickConnectEnd:h,nodesDraggable:Ie,autoPanOnNodeFocus:Jt,nodesConnectable:At,nodesFocusable:Ln,edgesFocusable:Zr,edgesReconnectable:qr,elementsSelectable:Ll,elevateNodesOnSelect:F0,elevateEdgesOnSelect:H0,minZoom:rr,maxZoom:Jr,nodeExtent:Rl,onNodesChange:R0,onEdgesChange:I0,snapToGrid:Z,snapGrid:se,connectionMode:O,translateExtent:Jc,connectOnClick:A0,defaultEdgeOptions:O0,fitView:td,fitViewOptions:nd,onNodesDelete:$,onEdgesDelete:I,onDelete:L,onNodeDragStart:_,onNodeDrag:M,onNodeDragStop:R,onSelectionDrag:z,onSelectionDragStart:b,onSelectionDragStop:j,onMove:f,onMoveStart:c,onMoveEnd:d,noPanClassName:ed,nodeOrigin:Qr,rfId:Il,autoPanOnConnect:V0,autoPanOnNodeDrag:B0,autoPanSpeed:U0,onError:X0,connectionRadius:W0,isValidConnection:Y0,selectNodesOnDrag:ie,nodeDragThreshold:K0,connectionDragThreshold:Q0,onBeforeDelete:T,debug:nv,ariaLabelConfig:rv,zIndexMode:id}),g.jsx(G_,{onSelectionChange:F}),k0,g.jsx(B_,{proOptions:D0,position:$0}),g.jsx(V_,{rfId:Il,disableKeyboardA11y:rd})]})})}var NP=Ry(EP);function CP({dimensions:e,lineWidth:t,variant:n,className:r}){return g.jsx("path",{strokeWidth:t,d:`M${e[0]/2} 0 V${e[1]} M0 ${e[1]/2} H${e[0]}`,className:Ee(["react-flow__background-pattern",n,r])})}function _P({radius:e,className:t}){return g.jsx("circle",{cx:e,cy:e,r:e,className:Ee(["react-flow__background-pattern","dots",t])})}var En;(function(e){e.Lines="lines",e.Dots="dots",e.Cross="cross"})(En||(En={}));const bP={[En.Dots]:1,[En.Lines]:1,[En.Cross]:6},PP=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function n0({id:e,variant:t=En.Dots,gap:n=20,size:r,lineWidth:o=1,offset:i=0,color:s,bgColor:l,style:a,className:u,patternClassName:f}){const c=k.useRef(null),{transform:d,patternId:y}=re(PP,me),v=r||bP[t],x=t===En.Dots,S=t===En.Cross,h=Array.isArray(n)?n:[n,n],m=[h[0]*d[2]||1,h[1]*d[2]||1],p=v*d[2],w=Array.isArray(i)?i:[i,i],E=S?[p,p]:m,N=[w[0]*d[2]||1+E[0]/2,w[1]*d[2]||1+E[1]/2],_=`${y}${e||""}`;return g.jsxs("svg",{className:Ee(["react-flow__background",u]),style:{...a,...Ml,"--xy-background-color-props":l,"--xy-background-pattern-color-props":s},ref:c,"data-testid":"rf__background",children:[g.jsx("pattern",{id:_,x:d[0]%m[0],y:d[1]%m[1],width:m[0],height:m[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${N[0]},-${N[1]})`,children:x?g.jsx(_P,{radius:p/2,className:f}):g.jsx(CP,{dimensions:E,lineWidth:o,variant:t,className:f})}),g.jsx("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${_})`})]})}n0.displayName="Background";const MP=k.memo(n0);function jP(){return g.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",children:g.jsx("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"})})}function LP(){return g.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5",children:g.jsx("path",{d:"M0 0h32v4.2H0z"})})}function RP(){return g.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30",children:g.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 IP(){return g.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:g.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 TP(){return g.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:g.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 Ki({children:e,className:t,...n}){return g.jsx("button",{type:"button",className:Ee(["react-flow__controls-button",t]),...n,children:e})}const zP=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom,ariaLabelConfig:e.ariaLabelConfig});function r0({style:e,showZoom:t=!0,showFitView:n=!0,showInteractive:r=!0,fitViewOptions:o,onZoomIn:i,onZoomOut:s,onFitView:l,onInteractiveChange:a,className:u,children:f,position:c="bottom-left",orientation:d="vertical","aria-label":y}){const v=ge(),{isInteractive:x,minZoomReached:S,maxZoomReached:h,ariaLabelConfig:m}=re(zP,me),{zoomIn:p,zoomOut:w,fitView:E}=Zc(),N=()=>{p(),i==null||i()},_=()=>{w(),s==null||s()},M=()=>{E(o),l==null||l()},R=()=>{v.setState({nodesDraggable:!x,nodesConnectable:!x,elementsSelectable:!x}),a==null||a(!x)},$=d==="horizontal"?"horizontal":"vertical";return g.jsxs(Pl,{className:Ee(["react-flow__controls",$,u]),position:c,style:e,"data-testid":"rf__controls","aria-label":y??m["controls.ariaLabel"],children:[t&&g.jsxs(g.Fragment,{children:[g.jsx(Ki,{onClick:N,className:"react-flow__controls-zoomin",title:m["controls.zoomIn.ariaLabel"],"aria-label":m["controls.zoomIn.ariaLabel"],disabled:h,children:g.jsx(jP,{})}),g.jsx(Ki,{onClick:_,className:"react-flow__controls-zoomout",title:m["controls.zoomOut.ariaLabel"],"aria-label":m["controls.zoomOut.ariaLabel"],disabled:S,children:g.jsx(LP,{})})]}),n&&g.jsx(Ki,{className:"react-flow__controls-fitview",onClick:M,title:m["controls.fitView.ariaLabel"],"aria-label":m["controls.fitView.ariaLabel"],children:g.jsx(RP,{})}),r&&g.jsx(Ki,{className:"react-flow__controls-interactive",onClick:R,title:m["controls.interactive.ariaLabel"],"aria-label":m["controls.interactive.ariaLabel"],children:x?g.jsx(TP,{}):g.jsx(IP,{})}),f]})}r0.displayName="Controls";const AP=k.memo(r0);function $P({id:e,x:t,y:n,width:r,height:o,style:i,color:s,strokeColor:l,strokeWidth:a,className:u,borderRadius:f,shapeRendering:c,selected:d,onClick:y}){const{background:v,backgroundColor:x}=i||{},S=s||v||x;return g.jsx("rect",{className:Ee(["react-flow__minimap-node",{selected:d},u]),x:t,y:n,rx:f,ry:f,width:r,height:o,style:{fill:S,stroke:l,strokeWidth:a},shapeRendering:c,onClick:y?h=>y(h,e):void 0})}const DP=k.memo($P),OP=e=>e.nodes.map(t=>t.id),va=e=>e instanceof Function?e:()=>e;function FP({nodeStrokeColor:e,nodeColor:t,nodeClassName:n="",nodeBorderRadius:r=5,nodeStrokeWidth:o,nodeComponent:i=DP,onClick:s}){const l=re(OP,me),a=va(t),u=va(e),f=va(n),c=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";return g.jsx(g.Fragment,{children:l.map(d=>g.jsx(VP,{id:d,nodeColorFunc:a,nodeStrokeColorFunc:u,nodeClassNameFunc:f,nodeBorderRadius:r,nodeStrokeWidth:o,NodeComponent:i,onClick:s,shapeRendering:c},d))})}function HP({id:e,nodeColorFunc:t,nodeStrokeColorFunc:n,nodeClassNameFunc:r,nodeBorderRadius:o,nodeStrokeWidth:i,shapeRendering:s,NodeComponent:l,onClick:a}){const{node:u,x:f,y:c,width:d,height:y}=re(v=>{const{internals:x}=v.nodeLookup.get(e),S=x.userNode,{x:h,y:m}=x.positionAbsolute,{width:p,height:w}=qt(S);return{node:S,x:h,y:m,width:p,height:w}},me);return!u||u.hidden||!ny(u)?null:g.jsx(l,{x:f,y:c,width:d,height:y,style:u.style,selected:!!u.selected,className:r(u),color:t(u),borderRadius:o,strokeColor:n(u),strokeWidth:i,shapeRendering:s,onClick:a,id:u.id})}const VP=k.memo(HP);var BP=k.memo(FP);const UP=200,WP=150,YP=e=>!e.hidden,XP=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?ty(yi(e.nodeLookup,{filter:YP}),t):t,rfId:e.rfId,panZoom:e.panZoom,translateExtent:e.translateExtent,flowWidth:e.width,flowHeight:e.height,ariaLabelConfig:e.ariaLabelConfig}},GP="react-flow__minimap-desc";function o0({style:e,className:t,nodeStrokeColor:n,nodeColor:r,nodeClassName:o="",nodeBorderRadius:i=5,nodeStrokeWidth:s,nodeComponent:l,bgColor:a,maskColor:u,maskStrokeColor:f,maskStrokeWidth:c,position:d="bottom-right",onClick:y,onNodeClick:v,pannable:x=!1,zoomable:S=!1,ariaLabel:h,inversePan:m,zoomStep:p=1,offsetScale:w=5}){const E=ge(),N=k.useRef(null),{boundingRect:_,viewBB:M,rfId:R,panZoom:$,translateExtent:I,flowWidth:L,flowHeight:F,ariaLabelConfig:b}=re(XP,me),z=(e==null?void 0:e.width)??UP,j=(e==null?void 0:e.height)??WP,A=_.width/z,C=_.height/j,P=Math.max(A,C),T=P*z,O=P*j,D=w*P,U=_.x-(T-_.width)/2-D,B=_.y-(O-_.height)/2-D,Y=T+D*2,X=O+D*2,G=`${GP}-${R}`,V=k.useRef(0),Q=k.useRef();V.current=P,k.useEffect(()=>{if(N.current&&$)return Q.current=KC({domNode:N.current,panZoom:$,getTransform:()=>E.getState().transform,getViewScale:()=>V.current}),()=>{var Z;(Z=Q.current)==null||Z.destroy()}},[$]),k.useEffect(()=>{var Z;(Z=Q.current)==null||Z.update({translateExtent:I,width:L,height:F,inversePan:m,pannable:x,zoomStep:p,zoomable:S})},[x,S,m,p,I,L,F]);const te=y?Z=>{var ie;const[se,ue]=((ie=Q.current)==null?void 0:ie.pointer(Z))||[0,0];y(Z,{x:se,y:ue})}:void 0,J=v?k.useCallback((Z,se)=>{const ue=E.getState().nodeLookup.get(se).internals.userNode;v(Z,ue)},[]):void 0,q=h??b["minimap.ariaLabel"];return g.jsx(Pl,{position:d,style:{...e,"--xy-minimap-background-color-props":typeof a=="string"?a:void 0,"--xy-minimap-mask-background-color-props":typeof u=="string"?u:void 0,"--xy-minimap-mask-stroke-color-props":typeof f=="string"?f:void 0,"--xy-minimap-mask-stroke-width-props":typeof c=="number"?c*P:void 0,"--xy-minimap-node-background-color-props":typeof r=="string"?r:void 0,"--xy-minimap-node-stroke-color-props":typeof n=="string"?n:void 0,"--xy-minimap-node-stroke-width-props":typeof s=="number"?s:void 0},className:Ee(["react-flow__minimap",t]),"data-testid":"rf__minimap",children:g.jsxs("svg",{width:z,height:j,viewBox:`${U} ${B} ${Y} ${X}`,className:"react-flow__minimap-svg",role:"img","aria-labelledby":G,ref:N,onClick:te,children:[q&&g.jsx("title",{id:G,children:q}),g.jsx(BP,{onClick:J,nodeColor:r,nodeStrokeColor:n,nodeBorderRadius:i,nodeClassName:o,nodeStrokeWidth:s,nodeComponent:l}),g.jsx("path",{className:"react-flow__minimap-mask",d:`M${U-D},${B-D}h${Y+D*2}v${X+D*2}h${-Y-D*2}z
183
- M${M.x},${M.y}h${M.width}v${M.height}h${-M.width}z`,fillRule:"evenodd",pointerEvents:"none"})]})})}o0.displayName="MiniMap";k.memo(o0);const KP=e=>t=>e?`${Math.max(1/t.transform[2],1)}`:void 0,QP={[Hr.Line]:"right",[Hr.Handle]:"bottom-right"};function ZP({nodeId:e,position:t,variant:n=Hr.Handle,className:r,style:o=void 0,children:i,color:s,minWidth:l=10,minHeight:a=10,maxWidth:u=Number.MAX_VALUE,maxHeight:f=Number.MAX_VALUE,keepAspectRatio:c=!1,resizeDirection:d,autoScale:y=!0,shouldResize:v,onResizeStart:x,onResize:S,onResizeEnd:h}){const m=Ay(),p=typeof e=="string"?e:m,w=ge(),E=k.useRef(null),N=n===Hr.Handle,_=re(k.useCallback(KP(N&&y),[N,y]),me),M=k.useRef(null),R=t??QP[n];k.useEffect(()=>{if(!(!E.current||!p))return M.current||(M.current=u_({domNode:E.current,nodeId:p,getStoreItems:()=>{const{nodeLookup:I,transform:L,snapGrid:F,snapToGrid:b,nodeOrigin:z,domNode:j}=w.getState();return{nodeLookup:I,transform:L,snapGrid:F,snapToGrid:b,nodeOrigin:z,paneDomNode:j}},onChange:(I,L)=>{const{triggerNodeChanges:F,nodeLookup:b,parentLookup:z,nodeOrigin:j}=w.getState(),A=[],C={x:I.x,y:I.y},P=b.get(p);if(P&&P.expandParent&&P.parentId){const T=P.origin??j,O=I.width??P.measured.width??0,D=I.height??P.measured.height??0,U={id:P.id,parentId:P.parentId,rect:{width:O,height:D,...ry({x:I.x??P.position.x,y:I.y??P.position.y},{width:O,height:D},P.parentId,b,T)}},B=Qc([U],b,z,j);A.push(...B),C.x=I.x?Math.max(T[0]*O,I.x):void 0,C.y=I.y?Math.max(T[1]*D,I.y):void 0}if(C.x!==void 0&&C.y!==void 0){const T={id:p,type:"position",position:{...C}};A.push(T)}if(I.width!==void 0&&I.height!==void 0){const O={id:p,type:"dimensions",resizing:!0,setAttributes:d?d==="horizontal"?"width":"height":!0,dimensions:{width:I.width,height:I.height}};A.push(O)}for(const T of L){const O={...T,type:"position"};A.push(O)}F(A)},onEnd:({width:I,height:L})=>{const F={id:p,type:"dimensions",resizing:!1,dimensions:{width:I,height:L}};w.getState().triggerNodeChanges([F])}})),M.current.update({controlPosition:R,boundaries:{minWidth:l,minHeight:a,maxWidth:u,maxHeight:f},keepAspectRatio:c,resizeDirection:d,onResizeStart:x,onResize:S,onResizeEnd:h,shouldResize:v}),()=>{var I;(I=M.current)==null||I.destroy()}},[R,l,a,u,f,c,x,S,h,v]);const $=R.split("-");return g.jsx("div",{className:Ee(["react-flow__resize-control","nodrag",...$,n,r]),ref:E,style:{...o,scale:_,...s&&{[N?"backgroundColor":"borderColor"]:s}},children:i})}k.memo(ZP);function qP(){const[e,t]=k.useState([]),[n,r]=k.useState([]),[o,i]=k.useState(!0);k.useEffect(()=>{Promise.all([bn.discovery.agents(),bn.observations.permissions()]).then(([a,u])=>{t(a.data??[]),r(u.data??[]),i(!1)}).catch(()=>i(!1))},[]);const{nodes:s,edges:l}=k.useMemo(()=>{const a=[],u=[],f=new Set;return e.forEach((c,d)=>{a.push({id:`agent-${c.id}`,position:{x:100,y:d*120},data:{label:`${c.emoji||"🤖"} ${c.name}`},style:{background:"#18181b",color:"#fafafa",border:"1px solid #27272a",borderRadius:"8px",padding:"8px 16px",fontSize:"13px"}})}),n.forEach(c=>{const d=`tool-${c.toolName}`;f.has(c.toolName)||(f.add(c.toolName),a.push({id:d,position:{x:400,y:f.size*80},data:{label:`🔧 ${c.toolName}`},style:{background:"#09090b",color:"#a1a1aa",border:"1px solid #3f3f46",borderRadius:"8px",padding:"6px 12px",fontSize:"12px"}})),u.push({id:`e-${c.agentId}-${c.toolName}`,source:`agent-${c.agentId}`,target:d,animated:c.accessPattern==="write",style:{stroke:c.accessPattern==="write"?"#eab308":"#3f3f46"}})}),{nodes:a,edges:u}},[e,n]);return o?g.jsx("div",{className:"flex h-40 items-center justify-center text-sm text-muted-foreground",children:"Loading..."}):g.jsxs("div",{className:"space-y-6",children:[g.jsxs("div",{children:[g.jsx("h1",{className:"text-xl font-semibold tracking-tight",children:"Identity Graph"}),g.jsx("p",{className:"mt-1 text-sm text-muted-foreground",children:"Agent-to-tool relationship visualization"})]}),g.jsx("div",{className:"h-[600px] rounded-lg border border-border bg-card",children:g.jsxs(NP,{nodes:s,edges:l,fitView:!0,proOptions:{hideAttribution:!0},children:[g.jsx(MP,{color:"#27272a",gap:20}),g.jsx(AP,{})]})})]})}function JP({children:e}){const{isAuthenticated:t,isLoading:n}=Ic();return n?g.jsx("div",{className:"flex min-h-screen items-center justify-center",children:g.jsx("div",{className:"text-muted-foreground text-sm",children:"Loading..."})}):t?g.jsx(g.Fragment,{children:e}):g.jsx(hu,{to:"/login",replace:!0})}function e4(){return g.jsxs(_1,{children:[g.jsx(ft,{path:"/login",element:g.jsx(x2,{})}),g.jsxs(ft,{element:g.jsx(JP,{children:g.jsx(v2,{})}),children:[g.jsx(ft,{index:!0,element:g.jsx(hu,{to:"/inventory/agents",replace:!0})}),g.jsx(ft,{path:"/inventory/agents",element:g.jsx(S2,{})}),g.jsx(ft,{path:"/inventory/agents/:id",element:g.jsx(N2,{})}),g.jsx(ft,{path:"/inventory/identities",element:g.jsx(M2,{})}),g.jsx(ft,{path:"/inventory/permissions",element:g.jsx(j2,{})}),g.jsx(ft,{path:"/secure/risk",element:g.jsx(L2,{})}),g.jsx(ft,{path:"/secure/graph",element:g.jsx(qP,{})})]}),g.jsx(ft,{path:"*",element:g.jsx(hu,{to:"/inventory/agents",replace:!0})})]})}xa.createRoot(document.getElementById("root")).render(g.jsx(Dh.StrictMode,{children:g.jsx(Z1,{basename:"/dashboard",children:g.jsx(lS,{children:g.jsx(cS,{children:g.jsx(e4,{})})})})}));
184
- //# sourceMappingURL=index-Ib9IZzlG.js.map
183
+ M${M.x},${M.y}h${M.width}v${M.height}h${-M.width}z`,fillRule:"evenodd",pointerEvents:"none"})]})})}o0.displayName="MiniMap";k.memo(o0);const KP=e=>t=>e?`${Math.max(1/t.transform[2],1)}`:void 0,QP={[Hr.Line]:"right",[Hr.Handle]:"bottom-right"};function ZP({nodeId:e,position:t,variant:n=Hr.Handle,className:r,style:o=void 0,children:i,color:s,minWidth:l=10,minHeight:a=10,maxWidth:u=Number.MAX_VALUE,maxHeight:f=Number.MAX_VALUE,keepAspectRatio:c=!1,resizeDirection:d,autoScale:y=!0,shouldResize:v,onResizeStart:x,onResize:S,onResizeEnd:h}){const m=Ay(),p=typeof e=="string"?e:m,w=ge(),E=k.useRef(null),N=n===Hr.Handle,_=re(k.useCallback(KP(N&&y),[N,y]),me),M=k.useRef(null),R=t??QP[n];k.useEffect(()=>{if(!(!E.current||!p))return M.current||(M.current=u_({domNode:E.current,nodeId:p,getStoreItems:()=>{const{nodeLookup:I,transform:L,snapGrid:F,snapToGrid:b,nodeOrigin:z,domNode:j}=w.getState();return{nodeLookup:I,transform:L,snapGrid:F,snapToGrid:b,nodeOrigin:z,paneDomNode:j}},onChange:(I,L)=>{const{triggerNodeChanges:F,nodeLookup:b,parentLookup:z,nodeOrigin:j}=w.getState(),A=[],C={x:I.x,y:I.y},P=b.get(p);if(P&&P.expandParent&&P.parentId){const T=P.origin??j,O=I.width??P.measured.width??0,D=I.height??P.measured.height??0,U={id:P.id,parentId:P.parentId,rect:{width:O,height:D,...ry({x:I.x??P.position.x,y:I.y??P.position.y},{width:O,height:D},P.parentId,b,T)}},B=Qc([U],b,z,j);A.push(...B),C.x=I.x?Math.max(T[0]*O,I.x):void 0,C.y=I.y?Math.max(T[1]*D,I.y):void 0}if(C.x!==void 0&&C.y!==void 0){const T={id:p,type:"position",position:{...C}};A.push(T)}if(I.width!==void 0&&I.height!==void 0){const O={id:p,type:"dimensions",resizing:!0,setAttributes:d?d==="horizontal"?"width":"height":!0,dimensions:{width:I.width,height:I.height}};A.push(O)}for(const T of L){const O={...T,type:"position"};A.push(O)}F(A)},onEnd:({width:I,height:L})=>{const F={id:p,type:"dimensions",resizing:!1,dimensions:{width:I,height:L}};w.getState().triggerNodeChanges([F])}})),M.current.update({controlPosition:R,boundaries:{minWidth:l,minHeight:a,maxWidth:u,maxHeight:f},keepAspectRatio:c,resizeDirection:d,onResizeStart:x,onResize:S,onResizeEnd:h,shouldResize:v}),()=>{var I;(I=M.current)==null||I.destroy()}},[R,l,a,u,f,c,x,S,h,v]);const $=R.split("-");return g.jsx("div",{className:Ee(["react-flow__resize-control","nodrag",...$,n,r]),ref:E,style:{...o,scale:_,...s&&{[N?"backgroundColor":"borderColor"]:s}},children:i})}k.memo(ZP);function qP(){const[e,t]=k.useState([]),[n,r]=k.useState([]),[o,i]=k.useState(!0);k.useEffect(()=>{Promise.all([bn.discovery.agents(),bn.observations.permissions()]).then(([a,u])=>{t(a.data??[]),r(u.data??[]),i(!1)}).catch(()=>i(!1))},[]);const{nodes:s,edges:l}=k.useMemo(()=>{const a=[],u=[],f=new Set,c=new Map;return e.forEach((d,y)=>{const v=`agent-${d.id}`;d.registeredAgentId&&c.set(d.registeredAgentId,v),c.set(d.id,v),a.push({id:v,position:{x:100,y:y*120},data:{label:`${d.emoji||"🤖"} ${d.name}`},style:{background:"#18181b",color:"#fafafa",border:"1px solid #27272a",borderRadius:"8px",padding:"8px 16px",fontSize:"13px"}})}),n.forEach(d=>{const y=`tool-${d.toolName}`;f.has(d.toolName)||(f.add(d.toolName),a.push({id:y,position:{x:400,y:f.size*80},data:{label:`🔧 ${d.toolName}`},style:{background:"#09090b",color:"#a1a1aa",border:"1px solid #3f3f46",borderRadius:"8px",padding:"6px 12px",fontSize:"12px"}}));const v=c.get(d.agentId)??`agent-${d.agentId}`;u.push({id:`e-${d.agentId}-${d.toolName}`,source:v,target:y,animated:d.accessPattern==="write",style:{stroke:d.accessPattern==="write"?"#eab308":"#3f3f46"}})}),{nodes:a,edges:u}},[e,n]);return o?g.jsx("div",{className:"flex h-40 items-center justify-center text-sm text-muted-foreground",children:"Loading..."}):g.jsxs("div",{className:"space-y-6",children:[g.jsxs("div",{children:[g.jsx("h1",{className:"text-xl font-semibold tracking-tight",children:"Identity Graph"}),g.jsx("p",{className:"mt-1 text-sm text-muted-foreground",children:"Agent-to-tool relationship visualization"})]}),g.jsx("div",{className:"h-[600px] rounded-lg border border-border bg-card",children:g.jsxs(NP,{nodes:s,edges:l,fitView:!0,proOptions:{hideAttribution:!0},children:[g.jsx(MP,{color:"#27272a",gap:20}),g.jsx(AP,{})]})})]})}function JP({children:e}){const{isAuthenticated:t,isLoading:n}=Ic();return n?g.jsx("div",{className:"flex min-h-screen items-center justify-center",children:g.jsx("div",{className:"text-muted-foreground text-sm",children:"Loading..."})}):t?g.jsx(g.Fragment,{children:e}):g.jsx(hu,{to:"/login",replace:!0})}function e4(){return g.jsxs(_1,{children:[g.jsx(ft,{path:"/login",element:g.jsx(x2,{})}),g.jsxs(ft,{element:g.jsx(JP,{children:g.jsx(v2,{})}),children:[g.jsx(ft,{index:!0,element:g.jsx(hu,{to:"/inventory/agents",replace:!0})}),g.jsx(ft,{path:"/inventory/agents",element:g.jsx(S2,{})}),g.jsx(ft,{path:"/inventory/agents/:id",element:g.jsx(N2,{})}),g.jsx(ft,{path:"/inventory/identities",element:g.jsx(M2,{})}),g.jsx(ft,{path:"/inventory/permissions",element:g.jsx(j2,{})}),g.jsx(ft,{path:"/secure/risk",element:g.jsx(L2,{})}),g.jsx(ft,{path:"/secure/graph",element:g.jsx(qP,{})})]}),g.jsx(ft,{path:"*",element:g.jsx(hu,{to:"/inventory/agents",replace:!0})})]})}xa.createRoot(document.getElementById("root")).render(g.jsx(Dh.StrictMode,{children:g.jsx(Z1,{basename:"/dashboard",children:g.jsx(lS,{children:g.jsx(cS,{children:g.jsx(e4,{})})})})}));
184
+ //# sourceMappingURL=index-COruelcr.js.map