likec4 1.56.0 → 1.57.0

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.
Files changed (154) hide show
  1. package/__app__/chunks/AIChat2.mjs +2 -0
  2. package/__app__/chunks/DiagramActorProvider.mjs +4 -4
  3. package/__app__/chunks/EmbedPage.mjs +1 -0
  4. package/__app__/chunks/ExportPage.mjs +2 -0
  5. package/__app__/chunks/LikeC4Diagram.mjs +5 -5
  6. package/__app__/chunks/LikeC4Styles.mjs +11 -11
  7. package/__app__/chunks/Markdown.mjs +1 -0
  8. package/__app__/chunks/NavigationPanel.mjs +1 -1
  9. package/__app__/chunks/ViewReact.mjs +1 -1
  10. package/__app__/chunks/adhoc-editor.mjs +1 -1
  11. package/__app__/chunks/aichat.mjs +1 -0
  12. package/__app__/chunks/box.mjs +1 -0
  13. package/__app__/chunks/create-style-context.mjs +1 -0
  14. package/__app__/chunks/css.mjs +1 -0
  15. package/__app__/chunks/factory.mjs +1 -0
  16. package/__app__/chunks/hooks.mjs +1 -1
  17. package/__app__/chunks/hstack.mjs +1 -0
  18. package/__app__/chunks/libs/@dagrejs/dagre.mjs +1 -1
  19. package/__app__/chunks/libs/@floating-ui/core.mjs +1 -1
  20. package/__app__/chunks/libs/@floating-ui/dom.mjs +1 -1
  21. package/__app__/chunks/libs/@floating-ui/react.mjs +1 -1
  22. package/__app__/chunks/libs/@mantine/core.mjs +24 -24
  23. package/__app__/chunks/libs/@mantine/hooks.mjs +1 -1
  24. package/__app__/chunks/libs/@nanostores/react.mjs +1 -1
  25. package/__app__/chunks/libs/@react-hookz/web.mjs +1 -1
  26. package/__app__/chunks/libs/@tabler/icons-react.mjs +347 -4
  27. package/__app__/chunks/libs/@tanstack/ai-client.mjs +2 -0
  28. package/__app__/chunks/libs/@tanstack/ai-react-ui.mjs +1 -0
  29. package/__app__/chunks/libs/@tanstack/ai-react.mjs +1 -0
  30. package/__app__/chunks/libs/@tanstack/ai.mjs +2 -0
  31. package/__app__/chunks/libs/@tanstack/history.mjs +1 -1
  32. package/__app__/chunks/libs/@tanstack/react-router.mjs +3 -3
  33. package/__app__/chunks/libs/@tanstack/router-core.mjs +1 -1
  34. package/__app__/chunks/libs/@xstate/react.mjs +1 -1
  35. package/__app__/chunks/libs/@xstate/store.mjs +1 -1
  36. package/__app__/chunks/libs/@xyflow/react.mjs +3 -3
  37. package/__app__/chunks/libs/@zag-js/anatomy.mjs +1 -1
  38. package/__app__/chunks/libs/@zag-js/collection.mjs +1 -1
  39. package/__app__/chunks/libs/@zag-js/core.mjs +1 -1
  40. package/__app__/chunks/libs/@zag-js/react.mjs +1 -1
  41. package/__app__/chunks/libs/@zag-js/tree-view.mjs +1 -1
  42. package/__app__/chunks/libs/bezier-js.mjs +1 -1
  43. package/__app__/chunks/libs/copy-anything.mjs +1 -0
  44. package/__app__/chunks/libs/d3-path.mjs +1 -1
  45. package/__app__/chunks/libs/d3-shape.mjs +1 -1
  46. package/__app__/chunks/libs/fast-equals.mjs +1 -1
  47. package/__app__/chunks/libs/framer-motion.mjs +3 -3
  48. package/__app__/chunks/libs/html-to-image.mjs +2 -2
  49. package/__app__/chunks/libs/motion-dom.mjs +1 -1
  50. package/__app__/chunks/libs/nanostores.mjs +1 -1
  51. package/__app__/chunks/libs/react-error-boundary.mjs +1 -1
  52. package/__app__/chunks/libs/react-resizable-panels.mjs +1 -1
  53. package/__app__/chunks/libs/remeda.mjs +1 -1
  54. package/__app__/chunks/libs/superjson.mjs +1 -0
  55. package/__app__/chunks/libs/zod.mjs +39 -14
  56. package/__app__/chunks/rolldown-runtime.mjs +1 -1
  57. package/__app__/chunks/styles.css.mjs +1 -1
  58. package/__app__/chunks/txt.mjs +1 -0
  59. package/__app__/chunks/useLikeC4Project.mjs +1 -1
  60. package/__app__/codegen/webcomponent.mjs +221 -69
  61. package/__app__/src/aichat/index.mjs +1 -0
  62. package/__app__/src/main.mjs +45 -1
  63. package/__app__/src/pages/AdHocViewEditor.mjs +1 -1
  64. package/__app__/src/pages/EmbedPage.mjs +1 -1
  65. package/__app__/src/pages/ExportPage.mjs +1 -1
  66. package/__app__/src/pages/ProjectsOverview.mjs +1 -1
  67. package/__app__/src/pages/ViewAsD2.mjs +1 -1
  68. package/__app__/src/pages/ViewAsDot.mjs +1 -1
  69. package/__app__/src/pages/ViewAsMmd.mjs +1 -1
  70. package/__app__/src/pages/ViewAsPuml.mjs +1 -1
  71. package/__app__/src/pages/ViewEditor.mjs +1 -1
  72. package/__app__/src/style.css +1 -1
  73. package/config/schema.json +14 -41
  74. package/dist/chunks/enableServer.mjs +1 -0
  75. package/dist/chunks/index2.d.mts +569 -377
  76. package/dist/chunks/libs/@hono/mcp.mjs +33 -8
  77. package/dist/chunks/libs/@hono/node-server.mjs +1 -1
  78. package/dist/chunks/libs/@modelcontextprotocol/sdk.mjs +7 -7
  79. package/dist/chunks/libs/@ts-graphviz/ast.mjs +3 -0
  80. package/dist/chunks/libs/@ts-graphviz/common.d.mts +9 -0
  81. package/dist/chunks/libs/@ts-graphviz/core.mjs +1 -0
  82. package/dist/chunks/libs/ajv.mjs +1 -1
  83. package/dist/chunks/libs/ansi-styles.mjs +1 -1
  84. package/dist/chunks/libs/boxen.mjs +2 -2
  85. package/dist/chunks/libs/chevrotain.mjs +2 -2
  86. package/dist/chunks/libs/conf.mjs +1 -1
  87. package/dist/chunks/libs/langium.d.mts +5 -5
  88. package/dist/chunks/libs/langium.mjs +10 -10
  89. package/dist/chunks/libs/merge-error-cause.mjs +1 -1
  90. package/dist/chunks/libs/pako.mjs +3 -1
  91. package/dist/chunks/libs/remeda.mjs +1 -1
  92. package/dist/chunks/libs/ts-graphviz.mjs +1 -4
  93. package/dist/chunks/libs/unctx.mjs +1 -0
  94. package/dist/chunks/libs/vscode-languageserver.mjs +1 -1
  95. package/dist/chunks/libs/zod.d.mts +60 -25
  96. package/dist/chunks/node.mjs +62 -45
  97. package/dist/chunks/plugin.mjs +234 -41
  98. package/dist/chunks/sequence-view.mjs +1 -1
  99. package/dist/cli/index.mjs +142 -139
  100. package/dist/index.d.mts +1 -130
  101. package/dist/model/index.d.mts +1 -1
  102. package/dist/vite-plugin/index.d.mts +53 -2
  103. package/dist/vite-plugin/internal/index.d.mts +331 -3
  104. package/dist/vite-plugin/internal/index.mjs +1 -1
  105. package/package.json +65 -51
  106. package/react/index.d.mts +82 -50
  107. package/react/index.mjs +34017 -32421
  108. package/vite-plugin-modules.d.ts +4 -0
  109. package/__app__/chunks/ColorSchemeToggle.mjs +0 -1
  110. package/__app__/chunks/Fallback.mjs +0 -1
  111. package/__app__/chunks/Header.mjs +0 -13
  112. package/__app__/chunks/IconRenderer.mjs +0 -1
  113. package/__app__/chunks/LikeC4ModelContext.mjs +0 -1
  114. package/__app__/chunks/LikeC4ModelContext2.mjs +0 -1
  115. package/__app__/chunks/StaticLikeC4Diagram.mjs +0 -1
  116. package/__app__/chunks/__root.mjs +0 -1
  117. package/__app__/chunks/libs/motion.mjs +0 -1
  118. package/__app__/chunks/libs/xstate.mjs +0 -1
  119. package/__app__/chunks/safeCtx.mjs +0 -1
  120. package/__app__/chunks/searchParams.mjs +0 -1
  121. package/__app__/chunks/single-index.mjs +0 -1
  122. package/__app__/chunks/styled-system.mjs +0 -1
  123. package/__app__/chunks/useUpdateEffect.mjs +0 -1
  124. package/__app__/src/routeTree.gen.mjs +0 -1
  125. package/__app__/src/routes/__root.mjs +0 -1
  126. package/__app__/src/routes/_single/adhoc.mjs +0 -1
  127. package/__app__/src/routes/_single/embed._viewId.mjs +0 -1
  128. package/__app__/src/routes/_single/export._viewId.mjs +0 -1
  129. package/__app__/src/routes/_single/route.mjs +0 -1
  130. package/__app__/src/routes/_single/single-index.mjs +0 -1
  131. package/__app__/src/routes/_single/view._viewId.d2.mjs +0 -1
  132. package/__app__/src/routes/_single/view._viewId.dot.mjs +0 -1
  133. package/__app__/src/routes/_single/view._viewId.index.mjs +0 -1
  134. package/__app__/src/routes/_single/view._viewId.mjs +0 -1
  135. package/__app__/src/routes/_single/view._viewId.mmd.mjs +0 -1
  136. package/__app__/src/routes/_single/view._viewId.puml.mjs +0 -1
  137. package/__app__/src/routes/_single/webcomponent._.mjs +0 -33
  138. package/__app__/src/routes/index.mjs +0 -1
  139. package/__app__/src/routes/project._projectId/-components.mjs +0 -1
  140. package/__app__/src/routes/project._projectId/adhoc.mjs +0 -1
  141. package/__app__/src/routes/project._projectId/embed._viewId.mjs +0 -1
  142. package/__app__/src/routes/project._projectId/export._viewId.mjs +0 -1
  143. package/__app__/src/routes/project._projectId/index.mjs +0 -1
  144. package/__app__/src/routes/project._projectId/route.mjs +0 -1
  145. package/__app__/src/routes/project._projectId/view._viewId.d2.mjs +0 -1
  146. package/__app__/src/routes/project._projectId/view._viewId.dot.mjs +0 -1
  147. package/__app__/src/routes/project._projectId/view._viewId.index.mjs +0 -1
  148. package/__app__/src/routes/project._projectId/view._viewId.mjs +0 -1
  149. package/__app__/src/routes/project._projectId/view._viewId.mmd.mjs +0 -1
  150. package/__app__/src/routes/project._projectId/view._viewId.puml.mjs +0 -1
  151. package/__app__/src/routes/projects.mjs +0 -1
  152. package/dist/chunks/libs/ts-graphviz.d.mts +0 -12
  153. package/dist/vite-plugin/internal/chunks/libs/@nanostores/react.d.mts +0 -269
  154. package/dist/vite-plugin/internal/chunks/libs/nanostores.d.mts +0 -59
@@ -1,10 +1,10 @@
1
- import{i as e,s as t}from"./rolldown-runtime.mjs";import{B as n,C as r,F as i,G as a,H as o,I as s,J as c,K as l,L as u,M as d,O as f,P as p,S as m,U as h,V as g,W as _,X as v,Y as y,Z as b,_ as x,a as S,b as C,c as w,d as T,g as E,h as D,k as O,m as k,n as ee,o as te,p as ne,q as A,r as re,t as ie,u as ae,v as j,w as oe,x as se,y as ce,z as le}from"./libs/remeda.mjs";import{At as ue,D as de,J as fe,Mt as pe,O as me,R as he,St as ge,T as _e,Ut as ve,V as ye,W as be,d as xe,dt as Se,g as Ce,h as we,ht as Te,i as Ee,jt as De,l as Oe,m as ke,mt as Ae,pt as je,qt as Me,rt as Ne,u as Pe,vt as Fe,w as Ie}from"./libs/@mantine/core.mjs";import{a as Le,f as Re,p as ze,s as Be}from"./libs/@mantine/hooks.mjs";import{C as Ve,E as He,M,N,S as Ue,T as We,g as Ge,i as Ke,j as qe,m as Je,p as Ye,s as Xe,x as Ze}from"./styled-system.mjs";import{I as Qe,V as $e,X as et,_ as tt,c as nt,f as rt,l as it}from"./libs/@tabler/icons-react.mjs";import{n as at}from"./IconRenderer.mjs";import{i as ot,n as st,o as ct,p as lt}from"./libs/@react-hookz/web.mjs";import{C as ut,_ as dt,a as ft,b as pt,c as mt,h as ht,i as gt,l as _t,m as vt,p as yt,r as bt,u as xt,v as St,x as Ct,y as wt}from"./libs/@xyflow/react.mjs";import{n as Tt,t as P}from"./libs/fast-equals.mjs";import{B as Et,F as Dt,G as Ot,H as kt,I as At,K as jt,L as Mt,M as Nt,N as F,P as Pt,R as Ft,T as It,U as Lt,V as I,W as Rt,_ as zt,a as Bt,c as Vt,d as Ht,f as Ut,g as Wt,h as Gt,i as Kt,j as qt,k as Jt,l as Yt,m as Xt,o as Zt,p as Qt,q as L,s as $t,u as en,v as tn,w as nn,y as rn,z as an}from"./LikeC4Styles.mjs";import{n as on,t as sn}from"./useUpdateEffect.mjs";import{P as cn,g as ln,lr as un,mr as dn}from"./libs/framer-motion.mjs";import{n as R,r as z,t as fn}from"./libs/@xstate/react.mjs";import{i as pn}from"./LikeC4ModelContext.mjs";import{t as mn}from"./libs/react-error-boundary.mjs";import{t as hn}from"./libs/motion.mjs";import{n as gn,t as B}from"./libs/xstate.mjs";import{t as _n}from"./libs/@dagrejs/dagre.mjs";import{n as vn,t as yn}from"./libs/d3-shape.mjs";import{createContext as bn,forwardRef as xn,memo as Sn,useCallback as Cn,useContext as wn,useEffect as Tn,useMemo as En,useRef as Dn,useState as On}from"react";import{c as V}from"react/compiler-runtime";import{Fragment as kn,jsx as H,jsxs as U}from"react/jsx-runtime";import{BBox as An,DefaultMap as jn,GroupElementKind as Mn,Queue as Nn,RichText as Pn,exact as Fn,getParallelStepsPrefix as In,hasProp as Ln,invariant as W,isNonEmptyArray as Rn,isStepEdgeId as zn,isTagColorSpecified as Bn,nonNullable as G,nonexhaustive as Vn,whereOperatorAsPredicate as Hn}from"@likec4/core";import{BBox as Un,convertPoint as Wn,vector as K}from"@likec4/core/geometry";import{DefaultMap as Gn,delay as Kn,difference as qn,ifind as Jn,invariant as q,isome as Yn,nonNullable as J,nonexhaustive as Xn,stringHash as Zn,toArray as Qn}from"@likec4/core/utils";import{DefaultTagColors as $n,ElementShapes as er}from"@likec4/core/styles";import{computeRelationshipsView as tr,treeFromElements as nr}from"@likec4/core/compute-view";import{exact as rr,preferSummary as ir}from"@likec4/core/types";import{castDraft as ar,produce as or,setAutoFreeze as sr}from"immer";const cr={};function _update$1(e,t){return e===t?e:(t=t.map(t=>{let n=e.find(e=>e.id===t.id&&e.type===t.type&&e.source===t.source&&e.target===t.target);if(!n)return t;if(n===t)return n;let r=le(n.data,t.data),i=r?n.data:t.data;return r||(s(n.data.hovered)&&!s(t.data.hovered)&&(i={...i,hovered:n.data.hovered}),s(n.data.dimmed)&&!s(t.data.dimmed)&&(i={...i,dimmed:n.data.dimmed}),s(n.data.active)&&!s(t.data.active)&&(i={...i,active:n.data.active})),r&&P(n.hidden,t.hidden??n.hidden)&&P(n.selected,t.selected??n.selected)&&P(n.selectable,t.selectable??n.selectable)&&P(n.focusable,t.focusable??n.focusable)&&P(n.animated,t.animated??n.animated)&&P(n.className,t.className)&&P(n.zIndex,t.zIndex??n.zIndex)&&P(n.label,t.label)&&P(n.sourceHandle,t.sourceHandle)&&P(n.targetHandle,t.targetHandle)&&P(n.style??cr,t.style??cr)?n:{...ae(n,s),...ae(t,s),data:i}}),oe(e,t)?e:t)}e(_update$1,`_update`);function updateEdges(e,t){return s(t)?_update$1(e,t):(t=e,e=>_update$1(e,t))}const lr={};function _update(e,t){return e===t?e:(t=t.map(t=>{let n=e.find(e=>e.id===t.id&&e.type===t.type);if(!n)return t;if(n===t)return n;let r=le(n.data,t.data),i=r?n.data:t.data;r||(s(n.data.hovered)&&!s(t.data.hovered)&&(i={...i,hovered:n.data.hovered}),s(n.data.dimmed)&&!s(t.data.dimmed)&&(i={...i,dimmed:n.data.dimmed}));let{width:a,height:o}=St(n),c=Object.hasOwn(n,`handles`)||Object.hasOwn(t,`handles`),l=!c||P(n.handles??[],t.handles??[]);if(r&&l&&P(a,t.width??t.initialWidth)&&P(o,t.height??t.initialHeight)&&P(n.parentId??null,t.parentId??null)&&P(n.hidden,t.hidden??n.hidden)&&P(n.selected,t.selected??n.selected)&&P(n.selectable,t.selectable??n.selectable)&&P(n.focusable,t.focusable??n.focusable)&&P(n.draggable,t.draggable??n.draggable)&&P(n.dragHandle,t.dragHandle)&&P(n.className,t.className)&&P(n.zIndex,t.zIndex??n.zIndex)&&P(n.position,t.position)&&P(n.domAttributes??lr,t.domAttributes??lr)&&P(n.style??lr,t.style??lr))return n;let u=c&&l?n.handles:t.handles;return{...ae(n,(e,t)=>s(e)&&t!==`parentId`&&t!==`handles`),...`measured`in n&&{measured:{width:t.width??t.initialWidth,height:t.height??t.initialHeight}},...ae(t,s),width:t.width??t.initialWidth,height:t.height??t.initialHeight,...u&&{handles:u},data:i}}),Tt(e,t)?e:t)}function updateNodes(e,t){return s(t)?_update(e,t):(t=e,e=>_update(e,t))}const ur={onNavigateTo:null,onNodeClick:null,onNodeContextMenu:null,onCanvasContextMenu:null,onEdgeClick:null,onEdgeContextMenu:null,onCanvasClick:null,onCanvasDblClick:null,onLogoClick:null,onOpenSource:null,onInitialized:null,onLayoutTypeChange:null},dr=C(ur),fr=bn({current:ur}),pr=bn({...x(dr,e=>[e,null]),handlersRef:{current:ur}});function DiagramEventHandlers({handlers:e,children:t}){let n=lt(e),r=En(()=>({...x(dr,e=>n.current[e]?[e,(...t)=>n.current[e]?.(...t)]:[e,null]),handlersRef:n}),[n,...dr.map(t=>d(e[t]))]);return H(fr.Provider,{value:n,children:H(pr.Provider,{value:r,children:t})})}function useDiagramEventHandlers(){return wn(pr)}function useDiagramEventHandlersRef(){return wn(fr)}function useSetState(e,t){let[n,r]=On(e),i=t??Tt,a=Dn(i);return a.current=i,[n,Cn(e=>r(t=>{let n={...t,...typeof e==`function`?e(t):e};return a.current(t,n)?t:n}),[r])]}const mr={enableEditor:!1,enableReadOnly:!0,enableCompareWithLatest:!1,enableControls:!1,enableDynamicViewWalkthrough:!1,enableElementDetails:!1,enableFocusMode:!1,enableNavigateTo:!1,enableNotations:!1,enableRelationshipBrowser:!1,enableRelationshipDetails:!1,enableSearch:!1,enableNavigationButtons:!1,enableFitView:!1,enableVscode:!1,enableElementTags:!1,enableNotes:!1},hr=bn(mr);function DiagramFeatures(e){let t=V(13),{children:n,features:r,overrides:i}=e,a=wn(hr),t1;t[0]!==r||t[1]!==a||t[2]!==i?(t1=()=>({...a,...r,...i}),t[0]=r,t[1]=a,t[2]=i,t[3]=t1):t1=t[3];let[o,s]=useSetState(t1),t2,c;t[4]!==r||t[5]!==a||t[6]!==i||t[7]!==s?(t2=()=>{s({...a,...r,...i})},c=[a,r,i,s],t[4]=r,t[5]=a,t[6]=i,t[7]=s,t[8]=t2,t[9]=c):(t2=t[8],c=t[9]),on(t2,c);let l;return t[10]!==n||t[11]!==o?(l=H(hr.Provider,{value:o,children:n}),t[10]=n,t[11]=o,t[12]=l):l=t[12],l}const gr={enableControls:!1,enableReadOnly:!0,enableCompareWithLatest:!1};DiagramFeatures.Overlays=({children:e})=>H(DiagramFeatures,{overrides:gr,children:e});function useEnabledFeatures(){return wn(hr)}function IfEnabled(e){let t=V(4),{feature:n,children:r,and:i}=e,a=i===void 0?!0:i,o=useEnabledFeatures()[`enable${n}`]===!0,s;return t[0]!==a||t[1]!==r||t[2]!==o?(s=o&&a?H(kn,{children:r}):null,t[0]=a,t[1]=r,t[2]=o,t[3]=s):s=t[3],s}const _r=bn(null);_r.displayName=`DiagramActorSafeContext`;const vr=bn(null);vr.displayName=`DiagramApiSafeContext`;const yr=_r.Provider,br=vr.Provider;function useDiagramActorRef(){let e=wn(_r);if(e===null)throw Error(`DiagramActorRef is not provided`);return e}function useDiagram(){let e=wn(vr);if(e===null)throw Error(`DiagramApi is not provided`);return e}function selectDiagramActor(e){return e}function useDiagramSnapshot(e,t){let n=t===void 0?Tt:t;return(0,fn.useSelector)(useDiagramActorRef(),e,n)}function selectDiagramActorContext(e){return t=>e(t.context)}function useDiagramContext(e,t=Tt,n=[]){let r=useDiagramActorRef(),i=L(e);return(0,fn.useSelector)(r,Cn(e=>i(e.context),n),t)}function useOnDiagramEvent(e,t,n){let r=V(9),i=useDiagramActorRef(),a=L(t),o=Dn(!1),s=n?.once??!1,t0;r[0]!==i||r[1]!==a||r[2]!==e||r[3]!==s?(t0=()=>{if(s&&o.current)return;let t=i.on(e,e=>{a(e),o.current=!0,s&&(t?.unsubscribe(),t=null)});return()=>{t?.unsubscribe()}},r[0]=i,r[1]=a,r[2]=e,r[3]=s,r[4]=t0):t0=r[4];let c;r[5]!==i||r[6]!==e||r[7]!==s?(c=[i,e,s],r[5]=i,r[6]=e,r[7]=s,r[8]=c):c=r[8],Tn(t0,c)}function useLikeC4Model(){let e=pn();if(!e)throw Error(`LikeC4Model not found. Make sure you have LikeC4ModelProvider.`);return e}function useLikeC4Specification(){let e=V(3),t=useLikeC4Model().specification,[n,r]=On(t),t0,i;return e[0]===t?(t0=e[1],i=e[2]):(t0=()=>{r(e=>P(e,t)?e:t)},i=[t],e[0]=t,e[1]=t0,e[2]=i),Tn(t0,i),n}const xr=bn({}),Sr=$n,generateColorVars=e=>{let t=e.color;if(Bn(e))return`
1
+ import{i as e}from"./rolldown-runtime.mjs";import{B as t,C as n,F as r,G as i,H as a,I as o,J as s,K as c,L as l,M as u,O as d,P as f,S as p,U as m,V as h,W as g,X as _,Y as v,Z as y,_ as b,a as x,b as S,c as C,d as w,g as ee,h as te,k as ne,m as T,n as re,o as ie,p as ae,q as E,r as oe,t as se,u as ce,v as D,w as le,x as ue,y as de,z as fe}from"./libs/remeda.mjs";import{E as pe,Ft as me,Kt as he,Nt as ge,O as _e,Pt as ve,T as ye,Tt as be,V as xe,W as Se,Yt as Ce,Z as we,_t as Te,d as Ee,g as De,gt as Oe,h as ke,i as Ae,k as je,l as Me,m as Ne,mt as Pe,ot as Fe,q as Ie,u as Le,vt as Re,xt as ze}from"./libs/@mantine/core.mjs";import{a as Be,f as Ve,p as He,s as Ue}from"./libs/@mantine/hooks.mjs";import{m as We,p as Ge,s as Ke,t as O,u as qe}from"./css.mjs";import{a as Je,s as k,t as Ye}from"./factory.mjs";import{A as Xe,B as A,D as Ze,E as Qe,F as $e,G as et,I as tt,J as nt,K as j,L as rt,M as it,N as at,O as ot,P as st,R as ct,V as lt,a as ut,c as dt,d as ft,f as pt,g as M,i as mt,j as ht,k as gt,l as _t,n as vt,o as yt,p as bt,r as xt,s as St,u as Ct,x as wt,z as Tt}from"./LikeC4Styles.mjs";import{a as Et,i as Dt,n as Ot,r as kt,s as At,t as jt}from"./Markdown.mjs";import{H as Mt,L as Nt,Z as Pt,c as Ft,f as It,l as Lt,v as Rt}from"./libs/@tabler/icons-react.mjs";import{i as zt,n as Bt,o as Vt,p as Ht}from"./libs/@react-hookz/web.mjs";import{n as Ut,t as N}from"./libs/fast-equals.mjs";import{a as Wt,c as Gt,n as Kt,o as qt,r as Jt,s as P,t as Yt}from"./hstack.mjs";import{_ as Xt,c as Zt,d as Qt,f as $t,g as en,h as F,i as tn,l as I,m as nn,n as rn,o as an,p as on,r as L,s as sn,t as cn,u as ln}from"./libs/@xstate/react.mjs";import{C as un,_ as dn,a as fn,b as pn,c as mn,h as hn,i as gn,l as _n,m as vn,p as yn,r as bn,u as xn,v as Sn,x as Cn,y as wn}from"./libs/@xyflow/react.mjs";import{c as Tn,n as En,p as Dn,t as On}from"./libs/framer-motion.mjs";import{t as kn}from"./box.mjs";import{t as An}from"./libs/react-error-boundary.mjs";import{t as jn}from"./libs/@dagrejs/dagre.mjs";import{n as Mn,t as Nn}from"./libs/d3-shape.mjs";import{createContext as Pn,createElement as Fn,forwardRef as In,memo as Ln,useCallback as Rn,useContext as zn,useEffect as Bn,useMemo as Vn,useRef as Hn,useState as Un}from"react";import{c as R}from"react-compiler-runtime";import{Fragment as Wn,jsx as z,jsxs as B}from"react/jsx-runtime";import{DefaultTagColors as Gn,ElementShapes as Kn}from"@likec4/core/styles";import{BBox as qn,DefaultMap as Jn,GroupElementKind as Yn,Queue as Xn,RichText as Zn,exact as Qn,getParallelStepsPrefix as $n,hasProp as er,invariant as V,isNonEmptyArray as tr,isStepEdgeId as nr,isTagColorSpecified as rr,nonNullable as H,nonexhaustive as ir,whereOperatorAsPredicate as ar}from"@likec4/core";import{BBox as U,convertPoint as or,vector as W,vector as sr}from"@likec4/core/geometry";import{DefaultMap as cr,delay as lr,difference as ur,ifind as dr,invariant as G,isome as fr,nonNullable as K,nonexhaustive as pr,stringHash as mr,toArray as hr}from"@likec4/core/utils";import{exact as gr,preferSummary as _r}from"@likec4/core/types";import{computeRelationshipsView as vr,treeFromElements as yr}from"@likec4/core/compute-view";import{castDraft as br,produce as xr,setAutoFreeze as Sr}from"immer";function Cr(e){return e}function wr(e,t){let n=t===void 0?Ut:t;return rn(Gt(),e,n)}function Tr(e){return t=>e(t.context)}function Er(e,t=Ut,n=[]){let r=Gt(),i=j(e);return rn(r,Rn(e=>i(e.context),n),t)}function Dr(e,t,n){let r=R(6),i=Gt(),a=j(t),o=Hn(!1),s=n?.once??!1,c,l;r[0]!==i||r[1]!==a||r[2]!==e||r[3]!==s?(c=()=>{if(s&&o.current)return;let t=i.on(e,e=>{if(!s||!o.current)try{a(e)}catch(e){console.error(e)}o.current=!0,s&&(t?.unsubscribe(),t=null)});return()=>{t?.unsubscribe()}},l=[a,i,e,s],r[0]=i,r[1]=a,r[2]=e,r[3]=s,r[4]=c,r[5]=l):(c=r[4],l=r[5]),Bn(c,l)}function Or(){let e=et();if(!e)throw Error(`LikeC4Model not found. Make sure you have LikeC4ModelProvider.`);return e}function kr(){let e=R(3),t=Or().specification,[n,r]=Un(t),i,a;return e[0]===t?(i=e[1],a=e[2]):(i=()=>{r(e=>N(e,t)?e:t)},a=[t],e[0]=t,e[1]=i,e[2]=a),Bn(i,a),n}var Ar=Pn(null);function jr({children:e,editor:t}){return z(Ar.Provider,{value:t,children:e})}function Mr(){return zn(Ar)}function Nr(e,t){if(e._type===`dynamic`)try{if((t??e.variant)===`sequence`)return V(e.sequenceLayout,`Sequence layout is not available`),V(e.sequenceLayout.bounds,`Sequence layout bounds are not available`),e.sequenceLayout.bounds}catch(e){console.error(e)}return e.bounds}function Pr({points:e,controlPoints:t,labelBBox:n}){let r=1/0,i=1/0,a=-1/0,o=-1/0;if(t)for(let e of t)r=Math.min(r,e.x),i=Math.min(i,e.y),a=Math.max(a,e.x),o=Math.max(o,e.y);else for(let[t,n]of e)r=Math.min(r,t),i=Math.min(i,n),a=Math.max(a,t),o=Math.max(o,n);return n&&(r=Math.min(r,n.x),i=Math.min(i,n.y),a=Math.max(a,n.x+n.width),o=Math.max(o,n.y+n.height)),{x:r,y:i,width:a-r,height:o-i}}function Fr({nodes:e,edges:t}){return U.expand(U.merge(...e,...t.map(Pr).filter(e=>isFinite(e.x)&&isFinite(e.y))),20)}const Ir=Ot(`likec4-compound-node`,{isTransparent:!1,inverseColor:!1,borderStyle:`none`},[]),Lr={isTransparent:[`false`,`true`],inverseColor:[`true`,`false`],borderStyle:[`solid`,`dashed`,`dotted`,`none`]},Rr=Object.keys(Lr),zr=Object.assign(qe(Ir.recipeFn),{__recipe__:!0,__name__:`compoundNode`,__getCompoundVariantCss__:Ir.__getCompoundVariantCss__,raw:e=>e,variantKeys:Rr,variantMap:Lr,merge(e){return kt(this,e)},splitVariantProps(e){return We(e,Rr)},getVariantProps:Ir.getVariantProps}),Br=Ot(`likec4-edge-action-btn`,{},[]),Vr={},Hr=Object.keys(Vr),Ur=Object.assign(qe(Br.recipeFn),{__recipe__:!0,__name__:`edgeActionBtn`,__getCompoundVariantCss__:Br.__getCompoundVariantCss__,raw:e=>e,variantKeys:Hr,variantMap:Vr,merge(e){return kt(this,e)},splitVariantProps(e){return We(e,Hr)},getVariantProps:Br.getVariantProps}),Wr=Ot(`likec4-tag`,{autoTextColor:!1},[]),Gr={autoTextColor:[`false`,`true`]},Kr=Object.keys(Gr),qr=Object.assign(qe(Wr.recipeFn),{__recipe__:!0,__name__:`likec4tag`,__getCompoundVariantCss__:Wr.__getCompoundVariantCss__,raw:e=>e,variantKeys:Kr,variantMap:Gr,merge(e){return kt(this,e)},splitVariantProps(e){return We(e,Kr)},getVariantProps:Wr.getVariantProps}),Jr=Ot(`likec4-node-notes`,{opened:!1},[]),Yr={opened:[`false`,`true`]},Xr=Object.keys(Yr),Zr=Object.assign(qe(Jr.recipeFn),{__recipe__:!0,__name__:`nodeNotes`,__getCompoundVariantCss__:Jr.__getCompoundVariantCss__,raw:e=>e,variantKeys:Xr,variantMap:Yr,merge(e){return kt(this,e)},splitVariantProps(e){return We(e,Xr)},getVariantProps:Jr.getVariantProps}),Qr={transform(e){let{direction:t,align:n,justify:r,wrap:i,basis:a,grow:o,shrink:s,...c}=e;return{display:`flex`,flexDirection:t,alignItems:n,justifyContent:r,flexWrap:i,flexBasis:a,flexGrow:o,flexShrink:s,...c}}},$r=(e={})=>{let t=Ke(Qr,e);return Qr.transform(t,Ge)},ei=e=>O($r(e));ei.raw=$r;const ti=In(function(e,t){let[n,r]=We(e,[`align`,`justify`,`direction`,`wrap`,`basis`,`grow`,`shrink`]),i={ref:t,...$r(n),...r};return Fn(Ye.div,i)});var ni=Pn({}),ri=Gn,ii=e=>{let t=e.color;if(rr(e))return`
2
2
  --colors-likec4-tag-bg: ${t};
3
3
  --colors-likec4-tag-bg-hover: color-mix(in oklab, ${t}, var(--colors-likec4-mix-color) 20%);
4
- `;if(!Sr.includes(t))return``;let n=`12`;return[`mint`,`grass`,`lime`,`yellow`,`amber`].includes(t)&&(n=`dark-2`),`
4
+ `;if(!ri.includes(t))return``;let n=`12`;return[`mint`,`grass`,`lime`,`yellow`,`amber`].includes(t)&&(n=`dark-2`),`
5
5
  --colors-likec4-tag-border: var(--colors-${t}-8);
6
6
  --colors-likec4-tag-bg: var(--colors-${t}-9);
7
7
  --colors-likec4-tag-bg-hover: var(--colors-${t}-10);
8
8
  --colors-likec4-tag-text: var(--colors-${t}-${n});
9
- `};function generateStylesheet(e,t){return!e||i(e)?``:y(l(e),o(([e,n])=>[`:is(${t} [data-likec4-tag="${e}"]) {`,generateColorVars(n),`}`]),se(`
10
- `))}function TagStylesProvider(e){let t=V(10),{children:n,rootSelector:r}=e,i=useLikeC4Specification().tags,a=ue()?.(),o;t[0]!==r||t[1]!==i?(o=generateStylesheet(i,r),t[0]=r,t[1]=i,t[2]=o):o=t[2];let s=o,c;t[3]!==a||t[4]!==s?(c=s!==``&&H(Cr,{nonce:a,stylesheet:s}),t[3]=a,t[4]=s,t[5]=c):c=t[5];let l;return t[6]!==n||t[7]!==c||t[8]!==i?(l=U(xr.Provider,{value:i,children:[c,n]}),t[6]=n,t[7]=c,t[8]=i,t[9]=l):l=t[9],l}const Cr=Sn(e=>{let t=V(5),{stylesheet:n,nonce:r}=e,i;t[0]===n?i=t[1]:(i={__html:n},t[0]=n,t[1]=i);let a;return t[2]!==r||t[3]!==i?(a=H(`style`,{"data-likec4-tags":!0,type:`text/css`,dangerouslySetInnerHTML:i,nonce:r}),t[2]=r,t[3]=i,t[4]=a):a=t[4],a});function useTagSpecification(e){let t=V(3),n=wn(xr),r;return t[0]!==n||t[1]!==e?(r=n[e]??{color:`tomato`},t[0]=n,t[1]=e,t[2]=r):r=t[2],r}z();const wr=bn(null);function LikeC4EditorProvider(e){let t=V(3),{children:n,editor:r}=e,i;return t[0]!==n||t[1]!==r?(i=H(wr.Provider,{value:r,children:n}),t[0]=n,t[1]=r,t[2]=i):i=t[2],i}function useOptionalLikeC4Editor(){return wn(wr)}function ErrorFallback(e){let t=V(22),{error:n,resetErrorBoundary:r}=e,i=n instanceof Error?n.message:`Unknown error`,a=Dn(null),t1,o;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(t1=()=>{a.current?.showModal()},o=[],t[0]=t1,t[1]=o):(t1=t[0],o=t[1]),Tn(t1,o);let s,t4;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(s=N({margin:`0`,padding:`0`,position:`fixed`,top:`10`,left:`10`,width:`[calc(100vw - ({spacing.10} * 2))]`,height:`max-content`,maxHeight:`[calc(100vh - ({spacing.10} * 3))]`,background:`likec4.overlay.body`,rounded:`sm`,borderWidth:3,borderColor:`likec4.overlay.border`,shadow:`xl`,outline:`none`,_backdrop:{cursor:`zoom-out`,backdropFilter:`blur(18px)`,bg:`[color-mix(in oklab, {colors.likec4.overlay.backdrop} 60%, transparent)]`}}),t4=e=>{if(e.stopPropagation(),e.target?.nodeName?.toUpperCase()===`DIALOG`){a.current?.close();return}},t[2]=s,t[3]=t4):(s=t[2],t4=t[3]);let t5;t[4]===r?t5=t[5]:(t5=e=>{e.stopPropagation(),r()},t[4]=r,t[5]=t5);let c;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(c=H(Ee,{size:`md`,radius:`xl`,color:`red`,children:H(it,{style:{width:20,height:20}})}),t[6]=c):c=t[6];let l;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(l=H(Ne,{fz:`md`,children:`Oops, something went wrong`}),t[7]=l):l=t[7];let u;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(u={whiteSpace:`pre-wrap`,userSelect:`all`},t[8]=u):u=t[8];let d;t[9]===i?d=t[10]:(d=H(ge,{maw:`100%`,mah:400,type:`auto`,children:H(Ne,{fz:`md`,c:`red`,style:u,children:i})}),t[9]=i,t[10]=d);let f;t[11]===r?f=t[12]:(f=H(be,{size:`sm`,variant:`default`,onClick:()=>r(),children:`Reset`}),t[11]=r,t[12]=f);let p;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(p=H(Ne,{fz:`sm`,c:`dimmed`,children:`See console for more details and report the issue if it persists.`}),t[13]=p):p=t[13];let m;t[14]===f?m=t[15]:(m=U(Ze,{gap:`md`,mt:`md`,children:[f,p]}),t[14]=f,t[15]=m);let h;t[16]!==m||t[17]!==d?(h=U(Ze,{p:`xl`,gap:`lg`,alignItems:`flex-start`,flexWrap:`nowrap`,children:[c,U(Ve,{flex:`1`,children:[l,d,m]})]}),t[16]=m,t[17]=d,t[18]=h):h=t[18];let g;return t[19]!==h||t[20]!==t5?(g=H(`dialog`,{ref:a,className:s,onClick:t4,onClose:t5,children:h}),t[19]=h,t[20]=t5,t[21]=g):g=t[21],g}function ErrorBoundary(e){let t=V(2),n;return t[0]===e?n=t[1]:(n=H(mn,{FallbackComponent:ErrorFallback,onError:_temp$3,...e}),t[0]=e,t[1]=n),n}function _temp$3(e,t){console.error(e,t)}e(_temp$3,`_temp`);function createViewChange(e){let{view:{drifts:t,_layout:n,...r},xynodes:i,xystore:a}=e,{nodeLookup:o,edgeLookup:s}=a.getState(),c=new Set,l=j(r.nodes,e=>{let t=o.get(e.id);if(!t)return console.error(`Internal node not found for ${e.id}`),e;let n=i.find(t=>t.id===e.id)?.data??t.data,r=t.internals.positionAbsolute,{width:a,height:s}=St(t);return(!Ft(r,e)||e.width!==a||e.height!==s)&&c.add(e.id),{...e,shape:n.shape,color:n.color,style:{...n.style},x:Math.floor(r.x),y:Math.floor(r.y),width:Math.ceil(a),height:Math.ceil(s)}}),u=j(r.edges,e=>{let t=s.get(e.id);if(!t)return console.error(`Internal edge not found for ${e.id}`),e;let n=t.data,r=n.controlPoints??[],i=c.has(t.source)||c.has(t.target);r.length===0&&i&&(r=Pt(n.points));let a={...e,points:n.points};return n.labelBBox?a.labelBBox={x:Math.round(n.labelBBox.x),y:Math.round(n.labelBBox.y),width:Math.round(n.labelBBox.width),height:Math.round(n.labelBBox.height)}:a.labelBBox=null,A(r,1)?a.controlPoints=j(r,e=>({x:Math.round(e.x),y:Math.round(e.y)})):a.controlPoints=null,a});return{op:`save-view-snapshot`,layout:{...r,_layout:`manual`,bounds:zt({nodes:l,edges:u}),nodes:l,edges:u}}}const Tr=(0,R.fromCallback)(({sendBack:e})=>{let t=Be([[`mod + z`,t=>{t.stopPropagation(),e({type:`undo`})},{preventDefault:!0}]]);return document.body.addEventListener(`keydown`,t,{capture:!0}),()=>{document.body.removeEventListener(`keydown`,t,{capture:!0})}});z();const Er=(0,R.fromPromise)(()=>{throw Error(`Not implemented`)}),Dr=(0,R.fromPromise)(()=>{throw Error(`Not implemented`)}),Y=(0,R.setup)({types:{context:{},events:{},emitted:{},input:{},children:{},tags:{}},delays:{"500ms":500,waitBeforeSync:1e3},actors:{applyLatest:Er,executeChange:Dr,hotkey:Tr},guards:{"has pending":({context:e})=>e.pendingChanges.length>0,"can undo":({context:e})=>e.history.length>0}}),Or=e(e=>e.get(`diagram`),`diagramActorRef`),getDiagramContext=function(e){return e.get(`diagram`).getSnapshot().context},raiseSync=()=>Y.raise({type:`sync`},{delay:200,id:`sync`}),cancelSync=()=>Y.cancel(`sync`),reschedule=(e=350)=>Y.raise(({event:e})=>e,{delay:e}),isLayoutChange=e=>e.op===`reset-manual-layout`||e.op===`save-view-snapshot`,kr=a(O(isLayoutChange)),saveStateBeforeEdit=()=>Y.assign(({system:e})=>{let t=getDiagramContext(e);return{beforeEditing:{xynodes:t.xynodes.map(({measured:e,data:t,...n})=>({...k(n,[`selected`,`dragging`,`resizing`]),data:k(t,[`dimmed`,`hovered`]),measured:e,initialWidth:e?.width??n.width??n.initialWidth,initialHeight:e?.height??n.height??n.initialHeight})),xyedges:t.xyedges.map(({data:e,...t})=>({...k(t,[`selected`]),data:k(e,[`active`,`dimmed`,`hovered`])})),change:createViewChange(t),view:t.view,synched:!1}}}),Ar=e(()=>Y.enqueueActions(({enqueue:e,event:t})=>{e(saveStateBeforeEdit()),t.type===`edit.start`&&e.assign({editing:t.subject})}),`startEditing`),stopHotkey=()=>Y.stopChild(`hotkey`),ensureHotKey=()=>Y.enqueueActions(({check:e,enqueue:t,self:n})=>{let r=e(`can undo`),i=n.getSnapshot().children.hotkey;if(!r&&i){t.stopChild(i);return}r&&!i&&t.spawnChild(`hotkey`,{id:`hotkey`})}),pushHistory=()=>Y.assign(({context:e})=>{let t=e.beforeEditing;if(!t)return{editing:null};let n=[...e.history,t];return n.length>50&&n.shift(),{beforeEditing:null,editing:null,history:n}}),jr=e(()=>Y.enqueueActions(({event:e,enqueue:t})=>{if(e.type===`edit.finish`&&e.wasChanged){t(pushHistory()),t(raiseSync());return}t.assign({beforeEditing:null,editing:null})}),`stopEditing`),markHistoryAsSynched=()=>Y.assign(({context:e})=>({beforeEditing:e.beforeEditing&&e.beforeEditing.synched===!1?{...e.beforeEditing,synched:!0}:e.beforeEditing,history:e.history.map(e=>({...e,synched:!0}))})),popHistory=()=>Y.assign(({context:e})=>e.history.length<=1?{history:[]}:{history:e.history.slice(0,e.history.length-1)}),undo=()=>Y.enqueueActions(({context:e,enqueue:t,system:n})=>{let r=ce(e.history);if(!r)return;import.meta.env.DEV&&console.log(`undo`),t(cancelSync()),t(popHistory()),t(ensureHotKey());let i=Or(n);t.sendTo(i,{type:`update.view`,view:r.view,xyedges:r.xyedges,xynodes:r.xynodes,source:`editor`}),t.assign({pendingChanges:[]}),r.synched?t.raise({type:`change`,change:r.change},{delay:50}):t(raiseSync())}),addSnapshotToPendingChanges=()=>Y.assign(({context:e,system:t})=>{let n=createViewChange(getDiagramContext(t));return{pendingChanges:[...kr(e.pendingChanges),n]}});z();const diagramActorRef=function(e){return e.system.get(`diagram`)},X={idle:{target:`#idle`},editing:{target:`#editing`},afterEdit:{target:`#afterEdit`},pending:{target:`#pending`},applyLatestToManual:{target:`#applyLatestToManual`},executeChanges:{target:`#executeChanges`}},Mr=Y.createStateConfig({id:`idle`,on:{sync:{...X.pending},"edit.start":{...X.editing}}}),Nr=Y.createStateConfig({id:`editing`,tags:`pending`,entry:[Ar(),cancelSync()],on:{change:{actions:jr(),...X.executeChanges},"edit.finish":{actions:jr(),...X.afterEdit},undo:{actions:jr(),...X.idle}}}),Pr=Y.createStateConfig({id:`pending`,tags:[`pending`],entry:ensureHotKey(),on:{sync:{reenter:!0,...X.pending},"edit.start":{actions:[addSnapshotToPendingChanges()],...X.editing}},after:{waitBeforeSync:{actions:[addSnapshotToPendingChanges()],...X.executeChanges}}}),Fr=Y.createStateConfig({id:`afterEdit`,always:[{guard:`has pending`,...X.pending},{...X.idle}]}),Ir=Y.createStateConfig({id:`applyLatestToManual`,entry:[cancelSync(),saveStateBeforeEdit()],initial:`call`,states:{call:{invoke:{src:`applyLatest`,input:({context:e})=>{let t=e.beforeEditing?.change.layout;return{current:t&&t._layout===`manual`?t:void 0,viewId:e.viewId}},onDone:{actions:(0,R.sendTo)(diagramActorRef,({event:e})=>({type:`update.view`,view:e.output.updated}),{delay:10}),target:`wait`},onError:{actions:[(0,R.assign)({beforeEditing:null,pendingChanges:[]}),({event:e})=>{console.error(e.error)}],...X.idle}}},wait:{entry:pushHistory(),on:{"*":{actions:[(0,R.log)(({event:e})=>`wait received unexpected event: ${e.type}`),reschedule(500)]}},after:{"500ms":{actions:[addSnapshotToPendingChanges(),ensureHotKey()],...X.executeChanges}}}}}),Lr=Y.createStateConfig({id:`executeChanges`,entry:[(0,R.assign)(({event:e,context:t})=>{if(import.meta.env.DEV&&console.log(`executeChanges entry`,{event:e}),e.type===`change`){if(isLayoutChange(e.change))return{pendingChanges:[...kr(t.pendingChanges),e.change]};if(!t.pendingChanges.includes(e.change))return{pendingChanges:[...t.pendingChanges,e.change]}}return{}}),cancelSync()],invoke:{src:`executeChange`,input:({context:e})=>({changes:e.pendingChanges,viewId:e.viewId}),onDone:{actions:(0,R.enqueueActions)(({context:e,event:t,enqueue:n})=>{import.meta.env.DEV&&console.log(`executeChanges onDone`,{event:t});let r=_(e.pendingChanges,e=>e.op===`save-view-snapshot`);r&&n.sendTo(diagramActorRef,{type:`update.view-bounds`,bounds:r.layout.bounds}),n.assign({pendingChanges:[]})}),...X.idle},onError:{actions:(0,R.assign)(({event:e})=>(console.error(`executeChanges onError`,{error:e.error}),{pendingChanges:[]})),...X.idle}}}),Rr=Y.createMachine({id:`editor`,context:({input:e})=>({viewId:e.viewId,beforeEditing:null,editing:null,pendingChanges:[],history:[]}),initial:`idle`,states:{idle:Mr,editing:Nr,pending:Pr,afterEdit:Fr,applyLatestToManual:Ir,executeChanges:Lr},on:{cancel:{actions:[cancelSync(),(0,R.assign)({editing:null,beforeEditing:null,pendingChanges:[]})],...X.idle},synced:{actions:markHistoryAsSynched()},undo:{guard:`can undo`,actions:undo(),...X.idle},change:{...X.executeChanges},applyLatestToManual:{...X.applyLatestToManual},reset:{actions:[cancelSync(),(0,R.assign)({history:[],editing:null,beforeEditing:null,pendingChanges:[]}),stopHotkey()],...X.idle}}}),findNodeByModelFqn=(e,t)=>e.find(e=>`modelFqn`in e.data&&e.data.modelFqn===t)||null;function typedSystem(e){return{get overlaysActorRef(){return e.get(`overlays`)??null},get diagramActorRef(){return J(e.get(`diagram`),`Diagram actor not found`)},get searchActorRef(){return e.get(`search`)??null},get editorActorRef(){return e.get(`editor`)??null}}}typedSystem.editorActor=({system:e})=>e.get(`editor`),typedSystem.overlaysActor=({system:e})=>e.get(`overlays`),typedSystem.diagramActor=({system:e})=>e.get(`diagram`),typedSystem.searchActor=({system:e})=>e.get(`search`);function findDiagramNode(e,t){return e.view.nodes.find(e=>e.id===t)??null}function findDiagramEdge(e,t){return e.view.edges.find(e=>e.id===t)??null}function viewBounds(e,t){return tn(t??e.view,e.dynamicViewVariant)}function focusedBounds(e){let t=new Map,n=e.context.xynodes.reduce((e,n)=>{let r=n.position;if(n.parentId){let e=t.get(n.parentId)??{x:0,y:0};r={x:r.x+e.x,y:r.y+e.y}}if(t.set(n.id,r),n.hidden||n.data.dimmed)return e;let i=n.measured?.width??n.width??n.initialWidth,a=n.measured?.height??n.height??n.initialHeight;return e.minX=Math.min(e.minX,r.x),e.minY=Math.min(e.minY,r.y),e.maxX=Math.max(e.maxX,r.x+i),e.maxY=Math.max(e.maxY,r.y+a),e},{minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0});return n.minX===1/0?{bounds:viewBounds(e.context)}:{duration:350,bounds:{x:n.minX-10,y:n.minY-10,width:n.maxX-n.minX+20,height:n.maxY-n.minY+20}}}function activeSequenceBounds(e){let t=J(e.context.activeWalkthrough),n=J(e.context.xyedges.find(e=>e.id===t.stepId)),r=e.context.xystore.getState(),i=wt([J(r.nodeLookup.get(n.source)),J(r.nodeLookup.get(n.target))],r),a;if(t.parallelPrefix){let n=e.context.xynodes.find(e=>e.type===`seq-parallel`&&e.data.parallelPrefix===t.parallelPrefix);n&&(a={x:n.position.x,y:n.position.y,...St(n)})}return a??=getEdgeBounds(n,r),a=a?Un.merge(a,i):i,{duration:350,bounds:Un.expand(a,32)}}function getEdgeBounds(e,t){let n=t.nodeLookup.get(e.source),r=t.nodeLookup.get(e.target);if(!n||!r)return null;let i=dt({id:e.id,sourceNode:n,targetNode:r,sourceHandle:e.sourceHandle||null,targetHandle:e.targetHandle||null,connectionMode:t.connectionMode});return i?Un.fromPoints([[i.sourceX,i.sourceY],[i.targetX,i.targetY]]):null}function nodeRef(e){switch(e.type){case`element`:case`compound-element`:case`seq-actor`:return e.data.modelFqn;case`deployment`:case`compound-deployment`:return e.data.modelFqn??e.data.deploymentFqn;case`seq-parallel`:case`view-group`:return null;default:Xn(e)}}function findCorrespondingNode(e,t){let n=e.lastOnNavigate?.fromNode,r=n&&e.xynodes.find(e=>e.id===n),i=r&&nodeRef(r);return!r||!i?{fromNode:null,toNode:null}:{fromNode:r,toNode:t.xynodes.find(e=>nodeRef(e)===i)??null}}function calcViewportForBounds(e,t){let{width:n,height:r,transform:i}=e.xystore.getState();return Ct(t,n,r,qt,Math.max(i[2],1),e.fitViewPadding)}const zr={top:`40px`,bottom:`22px`,left:`22px`,right:`22px`};var Br=t(_n(),1);const Z={dagre:{ranksep:60,nodesep:35,edgesep:25},edgeLabel:{width:140,height:10,minlen:1,weight:1},emptyNodeOffset:120,nodeWidth:330,nodeHeight:180,spacerHeight:0,compound:{labelHeight:2,paddingTop:50,paddingBottom:32}};function createGraph(){let e=new Br.default.graphlib.Graph({directed:!0,compound:!0,multigraph:!0});return e.setGraph({...Z.dagre,rankdir:`LR`}),e.setDefaultEdgeLabel(()=>({...Z.edgeLabel})),e.setDefaultNodeLabel(()=>({})),e}const Vr=`-port`;function createNodes(e,t,n){let r=new Gn(t=>({id:`${e}-${t}`,portId:`${e}-${t}`})),i=nr(t);for(let t of i.sorted){let a=i.children(t).length>0,o=t.id,s=`${e}-${o}`,c=a?`${s}${Vr}`:s;r.set(o,{id:s,portId:c}),n.setNode(s,{column:e,element:t,isCompound:a,portId:c,inPorts:[],outPorts:[],width:Z.nodeWidth,height:Z.nodeHeight}),a&&(n.setNode(c,{element:t,portId:c,isCompound:a,inPorts:[],outPorts:[],width:Z.nodeWidth-Z.dagre.ranksep,height:Z.compound.labelHeight}),n.setParent(c,s));let l=i.parent(t);l&&n.setParent(s,`${e}-${l.id}`)}return{...i,byId:e=>{let t=i.byId(e);return{element:t,graph:r.get(t.id)}},graphNodes:r}}function applyDagreLayout(e){return Br.default.layout(e,{}),t=>{let{x:n,y:r,width:i,height:a}=e.node(t);return{position:{x:n-Math.round(i/2),y:r-Math.round(a/2)},width:i,height:a}}}let Hr;(function(e){e.Empty=`@empty`})(Hr||={});function layoutRelationshipsView(e,t){let r=createGraph(),i=createNodes(`incomers`,e.incomers,r),o=createNodes(`subjects`,e.subjects,r),s=createNodes(`outgoers`,e.outgoers,r),c=[];y(v(y(Qn(e.incoming),j(e=>({id:e.source.id,sourceFqn:e.source.id,targetFqn:e.target.id,source:i.byId(e.source.id).graph,target:o.byId(e.target.id).graph,relation:e}))),y(Qn(e.outgoing),j(e=>({id:e.target.id,sourceFqn:e.source.id,targetFqn:e.target.id,source:o.byId(e.source.id).graph,target:s.byId(e.target.id).graph,relation:e})))),j(e=>({...e,expr:`${e.source.id}->${e.target.id}`})),n(w(`expr`)),g(e=>{let t=e[0].source,n=e[0].target,i=e[0].expr;r.node(t.id).outPorts.push(n.id),r.node(n.id).inPorts.push(t.id),r.setEdge(t.portId,n.portId,{...Z.edgeLabel},i),c.push({name:i,sourceFqn:e[0].sourceFqn,targetFqn:e[0].targetFqn,source:t.id,sourceHandle:t.id+`_out`+(r.node(t.id).outPorts.length-1),target:n.id,targetHandle:n.id+`_in`+(r.node(n.id).inPorts.length-1),relations:j(e,w(`relation`))})}));for(let e of o.graphNodes.values()){let t=e.id,n=r.node(t);if(n.isCompound)continue;let i=Math.max(r.inEdges(t)?.length??0,r.outEdges(t)?.length??0);i>2&&(n.height+=(i-3)*14)}let l=[...i.graphNodes.values(),...o.graphNodes.values(),...s.graphNodes.values()];if(i.graphNodes.size==0){let e=`incomers-empty`;r.setNode(e,{column:`incomers`,element:null,isCompound:!1,portId:e,inPorts:[],outPorts:[],width:Z.nodeWidth,height:Z.nodeHeight});for(let t of o.graphNodes.values())r.setEdge(e,t.portId);l.push({id:e,portId:e})}if(s.graphNodes.size==0){let e=`outgoers-empty`;r.setNode(e,{column:`outgoers`,element:null,isCompound:!1,portId:e,inPorts:[],outPorts:[],width:Z.nodeWidth,height:Z.nodeHeight});for(let t of o.graphNodes.values())r.setEdge(t.portId,e);l.push({id:e,portId:e})}let u=r.edgeCount();if(u>10)for(let e of r.edges())r.setEdge(e,{...Z.edgeLabel,width:u>25?800:400});let d=applyDagreLayout(r),f=y(l,a(e=>e.id===e.portId),x(e=>[e.id,d(e.id)]));function nodeBounds(e){return f[e]??=y(r.children(e)??[],a(e=>!e.endsWith(Vr)),j(e=>nodeBounds(e)),ee(t=>{q(t.length>0,`Node ${e} has no nested nodes`)}),te((e,t)=>({minY:Math.min(e.minY,t.position.y),maxY:Math.max(e.maxY,t.position.y+t.height)}),{minY:1/0,maxY:-1/0}),({minY:t,maxY:n})=>{let{position:{x:r},width:i}=d(e);return t-=Z.compound.paddingTop,n+=Z.compound.paddingBottom,{position:{x:r,y:t},width:i,height:n-t}})}function nodeLevel(e){let t=r.parent(e);return t?nodeLevel(t)+1:0}function nodeDepth(e){let t=r.children(e)??[];return t.length===0?0:1+Math.max(...t.map(nodeDepth))}let sortedPorts=(e,t,n)=>y(n,j((n,r)=>({port:e+`_`+t+r,topY:nodeBounds(n).position.y})),re(w(`topY`)),j(w(`port`))),p=0,m=0,[h]=[...o.root];q(h,`Subjects should not be empty`);let b=nodeBounds(o.graphNodes.get(h.id).id),S=l.map(({id:e})=>{let{element:n,inPorts:i,outPorts:a,column:o}=r.node(e),{position:s,width:c,height:l}=nodeBounds(e);if(!n){if(l=Math.min(b.height,300),s.y=b.position.y+b.height/2-l/2,o===`incomers`)c=b.position.x-Z.emptyNodeOffset-s.x;else{let e=s.x+c;s.x=b.position.x+b.width+Z.emptyNodeOffset,c=e-s.x}return{id:e,parent:null,x:s.x,y:s.y,title:`empty node`,description:null,technology:null,tags:[],links:[],color:`muted`,shape:`rectangle`,style:{border:`dashed`,opacity:50},kind:Hr.Empty,level:0,labelBBox:{x:s.x,y:s.y,width:c,height:l},children:[],width:c,height:l,column:o,ports:{in:[],out:[]},existsInCurrentView:!1}}let u=r.parent(e),d=(r.children(e)??[]).filter(e=>!e.endsWith(Vr));p=Math.min(p,s.x),m=Math.min(m,s.y);let f=t?Jn(n.scopedViews(),e=>e.id!==t.id)?.id??null:null,h=t?.findNodeWithElement(n.id),g=t&&!h?Jn(n.ancestors(),e=>!!t.findNodeWithElement(e.id))?.id:null,_=h??(g&&t?.findNodeWithElement(g));return{id:e,parent:u??null,x:s.x,y:s.y,title:n.title,description:ir(n.$element)??null,technology:n.technology,tags:[...n.tags],links:null,color:_?.color??n.color,shape:h?.shape??n.shape,icon:h?.icon??n.icon??`none`,modelRef:n.id,kind:n.kind,level:nodeLevel(e),labelBBox:{x:s.x,y:s.y,width:c,height:l},style:k({...(h??_)?.style,...n.$element.style},[`color`,`shape`,`icon`]),navigateTo:f,...d.length>0&&{depth:nodeDepth(e)},children:d,width:c,height:l,column:o,ports:{in:sortedPorts(e,`in`,i),out:sortedPorts(e,`out`,a)},existsInCurrentView:!!h}});return{subjectExistsInScope:!t||t.includesElement(h.id),bounds:{x:Math.min(p,0),y:Math.min(m,0),width:r.graph().width??100,height:r.graph().height??100},nodes:S,edges:r.edges().reduce((e,n)=>{let i=r.edge(n),a=n.name;if(!a)return e;let{name:o,source:s,sourceFqn:l,target:u,targetFqn:d,relations:f,sourceHandle:p,targetHandle:m}=J(_(c,e=>e.name===a)),h=ne(f),g=h?.title??`untitled`,v=f.length>1,y=ne(ie(f.flatMap(e=>e.navigateTo?.id?e.navigateTo.id:[])));return e.push(rr({id:o,sourceFqn:l,source:s,sourceHandle:p,targetFqn:d,target:u,targetHandle:m,label:v?`${f.length} relationships`:g,navigateTo:y,color:h?.color??`gray`,existsInCurrentView:!t||f.every(e=>t.includesRelation(e.id)),points:i.points.map(e=>[e.x,e.y]),line:h?.line??`dashed`,head:h?.head,tail:h?.tail,relations:f.map(e=>e.id),parent:null})),e},[])}}function useRelationshipsView(e,t,n){let r=V(5),i=useLikeC4Model(),a;if(r[0]!==i||r[1]!==n||r[2]!==e||r[3]!==t){let o=t?i.findView(t):null,s=layoutRelationshipsView(tr(e,i,t,n),n===`view`?o:null);o&&(n===`global`||!s.subjectExistsInScope)&&(s.edges=s.edges.map(e=>(e.existsInCurrentView=e.relations.every(e=>o.includesRelation(e)),e))),a=Object.assign(s,{subject:e}),r[0]=i,r[1]=n,r[2]=e,r[3]=t,r[4]=a}else a=r[4];return a}function viewToNodesEdge(e){let t=[],n=[],r=new Map,i=Nn.from(e.nodes.reduce((e,t)=>(r.set(t.id,t),t.parent||e.push({node:t,parent:null}),e),[])),nodeById=e=>G(r.get(e),`Node not found: ${e}`),a;for(;a=i.dequeue();){let{node:e,parent:n}=a,r=A(e.children,1)||e.kind==Mn;if(r)for(let t of e.children)i.enqueue({node:nodeById(t),parent:e});let o={x:e.x,y:e.y};n&&(o.x-=n.x,o.y-=n.y);let s=e.id,c={id:s,position:o,zIndex:r?Nt.Compound:Nt.Element,style:{width:e.width,height:e.height},initialWidth:e.width,initialHeight:e.height,...n&&{parentId:n.id}},l=e.modelRef??null,u={navigateTo:e.navigateTo??null};switch(!0){case e.kind===Hr.Empty:t.push({...c,type:`empty`,data:{column:e.column}});break;case r&&!!l:t.push({...c,type:`compound`,data:{id:s,column:e.column,title:e.title,color:e.color,shape:e.shape,style:e.style,depth:e.depth??0,icon:e.icon??`none`,ports:e.ports,existsInCurrentView:e.existsInCurrentView,fqn:l,...u}});break;default:W(l,`Element should have either modelRef or deploymentRef`),t.push({...c,type:`element`,data:{id:s,column:e.column,fqn:l,title:e.title,technology:e.technology,description:e.description,height:e.height,width:e.width,color:e.color,shape:e.shape,icon:e.icon??`none`,ports:e.ports,style:e.style,existsInCurrentView:e.existsInCurrentView,tags:e.tags,...u}})}}for(let t of e.edges){let e=t.source,r=t.target,i=t.id;if(!A(t.points,2)){console.error(`edge should have at least 2 points`,t);continue}if(!A(t.relations,1)){console.error(`edge should have at least 1 relation`,t);continue}n.push({id:i,type:`relationship`,source:e,target:r,sourceHandle:t.sourceHandle,targetHandle:t.targetHandle,data:{sourceFqn:t.sourceFqn,targetFqn:t.targetFqn,relations:t.relations,color:t.color??`gray`,label:t.label,navigateTo:t.navigateTo??null,line:t.line??`dashed`,existsInCurrentView:t.existsInCurrentView},interactionWidth:20})}return{xynodes:t,xyedges:n}}z();const findRootSubject=e=>e.find(e=>e.data.column===`subjects`&&f(e.parentId)),Ur=(0,R.fromPromise)(async({input:e,self:t,signal:n})=>{let{subjectId:r,navigateFromNode:i,xyflow:a,xystore:o,update:s}=e,{nodes:c,width:l,height:u}=o.getState(),d=viewToNodesEdge(s),updateXYData=()=>{let{nodes:e,edges:t}=o.getState();return{xynodes:updateNodes(e,d.xynodes),xyedges:updateEdges(t,d.xyedges)}},f=J(t._parent),p=a.getZoom(),m=Math.max(p,1),h=Ct(s.bounds,l,u,qt,m,zr),g=d.xynodes.find(e=>e.type!==`empty`&&e.data.column===`subjects`&&e.data.fqn===r)??findRootSubject(d.xynodes),_=findRootSubject(c),v=i?c.find(e=>e.id===i):c.find(e=>e.type!==`empty`&&e.data.column!==`subjects`&&e.data.fqn===r);if(!g||!v||g.type===`empty`||!_||g.data.fqn===_.data.fqn)return await a.setViewport(h),updateXYData();let y={x:g.position.x+(g.initialWidth??0)/2,y:g.position.y+(g.initialHeight??0)/2},b=At(a.getInternalNode(_.id)),x=new Set;return c.forEach(e=>{if(e.id!==v.id){if(e.data.column===`subjects`){x.add(e.id);return}e.parentId&&(e.parentId===v.id||x.has(e.parentId))&&x.add(e.id)}}),c=updateNodes(c,c.flatMap(e=>x.has(e.id)?[]:e.id===v.id?{...k(e,[`parentId`]),position:{x:b.x-e.initialWidth/2,y:b.y-e.initialHeight/2},zIndex:Nt.Max,hidden:!1,data:{...e.data,dimmed:!1}}:{...e,data:{...e.data,dimmed:e.data.column===`subjects`?`immediate`:!0}})),f.send({type:`update.xydata`,xynodes:c,xyedges:[]}),await Kn(120),d.xynodes=d.xynodes.map(F.setDimmed(!1)),n.aborted?updateXYData():(a.setCenter(b.x,b.y,{zoom:p,duration:300,interpolate:`smooth`}),await Kn(300),await a.setCenter(y.x,y.y,{zoom:p}),updateXYData())}),Wr=(0,R.setup)({types:{context:{},tags:``,children:{},input:{},events:{}},actors:{layouter:Ur},guards:{hasViewId:({context:e})=>e.viewId!==null,isReady:({context:e})=>e.xyflow!==null&&e.xystore!==null&&e.layouted!==null,anotherSubject:({context:e,event:t})=>t.type===`update.view`?e.layouted?.subject!==t.layouted.subject:!1}}),xyflowInit=()=>Wr.assign(({event:e})=>((0,R.assertEvent)(e,`xyflow.init`),{xyflow:e.instance,xystore:e.store})),Gr=e(()=>Wr.assign(({event:e})=>((0,R.assertEvent)(e,`update.view`),{layouted:e.layouted,...viewToNodesEdge(e.layouted)})),`updateView`),xyflowUpdateNodeInternals=()=>Wr.createAction(({context:e})=>{q(e.xystore,`xystore is not initialized`);let{domNode:t,updateNodeInternals:n}=e.xystore.getState(),r=new Set(e.xyedges.flatMap(e=>[e.source,e.target]));if(r.size===0||!t)return;let i=new Map,a=t.querySelectorAll(`.react-flow__node`);for(let e of a){let t=e.getAttribute(`data-id`);t&&r.has(t)&&i.set(t,{id:t,nodeElement:e,force:!0})}n(i,{triggerFitView:!1})}),xyflowFitDiagram=e=>Wr.createAction(({context:t,event:n})=>{e??=n.type===`fitDiagram`?n:{};let{duration:r,bounds:i}=e??{};r??=450;let{xyflow:a,xystore:o}=t;q(a,`xyflow is not initialized`),q(o,`xystore is not initialized`),i??=t.layouted?.bounds;let s=Math.max(a.getZoom(),1);if(i){let{width:e,height:t}=o.getState(),n=Ct(i,e,t,qt,s,zr);a.setViewport(n,r>0?{duration:r,interpolate:`smooth`}:void 0).catch(console.error)}else a.fitView({minZoom:qt,maxZoom:s,padding:zr,...r>0&&{duration:r,interpolate:`smooth`}}).catch(console.error)}),xyflowApplyNodeChanges=()=>Wr.assign(({context:e,event:t})=>((0,R.assertEvent)(t,`xyflow.applyNodeChanges`),{xynodes:xt(t.changes,e.xynodes)})),xyflowApplyEdgeChanges=()=>Wr.assign(({context:e,event:t})=>((0,R.assertEvent)(t,`xyflow.applyEdgeChanges`),{xyedges:_t(t.changes,e.xyedges)})),openRelationshipSource=()=>Wr.enqueueActions(({system:e,event:t})=>{if(t.type!==`xyflow.edgeClick`)return;let n=typedSystem(e).diagramActorRef,r=t.edge.data.relations;A(r,1)&&n.send({type:`open.source`,relation:r[0]})}),dispose=()=>Wr.assign({xyflow:null,layouted:null,xystore:null,xyedges:[],xynodes:[]}),Kr=Wr.createMachine({id:`relationships-browser`,context:({input:e})=>({subject:e.subject,viewId:e.viewId,scope:e.viewId?e.scope:`global`,closeable:e.closeable??!0,enableSelectSubject:e.enableSelectSubject??!0,enableChangeScope:e.enableChangeScope??!0,xyflow:null,xystore:null,layouted:null,navigateFromNode:null,xynodes:[],xyedges:[]}),initial:`initializing`,on:{"xyflow.applyNodeChanges":{actions:xyflowApplyNodeChanges()},"xyflow.applyEdgeChanges":{actions:xyflowApplyEdgeChanges()}},states:{initializing:{on:{"xyflow.init":{actions:xyflowInit(),target:`isReady`},"update.view":{actions:Gr(),target:`isReady`},stop:`closed`,close:`closed`}},isReady:{always:[{guard:`isReady`,actions:[xyflowFitDiagram({duration:0}),(0,R.raise)({type:`xyflow.updateNodeInternals`},{delay:150})],target:`active`},{target:`initializing`}]},active:{initial:`idle`,tags:[`active`],on:{"xyflow.nodeClick":{actions:(0,R.enqueueActions)(({event:e,enqueue:t})=>{if(`fqn`in e.node.data){let n=e.node.data.fqn;t.raise({type:`navigate.to`,subject:n,fromNode:e.node.id})}})},"xyflow.edgeClick":[{guard:`hasViewId`,actions:(0,R.enqueueActions)(({event:e,context:t,system:n,enqueue:r})=>{e.edge.selected||e.edge.data.relations.length>1?r.sendTo(typedSystem(n).overlaysActorRef,{type:`open.relationshipDetails`,viewId:t.viewId,source:e.edge.data.sourceFqn,target:e.edge.data.targetFqn}):r(openRelationshipSource())})},{actions:openRelationshipSource()}],"navigate.to":{actions:[(0,R.assign)({subject:({event:e})=>e.subject,viewId:({event:e,context:t})=>e.viewId??t.viewId??null,navigateFromNode:({event:e})=>e.fromNode??null})]},"xyflow.paneDblClick":{actions:xyflowFitDiagram()},"update.view":{actions:Gr(),target:`.layouting`},"change.scope":{actions:(0,R.assign)({scope:({event:e})=>e.scope})},"xyflow.updateNodeInternals":{actions:xyflowUpdateNodeInternals()},fitDiagram:{actions:xyflowFitDiagram()},"xyflow.resized":{actions:[(0,R.cancel)(`fitDiagram`),(0,R.raise)({type:`fitDiagram`},{id:`fitDiagram`,delay:300})]},"xyflow.init":{actions:xyflowInit()},"xyflow.unmount":{target:`initializing`},close:`closed`},states:{idle:{on:{"xyflow.edgeMouseEnter":{actions:[(0,R.assign)({xyedges:({context:e,event:t})=>{let n=e.xyedges.some(e=>e.data.dimmed!==!1||e.selected);return e.xyedges.map(e=>e.id===t.edge.id?F.setData(e,{hovered:!0,dimmed:!1}):n&&!e.selected?F.setDimmed(e,`immediate`):e)}}),(0,R.cancel)(`undim.edges`),(0,R.cancel)(`dim.nonhovered.edges`),(0,R.raise)({type:`dim.nonhovered.edges`},{id:`dim.nonhovered.edges`,delay:200})]},"xyflow.edgeMouseLeave":{actions:[(0,R.assign)({xyedges:({context:e,event:t})=>e.xyedges.map(e=>e.id===t.edge.id?F.setHovered(e,!1):e)}),(0,R.cancel)(`dim.nonhovered.edges`),(0,R.raise)({type:`undim.edges`},{id:`undim.edges`,delay:400})]},"dim.nonhovered.edges":{actions:(0,R.assign)({xyedges:({context:e})=>e.xyedges.map(e=>e.data.hovered?e:F.setDimmed(e,e.data.dimmed===`immediate`?`immediate`:!0))})},"undim.edges":{actions:(0,R.assign)({xyedges:({context:e})=>e.xyedges.map(F.setDimmed(!1))})},"xyflow.selectionChange":{actions:(0,R.enqueueActions)(({event:e,context:t,enqueue:n})=>{e.edges.length===0&&t.xyedges.some(e=>e.data.dimmed)&&!t.xyedges.some(e=>e.data.hovered)&&n.raise({type:`undim.edges`})})}}},layouting:{invoke:{id:`layouter`,src:`layouter`,input:({context:e})=>({subjectId:e.subject,navigateFromNode:e.navigateFromNode,xyflow:J(e.xyflow),xystore:J(e.xystore),update:J(e.layouted)}),onDone:{target:`idle`,actions:(0,R.enqueueActions)(({enqueue:e,event:t})=>{e.assign({xynodes:t.output.xynodes,xyedges:t.output.xyedges,navigateFromNode:null}),e.raise({type:`fitDiagram`,duration:200},{id:`fitDiagram`,delay:50});for(let t=1;t<8;t++)e.raise({type:`xyflow.updateNodeInternals`},{delay:120+t*75})})}},on:{"update.xydata":{actions:(0,R.assign)({xynodes:({event:e})=>e.xynodes,xyedges:({event:e})=>e.xyedges})},"xyflow.applyEdgeChanges":{},"xyflow.applyNodeChanges":{}}}}},closed:{id:`closed`,type:`final`,entry:dispose()}},exit:dispose()});z();const qr=(0,R.setup)({types:{context:{},input:{},events:{},children:{}},actors:{relationshipsBrowserLogic:Kr}}).createMachine({id:`element-details`,context:({input:e})=>({...e,initiatedFrom:{node:e.initiatedFrom?.node??null,clientRect:e.initiatedFrom?.clientRect??null}}),initial:`active`,states:{active:{entry:(0,R.spawnChild)(`relationshipsBrowserLogic`,{id:({self:e})=>`${e.id}-relationships`,input:({context:e})=>({subject:e.subject,viewId:e.currentView.id,scope:`view`,enableSelectSubject:!1,enableChangeScope:!0,closeable:!1})}),exit:[(0,R.sendTo)(({self:e})=>`${e.id}-relationships`,{type:`close`}),(0,R.stopChild)(({self:e})=>`${e.id}-relationships`)],on:{"change.subject":{actions:(0,R.assign)({subject:({event:e})=>e.subject})},close:`closed`}},closed:{id:`closed`,type:`final`}}});function layoutResultToXYFlow(e){let t=[],n=[],r=new Map,i=Nn.from(e.nodes.reduce((e,t)=>(r.set(t.id,t),t.parent||e.push({node:t,parent:null}),e),[])),nodeById=e=>G(r.get(e),`Node not found: ${e}`),a;for(;a=i.dequeue();){let{node:e,parent:n}=a,r=A(e.children,1);if(r)for(let t of e.children)i.enqueue({node:nodeById(t),parent:e});let o={x:e.x,y:e.y};n&&(o.x-=n.x,o.y-=n.y);let s=e.id,c={id:s,draggable:!1,deletable:!1,position:o,zIndex:r?Nt.Compound:Nt.Element,style:{width:e.width,height:e.height},initialWidth:e.width,initialHeight:e.height,...n&&{parentId:n.id}},l=e.modelRef,u={navigateTo:e.navigateTo??null};switch(!0){case r:t.push({...c,type:`compound`,data:{id:s,column:e.column,title:e.title,color:e.color,style:e.style,depth:e.depth??0,icon:e.icon??`none`,ports:e.ports,fqn:l,...u}});break;default:t.push({...c,type:`element`,data:{id:s,column:e.column,fqn:l,title:e.title,technology:e.technology,description:e.description??null,height:e.height,width:e.width,color:e.color,shape:e.shape,icon:e.icon??`none`,ports:e.ports,style:e.style,tags:e.tags,...u}})}}for(let{source:t,target:r,relationId:i,label:a,technology:o,description:s,navigateTo:c=null,color:l=`gray`,line:u=`dashed`,...d}of e.edges){let e=d.id;n.push({id:e,type:`relationship`,source:t,target:r,sourceHandle:d.sourceHandle,targetHandle:d.targetHandle,deletable:!1,data:{relationId:i,label:a,color:l,navigateTo:c,line:u,description:s??null,...o&&{technology:o}}})}return{xynodes:t,xyedges:n,bounds:e.bounds}}z();function inputToSubject(e){return`edgeId`in e?(W(r(e.edgeId),`edgeId is required`),{edgeId:e.edgeId}):{source:e.source,target:e.target}}const Jr={x:`22px`,y:`22px`},Yr=(0,R.setup)({types:{context:{},input:{},tags:{},events:{}},actions:{"xyflow:fitDiagram":({context:e},t)=>{let{duration:n,bounds:r}=t??{};n??=450;let{xyflow:i,xystore:a}=e;W(i,`xyflow is not initialized`),W(a,`xystore is not initialized`),r??=e.bounds;let o=Math.max(i.getZoom(),1);if(r){let{width:e,height:t}=a.getState(),s=Ct(r,e,t,qt,o,Jr);i.setViewport(s,n>0?{duration:n}:void 0).catch(console.error)}else i.fitView({minZoom:qt,maxZoom:o,padding:Jr,...n>0&&{duration:n,interpolate:`smooth`}}).catch(console.error)},"xyflow:updateNodeInternals":({context:e})=>{W(e.xystore,`xystore is not initialized`);let{domNode:t,updateNodeInternals:n}=e.xystore.getState(),r=new Set(e.xyedges.flatMap(e=>[e.source,e.target]));if(r.size===0||!t)return;let i=new Map;for(let e of r){let n=t.querySelector(`.react-flow__node[data-id="${e}"]`);n&&i.set(e,{id:e,nodeElement:n,force:!0})}n(i,{triggerFitView:!1})},updateXYFlow:(0,R.assign)(({context:e,event:t})=>{(0,R.assertEvent)(t,`xyflow.init`);let n=e.initialized;return n.xyflow||(n={...n,xyflow:!0}),{initialized:n,xyflow:t.instance,xystore:t.store}}),updateLayoutData:(0,R.assign)(({context:e,event:t})=>{(0,R.assertEvent)(t,`update.layoutData`);let{xynodes:n,xyedges:r,bounds:i}=layoutResultToXYFlow(t.data),a=e.initialized;return a.xydata||(a={...a,xydata:!0}),{initialized:a,xynodes:updateNodes(e.xynodes,n),xyedges:updateEdges(e.xyedges,r),bounds:Tt(e.bounds,i)?e.bounds:i}}),"open relationship source":(0,R.enqueueActions)(({system:e,event:t})=>{if(t.type!==`xyflow.edgeClick`)return;let n=typedSystem(e).diagramActorRef,r=t.edge.data.relationId;r&&n.send({type:`open.source`,relation:r})})},guards:{isReady:({context:e})=>e.initialized.xydata&&e.initialized.xyflow,"enable: navigate.to":()=>!0}}).createMachine({initial:`initializing`,context:({input:e})=>({subject:inputToSubject(e),viewId:e.viewId,bounds:{x:0,y:0,width:200,height:200},initialized:{xydata:!1,xyflow:!1},xyflow:null,xystore:null,xynodes:[],xyedges:[]}),states:{initializing:{on:{"xyflow.init":{actions:`updateXYFlow`,target:`isReady`},"update.layoutData":{actions:`updateLayoutData`,target:`isReady`},close:{target:`closed`}}},isReady:{always:[{guard:`isReady`,actions:[{type:`xyflow:fitDiagram`,params:{duration:0}},(0,R.raise)({type:`xyflow.updateNodeInternals`},{delay:50})],target:`ready`},{target:`initializing`}]},ready:{on:{"xyflow.edgeMouseEnter":{actions:[(0,R.assign)({xyedges:({context:e,event:t})=>{let n=e.xyedges.some(e=>e.data.dimmed===!0||e.data.dimmed===`immediate`);return e.xyedges.map(e=>e.id===t.edge.id?F.setData(e,{hovered:!0,dimmed:!1}):n&&!e.selected?F.setDimmed(e,`immediate`):e)}}),(0,R.cancel)(`undim.edges`),(0,R.cancel)(`dim.nonhovered.edges`),(0,R.raise)({type:`dim.nonhovered.edges`},{id:`dim.nonhovered.edges`,delay:100})]},"xyflow.edgeMouseLeave":{actions:[(0,R.assign)({xyedges:({context:e,event:t})=>e.xyedges.map(e=>e.id===t.edge.id?F.setHovered(e,!1):e)}),(0,R.cancel)(`dim.nonhovered.edges`),(0,R.raise)({type:`undim.edges`},{id:`undim.edges`,delay:400})]},"dim.nonhovered.edges":{actions:(0,R.assign)({xyedges:({context:e})=>e.xyedges.map(e=>F.setDimmed(e,e.data.hovered!==!0))})},"undim.edges":{actions:(0,R.assign)({xyedges:({context:e})=>e.xyedges.some(e=>e.selected===!0)?e.xyedges.map(e=>F.setDimmed(e,e.selected===!0?!1:e.data.dimmed||`immediate`)):e.xyedges.map(F.setDimmed(!1))})},"xyflow.selectionChange":{actions:(0,R.enqueueActions)(({event:e,context:t,enqueue:n})=>{e.edges.length===0&&t.xyedges.some(e=>e.data.dimmed)&&!t.xyedges.some(e=>e.data.hovered)&&n.raise({type:`undim.edges`})})},"update.layoutData":{actions:[`updateLayoutData`,(0,R.cancel)(`fitDiagram`),(0,R.raise)({type:`fitDiagram`,duration:0},{id:`fitDiagram`,delay:50}),(0,R.raise)({type:`xyflow.updateNodeInternals`},{delay:75})]},"xyflow.init":{actions:`updateXYFlow`},"xyflow.applyNodeChanges":{actions:(0,R.assign)({xynodes:({context:e,event:t})=>xt(t.changes,e.xynodes)})},"xyflow.applyEdgeChanges":{actions:(0,R.assign)({xyedges:({context:e,event:t})=>_t(t.changes,e.xyedges)})},"xyflow.paneDblClick":{actions:`xyflow:fitDiagram`},"xyflow.edgeClick":{actions:`open relationship source`},"navigate.to":{actions:(0,R.assign)({subject:({event:e})=>inputToSubject(e.params),viewId:({context:e,event:t})=>t.params.viewId??e.viewId})},close:{target:`closed`}},exit:(0,R.assign)({xyedges:[],xynodes:[],initialized:{xydata:!1,xyflow:!1},xyflow:null,xystore:null})},closed:{type:`final`}},on:{fitDiagram:{actions:{type:`xyflow:fitDiagram`,params:w(`event`)}},"xyflow.resized":{actions:[(0,R.cancel)(`fitDiagram`),(0,R.raise)({type:`fitDiagram`},{id:`fitDiagram`,delay:200})]},"xyflow.updateNodeInternals":{actions:`xyflow:updateNodeInternals`}}});z();const Q=(0,R.setup)({types:{context:{},events:{},emitted:{},children:{}},actors:{relationshipDetails:Yr,elementDetails:qr,relationshipsBrowser:Kr,hotkey:(0,R.fromCallback)(({sendBack:e})=>{let t=Be([[`Escape`,t=>{t.stopPropagation(),e({type:`close`})},{preventDefault:!0}]]);return document.body.addEventListener(`keydown`,t,{capture:!0}),()=>{document.body.removeEventListener(`keydown`,t,{capture:!0})}})},guards:{"has overlays?":({context:e})=>e.overlays.length>0,"close specific overlay?":({context:e,event:t})=>((0,R.assertEvent)(t,`close`),r(t.actorId)&&e.overlays.some(e=>e.id===t.actorId)),"last: is relationshipDetails?":({context:e})=>ce(e.overlays)?.type===`relationshipDetails`,"last: is relationshipsBrowser?":({context:e})=>ce(e.overlays)?.type===`relationshipsBrowser`}}),emitOpened=e=>Q.emit({type:`opened`,overlay:e.split(`-`)[0]}),emitClosed=e=>Q.emit({type:`closed`,overlay:e.split(`-`)[0]}),emitIdle=()=>Q.emit({type:`idle`}),closeLastOverlay=()=>Q.enqueueActions(({context:e,enqueue:t})=>{if(e.overlays.length===0)return;let n=ce(e.overlays)?.id;n&&(t.sendTo(n,{type:`close`}),t.stopChild(n),t.assign({overlays:e.overlays.filter(e=>e.id!==n)}),t(emitClosed(n)))}),closeSpecificOverlay=()=>Q.enqueueActions(({context:e,enqueue:t,event:n})=>{(0,R.assertEvent)(n,`close`);let i=n.actorId;if(!r(i))return;let a=e.overlays.find(e=>e.id===i)?.id;a&&(t.sendTo(a,{type:`close`}),t.stopChild(a),t.assign({overlays:e.overlays.filter(e=>e.id!==a)}),t(emitClosed(a)))}),Xr=e(()=>Q.enqueueActions(({context:e,enqueue:t})=>{for(let{id:n}of S(e.overlays))t.sendTo(n,{type:`close`}),t.stopChild(n),t(emitClosed(n));t.assign({overlays:[]})}),`closeAllOverlays`),Zr=e(()=>Q.enqueueActions(({context:e,enqueue:t,event:n})=>{if((0,R.assertEvent)(n,`open.elementDetails`),e.overlays.some(e=>e.type===`elementDetails`&&e.subject===n.subject))return;let r=`elementDetails-${e.seq}`;t.spawnChild(`elementDetails`,{id:r,input:n,syncSnapshot:!0}),t.assign({seq:e.seq+1,overlays:[...e.overlays,{id:r,type:`elementDetails`,subject:n.subject}]}),t(emitOpened(r))}),`openElementDetails`),openRelationshipDetails=()=>Q.enqueueActions(({context:e,enqueue:t,event:n})=>{(0,R.assertEvent)(n,`open.relationshipDetails`);let r=ce(e.overlays);if(r?.type===`relationshipDetails`){t.sendTo(r.id,{...n,type:`navigate.to`});return}let i=`relationshipDetails-${e.seq}`;t.spawnChild(`relationshipDetails`,{id:i,input:n,syncSnapshot:!0}),t.assign({seq:e.seq+1,overlays:[...e.overlays,{id:i,type:`relationshipDetails`}]}),t(emitOpened(i))}),openRelationshipsBrowser=()=>Q.enqueueActions(({context:e,enqueue:t,event:n})=>{(0,R.assertEvent)(n,`open.relationshipsBrowser`);let r=ce(e.overlays);if(r?.type===`relationshipsBrowser`){t.sendTo(r.id,{type:`navigate.to`,subject:n.subject,viewId:n.viewId});return}let i=`relationshipsBrowser-${e.seq}`;t.spawnChild(`relationshipsBrowser`,{id:i,input:n,syncSnapshot:!0}),t.assign({seq:e.seq+1,overlays:[...e.overlays,{id:i,type:`relationshipsBrowser`,subject:n.subject}]}),t(emitOpened(i))}),Qr=e(()=>Q.enqueueActions(({enqueue:e,event:t})=>{switch((0,R.assertEvent)(t,[`open.elementDetails`,`open.relationshipDetails`,`open.relationshipsBrowser`]),t.type){case`open.elementDetails`:e(Zr());break;case`open.relationshipDetails`:e(openRelationshipDetails());break;case`open.relationshipsBrowser`:e(openRelationshipsBrowser());break}}),`openOverlay`),listenToEsc=()=>Q.spawnChild(`hotkey`,{id:`hotkey`}),stopListeningToEsc=()=>Q.stopChild(`hotkey`),checkState=()=>Q.enqueueActions(({enqueue:e,context:t})=>{t.overlays.length===0&&e.raise({type:`close`})}),$r=Q.createMachine({id:`overlays`,context:()=>({seq:1,overlays:[]}),initial:`idle`,states:{idle:{entry:[emitIdle()],on:{"open.*":{actions:Qr(),target:`active`}}},active:{entry:[listenToEsc()],exit:[stopListeningToEsc()],on:{"open.*":{actions:Qr()},close:[{guard:(0,gn.not)(`has overlays?`),target:`idle`},{guard:`close specific overlay?`,actions:[closeSpecificOverlay(),checkState()]},{actions:[closeLastOverlay(),checkState()]}],"close.all":{actions:[Xr()],target:`idle`}}},final:{entry:[Xr(),stopListeningToEsc()],type:`final`}}});z();const ei=(0,R.setup)({types:{context:{},events:{}},actions:{"reset navigateTo":(0,R.assign)({navigateTo:()=>null}),"assign navigateTo":(0,R.assign)(({event:e})=>((0,R.assertEvent)(e,[`navigate.to`]),{navigateTo:{viewId:e.viewId,focusOnElement:e.focusOnElement}})),"change searchValue":(0,R.assign)({searchValue:({event:e,context:t})=>((0,R.assertEvent)(e,[`change.search`,`open`]),e.search??t.searchValue)}),"reset pickViewFor":(0,R.assign)({pickViewFor:()=>null})}}).createMachine({id:`search`,context:{openedWithSearch:null,searchValue:``,pickViewFor:null,navigateTo:null},initial:`inactive`,on:{close:{target:`.inactive`}},states:{inactive:{entry:[`reset navigateTo`,`reset pickViewFor`],on:{open:{target:`opened`,actions:[(0,R.assign)({openedWithSearch:({event:e})=>e.search??null,searchValue:({event:e,context:t})=>e.search??t.searchValue})]}}},opened:{on:{open:{actions:`change searchValue`},"change.search":{actions:`change searchValue`},"pickview.open":{target:`pickView`,actions:(0,R.assign)({pickViewFor:({event:e})=>e.elementFqn})},"navigate.to":{target:`waitAnimationEnd`,actions:`assign navigateTo`}}},pickView:{on:{"pickview.close":{target:`opened`,actions:`reset pickViewFor`},"navigate.to":{target:`waitAnimationEnd`,actions:`assign navigateTo`}}},waitAnimationEnd:{on:{"animation.presence.end":{target:`inactive`,actions:(0,R.enqueueActions)(({context:e,system:t,enqueue:n})=>{let r=e.navigateTo;if(!r)return;n(`reset navigateTo`);let i=typedSystem(t).diagramActorRef;if(r.focusOnElement&&i.getSnapshot().context.view.id===r.viewId){n.sendTo(i,{type:`focus.node`,nodeId:r.focusOnElement});return}n.sendTo(i,{type:`navigate.to`,...r})})}}}}});z();const ti=(0,R.fromCallback)(({sendBack:e})=>{let t=Be([[`Escape`,t=>{t.stopPropagation(),e({type:`key.esc`})},{preventDefault:!0}]]),n=Be([[`ArrowLeft`,t=>{t.stopPropagation(),e({type:`key.arrow.left`})},{preventDefault:!0}],[`ArrowUp`,t=>{t.stopPropagation(),e({type:`key.arrow.up`})},{preventDefault:!0}],[`ArrowRight`,t=>{t.stopPropagation(),e({type:`key.arrow.right`})},{preventDefault:!0}],[`ArrowDown`,t=>{t.stopPropagation(),e({type:`key.arrow.down`})},{preventDefault:!0}]]);return document.body.addEventListener(`keydown`,t),document.body.addEventListener(`keydown`,n,{capture:!0}),()=>{document.body.removeEventListener(`keydown`,t),document.body.removeEventListener(`keydown`,n,{capture:!0})}});z();const ni=(0,R.fromCallback)(({sendBack:e})=>{let beforePrint=()=>{e({type:`media.print.on`})},afterPrint=()=>{e({type:`media.print.off`})};return window.addEventListener(`beforeprint`,beforePrint),window.addEventListener(`afterprint`,afterPrint),()=>{window.removeEventListener(`beforeprint`,beforePrint),window.removeEventListener(`afterprint`,afterPrint)}});z();const deriveToggledFeatures=e=>{let t=e.toggledFeatures,n=m(e.activeWalkthrough),r=e.features.enableCompareWithLatest&&(t.enableCompareWithLatest??!1)&&m(e.view._layout)&&!n;return{enableCompareWithLatest:r,enableReadOnly:e.features.enableReadOnly||(t.enableReadOnly??!1)||n||r&&e.view._layout===`auto`}},isReadOnly=e=>deriveToggledFeatures(e).enableReadOnly,$=(0,R.setup)({types:{context:{},input:{},children:{},events:{},emitted:{}},actors:{hotkeyActorLogic:ti,overlaysActorLogic:$r,searchActorLogic:ei,mediaPrintActorLogic:ni,editorActor:Rr},guards:{isReady:({context:e})=>e.initialized.xydata&&e.initialized.xyflow,"enabled: Editor":({context:e})=>e.features.enableEditor,"enabled: FitView":({context:e})=>e.features.enableFitView,"enabled: FocusMode":({context:e})=>e.features.enableFocusMode&&isReadOnly(e),"enabled: Readonly":({context:e})=>isReadOnly(e),"enabled: RelationshipDetails":({context:e})=>e.features.enableRelationshipDetails,"enabled: Search":({context:e})=>e.features.enableSearch,"enabled: ElementDetails":({context:e})=>e.features.enableElementDetails,"enabled: OpenSource":({context:e})=>e.features.enableVscode,"enabled: DynamicViewWalkthrough":({context:e})=>e.features.enableDynamicViewWalkthrough,"focus.node: autoUnfocus":({event:e})=>((0,R.assertEvent)(e,`focus.node`),e.autoUnfocus===!0),"enabled: Overlays":({context:e})=>e.features.enableElementDetails||e.features.enableRelationshipBrowser||e.features.enableRelationshipDetails,"not readonly":({context:e})=>!isReadOnly(e),"is dynamic view":({context:e})=>e.view._type===`dynamic`,"is same view":({context:e,event:t})=>{if((0,R.assertEvent)(t,[`update.view`,`navigate.to`]),t.type===`update.view`)return e.view.id===t.view.id;if(t.type===`navigate.to`)return e.view.id===t.viewId;Vn(t)},"is another view":({context:e,event:t})=>{if((0,R.assertEvent)(t,[`update.view`,`navigate.to`]),t.type===`update.view`)return e.view.id!==t.view.id;if(t.type===`navigate.to`)return e.view.id!==t.viewId;Vn(t)},"click: node has modelFqn":({event:e})=>((0,R.assertEvent)(e,`xyflow.nodeClick`),`modelFqn`in e.node.data),"click: selected node":({event:e})=>((0,R.assertEvent)(e,`xyflow.nodeClick`),e.node.selected===!0),"click: same node":({context:e,event:t})=>((0,R.assertEvent)(t,`xyflow.nodeClick`),e.lastClickedNode?.id===t.node.id),"click: focused node":({context:e,event:t})=>((0,R.assertEvent)(t,`xyflow.nodeClick`),e.focusedNode===t.node.id),"click: node has connections":({context:e,event:t})=>((0,R.assertEvent)(t,`xyflow.nodeClick`),e.xyedges.some(e=>e.source===t.node.id||e.target===t.node.id)),"click: selected edge":({event:e})=>((0,R.assertEvent)(e,[`xyflow.edgeClick`,`xyflow.edgeDoubleClick`]),e.edge.selected===!0||e.edge.data.active===!0),"click: active walkthrough step":({context:e,event:t})=>{if((0,R.assertEvent)(t,[`xyflow.edgeClick`,`xyflow.edgeDoubleClick`]),!e.activeWalkthrough)return!1;let{stepId:n}=e.activeWalkthrough;return t.edge.id===n}}}),ri={idle:`#idle`,focused:`#focused`,walkthrough:`#walkthrough`,printing:`#printing`,navigating:`#navigating`},ii=E(ri,e=>({target:e})),ai=qe({base:{transitionDuration:`normal`},variants:{delay:{true:{transitionDelay:{base:`0.2s`,_hover:`0s`}}}}}),oi={normal:{scale:1,x:0,y:0},hovered:{scale:1.2,x:-1,y:-1},whileHover:{scale:1.4,x:-3,y:-1},whileTap:{scale:1}};function CompoundActionButton(e){let t=V(12),{data:n,icon:r,onClick:i}=e,{hovered:a}=n,o=a===void 0?!1:a,s=Re(o,o?130:0)[0]&&o,c=s?`hovered`:`normal`,l;t[0]!==s||t[1]!==o?(l=M(`nodrag nopan`,ai({delay:o&&!s}),Ge({variant:`transparent`})),t[0]=s,t[1]=o,t[2]=l):l=t[2];let u;t[3]===r?u=t[4]:(u=r??H(nt,{stroke:2}),t[3]=r,t[4]=u);let d;t[5]!==i||t[6]!==l||t[7]!==u?(d=H(Se,{className:l,tabIndex:-1,onClick:i,onDoubleClick:I,children:u}),t[5]=i,t[6]=l,t[7]=u,t[8]=d):d=t[8];let f;return t[9]!==d||t[10]!==c?(f=H(cn,{initial:!1,variants:oi,animate:c,whileHover:`whileHover`,whileTap:`whileTap`,className:`likec4-compound-navigation compound-action`,onClick:I,tabIndex:-1,children:d}),t[9]=d,t[10]=c,t[11]=f):f=t[11],f}const si={normal:{scale:1},hovered:{scale:1.2},whileHover:{scale:1.4},whileTap:{scale:1}};function CompoundDetailsButton(e){let t=V(12),{data:n,icon:r,onClick:i}=e,{hovered:a}=n,o=a===void 0?!1:a,s=Re(o,o?130:0)[0]&&o,c=s?`hovered`:`normal`,l;t[0]!==s||t[1]!==o?(l=M(`nodrag nopan`,ai({delay:o&&!s}),Ge({variant:`transparent`})),t[0]=s,t[1]=o,t[2]=l):l=t[2];let u;t[3]===r?u=t[4]:(u=r??H(Qe,{stroke:1.8,style:{width:`75%`}}),t[3]=r,t[4]=u);let d;t[5]!==i||t[6]!==l||t[7]!==u?(d=H(Se,{className:l,tabIndex:-1,onClick:i,onDoubleClick:I,children:u}),t[5]=i,t[6]=l,t[7]=u,t[8]=d):d=t[8];let f;return t[9]!==d||t[10]!==c?(f=H(cn,{initial:!1,variants:si,animate:c,whileHover:`whileHover`,whileTap:`whileTap`,className:`likec4-compound-details details-button`,tabIndex:-1,children:d}),t[9]=d,t[10]=c,t[11]=f):f=t[11],f}function CompoundNodeContainer(e){let t=V(24),n,r,i,a,o;t[0]===e?(n=t[1],r=t[2],i=t[3],a=t[4],o=t[5]):({nodeProps:o,className:r,children:n,style:a,...i}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a,t[5]=o);let{data:s}=o,{hovered:c,dimmed:l,...u}=s,d=c===void 0?!1:c,f=l===void 0?!1:l,p=rn(),m=b(u.style.opacity??100,{min:0,max:100}),h=m<98,g=m/100*50,_;t[6]===g?_=t[7]:(_=b(g,{min:0,max:50}),t[6]=g,t[7]=_);let v=50+_,y=Je({isTransparent:h,inverseColor:m<70,borderStyle:u.style.border??(h?p.defaults.group.border:`none`)}),x=b(u.depth??1,{min:1,max:5}),S=hn,C=M(y,r),w;t[8]===f?w=t[9]:(w=f!==!1&&{"data-likec4-dimmed":f},t[8]=f,t[9]=w);let T=`${v}%`,E=`${m}%`,D;t[10]!==T||t[11]!==E?(D={"--_border-transparency":T,"--_compound-transparency":E},t[10]=T,t[11]=E,t[12]=D):D=t[12];let O=a,k=i,ee;return t[13]!==n||t[14]!==u.color||t[15]!==x||t[16]!==d||t[17]!==D||t[18]!==O||t[19]!==k||t[20]!==S.div||t[21]!==C||t[22]!==w?(ee=H(S.div,{className:C,initial:!1,"data-likec4-hovered":d,"data-likec4-color":u.color,"data-compound-depth":x,...w,tabIndex:-1,animate:D,style:O,...k,children:n}),t[13]=n,t[14]=u.color,t[15]=x,t[16]=d,t[17]=D,t[18]=O,t[19]=k,t[20]=S.div,t[21]=C,t[22]=w,t[23]=ee):ee=t[23],ee}function CompoundTitle(e){let t=V(7),{data:n}=e,r;t[0]===n?r=t[1]:(r=at({element:n,className:`likec4-compound-icon`}),t[0]=n,t[1]=r);let i=r,a;t[2]===n.title?a=t[3]:(a=H(`div`,{className:`likec4-compound-title`,children:n.title}),t[2]=n.title,t[3]=a);let o;return t[4]!==i||t[5]!==a?(o=U(`div`,{className:`likec4-compound-title-container`,children:[i,a]}),t[4]=i,t[5]=a,t[6]=o):o=t[6],o}function EdgeActionButton(e){let t=V(6),{icon:n,onClick:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=M(`nodrag nopan`,Ye()),t[0]=i):i=t[0];let a;t[1]===n?a=t[2]:(a=n??H(nt,{}),t[1]=n,t[2]=a);let o;return t[3]!==r||t[4]!==a?(o=H(Se,{className:i,onPointerDownCapture:I,onClick:r,role:`button`,onDoubleClick:I,children:a}),t[3]=r,t[4]=a,t[5]=o):o=t[5],o}const ci={normal:{originX:.4,originY:.6,scale:1,opacity:.5},hovered:{originX:.4,originY:.6,scale:1.25,opacity:.9},selected:{originX:.4,originY:.6,scale:1.25,opacity:.9},whileHover:{scale:1.4,opacity:1},whileTap:{scale:1.15}},li=N({position:`absolute`,top:`0.5`,right:`0.5`,_shapeBrowser:{right:`[5px]`},_shapeCylinder:{top:`[14px]`},_shapeStorage:{top:`[14px]`},_shapeQueue:{top:`[1px]`,right:`3`},_smallZoom:{display:`none`},_print:{display:`none`}});function ElementDetailsButton(e){let t=V(8),{selected:n,data:r,icon:i,onClick:a}=e,o=n===void 0?!1:n,{hovered:s}=r,c=s===void 0?!1:s,l;bb0:switch(!0){case c:l=`hovered`;break bb0;case o:l=`selected`;break bb0;default:l=`normal`}let u;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(u=M(li,`details-button`),t[0]=u):u=t[0];let d;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(d=M(`nodrag nopan`,Ge({variant:`transparent`})),t[1]=d):d=t[1];let f;t[2]===i?f=t[3]:(f=i??H(Qe,{stroke:1.8,style:{width:`75%`}}),t[2]=i,t[3]=f);let p;return t[4]!==a||t[5]!==f||t[6]!==l?(p=H(He,{className:u,children:H(Se,{className:d,component:ln,initial:!1,variants:ci,animate:l,whileHover:`whileHover`,whileTap:`whileTap`,onClick:a,onDoubleClick:I,tabIndex:-1,children:f})}),t[4]=a,t[5]=f,t[6]=l,t[7]=p):p=t[7],p}const ui=xn((e,t)=>{let n=V(22),r,i,a,o,s;n[0]===e?(r=n[1],i=n[2],a=n[3],o=n[4],s=n[5]):({tag:s,cursor:i,className:r,style:o,...a}=e,n[0]=e,n[1]=r,n[2]=i,n[3]=a,n[4]=o,n[5]=s);let c=useTagSpecification(s),l;n[6]!==r||n[7]!==c?(l=M(Xe({autoTextColor:Bn(c)}),r),n[6]=r,n[7]=c,n[8]=l):l=n[8];let u;n[9]!==i||n[10]!==o?(u={cursor:i,...o},n[9]=i,n[10]=o,n[11]=u):u=n[11];let d;n[12]===Symbol.for(`react.memo_cache_sentinel`)?(d=H(`span`,{children:`#`}),n[12]=d):d=n[12];let f;n[13]===s?f=n[14]:(f=H(`span`,{children:s}),n[13]=s,n[14]=f);let p;return n[15]!==a||n[16]!==t||n[17]!==l||n[18]!==u||n[19]!==f||n[20]!==s?(p=U(He,{ref:t,"data-likec4-tag":s,className:l,...a,style:u,children:[d,f]}),n[15]=a,n[16]=t,n[17]=l,n[18]=u,n[19]=f,n[20]=s,n[21]=p):p=n[21],p}),propsAreEqual=(e,t)=>e.id===t.id&&e.data.width===t.data.width&&(e.data.hovered??!1)===(t.data.hovered??!1)&&P(e.data.tags,t.data.tags),di=Sn(e=>{let t=V(8),{id:n,data:r,onTagClick:i,onTagMouseEnter:a,onTagMouseLeave:o}=e,{tags:s,width:c,hovered:l}=r,u=l===void 0?!1:l;if(!s||!A(s,1))return null;let d;return t[0]!==u||t[1]!==n||t[2]!==i||t[3]!==a||t[4]!==o||t[5]!==s||t[6]!==c?(d=H(WithElementTags,{id:n,tags:s,width:c,hovered:u,onTagClick:i,onTagMouseEnter:a,onTagMouseLeave:o}),t[0]=u,t[1]=n,t[2]=i,t[3]=a,t[4]=o,t[5]=s,t[6]=c,t[7]=d):d=t[7],d},propsAreEqual);di.displayName=`ElementTags`;function WithElementTags({id:e,tags:t,width:n,hovered:r,onTagClick:i,onTagMouseEnter:a,onTagMouseLeave:o}){let{hovered:s,ref:c}=Le(),{hovered:l,ref:u}=Le(),[d,f]=ze(!1,r?120:300);Tn(()=>{f(e=>e?r||s||l:r&&(s||l))},[s,l,r]);let p=Lt(1.2),m=yt(Cn(e=>Math.max(Math.round(n*e.transform[2])-10,200),[Math.round(n)]));return U(kn,{children:[H(`div`,{ref:c,className:M(`likec4-element-tags`,Ue({pointerEvents:`all`,gap:`1`,alignItems:`flex-end`,justifyItems:`stretch`,position:`absolute`,width:`100%`,bottom:`0`,left:`0`,padding:`1`,_shapeCylinder:{bottom:`[5px]`},_shapeStorage:{bottom:`[5px]`},_shapeQueue:{bottom:`0`,paddingLeft:`[14px]`}})),onClick:I,children:t.map(t=>H(He,{"data-likec4-tag":t,className:N({layerStyle:`likec4.tag`,flex:`1`,display:`flex`,alignItems:`center`,justifyContent:`center`,maxWidth:`50px`,height:`5px`,_whenHovered:{height:`12px`,borderRadius:`sm`,transitionDelay:`.08s`},transition:`fast`})},e+`#`+t))}),H(ft,{isVisible:d,align:`start`,position:ht.Bottom,children:H(Ze,{ref:u,css:{gap:`0.5`,alignItems:`baseline`,flexWrap:`wrap`,pb:`sm`,translate:`auto`,x:`[-8px]`},style:{maxWidth:m},children:t.map(e=>H(ui,{tag:e,cursor:`pointer`,className:N({userSelect:`none`,...p&&{fontSize:`lg`,borderRadius:`sm`,px:`1.5`}}),onClick:i?t=>{t.stopPropagation(),i(`#${e}`)}:void 0,onMouseEnter:a?()=>a(`#${e}`):void 0,onMouseLeave:o?()=>o(`#${e}`):void 0},e))})})]})}function nodePropsEqual(e,t){return e.id===t.id&&P(e.type,t.type)&&P(e.parentId??``,t.parentId??``)&&P(e.selected??!1,t.selected??!1)&&P(e.dragging??!1,t.dragging??!1)&&P(e.width??0,t.width??0)&&P(e.height??0,t.height??0)&&P(e.zIndex??0,t.zIndex??0)&&P(e.data,t.data)}const fi=Symbol.for(`isMemoized`);function memoNode(e,t=`Node`){if(e.hasOwnProperty(fi))return e;let n=Sn(e,nodePropsEqual);return n.displayName=t,Object.defineProperty(n,fi,{enumerable:!1,writable:!1,value:!0}),n}function EdgeDrifts(e){let t=V(4),{edgeProps:n,svgPath:r}=e,{data:i}=n,a=i.drifts;if(!a||a.length===0)return null;let o;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=M(`react-flow__edge-path`,N({pointerEvents:`none`,stroke:`likec4.compare.manual.outline`,fill:`none`,strokeWidth:{base:`8px`,_whenHovered:`12px`},strokeOpacity:.5})),t[0]=o):o=t[0];let s;return t[1]!==r||t[2]!==o?(s=H(`path`,{className:o,d:r,strokeLinecap:`round`}),t[1]=r,t[2]=o,t[3]=s):s=t[3],s}const pi=N({overflow:`visible`,position:`absolute`,pointerEvents:`none`,top:`0`,left:`0`,mixBlendMode:{_dark:`screen`,_light:`multiply`},zIndex:`[100]`}),mi=N({fill:`[var(--xy-edge-stroke)]`,stroke:`transparent`,fillOpacity:.5,strokeWidth:10,r:4,cursor:`grab`,pointerEvents:`all`,visibility:`hidden`,transitionDuration:`120ms`,transitionProperty:`visibility, fill, fill-opacity, r`,transitionTimingFunction:`inOut`,transitionDelay:`20ms`,":where([data-likec4-selected='true'], [data-likec4-hovered='true']) &":{visibility:`visible`,fillOpacity:1,transitionTimingFunction:`out`,transitionDelay:`0ms`},":where([data-likec4-selected='true']) &":{r:6},":is([data-likec4-hovered='true']) &":{r:8},_hover:{fill:`mantine.colors.primary.filledHover`,r:10,transitionDuration:`100ms`},_groupActive:{cursor:`grabbing`}});function useControlPoints(e){let t=V(21),{sourceX:n,sourceY:r,targetX:i,targetY:a,data:o}=e,t1;t[0]!==o.controlPoints||t[1]!==o.points?(t1=()=>o.controlPoints??Pt(o.points),t[0]=o.controlPoints,t[1]=o.points,t[2]=t1):t1=t[2];let[s,c]=On(t1),t2;t[3]!==o.controlPoints||t[4]!==o.points?(t2=()=>{let e=o.controlPoints??Pt(o.points);c(t=>P(t,e)?t:e)},t[3]=o.controlPoints,t[4]=o.points,t[5]=t2):t2=t[5];let l;t[6]===o.controlPoints?l=t[7]:(l=o.controlPoints??[],t[6]=o.controlPoints,t[7]=l);let u;t[8]!==o.points||t[9]!==l?(u=[o.points,l],t[8]=o.points,t[9]=l,t[10]=u):u=t[10],on(t2,u);let t5;t[11]!==s||t[12]!==o.dir||t[13]!==n||t[14]!==r||t[15]!==i||t[16]!==a?(t5=e=>{let{x:t,y:l}=e,u=K(n,r),d=K(i,a),f=[o.dir===`back`?d:u,...s.map(K)||[],o.dir===`back`?u:d],p=K(t,l).round(),m=0,h=1/0;for(let e=0;e<f.length-1;e++){let t=f[e],n=f[e+1],r=n.subtract(t),i=p.subtract(t),a=p.subtract(n);if(r.dot(i)*r.dot(a)<0){let t=Math.abs(r.cross(i))/r.length();t<h&&(h=t,m=e)}}let g=s.slice();return g.splice(m,0,{x:p.x,y:p.y}),c(g),g},t[11]=s,t[12]=o.dir,t[13]=n,t[14]=r,t[15]=i,t[16]=a,t[17]=t5):t5=t[17];let d=L(t5),f;return t[18]!==s||t[19]!==d?(f={controlPoints:s,setControlPoints:c,insertControlPoint:d},t[18]=s,t[19]=d,t[20]=f):f=t[20],f}const hi=vn().curve(yn.alpha(.7)).x(e=>Math.trunc(e.x)).y(e=>Math.trunc(e.y));function useRelationshipEdgePath(e){let t=V(16),{props:n,controlPoints:r,isControlPointDragging:i}=e,{sourceX:a,sourceY:o,source:s,target:c,targetX:l,targetY:u,data:d}=n,t2;t[0]!==s||t[1]!==c?(t2=e=>{let{nodeLookup:t}=e,n=St(J(t.get(s),`source node ${s} not found`)),r=St(J(t.get(c),`target node ${c} not found`));return[Math.ceil(n.width),Math.ceil(n.height),Math.ceil(r.width),Math.ceil(r.height)]},t[0]=s,t[1]=c,t[2]=t2):t2=t[2];let[f,p,g,_]=Ot(t2,Tt);if(!(m(d.controlPoints)||i)){let e;return t[3]===d.points?e=t[4]:(e=Dt(d.points),t[3]=d.points,t[4]=e),e}let v;if(t[5]!==r||t[6]!==d.dir||t[7]!==p||t[8]!==f||t[9]!==a||t[10]!==o||t[11]!==_||t[12]!==g||t[13]!==l||t[14]!==u){let e=K(a,o).trunc(),n=K(l,u).trunc(),i={...e.subtract(K(f,p).divide(2)).trunc().toObject(),width:f,height:p},s={...n.subtract(K(g,_).divide(2)).trunc().toObject(),width:g,height:_};v=J(hi(d.dir===`back`?[n,Mt(s,h(r)??e,6),...r,Mt(i,ce(r)??n,6),e]:[e,Mt(i,h(r)??n,6),...r,Mt(s,ce(r)??e,6),n])),t[5]=r,t[6]=d.dir,t[7]=p,t[8]=f,t[9]=a,t[10]=o,t[11]=_,t[12]=g,t[13]=l,t[14]=u,t[15]=v}else v=t[15];return v}const getEdgeCenter=e=>{let t=e.getPointAtLength(e.getTotalLength()*.5);return{x:Math.round(t.x),y:Math.round(t.y)}},gi=Bt(e=>{let[t,n]=On(!1),r=Dn(t);r.current=t;let i=Rt(),a=useDiagram(),{enableNavigateTo:o,enableReadOnly:s,enableCompareWithLatest:c}=useEnabledFeatures(),l=!s,{id:u,selected:d=!1,data:{labelBBox:f,labelXY:p,...m}}=e,h=o&&!t?m.navigateTo:void 0,{controlPoints:g,setControlPoints:_,insertControlPoint:v}=useControlPoints(e),y=useRelationshipEdgePath({props:e,controlPoints:g,isControlPointDragging:t}),b=f?.x??0,x=f?.y??0,[S,C]=useSetState({x:p?.x??b,y:p?.y??x},Ft);on(()=>{r.current||C({x:b,y:x})},[b,x]);let w=Dn(null);ct(()=>{let e=w.current;!e||!t||C(getEdgeCenter(e))},[y,t]);let T=L(e=>{let t=f&&w.current?getEdgeCenter(w.current):null;t?a.updateEdgeData(u,{controlPoints:e,labelBBox:{...f,...t}}):a.updateEdgeData(u,{controlPoints:e}),a.stopEditing(!0),n(!1)}),E=L(()=>{a.startEditing(`edge`),n(!0)}),D=L(()=>{a.stopEditing(),n(!1)}),O=L(e=>{_(e),requestAnimationFrame(()=>{T(e)})}),k=L(e=>{a.startEditing(`edge`),n(!0),_(e),requestAnimationFrame(()=>{T(e)})}),ee=L(e=>{if(e.pointerType!==`mouse`||e.button!==2&&!d)return;e.stopPropagation(),e.preventDefault(),a.startEditing(`edge`);let t=v(i.screenToFlowPosition({x:e.clientX,y:e.clientY},{snapToGrid:!1}));a.updateEdgeData(u,{controlPoints:t}),a.stopEditing(!0)});return t&&!e.data.hovered&&(e={...e,data:{...e.data,hovered:!0}}),U(kn,{children:[U(Xt,{...e,className:N({"& .react-flow__edge-interaction":{cursor:l&&d?`copy`:void 0}}),children:[H(Ht,{edgeProps:e,svgPath:y,ref:w,isDragging:t,...l&&{onEdgePointerDown:ee}}),c&&H(EdgeDrifts,{edgeProps:e,svgPath:y}),f&&H(Ut,{edgeProps:e,labelPosition:t?S:{x:b,y:x},children:H(Qt,{pointerEvents:l?`none`:`all`,edgeProps:e,children:h&&H(EdgeActionButton,{onClick:e=>{e.stopPropagation(),a.navigateTo(h)}})})})]}),l&&g.length>0&&H(ControlPoints,{isControlPointDragging:t,edgeProps:e,controlPoints:g,onMove:_,onStartMove:E,onCancelMove:D,onFinishMove:O,onDelete:k})]})});gi.displayName=`RelationshipEdge`;function ControlPoints({isControlPointDragging:e,edgeProps:t,controlPoints:n,onMove:r,onStartMove:i,onCancelMove:a,onFinishMove:o,onDelete:s}){let c=jt(),l=Rt(),u=t.data.id,d=Dn(n);d.current=n;let onLmbControlPointerDown=(e,t,n)=>{let s=!1,c={x:t.clientX,y:t.clientY},u={...c},f=null,p=[...d.current],onPointerMove=t=>{u.x=t.clientX,u.y=t.clientY,Ft(c,u)||(s||(s=!0,i()),f??=requestAnimationFrame(()=>{f=null;let{x:t,y:n}=l.screenToFlowPosition(u,{snapToGrid:!1});p=[...p],p[e]={x:Math.trunc(t),y:Math.trunc(n)},r(p)})),t.stopPropagation()},onPointerUp=e=>{e.stopPropagation(),n.removeEventListener(`pointermove`,onPointerMove,{capture:!0}),n.removeEventListener(`click`,stopAndPrevent,{capture:!0}),f!==null&&cancelAnimationFrame(f),s?o(p):a()};n.addEventListener(`pointermove`,onPointerMove,{capture:!0}),n.addEventListener(`pointerup`,onPointerUp,{once:!0,capture:!0}),n.addEventListener(`click`,stopAndPrevent,{capture:!0,once:!0})},onRmbControlPointerDown=(e,t)=>{let n=[...d.current];n.length<=1||e>=n.length||(stopAndPrevent(t),n.splice(e,1),setTimeout(()=>{s(n)},10))},f=L(e=>{let{domNode:t,addSelectedEdges:n,edges:r,unselectNodesAndEdges:i}=c.getState();if(!t||e.pointerType!==`mouse`)return;let a=parseFloat(e.currentTarget.getAttribute(`data-control-point-index`)||``);if(isNaN(a))throw Error(`data-control-point-index is not a number`);switch(e.button){case 0:e.stopPropagation(),i({edges:r.filter(e=>e.selected&&e.id!==u)}),n([u]),onLmbControlPointerDown(a,e,t);break;case 2:onRmbControlPointerDown(a,e);break}}),p=L(e=>{if(e.pointerType!==`mouse`)return;let t=parseFloat(e.currentTarget.getAttribute(`data-control-point-index`)||``);if(isNaN(t))throw console.error(e.currentTarget),Error(`data-control-point-index is not a number`);onRmbControlPointerDown(t,e)});return H(bt,{children:H(Xt,{component:`svg`,className:pi,...t,children:H(`g`,{"data-active":e?!0:void 0,className:`group`,onContextMenu:stopAndPrevent,children:n.map((e,t)=>H(`circle`,{"data-control-point-index":t,onPointerDownCapture:f,onDoubleClick:p,className:M(`nodrag nopan`,mi),cx:e.x,cy:e.y},`controlPoints`+u+`#`+t))})})})}const stopAndPrevent=e=>{e.stopPropagation(),e.preventDefault()};function SequenceStepEdge(e){let t=V(35),{enableNavigateTo:n,enableCompareWithLatest:r}=useEnabledFeatures(),i=useDiagram(),{navigateTo:a}=e.data,o=e.source===e.target,s=e.sourceX>e.targetX,c;t[0]!==o||t[1]!==e.sourcePosition||t[2]!==e.sourceX||t[3]!==e.sourceY||t[4]!==e.targetPosition||t[5]!==e.targetX||t[6]!==e.targetY?(c=pt({sourceX:e.sourceX,sourceY:e.sourceY,sourcePosition:e.sourcePosition,targetX:e.targetX,targetY:e.targetY,targetPosition:e.targetPosition,...o&&{offset:30,borderRadius:16}}),t[0]=o,t[1]=e.sourcePosition,t[2]=e.sourceX,t[3]=e.sourceY,t[4]=e.targetPosition,t[5]=e.targetX,t[6]=e.targetY,t[7]=c):c=t[7];let[l]=c,u;bb0:switch(!0){case o:u=e.sourceX+24+16;break bb0;case s:u=e.sourceX-16;break bb0;default:u=e.sourceX+16}let d;t[8]!==l||t[9]!==e?(d=H(Ht,{edgeProps:e,svgPath:l}),t[8]=l,t[9]=e,t[10]=d):d=t[10];let f;t[11]!==r||t[12]!==l||t[13]!==e?(f=r&&H(EdgeDrifts,{edgeProps:e,svgPath:l}),t[11]=r,t[12]=l,t[13]=e,t[14]=f):f=t[14];let p=e.sourceY+(o?0:16),m=s?`translate(-100%, 0)`:void 0,h;t[15]!==u||t[16]!==p||t[17]!==m?(h={x:u,y:p,translate:m},t[15]=u,t[16]=p,t[17]=m,t[18]=h):h=t[18];let g;t[19]!==i||t[20]!==n||t[21]!==a?(g=n&&a&&H(EdgeActionButton,{onClick:e=>{e.stopPropagation(),i.navigateTo(a)}}),t[19]=i,t[20]=n,t[21]=a,t[22]=g):g=t[22];let _;t[23]!==e||t[24]!==g?(_=H(Qt,{edgeProps:e,children:g}),t[23]=e,t[24]=g,t[25]=_):_=t[25];let v;t[26]!==e||t[27]!==h||t[28]!==_?(v=H(Ut,{edgeProps:e,labelPosition:h,children:_}),t[26]=e,t[27]=h,t[28]=_,t[29]=v):v=t[29];let y;return t[30]!==e||t[31]!==d||t[32]!==f||t[33]!==v?(y=U(Xt,{...e,children:[d,f,v]}),t[30]=e,t[31]=d,t[32]=f,t[33]=v,t[34]=y):y=t[34],y}const CompoundActions=e=>{let t=V(7),{enableNavigateTo:n}=useEnabledFeatures(),r=useDiagram(),{navigateTo:i}=e.data;if(i&&n){let t0;t[0]!==r||t[1]!==i||t[2]!==e.id?(t0=t=>{t.stopPropagation(),r.navigateTo(i,e.id)},t[0]=r,t[1]=i,t[2]=e.id,t[3]=t0):t0=t[3];let n;return t[4]!==e||t[5]!==t0?(n=H(CompoundActionButton,{onClick:t0,...e}),t[4]=e,t[5]=t0,t[6]=n):n=t[6],n}return null};function ElementActions(e){let t=V(25),n,r;t[0]===e?(n=t[1],r=t[2]):({extraButtons:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let{enableNavigateTo:i,enableRelationshipBrowser:a}=useEnabledFeatures(),o=useDiagram(),{id:s,navigateTo:c,modelFqn:l}=r.data,u;if(t[3]!==o||t[4]!==i||t[5]!==a||t[6]!==s||t[7]!==l||t[8]!==c){if(u=[],c&&i){let e;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(e=H(nt,{}),t[10]=e):e=t[10];let n;t[11]!==o||t[12]!==s||t[13]!==c?(n={key:`navigate`,icon:e,onClick:e=>{e.stopPropagation(),o.navigateTo(c,s)}},t[11]=o,t[12]=s,t[13]=c,t[14]=n):n=t[14],u.push(n)}if(a){let e;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(e=H(rt,{}),t[15]=e):e=t[15];let n;t[16]!==o||t[17]!==l?(n={key:`relationships`,icon:e,onClick:e=>{e.stopPropagation(),o.openRelationshipsBrowser(l)}},t[16]=o,t[17]=l,t[18]=n):n=t[18],u.push(n)}t[3]=o,t[4]=i,t[5]=a,t[6]=s,t[7]=l,t[8]=c,t[9]=u}else u=t[9];let d=u;if(n&&A(n,1)){let e;t[19]!==d||t[20]!==n?(e=[...d,...n],t[19]=d,t[20]=n,t[21]=e):e=t[21],d=e}let f;return t[22]!==d||t[23]!==r?(f=H(en,{...r,buttons:d}),t[22]=d,t[23]=r,t[24]=f):f=t[24],f}const DeploymentElementActions=({extraButtons:e,...t})=>{let{enableNavigateTo:n,enableRelationshipBrowser:r}=useEnabledFeatures(),i=useDiagram(),{id:a,navigateTo:o,modelFqn:s}=t.data,c=En(()=>{let e=[];return o&&n&&e.push({key:`navigate`,icon:H(nt,{}),onClick:e=>{e.stopPropagation(),i.navigateTo(o,a)}}),r&&s&&e.push({key:`relationships`,icon:H(rt,{}),onClick:e=>{e.stopPropagation(),i.openRelationshipsBrowser(s)}}),e},[n,r,s,o,a]);return e&&A(e,1)&&(c=[...c,...e]),H(en,{...t,buttons:c})};function NodeDrifts(e){let t=V(1),{nodeProps:n}=e,{data:r}=n,i=r.drifts;if(!i||i.length===0)return null;let a;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=H(He,{className:`likec4-node-drifts`,css:{display:`contents`,"& + .likec4-element-shape":{outlineColor:`likec4.compare.manual.outline`,outlineWidth:`4px`,outlineStyle:`dashed`,outlineOffset:`1.5`}}}),t[0]=a):a=t[0],a}function NodeNotes(e){let t=V(2),{data:n}=e;if(!Ln(n,`notes`)||p(n.notes.md||n.notes.txt))return null;let r;return t[0]===n?r=t[1]:(r=H(NodeNotesInternal2,{data:n}),t[0]=n,t[1]=r),r}function stopPropagation(e){e.nativeEvent.stopImmediatePropagation(),e.stopPropagation()}function NodeNotesInternal2(e){let t=V(2),{data:n}=e,r;return t[0]===n?r=t[1]:(r=H(NodeNotesInternal,{data:n}),t[0]=n,t[1]=r),r}function NodeNotesInternal(e){let t=V(42),{data:n}=e,r=n.notes,i=n.width??0,a;t[0]===i?a=t[1]:(a=b(i,{min:250,max:500}),t[0]=i,t[1]=a);let o=a;b(n.height??0,{min:200,max:600});let s;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(s={},t[2]=s):s=t[2];let[c,l]=pe(!1,s),u=n.id+(r.md??r.txt),d;t[3]===u?d=t[4]:(d=Zn(u),t[3]=u,t[4]=d);let f=d,t6;t[5]===l?t6=t[6]:(t6=e=>{e&&(e.preventDefault(),`nativeEvent`in e&&e.nativeEvent.stopImmediatePropagation(),e.stopPropagation()),l.toggle()},t[5]=l,t[6]=t6);let p=L(t6),m=n.hovered??!1,h=c,g=`node-notes-${f}`,_;t[7]===c?_=t[8]:(_=M(`nopan nodrag`,Ke({opened:c})),t[7]=c,t[8]=_);let v=c?`expanded`:m?`hovered`:`initial`,y;t[9]!==c||t[10]!==p?(y=!c&&{onPointerDownCapture:p},t[9]=c,t[10]=p,t[11]=y):y=t[11];let x=c?`expanded`:`collapsed`,S;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(S=H(un.div,{variants:yi.paper1,className:`__paper __paper-back`},`paper-back`),t[12]=S):S=t[12];let C;t[13]!==c||t[14]!==f?(C=!c&&H(un.div,{layout:!0,layoutId:f,variants:yi.paper2,"data-state":c?`expanded`:`collapsed`,className:`__paper __paper-front`},f),t[13]=c,t[14]=f,t[15]=C):C=t[15];let w;t[16]!==p||t[17]!==y||t[18]!==x||t[19]!==C||t[20]!==g||t[21]!==_||t[22]!==v?(w=U(un.div,{className:_,variants:yi.root,initial:`initial`,animate:v,whileHover:`whileHover`,exit:`exit`,...y,onMouseDownCapture:p,onClickCapture:p,onClick:stopPropagation,"data-state":x,children:[S,C]},g),t[16]=p,t[17]=y,t[18]=x,t[19]=C,t[20]=g,t[21]=_,t[22]=v,t[23]=w):w=t[23];let T;t[24]!==n.x||t[25]!==n.y||t[26]!==c||t[27]!==f||t[28]!==h||t[29]!==r||t[30]!==o?(T=c&&H(mt,{children:H(un.div,{layout:!0,layoutDependency:h,layoutId:f,className:N({position:`absolute`,zIndex:300,top:`0`,left:`0`,display:`flex`,pointerEvents:`all`,rounded:`sm`,backgroundColor:`likec4.overlay.body`,padding:`0`,alignItems:`stretch`,justifyContent:`stretch`,overflow:`hidden`,width:`fit-content`,height:`fit-content`,maxHeight:`70cqh`,maxWidth:`50cqw`}),"data-likec4-notes":f,style:{top:n.y+20,left:n.x+10,maxWidth:`min(calc(${o}px * 2), 50cqw)`},onMouseDownCapture:stopPropagation,onClickCapture:stopPropagation,onClick:stopPropagation,children:H(ge,{component:un.div,className:M(`nowheel`,N({flex:`1`,padding:`xs`,paddingRight:`xxs`})),children:H(Yt,{className:N({paddingRight:`xxs`}),value:Pn.from(r)})})},f)},`portal`),t[24]=n.x,t[25]=n.y,t[26]=c,t[27]=f,t[28]=h,t[29]=r,t[30]=o,t[31]=T):T=t[31];let E;t[32]!==w||t[33]!==T?(E=U(dn,{children:[w,T]}),t[32]=w,t[33]=T,t[34]=E):E=t[34];let D;t[35]!==n||t[36]!==c||t[37]!==p?(D=c&&H(Catch,{data:n,onCatchClick:p}),t[35]=n,t[36]=c,t[37]=p,t[38]=D):D=t[38];let O;return t[39]!==E||t[40]!==D?(O=U(kn,{children:[E,D]}),t[39]=E,t[40]=D,t[41]=O):O=t[41],O}const _i={rotateZ:`-5deg`,y:0,x:1,scale:1,originX:`55%`,originY:`80%`},vi={rotateZ:`3deg`,y:-2,scale:1,backgroundColor:`color-mix(in oklab, var(--likec4-palette-fill) 8%, #FFF)`,originX:`45%`,originY:`80%`},yi={root:{initial:{"--paper-bg":`color-mix(in oklab, var(--likec4-palette-fill) 50%, #EEE)`},hovered:{},whileHover:{"--paper-bg":`color-mix(in oklab, var(--likec4-palette-fill) 3%, #FFF)`},exit:{"--paper-bg":`color-mix(in oklab, var(--likec4-palette-fill) 50%, #EEE)`}},paper1:{initial:{..._i,rotateZ:`-3.5deg`,y:1,scale:.95},hovered:{..._i},whileHover:{..._i,"--paper-bg":`color-mix(in oklab, var(--likec4-palette-fill) 3%, #FFF)`,scale:1.04},expanded:{..._i,y:[0,1,20],scale:.95},exit:{..._i,rotateZ:`-3.5deg`,y:1,scale:.95}},paper2:{initial:{...vi,rotateZ:`2deg`,y:2,scale:.95,backgroundColor:`color-mix(in oklab, var(--likec4-palette-fill) 50%, #EEE)`},hovered:{...vi},whileHover:{...vi,scale:1.08},expanded:{...vi,y:[0,1,20],scale:.95},exit:{...vi,rotateZ:`2deg`,y:2,scale:.95,backgroundColor:`color-mix(in oklab, var(--likec4-palette-fill) 50%, #EEE)`}}};function Catch(e){let t=V(10),{data:n,onCatchClick:r}=e,t1;t[0]===r?t1=t[1]:(t1=()=>{r()},t[0]=r,t[1]=t1),useOnDiagramEvent(`paneClick`,t1);let i;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(i={display:`block`,position:`absolute`,zIndex:200,pointerEvents:`all`,left:`0`,top:`0`,cursor:`zoom-out`},t[2]=i):i=t[2];let a=`translate(${n.x-40}px, ${n.y-40}px)`,o=(n.width??250)+80,s=(n.height??200)+80,c;t[3]!==a||t[4]!==o||t[5]!==s?(c={transform:a,width:o,height:s},t[3]=a,t[4]=o,t[5]=s,t[6]=c):c=t[6];let l;return t[7]!==r||t[8]!==c?(l=H(mt,{children:H(He,{css:i,style:c,onMouseDownCapture:r,onClickCapture:r,onClick:stopPropagation})},`catch-all`),t[7]=r,t[8]=c,t[9]=l):l=t[9],l}const bi=we.withProps({color:`dark`,fz:`xs`,openDelay:400,closeDelay:150,label:``,children:null,offset:4,withinPortal:!1});function BrowseRelationshipsButton(e){let t=V(6),{fqn:n}=e,r=useDiagram(),t1;t[0]!==r||t[1]!==n?(t1=e=>{e.stopPropagation(),r.openRelationshipsBrowser(n)},t[0]=r,t[1]=n,t[2]=t1):t1=t[2];let i;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(i=H(rt,{stroke:2,style:{width:`65%`,height:`65%`}}),t[3]=i):i=t[3];let a;return t[4]===t1?a=t[5]:(a=H(bi,{label:`Browse relationships`,children:H(Se,{size:`md`,variant:`subtle`,color:`gray`,onClick:t1,children:i})}),t[4]=t1,t[5]=a),a}function GoToSourceButton(e){let t=V(7),{onOpenSource:n}=useDiagramEventHandlers();if(!n)return null;let t0;t[0]!==n||t[1]!==e.deploymentId||t[2]!==e.elementId?(t0=t=>{t.stopPropagation(),e.elementId?n?.({element:e.elementId}):e.deploymentId&&n?.({deployment:e.deploymentId})},t[0]=n,t[1]=e.deploymentId,t[2]=e.elementId,t[3]=t0):t0=t[3];let r;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(r=H($e,{stroke:1.8,style:{width:`65%`}}),t[4]=r):r=t[4];let i;return t[5]===t0?i=t[6]:(i=H(bi,{label:`Open source`,children:H(Se,{size:`md`,variant:`subtle`,color:`gray`,onClick:t0,children:r})}),t[5]=t0,t[6]=i),i}function BorderStyleOption(e){let t=V(10),{elementBorderStyle:n,onChange:r}=e,i=n===void 0?`none`:n,[a,o]=On(i),t2,s;t[0]===i?(t2=t[1],s=t[2]):(t2=()=>{o(i)},s=[i],t[0]=i,t[1]=t2,t[2]=s),Tn(t2,s);let t4;t[3]===r?t4=t[4]:(t4=e=>{let t=e;o(t),r({border:t})},t[3]=r,t[4]=t4);let c,l;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(c={label:{paddingTop:2,paddingBottom:2}},l=[{label:`Solid`,value:`solid`},{label:`Dashed`,value:`dashed`},{label:`Dotted`,value:`dotted`},{label:`None`,value:`none`}],t[5]=c,t[6]=l):(c=t[5],l=t[6]);let u;return t[7]!==t4||t[8]!==a?(u=H(ke,{size:`xs`,fz:`xxs`,fullWidth:!0,withItemsBorders:!1,value:a,onChange:t4,styles:c,data:l}),t[7]=t4,t[8]=a,t[9]=u):u=t[9],u}const xi=[`primary`,`secondary`,`muted`];function ColorButton(e){let t=V(29),n,r,i,a,o,s;t[0]===e?(n=t[1],r=t[2],i=t[3],a=t[4],o=t[5],s=t[6]):({elementColor:n,elementOpacity:r,onColorPreview:a,isOpacityEditable:s,onChange:i,...o}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a,t[5]=o,t[6]=s);let c=s===void 0?!1:s,{theme:l}=rn(),u;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(u=[`pointerdown`,`mousedown`,`click`],t[7]=u):u=t[7];let d=l.colors[n],f;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(f={color:`#fff`,cursor:`pointer`},t[8]=f):f=t[8];let p;t[9]===d.elements.fill?p=t[10]:(p=H(Ae,{children:H(be,{variant:`subtle`,color:`gray`,size:`xs`,px:6,children:H(ye,{color:d.elements.fill,size:16,withShadow:!0,style:f})})}),t[9]=d.elements.fill,t[10]=p);let t6;t[11]===i?t6=t[12]:(t6=e=>i({color:e}),t[11]=i,t[12]=t6);let m;t[13]!==n||t[14]!==a||t[15]!==t6||t[16]!==l?(m=H(ColorSwatches,{theme:l,elementColor:n,onColorPreview:a,onChange:t6}),t[13]=n,t[14]=a,t[15]=t6,t[16]=l,t[17]=m):m=t[17];let h;t[18]!==r||t[19]!==c||t[20]!==i?(h=c&&U(kn,{children:[H(Pe,{h:`xs`}),H(he,{label:`opacity`,labelPosition:`left`}),H(Pe,{h:`xs`}),H(OpacityOption,{elementOpacity:r,onOpacityChange:e=>{i({opacity:e})}})]}),t[18]=r,t[19]=c,t[20]=i,t[21]=h):h=t[21];let g;t[22]!==m||t[23]!==h?(g=U(Te,{p:`xs`,children:[m,h]}),t[22]=m,t[23]=h,t[24]=g):g=t[24];let _;return t[25]!==o||t[26]!==p||t[27]!==g?(_=U(je,{clickOutsideEvents:u,position:`top-start`,offset:2,withinPortal:!1,...o,children:[p,g]}),t[25]=o,t[26]=p,t[27]=g,t[28]=_):_=t[28],_}function ColorSwatches(e){let t=V(49),{theme:n,elementColor:r,onColorPreview:i,onChange:a}=e,t1;t[0]!==r||t[1]!==a||t[2]!==i?(t1=e=>t=>{t.stopPropagation(),i(null),r!==e&&a(e)},t[0]=r,t[1]=a,t[2]=i,t[3]=t1):t1=t[3];let o=t1,s,c,l,u,d,f,p,t14,m,h,g,_,v,y,b,x;if(t[4]!==o||t[5]!==r||t[6]!==i||t[7]!==n.colors){let e=C(n.colors).filter(_temp$2);l=Oe,p=2,t[24]===i?t14=t[25]:(t14=()=>i(null),t[24]=i,t[25]=t14),c=Ce,u=1e3,d=300;let a=xi.map(e=>H(we,{label:e,fz:`xs`,color:`dark`,offset:2,withinPortal:!1,transitionProps:{duration:140,transition:`slide-up`},children:H(ye,{color:n.colors[e].elements.fill,size:18,withShadow:!0,onMouseEnter:()=>i(e),onClick:o(e),style:{color:`#fff`,cursor:`pointer`},children:r===e&&H(fe,{style:{width:Me(10),height:Me(10)}})})},e));t[26]===a?f=t[27]:(f=H(We,{maxW:`120px`,gap:`1.5`,justify:`flex-start`,align:`flex-start`,direction:`row`,wrap:`wrap`,children:a}),t[26]=a,t[27]=f),s=We,m=`sm`,h=`110px`,g=`1.5`,_=`flex-start`,v=`flex-start`,y=`row`,b=`wrap`,x=e.map(e=>H(we,{label:e,fz:`xs`,color:`dark`,offset:2,transitionProps:{duration:140,transition:`slide-up`},children:H(ye,{color:n.colors[e].elements.fill,size:18,onMouseEnter:()=>i(e),onClick:o(e),style:{color:`#fff`,cursor:`pointer`},children:r===e&&H(fe,{style:{width:Me(10),height:Me(10)}})})},e)),t[4]=o,t[5]=r,t[6]=i,t[7]=n.colors,t[8]=s,t[9]=c,t[10]=l,t[11]=u,t[12]=d,t[13]=f,t[14]=p,t[15]=t14,t[16]=m,t[17]=h,t[18]=g,t[19]=_,t[20]=v,t[21]=y,t[22]=b,t[23]=x}else s=t[8],c=t[9],l=t[10],u=t[11],d=t[12],f=t[13],p=t[14],t14=t[15],m=t[16],h=t[17],g=t[18],_=t[19],v=t[20],y=t[21],b=t[22],x=t[23];let S;t[28]!==s||t[29]!==m||t[30]!==h||t[31]!==g||t[32]!==_||t[33]!==v||t[34]!==y||t[35]!==b||t[36]!==x?(S=H(s,{mt:m,maxW:h,gap:g,justify:_,align:v,direction:y,wrap:b,children:x}),t[28]=s,t[29]=m,t[30]=h,t[31]=g,t[32]=_,t[33]=v,t[34]=y,t[35]=b,t[36]=x,t[37]=S):S=t[37];let w;t[38]!==c||t[39]!==u||t[40]!==d||t[41]!==f||t[42]!==S?(w=U(c,{openDelay:u,closeDelay:d,children:[f,S]}),t[38]=c,t[39]=u,t[40]=d,t[41]=f,t[42]=S,t[43]=w):w=t[43];let T;return t[44]!==l||t[45]!==p||t[46]!==t14||t[47]!==w?(T=H(l,{gap:p,onMouseLeave:t14,children:w}),t[44]=l,t[45]=p,t[46]=t14,t[47]=w,t[48]=T):T=t[48],T}function _temp$2(e){return!xi.includes(e)}e(_temp$2,`_temp`);function OpacityOption(e){let t=V(6),{elementOpacity:n,onOpacityChange:r}=e,i=n===void 0?100:n,[a,o]=On(i),t2,s;t[0]===i?(t2=t[1],s=t[2]):(t2=()=>{o(i)},s=[i],t[0]=i,t[1]=t2,t[2]=s),ot(t2,s);let c;return t[3]!==r||t[4]!==a?(c=H(xe,{size:`sm`,color:`dark`,value:a,onChange:o,onChangeEnd:r}),t[3]=r,t[4]=a,t[5]=c):c=t[5],c}const Si=N({color:`text.dimmed`,fontSize:`xxs`,fontWeight:`bold`,maxWidth:`220px`,cursor:`default`,userSelect:`all`,textOverflow:`ellipsis`,overflow:`hidden`,whiteSpace:`nowrap`}),selectSelectedNodesCount=e=>e.xynodes.filter(e=>e.selected).length,useSelectedNodesCount=()=>useDiagramContext(selectSelectedNodesCount);function Toolbar(e){let t=V(17),n,r,i,a;t[0]===e?(n=t[1],r=t[2],i=t[3],a=t[4]):({title:a,children:n,nodeProps:r,...i}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a);let o=useSelectedNodesCount(),{selected:s,dragging:c,data:l}=r,u=s===void 0?!1:s,d=c===void 0?!1:c,{hovered:f}=l,p=(f===void 0?!1:f)&&o===0||u&&o===1,m=150;p?m=u?100:1e3:o>0&&(m=50);let[h]=Re(p,m);if(!h)return null;let g=!d,_;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(_=M(`nodrag`,`nopan`),t[5]=_):_=t[5];let v;t[6]===a?v=t[7]:(v=H(He,{px:`1`,children:H(Ne,{className:Si,children:a})}),t[6]=a,t[7]=v);let y;t[8]===n?y=t[9]:(y=H(Ze,{gap:`1`,children:n}),t[8]=n,t[9]=y);let b;t[10]!==v||t[11]!==y?(b=H(Fe,{className:_,px:5,pb:8,pt:4,radius:`sm`,shadow:`xl`,onDoubleClickCapture:I,onPointerDown:I,onClick:I,onDoubleClick:I,withBorder:!0,children:U(Ve,{gap:`2`,children:[v,y]})}),t[10]=v,t[11]=y,t[12]=b):b=t[12];let x;return t[13]!==i||t[14]!==g||t[15]!==b?(x=H(ft,{isVisible:g,offset:4,...i,children:b}),t[13]=i,t[14]=g,t[15]=b,t[16]=x):x=t[16],x}function useHandlers(e,t){let n=V(13),r=useDiagram(),[i,a]=On(null),t0;n[0]!==r||n[1]!==i||n[2]!==t.data.color||n[3]!==t.data.id?(t0=e=>{if(e===null){if(!i)return;a(null),r.updateNodeData(t.data.id,{color:i});return}a(e=>e??t.data.color),r.updateNodeData(t.data.id,{color:e})},n[0]=r,n[1]=i,n[2]=t.data.color,n[3]=t.data.id,n[4]=t0):t0=n[4];let o=L(t0),t1;n[5]!==r||n[6]!==t.data.id||n[7]!==e?(t1=n=>{let{shape:i,color:a,...o}=n;r.updateNodeData(t.data.id,{...i&&{shape:i},...a&&{color:a},style:o}),r.triggerChange({op:`change-element-style`,style:n,targets:[e]})},n[5]=r,n[6]=t.data.id,n[7]=e,n[8]=t1):t1=n[8];let s=L(t1),c=i??t.data.color,l;return n[9]!==s||n[10]!==o||n[11]!==c?(l={elementColor:c,onColorPreview:o,onChange:s},n[9]=s,n[10]=o,n[11]=c,n[12]=l):l=n[12],l}function CompoundElementToolbar(e){let t=V(21),{enableVscode:n,enableRelationshipBrowser:r}=useEnabledFeatures(),{data:i}=e,{style:a,modelFqn:o}=i,{elementColor:s,onColorPreview:c,onChange:l}=useHandlers(o,e),u=a?.opacity??100,d;t[0]!==s||t[1]!==l||t[2]!==c||t[3]!==u?(d=H(ColorButton,{elementColor:s,onColorPreview:c,isOpacityEditable:!0,elementOpacity:u,onChange:l,position:`left-start`}),t[0]=s,t[1]=l,t[2]=c,t[3]=u,t[4]=d):d=t[4];let f=a?.border??(u<99?`dashed`:`none`),p;t[5]!==l||t[6]!==f?(p=H(BorderStyleOption,{elementBorderStyle:f,onChange:l}),t[5]=l,t[6]=f,t[7]=p):p=t[7];let m;t[8]!==n||t[9]!==o?(m=n&&H(GoToSourceButton,{elementId:o}),t[8]=n,t[9]=o,t[10]=m):m=t[10];let h;t[11]!==r||t[12]!==o?(h=r&&H(BrowseRelationshipsButton,{fqn:o}),t[11]=r,t[12]=o,t[13]=h):h=t[13];let g;return t[14]!==o||t[15]!==e||t[16]!==d||t[17]!==p||t[18]!==m||t[19]!==h?(g=U(Toolbar,{nodeProps:e,title:o,align:`start`,children:[d,p,m,h]}),t[14]=o,t[15]=e,t[16]=d,t[17]=p,t[18]=m,t[19]=h,t[20]=g):g=t[20],g}function CompoundDeploymentToolbar(e){let t=V(21),{enableVscode:n,enableRelationshipBrowser:r}=useEnabledFeatures(),{data:i}=e,{deploymentFqn:a,style:o,modelFqn:s}=i,{elementColor:c,onColorPreview:l,onChange:u}=useHandlers(a,e),d=o?.opacity,f;t[0]!==c||t[1]!==u||t[2]!==l||t[3]!==d?(f=H(ColorButton,{elementColor:c,onColorPreview:l,isOpacityEditable:!0,elementOpacity:d,onChange:u,position:`left-start`}),t[0]=c,t[1]=u,t[2]=l,t[3]=d,t[4]=f):f=t[4];let p=o?.border,m;t[5]!==u||t[6]!==p?(m=H(BorderStyleOption,{elementBorderStyle:p,onChange:u}),t[5]=u,t[6]=p,t[7]=m):m=t[7];let h;t[8]!==a||t[9]!==n?(h=n&&H(GoToSourceButton,{deploymentId:a}),t[8]=a,t[9]=n,t[10]=h):h=t[10];let g;t[11]!==r||t[12]!==s?(g=r&&s&&H(BrowseRelationshipsButton,{fqn:s}),t[11]=r,t[12]=s,t[13]=g):g=t[13];let _;return t[14]!==a||t[15]!==e||t[16]!==f||t[17]!==m||t[18]!==h||t[19]!==g?(_=U(Toolbar,{nodeProps:e,title:a,align:`start`,children:[f,m,h,g]}),t[14]=a,t[15]=e,t[16]=f,t[17]=m,t[18]=h,t[19]=g,t[20]=_):_=t[20],_}const Ci=[...er].sort();function ElementToolbar(e){let t=V(25),{enableVscode:n,enableRelationshipBrowser:r,enableNotes:i}=useEnabledFeatures(),a=!!(i&&e.data.notes),{data:o}=e,{shape:s,modelFqn:c,style:l}=o,{elementColor:u,onColorPreview:d,onChange:f}=useHandlers(c,e),p=a?20:10,m;t[0]!==u||t[1]!==f||t[2]!==d?(m=H(ColorButton,{elementColor:u,onColorPreview:d,onChange:f}),t[0]=u,t[1]=f,t[2]=d,t[3]=m):m=t[3];let h;t[4]!==f||t[5]!==s?(h=H(ElementShapeButton,{elementShape:s,onChange:f}),t[4]=f,t[5]=s,t[6]=h):h=t[6];let g=l?.border??`none`,_;t[7]!==f||t[8]!==g?(_=H(BorderStyleOption,{elementBorderStyle:g,onChange:f}),t[7]=f,t[8]=g,t[9]=_):_=t[9];let v;t[10]!==n||t[11]!==c?(v=n&&H(GoToSourceButton,{elementId:c}),t[10]=n,t[11]=c,t[12]=v):v=t[12];let y;t[13]!==r||t[14]!==c?(y=r&&H(BrowseRelationshipsButton,{fqn:c}),t[13]=r,t[14]=c,t[15]=y):y=t[15];let b;return t[16]!==c||t[17]!==e||t[18]!==p||t[19]!==m||t[20]!==h||t[21]!==_||t[22]!==v||t[23]!==y?(b=U(Toolbar,{nodeProps:e,title:c,offset:p,align:`start`,children:[m,h,_,v,y]}),t[16]=c,t[17]=e,t[18]=p,t[19]=m,t[20]=h,t[21]=_,t[22]=v,t[23]=y,t[24]=b):b=t[24],b}function DeploymentElementToolbar(e){let t=V(24),{enableVscode:n,enableRelationshipBrowser:r}=useEnabledFeatures(),{data:i}=e,{shape:a,deploymentFqn:o,modelFqn:s,style:c}=i,{elementColor:l,onColorPreview:u,onChange:d}=useHandlers(o,e),f;t[0]!==l||t[1]!==d||t[2]!==u?(f=H(ColorButton,{elementColor:l,onColorPreview:u,onChange:d}),t[0]=l,t[1]=d,t[2]=u,t[3]=f):f=t[3];let p;t[4]!==d||t[5]!==a?(p=H(ElementShapeButton,{elementShape:a,onChange:d}),t[4]=d,t[5]=a,t[6]=p):p=t[6];let m=c?.border??`none`,h;t[7]!==d||t[8]!==m?(h=H(BorderStyleOption,{elementBorderStyle:m,onChange:d}),t[7]=d,t[8]=m,t[9]=h):h=t[9];let g;t[10]!==o||t[11]!==n?(g=n&&H(GoToSourceButton,{deploymentId:o}),t[10]=o,t[11]=n,t[12]=g):g=t[12];let _;t[13]!==r||t[14]!==s?(_=r&&s&&H(BrowseRelationshipsButton,{fqn:s}),t[13]=r,t[14]=s,t[15]=_):_=t[15];let v;return t[16]!==o||t[17]!==e||t[18]!==f||t[19]!==p||t[20]!==h||t[21]!==g||t[22]!==_?(v=U(Toolbar,{nodeProps:e,title:o,align:`start`,children:[f,p,h,g,_]}),t[16]=o,t[17]=e,t[18]=f,t[19]=p,t[20]=h,t[21]=g,t[22]=_,t[23]=v):v=t[23],v}function ElementShapeButton(e){let t=V(13),{elementShape:n,onChange:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=[`pointerdown`,`mousedown`,`click`],t[0]=i):i=t[0];let a;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(a={item:{padding:`calc(var(--spacing-xs) / 1.5) var(--spacing-xs)`}},t[1]=a):a=t[1];let o;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(o=H(tt,{size:12}),t[2]=o):o=t[2];let s;t[3]===n?s=t[4]:(s=H(_e,{children:H(be,{variant:`light`,color:`gray`,size:`compact-sm`,fz:`xxs`,px:4,pl:8,py:2,rightSection:o,children:n})}),t[3]=n,t[4]=s);let c;t[5]!==n||t[6]!==r?(c=Ci.map(e=>H(de,{fz:`sm`,value:e,rightSection:n===e?H(et,{size:12}):void 0,onClick:t=>{t.stopPropagation(),r({shape:e})},children:e},e)),t[5]=n,t[6]=r,t[7]=c):c=t[7];let l;t[8]===c?l=t[9]:(l=H(me,{onDoubleClick:I,onClick:I,children:c}),t[8]=c,t[9]=l);let u;return t[10]!==s||t[11]!==l?(u=U(Ie,{openDelay:300,closeDelay:450,floatingStrategy:`fixed`,closeOnClickOutside:!0,clickOutsideEvents:i,closeOnEscape:!0,closeOnItemClick:!1,position:`top-start`,offset:2,styles:a,withinPortal:!1,children:[s,l]}),t[10]=s,t[11]=l,t[12]=u):u=t[12],u}function ElementTags(e){let t=V(11),n=useDiagram(),t0;t[0]===n?t0=t[1]:(t0=e=>{n.openSearch(e)},t[0]=n,t[1]=t0);let r=L(t0),t2;t[2]===n?t2=t[3]:(t2=e=>{n.send({type:`tag.highlight`,tag:e})},t[2]=n,t[3]=t2);let i=L(t2),t4;t[4]===n?t4=t[5]:(t4=e=>{n.send({type:`tag.unhighlight`})},t[4]=n,t[5]=t4);let a=L(t4),o;return t[6]!==e||t[7]!==r||t[8]!==i||t[9]!==a?(o=H(di,{onTagClick:r,onTagMouseEnter:i,onTagMouseLeave:a,...e}),t[6]=e,t[7]=r,t[8]=i,t[9]=a,t[10]=o):o=t[10],o}function ElementDetailsButtonWithHandler(e){let t=V(7),n=useDiagram(),r=e.data.modelFqn;if(!r)return null;let t0;t[0]!==n||t[1]!==r||t[2]!==e.id?(t0=t=>{t.stopPropagation(),n.openElementDetails(r,e.id)},t[0]=n,t[1]=r,t[2]=e.id,t[3]=t0):t0=t[3];let i;return t[4]!==e||t[5]!==t0?(i=H(ElementDetailsButton,{...e,onClick:t0}),t[4]=e,t[5]=t0,t[6]=i):i=t[6],i}function CompoundDetailsButtonWithHandler(e){let t=V(7),n=useDiagram(),r=e.data.modelFqn;if(!r)return null;let t0;t[0]!==n||t[1]!==r||t[2]!==e.id?(t0=t=>{t.stopPropagation(),n.openElementDetails(r,e.id)},t[0]=n,t[1]=r,t[2]=e.id,t[3]=t0):t0=t[3];let i;return t[4]!==e||t[5]!==t0?(i=H(CompoundDetailsButton,{...e,onClick:t0}),t[4]=e,t[5]=t0,t[6]=i):i=t[6],i}function ElementNode(e){let t=V(33),{enableElementTags:n,enableElementDetails:r,enableReadOnly:i,enableCompareWithLatest:a,enableNotes:o}=useEnabledFeatures(),s;t[0]!==a||t[1]!==e?(s=a&&H(NodeDrifts,{nodeProps:e}),t[0]=a,t[1]=e,t[2]=s):s=t[2];let c,l;t[3]===e?(c=t[4],l=t[5]):(c=H(Zt,{...e}),l=H(Vt,{...e}),t[3]=e,t[4]=c,t[5]=l);let u;t[6]!==n||t[7]!==e?(u=n&&H(ElementTags,{...e}),t[6]=n,t[7]=e,t[8]=u):u=t[8];let d;t[9]===e?d=t[10]:(d=H(ElementActions,{...e}),t[9]=e,t[10]=d);let f;t[11]!==r||t[12]!==e?(f=r&&H(ElementDetailsButtonWithHandler,{...e}),t[11]=r,t[12]=e,t[13]=f):f=t[13];let p;t[14]!==i||t[15]!==e?(p=!i&&H(ElementToolbar,{...e}),t[14]=i,t[15]=e,t[16]=p):p=t[16];let m;t[17]!==o||t[18]!==e?(m=o&&H(NodeNotes,{...e}),t[17]=o,t[18]=e,t[19]=m):m=t[19];let h;t[20]===e.data.viewLayoutDir?h=t[21]:(h=H(Kt,{direction:e.data.viewLayoutDir}),t[20]=e.data.viewLayoutDir,t[21]=h);let g;return t[22]!==e||t[23]!==s||t[24]!==c||t[25]!==l||t[26]!==u||t[27]!==d||t[28]!==f||t[29]!==p||t[30]!==m||t[31]!==h?(g=U($t,{nodeProps:e,children:[s,c,l,u,d,f,p,m,h]}),t[22]=e,t[23]=s,t[24]=c,t[25]=l,t[26]=u,t[27]=d,t[28]=f,t[29]=p,t[30]=m,t[31]=h,t[32]=g):g=t[32],g}function DeploymentNode(e){let t=V(33),{enableElementTags:n,enableElementDetails:r,enableReadOnly:i,enableCompareWithLatest:a,enableNotes:o}=useEnabledFeatures(),s;t[0]!==a||t[1]!==e?(s=a&&H(NodeDrifts,{nodeProps:e}),t[0]=a,t[1]=e,t[2]=s):s=t[2];let c,l;t[3]===e?(c=t[4],l=t[5]):(c=H(Zt,{...e}),l=H(Vt,{...e}),t[3]=e,t[4]=c,t[5]=l);let u;t[6]!==n||t[7]!==e?(u=n&&H(ElementTags,{...e}),t[6]=n,t[7]=e,t[8]=u):u=t[8];let d;t[9]===e?d=t[10]:(d=H(DeploymentElementActions,{...e}),t[9]=e,t[10]=d);let f;t[11]!==r||t[12]!==e?(f=r&&H(ElementDetailsButtonWithHandler,{...e}),t[11]=r,t[12]=e,t[13]=f):f=t[13];let p;t[14]!==i||t[15]!==e?(p=!i&&H(DeploymentElementToolbar,{...e}),t[14]=i,t[15]=e,t[16]=p):p=t[16];let m;t[17]!==o||t[18]!==e?(m=o&&H(NodeNotes,{...e}),t[17]=o,t[18]=e,t[19]=m):m=t[19];let h;t[20]===e.data.viewLayoutDir?h=t[21]:(h=H(Kt,{direction:e.data.viewLayoutDir}),t[20]=e.data.viewLayoutDir,t[21]=h);let g;return t[22]!==e||t[23]!==s||t[24]!==c||t[25]!==l||t[26]!==u||t[27]!==d||t[28]!==f||t[29]!==p||t[30]!==m||t[31]!==h?(g=U($t,{nodeProps:e,children:[s,c,l,u,d,f,p,m,h]}),t[22]=e,t[23]=s,t[24]=c,t[25]=l,t[26]=u,t[27]=d,t[28]=f,t[29]=p,t[30]=m,t[31]=h,t[32]=g):g=t[32],g}const wi=N({outlineColor:`likec4.compare.manual.outline`,outlineWidth:`4px`,outlineStyle:`dashed`,outlineOffset:`1.5`}),hasDrifts=e=>e.data.drifts&&e.data.drifts.length>0;function CompoundElementNode(e){let t=V(23),{enableElementDetails:n,enableReadOnly:r,enableCompareWithLatest:i}=useEnabledFeatures(),a=i&&hasDrifts(e)?wi:void 0,o;t[0]!==i||t[1]!==e?(o=i&&H(NodeDrifts,{nodeProps:e}),t[0]=i,t[1]=e,t[2]=o):o=t[2];let s,c;t[3]===e?(s=t[4],c=t[5]):(s=H(CompoundTitle,{...e}),c=H(CompoundActions,{...e}),t[3]=e,t[4]=s,t[5]=c);let l;t[6]!==n||t[7]!==e?(l=n&&H(CompoundDetailsButtonWithHandler,{...e}),t[6]=n,t[7]=e,t[8]=l):l=t[8];let u;t[9]!==r||t[10]!==e?(u=!r&&H(CompoundElementToolbar,{...e}),t[9]=r,t[10]=e,t[11]=u):u=t[11];let d;t[12]===e.data.viewLayoutDir?d=t[13]:(d=H(Kt,{direction:e.data.viewLayoutDir}),t[12]=e.data.viewLayoutDir,t[13]=d);let f;return t[14]!==e||t[15]!==a||t[16]!==o||t[17]!==s||t[18]!==c||t[19]!==l||t[20]!==u||t[21]!==d?(f=U(CompoundNodeContainer,{className:a,nodeProps:e,children:[o,s,c,l,u,d]}),t[14]=e,t[15]=a,t[16]=o,t[17]=s,t[18]=c,t[19]=l,t[20]=u,t[21]=d,t[22]=f):f=t[22],f}function CompoundDeploymentNode(e){let t=V(23),{enableElementDetails:n,enableReadOnly:r,enableCompareWithLatest:i}=useEnabledFeatures(),a=i&&hasDrifts(e)?wi:void 0,o;t[0]!==i||t[1]!==e?(o=i&&H(NodeDrifts,{nodeProps:e}),t[0]=i,t[1]=e,t[2]=o):o=t[2];let s,c;t[3]===e?(s=t[4],c=t[5]):(s=H(CompoundTitle,{...e}),c=H(CompoundActions,{...e}),t[3]=e,t[4]=s,t[5]=c);let l;t[6]!==n||t[7]!==e?(l=n&&H(CompoundDetailsButtonWithHandler,{...e}),t[6]=n,t[7]=e,t[8]=l):l=t[8];let u;t[9]!==r||t[10]!==e?(u=!r&&H(CompoundDeploymentToolbar,{...e}),t[9]=r,t[10]=e,t[11]=u):u=t[11];let d;t[12]===e.data.viewLayoutDir?d=t[13]:(d=H(Kt,{direction:e.data.viewLayoutDir}),t[12]=e.data.viewLayoutDir,t[13]=d);let f;return t[14]!==e||t[15]!==a||t[16]!==o||t[17]!==s||t[18]!==c||t[19]!==l||t[20]!==u||t[21]!==d?(f=U(CompoundNodeContainer,{className:a,nodeProps:e,children:[o,s,c,l,u,d]}),t[14]=e,t[15]=a,t[16]=o,t[17]=s,t[18]=c,t[19]=l,t[20]=u,t[21]=d,t[22]=f):f=t[22],f}function ViewGroupNode(e){let t=V(13),{enableCompareWithLatest:n}=useEnabledFeatures(),r=n&&hasDrifts(e)?wi:void 0,i;t[0]!==n||t[1]!==e?(i=n&&H(NodeDrifts,{nodeProps:e}),t[0]=n,t[1]=e,t[2]=i):i=t[2];let a;t[3]===e?a=t[4]:(a=H(CompoundTitle,{...e}),t[3]=e,t[4]=a);let o;t[5]===e.data.viewLayoutDir?o=t[6]:(o=H(Kt,{direction:e.data.viewLayoutDir}),t[5]=e.data.viewLayoutDir,t[6]=o);let s;return t[7]!==e||t[8]!==r||t[9]!==i||t[10]!==a||t[11]!==o?(s=U(CompoundNodeContainer,{className:r,nodeProps:e,children:[i,a,o]}),t[7]=e,t[8]=r,t[9]=i,t[10]=a,t[11]=o,t[12]=s):s=t[12],s}const Ti={left:ht.Left,right:ht.Right,top:ht.Top,bottom:ht.Bottom},ActorStepPort=e=>{let t=V(20),{data:n,port:r}=e,i=n.color,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=N({position:`absolute`,backgroundColor:`var(--likec4-palette-fill)`,rounded:`xs`,width:{base:`5px`,_whenHovered:`7px`,_whenSelected:`7px`},transition:`fast`,translateX:`-1/2`,translateY:`-1/2`,translate:`auto`}),t[0]=a):a=t[0];let o;t[1]!==r.cx||t[2]!==r.cy||t[3]!==r.height?(o={top:r.cy,left:r.cx,height:r.height},t[1]=r.cx,t[2]=r.cy,t[3]=r.height,t[4]=o):o=t[4];let s;t[5]!==n.color||t[6]!==o?(s=H(He,{"data-likec4-color":i,className:a,style:o}),t[5]=n.color,t[6]=o,t[7]=s):s=t[7];let c=Ti[r.position],l=r.cy-3,u=r.cx-3,d=r.position===`left`?`translate(-150%, 0)`:`translate(100%, 0)`,f;t[8]!==l||t[9]!==u||t[10]!==d?(f={top:l,left:u,width:6,height:6,right:`unset`,bottom:`unset`,visibility:`hidden`,transform:d},t[8]=l,t[9]=u,t[10]=d,t[11]=f):f=t[11];let p;t[12]!==r.id||t[13]!==r.type||t[14]!==c||t[15]!==f?(p=H(gt,{id:r.id,type:r.type,position:c,style:f}),t[12]=r.id,t[13]=r.type,t[14]=c,t[15]=f,t[16]=p):p=t[16];let m;return t[17]!==p||t[18]!==s?(m=U(kn,{children:[s,p]}),t[17]=p,t[18]=s,t[19]=m):m=t[19],m},Ei=e(e=>`modelFqn`in e.data&&m(e.data.modelFqn),`hasModelFqn`);function SequenceActorNode(e){let t=V(36),{enableElementDetails:n,enableReadOnly:r,enableCompareWithLatest:i,enableNotes:a}=useEnabledFeatures(),o=e.data,{id:s,positionAbsoluteY:c,data:l}=e,{viewHeight:u,hovered:d,ports:f}=l,p=d===void 0?!1:d,m;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(m=N({position:`absolute`,rounded:`xs`,top:`1`,pointerEvents:`none`,transition:`fast`,translateX:`-1/2`,translate:`auto`}),t[0]=m):m=t[0];let h=p?.6:.4,g=p?3:2,_=u-c,v;t[1]!==h||t[2]!==g||t[3]!==_?(v=H(He,{"data-likec4-color":`gray`,className:m,style:{backgroundColor:`var(--likec4-palette-stroke)`,opacity:h,left:`50%`,width:g,height:_,zIndex:-1,pointerEvents:`none`}}),t[1]=h,t[2]=g,t[3]=_,t[4]=v):v=t[4];let y;t[5]!==i||t[6]!==e?(y=i&&H(NodeDrifts,{nodeProps:e}),t[5]=i,t[6]=e,t[7]=y):y=t[7];let b,x;t[8]===e?(b=t[9],x=t[10]):(b=H(Zt,{...e}),x=H(Vt,{...e}),t[8]=e,t[9]=b,t[10]=x);let S;t[11]!==o||t[12]!==n||t[13]!==r||t[14]!==s||t[15]!==e?(S=Ei(e)&&U(kn,{children:[H(ElementActions,{...e}),n&&H(ElementDetailsButtonWithHandler,{id:s,data:o}),!r&&H(ElementToolbar,{...e})]}),t[11]=o,t[12]=n,t[13]=r,t[14]=s,t[15]=e,t[16]=S):S=t[16];let C;t[17]!==a||t[18]!==e?(C=a&&H(NodeNotes,{...e}),t[17]=a,t[18]=e,t[19]=C):C=t[19];let w;t[20]!==e||t[21]!==S||t[22]!==C||t[23]!==y||t[24]!==b||t[25]!==x?(w=U($t,{nodeProps:e,children:[y,b,x,S,C]}),t[20]=e,t[21]=S,t[22]=C,t[23]=y,t[24]=b,t[25]=x,t[26]=w):w=t[26];let T;if(t[27]!==f||t[28]!==e.data){let t14;t[30]===e.data?t14=t[31]:(t14=t=>H(ActorStepPort,{port:t,data:e.data},t.id),t[30]=e.data,t[31]=t14),T=f.map(t14),t[27]=f,t[28]=e.data,t[29]=T}else T=t[29];let E;return t[32]!==w||t[33]!==T||t[34]!==v?(E=U(kn,{children:[v,w,T]}),t[32]=w,t[33]=T,t[34]=v,t[35]=E):E=t[35],E}function SequenceParallelArea(e){let t=V(3),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n={width:`100%`,height:`100%`,border:`default`,rounded:`sm`,borderWidth:1,"--_color":{base:`var(--likec4-palette-stroke)`,_dark:`[color-mix(in oklab, var(--likec4-palette-hiContrast) 40%, var(--likec4-palette-fill))]`},borderColor:`[var(--_color)/30]`,backgroundColor:`var(--likec4-palette-fill)/15`,pointerEvents:`none`,paddingLeft:`2`,paddingTop:`0.5`,fontSize:`xs`,fontWeight:`bold`,letterSpacing:`.75px`,color:`[var(--_color)/75]`},t[0]=n):n=t[0];let r;return t[1]===e.data.color?r=t[2]:(r=H(He,{"data-likec4-color":e.data.color,css:n,children:`PARALLEL`}),t[1]=e.data.color,t[2]=r),r}const Di={ElementNode,DeploymentNode,CompoundElementNode,CompoundDeploymentNode,ViewGroupNode,SequenceActorNode,SequenceParallelArea},Oi={RelationshipEdge:gi,SequenceStepEdge};var Rect=class{static LeftPadding=42;static RightPadding=42;static TopPadding=60;static BottomPadding=42;id;minX=1/0;minY=1/0;maxX=-1/0;maxY=-1/0;initial;get positionAbsolute(){return{x:this.minX,y:this.minY}}set positionAbsolute(e){let t=Math.trunc(e.x),n=Math.trunc(e.y);this.maxX+=t-this.minX,this.maxY+=n-this.minY,this.minX=t,this.minY=n}get dimensions(){return{width:Math.ceil(this.maxX-this.minX),height:Math.ceil(this.maxY-this.minY)}}get diff(){let{x:e,y:t}=this.positionAbsolute;return{x:Math.trunc(e-this.initial.x),y:Math.trunc(t-this.initial.y)}}get isMoved(){let e=this.diff;return e.x!==0||e.y!==0}get isResized(){let e=this.dimensions;return e.width!==this.initial.width||e.height!==this.initial.height}get position(){let e=this.positionAbsolute;if(!this.parent)return e;let t=this.parent.positionAbsolute;return{x:e.x-t.x,y:e.y-t.y}}constructor(e,t=null){this.id=e.id,this.positionAbsolute=t?{x:e.position.x+t.minX,y:e.position.y+t.minY}:e.position;let{width:n,height:r}=St(e);this.maxX=this.minX+Math.ceil(n),this.maxY=this.minY+Math.ceil(r),this.initial={x:this.minX,y:this.minY,width:Math.ceil(n),height:Math.ceil(r)},t&&t.children.push(this)}},CompoundRect=class extends Rect{children=[];constructor(e,t=null){super(e,t),this.parent=t}},Leaf=class extends Rect{constructor(e,t=null){super(e,t),this.parent=t}};function makeEdgeModifier(e,t){let n=e.data.controlPoints??null;return r=>{let i=G(r.get(e.id),`Edge ${e.id} not found`),{x:a,y:o}=t.diff;return a===0&&o===0?{id:e.id,type:`replace`,item:or(i,t=>{t.data.points=e.data.points,t.data.controlPoints=n,t.data.labelBBox=e.data.labelBBox})}:{id:e.id,type:`replace`,item:or(i,t=>{t.data.points=j(e.data.points,e=>[e[0]+a,e[1]+o]),n?t.data.controlPoints=n.map(e=>({x:e.x+a,y:e.y+o})):t.data.controlPoints=null,e.data.labelBBox&&(t.data.labelBBox??=e.data.labelBBox,t.data.labelBBox.x=e.data.labelBBox.x+a,t.data.labelBBox.y=e.data.labelBBox.y+o)})}}}function makeRelativeEdgeModifier(e,t,n,r){let i=e.data.controlPoints??Pt(e.data.points),a=Gt(Un.center(n)),o=Gt(Un.center(r)),s=a.subtract(o),c=s.length();return n=>{let r=G(n.get(e.id),`Edge ${e.id} not found`),{x:a,y:l}=t.diff;if(a===0&&l===0)return{id:e.id,type:`replace`,item:or(r,t=>{t.data.points=e.data.points,t.data.controlPoints=e.data.controlPoints,t.data.labelBBox=e.data.labelBBox})};let u=Gt(a,l),relativePoint=e=>{let t=Gt(e),n=b(t.subtract(o).dot(s)/c**2,{min:-1,max:1}),r=t.add(u.multiply(n)).trunc();return{x:r.x,y:r.y}};return{id:e.id,type:`replace`,item:or(r,t=>{if(t.data.controlPoints=i.map(relativePoint),e.data.labelBBox){t.data.labelBBox??=e.data.labelBBox;let{x:n,y:r}=relativePoint(e.data.labelBBox);t.data.labelBBox.x=n,t.data.labelBBox.y=r}})}}}function createLayoutConstraints(e,t){let{parentLookup:n,nodeLookup:r,edges:i}=e.getState(),a=new Map,s=new jn(e=>{let t=r.get(e)?.parentId;return t?[t,...s.get(t)]:[]}),l=new jn(e=>{let t=n.get(e);if(!t||t.size===0)return new Set;let r=new Set;for(let e of t.values()){r.add(e.id);for(let t of l.get(e.id))r.add(t)}return r});if(A(t,2)){let e=y(t,o(e=>[...l.get(e)]),ie(),e=>c(t,e));q(A(e,1),`All editing nodes are nested within each other`),t=e}let u=new Set(t.flatMap(e=>s.get(e))),d=[...r.values()].flatMap(e=>e.parentId?[]:{xynode:e,parent:null});for(;d.length>0;){let{xynode:e,parent:r}=d.shift();if(!t.includes(e.id)&&u.has(e.id)){let t=new CompoundRect(e,r);a.set(e.id,t),n.get(e.id)?.forEach(e=>{d.push({xynode:e,parent:t})});continue}a.set(e.id,new Leaf(e,r))}let f=[...a.values()],p=new Map,findMovingAncestor=e=>{let t=a.get(e);if(t)return t;for(let t of s.get(e)){let e=a.get(t);if(e)return e}return null},m=new Set(t.flatMap(e=>[e,...l.get(e)]));for(let e of i){let t=m.has(e.source),n=m.has(e.target);if(!t&&!n)continue;if(t&&n){let t=a.get(e.source)??a.get(e.target)??findMovingAncestor(e.source)??findMovingAncestor(e.target);q(!!t,`At least one of the edge nodes should have a moving ancestor`),p.set(e,makeEdgeModifier(e,t));continue}q(t!==n,`Logic error`);let i=findMovingAncestor(t?e.source:e.target);q(!!i,`Moving endpoint should be found`);let[o,s]=y([e.source,e.target],j(e=>G(r.get(e),`Node ${e} not found`)),j(an)),[c,l]=t?[o,s]:[s,o];p.set(e,makeRelativeEdgeModifier(e,i,c,l))}function applyConstraints(e){for(let t of e){if(!(t instanceof CompoundRect))continue;applyConstraints(t.children);let e={minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};for(let n of t.children)e.minX=Math.min(e.minX,n.minX),e.minY=Math.min(e.minY,n.minY),e.maxX=Math.max(e.maxX,n.maxX),e.maxY=Math.max(e.maxY,n.maxY);t.minX=e.minX-Rect.LeftPadding,t.minY=e.minY-Rect.TopPadding,t.maxX=e.maxX+Rect.RightPadding,t.maxY=e.maxY+Rect.BottomPadding}}let h=[...p.values()];function syncFromXYFlow(){let{nodeLookup:n}=e.getState();for(let e of t){let t=a.get(e);if(!t){console.warn(`Rect not found for id ${e}`);continue}let r=n.get(e);if(!r){console.warn(`Node not found for id ${e}`);continue}t.positionAbsolute=r.internals.positionAbsolute}}function updateXYFlow(){let{edgeLookup:t,triggerNodeChanges:n,triggerEdgeChanges:r}=e.getState();applyConstraints(f);let i=[],a=[];for(let e of f)i.push({id:e.id,type:`position`,dragging:!1,position:e.position,positionAbsolute:e.positionAbsolute}),e instanceof CompoundRect&&i.push({id:e.id,type:`dimensions`,setAttributes:!0,resizing:!1,dimensions:e.dimensions});i.length>0&&n(i);for(let e of h)a.push(e(t));a.length>0&&r(a)}let g=null;function cancelPending(){g!==null&&(cancelAnimationFrame(g),g=null)}function flushPending(){cancelPending(),syncFromXYFlow(),updateXYFlow()}function onMove(){g??=requestAnimationFrame(()=>{g=null,syncFromXYFlow(),updateXYFlow()})}function hasChanges(){return Yn(f,e=>e.isMoved||e.isResized)}return{rects:a,onMove,updateXYFlow,hasChanges,cancelPending,flushPending}}function useLayoutConstraints(){let e=V(9),t=jt(),n=useDiagram(),r=Dn(void 0),t0;e[0]!==n||e[1]!==t?(t0=(e,i)=>{let{nodeLookup:o}=t.getState(),s=y(Array.from(o.values()),a(e=>e.dragging===!0||e.id===i.id||e.selected===!0),j(_temp$1));A(s,1)&&(n.startEditing(`node`),r.current=createLayoutConstraints(t,s))},e[0]=n,e[1]=t,e[2]=t0):t0=e[2];let t1;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(t1=e=>{r.current?.onMove()},e[3]=t1):t1=e[3];let t2;e[4]===n?t2=e[5]:(t2=e=>{if(!r.current)return;let t=r.current.hasChanges();t?r.current.flushPending():r.current.cancelPending(),n.stopEditing(t),r.current=void 0},e[4]=n,e[5]=t2);let i;return e[6]!==t0||e[7]!==t2?(i={onNodeDragStart:t0,onNodeDrag:t1,onNodeDragStop:t2},e[6]=t0,e[7]=t2,e[8]=i):i=e[8],i}function _temp$1(e){return e.id}e(_temp$1,`_temp`);const ki={relationship:Oi.RelationshipEdge,"seq-step":Oi.SequenceStepEdge},Ai={element:memoNode(Di.ElementNode),deployment:memoNode(Di.DeploymentNode),"compound-element":memoNode(Di.CompoundElementNode),"compound-deployment":memoNode(Di.CompoundDeploymentNode),"view-group":memoNode(Di.ViewGroupNode),"seq-actor":memoNode(Di.SequenceActorNode),"seq-parallel":memoNode(Di.SequenceParallelArea)};function prepareNodeTypes(e){return!e||i(e)?Ai:{element:e.element??Ai.element,deployment:e.deployment??Ai.deployment,"compound-element":e.compoundElement??Ai[`compound-element`],"compound-deployment":e.compoundDeployment??Ai[`compound-deployment`],"view-group":e.viewGroup??Ai[`view-group`],"seq-actor":e.seqActor??Ai[`seq-actor`],"seq-parallel":e.seqParallel??Ai[`seq-parallel`]}}const viewportToTopLeft=e=>{let t=viewBounds(e);return{x:-t.x,y:-t.y,zoom:1}},ji=selectDiagramActor(({context:e,children:t})=>{let{enableReadOnly:n}=deriveToggledFeatures(e),r=n||t.editor?.getSnapshot().context.editing!==`edge`,i=!n&&e.nodesDraggable;return e.dynamicViewVariant===`sequence`&&e.view._type===`dynamic`&&(i=!1),{enableReadOnly:n,initialized:e.initialized.xydata&&e.initialized.xyflow,nodes:e.xynodes,edges:e.xyedges,pannable:e.pannable,zoomable:e.zoomable,nodesDraggable:i,nodesSelectable:e.nodesSelectable&&r,fitViewPadding:e.fitViewPadding,enableFitView:e.features.enableFitView,...!e.features.enableFitView&&{viewport:viewportToTopLeft(e)}}});function LikeC4DiagramXYFlow(e){let t=V(102),{background:n,reactFlowProps:r,children:i,renderNodes:a}=e,o=n===void 0?`dots`:n,s;t[0]===r?s=t[1]:(s=r===void 0?{}:r,t[0]=r,t[1]=s);let c=s,l=useDiagram(),u=useDiagramSnapshot(ji),d,f,p,m,h,g,_,v;t[2]===u?(d=t[3],f=t[4],p=t[5],m=t[6],h=t[7],g=t[8],_=t[9],v=t[10]):({enableReadOnly:p,initialized:m,nodes:h,edges:d,enableFitView:f,nodesDraggable:g,nodesSelectable:_,...v}=u,t[2]=u,t[3]=d,t[4]=f,t[5]=p,t[6]=m,t[7]=h,t[8]=g,t[9]=_,t[10]=v);let{onNodeContextMenu:y,onCanvasContextMenu:b,onEdgeContextMenu:x,onNodeClick:S,onEdgeClick:C,onCanvasClick:w,onCanvasDblClick:T}=useDiagramEventHandlers(),E=nn(),D=useLayoutConstraints(),O=It(),t5;t[11]===O?t5=t[12]:(t5=()=>{O.set(!0)},t[11]=O,t[12]=t5);let k=De(t5,E?200:800),t6;t[13]!==O||t[14]!==k?(t6=()=>{k.clear(),O.set(!1)},t[13]=O,t[14]=k,t[15]=t6):t6=t[15];let ee=ve(t6,200),t7;t[16]!==O||t[17]!==k||t[18]!==ee?(t7=e=>{if(!e){k.clear();return}O.get()?ee():k.start()},t[16]=O,t[17]=k,t[18]=ee,t[19]=t7):t7=t[19];let te=L(t7),t8;t[20]!==l||t[21]!==ee?(t8=(e,t)=>{e&&ee(),l.send({type:`xyflow.viewportMoved`,viewport:t,manually:!!e})},t[20]=l,t[21]=ee,t[22]=t8):t8=t[22];let ne=L(t8),t9;t[23]===l?t9=t[24]:(t9=()=>{l.send({type:`xyflow.resized`})},t[23]=l,t[24]=t9);let A=L(t9),t10,re;t[25]===a?(t10=t[26],re=t[27]):(t10=()=>prepareNodeTypes(a),re=[a],t[25]=a,t[26]=t10,t[27]=re);let ie=st(t10,re,sn),ae;t[28]===ie?ae=t[29]:(ae=[ie],t[28]=ie,t[29]=ae),on(_temp,ae);let j=m?`initialized`:`not-initialized`,oe;t[30]===j?oe=t[31]:(oe=M(j),t[30]=j,t[31]=oe);let t15;t[32]===l?t15=t[33]:(t15=e=>{l.send({type:`xyflow.applyChanges`,nodes:e})},t[32]=l,t[33]=t15);let se=L(t15),t17;t[34]===l?t17=t[35]:(t17=e=>{l.send({type:`xyflow.applyChanges`,edges:e})},t[34]=l,t[35]=t17);let ce=L(t17),le=m?o:`transparent`,t20;t[36]!==l||t[37]!==S?(t20=(e,t)=>{e.stopPropagation(),l.send({type:`xyflow.nodeClick`,node:t}),S?.(l.findDiagramNode(t.id),e)},t[36]=l,t[37]=S,t[38]=t20):t20=t[38];let ue=L(t20),t22;t[39]!==l||t[40]!==C?(t22=(e,t)=>{e.stopPropagation(),l.send({type:`xyflow.edgeClick`,edge:t}),C?.(l.findDiagramEdge(t.id),e)},t[39]=l,t[40]=C,t[41]=t22):t22=t[41];let de=L(t22),t24;t[42]===l?t24=t[43]:(t24=(e,t)=>{e.stopPropagation(),l.send({type:`xyflow.edgeDoubleClick`,edge:t})},t[42]=l,t[43]=t24);let fe=L(t24),t26;t[44]!==l||t[45]!==w?(t26=e=>{e.stopPropagation(),l.send({type:`xyflow.paneClick`}),w?.(e)},t[44]=l,t[45]=w,t[46]=t26):t26=t[46];let pe=L(t26),t28;t[47]!==l||t[48]!==T?(t28=e=>{e.stopPropagation(),e.preventDefault(),l.send({type:`xyflow.paneDblClick`}),T?.(e)},t[47]=l,t[48]=T,t[49]=t28):t28=t[49];let me=L(t28),t30;t[50]===l?t30=t[51]:(t30=(e,t)=>{e.stopPropagation(),l.send({type:`xyflow.nodeMouseEnter`,node:t})},t[50]=l,t[51]=t30);let he=L(t30),t32;t[52]===l?t32=t[53]:(t32=(e,t)=>{e.stopPropagation(),l.send({type:`xyflow.nodeMouseLeave`,node:t})},t[52]=l,t[53]=t32);let ge=L(t32),t34;t[54]===l?t34=t[55]:(t34=(e,t)=>{e.stopPropagation(),l.send({type:`xyflow.edgeMouseEnter`,edge:t,event:e})},t[54]=l,t[55]=t34);let _e=L(t34),t36;t[56]===l?t36=t[57]:(t36=(e,t)=>{e.stopPropagation(),l.send({type:`xyflow.edgeMouseLeave`,edge:t,event:e})},t[56]=l,t[57]=t36);let ye=L(t36),t38;t[58]===l?t38=t[59]:(t38=e=>{l.send({type:`xyflow.init`,instance:e})},t[58]=l,t[59]=t38);let be=L(t38),t40;t[60]!==l||t[61]!==y?(t40=(e,t)=>{let n=G(l.findDiagramNode(t.id),`diagramNode ${t.id} not found`);y?.(n,e)},t[60]=l,t[61]=y,t[62]=t40):t40=t[62];let xe=L(t40),t42;t[63]!==l||t[64]!==x?(t42=(e,t)=>{let n=G(l.findDiagramEdge(t.id),`diagramEdge ${t.id} not found`);x?.(n,e)},t[63]=l,t[64]=x,t[65]=t42):t42=t[65];let Se=L(t42),Ce;t[66]===b?Ce=t[67]:(Ce=b&&{onPaneContextMenu:b},t[66]=b,t[67]=Ce);let we;t[68]!==f||t[69]!==A?(we=f&&{onViewportResize:A},t[68]=f,t[69]=A,t[70]=we):we=t[70];let Te=!p,Ee=g&&D,Oe;return t[71]!==i||t[72]!==d||t[73]!==ie||t[74]!==h||t[75]!==g||t[76]!==_||t[77]!==te||t[78]!==ne||t[79]!==v||t[80]!==c||t[81]!==oe||t[82]!==se||t[83]!==ce||t[84]!==le||t[85]!==ue||t[86]!==de||t[87]!==fe||t[88]!==pe||t[89]!==me||t[90]!==he||t[91]!==ge||t[92]!==_e||t[93]!==ye||t[94]!==be||t[95]!==xe||t[96]!==Se||t[97]!==Ce||t[98]!==we||t[99]!==Te||t[100]!==Ee?(Oe=H(Jt,{nodes:h,edges:d,className:oe,nodeTypes:ie,edgeTypes:ki,onNodesChange:se,onEdgesChange:ce,background:le,fitView:!1,onNodeClick:ue,onEdgeClick:de,onEdgeDoubleClick:fe,onPaneClick:pe,onDoubleClick:me,onNodeMouseEnter:he,onNodeMouseLeave:ge,onEdgeMouseEnter:_e,onEdgeMouseLeave:ye,onMove:te,onMoveEnd:ne,onInit:be,onNodeContextMenu:xe,onEdgeContextMenu:Se,...Ce,...we,nodesDraggable:g,nodesSelectable:_,elevateEdgesOnSelect:Te,zIndexMode:`manual`,...Ee,...v,...c,children:i}),t[71]=i,t[72]=d,t[73]=ie,t[74]=h,t[75]=g,t[76]=_,t[77]=te,t[78]=ne,t[79]=v,t[80]=c,t[81]=oe,t[82]=se,t[83]=ce,t[84]=le,t[85]=ue,t[86]=de,t[87]=fe,t[88]=pe,t[89]=me,t[90]=he,t[91]=ge,t[92]=_e,t[93]=ye,t[94]=be,t[95]=xe,t[96]=Se,t[97]=Ce,t[98]=we,t[99]=Te,t[100]=Ee,t[101]=Oe):Oe=t[101],Oe}function _temp(){console.warn(`renderNodes changed - this might degrade performance`)}function applyChangesToManualLayout(e,t){try{return sr(!1),_applyChangesToManualLayout(e,t)}finally{sr(!0)}}const isRootNode=e=>f(e.parent);function _applyChangesToManualLayout(e,t){W(e.id===t.id,`View IDs do not match`),W(e._type===t._type,`View types do not match`),W(e._layout===`manual`&&t._layout===`auto`,`Views must be manual and auto`);let n=new Set,r=new Set,isNotCompound=e=>!n.has(typeof e==`string`?e:e.id),isBetweenNewLeafNodes=e=>r.has(e.source)&&r.has(e.target)&&isNotCompound(e.source)&&isNotCompound(e.target),i=new Map(t.nodes.map(t=>{t.children&&t.children.length>0&&n.add(t.id);let i=e.nodes.find(e=>e.id===t.id);return i?[t.id,applyFromManualNode({latest:t,manual:i})]:(r.add(t.id),[t.id,removeDrift(t)])}));if(r.size===i.size)return or(t,e=>{e._layout=`manual`,e.nodes=ar([...i.values()]),e.edges=ar(t.edges.map(removeDrift)),delete e.drifts});n.size>0&&expandCompoundNodes(i);let a=[...i.values()],o=t.edges.map(t=>{let n=t.dir??`forward`,hasSameEndpoints=e=>e.source===t.source&&e.target===t.target&&(e.dir===n||!e.dir&&!t.dir),r=e.edges.find(e=>e.id===t.id&&hasSameEndpoints(e));return r||=e.edges.find(e=>hasSameEndpoints(e)),r?applyFromManualEdge({latest:t,manual:r}):isBetweenNewLeafNodes(t)?removeDrift(t):makeAsStraightLine(t,i.get(t.source),i.get(t.target))}),s=Un.merge(...a.filter(isRootNode));return or(t,e=>{e._layout=`manual`,e.nodes=ar(a),e.edges=ar(o),e.bounds=s,delete e.drifts})}const Mi={Left:42,Right:42,Top:60,Bottom:42};function expandCompoundNodes(e){function expand(t){let n=G(e.get(t),`Node ${t} not found`);if(n.children.length===0)return n;let r=[];for(let e of n.children)r.push(expand(e));let i=Un.merge(...r);return n.x=i.x-Mi.Left,n.y=i.y-Mi.Top,n.width=i.width+Mi.Left+Mi.Right,n.height=i.height+Mi.Top+Mi.Bottom,n}for(let t of e.values())!isRootNode(t)||t.children.length===0||expand(t.id)}function applyFromManualNode({latest:e,manual:t}){return W(t.id===e.id,`Node IDs do not match`),or(e,e=>{e.x=t.x,e.y=t.y,e.drifts=null})}function applyFromManualEdge(e){let{manual:t,latest:n}=e;return or(n,e=>{t.controlPoints?e.controlPoints=t.controlPoints:delete e.controlPoints,e.points=ar(t.points),t.labelBBox&&(e.labelBBox=n.labelBBox??t.labelBBox,e.labelBBox.x=t.labelBBox.x,e.labelBBox.y=t.labelBBox.y),e.drifts=null})}function removeDrift(e){if(`drifts`in e&&e.drifts!==null){let t={...e};return t.drifts=null,t}return e}function makeAsStraightLine(e,t,n){let r=edgeControlPoints(t,n),i=r[0];return or(e,t=>{t.points=ar(j(r,Wn)),t.controlPoints=r,e.labelBBox&&(t.labelBBox.x=i.x,t.labelBBox.y=i.y),delete t.drifts})}function getBorderPointOnVector$1(e,t,n){let r=e.width/2/n.x,i=e.height/2/n.y,a=Math.min(Math.abs(r),Math.abs(i));return K(n).multiply(a).add(t)}e(getBorderPointOnVector$1,`getBorderPointOnVector`);function edgeControlPoints(e,t){let n=K(Un.center(e)),r=K(Un.center(t));if(e===t){let t=K(0,e.height||0).multiply(-.5).add(n);return[t.add(K(-80/2.5,-80)).trunc().toObject(),t.add(K(80/2.5,-80)).trunc().toObject()]}let i=r.subtract(n),a=getBorderPointOnVector$1(e,n,i),o=getBorderPointOnVector$1(t,r,i.multiply(-1)).subtract(a);return[a.add(o.multiply(.4)).trunc().toObject(),a.add(o.multiply(.6)).trunc().toObject()]}z();const promisify=e=>Promise.resolve().then(()=>e());function useEditorActorLogic(){let e=V(7),t=useOptionalLikeC4Editor(),t0;e[0]===t?t0=e[1]:(t0=async e=>{let{input:n}=e,{viewId:r,current:i}=n;return t?{updated:applyChangesToManualLayout(await promisify(()=>i??t.fetchView(r,`manual`)),await promisify(()=>t.fetchView(r,`auto`)))}:(console.error(`No editor port available for applying latest to manual layout`),Promise.reject(Error(`No editor port`)))},e[0]=t,e[1]=t0);let n=L(t0),t1;e[2]===t?t1=e[3]:(t1=async e=>{let{input:n}=e;if(!t)return console.error(`No editor port available for executing change`),Promise.reject(Error(`No editor port`));import.meta.env.DEV&&console.debug(`Executing change`,{input:n});for(let e of n.changes)await promisify(()=>t.handleChange(n.viewId,e));return{}},e[2]=t,e[3]=t1);let r=L(t1),i;return e[4]!==n||e[5]!==r?(i=Rr.provide({actors:{applyLatest:(0,R.fromPromise)(n),executeChange:(0,R.fromPromise)(r)}}),e[4]=n,e[5]=r,e[6]=i):i=e[6],i}function makeDiagramApi(e){return{ref:e,get actor(){return e.current},overlays(){return J(e.current.getSnapshot().children.overlays,`Overlays actor not found`)},send:t=>e.current.send(t),navigateTo:(t,n,r)=>{e.current.send({type:`navigate.to`,viewId:t,...n&&{fromNode:n},...r&&{focusOnElement:r}})},navigate:t=>{e.current.send({type:`navigate.${t}`})},fitDiagram:(t=350)=>{e.current.send({type:`xyflow.fitDiagram`,duration:t})},openRelationshipsBrowser:t=>{e.current.send({type:`open.relationshipsBrowser`,fqn:t})},openSource:t=>{e.current.send({type:`open.source`,...t})},openElementDetails:(t,n)=>{e.current.send({type:`open.elementDetails`,fqn:t,fromNode:n})},openRelationshipDetails:(...t)=>{t.length===1?e.current.send({type:`open.relationshipDetails`,params:{edgeId:t[0]}}):e.current.send({type:`open.relationshipDetails`,params:{source:t[0],target:t[1]}})},updateNodeData:(t,n)=>{e.current.send({type:`update.nodeData`,nodeId:t,data:n})},updateEdgeData:(t,n)=>{e.current.send({type:`update.edgeData`,edgeId:t,data:n})},startEditing:t=>{let n=typedSystem(e.current.system).editorActorRef;q(n,`No editor actor found in diagram actor system`),n.send({type:`edit.start`,subject:t})},stopEditing:(t=!1)=>{let n=typedSystem(e.current.system).editorActorRef;q(n,`No editor actor found in diagram actor system`),n.send({type:`edit.finish`,wasChanged:t})},undoEditing:()=>{let t=typedSystem(e.current.system).editorActorRef;q(t,`No editor actor found in diagram actor system`);let n=t.getSnapshot().context.history.length>0;return n&&t.send({type:`undo`}),n},align:t=>{e.current.send({type:`layout.align`,mode:t})},resetEdgeControlPoints:()=>{e.current.send({type:`layout.resetEdgeControlPoints`})},focusNode:t=>{e.current.send({type:`focus.node`,nodeId:t})},focusOnElement:t=>{let n=e.current.getSnapshot().context,r=findNodeByModelFqn(n.xynodes,t);r&&e.current.send({type:`focus.node`,nodeId:r.id,autoUnfocus:!0})},get currentView(){return e.current.getSnapshot().context.view},getContext:()=>e.current.getSnapshot().context,findDiagramNode:t=>findDiagramNode(e.current.getSnapshot().context,t),findEdge:t=>e.current.getSnapshot().context.xyedges.find(e=>e.data.id===t)??null,findDiagramEdge:t=>findDiagramEdge(e.current.getSnapshot().context,t),startWalkthrough:()=>{e.current.send({type:`walkthrough.start`})},walkthroughStep:(t=`next`)=>{e.current.send({type:`walkthrough.step`,direction:t})},stopWalkthrough:()=>{e.current.send({type:`walkthrough.end`})},toggleFeature:(t,n)=>{e.current.send({type:`toggle.feature`,feature:t,...n!==void 0&&{forceValue:n}})},highlightNotation:(t,n)=>{e.current.send({type:`notations.highlight`,notation:t,...n&&{kind:n}})},unhighlightNotation:()=>{e.current.send({type:`notations.unhighlight`})},openSearch:t=>{e.current.send({type:`open.search`,...t&&{search:t}})},triggerChange:t=>{e.current.send({type:`trigger.change`,change:t})},switchDynamicViewVariant:t=>{e.current.send({type:`switch.dynamicViewVariant`,variant:t})},highlightNode:t=>{e.current.send({type:`highlight.node`,nodeId:t})},highlightEdge:t=>{e.current.send({type:`highlight.edge`,edgeId:t})},unhighlightAll:()=>{e.current.send({type:`unhighlight.all`})},centerViewportOnNode:t=>{e.current.send({type:`xyflow.centerViewport`,nodeId:t})},centerViewportOnEdge:t=>{e.current.send({type:`xyflow.centerViewport`,edgeId:t})}}}z();function mergeXYNodesEdges(e,t){let n=t.view,r=e.view.id===n.id;return n._type===`dynamic`&&n.variant===`sequence`?{xynodes:t.xynodes,xyedges:t.xyedges,view:n}:{xynodes:updateNodes(e.xynodes,t.xynodes),xyedges:r?updateEdges(e.xyedges,t.xyedges):t.xyedges,view:n}}function focusNodesEdges(e){let{xynodes:t,xyedges:n,focusedNode:r}=e;if(!r)return null;let i=new Set([r]),a=n.map(e=>e.source===r||e.target===r?(i.add(e.source),i.add(e.target),F.setData(e,{dimmed:!1,active:!0})):F.setData(e,{dimmed:!0,active:!1}));return{xynodes:t.map(e=>F.setDimmed(e,!i.has(e.id))),xyedges:a}}function updateNodeData({context:e,event:t}){return(0,R.assertEvent)(t,`update.nodeData`),{xynodes:e.xynodes.map(e=>{if(e.id!==t.nodeId)return e;let n=D(e.data,t.data);return P(n,e.data)?e:{...e,data:n}})}}function updateEdgeData({context:e,event:t}){return(0,R.assertEvent)(t,`update.edgeData`),{xyedges:e.xyedges.map(e=>{if(e.id!==t.edgeId)return e;let n=D(e.data,t.data);return P(n,e.data)?e:{...e,data:n}})}}function getBorderPointOnVector(e,t,n){let r=St(e),i=r.width/2/n.x,a=r.height/2/n.y,o=Math.min(Math.abs(i),Math.abs(a));return K(n).multiply(o).add(t)}function resetEdgeControlPoints(e,t){let n=G(e.get(t.source),`Source node ${t.source} not found`),r=G(e.get(t.target),`Target node ${t.target} not found`),i=K(At(n)),a=K(At(r));if(n===r){let e=K(0,n.height||0).multiply(-.5).add(i);return[e.add(K(-80/2.5,-80)).round().toObject(),e.add(K(80/2.5,-80)).round().toObject()]}let o=a.subtract(i),s=getBorderPointOnVector(n,i,o),c=getBorderPointOnVector(r,a,o.multiply(-1)).subtract(s);return[s.add(c.multiply(.4)).round().toObject(),s.add(c.multiply(.6)).round().toObject()]}function diagramToXY(e){let{view:t}=e,n=[],r=[],i=new Map,a=t.autoLayout?.direction??`TB`,o=Nn.from(t.nodes.reduce((e,t)=>(i.set(t.id,t),t.parent||e.push({node:t,parent:null}),e),[])),visiblePredicate=e=>!0;if(e.where)try{let t=Hn(e.where);visiblePredicate=e=>t({...T(e,[`tags`,`kind`]),...`source`in e?{source:nodeById(e.source)}:e,...`target`in e?{target:nodeById(e.target)}:e})}catch(e){console.error(`Error in where filter:`,e)}let nodeById=e=>G(i.get(e),`Node not found: ${e}`),s;for(;s=o.dequeue();){let{node:e,parent:r}=s,i=A(e.children,1)||e.kind==Mn;if(i)for(let t of e.children)o.enqueue({node:nodeById(t),parent:e});let c={x:e.x,y:e.y};r&&(c.x-=r.x,c.y-=r.y);let l={id:``+e.id,deletable:!1,position:c,zIndex:i?Nt.Compound:Nt.Element,style:{width:e.width,height:e.height},initialWidth:e.width,initialHeight:e.height,hidden:e.kind!==Mn&&!visiblePredicate(e),...r&&{parentId:``+r.id}},u={viewId:t.id,id:e.id,title:e.title,color:e.color,shape:e.shape,style:e.style,depth:e.depth??0,icon:e.icon??`none`,tags:e.tags??null,x:e.x,y:e.y,drifts:e.drifts??null,notes:e.notes,viewLayoutDir:a},d={viewId:t.id,id:e.id,title:e.title,technology:e.technology??null,description:e.description??null,height:e.height,width:e.width,level:e.level,color:e.color,shape:e.shape,style:e.style,icon:e.icon??null,tags:e.tags,notes:e.notes,x:e.x,y:e.y,isMultiple:e.style?.multiple??!1,drifts:e.drifts??null,viewLayoutDir:a};if(e.kind===Mn){n.push({...l,type:`view-group`,data:{isViewGroup:!0,...u}});continue}let f=e.modelRef??null,p=e.deploymentRef??null;if(!f&&!p)throw console.error(`Invalid node`,e),Error(`Element should have either modelRef or deploymentRef`);let m={navigateTo:e.navigateTo??null};switch(!0){case i&&!!p:n.push({...l,type:`compound-deployment`,data:{...u,...m,deploymentFqn:p,modelFqn:f}});break;case i:W(!!f,`ModelRef expected`),n.push({...l,type:`compound-element`,data:{...u,...m,modelFqn:f}});break;case!!p:n.push({...l,type:`deployment`,data:{...d,...m,deploymentFqn:p,modelFqn:f}});break;default:W(!!f,`ModelRef expected`),n.push({...l,type:`element`,data:{...d,...m,modelFqn:f}})}}for(let e of t.edges){let t=e.source,n=e.target,i=``+e.id;if(!A(e.points,2)){console.error(`edge should have at least 2 points`,e);continue}r.push({id:i,type:`relationship`,source:``+t,target:``+n,zIndex:Nt.Edge,hidden:!visiblePredicate(e),deletable:!1,data:{id:e.id,label:e.label,technology:e.technology,notes:e.notes??null,navigateTo:e.navigateTo,controlPoints:e.controlPoints??null,labelBBox:e.labelBBox??null,labelXY:null,points:e.points,color:e.color??`gray`,line:e.line??`dashed`,dir:e.dir??`forward`,head:e.head??`normal`,tail:e.tail??`none`,astPath:e.astPath,drifts:e.drifts??null},interactionWidth:20})}return{xynodes:n,xyedges:r}}const Ni={compound:0,parallel:1,actor:10,step:20},Pi={default:`gray`,active:`amber`};function sequenceLayoutToXY(e,t){let{actors:n,steps:r,compounds:i,parallelAreas:a,bounds:o}=e.sequenceLayout,s=[],c=[],getNode=t=>G(e.nodes.find(e=>e.id===t));for(let t of i)s.push(toCompoundArea(t,getNode(t.origin),e));for(let t of a)s.push(toSeqParallelArea(t,e));for(let t of n)s.push(toSeqActorNode(t,getNode(t.id),o,e));for(let n of r){let r=e.edges.find(e=>e.id===n.id);if(!r)throw Error(`Edge ${n.id} not found`);c.push(toSeqStepEdge(n,r,t??e.id))}return{xynodes:s,xyedges:c}}function toCompoundArea({id:e,x:t,y:n,width:r,height:i,depth:a},o,s){return{id:e,type:`view-group`,data:{id:o.id,title:o.title,color:o.color??`gray`,shape:o.shape,style:o.style,tags:o.tags,x:t,y:n,viewId:s.id,depth:a,isViewGroup:!0,drifts:o.drifts??null,viewLayoutDir:`LR`,notes:void 0},position:{x:t,y:n},draggable:!1,selectable:!1,focusable:!1,style:{pointerEvents:`none`},width:r,initialWidth:r,height:i,initialHeight:i}}function toSeqParallelArea({parallelPrefix:e,x:t,y:n,width:r,height:i},a){return{id:`seq-parallel-${e}`,type:`seq-parallel`,data:{id:`seq-parallel-${e}`,title:`PARALLEL`,technology:null,color:Pi.default,shape:`rectangle`,style:{},tags:[],x:t,y:n,level:0,icon:null,width:r,height:i,description:null,viewId:a.id,parallelPrefix:e,drifts:null,viewLayoutDir:`LR`,notes:void 0},zIndex:Ni.parallel,position:{x:t,y:n},draggable:!1,deletable:!1,selectable:!1,focusable:!1,style:{pointerEvents:`none`},width:r,initialWidth:r,height:i,initialHeight:i}}function toSeqActorNode({id:e,x:t,y:n,width:r,height:i,ports:a},o,s,c){return{id:e,type:`seq-actor`,data:{id:o.id,x:t,y:n,level:0,icon:o.icon??null,isMultiple:o.style.multiple??!1,title:o.title,width:r,height:i,color:o.color,navigateTo:o.navigateTo??null,shape:o.shape,style:o.style,tags:o.tags,modelFqn:o.modelRef??null,technology:o.technology??null,description:o.description??null,viewHeight:s.height,viewId:c.id,notes:o.notes,ports:a,drifts:o.drifts??null,viewLayoutDir:`LR`},deletable:!1,selectable:!0,zIndex:Ni.actor,position:{x:t,y:n},width:r,initialWidth:r,height:i,initialHeight:i}}function toSeqStepEdge({id:e,labelBBox:t,sourceHandle:n,targetHandle:r},i,a){return{id:e,type:`seq-step`,data:{id:e,label:i.label,technology:i.technology,notes:i.notes??null,navigateTo:i.navigateTo===a?null:i.navigateTo,controlPoints:null,labelBBox:{x:0,y:0,width:t?.width??i.labelBBox?.width??32,height:t?.height??i.labelBBox?.height??32},labelXY:null,points:i.points,color:i.color,line:i.line,dir:`forward`,head:i.head??`normal`,tail:i.tail??`none`,astPath:i.astPath,drifts:i.drifts??null},selectable:!0,focusable:!1,zIndex:20,interactionWidth:40,source:i.source,sourceHandle:n,target:i.target,targetHandle:r}}function convertToXYFlow({dynamicViewVariant:e,...t}){let n=t.view,r=n._type===`dynamic`,{xynodes:i,xyedges:a}=r&&e===`sequence`?sequenceLayoutToXY(n,t.currentViewId):diagramToXY({...t});return r&&n.variant!==e?{view:{...n,variant:e},xynodes:i,xyedges:a}:{view:n,xynodes:i,xyedges:a}}var Aligner=class{},LinearAligner=class extends Aligner{alignTo;constructor(e,t,n){super(),this.getEdgePosition=e,this.computePosition=t,this.propertyToEdit=n}computeLayout(e){this.alignTo=this.getEdgePosition(e)}applyPosition(e){return{[this.propertyToEdit]:this.computePosition(this.alignTo,e)}}},GridAligner=class extends Aligner{layout=new Map;axisPreset;get primaryAxisCoord(){return this.axisPreset.primaryAxisCoord}get secondaryAxisCoord(){return this.axisPreset.secondaryAxisCoord}get primaryAxisDimension(){return this.axisPreset.primaryAxisDimension}get secondaryAxisDimension(){return this.axisPreset.secondaryAxisDimension}constructor(e){super(),this.axisPreset=e===`Column`?{primaryAxisDimension:`width`,secondaryAxisDimension:`height`,primaryAxisCoord:`x`,secondaryAxisCoord:`y`}:{primaryAxisDimension:`height`,secondaryAxisDimension:`width`,primaryAxisCoord:`y`,secondaryAxisCoord:`x`}}applyPosition(e){return this.layout?.get(e.id)??{}}computeLayout(e){let t=y(e,re(e=>e[this.primaryAxisCoord])),n=this.getLayoutRect(t),r=this.getLayers(t);this.layout=this.buildLayout(r,n,t)}getLayoutRect(e){let t=Math.min(...e.map(e=>e.x)),n=Math.min(...e.map(e=>e.y)),r=Math.max(...e.map(e=>e.x+e.width)),i=Math.max(...e.map(e=>e.y+e.height));return{x:t,y:n,width:r-t,height:i-n}}getLayers(e){let t=[],n=0,r=null;for(let i of e)if(r&&i[this.primaryAxisCoord]<n)r.nodes.push(i),r.primaryAxisSize=Math.max(r.primaryAxisSize,i[this.primaryAxisDimension]),r.occupiedSpace+=i[this.secondaryAxisDimension],n=Math.max(i[this.primaryAxisCoord]+i[this.primaryAxisDimension],n);else{r={primaryAxisSize:i[this.primaryAxisDimension],nodes:[i],occupiedSpace:i[this.secondaryAxisDimension],layout:null},t.push(r),n=i[this.primaryAxisCoord]+i[this.primaryAxisDimension];continue}return t.forEach(e=>e.nodes.sort((e,t)=>e[this.secondaryAxisCoord]-t[this.secondaryAxisCoord])),t}buildLayout(e,t,n){let r=new Map(n.map(e=>[e.id,e])),i=[],a=e.reduce((e,t)=>e+t.primaryAxisSize,0),o=e.length>1?(t[this.primaryAxisDimension]-a)/(e.length-1):0,s=e.reduce((t,n,r)=>e[t].occupiedSpace<n.occupiedSpace?r:t,0),c=e[s],l=e.slice(0,s).reduce((e,t)=>e+t.primaryAxisSize+o,t[this.primaryAxisCoord]),u=this.buildLayerLayout(c,t,l,r,null);c.layout=u,i.push(...u.nodePositions);let d=l+c.primaryAxisSize+o,f=c;for(let n=s+1;n<e.length;n++){let a=e[n];a.layout=this.buildLayerLayout(a,t,d,r,f),i.push(...a.layout.nodePositions),f=a.layout.refLayer??a,d+=a.primaryAxisSize+o}d=l,f=c;for(let n=s-1;n>=0;n--){let a=e[n];d-=a.primaryAxisSize+o,a.layout=this.buildLayerLayout(a,t,d,r,f),i.push(...a.layout.nodePositions),f=a.layout.refLayer??a}return new Map(i)}buildLayerLayout(e,t,n,r,i){let a=this.scoreLayout(this.spaceAround(e,t,n),r);if(e.nodes.length!=1){let i=this.scoreLayout(this.spaceBetween(e,t,n),r);a=i[0]<a[0]?i:a}if(i&&i.nodes.length-1>=e.nodes.length){let t=this.scoreLayout(this.placeInGaps(e,n,i),r);a=t[0]<a[0]?t:a}if(i&&i.nodes.length>=e.nodes.length){let t=this.scoreLayout(this.placeInCells(e,n,i),r);a=t[0]<a[0]?t:a}return a[1]}spaceBetween(e,t,n){let r=(t[this.secondaryAxisDimension]-e.occupiedSpace)/(e.nodes.length-1),i=t[this.secondaryAxisCoord],a=new Map;for(let t of e.nodes)a.set(t.id,{[this.secondaryAxisCoord]:i,[this.primaryAxisCoord]:n}),i+=t[this.secondaryAxisDimension]+r;return{nodePositions:a,refLayer:null}}spaceAround(e,t,n){let r=(t[this.secondaryAxisDimension]-e.occupiedSpace)/(e.nodes.length+1),i=t[this.secondaryAxisCoord]+r,a=new Map;for(let t of re(e.nodes,e=>e[this.secondaryAxisCoord]))a.set(t.id,{[this.secondaryAxisCoord]:i,[this.primaryAxisCoord]:n}),i+=t[this.secondaryAxisDimension]+r;return{nodePositions:a,refLayer:null}}placeInGaps(e,t,n){let r=new Map,i=e.nodes,a=this.getGapsPositions(n),o=0;for(let e=0,n=i[e];e<i.length;e++,n=i[e]){let s=n[this.secondaryAxisCoord]+n[this.secondaryAxisDimension]/2,c=1/0;for(;o-e<=a.length-i.length;){let e=a[o]-s;if(Math.abs(e)<Math.abs(c))c=e,o++;else break}r.set(n.id,{[this.secondaryAxisCoord]:n[this.secondaryAxisCoord]+c,[this.primaryAxisCoord]:t})}return{nodePositions:r,refLayer:n}}placeInCells(e,t,n){let r=new Map,i=e.nodes,a=this.getNodePositions(n),o=0;for(let e=0,n=i[e];e<i.length;e++,n=i[e]){let s=n[this.secondaryAxisCoord]+n[this.secondaryAxisDimension]/2,c=1/0;for(;o-e<=a.length-i.length;){let e=a[o]-s;if(Math.abs(e)<Math.abs(c))c=e,o++;else break}r.set(n.id,{[this.secondaryAxisCoord]:n[this.secondaryAxisCoord]+c,[this.primaryAxisCoord]:t})}return{nodePositions:r,refLayer:n}}scoreLayout(e,t){return[y(Array.from(e.nodePositions),j(([e,n])=>{let r=t.get(e);return W(r,`Could not find original rect for node ${e}`),[T(r,[`x`,`y`]),n]}),j(([e,t])=>Math.abs(e[this.secondaryAxisCoord]-t[this.secondaryAxisCoord])),te((e,t)=>e+t,0)),e]}getGapsPositions(e){let t=[],{layout:n,nodes:r}=e;W(n,`Layout of the layer must be computed before calling getGapsPositions`);for(let e=1;e<r.length;e++){let i=r[e-1],a=r[e],o=n.nodePositions.get(i.id),s=n.nodePositions.get(a.id);t.push((s[this.secondaryAxisCoord]+o[this.secondaryAxisCoord]+i[this.secondaryAxisDimension])/2)}return t}getNodePositions(e){let t=[],{layout:n,nodes:r}=e;W(n,`Layout of the layer must be computed before calling getGapsPositions`);for(let e=0;e<r.length;e++){let i=r[e],a=n.nodePositions.get(i.id);t.push(a[this.secondaryAxisCoord]+i[this.secondaryAxisDimension]/2)}return t}};function getLinearAligner(e){switch(e){case`Left`:return new LinearAligner(e=>Math.min(...e.map(e=>e.x)),(e,t)=>Math.floor(e),`x`);case`Top`:return new LinearAligner(e=>Math.min(...e.map(e=>e.y)),(e,t)=>Math.floor(e),`y`);case`Right`:return new LinearAligner(e=>Math.max(...e.map(e=>e.x+e.width)),(e,t)=>Math.floor(e-t.width),`x`);case`Bottom`:return new LinearAligner(e=>Math.max(...e.map(e=>e.y+e.height)),(e,t)=>Math.floor(e-t.height),`y`);case`Center`:return new LinearAligner(e=>Math.min(...e.map(e=>e.x+e.width/2)),(e,t)=>Math.floor(e-t.width/2),`x`);case`Middle`:return new LinearAligner(e=>Math.min(...e.map(e=>e.y+e.height/2)),(e,t)=>Math.floor(e-t.height/2),`y`)}}function toNodeRect(e){let{width:t,height:n}=St(e);return{...e.internals.positionAbsolute,id:e.id,width:t,height:n}}function getAligner(e){switch(e){case`Left`:case`Right`:case`Top`:case`Bottom`:case`Center`:case`Middle`:return getLinearAligner(e);case`Column`:case`Row`:return new GridAligner(e);default:Vn(e)}}z();const setViewport=e=>$.createAction(({context:t,event:n})=>{let r,i;e?(r=e.viewport,i=e.duration):((0,R.assertEvent)(n,`xyflow.setViewport`),r=n.viewport,i=n.duration),i??=450;let{panZoom:a}=G(t.xystore).getState(),o=i>0?{duration:i,interpolate:`smooth`}:void 0;a?.setViewport({x:Math.round(r.x),y:Math.round(r.y),zoom:r.zoom},o).catch(e=>{console.error(`Error during setViewport`,{err:e})})}),setViewportCenter=e=>$.createAction(({context:t,event:n})=>{let r;r=e||(n.type===`update.view`?An.center(viewBounds(t,n.view)):An.center(viewBounds(t))),W(t.xyflow,`xyflow is not initialized`);let i=t.xyflow.getZoom();t.xyflow.setCenter(Math.round(r.x),Math.round(r.y),{zoom:i}).catch(e=>{console.error(`Error during setViewportCenter`,{err:e})})}),centerOnNodeOrEdge=()=>$.raise(({context:e,event:t})=>{(0,R.assertEvent)(t,`xyflow.centerViewport`);let n=e.xystore.getState();if(`edgeId`in t){let e=n.edgeLookup.get(t.edgeId);if(!e)return{type:`noop`};let r=n.nodeLookup.get(e.source),i=n.nodeLookup.get(e.target);if(!r||!i)return{type:`noop`};let a=wt([r,i],n),o=Wt({points:e.data.points,controlPoints:e.data.controlPoints&&Rn(e.data.controlPoints)?e.data.controlPoints:null,labelBBox:e.data.labelBBox??null});return{type:`xyflow.fitDiagram`,bounds:An.merge(a,o)}}let r=n.nodeLookup.get(t.nodeId);return r?{type:`xyflow.fitDiagram`,bounds:wt([r],n)}:{type:`noop`}}),fitDiagram=e=>$.createAction(({context:t,event:n})=>{let r,i;e?(r=e.bounds,i=e.duration):n.type===`xyflow.fitDiagram`&&(r=n.bounds,i=n.duration),r??=viewBounds(t),i??=450;let{width:a,height:o,panZoom:s,transform:c}=G(t.xystore).getState(),l=Math.max(1,c[2]),u=Ct(r,a,o,qt,l,t.fitViewPadding);u.x=Math.round(u.x),u.y=Math.round(u.y);let d=i>0?{duration:i,interpolate:`smooth`}:void 0;s?.setViewport(u,d).catch(e=>{console.error(`Error during fitDiagram panZoom setViewport`,{err:e})})}),fitFocusedBounds=()=>$.createAction(({context:e})=>{let{bounds:t,duration:n=450}=e.activeWalkthrough&&e.dynamicViewVariant===`sequence`?activeSequenceBounds({context:e}):focusedBounds({context:e}),{width:r,height:i,panZoom:a,transform:o}=G(e.xystore).getState(),s=Ct(t,r,i,qt,Math.max(1,o[2]),e.fitViewPadding);s.x=Math.round(s.x),s.y=Math.round(s.y);let c=n>0?{duration:n,interpolate:`smooth`}:void 0;a?.setViewport(s,c).catch(e=>{console.error(`Error during fitFocusedBounds panZoom setViewport`,{err:e})})}),raiseSetViewport=e=>{let{delay:t=30,...n}=e??{};return $.raise({type:`xyflow.setViewport`,...n},{id:`fitDiagram`,delay:t})},cancelFitDiagram=()=>$.cancel(`fitDiagram`),raiseFitDiagram=e=>{let{delay:t=30,...n}=e??{};return $.raise({type:`xyflow.fitDiagram`,...n},{id:`fitDiagram`,delay:t})},raiseUpdateView=e=>$.raise(({context:t})=>({type:`update.view`,view:e??t.view}),{delay:30}),assignViewportBefore=e=>$.assign(({context:t})=>e===!1?{viewportBefore:null}:{viewportBefore:{wasChangedManually:t.viewportChangedManually,value:e??{...t.viewport}}}),returnViewportBefore=e=>$.enqueueActions(({enqueue:t,context:{viewportBefore:n}})=>{t(cancelFitDiagram());let r=e?.delay===0;n?(t.assign({viewportChangedManually:n.wasChangedManually,viewportBefore:null}),t(r?setViewport({viewport:n.value,...e}):raiseSetViewport({viewport:n.value,...e}))):t(r?fitDiagram({...e}):raiseFitDiagram({...e}))});z();const disableCompareWithLatest=()=>$.assign(({context:e})=>({toggledFeatures:{...e.toggledFeatures,enableCompareWithLatest:!1},viewportOnAutoLayout:null,viewportOnManualLayout:null})),onEdgeDoubleClick=()=>$.assign(({context:e,event:t})=>{if((0,R.assertEvent)(t,`xyflow.edgeDoubleClick`),!t.edge.data.controlPoints)return{};let{nodeLookup:n}=e.xystore.getState();return{xyedges:e.xyedges.map(e=>{if(e.id!==t.edge.id)return e;let r=resetEdgeControlPoints(n,e),i=r[0];return{...e,data:{...e.data,controlPoints:r,labelBBox:e.data.labelBBox?{...e.data.labelBBox,...i}:null,labelXY:null}}})}}),assignLastClickedNode=()=>$.assign(({context:e,event:t})=>{(0,R.assertEvent)(t,`xyflow.nodeClick`);let{lastClickedNode:n}=e;return!n||n.id!==t.node.id?{lastClickedNode:{id:t.node.id,clicks:1,timestamp:Date.now()}}:{lastClickedNode:{id:n.id,clicks:n.clicks+1,timestamp:Date.now()}}}),assignFocusedNode=()=>$.assign(({event:e})=>{let t,n=!1;switch(e.type){case`xyflow.nodeClick`:t=e.node.data.id;break;case`focus.node`:t=e.nodeId,n=e.autoUnfocus===!0;break;default:throw Error(`Unexpected event type: ${e.type} in action 'assign: focusedNode'`)}return{focusedNode:t,autoUnfocusTimer:n}}),resetLastClickedNode=()=>$.assign(()=>({lastClickedNode:null})),updateFeatures=()=>$.assign(({context:e,event:t})=>((0,R.assertEvent)(t,`update.features`),{features:{...e.features,...t.features}})),updateInputs=()=>$.assign(({event:e})=>((0,R.assertEvent)(e,`update.inputs`),Fn({...e.inputs}))),assignXYDataFromView=e=>$.assign(({context:t,event:n})=>{let r;e?r=convertToXYFlow({currentViewId:t.view.id,dynamicViewVariant:t.dynamicViewVariant,view:e,where:t.where}):((0,R.assertEvent)(n,`update.view`),r=`xynodes`in n?n:convertToXYFlow({currentViewId:t.view.id,dynamicViewVariant:t.dynamicViewVariant,view:n.view,where:t.where}));let i=mergeXYNodesEdges(t,r),{lastClickedNode:a,focusedNode:o,activeWalkthrough:s}=t;if(a||o||s){let e=new Set(i.xynodes.map(e=>e.id));a&&!e.has(a.id)&&(a=null),o&&!e.has(o)&&(o=null);let t=s?.stepId;return t&&!i.xyedges.some(e=>e.id===t)&&(s=null),{...i,lastClickedNode:a,focusedNode:o,activeWalkthrough:s}}return i}),focusOnNodesAndEdges=()=>$.enqueueActions(({context:e,enqueue:t})=>{let n=focusNodesEdges(e);n?t.assign(n):t.raise({type:`key.esc`})}),undimEverything=()=>$.assign(({context:e})=>({xynodes:e.xynodes.map(F.setDimmed(!1)),xyedges:e.xyedges.map(F.setData({dimmed:!1,active:!1}))})),assignDynamicViewVariant=()=>$.assign(({event:e})=>((0,R.assertEvent)(e,`switch.dynamicViewVariant`),{dynamicViewVariant:e.variant})),onNodeMouseEnter=e=>$.assign(({context:t,event:n})=>{let r=e?.node;return r||=((0,R.assertEvent)(n,`xyflow.nodeMouseEnter`),n.node),{xynodes:t.xynodes.map(e=>e.id===r.id?F.setHovered(e,!0):e)}}),onNodeMouseLeave=e=>$.assign(({context:t,event:n})=>{let r=e?.node;return r||=((0,R.assertEvent)(n,`xyflow.nodeMouseLeave`),n.node),{xynodes:t.xynodes.map(e=>e.id===r.id?F.setHovered(e,!1):e)}}),emitPaneClick=()=>$.emit(()=>({type:`paneClick`})),emitOpenSource=e=>$.emit(({event:t})=>e?{type:`openSource`,params:e}:((0,R.assertEvent)(t,`open.source`),{type:`openSource`,params:t})),emitOpenSourceOfView=()=>$.emit(({context:e})=>({type:`openSource`,params:{view:e.view.id}})),emitInitialized=()=>$.emit(({context:e})=>(W(e.xyflow,`XYFlow instance not found`),{type:`initialized`,instance:e.xyflow})),emitNodeClick=()=>$.emit(({context:e,event:t})=>((0,R.assertEvent)(t,`xyflow.nodeClick`),{type:`nodeClick`,node:G(findDiagramNode(e,t.node.id),`Node ${t.node.id} not found in diagram`),xynode:t.node})),emitNavigateTo=e=>$.emit(({context:t})=>({type:`navigateTo`,viewId:e?.viewId??G(t.lastOnNavigate,`Invalid state, lastOnNavigate is null`).toView})),emitEdgeClick=()=>$.emit(({context:e,event:t})=>((0,R.assertEvent)(t,`xyflow.edgeClick`),{type:`edgeClick`,edge:G(findDiagramEdge(e,t.edge.id),`Edge ${t.edge.id} not found in diagram`),xyedge:t.edge})),triggerChange=e=>$.enqueueActions(({event:t,enqueue:n})=>{let r=e;r||=((0,R.assertEvent)(t,`trigger.change`),t.change),n.assign({viewportChangedManually:!0}),n.sendTo(typedSystem.editorActor,{type:`change`,change:r})}),emitOnLayoutTypeChange=()=>$.enqueueActions(({event:e,system:t,context:n,enqueue:r})=>{if(!n.features.enableCompareWithLatest){console.warn(`Layout type cannot be changed while CompareWithLatest feature is disabled`);return}let i=n.view._layout,a=i===`auto`?`manual`:`auto`;if(e.type===`emit.onLayoutTypeChange`&&(a=e.layoutType),i===a){console.warn(`Ignoring layout type change event, layout type is already`,i);return}if(n.toggledFeatures.enableCompareWithLatest===!0){i===`manual`&&a===`auto`&&typedSystem(t).editorActorRef?.send({type:`cancel`});let e=n.viewport;i===`auto`&&r.assign({viewportOnAutoLayout:e}),i===`manual`&&r.assign({viewportOnManualLayout:e})}r.emit({type:`onLayoutTypeChange`,layoutType:a})}),layoutAlign=e=>$.createAction(({context:t,event:n})=>{let r;e?r=e.mode:((0,R.assertEvent)(n,`layout.align`),r=n.mode);let i=G(t.xystore,`xystore is not initialized`),{nodeLookup:a,parentLookup:o}=i.getState(),s=[...qn(new Set(a.values().filter(e=>e.selected).map(e=>e.id)),new Set(o.keys()))];if(!A(s,2)){console.warn(`At least 2 nodes must be selected to align`);return}let c=createLayoutConstraints(i,s),l=getAligner(r),u=s.map(e=>({node:G(a.get(e)),rect:G(c.rects.get(e))}));l.computeLayout(u.map(({node:e})=>toNodeRect(e)));for(let{rect:e,node:t}of u)e.positionAbsolute={...e.positionAbsolute,...l.applyPosition(toNodeRect(t))};c.updateXYFlow()}),resetEdgesControlPoints=()=>$.assign(({context:e})=>{let{nodeLookup:t}=e.xystore.getState();return{xyedges:e.xyedges.map(e=>{if(!e.data.controlPoints)return e;let n=resetEdgeControlPoints(t,e),r=n[0];return{...e,data:{...e.data,controlPoints:n,labelBBox:e.data.labelBBox?{...e.data.labelBBox,x:r.x,y:r.y}:null,labelXY:e.data.labelXY?r:null}}})}}),notationsHighlight=()=>$.assign(({context:e,event:t})=>{(0,R.assertEvent)(t,`notations.highlight`);let{notation:n,kind:r}=t,i=r?[r]:n.kinds,shouldHighlight=e=>e.notation===n.title&&e.shape===n.shape&&e.color===n.color&&i.includes(e.kind);return{xynodes:e.xynodes.map(t=>{let n=findDiagramNode(e,t.id),r=n&&shouldHighlight(n);return F.setDimmed(t,r?!1:`immediate`)}),xyedges:e.xyedges.map(e=>F.setDimmed(e,!0))}}),tagHighlight=()=>$.assign(({context:e,event:t})=>((0,R.assertEvent)(t,`tag.highlight`),{xynodes:e.xynodes.map(e=>e.data.tags?.includes(t.tag)?F.setDimmed(e,!1):F.setDimmed(e,!0))})),highlightNodeOrEdge=()=>$.assign(({context:e,event:t})=>{switch((0,R.assertEvent)(t,[`highlight.edge`,`highlight.node`]),t.type){case`highlight.node`:{let n=t.nodeId;return e.xynodes.find(e=>e.id===n)?{xynodes:e.xynodes.map(e=>F.setDimmed(e,e.id!==n)),xyedges:e.xyedges.map(F.setData({dimmed:!0,active:!1}))}:(console.warn(`Node with id ${n} not found for highlighting`),{})}case`highlight.edge`:{let n=t.edgeId,r=e.xyedges.find(e=>e.id===n);return r?{xynodes:e.xynodes.map(e=>F.setDimmed(e,r.source!==e.id&&r.target!==e.id)),xyedges:e.xyedges.map(e=>F.setData(e,{dimmed:e.id!==n,active:e.id===n}))}:(console.warn(`Edge with id ${n} not found for highlighting`),{})}default:Vn(t)}}),assignToggledFeatures=()=>$.assign(({context:e,event:t})=>{(0,R.assertEvent)(t,`toggle.feature`);let n=`enable${t.feature}`,r=e.toggledFeatures[n]??e.features[n],i=t.forceValue??!r;return{toggledFeatures:{...e.toggledFeatures,[n]:i}}}),closeSearch=()=>$.sendTo(typedSystem.searchActor,{type:`close`}),closeAllOverlays=()=>$.sendTo(typedSystem.overlaysActor,{type:`close.all`}),stopEditorActor=()=>$.enqueueActions(({enqueue:e,system:t})=>{let n=typedSystem(t).editorActorRef;n&&e.stopChild(n)}),ensureEditorActor=()=>$.enqueueActions(({enqueue:e,context:t,system:n,check:r})=>{let i=r(`enabled: Editor`),a=typedSystem(n).editorActorRef;if(!i&&a){e.stopChild(a);return}i&&!a&&e.spawnChild(`editorActor`,{id:`editor`,systemId:`editor`,input:{viewId:t.view.id},syncSnapshot:!0})}),startEditing=(e=`node`)=>$.sendTo(typedSystem.editorActor,{type:`edit.start`,subject:e}),sendSynced=()=>$.sendTo(typedSystem.editorActor,{type:`synced`}),stopEditing=(e=!1)=>$.sendTo(typedSystem.editorActor,{type:`edit.finish`,wasChanged:e}),cancelEditing=()=>$.sendTo(typedSystem.editorActor,{type:`cancel`}),hasModelFqn=e=>`modelFqn`in e.data&&m(e.data.modelFqn),openElementDetails=e=>$.enqueueActions(({context:t,event:n,enqueue:r})=>{let i=null,a,o;switch(!0){case!!e:o=e.fqn,a=e.fromNode??t.view.nodes.find(t=>t.modelRef===e.fqn)?.id;break;case n.type===`xyflow.nodeClick`:if(!hasModelFqn(n.node)){console.warn(`No modelFqn in clicked node data`);return}o=n.node.data.modelFqn,a=n.node.data.id;break;case n.type===`open.elementDetails`:o=n.fqn,a=n.fromNode;break;default:{if(!t.lastClickedNode){console.warn(`No last clicked node`);return}a=t.lastClickedNode.id;let e=t.xynodes.find(e=>e.id===a);if(!e||!hasModelFqn(e)){console.warn(`No modelFqn in last clicked node`);return}o=e.data.modelFqn;break}}let s=a?t.xystore.getState().nodeLookup.get(a):null;if(a&&s){let e=ut(s),n=t.xyflow.getZoom(),r={...t.xyflow.flowToScreenPosition(e),width:e.width*n,height:e.height*n};i={node:a,clientRect:r}}r.sendTo(typedSystem.overlaysActor,{type:`open.elementDetails`,subject:o,currentView:t.view,...i&&{initiatedFrom:i}})}),openOverlay=()=>$.enqueueActions(({context:e,event:t,enqueue:n,check:r})=>{if((0,R.assertEvent)(t,[`open.relationshipsBrowser`,`open.relationshipDetails`,`open.elementDetails`]),!r(`enabled: Overlays`)){console.warn(`Overlays feature is disabled`);return}switch(t.type){case`open.elementDetails`:r(`enabled: ElementDetails`)?n(openElementDetails()):console.warn(`ElementDetails feature is disabled`);break;case`open.relationshipsBrowser`:if(!e.features.enableRelationshipBrowser){console.warn(`RelationshipBrowser feature is disabled`);return}n.sendTo(typedSystem.overlaysActor,{type:`open.relationshipsBrowser`,subject:t.fqn,viewId:e.view.id,scope:`view`,closeable:!0,enableChangeScope:!0,enableSelectSubject:!0});break;case`open.relationshipDetails`:if(!e.features.enableRelationshipDetails){console.warn(`RelationshipDetails feature is disabled`);return}n.sendTo(typedSystem.overlaysActor,{type:`open.relationshipDetails`,viewId:e.view.id,...t.params});break;default:Vn(t)}}),openSourceOfFocusedOrLastClickedNode=()=>$.enqueueActions(({context:e,enqueue:t})=>{let n=e.focusedNode??e.lastClickedNode?.id;if(!n||!e.features.enableVscode)return;let r=findDiagramNode(e,n);r&&(r.deploymentRef?t.raise({type:`open.source`,deployment:r.deploymentRef}):r.modelRef&&t.raise({type:`open.source`,element:r.modelRef}))}),ensureOverlaysActor=()=>$.enqueueActions(({enqueue:e,check:t,system:n})=>{let r=t(`enabled: Overlays`),i=typedSystem(n).overlaysActorRef;if(r&&!i){e.spawnChild(`overlaysActorLogic`,{id:`overlays`,systemId:`overlays`,syncSnapshot:!0});return}!r&&i&&(e.sendTo(i,{type:`close.all`}),e.stopChild(i))}),ensureSearchActor=()=>$.enqueueActions(({enqueue:e,check:t,system:n})=>{let r=t(`enabled: Search`),i=typedSystem(n).searchActorRef;if(r&&!i){e.spawnChild(`searchActorLogic`,{id:`search`,systemId:`search`,syncSnapshot:!0});return}!r&&i&&(e.sendTo(i,{type:`close`}),e.stopChild(i))}),onEdgeMouseEnter=()=>$.enqueueActions(({enqueue:e,context:t,event:n})=>{(0,R.assertEvent)(n,`xyflow.edgeMouseEnter`);let r=n.edge;e.assign({xyedges:t.xyedges.map(e=>e.id===n.edge.id?(r=F.setHovered(e,!0),r):e)}),e.emit({type:`edgeMouseEnter`,edge:r,event:n.event})}),onEdgeMouseLeave=()=>$.enqueueActions(({enqueue:e,context:t,event:n})=>{(0,R.assertEvent)(n,`xyflow.edgeMouseLeave`);let r=n.edge;e.assign({xyedges:t.xyedges.map(e=>e.id===n.edge.id?(r=F.setHovered(e,!1),r):e)}),e.emit({type:`edgeMouseLeave`,edge:r,event:n.event})}),startHotKeyActor=()=>$.spawnChild(`hotkeyActorLogic`,{id:`hotkey`}),stopHotKeyActor=()=>$.stopChild(`hotkey`),Fi=3e3,startAutoUnfocusTimer=()=>$.enqueueActions(({context:e,enqueue:t})=>{e.autoUnfocusTimer&&Fi>0&&t.raise({type:`focus.autoUnfocus`},{delay:Fi,id:`autoUnfocusTimer`})}),cancelAutoUnfocusTimer=()=>$.cancel(`autoUnfocusTimer`),handleNavigate=()=>$.enqueueActions(({enqueue:e,context:t,event:n})=>{(0,R.assertEvent)(n,[`navigate.to`,`navigate.back`,`navigate.forward`]);let{view:r,focusedNode:i,activeWalkthrough:a,dynamicViewVariant:o,viewport:s,viewportChangedManually:c,viewportBefore:l,navigationHistory:u}=t,{currentIndex:d,history:f}=u,p=f;if(d<f.length){let e=or(f.at(d)??{},e=>{e.viewport={...s},e.viewportChangedManually=c,e.focusedNode=i,r._type===`dynamic`?(e.activeWalkthrough=a?.stepId??null,e.dynamicViewVariant=o):(e.activeWalkthrough=null,e.dynamicViewVariant=null),l?e.viewportBefore=structuredClone(l):delete e.viewportBefore});p=[...f],p[d]=e}switch(n.type){case`navigate.to`:e.assign({navigationHistory:{currentIndex:d,history:p},lastOnNavigate:{fromView:t.view.id,toView:n.viewId,fromNode:n.fromNode??null,focusOnElement:n.focusOnElement??null}}),e(emitNavigateTo());break;case`navigate.back`:{W(d>0,`Cannot navigate back`);let t=p[d-1];e.assign({navigationHistory:{currentIndex:d-1,history:p},lastOnNavigate:null}),e(emitNavigateTo({viewId:t.viewId}));break}case`navigate.forward`:{W(d<p.length-1,`Cannot navigate forward`);let t=p[d+1];e.assign({navigationHistory:{currentIndex:d+1,history:p},lastOnNavigate:null}),e(emitNavigateTo({viewId:t.viewId}));break}default:Vn(n)}}),updateView=()=>$.enqueueActions(({enqueue:e,event:t,context:n})=>{if(t.type!==`update.view`){console.warn(`Ignoring unexpected event type: ${t.type} in action 'update.view'`);return}let r=t.view;if(r.id!==n.view.id){console.warn(`updateView called for another view - ignoring`,{event:t});return}if(e(assignXYDataFromView()),t.source===`editor`)return;if(e(sendSynced()),n.toggledFeatures.enableCompareWithLatest===!0&&n.view._layout!==r._layout){if(r._layout===`auto`&&n.viewportOnAutoLayout){e(setViewport({viewport:n.viewportOnAutoLayout,duration:0}));return}if(r._layout===`manual`&&n.viewportOnManualLayout){e(setViewport({viewport:n.viewportOnManualLayout,duration:0}));return}}let i=!n.viewportChangedManually&&!n.focusedNode&&!n.activeWalkthrough;i||=n.toggledFeatures.enableCompareWithLatest===!0&&!!r._layout&&n.view._layout!==r._layout,r._type===`dynamic`&&n.view._type===`dynamic`&&r.variant===n.view.variant&&r.variant!==n.dynamicViewVariant&&e(setViewportCenter(Un.center(viewBounds(n,r)))),i&&(e(cancelFitDiagram()),e(raiseFitDiagram()))}),Ii=$.createStateConfig({on:{"xyflow.init":{actions:(0,B.assign)(({context:e,event:t})=>({initialized:{...e.initialized,xyflow:!0},xyflow:t.instance})),target:`isReady`},"update.view":{actions:[assignXYDataFromView(),(0,B.assign)(({context:e})=>({initialized:{...e.initialized,xydata:!0}}))],target:`isReady`}}}),Li=$.createStateConfig({always:[{guard:`isReady`,actions:[fitDiagram({duration:0}),(0,B.assign)(({context:e})=>({navigationHistory:{currentIndex:0,history:[{viewId:e.view.id,viewport:{...e.xyflow.getViewport()},viewportChangedManually:!1}]}})),emitInitialized()],target:`ready`},{target:`initializing`}]});z();const handleBrowserForwardBackward=()=>$.assign(({context:e,event:t})=>{(0,R.assertEvent)(t,`update.view`);let{lastOnNavigate:n,navigationHistory:{currentIndex:r,history:i}}=e,a=i[r];if(!a||a.viewId===t.view.id||n)return{};let o=r>0?i.at(r-1):null;if(o&&o.viewId===t.view.id)return{navigationHistory:{currentIndex:r-1,history:i},lastOnNavigate:null};let s=r<i.length-1?i.at(r+1):null;if(s&&s.viewId===t.view.id)return{navigationHistory:{currentIndex:r+1,history:i},lastOnNavigate:null};if(t.view._type===`element`&&t.view.viewOf){let n=t.view.viewOf,r=e.xynodes.find(e=>nodeRef(e)===n);if(r)return{lastOnNavigate:{fromView:e.view.id,toView:t.view.id,fromNode:r.id}}}return{}}),Ri=$.createStateConfig({id:ri.navigating.slice(1),always:{...ii.idle,actions:[cancelFitDiagram(),handleBrowserForwardBackward(),disableCompareWithLatest(),(0,R.enqueueActions)(({enqueue:e,context:t,event:n})=>{(0,R.assertEvent)(n,`update.view`);let{xyflow:r,xystore:i,navigationHistory:{currentIndex:a,history:o}}=t,s=`xynodes`in n?n:{...n,...convertToXYFlow({currentViewId:t.view.id,dynamicViewVariant:t.dynamicViewVariant,view:n.view,where:t.where})};q(r,`xyflow is not initialized`);let c=r.getViewport(),calcZoomTowardsNextViewport=e=>{let t=c.zoom,n=e.zoom-t;return Math.abs(n)<.01?e.zoom:Math.trunc(1e4*(t+n*(n<0?.6:.3)))/1e4},moveTowardsNextViewport=t=>{let n=calcZoomTowardsNextViewport(t);n===t.zoom?r.setViewport(t,{duration:0}):(r.setViewport({x:kt(t.x*(1+c.zoom-n)),y:kt(t.y*(1+c.zoom-n)),zoom:n}),e(raiseSetViewport({delay:100,viewport:t})))},l=o[a];if(l&&l.viewId===s.view.id){let{focusedNode:n,activeWalkthrough:r,viewportBefore:i}=l,a={...mergeXYNodesEdges(t,s),dynamicViewVariant:l.dynamicViewVariant??(s.view._type===`dynamic`?s.view.variant:void 0)??t.dynamicViewVariant,viewportChangedManually:i?.wasChangedManually??l.viewportChangedManually,viewport:i?.value??l.viewport,viewportBefore:null};if(e.assign(a),moveTowardsNextViewport(a.viewport),n){e.raise({type:`focus.node`,nodeId:n},{delay:150});return}if(r){e.raise({type:`walkthrough.start`,stepId:r},{delay:150});return}return}let u=viewBounds(t,s.view),d=calcViewportForBounds(t,u),{fromNode:f,toNode:p}=findCorrespondingNode(t,s);if(f&&p){let t=r.getInternalNode(f.id),n=r.flowToScreenPosition({x:t.internals.positionAbsolute.x,y:t.internals.positionAbsolute.y}),a=r.flowToScreenPosition({x:p.data.x,y:p.data.y});i.getState().panBy({x:Math.round(n.x-a.x),y:Math.round(n.y-a.y)}).catch(e=>{console.error(`Error during xyflow.panBy`,{err:e})}),e(raiseSetViewport({delay:100,viewport:d}))}else{let n=calcZoomTowardsNextViewport(d);if(n!==d.zoom){let{width:i,height:a}=t.xystore.getState(),o=Un.center(u),s=Et(t.fitViewPadding,i,a);r.setViewport({x:kt((i-s.x)/2-o.x*n+s.left),y:kt((a-s.y)/2-o.y*n+s.top),zoom:n}),e(raiseSetViewport({delay:100,viewport:d}))}else r.setViewport(d,{duration:0})}let h=a<o.length-1?o.slice(0,a+1):[...o];h.length>20&&h.shift(),h.push({viewId:n.view.id,viewport:{...d},viewportChangedManually:!1});let g=t.lastOnNavigate?.focusOnElement,_=m(g)?findNodeByModelFqn(s.xynodes,g):null;e.assign({...mergeXYNodesEdges(t,s),viewportChangedManually:!1,lastOnNavigate:null,dynamicViewVariant:s.view._type===`dynamic`?s.view.variant:t.dynamicViewVariant,navigationHistory:{currentIndex:h.length-1,history:h}}),_&&e.raise({type:`focus.node`,nodeId:_.id,autoUnfocus:!0},{delay:250})})]}}),zi=$.createStateConfig({id:ri.focused.slice(1),entry:[cancelFitDiagram(),focusOnNodesAndEdges(),assignViewportBefore(),openSourceOfFocusedOrLastClickedNode(),startHotKeyActor(),fitFocusedBounds(),startAutoUnfocusTimer()],exit:[stopHotKeyActor(),undimEverything(),returnViewportBefore(),cancelAutoUnfocusTimer(),(0,B.assign)({focusedNode:null,autoUnfocusTimer:!1})],on:{"focus.autoUnfocus":{...ii.idle},"xyflow.nodeClick":[{guard:(0,gn.and)([`enabled: ElementDetails`,`click: focused node`,`click: node has modelFqn`]),actions:[assignLastClickedNode(),openElementDetails(),emitNodeClick()]},{guard:`click: focused node`,actions:[assignLastClickedNode(),emitNodeClick()],...ii.idle},{actions:[assignLastClickedNode(),(0,B.raise)(({event:e})=>({type:`focus.node`,nodeId:e.node.id})),emitNodeClick()]}],"focus.node":{actions:[assignFocusedNode(),focusOnNodesAndEdges(),openSourceOfFocusedOrLastClickedNode(),fitFocusedBounds()]},"key.esc":{...ii.idle},"xyflow.paneClick":{actions:[emitPaneClick()],...ii.idle},"notations.unhighlight":{actions:focusOnNodesAndEdges()},"tag.unhighlight":{actions:focusOnNodesAndEdges()}}}),Bi=$.createStateConfig({id:ri.idle.slice(1),on:{"xyflow.nodeClick":[{guard:(0,gn.and)([`enabled: Readonly`,`enabled: FocusMode`,`click: node has connections`,(0,gn.or)([`click: same node`,`click: selected node`])]),actions:[assignLastClickedNode(),assignFocusedNode(),emitNodeClick()],...ii.focused},{guard:(0,gn.and)([`enabled: Readonly`,`enabled: ElementDetails`,`click: node has modelFqn`,(0,gn.or)([`click: same node`,`click: selected node`])]),actions:[assignLastClickedNode(),openSourceOfFocusedOrLastClickedNode(),openElementDetails(),emitNodeClick()]},{actions:[assignLastClickedNode(),openSourceOfFocusedOrLastClickedNode(),emitNodeClick()]}],"xyflow.paneClick":{actions:[resetLastClickedNode(),emitPaneClick()]},"xyflow.paneDblClick":{actions:[resetLastClickedNode(),raiseFitDiagram(),emitOpenSourceOfView(),emitPaneClick()]},"focus.node":[{guard:`focus.node: autoUnfocus`,actions:assignFocusedNode(),target:ri.focused},{guard:`enabled: FocusMode`,actions:assignFocusedNode(),target:ri.focused}],"xyflow.edgeClick":{guard:(0,gn.and)([`enabled: Readonly`,`is dynamic view`,`enabled: DynamicViewWalkthrough`,`click: selected edge`]),actions:[resetLastClickedNode(),(0,B.raise)(({event:e})=>({type:`walkthrough.start`,stepId:e.edge.id})),emitEdgeClick()]}}});z();const Vi=$.createStateConfig({id:ri.printing.slice(1),entry:[cancelFitDiagram(),assignViewportBefore(),(0,R.enqueueActions)(({enqueue:e,context:t})=>{let n=viewBounds(t);e(setViewport({viewport:{x:n.x+16,y:n.y+16,zoom:1},duration:0}))})],exit:[returnViewportBefore({delay:0,duration:0})],on:{"media.print.off":{...ii.idle},"*":{actions:[(0,R.log)(({event:e})=>`Printing state - ignoring event: ${e.type}`)]}}});z();const updateActiveWalkthroughState=()=>$.enqueueActions(({context:e,enqueue:t})=>{let{activeWalkthrough:n}=e;if(!n){console.warn(`Active walkthrough is null`),t.raise({type:`walkthrough.end`});return}let{stepId:r,parallelPrefix:i}=n,a=e.xyedges.find(e=>e.id===r);if(!a){console.warn(`Invalid walkthrough stepId:`,r),t.raise({type:`walkthrough.end`});return}t.assign({xyedges:e.xyedges.map(e=>{let t=r===e.id||!!i&&e.id.startsWith(i);return F.setData(e,{active:t,dimmed:r!==e.id})}),xynodes:e.xynodes.map(e=>{let t=a.source!==e.id&&a.target!==e.id;return e.type===`seq-parallel`?F.setData(e,{color:i===e.data.parallelPrefix?Pi.active:Pi.default,dimmed:t}):F.setDimmed(e,t)})})}),emitWalkthroughStarted=()=>$.emit(({context:e})=>{let t=e.xyedges.find(t=>t.id===e.activeWalkthrough?.stepId);return W(t,`Invalid walkthrough state`),{type:`walkthroughStarted`,edge:t}}),emitWalkthroughStopped=()=>$.emit(()=>({type:`walkthroughStopped`})),emitWalkthroughStep=()=>$.emit(({context:e})=>{let t=e.xyedges.find(t=>t.id===e.activeWalkthrough?.stepId);return W(t,`Invalid walkthrough state`),{type:`walkthroughStep`,edge:t}}),Hi=$.createStateConfig({id:ri.walkthrough.slice(1),entry:[startHotKeyActor(),cancelEditing(),cancelFitDiagram(),assignViewportBefore(),(0,B.assign)({activeWalkthrough:({context:e,event:t})=>{(0,R.assertEvent)(t,`walkthrough.start`);let n=t.stepId??h(e.xyedges).id;return{stepId:n,parallelPrefix:In(n)}}}),updateActiveWalkthroughState(),fitFocusedBounds(),emitWalkthroughStarted()],exit:[stopHotKeyActor(),(0,B.enqueueActions)(({enqueue:e,context:t})=>{e.assign({activeWalkthrough:null}),t.dynamicViewVariant===`sequence`&&t.activeWalkthrough?.parallelPrefix&&e.assign({xynodes:t.xynodes.map(e=>e.type===`seq-parallel`?F.setData(e,{color:Pi.default}):e)})}),undimEverything(),returnViewportBefore(),emitWalkthroughStopped()],on:{"key.esc":{target:ri.idle},"key.arrow.left":{actions:(0,B.raise)({type:`walkthrough.step`,direction:`previous`})},"key.arrow.up":{actions:(0,B.raise)({type:`walkthrough.step`,direction:`previous`})},"key.arrow.right":{actions:(0,B.raise)({type:`walkthrough.step`,direction:`next`})},"key.arrow.down":{actions:(0,B.raise)({type:`walkthrough.step`,direction:`next`})},"walkthrough.step":{actions:[(0,B.assign)(({context:e,event:t})=>{let{stepId:n}=e.activeWalkthrough,r=e.xyedges.findIndex(e=>e.id===n),i=b(t.direction===`next`?r+1:r-1,{min:0,max:e.xyedges.length-1});if(i===r)return{};let a=G(e.xyedges[i]).id;return{activeWalkthrough:{stepId:a,parallelPrefix:In(a)}}}),updateActiveWalkthroughState(),fitFocusedBounds(),emitWalkthroughStep()]},"xyflow.edgeClick":[{guard:`click: active walkthrough step`,actions:[fitFocusedBounds(),emitEdgeClick()]},{actions:[(0,B.assign)(({event:e})=>{let t=e.edge.id;return W(zn(t)),{activeWalkthrough:{stepId:t,parallelPrefix:In(t)}}}),updateActiveWalkthroughState(),fitFocusedBounds(),emitEdgeClick(),emitWalkthroughStep()]}],"notations.unhighlight":{actions:updateActiveWalkthroughState()},"tag.unhighlight":{actions:updateActiveWalkthroughState()},"update.view":{guard:`is same view`,actions:[updateView(),updateActiveWalkthroughState()]},"walkthrough.end":{target:ri.idle},"xyflow.paneDblClick":{target:ri.idle}}}),Ui=$.createStateConfig({initial:`idle`,entry:[(0,B.spawnChild)(`mediaPrintActorLogic`,{id:`mediaPrint`}),ensureEditorActor(),ensureOverlaysActor(),ensureSearchActor()],exit:[cancelFitDiagram(),(0,B.stopChild)(`mediaPrint`),closeAllOverlays(),closeSearch(),stopEditorActor()],states:{idle:Bi,focused:zi,walkthrough:Hi,printing:Vi},on:{"layout.align":{guard:`not readonly`,actions:[startEditing(`node`),layoutAlign(),stopEditing(!0)]},"layout.resetEdgeControlPoints":{guard:`not readonly`,actions:[startEditing(`edge`),resetEdgesControlPoints(),stopEditing(!0)]},"layout.resetManualLayout":{actions:[cancelEditing(),disableCompareWithLatest(),triggerChange({op:`reset-manual-layout`})]},"media.print.on":{...ii.printing},"navigate.*":{actions:handleNavigate()},"notations.highlight":{actions:notationsHighlight()},"notations.unhighlight":{actions:undimEverything()},"highlight.*":{actions:highlightNodeOrEdge()},"unhighlight.all":{actions:undimEverything()},"open.elementDetails":{actions:openOverlay()},"open.relationshipDetails":{actions:openOverlay()},"open.relationshipsBrowser":{actions:openOverlay()},"open.search":{guard:`enabled: Search`,actions:(0,B.sendTo)(typedSystem.searchActor,({event:e})=>({type:`open`,search:e.search}))},"open.source":{guard:`enabled: OpenSource`,actions:emitOpenSource()},"tag.highlight":{actions:tagHighlight()},"tag.unhighlight":{actions:undimEverything()},"toggle.feature":{actions:assignToggledFeatures()},"update.features":{actions:[updateFeatures(),ensureOverlaysActor(),ensureSearchActor(),ensureEditorActor()]},"update.view":[{guard:`is another view`,...ii.navigating},{actions:updateView()}],"walkthrough.start":{guard:`is dynamic view`,...ii.walkthrough},"xyflow.edgeClick":{actions:[resetLastClickedNode(),emitEdgeClick()]},"xyflow.edgeDoubleClick":{guard:(0,gn.and)([`not readonly`,({event:e})=>!!e.edge.data.controlPoints&&e.edge.data.controlPoints.length>0]),actions:[startEditing(`edge`),onEdgeDoubleClick(),stopEditing(!0)]},"xyflow.edgeMouseEnter":{actions:onEdgeMouseEnter()},"xyflow.edgeMouseLeave":{actions:onEdgeMouseLeave()},"xyflow.centerViewport":{actions:centerOnNodeOrEdge()},"xyflow.fitDiagram":{guard:`enabled: FitView`,actions:[(0,B.assign)({viewportChangedManually:!1}),fitDiagram()]},"xyflow.nodeClick":{actions:[assignLastClickedNode(),emitNodeClick()]},"xyflow.nodeMouseEnter":{actions:onNodeMouseEnter()},"xyflow.nodeMouseLeave":{actions:onNodeMouseLeave()},"xyflow.paneClick":{actions:[resetLastClickedNode(),emitPaneClick()]},"xyflow.paneDblClick":{actions:[resetLastClickedNode(),cancelFitDiagram(),raiseFitDiagram(),emitOpenSourceOfView(),emitPaneClick()]},"xyflow.resized":{guard:({context:e})=>e.features.enableFitView&&!e.viewportChangedManually,actions:[cancelFitDiagram(),raiseFitDiagram({delay:150})]},"xyflow.setViewport":{actions:setViewport()}}}),Wi=`likec4:diagram:toggledFeatures`,Gi={read(){try{let e=sessionStorage.getItem(Wi);return e?JSON.parse(e):null}catch(e){return console.error(`Error reading fromStorage ${Wi}:`,e),null}},write(e){return sessionStorage.setItem(Wi,JSON.stringify(ae(e,u))),e}},Ki=$.createMachine({initial:`initializing`,context:({input:e})=>({...e,xyedges:[],xynodes:[],features:{...mr,...e.features},toggledFeatures:Gi.read()??{enableReadOnly:!0,enableCompareWithLatest:!1},initialized:{xydata:!1,xyflow:!1},viewportChangedManually:!1,lastOnNavigate:null,lastClickedNode:null,focusedNode:null,autoUnfocusTimer:!1,activeElementDetails:null,viewportBefore:null,viewportOnManualLayout:null,viewportOnAutoLayout:null,navigationHistory:{currentIndex:0,history:[]},viewport:{x:0,y:0,zoom:1},xyflow:null,dynamicViewVariant:e.dynamicViewVariant??(e.view._type===`dynamic`?e.view.variant:`diagram`)??`diagram`,activeWalkthrough:null}),states:{initializing:Ii,isReady:Li,ready:Ui,navigating:Ri,final:{type:`final`}},on:{"update.nodeData":{actions:(0,B.assign)(updateNodeData)},"update.edgeData":{actions:(0,B.assign)(updateEdgeData)},"switch.dynamicViewVariant":{guard:({context:e,event:t})=>e.dynamicViewVariant!==t.variant,actions:[assignDynamicViewVariant(),(0,B.assign)({viewportChangedManually:!1}),raiseUpdateView()]},"update.inputs":{actions:updateInputs()},"update.view-bounds":{actions:(0,B.assign)(({context:e,event:t})=>({view:{...e.view,bounds:t.bounds}}))},"update.features":{actions:updateFeatures()},"trigger.change":{actions:triggerChange()},"emit.onLayoutTypeChange":{actions:emitOnLayoutTypeChange()},"xyflow.applyChanges":{actions:(0,B.assign)(({context:e,event:t})=>({xynodes:t.nodes?xt(t.nodes,e.xynodes):e.xynodes,xyedges:t.edges?_t(t.edges,e.xyedges):e.xyedges}))},"xyflow.viewportMoved":{actions:(0,B.assign)(({event:e,context:t})=>({viewportChangedManually:t.viewportChangedManually||e.manually,viewport:e.viewport}))},destroy:{target:`.final`,actions:[stopEditorActor(),cancelFitDiagram(),(0,B.stopChild)(`hotkey`),(0,B.stopChild)(`overlays`),(0,B.stopChild)(`search`),(0,B.stopChild)(`mediaPrint`),(0,B.assign)({xyflow:null,xystore:null,xyedges:[],xynodes:[],initialized:{xydata:!1,xyflow:!1}})]}}});function DiagramActorProvider({id:e,view:t,zoomable:n,pannable:r,nodesDraggable:i,nodesSelectable:a,fitViewPadding:o,where:s=null,children:c,dynamicViewVariant:l}){let u=vt(),d=useEditorActorLogic(),f=useEnabledFeatures(),p=(0,fn.useActorRef)(Ki.provide({actors:{editorActor:d}}),{id:`diagram-${e}`,systemId:`diagram`,input:{xystore:u,view:t,zoomable:n,pannable:r,fitViewPadding:o,nodesDraggable:i,nodesSelectable:a,where:s,features:f,dynamicViewVariant:l}}),m=Dn(p);m.current!==p&&(console.warn(`DiagramMachine actor instance changed`,{previous:m.current.getSnapshot().context,current:p.getSnapshot().context}),m.current=p);let[h,g]=On(()=>makeDiagramApi(m));return Tn(()=>{g(e=>e.ref===m?e:(console.error(`DiagramMachine actorRef changed, creating new DiagramApi instance, this should not happen during the lifetime of the actor`),makeDiagramApi(m)))},[m]),Tn(()=>{p.send({type:`update.features`,features:f})},[p,f]),on(()=>p.send({type:`update.inputs`,inputs:{zoomable:n,where:s,pannable:r,fitViewPadding:o,nodesDraggable:i,nodesSelectable:a}}),[p,n,s,r,o,i,a]),on(()=>{l&&p.send({type:`switch.dynamicViewVariant`,variant:l})},[p,l]),Tn(()=>p.send({type:`update.view`,view:t,source:`external`}),[p,t]),H(yr,{value:p,children:U(br,{value:h,children:[H(ErrorBoundary,{children:H(ToggledFeatures,{children:c})}),H(Ji,{})]})})}const qi=selectDiagramActorContext(e=>{let t=e.toggledFeatures,n=e.view.drifts!=null&&e.view.drifts.length>0&&e.features.enableCompareWithLatest&&(t.enableCompareWithLatest??!1)&&f(e.activeWalkthrough),r=e.features.enableReadOnly||t.enableReadOnly||!!e.activeWalkthrough||n&&e.view._layout===`auto`;return(t.enableReadOnly!==r||t.enableCompareWithLatest!==n)&&(t={...t,enableCompareWithLatest:n,enableReadOnly:r}),t});function ToggledFeatures(e){let t=V(6),{children:n}=e,r=useDiagramSnapshot(qi),t1,i;t[0]===r?(t1=t[1],i=t[2]):(t1=()=>{Gi.write(r)},i=[r],t[0]=r,t[1]=t1,t[2]=i),on(t1,i);let a;return t[3]!==n||t[4]!==r?(a=H(DiagramFeatures,{overrides:r,children:n}),t[3]=n,t[4]=r,t[5]=a):a=t[5],a}const Ji=Sn(()=>{let e=useDiagram(),t=useDiagramEventHandlersRef();return useOnDiagramEvent(`openSource`,({params:e})=>t.current.onOpenSource?.(e)),useOnDiagramEvent(`navigateTo`,({viewId:e})=>t.current.onNavigateTo?.(e)),useOnDiagramEvent(`onLayoutTypeChange`,({layoutType:e})=>{t.current.onLayoutTypeChange?.(e)}),useOnDiagramEvent(`initialized`,({instance:n})=>{try{t.current.onInitialized?.({diagram:e,xyflow:n})}catch(e){console.error(e)}},{once:!0}),null});export{useEnabledFeatures as A,useDiagramSnapshot as C,mr as D,useDiagramActorRef as E,useDiagramEventHandlers as M,DiagramFeatures as O,useDiagramContext as S,useDiagram as T,useOptionalLikeC4Editor as _,di as a,selectDiagramActor as b,CompoundTitle as c,deriveToggledFeatures as d,useRelationshipsView as f,LikeC4EditorProvider as g,ErrorBoundary as h,ui as i,DiagramEventHandlers as j,IfEnabled as k,CompoundNodeContainer as l,findDiagramNode as m,LikeC4DiagramXYFlow as n,ElementDetailsButton as o,findDiagramEdge as p,memoNode as r,EdgeActionButton as s,DiagramActorProvider as t,CompoundDetailsButton as u,TagStylesProvider as v,useOnDiagramEvent as w,selectDiagramActorContext as x,useLikeC4Model as y};
9
+ `};function ai(e,t){return!e||r(e)?``:v(c(e),a(([e,n])=>[`:is(${t} [data-likec4-tag="${e}"]) {`,ii(n),`}`]),ue(`
10
+ `))}function oi(e){let{children:t,rootSelector:n}=e,r=kr().tags,i=ge()?.(),a=ai(r,n);return B(ni.Provider,{value:r,children:[a!==``&&z(si,{nonce:i,stylesheet:a}),t]})}var si=Ln(({stylesheet:e,nonce:t})=>z(`style`,{"data-likec4-tags":!0,type:`text/css`,dangerouslySetInnerHTML:{__html:e},nonce:t}));function ci(e){return zn(ni)[e]??{color:`tomato`}}var li=In(({tag:e,cursor:t,className:n,style:r,...i},a)=>B(kn,{ref:a,"data-likec4-tag":e,className:k(qr({autoTextColor:rr(ci(e))}),n),...i,style:{cursor:t,...r},children:[z(`span`,{children:`#`}),z(`span`,{children:e})]})),ui=Ln(({id:e,data:{tags:t,width:n,hovered:r=!1},onTagClick:i,onTagMouseEnter:a,onTagMouseLeave:o})=>!t||!E(t,1)?null:z(di,{id:e,tags:t,width:n,hovered:r,onTagClick:i,onTagMouseEnter:a,onTagMouseLeave:o}),(e,t)=>e.id===t.id&&e.data.width===t.data.width&&(e.data.hovered??!1)===(t.data.hovered??!1)&&N(e.data.tags,t.data.tags));ui.displayName=`ElementTags`;function di({id:e,tags:t,width:n,hovered:r,onTagClick:i,onTagMouseEnter:a,onTagMouseLeave:o}){let{hovered:s,ref:c}=Be(),{hovered:l,ref:u}=Be(),[d,f]=He(!1,r?120:300);Bn(()=>{f(e=>e?r||s||l:r&&(s||l))},[s,l,r]);let p=ot(1.2),m=yn(Rn(e=>Math.max(Math.round(n*e.transform[2])-10,200),[Math.round(n)]));return B(Wn,{children:[z(`div`,{ref:c,className:k(`likec4-element-tags`,Kt({pointerEvents:`all`,gap:`1`,alignItems:`flex-end`,justifyItems:`stretch`,position:`absolute`,width:`100%`,bottom:`0`,left:`0`,padding:`1`,_shapeCylinder:{bottom:`[5px]`},_shapeStorage:{bottom:`[5px]`},_shapeQueue:{bottom:`0`,paddingLeft:`[14px]`}})),onClick:A,children:t.map(t=>z(kn,{"data-likec4-tag":t,className:O({layerStyle:`likec4.tag`,flex:`1`,display:`flex`,alignItems:`center`,justifyContent:`center`,maxWidth:`50px`,height:`5px`,_whenHovered:{height:`12px`,borderRadius:`sm`,transitionDelay:`.08s`},transition:`fast`})},e+`#`+t))}),z(fn,{isVisible:d,align:`start`,position:hn.Bottom,children:z(Yt,{ref:u,css:{gap:`0.5`,alignItems:`baseline`,flexWrap:`wrap`,pb:`sm`,translate:`auto`,x:`[-8px]`},style:{maxWidth:m},children:t.map(e=>z(li,{tag:e,cursor:`pointer`,className:O({userSelect:`none`,...p&&{fontSize:`lg`,borderRadius:`sm`,px:`1.5`}}),onClick:i?t=>{t.stopPropagation(),i(`#${e}`)}:void 0,onMouseEnter:a?()=>a(`#${e}`):void 0,onMouseLeave:o?()=>o(`#${e}`):void 0},e))})})]})}var fi={onNavigateTo:null,onNodeClick:null,onNodeContextMenu:null,onCanvasContextMenu:null,onEdgeClick:null,onEdgeContextMenu:null,onCanvasClick:null,onCanvasDblClick:null,onLogoClick:null,onOpenSource:null,onInitialized:null,onLayoutTypeChange:null},pi=S(fi),mi=Pn({current:fi}),hi=Pn({...b(pi,e=>[e,null]),handlersRef:{current:fi}});function gi({handlers:e,children:t}){let n=Ht(e),r=Vn(()=>({...b(pi,e=>n.current[e]?[e,(...t)=>n.current[e]?.(...t)]:[e,null]),handlersRef:n}),[n,...pi.map(t=>u(e[t]))]);return z(mi.Provider,{value:n,children:z(hi.Provider,{value:r,children:t})})}function _i(){return zn(hi)}function vi(){return zn(mi)}function yi(e,t){let[n,r]=Un(e),i=t??Ut,a=Hn(i);return a.current=i,[n,Rn(e=>r(t=>{let n={...t,...typeof e==`function`?e(t):e};return a.current(t,n)?t:n}),[r])]}var bi={enableEditor:!1,enableAISemanticLayout:!1,enableReadOnly:!0,enableCompareWithLatest:!1,enableControls:!1,enableDynamicViewWalkthrough:!1,enableElementDetails:!1,enableFocusMode:!1,enableNavigateTo:!1,enableNotations:!1,enableRelationshipBrowser:!1,enableRelationshipDetails:!1,enableSearch:!1,enableNavigationButtons:!1,enableFitView:!1,enableVscode:!1,enableElementTags:!1,enableNotes:!1},xi=Pn(bi);function Si(e){let t=R(13),{children:n,features:r,overrides:i}=e,a=zn(xi),o;t[0]!==r||t[1]!==a||t[2]!==i?(o=()=>({...a,...r,...i}),t[0]=r,t[1]=a,t[2]=i,t[3]=o):o=t[3];let[s,c]=yi(o),l,u;t[4]!==r||t[5]!==a||t[6]!==i||t[7]!==c?(l=()=>{c({...a,...r,...i})},u=[a,r,i,c],t[4]=r,t[5]=a,t[6]=i,t[7]=c,t[8]=l,t[9]=u):(l=t[8],u=t[9]),Et(l,u);let d;return t[10]!==n||t[11]!==s?(d=z(xi.Provider,{value:s,children:n}),t[10]=n,t[11]=s,t[12]=d):d=t[12],d}var Ci={enableControls:!1,enableReadOnly:!0,enableAISemanticLayout:!1,enableCompareWithLatest:!1};Si.Overlays=({children:e})=>z(Si,{overrides:Ci,children:e});function q(){return zn(xi)}function wi(e){let{feature:t,children:n,and:r}=e,i=r===void 0?!0:r;return q()[`enable${t}`]===!0&&i?z(Wn,{children:n}):null}function Ti({error:e,resetErrorBoundary:t}){let n=e instanceof Error?e.message:`Unknown error`,r=Hn(null);return Bn(()=>{r.current?.showModal()},[]),z(`dialog`,{ref:r,className:O({margin:`0`,padding:`0`,position:`fixed`,top:`10`,left:`10`,width:`[calc(100vw - ({spacing.10} * 2))]`,height:`max-content`,maxHeight:`[calc(100vh - ({spacing.10} * 3))]`,background:`likec4.overlay.body`,rounded:`sm`,borderWidth:3,borderColor:`likec4.overlay.border`,shadow:`xl`,outline:`none`,_backdrop:{cursor:`zoom-out`,backdropFilter:`blur(18px)`,bg:`[color-mix(in oklab, {colors.likec4.overlay.backdrop} 60%, transparent)]`}}),onClick:e=>{if(e.stopPropagation(),e.target?.nodeName?.toUpperCase()===`DIALOG`){r.current?.close();return}},onClose:e=>{e.stopPropagation(),t()},children:B(Yt,{p:`xl`,gap:`lg`,alignItems:`flex-start`,flexWrap:`nowrap`,children:[z(Ae,{size:`md`,radius:`xl`,color:`red`,children:z(Lt,{style:{width:20,height:20}})}),B(Jt,{flex:`1`,children:[z(Fe,{fz:`md`,children:`Oops, something went wrong`}),z(be,{maw:`100%`,mah:400,type:`auto`,children:z(Fe,{fz:`md`,c:`red`,style:{whiteSpace:`pre-wrap`,userSelect:`all`},children:n})}),B(Yt,{gap:`md`,mt:`md`,children:[z(Ie,{size:`sm`,variant:`default`,onClick:()=>t(),children:`Reset`}),z(Fe,{fz:`sm`,c:`dimmed`,children:`See console for more details and report the issue if it persists.`})]})]})]})})}function Ei(e){return z(An,{FallbackComponent:Ti,onError:(e,t)=>{console.error(e,t)},...e})}At(Ei,`ErrorBoundary`);var Di=ln(({sendBack:e})=>{let t=Ue([[`mod + z`,t=>{t.stopPropagation(),e({type:`undo`})},{preventDefault:!0}]]);return document.body.addEventListener(`keydown`,t,{capture:!0}),()=>{document.body.removeEventListener(`keydown`,t,{capture:!0})}}),J=tn({types:{context:{},events:{},emitted:{},input:{},children:{},tags:``},actors:{applyLatest:Qt(()=>{throw Error(`Not implemented`)}),executeChange:Qt(()=>{throw Error(`Not implemented`)}),applySemanticLayout:Qt(()=>{throw Error(`Not implemented`)}),hotkey:Di},delays:{"500ms":500,"wait-after-edit":1e3},guards:{"has pending":({context:e})=>e.syncQueue.length>0||!!e.processing,"can undo":({context:e})=>e.history!==null}});function Oi(e){let{view:{drifts:t,_layout:n,...r},xynodes:i,xystore:a}=e,{nodeLookup:o,edgeLookup:s}=a.getState(),c=new Set,l=D(r.nodes,e=>{let t=o.get(e.id);if(!t)return console.error(`Internal node not found for ${e.id}`),e;let n=i.find(t=>t.id===e.id)?.data??t.data,r=t.internals.positionAbsolute,{width:a,height:s}=Sn(t);return(!rt(r,e)||e.width!==a||e.height!==s)&&c.add(e.id),{...e,shape:n.shape,color:n.color,style:{...n.style},x:Math.floor(r.x),y:Math.floor(r.y),width:Math.ceil(a),height:Math.ceil(s)}}),u=D(r.edges,e=>{let t=s.get(e.id);if(!t)return console.error(`Internal edge not found for ${e.id}`),e;let n=t.data,r=n.controlPoints??[],i=c.has(t.source)||c.has(t.target);r.length===0&&i&&(r=at(n.points));let a={...e,points:n.points};return n.labelBBox?a.labelBBox={x:Math.round(n.labelBBox.x),y:Math.round(n.labelBBox.y),width:Math.round(n.labelBBox.width),height:Math.round(n.labelBBox.height)}:a.labelBBox=null,E(r,1)?a.controlPoints=D(r,e=>({x:Math.round(e.x),y:Math.round(e.y)})):a.controlPoints=null,a});return{op:`save-view-snapshot`,layout:{...r,_layout:`manual`,bounds:Fr({nodes:l,edges:u}),nodes:l,edges:u}}}var ki=(e,t)=>e.find(e=>`modelFqn`in e.data&&e.data.modelFqn===t)||null;function Y(e){return{get overlaysActorRef(){return e.get(`overlays`)??null},get diagramActorRef(){return K(e.get(`diagram`),`Diagram actor not found`)},get searchActorRef(){return e.get(`search`)??null},get editorActorRef(){return e.get(`editor`)??null}}}Y.editorActor=({system:e})=>e.get(`editor`),Y.overlaysActor=({system:e})=>e.get(`overlays`),Y.diagramActor=({system:e})=>e.get(`diagram`),Y.searchActor=({system:e})=>e.get(`search`);function Ai(e,t){return e.view.nodes.find(e=>e.id===t)??null}function ji(e,t){return e.view.edges.find(e=>e.id===t)??null}function Mi(e,t){return Nr(t??e.view,e.dynamicViewVariant)}function Ni(e){let t=new Map,n=e.context.xynodes.reduce((e,n)=>{let r=n.position;if(n.parentId){let e=t.get(n.parentId)??{x:0,y:0};r={x:r.x+e.x,y:r.y+e.y}}if(t.set(n.id,r),n.hidden||n.data.dimmed)return e;let i=n.measured?.width??n.width??n.initialWidth,a=n.measured?.height??n.height??n.initialHeight;return e.minX=Math.min(e.minX,r.x),e.minY=Math.min(e.minY,r.y),e.maxX=Math.max(e.maxX,r.x+i),e.maxY=Math.max(e.maxY,r.y+a),e},{minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0});return n.minX===1/0?{bounds:Mi(e.context)}:{duration:350,bounds:{x:n.minX-10,y:n.minY-10,width:n.maxX-n.minX+20,height:n.maxY-n.minY+20}}}var Pi=32;function Fi(e){let t=K(e.context.activeWalkthrough),n=K(e.context.xyedges.find(e=>e.id===t.stepId)),r=e.context.xystore.getState(),i=wn([K(r.nodeLookup.get(n.source)),K(r.nodeLookup.get(n.target))],r),a;if(t.parallelPrefix){let n=e.context.xynodes.find(e=>e.type===`seq-parallel`&&e.data.parallelPrefix===t.parallelPrefix);n&&(a={x:n.position.x,y:n.position.y,...Sn(n)})}return a??=Ii(n,r),a=a?U.merge(a,i):i,{duration:350,bounds:U.expand(a,Pi)}}function Ii(e,t){let n=t.nodeLookup.get(e.source),r=t.nodeLookup.get(e.target);if(!n||!r)return null;let i=dn({id:e.id,sourceNode:n,targetNode:r,sourceHandle:e.sourceHandle||null,targetHandle:e.targetHandle||null,connectionMode:t.connectionMode});return i?U.fromPoints([[i.sourceX,i.sourceY],[i.targetX,i.targetY]]):null}function Li(e){switch(e.type){case`element`:case`compound-element`:case`seq-actor`:return e.data.modelFqn;case`deployment`:case`compound-deployment`:return e.data.modelFqn??e.data.deploymentFqn;case`seq-parallel`:case`view-group`:return null;default:pr(e)}}function Ri(e,t){let n=e.lastOnNavigate?.fromNode,r=n&&e.xynodes.find(e=>e.id===n),i=r&&Li(r);return!r||!i?{fromNode:null,toNode:null}:{fromNode:r,toNode:t.xynodes.find(e=>Li(e)===i)??null}}function zi(e,t){let{width:n,height:r,transform:i}=e.xystore.getState();return Cn(t,n,r,Qe,Math.max(i[2],1),e.fitViewPadding)}var Bi=e=>typeof e!=`string`,Vi=function(e){return e.get(`diagram`).getSnapshot().context};function Hi(e){let t=Vi(e);return{xynodes:t.xynodes.map(({measured:e,data:t,...n})=>({...T(n,[`selected`,`dragging`,`resizing`]),data:T(t,[`dimmed`,`hovered`]),measured:e,initialWidth:e?.width??n.width??n.initialWidth,initialHeight:e?.height??n.height??n.initialHeight})),xyedges:t.xyedges.map(({data:e,...t})=>({...T(t,[`selected`]),data:T(e,[`active`,`dimmed`,`hovered`])})),change:Oi(t),view:t.view}}var Ui=e=>e.op===`reset-manual-layout`||e.op===`save-view-snapshot`;i(ne(Ui));var Wi=(e=50)=>J.raise({type:`change.sync-snapshot`},e?{delay:e,id:`sync-snapshot`}:void 0),Gi=J.assign(({system:e,event:t})=>(L(t,`edit.move.start`),{editing:{subject:t.subject,before:Hi(e)}})),Ki=()=>J.assign(({context:e})=>{let t=e.editing;return t?{editing:null,history:{head:t.before,tail:e.history}}:{}}),qi=(e=300)=>J.raise(({event:e})=>({...e}),{delay:e}),Ji=()=>J.enqueueActions(({context:{history:e},enqueue:t})=>{if(!e)return;let n=e.head;t.assign({history:e.tail}),t.sendTo(Y.diagramActor,{type:`update.view`,view:n.view,xyedges:n.xyedges,xynodes:n.xynodes,source:`editor`}),t.cancel(`undo-view`),t.raise({type:`change.view`,change:n.change},{delay:200,id:`undo-view`})}),Yi=()=>J.assign(({context:{syncQueue:e},event:t})=>{let n;switch(t.type){case`change.view`:n=t.change;break;case`change.semantic-layout`:n=`apply-semantic-layout`;break;case`change.latest-to-manual`:n=`apply-semantic-layout`;break;case`change.sync-snapshot`:n=`sync-snapshot`;break;default:throw Error(`Invalid event type: ${t.type}`)}if(e.length===0)return{syncQueue:[n]};let r=Bi(n)&&Ui(n),i=e.filter(e=>!(e===n||r&&Bi(e)&&Ui(e)));return{syncQueue:i.length>0?[...i,n]:[n]}}),Xi={idle:{target:`#idle`},moving:{target:`#moving`}},Zi=e=>({id:e.target.substring(1)}),Qi=()=>J.stopChild(`hotkey`),$i=()=>J.enqueueActions(({check:e,enqueue:t,self:n})=>{let r=e(`can undo`),i=n.getSnapshot().children.hotkey;if(!r&&i){t.stopChild(i);return}r&&!i&&t.spawnChild(`hotkey`,{id:`hotkey`})}),ea=J.createStateConfig({...Zi(Xi.idle),on:{"edit.move.start":{...Xi.moving}}}),ta=J.createStateConfig({...Zi(Xi.moving),entry:[Gi,Qi()],on:{"edit.move.end":{actions:[Ki(),Wi()],...Xi.idle},"edit.move.cancel":{actions:[I({editing:null})],...Xi.idle},undo:{...Xi.idle}}}),na=J.createStateConfig({initial:`idle`,states:{idle:ea,moving:ta},on:{cancel:{...Xi.idle},"*":{actions:$i()}}}),X={idle:{target:`#queue-idle`},pending:{target:`#queue-pending`},suspended:{target:`#queue-suspended`},process:{target:`#queue-process`}},ra=e=>({id:e.target.substring(1)}),ia=J.createStateConfig({...ra(X.idle),always:{guard:`has pending`,...X.pending},on:{"change.sync-snapshot":{actions:Yi(),...X.pending},"change.*":{actions:Yi(),...X.process},undo:{actions:Ji(),reenter:!0,...X.idle}}}),aa=J.createStateConfig({...ra(X.pending),on:{"change.sync-snapshot":{reenter:!0,actions:Yi(),...X.pending},"change.*":{actions:Yi(),...X.process},"edit.move.start":{...X.suspended},undo:{actions:Ji(),...X.idle},"view.synched":{guard:`has pending`,actions:()=>{},...X.process}},after:{"wait-after-edit":[{guard:`has pending`,...X.process},{...X.idle}]}}),oa=J.createStateConfig({...ra(X.suspended),on:{undo:{actions:Ji(),...X.idle},"edit.*":{...X.pending},"change.*":{actions:qi()},cancel:{...X.idle}}}),sa=()=>J.assign(({system:e,context:{syncQueue:t,processing:n}})=>{if(n)return{};let[r,...i]=t;return r===`sync-snapshot`&&(r=Hi(e).change),{processing:r??null,syncQueue:i}}),ca=()=>({processing:null}),la=J.createStateConfig({...ra(X.process),initial:`enter`,tags:[`busy`],states:{enter:{entry:sa(),always:[{guard:({context:{processing:e}})=>!e,...X.idle},{guard:({context:{processing:e}})=>e===`apply-latest-to-manual`,target:`applyLatestToManual`},{guard:({context:{processing:e}})=>e===`apply-semantic-layout`,target:`applySemanticLayout`},{target:`executeChanges`}]},applyLatestToManual:J.createStateConfig({initial:`call`,states:{call:{invoke:{src:`applyLatest`,input:({context:e})=>{let t=e.history?.head.change.layout;return{current:t?._layout===`manual`?t:void 0,viewId:e.viewId}},onDone:{actions:Zt(Y.diagramActor,({event:e})=>({type:`update.view`,view:e.output.updated}),{delay:10}),target:`wait`},onError:{actions:[({event:e})=>{console.error(e.error)}],...X.idle}}},wait:{entry:I(ca),after:{"500ms":{actions:Wi(),...X.idle}}}}}),applySemanticLayout:J.createStateConfig({tags:[`ai-semantic-layout`],invoke:{src:`applySemanticLayout`,input:({context:e})=>({viewId:e.viewId}),onDone:{target:`decideNext`},onError:{actions:[({event:e})=>{console.error(e.error)}],target:`decideNext`}}}),executeChanges:J.createStateConfig({invoke:{src:`executeChange`,input:({context:{processing:e,syncQueue:t,viewId:n}})=>(V(e&&Bi(e)),{changes:[e,...t.filter(Bi)],viewId:n}),onDone:{actions:an(({context:e,event:t,enqueue:n})=>{n.assign({processing:null,syncQueue:e.syncQueue.filter(ne(Bi))})}),target:`decideNext`},onError:{actions:I(({event:e})=>(console.error(`executeChanges onError`,{error:e.error}),{processing:null,syncQueue:[]})),...X.idle}}}),decideNext:{entry:I(ca),always:[{guard:`has pending`,target:`enter`},{...X.idle}]}},on:{"change.*":{actions:qi()},"view.synched":{actions:()=>{}}}}),ua=J.createStateConfig({initial:`idle`,states:{idle:ia,pending:aa,suspended:oa,process:la},on:{}}),da=J.createMachine({id:`editor`,context:({input:e})=>({viewId:e.viewId,editing:null,history:null,pending:null,syncQueue:[],processing:null}),type:`parallel`,states:{editor:na,syncQueue:ua}}),fa={};function pa(e,t){return e===t?e:(t=t.map(t=>{let n=e.find(e=>e.id===t.id&&e.type===t.type&&e.source===t.source&&e.target===t.target);if(!n)return t;if(n===t)return n;let r=fe(n.data,t.data),i=r?n.data:t.data;return r||(o(n.data.hovered)&&!o(t.data.hovered)&&(i={...i,hovered:n.data.hovered}),o(n.data.dimmed)&&!o(t.data.dimmed)&&(i={...i,dimmed:n.data.dimmed}),o(n.data.active)&&!o(t.data.active)&&(i={...i,active:n.data.active})),r&&N(n.hidden,t.hidden??n.hidden)&&N(n.selected,t.selected??n.selected)&&N(n.selectable,t.selectable??n.selectable)&&N(n.focusable,t.focusable??n.focusable)&&N(n.animated,t.animated??n.animated)&&N(n.className,t.className)&&N(n.zIndex,t.zIndex??n.zIndex)&&N(n.label,t.label)&&N(n.sourceHandle,t.sourceHandle)&&N(n.targetHandle,t.targetHandle)&&N(n.style??fa,t.style??fa)?n:{...ce(n,o),...ce(t,o),data:i}}),le(e,t)?e:t)}function ma(e,t){return o(t)?pa(e,t):(t=e,e=>pa(e,t))}var ha={};function ga(e,t){return e===t?e:(t=t.map(t=>{let n=e.find(e=>e.id===t.id&&e.type===t.type);if(!n)return t;if(n===t)return n;let r=fe(n.data,t.data),i=r?n.data:t.data;r||(o(n.data.hovered)&&!o(t.data.hovered)&&(i={...i,hovered:n.data.hovered}),o(n.data.dimmed)&&!o(t.data.dimmed)&&(i={...i,dimmed:n.data.dimmed}));let{width:a,height:s}=Sn(n),c=Object.hasOwn(n,`handles`)||Object.hasOwn(t,`handles`),l=!c||N(n.handles??[],t.handles??[]);if(r&&l&&N(a,t.width??t.initialWidth)&&N(s,t.height??t.initialHeight)&&N(n.parentId??null,t.parentId??null)&&N(n.hidden,t.hidden??n.hidden)&&N(n.selected,t.selected??n.selected)&&N(n.selectable,t.selectable??n.selectable)&&N(n.focusable,t.focusable??n.focusable)&&N(n.draggable,t.draggable??n.draggable)&&N(n.dragHandle,t.dragHandle)&&N(n.className,t.className)&&N(n.zIndex,t.zIndex??n.zIndex)&&N(n.position,t.position)&&N(n.domAttributes??ha,t.domAttributes??ha)&&N(n.style??ha,t.style??ha))return n;let u=c&&l?n.handles:t.handles;return{...ce(n,(e,t)=>o(e)&&t!==`parentId`&&t!==`handles`),...`measured`in n&&{measured:{width:t.width??t.initialWidth,height:t.height??t.initialHeight}},...ce(t,o),width:t.width??t.initialWidth,height:t.height??t.initialHeight,...u&&{handles:u},data:i}}),Ut(e,t)?e:t)}function _a(e,t){return o(t)?ga(e,t):(t=e,e=>ga(e,t))}var va={top:`40px`,bottom:`22px`,left:`22px`,right:`22px`},ya=e(jn(),1),Z={dagre:{ranksep:60,nodesep:35,edgesep:25},edgeLabel:{width:140,height:10,minlen:1,weight:1},emptyNodeOffset:120,nodeWidth:330,nodeHeight:180,spacerHeight:0,compound:{labelHeight:2,paddingTop:50,paddingBottom:32}};function ba(){let e=new ya.default.graphlib.Graph({directed:!0,compound:!0,multigraph:!0});return e.setGraph({...Z.dagre,rankdir:`LR`}),e.setDefaultEdgeLabel(()=>({...Z.edgeLabel})),e.setDefaultNodeLabel(()=>({})),e}var xa=`-port`;function Sa(e,t,n){let r=new cr(t=>({id:`${e}-${t}`,portId:`${e}-${t}`})),i=yr(t);for(let t of i.sorted){let a=i.children(t).length>0,o=t.id,s=`${e}-${o}`,c=a?`${s}${xa}`:s;r.set(o,{id:s,portId:c}),n.setNode(s,{column:e,element:t,isCompound:a,portId:c,inPorts:[],outPorts:[],width:Z.nodeWidth,height:Z.nodeHeight}),a&&(n.setNode(c,{element:t,portId:c,isCompound:a,inPorts:[],outPorts:[],width:Z.nodeWidth-Z.dagre.ranksep,height:Z.compound.labelHeight}),n.setParent(c,s));let l=i.parent(t);l&&n.setParent(s,`${e}-${l.id}`)}return{...i,byId:e=>{let t=i.byId(e);return{element:t,graph:r.get(t.id)}},graphNodes:r}}function Ca(e){return ya.default.layout(e,{}),t=>{let{x:n,y:r,width:i,height:a}=e.node(t);return{position:{x:n-Math.round(i/2),y:r-Math.round(a/2)},width:i,height:a}}}var wa;(function(e){e.Empty=`@empty`})(wa||={});function Ta(e,n){let r=ba(),a=Sa(`incomers`,e.incomers,r),o=Sa(`subjects`,e.subjects,r),s=Sa(`outgoers`,e.outgoers,r),c=[];v(_(v(hr(e.incoming),D(e=>({id:e.source.id,sourceFqn:e.source.id,targetFqn:e.target.id,source:a.byId(e.source.id).graph,target:o.byId(e.target.id).graph,relation:e}))),v(hr(e.outgoing),D(e=>({id:e.target.id,sourceFqn:e.source.id,targetFqn:e.target.id,source:o.byId(e.source.id).graph,target:s.byId(e.target.id).graph,relation:e})))),D(e=>({...e,expr:`${e.source.id}->${e.target.id}`})),t(C(`expr`)),h(e=>{let t=e[0].source,n=e[0].target,i=e[0].expr;r.node(t.id).outPorts.push(n.id),r.node(n.id).inPorts.push(t.id),r.setEdge(t.portId,n.portId,{...Z.edgeLabel},i),c.push({name:i,sourceFqn:e[0].sourceFqn,targetFqn:e[0].targetFqn,source:t.id,sourceHandle:t.id+`_out`+(r.node(t.id).outPorts.length-1),target:n.id,targetHandle:n.id+`_in`+(r.node(n.id).inPorts.length-1),relations:D(e,C(`relation`))})}));for(let e of o.graphNodes.values()){let t=e.id,n=r.node(t);if(n.isCompound)continue;let i=Math.max(r.inEdges(t)?.length??0,r.outEdges(t)?.length??0);i>2&&(n.height+=(i-3)*14)}let l=[...a.graphNodes.values(),...o.graphNodes.values(),...s.graphNodes.values()];if(a.graphNodes.size==0){let e=`incomers-empty`;r.setNode(e,{column:`incomers`,element:null,isCompound:!1,portId:e,inPorts:[],outPorts:[],width:Z.nodeWidth,height:Z.nodeHeight});for(let t of o.graphNodes.values())r.setEdge(e,t.portId);l.push({id:e,portId:e})}if(s.graphNodes.size==0){let e=`outgoers-empty`;r.setNode(e,{column:`outgoers`,element:null,isCompound:!1,portId:e,inPorts:[],outPorts:[],width:Z.nodeWidth,height:Z.nodeHeight});for(let t of o.graphNodes.values())r.setEdge(t.portId,e);l.push({id:e,portId:e})}let u=r.edgeCount();if(u>10)for(let e of r.edges())r.setEdge(e,{...Z.edgeLabel,width:u>25?800:400});let d=Ca(r),f=v(l,i(e=>e.id===e.portId),b(e=>[e.id,d(e.id)]));function p(e){return f[e]??=v(r.children(e)??[],i(e=>!e.endsWith(xa)),D(e=>p(e)),re(t=>{G(t.length>0,`Node ${e} has no nested nodes`)}),ie((e,t)=>({minY:Math.min(e.minY,t.position.y),maxY:Math.max(e.maxY,t.position.y+t.height)}),{minY:1/0,maxY:-1/0}),({minY:t,maxY:n})=>{let{position:{x:r},width:i}=d(e);return t-=Z.compound.paddingTop,n+=Z.compound.paddingBottom,{position:{x:r,y:t},width:i,height:n-t}})}function m(e){let t=r.parent(e);return t?m(t)+1:0}function y(e){let t=r.children(e)??[];return t.length===0?0:1+Math.max(...t.map(y))}let x=(e,t,n)=>v(n,D((n,r)=>({port:e+`_`+t+r,topY:p(n).position.y})),oe(C(`topY`)),D(C(`port`))),S=0,w=0,[ee]=[...o.root];G(ee,`Subjects should not be empty`);let te=p(o.graphNodes.get(ee.id).id),ne=l.map(({id:e})=>{let{element:t,inPorts:i,outPorts:a,column:o}=r.node(e),{position:s,width:c,height:l}=p(e);if(!t){if(l=Math.min(te.height,300),s.y=te.position.y+te.height/2-l/2,o===`incomers`)c=te.position.x-Z.emptyNodeOffset-s.x;else{let e=s.x+c;s.x=te.position.x+te.width+Z.emptyNodeOffset,c=e-s.x}return{id:e,parent:null,x:s.x,y:s.y,title:`empty node`,description:null,technology:null,tags:[],links:[],color:`muted`,shape:`rectangle`,style:{border:`dashed`,opacity:50},kind:wa.Empty,level:0,labelBBox:{x:s.x,y:s.y,width:c,height:l},children:[],width:c,height:l,column:o,ports:{in:[],out:[]},existsInCurrentView:!1}}let u=r.parent(e),d=(r.children(e)??[]).filter(e=>!e.endsWith(xa));S=Math.min(S,s.x),w=Math.min(w,s.y);let f=n?dr(t.scopedViews(),e=>e.id!==n.id)?.id??null:null,h=n?.findNodeWithElement(t.id),g=n&&!h?dr(t.ancestors(),e=>!!n.findNodeWithElement(e.id))?.id:null,_=h??(g&&n?.findNodeWithElement(g));return{id:e,parent:u??null,x:s.x,y:s.y,title:t.title,description:_r(t.$element)??null,technology:t.technology,tags:[...t.tags],links:null,color:_?.color??t.color,shape:h?.shape??t.shape,icon:h?.icon??t.icon??`none`,modelRef:t.id,kind:t.kind,level:m(e),labelBBox:{x:s.x,y:s.y,width:c,height:l},style:T({...(h??_)?.style,...t.$element.style},[`color`,`shape`,`icon`]),navigateTo:f,...d.length>0&&{depth:y(e)},children:d,width:c,height:l,column:o,ports:{in:x(e,`in`,i),out:x(e,`out`,a)},existsInCurrentView:!!h}});return{subjectExistsInScope:!n||n.includesElement(ee.id),bounds:{x:Math.min(S,0),y:Math.min(w,0),width:r.graph().width??100,height:r.graph().height??100},nodes:ne,edges:r.edges().reduce((e,t)=>{let i=r.edge(t),a=t.name;if(!a)return e;let{name:o,source:s,sourceFqn:l,target:u,targetFqn:d,relations:f,sourceHandle:p,targetHandle:m}=K(g(c,e=>e.name===a)),h=ae(f),_=h?.title??`untitled`,v=f.length>1,y=ae(se(f.flatMap(e=>e.navigateTo?.id?e.navigateTo.id:[])));return e.push(gr({id:o,sourceFqn:l,source:s,sourceHandle:p,targetFqn:d,target:u,targetHandle:m,label:v?`${f.length} relationships`:_,navigateTo:y,color:h?.color??`gray`,existsInCurrentView:!n||f.every(e=>n.includesRelation(e.id)),points:i.points.map(e=>[e.x,e.y]),line:h?.line??`dashed`,head:h?.head,tail:h?.tail,relations:f.map(e=>e.id),parent:null})),e},[])}}function Ea(e,t,n){let r=R(5),i=Or(),a;if(r[0]!==i||r[1]!==n||r[2]!==e||r[3]!==t){let o=t?i.findView(t):null,s=Ta(vr(e,i,t,n),n===`view`?o:null);o&&(n===`global`||!s.subjectExistsInScope)&&(s.edges=s.edges.map(e=>(e.existsInCurrentView=e.relations.every(e=>o.includesRelation(e)),e))),a=Object.assign(s,{subject:e}),r[0]=i,r[1]=n,r[2]=e,r[3]=t,r[4]=a}else a=r[4];return a}function Da(e){let t=[],n=[],r=new Map,i=Xn.from(e.nodes.reduce((e,t)=>(r.set(t.id,t),t.parent||e.push({node:t,parent:null}),e),[])),a=e=>H(r.get(e),`Node not found: ${e}`),o;for(;o=i.dequeue();){let{node:e,parent:n}=o,r=E(e.children,1)||e.kind==Yn;if(r)for(let t of e.children)i.enqueue({node:a(t),parent:e});let s={x:e.x,y:e.y};n&&(s.x-=n.x,s.y-=n.y);let c=e.id,l={id:c,position:s,zIndex:r?Ze.Compound:Ze.Element,style:{width:e.width,height:e.height},initialWidth:e.width,initialHeight:e.height,...n&&{parentId:n.id}},u=e.modelRef??null,d={navigateTo:e.navigateTo??null};switch(!0){case e.kind===wa.Empty:t.push({...l,type:`empty`,data:{column:e.column}});break;case r&&!!u:t.push({...l,type:`compound`,data:{id:c,column:e.column,title:e.title,color:e.color,shape:e.shape,style:e.style,depth:e.depth??0,icon:e.icon??`none`,ports:e.ports,existsInCurrentView:e.existsInCurrentView,fqn:u,...d}});break;default:V(u,`Element should have either modelRef or deploymentRef`),t.push({...l,type:`element`,data:{id:c,column:e.column,fqn:u,title:e.title,technology:e.technology,description:e.description,height:e.height,width:e.width,color:e.color,shape:e.shape,icon:e.icon??`none`,ports:e.ports,style:e.style,existsInCurrentView:e.existsInCurrentView,tags:e.tags,...d}})}}for(let t of e.edges){let e=t.source,r=t.target,i=t.id;if(!E(t.points,2)){console.error(`edge should have at least 2 points`,t);continue}if(!E(t.relations,1)){console.error(`edge should have at least 1 relation`,t);continue}n.push({id:i,type:`relationship`,source:e,target:r,sourceHandle:t.sourceHandle,targetHandle:t.targetHandle,data:{sourceFqn:t.sourceFqn,targetFqn:t.targetFqn,relations:t.relations,color:t.color??`gray`,label:t.label,navigateTo:t.navigateTo??null,line:t.line??`dashed`,existsInCurrentView:t.existsInCurrentView},interactionWidth:20})}return{xynodes:t,xyedges:n}}var Oa=e=>e.find(e=>e.data.column===`subjects`&&d(e.parentId)),ka=tn({types:{context:{},tags:``,children:{},input:{},events:{}},actors:{layouter:Qt(async({input:e,self:t,signal:n})=>{let{subjectId:r,navigateFromNode:i,xyflow:a,xystore:o,update:s}=e,{nodes:c,width:l,height:u}=o.getState(),d=Da(s),f=()=>{let{nodes:e,edges:t}=o.getState();return{xynodes:_a(e,d.xynodes),xyedges:ma(t,d.xyedges)}},p=K(t._parent),m=a.getZoom(),h=Math.max(m,1),g=Cn(s.bounds,l,u,Qe,h,va),_=d.xynodes.find(e=>e.type!==`empty`&&e.data.column===`subjects`&&e.data.fqn===r)??Oa(d.xynodes),v=Oa(c),y=i?c.find(e=>e.id===i):c.find(e=>e.type!==`empty`&&e.data.column!==`subjects`&&e.data.fqn===r);if(!_||!y||_.type===`empty`||!v||_.data.fqn===v.data.fqn)return await a.setViewport(g),f();let b={x:_.position.x+(_.initialWidth??0)/2,y:_.position.y+(_.initialHeight??0)/2},x=$e(a.getInternalNode(v.id)),S=new Set;return c.forEach(e=>{if(e.id!==y.id){if(e.data.column===`subjects`){S.add(e.id);return}e.parentId&&(e.parentId===y.id||S.has(e.parentId))&&S.add(e.id)}}),c=_a(c,c.flatMap(e=>S.has(e.id)?[]:e.id===y.id?{...T(e,[`parentId`]),position:{x:x.x-e.initialWidth/2,y:x.y-e.initialHeight/2},zIndex:Ze.Max,hidden:!1,data:{...e.data,dimmed:!1}}:{...e,data:{...e.data,dimmed:e.data.column===`subjects`?`immediate`:!0}})),p.send({type:`update.xydata`,xynodes:c,xyedges:[]}),await lr(120),d.xynodes=d.xynodes.map(M.setDimmed(!1)),n.aborted?f():(a.setCenter(x.x,x.y,{zoom:m,duration:300,interpolate:`smooth`}),await lr(300),await a.setCenter(b.x,b.y,{zoom:m}),f())})},guards:{hasViewId:({context:e})=>e.viewId!==null,isReady:({context:e})=>e.xyflow!==null&&e.xystore!==null&&e.layouted!==null,anotherSubject:({context:e,event:t})=>t.type===`update.view`?e.layouted?.subject!==t.layouted.subject:!1}}),Aa=()=>ka.assign(({event:e})=>(L(e,`xyflow.init`),{xyflow:e.instance,xystore:e.store})),ja=()=>ka.assign(({event:e})=>(L(e,`update.view`),{layouted:e.layouted,...Da(e.layouted)})),Ma=()=>ka.createAction(({context:e})=>{G(e.xystore,`xystore is not initialized`);let{domNode:t,updateNodeInternals:n}=e.xystore.getState(),r=new Set(e.xyedges.flatMap(e=>[e.source,e.target]));if(r.size===0||!t)return;let i=new Map,a=t.querySelectorAll(`.react-flow__node`);for(let e of a){let t=e.getAttribute(`data-id`);t&&r.has(t)&&i.set(t,{id:t,nodeElement:e,force:!0})}n(i,{triggerFitView:!1})}),Na=e=>ka.createAction(({context:t,event:n})=>{e??=n.type===`fitDiagram`?n:{};let{duration:r,bounds:i}=e??{};r??=450;let{xyflow:a,xystore:o}=t;G(a,`xyflow is not initialized`),G(o,`xystore is not initialized`),i??=t.layouted?.bounds;let s=Math.max(a.getZoom(),1);if(i){let{width:e,height:t}=o.getState(),n=Cn(i,e,t,Qe,s,va);a.setViewport(n,r>0?{duration:r,interpolate:`smooth`}:void 0).catch(console.error)}else a.fitView({minZoom:Qe,maxZoom:s,padding:va,...r>0&&{duration:r,interpolate:`smooth`}}).catch(console.error)}),Pa=()=>ka.assign(({context:e,event:t})=>(L(t,`xyflow.applyNodeChanges`),{xynodes:xn(t.changes,e.xynodes)})),Fa=()=>ka.assign(({context:e,event:t})=>(L(t,`xyflow.applyEdgeChanges`),{xyedges:_n(t.changes,e.xyedges)})),Ia=()=>ka.enqueueActions(({system:e,event:t})=>{if(t.type!==`xyflow.edgeClick`)return;let n=Y(e).diagramActorRef,r=t.edge.data.relations;E(r,1)&&n.send({type:`open.source`,relation:r[0]})}),La=()=>ka.assign({xyflow:null,layouted:null,xystore:null,xyedges:[],xynodes:[]}),Ra=ka.createMachine({id:`relationships-browser`,context:({input:e})=>({subject:e.subject,viewId:e.viewId,scope:e.viewId?e.scope:`global`,closeable:e.closeable??!0,enableSelectSubject:e.enableSelectSubject??!0,enableChangeScope:e.enableChangeScope??!0,xyflow:null,xystore:null,layouted:null,navigateFromNode:null,xynodes:[],xyedges:[]}),initial:`initializing`,on:{"xyflow.applyNodeChanges":{actions:Pa()},"xyflow.applyEdgeChanges":{actions:Fa()}},states:{initializing:{on:{"xyflow.init":{actions:Aa(),target:`isReady`},"update.view":{actions:ja(),target:`isReady`},stop:`closed`,close:`closed`}},isReady:{always:[{guard:`isReady`,actions:[Na({duration:0}),F({type:`xyflow.updateNodeInternals`},{delay:150})],target:`active`},{target:`initializing`}]},active:{initial:`idle`,tags:[`active`],on:{"xyflow.nodeClick":{actions:an(({event:e,enqueue:t})=>{if(`fqn`in e.node.data){let n=e.node.data.fqn;t.raise({type:`navigate.to`,subject:n,fromNode:e.node.id})}})},"xyflow.edgeClick":[{guard:`hasViewId`,actions:an(({event:e,context:t,system:n,enqueue:r})=>{e.edge.selected||e.edge.data.relations.length>1?r.sendTo(Y(n).overlaysActorRef,{type:`open.relationshipDetails`,viewId:t.viewId,source:e.edge.data.sourceFqn,target:e.edge.data.targetFqn}):r(Ia())})},{actions:Ia()}],"navigate.to":{actions:[I({subject:({event:e})=>e.subject,viewId:({event:e,context:t})=>e.viewId??t.viewId??null,navigateFromNode:({event:e})=>e.fromNode??null})]},"xyflow.paneDblClick":{actions:Na()},"update.view":{actions:ja(),target:`.layouting`},"change.scope":{actions:I({scope:({event:e})=>e.scope})},"xyflow.updateNodeInternals":{actions:Ma()},fitDiagram:{actions:Na()},"xyflow.resized":{actions:[on(`fitDiagram`),F({type:`fitDiagram`},{id:`fitDiagram`,delay:300})]},"xyflow.init":{actions:Aa()},"xyflow.unmount":{target:`initializing`},close:`closed`},states:{idle:{on:{"xyflow.edgeMouseEnter":{actions:[I({xyedges:({context:e,event:t})=>{let n=e.xyedges.some(e=>e.data.dimmed!==!1||e.selected);return e.xyedges.map(e=>e.id===t.edge.id?M.setData(e,{hovered:!0,dimmed:!1}):n&&!e.selected?M.setDimmed(e,`immediate`):e)}}),on(`undim.edges`),on(`dim.nonhovered.edges`),F({type:`dim.nonhovered.edges`},{id:`dim.nonhovered.edges`,delay:200})]},"xyflow.edgeMouseLeave":{actions:[I({xyedges:({context:e,event:t})=>e.xyedges.map(e=>e.id===t.edge.id?M.setHovered(e,!1):e)}),on(`dim.nonhovered.edges`),F({type:`undim.edges`},{id:`undim.edges`,delay:400})]},"dim.nonhovered.edges":{actions:I({xyedges:({context:e})=>e.xyedges.map(e=>e.data.hovered?e:M.setDimmed(e,e.data.dimmed===`immediate`?`immediate`:!0))})},"undim.edges":{actions:I({xyedges:({context:e})=>e.xyedges.map(M.setDimmed(!1))})},"xyflow.selectionChange":{actions:an(({event:e,context:t,enqueue:n})=>{e.edges.length===0&&t.xyedges.some(e=>e.data.dimmed)&&!t.xyedges.some(e=>e.data.hovered)&&n.raise({type:`undim.edges`})})}}},layouting:{invoke:{id:`layouter`,src:`layouter`,input:({context:e})=>({subjectId:e.subject,navigateFromNode:e.navigateFromNode,xyflow:K(e.xyflow),xystore:K(e.xystore),update:K(e.layouted)}),onDone:{target:`idle`,actions:an(({enqueue:e,event:t})=>{e.assign({xynodes:t.output.xynodes,xyedges:t.output.xyedges,navigateFromNode:null}),e.raise({type:`fitDiagram`,duration:200},{id:`fitDiagram`,delay:50});for(let t=1;t<8;t++)e.raise({type:`xyflow.updateNodeInternals`},{delay:120+t*75})})}},on:{"update.xydata":{actions:I({xynodes:({event:e})=>e.xynodes,xyedges:({event:e})=>e.xyedges})},"xyflow.applyEdgeChanges":{},"xyflow.applyNodeChanges":{}}}}},closed:{id:`closed`,type:`final`,entry:La()}},exit:La()}),za=tn({types:{context:{},input:{},events:{},children:{}},actors:{relationshipsBrowserLogic:Ra}}).createMachine({id:`element-details`,context:({input:e})=>({...e,initiatedFrom:{node:e.initiatedFrom?.node??null,clientRect:e.initiatedFrom?.clientRect??null}}),initial:`active`,states:{active:{entry:en(`relationshipsBrowserLogic`,{id:({self:e})=>`${e.id}-relationships`,input:({context:e})=>({subject:e.subject,viewId:e.currentView.id,scope:`view`,enableSelectSubject:!1,enableChangeScope:!0,closeable:!1})}),exit:[Zt(({self:e})=>`${e.id}-relationships`,{type:`close`}),Xt(({self:e})=>`${e.id}-relationships`)],on:{"change.subject":{actions:I({subject:({event:e})=>e.subject})},close:`closed`}},closed:{id:`closed`,type:`final`}}});function Ba(e){let t=[],n=[],r=new Map,i=Xn.from(e.nodes.reduce((e,t)=>(r.set(t.id,t),t.parent||e.push({node:t,parent:null}),e),[])),a=e=>H(r.get(e),`Node not found: ${e}`),o;for(;o=i.dequeue();){let{node:e,parent:n}=o,r=E(e.children,1);if(r)for(let t of e.children)i.enqueue({node:a(t),parent:e});let s={x:e.x,y:e.y};n&&(s.x-=n.x,s.y-=n.y);let c=e.id,l={id:c,draggable:!1,deletable:!1,position:s,zIndex:r?Ze.Compound:Ze.Element,style:{width:e.width,height:e.height},initialWidth:e.width,initialHeight:e.height,...n&&{parentId:n.id}},u=e.modelRef,d={navigateTo:e.navigateTo??null};switch(!0){case r:t.push({...l,type:`compound`,data:{id:c,column:e.column,title:e.title,color:e.color,style:e.style,depth:e.depth??0,icon:e.icon??`none`,ports:e.ports,fqn:u,...d}});break;default:t.push({...l,type:`element`,data:{id:c,column:e.column,fqn:u,title:e.title,technology:e.technology,description:e.description??null,height:e.height,width:e.width,color:e.color,shape:e.shape,icon:e.icon??`none`,ports:e.ports,style:e.style,tags:e.tags,...d}})}}for(let{source:t,target:r,relationId:i,label:a,technology:o,description:s,navigateTo:c=null,color:l=`gray`,line:u=`dashed`,...d}of e.edges){let e=d.id;n.push({id:e,type:`relationship`,source:t,target:r,sourceHandle:d.sourceHandle,targetHandle:d.targetHandle,deletable:!1,data:{relationId:i,label:a,color:l,navigateTo:c,line:u,description:s??null,...o&&{technology:o}}})}return{xynodes:t,xyedges:n,bounds:e.bounds}}function Va(e){return`edgeId`in e?(V(n(e.edgeId),`edgeId is required`),{edgeId:e.edgeId}):{source:e.source,target:e.target}}var Ha={x:`22px`,y:`22px`},Q=tn({types:{context:{},events:{},emitted:{},children:{}},actors:{relationshipDetails:tn({types:{context:{},input:{},tags:{},events:{}},actions:{"xyflow:fitDiagram":({context:e},t)=>{let{duration:n,bounds:r}=t??{};n??=450;let{xyflow:i,xystore:a}=e;V(i,`xyflow is not initialized`),V(a,`xystore is not initialized`),r??=e.bounds;let o=Math.max(i.getZoom(),1);if(r){let{width:e,height:t}=a.getState(),s=Cn(r,e,t,Qe,o,Ha);i.setViewport(s,n>0?{duration:n}:void 0).catch(console.error)}else i.fitView({minZoom:Qe,maxZoom:o,padding:Ha,...n>0&&{duration:n,interpolate:`smooth`}}).catch(console.error)},"xyflow:updateNodeInternals":({context:e})=>{V(e.xystore,`xystore is not initialized`);let{domNode:t,updateNodeInternals:n}=e.xystore.getState(),r=new Set(e.xyedges.flatMap(e=>[e.source,e.target]));if(r.size===0||!t)return;let i=new Map;for(let e of r){let n=t.querySelector(`.react-flow__node[data-id="${e}"]`);n&&i.set(e,{id:e,nodeElement:n,force:!0})}n(i,{triggerFitView:!1})},updateXYFlow:I(({context:e,event:t})=>{L(t,`xyflow.init`);let n=e.initialized;return n.xyflow||(n={...n,xyflow:!0}),{initialized:n,xyflow:t.instance,xystore:t.store}}),updateLayoutData:I(({context:e,event:t})=>{L(t,`update.layoutData`);let{xynodes:n,xyedges:r,bounds:i}=Ba(t.data),a=e.initialized;return a.xydata||(a={...a,xydata:!0}),{initialized:a,xynodes:_a(e.xynodes,n),xyedges:ma(e.xyedges,r),bounds:Ut(e.bounds,i)?e.bounds:i}}),"open relationship source":an(({system:e,event:t})=>{if(t.type!==`xyflow.edgeClick`)return;let n=Y(e).diagramActorRef,r=t.edge.data.relationId;r&&n.send({type:`open.source`,relation:r})})},guards:{isReady:({context:e})=>e.initialized.xydata&&e.initialized.xyflow,"enable: navigate.to":()=>!0}}).createMachine({initial:`initializing`,context:({input:e})=>({subject:Va(e),viewId:e.viewId,bounds:{x:0,y:0,width:200,height:200},initialized:{xydata:!1,xyflow:!1},xyflow:null,xystore:null,xynodes:[],xyedges:[]}),states:{initializing:{on:{"xyflow.init":{actions:`updateXYFlow`,target:`isReady`},"update.layoutData":{actions:`updateLayoutData`,target:`isReady`},close:{target:`closed`}}},isReady:{always:[{guard:`isReady`,actions:[{type:`xyflow:fitDiagram`,params:{duration:0}},F({type:`xyflow.updateNodeInternals`},{delay:50})],target:`ready`},{target:`initializing`}]},ready:{on:{"xyflow.edgeMouseEnter":{actions:[I({xyedges:({context:e,event:t})=>{let n=e.xyedges.some(e=>e.data.dimmed===!0||e.data.dimmed===`immediate`);return e.xyedges.map(e=>e.id===t.edge.id?M.setData(e,{hovered:!0,dimmed:!1}):n&&!e.selected?M.setDimmed(e,`immediate`):e)}}),on(`undim.edges`),on(`dim.nonhovered.edges`),F({type:`dim.nonhovered.edges`},{id:`dim.nonhovered.edges`,delay:100})]},"xyflow.edgeMouseLeave":{actions:[I({xyedges:({context:e,event:t})=>e.xyedges.map(e=>e.id===t.edge.id?M.setHovered(e,!1):e)}),on(`dim.nonhovered.edges`),F({type:`undim.edges`},{id:`undim.edges`,delay:400})]},"dim.nonhovered.edges":{actions:I({xyedges:({context:e})=>e.xyedges.map(e=>M.setDimmed(e,e.data.hovered!==!0))})},"undim.edges":{actions:I({xyedges:({context:e})=>e.xyedges.some(e=>e.selected===!0)?e.xyedges.map(e=>M.setDimmed(e,e.selected===!0?!1:e.data.dimmed||`immediate`)):e.xyedges.map(M.setDimmed(!1))})},"xyflow.selectionChange":{actions:an(({event:e,context:t,enqueue:n})=>{e.edges.length===0&&t.xyedges.some(e=>e.data.dimmed)&&!t.xyedges.some(e=>e.data.hovered)&&n.raise({type:`undim.edges`})})},"update.layoutData":{actions:[`updateLayoutData`,on(`fitDiagram`),F({type:`fitDiagram`,duration:0},{id:`fitDiagram`,delay:50}),F({type:`xyflow.updateNodeInternals`},{delay:75})]},"xyflow.init":{actions:`updateXYFlow`},"xyflow.applyNodeChanges":{actions:I({xynodes:({context:e,event:t})=>xn(t.changes,e.xynodes)})},"xyflow.applyEdgeChanges":{actions:I({xyedges:({context:e,event:t})=>_n(t.changes,e.xyedges)})},"xyflow.paneDblClick":{actions:`xyflow:fitDiagram`},"xyflow.edgeClick":{actions:`open relationship source`},"navigate.to":{actions:I({subject:({event:e})=>Va(e.params),viewId:({context:e,event:t})=>t.params.viewId??e.viewId})},close:{target:`closed`}},exit:I({xyedges:[],xynodes:[],initialized:{xydata:!1,xyflow:!1},xyflow:null,xystore:null})},closed:{type:`final`}},on:{fitDiagram:{actions:{type:`xyflow:fitDiagram`,params:C(`event`)}},"xyflow.resized":{actions:[on(`fitDiagram`),F({type:`fitDiagram`},{id:`fitDiagram`,delay:200})]},"xyflow.updateNodeInternals":{actions:`xyflow:updateNodeInternals`}}}),elementDetails:za,relationshipsBrowser:Ra,hotkey:ln(({sendBack:e})=>{let t=Ue([[`Escape`,t=>{t.stopPropagation(),e({type:`close`})},{preventDefault:!0}]]);return document.body.addEventListener(`keydown`,t,{capture:!0}),()=>{document.body.removeEventListener(`keydown`,t,{capture:!0})}})},guards:{"has overlays?":({context:e})=>e.overlays.length>0,"close specific overlay?":({event:e})=>e.type===`close`&&n(e.actorId),"last: is relationshipDetails?":({context:e})=>de(e.overlays)?.type===`relationshipDetails`,"last: is relationshipsBrowser?":({context:e})=>de(e.overlays)?.type===`relationshipsBrowser`}}),Ua=e=>Q.emit({type:`opened`,overlay:e.split(`-`)[0]}),Wa=e=>Q.emit({type:`closed`,overlay:e.split(`-`)[0]}),Ga=()=>Q.emit({type:`idle`}),Ka=()=>Q.enqueueActions(({context:e,enqueue:t})=>{if(e.overlays.length===0)return;let n=de(e.overlays)?.id;n&&(t.sendTo(n,{type:`close`}),t.stopChild(n),t.assign({overlays:e.overlays.filter(e=>e.id!==n)}),t(Wa(n)))}),qa=()=>Q.enqueueActions(({context:e,enqueue:t,event:r})=>{L(r,`close`);let i=r.actorId;if(!n(i))return;let a=e.overlays.find(e=>e.id===i)?.id;a&&(t.sendTo(a,{type:`close`}),t.stopChild(a),t.assign({overlays:e.overlays.filter(e=>e.id!==a)}),t(Wa(a)))}),Ja=()=>Q.enqueueActions(({context:e,enqueue:t})=>{for(let{id:n}of x(e.overlays))t.sendTo(n,{type:`close`}),t.stopChild(n),t(Wa(n));t.assign({overlays:[]})}),Ya=()=>Q.enqueueActions(({context:e,enqueue:t,event:n})=>{if(L(n,`open.elementDetails`),e.overlays.some(e=>e.type===`elementDetails`&&e.subject===n.subject))return;let r=`elementDetails-${e.seq}`;t.spawnChild(`elementDetails`,{id:r,input:n,syncSnapshot:!0}),t.assign({seq:e.seq+1,overlays:[...e.overlays,{id:r,type:`elementDetails`,subject:n.subject}]}),t(Ua(r))}),Xa=()=>Q.enqueueActions(({context:e,enqueue:t,event:n})=>{L(n,`open.relationshipDetails`);let r=de(e.overlays);if(r?.type===`relationshipDetails`){t.sendTo(r.id,{...n,type:`navigate.to`});return}let i=`relationshipDetails-${e.seq}`;t.spawnChild(`relationshipDetails`,{id:i,input:n,syncSnapshot:!0}),t.assign({seq:e.seq+1,overlays:[...e.overlays,{id:i,type:`relationshipDetails`}]}),t(Ua(i))}),Za=()=>Q.enqueueActions(({context:e,enqueue:t,event:n})=>{L(n,`open.relationshipsBrowser`);let r=de(e.overlays);if(r?.type===`relationshipsBrowser`){t.sendTo(r.id,{type:`navigate.to`,subject:n.subject,viewId:n.viewId});return}let i=`relationshipsBrowser-${e.seq}`;t.spawnChild(`relationshipsBrowser`,{id:i,input:n,syncSnapshot:!0}),t.assign({seq:e.seq+1,overlays:[...e.overlays,{id:i,type:`relationshipsBrowser`,subject:n.subject}]}),t(Ua(i))}),Qa=()=>Q.enqueueActions(({enqueue:e,event:t})=>{switch(L(t,[`open.elementDetails`,`open.relationshipDetails`,`open.relationshipsBrowser`]),t.type){case`open.elementDetails`:e(Ya());break;case`open.relationshipDetails`:e(Xa());break;case`open.relationshipsBrowser`:e(Za());break}}),$a=()=>Q.spawnChild(`hotkey`,{id:`hotkey`}),eo=()=>Q.stopChild(`hotkey`),to=Q.createMachine({id:`overlays`,context:()=>({seq:1,overlays:[]}),initial:`idle`,on:{"close.all":{actions:Ja(),target:`#idle`}},states:{idle:{id:`idle`,entry:[Ga()],on:{"open.*":{actions:Qa(),target:`opened`}}},opened:{entry:$a(),exit:eo(),initial:`hasOverlays`,states:{hasOverlays:{on:{"open.*":{actions:Qa()},close:[{guard:`close specific overlay?`,actions:qa(),target:`decide`},{actions:Ka(),target:`decide`}]}},decide:{always:[{guard:`has overlays?`,target:`hasOverlays`},{target:`#idle`}]}}},final:{entry:[Ja(),eo()],type:`final`}}}),no=tn({types:{context:{},events:{}},delays:{MAX_WAIT_ANIMATION_END:1e3},actions:{"reset navigateTo":I(()=>({navigateTo:null})),"assign navigateTo":I(({event:e})=>(L(e,[`navigate.to`]),{navigateTo:{viewId:e.viewId,focusOnElement:e.focusOnElement}})),"change searchValue":I({searchValue:({event:e,context:t})=>(L(e,[`change.search`,`open`]),e.search??t.searchValue)}),"reset pickViewFor":I(()=>({pickViewFor:null}))}}).createMachine({id:`search`,context:{openedWithSearch:null,searchValue:``,pickViewFor:null,navigateTo:null},initial:`inactive`,states:{inactive:{entry:[`reset navigateTo`,`reset pickViewFor`],on:{open:{target:`opened`,actions:[I({openedWithSearch:({event:e})=>e.search??null,searchValue:({event:e,context:t})=>e.search??t.searchValue})]}}},opened:{on:{open:{actions:`change searchValue`},"change.search":{actions:`change searchValue`},"pickview.open":{target:`pickView`,actions:I({pickViewFor:({event:e})=>e.elementFqn})},"navigate.to":{target:`waitAnimationEnd`,actions:`assign navigateTo`},close:{target:`inactive`}}},pickView:{on:{"pickview.close":{target:`opened`,actions:`reset pickViewFor`},"navigate.to":{target:`waitAnimationEnd`,actions:`assign navigateTo`},close:{target:`inactive`}}},waitAnimationEnd:{on:{"animation.presence.end":{target:`inactive`,actions:an(({context:e,system:t,enqueue:n})=>{let r=e.navigateTo;if(!r)return;let i=Y(t).diagramActorRef;if(r.focusOnElement&&i.getSnapshot().context.view.id===r.viewId){n.sendTo(i,{type:`focus.node`,nodeId:r.focusOnElement});return}n.sendTo(i,{type:`navigate.to`,...r})})}},after:{MAX_WAIT_ANIMATION_END:{target:`inactive`}}}}}),ro=ln(({sendBack:e})=>{let t=Ue([[`Escape`,t=>{t.stopPropagation(),e({type:`key.esc`})},{preventDefault:!0}]]),n=Ue([[`ArrowLeft`,t=>{t.stopPropagation(),e({type:`key.arrow.left`})},{preventDefault:!0}],[`ArrowUp`,t=>{t.stopPropagation(),e({type:`key.arrow.up`})},{preventDefault:!0}],[`ArrowRight`,t=>{t.stopPropagation(),e({type:`key.arrow.right`})},{preventDefault:!0}],[`ArrowDown`,t=>{t.stopPropagation(),e({type:`key.arrow.down`})},{preventDefault:!0}]]);return document.body.addEventListener(`keydown`,t),document.body.addEventListener(`keydown`,n,{capture:!0}),()=>{document.body.removeEventListener(`keydown`,t),document.body.removeEventListener(`keydown`,n,{capture:!0})}}),io=ln(({sendBack:e})=>{let t=()=>{e({type:`media.print.on`})},n=()=>{e({type:`media.print.off`})};return window.addEventListener(`beforeprint`,t),window.addEventListener(`afterprint`,n),()=>{window.removeEventListener(`beforeprint`,t),window.removeEventListener(`afterprint`,n)}}),ao=e=>{let t=e.toggledFeatures,n=p(e.activeWalkthrough),r=e.features.enableCompareWithLatest&&(t.enableCompareWithLatest??!1)&&p(e.view._layout)&&!n;return{enableCompareWithLatest:r,enableReadOnly:e.features.enableReadOnly||(t.enableReadOnly??!1)||n||r&&e.view._layout===`auto`}},oo=e=>ao(e).enableReadOnly,$=tn({types:{context:{},input:{},children:{},events:{},emitted:{}},actors:{hotkeyActorLogic:ro,overlaysActorLogic:to,searchActorLogic:no,mediaPrintActorLogic:io,editorActor:da},guards:{isReady:({context:e})=>e.initialized.xydata&&e.initialized.xyflow,"enabled: Editor":({context:e})=>e.features.enableEditor,"enabled: FitView":({context:e})=>e.features.enableFitView,"enabled: FocusMode":({context:e})=>e.features.enableFocusMode&&oo(e),"enabled: Readonly":({context:e})=>oo(e),"enabled: RelationshipDetails":({context:e})=>e.features.enableRelationshipDetails,"enabled: Search":({context:e})=>e.features.enableSearch,"enabled: ElementDetails":({context:e})=>e.features.enableElementDetails,"enabled: OpenSource":({context:e})=>e.features.enableVscode,"enabled: DynamicViewWalkthrough":({context:e})=>e.features.enableDynamicViewWalkthrough,"focus.node: autoUnfocus":({event:e})=>(L(e,`focus.node`),e.autoUnfocus===!0),"enabled: Overlays":({context:e})=>e.features.enableElementDetails||e.features.enableRelationshipBrowser||e.features.enableRelationshipDetails,"not readonly":({context:e})=>!oo(e),"is dynamic view":({context:e})=>e.view._type===`dynamic`,"is same view":({context:e,event:t})=>{if(L(t,[`update.view`,`navigate.to`]),t.type===`update.view`)return e.view.id===t.view.id;if(t.type===`navigate.to`)return e.view.id===t.viewId;ir(t)},"is another view":({context:e,event:t})=>{if(L(t,[`update.view`,`navigate.to`]),t.type===`update.view`)return e.view.id!==t.view.id;if(t.type===`navigate.to`)return e.view.id!==t.viewId;ir(t)},"click: node has modelFqn":({event:e})=>(L(e,`xyflow.nodeClick`),`modelFqn`in e.node.data),"click: selected node":({event:e})=>(L(e,`xyflow.nodeClick`),e.node.selected===!0),"click: same node":({context:e,event:t})=>(L(t,`xyflow.nodeClick`),e.lastClickedNode?.id===t.node.id),"click: focused node":({context:e,event:t})=>(L(t,`xyflow.nodeClick`),e.focusedNode===t.node.id),"click: node has connections":({context:e,event:t})=>(L(t,`xyflow.nodeClick`),e.xyedges.some(e=>e.source===t.node.id||e.target===t.node.id)),"click: selected edge":({event:e})=>(L(e,[`xyflow.edgeClick`,`xyflow.edgeDoubleClick`]),e.edge.selected===!0||e.edge.data.active===!0),"click: active walkthrough step":({context:e,event:t})=>{if(L(t,[`xyflow.edgeClick`,`xyflow.edgeDoubleClick`]),!e.activeWalkthrough)return!1;let{stepId:n}=e.activeWalkthrough;return t.edge.id===n}}}),so={idle:`#idle`,focused:`#focused`,walkthrough:`#walkthrough`,printing:`#printing`,navigating:`#navigating`},co=ee(so,e=>({target:e}));function lo({icon:e,onClick:t}){return z(Pe,{className:k(`nodrag nopan`,Ur()),onPointerDownCapture:A,onClick:t,role:`button`,onDoubleClick:A,children:e??z(Ft,{})})}var uo=Je({base:{transitionDuration:`normal`},variants:{delay:{true:{transitionDelay:{base:`0.2s`,_hover:`0s`}}}}}),fo={normal:{scale:1},hovered:{scale:1.2},whileHover:{scale:1.4},whileTap:{scale:1}};function po(e){let t=R(6),{data:n,icon:r,onClick:i}=e,{hovered:a}=n,o=a===void 0?!1:a,s=Ve(o,o?130:0)[0]&&o,c=s?`hovered`:`normal`,l;return t[0]!==r||t[1]!==s||t[2]!==o||t[3]!==i||t[4]!==c?(l=z(En,{initial:!1,variants:fo,animate:c,whileHover:`whileHover`,whileTap:`whileTap`,className:`likec4-compound-details details-button`,tabIndex:-1,children:z(Pe,{className:k(`nodrag nopan`,uo({delay:o&&!s}),it({variant:`transparent`})),tabIndex:-1,onClick:i,onDoubleClick:A,children:r??z(Nt,{stroke:1.8,style:{width:`75%`}})})}),t[0]=r,t[1]=s,t[2]=o,t[3]=i,t[4]=c,t[5]=l):l=t[5],l}function mo(e){let t=R(2),{nodeProps:n,className:r,children:i,style:a,...o}=e,{data:s}=n,{hovered:c,dimmed:l,...u}=s,d=c===void 0?!1:c,f=l===void 0?!1:l,p=lt(),m=y(u.style.opacity??100,{min:0,max:100}),h=m<98,g=m/100*50,_;t[0]===g?_=t[1]:(_=y(g,{min:0,max:50}),t[0]=g,t[1]=_);let v=50+_,b=zr({isTransparent:h,inverseColor:m<70,borderStyle:u.style.border??(h?p.defaults.group.border:`none`)}),x=y(u.depth??1,{min:1,max:5});return z(En,{className:k(b,r),initial:!1,"data-likec4-hovered":d,"data-likec4-color":u.color,"data-compound-depth":x,...f!==!1&&{"data-likec4-dimmed":f},tabIndex:-1,animate:{"--_border-transparency":`${v}%`,"--_compound-transparency":`${m}%`},style:a,...o,children:i})}function ho({data:e}){return B(`div`,{className:`likec4-compound-title-container`,children:[nt({element:e,className:`likec4-compound-icon`}),z(`div`,{className:`likec4-compound-title`,children:e.title})]})}var go={normal:{originX:.4,originY:.6,scale:1,opacity:.5},hovered:{originX:.4,originY:.6,scale:1.25,opacity:.9},selected:{originX:.4,originY:.6,scale:1.25,opacity:.9},whileHover:{scale:1.4,opacity:1},whileTap:{scale:1.15}},_o=O({position:`absolute`,top:`0.5`,right:`0.5`,_shapeBrowser:{right:`[5px]`},_shapeCylinder:{top:`[14px]`},_shapeStorage:{top:`[14px]`},_shapeQueue:{top:`[1px]`,right:`3`},_smallZoom:{display:`none`},_print:{display:`none`}});function vo({selected:e=!1,data:{hovered:t=!1},icon:n,onClick:r}){let i;switch(!0){case t:i=`hovered`;break;case e:i=`selected`;break;default:i=`normal`}return z(kn,{className:k(_o,`details-button`),children:z(Pe,{className:k(`nodrag nopan`,it({variant:`transparent`})),component:On,initial:!1,variants:go,animate:i,whileHover:`whileHover`,whileTap:`whileTap`,onClick:r,onDoubleClick:A,tabIndex:-1,children:n??z(Nt,{stroke:1.8,style:{width:`75%`}})})})}function yo({edgeProps:{data:e},svgPath:t}){let n=e.drifts;return!n||n.length===0?null:z(`path`,{className:k(`react-flow__edge-path`,O({pointerEvents:`none`,stroke:`likec4.compare.manual.outline`,fill:`none`,strokeWidth:{base:`8px`,_whenHovered:`12px`},strokeOpacity:.5})),d:t,strokeLinecap:`round`})}var bo=O({overflow:`visible`,position:`absolute`,pointerEvents:`none`,top:`0`,left:`0`,mixBlendMode:{_dark:`screen`,_light:`multiply`},zIndex:`[100]`}),xo=O({fill:`[var(--xy-edge-stroke)]`,stroke:`transparent`,fillOpacity:.5,strokeWidth:10,r:4,cursor:`grab`,pointerEvents:`all`,visibility:`hidden`,transitionDuration:`120ms`,transitionProperty:`visibility, fill, fill-opacity, r`,transitionTimingFunction:`inOut`,transitionDelay:`20ms`,":where([data-likec4-selected='true'], [data-likec4-hovered='true']) &":{visibility:`visible`,fillOpacity:1,transitionTimingFunction:`out`,transitionDelay:`0ms`},":where([data-likec4-selected='true']) &":{r:6},":is([data-likec4-hovered='true']) &":{r:8},_hover:{fill:`mantine.colors.primary.filledHover`,r:10,transitionDuration:`100ms`},_groupActive:{cursor:`grabbing`}});function So(e){let t=R(21),{sourceX:n,sourceY:r,targetX:i,targetY:a,data:o}=e,s;t[0]!==o.controlPoints||t[1]!==o.points?(s=()=>o.controlPoints??at(o.points),t[0]=o.controlPoints,t[1]=o.points,t[2]=s):s=t[2];let[c,l]=Un(s),u;t[3]!==o.controlPoints||t[4]!==o.points?(u=()=>{let e=o.controlPoints??at(o.points);l(t=>N(t,e)?t:e)},t[3]=o.controlPoints,t[4]=o.points,t[5]=u):u=t[5];let d;t[6]===o.controlPoints?d=t[7]:(d=o.controlPoints??[],t[6]=o.controlPoints,t[7]=d);let f;t[8]!==o.points||t[9]!==d?(f=[o.points,d],t[8]=o.points,t[9]=d,t[10]=f):f=t[10],Et(u,f);let p;t[11]!==c||t[12]!==o.dir||t[13]!==n||t[14]!==r||t[15]!==i||t[16]!==a?(p=e=>{let{x:t,y:s}=e,u=W(n,r),d=W(i,a),f=[o.dir===`back`?d:u,...c.map(W)||[],o.dir===`back`?u:d],p=W(t,s).round(),m=0,h=1/0;for(let e=0;e<f.length-1;e++){let t=f[e],n=f[e+1],r=n.subtract(t),i=p.subtract(t),a=p.subtract(n);if(r.dot(i)*r.dot(a)<0){let t=Math.abs(r.cross(i))/r.length();t<h&&(h=t,m=e)}}let g=c.slice();return g.splice(m,0,{x:p.x,y:p.y}),l(g),g},t[11]=c,t[12]=o.dir,t[13]=n,t[14]=r,t[15]=i,t[16]=a,t[17]=p):p=t[17];let m=j(p),h;return t[18]!==c||t[19]!==m?(h={controlPoints:c,setControlPoints:l,insertControlPoint:m},t[18]=c,t[19]=m,t[20]=h):h=t[20],h}var Co=Mn().curve(Nn.alpha(.7)).x(e=>Math.trunc(e.x)).y(e=>Math.trunc(e.y));function wo(e){let t=R(16),{props:n,controlPoints:r,isControlPointDragging:i}=e,{sourceX:a,sourceY:o,source:s,target:c,targetX:l,targetY:u,data:d}=n,f;t[0]!==s||t[1]!==c?(f=e=>{let{nodeLookup:t}=e,n=Sn(K(t.get(s),`source node ${s} not found`)),r=Sn(K(t.get(c),`target node ${c} not found`));return[Math.ceil(n.width),Math.ceil(n.height),Math.ceil(r.width),Math.ceil(r.height)]},t[0]=s,t[1]=c,t[2]=f):f=t[2];let[h,g,_,v]=Xe(f,Ut);if(!(p(d.controlPoints)||i)){let e;return t[3]===d.points?e=t[4]:(e=st(d.points),t[3]=d.points,t[4]=e),e}let y;if(t[5]!==r||t[6]!==d.dir||t[7]!==g||t[8]!==h||t[9]!==a||t[10]!==o||t[11]!==v||t[12]!==_||t[13]!==l||t[14]!==u){let e=W(a,o).trunc(),n=W(l,u).trunc(),i={...e.subtract(W(h,g).divide(2)).trunc().toObject(),width:h,height:g},s={...n.subtract(W(_,v).divide(2)).trunc().toObject(),width:_,height:v};y=K(Co(d.dir===`back`?[n,tt(s,m(r)??e,6),...r,tt(i,de(r)??n,6),e]:[e,tt(i,m(r)??n,6),...r,tt(s,de(r)??e,6),n])),t[5]=r,t[6]=d.dir,t[7]=g,t[8]=h,t[9]=a,t[10]=o,t[11]=v,t[12]=_,t[13]=l,t[14]=u,t[15]=y}else y=t[15];return y}var To=e=>{let t=e.getPointAtLength(e.getTotalLength()*.5);return{x:Math.round(t.x),y:Math.round(t.y)}},Eo=St(e=>{let[t,n]=Un(!1),r=Hn(t);r.current=t;let i=gt(),a=P(),{enableNavigateTo:o,enableReadOnly:s,enableCompareWithLatest:c}=q(),l=!s,{id:u,selected:d=!1,data:{labelBBox:f,labelXY:p,...m}}=e,h=o&&!t?m.navigateTo:void 0,{controlPoints:g,setControlPoints:_,insertControlPoint:v}=So(e),y=wo({props:e,controlPoints:g,isControlPointDragging:t}),b=f?.x??0,x=f?.y??0,[S,C]=yi({x:p?.x??b,y:p?.y??x},rt);Et(()=>{r.current||C({x:b,y:x})},[b,x]);let w=Hn(null);Vt(()=>{let e=w.current;!e||!t||C(To(e))},[y,t]);let ee=j(e=>{let t=f&&w.current?To(w.current):null;t?a.updateEdgeData(u,{controlPoints:e,labelBBox:{...f,...t}}):a.updateEdgeData(u,{controlPoints:e}),a.stopEditing(!0),n(!1)}),te=j(()=>{a.startEditing(`edge`),n(!0)}),ne=j(()=>{a.stopEditing(),n(!1)}),T=j(e=>{_(e),requestAnimationFrame(()=>{ee(e)})}),re=j(e=>{a.startEditing(`edge`),n(!0),_(e),requestAnimationFrame(()=>{ee(e)})}),ie=j(e=>{if(e.pointerType!==`mouse`||e.button!==2&&!d)return;e.stopPropagation(),e.preventDefault(),a.startEditing(`edge`);let t=v(i.screenToFlowPosition({x:e.clientX,y:e.clientY},{snapToGrid:!1}));a.updateEdgeData(u,{controlPoints:t}),a.stopEditing(!0)});return t&&!e.data.hovered&&(e={...e,data:{...e.data,hovered:!0}}),B(Wn,{children:[B(ft,{...e,className:O({"& .react-flow__edge-interaction":{cursor:l&&d?`copy`:void 0}}),children:[z(dt,{edgeProps:e,svgPath:y,ref:w,isDragging:t,...l&&{onEdgePointerDown:ie}}),c&&z(yo,{edgeProps:e,svgPath:y}),f&&z(_t,{edgeProps:e,labelPosition:t?S:{x:b,y:x},children:z(Ct,{pointerEvents:l?`none`:`all`,edgeProps:e,children:h&&z(lo,{onClick:e=>{e.stopPropagation(),a.navigateTo(h)}})})})]}),l&&g.length>0&&z(Do,{isControlPointDragging:t,edgeProps:e,controlPoints:g,onMove:_,onStartMove:te,onCancelMove:ne,onFinishMove:T,onDelete:re})]})});Eo.displayName=`RelationshipEdge`;function Do({isControlPointDragging:e,edgeProps:t,controlPoints:n,onMove:r,onStartMove:i,onCancelMove:a,onFinishMove:o,onDelete:s}){let c=ht(),l=gt(),u=t.data.id,d=Hn(n);d.current=n;let f=(e,t,n)=>{let s=!1,c={x:t.clientX,y:t.clientY},u={...c},f=null,p=[...d.current],m=t=>{u.x=t.clientX,u.y=t.clientY,rt(c,u)||(s||(s=!0,i()),f??=requestAnimationFrame(()=>{f=null;let{x:t,y:n}=l.screenToFlowPosition(u,{snapToGrid:!1});p=[...p],p[e]={x:Math.trunc(t),y:Math.trunc(n)},r(p)})),t.stopPropagation()};n.addEventListener(`pointermove`,m,{capture:!0}),n.addEventListener(`pointerup`,e=>{e.stopPropagation(),n.removeEventListener(`pointermove`,m,{capture:!0}),n.removeEventListener(`click`,Oo,{capture:!0}),f!==null&&cancelAnimationFrame(f),s?o(p):a()},{once:!0,capture:!0}),n.addEventListener(`click`,Oo,{capture:!0,once:!0})},p=(e,t)=>{let n=[...d.current];n.length<=1||e>=n.length||(Oo(t),n.splice(e,1),setTimeout(()=>{s(n)},10))},m=j(e=>{let{domNode:t,addSelectedEdges:n,edges:r,unselectNodesAndEdges:i}=c.getState();if(!t||e.pointerType!==`mouse`)return;let a=parseFloat(e.currentTarget.getAttribute(`data-control-point-index`)||``);if(isNaN(a))throw Error(`data-control-point-index is not a number`);switch(e.button){case 0:e.stopPropagation(),i({edges:r.filter(e=>e.selected&&e.id!==u)}),n([u]),f(a,e,t);break;case 2:p(a,e);break}}),h=j(e=>{if(e.pointerType!==`mouse`)return;let t=parseFloat(e.currentTarget.getAttribute(`data-control-point-index`)||``);if(isNaN(t))throw console.error(e.currentTarget),Error(`data-control-point-index is not a number`);p(t,e)});return z(bn,{children:z(ft,{component:`svg`,className:bo,...t,children:z(`g`,{"data-active":e?!0:void 0,className:`group`,onContextMenu:Oo,children:n.map((e,t)=>z(`circle`,{"data-control-point-index":t,onPointerDownCapture:m,onDoubleClick:h,className:k(`nodrag nopan`,xo),cx:e.x,cy:e.y},`controlPoints`+u+`#`+t))})})})}var Oo=e=>{e.stopPropagation(),e.preventDefault()},ko=16;function Ao(e){let t=R(8),{enableNavigateTo:n,enableCompareWithLatest:r}=q(),i=P(),{navigateTo:a}=e.data,o=e.source===e.target,s=e.sourceX>e.targetX,c;if(t[0]!==i||t[1]!==r||t[2]!==n||t[3]!==s||t[4]!==o||t[5]!==a||t[6]!==e){let[l]=pn({sourceX:e.sourceX,sourceY:e.sourceY,sourcePosition:e.sourcePosition,targetX:e.targetX,targetY:e.targetY,targetPosition:e.targetPosition,...o&&{offset:30,borderRadius:16}}),u;bb0:switch(!0){case o:u=e.sourceX+24+ko;break bb0;case s:u=e.sourceX-ko;break bb0;default:u=e.sourceX+ko}c=B(ft,{...e,children:[z(dt,{edgeProps:e,svgPath:l}),r&&z(yo,{edgeProps:e,svgPath:l}),z(_t,{edgeProps:e,labelPosition:{x:u,y:e.sourceY+(o?0:ko),translate:s?`translate(-100%, 0)`:void 0},children:z(Ct,{edgeProps:e,children:n&&a&&z(lo,{onClick:e=>{e.stopPropagation(),i.navigateTo(a)}})})})]}),t[0]=i,t[1]=r,t[2]=n,t[3]=s,t[4]=o,t[5]=a,t[6]=e,t[7]=c}else c=t[7];return c}var jo={normal:{scale:1,x:0,y:0},hovered:{scale:1.2,x:-1,y:-1},whileHover:{scale:1.4,x:-3,y:-1},whileTap:{scale:1}};function Mo(e){let t=R(6),{data:n,icon:r,onClick:i}=e,{hovered:a}=n,o=a===void 0?!1:a,s=Ve(o,o?130:0)[0]&&o,c=s?`hovered`:`normal`,l;return t[0]!==r||t[1]!==s||t[2]!==o||t[3]!==i||t[4]!==c?(l=z(En,{initial:!1,variants:jo,animate:c,whileHover:`whileHover`,whileTap:`whileTap`,className:`likec4-compound-navigation compound-action`,onClick:A,tabIndex:-1,children:z(Pe,{className:k(`nodrag nopan`,uo({delay:o&&!s}),it({variant:`transparent`})),tabIndex:-1,onClick:i,onDoubleClick:A,children:r??z(Ft,{stroke:2})})}),t[0]=r,t[1]=s,t[2]=o,t[3]=i,t[4]=c,t[5]=l):l=t[5],l}var No=e=>{let t=R(7),{enableNavigateTo:n}=q(),r=P(),{navigateTo:i}=e.data;if(i&&n){let n;t[0]!==r||t[1]!==i||t[2]!==e.id?(n=t=>{t.stopPropagation(),r.navigateTo(i,e.id)},t[0]=r,t[1]=i,t[2]=e.id,t[3]=n):n=t[3];let a;return t[4]!==e||t[5]!==n?(a=z(Mo,{onClick:n,...e}),t[4]=e,t[5]=n,t[6]=a):a=t[6],a}return null};function Po({extraButtons:e,...t}){let{enableNavigateTo:n,enableRelationshipBrowser:r}=q(),i=P(),{id:a,navigateTo:o,modelFqn:s}=t.data,c=Vn(()=>{let e=[];return o&&n&&e.push({key:`navigate`,icon:z(Ft,{}),onClick:e=>{e.stopPropagation(),i.navigateTo(o,a)}}),r&&e.push({key:`relationships`,icon:z(It,{}),onClick:e=>{e.stopPropagation(),i.openRelationshipsBrowser(s)}}),e},[n,r,s,o,a,i]);return e&&E(e,1)&&(c=[...c,...e]),z(xt,{...t,buttons:c})}var Fo=({extraButtons:e,...t})=>{let{enableNavigateTo:n,enableRelationshipBrowser:r}=q(),i=P(),{id:a,navigateTo:o,modelFqn:s}=t.data,c=Vn(()=>{let e=[];return o&&n&&e.push({key:`navigate`,icon:z(Ft,{}),onClick:e=>{e.stopPropagation(),i.navigateTo(o,a)}}),r&&s&&e.push({key:`relationships`,icon:z(It,{}),onClick:e=>{e.stopPropagation(),i.openRelationshipsBrowser(s)}}),e},[n,r,s,o,a]);return e&&E(e,1)&&(c=[...c,...e]),z(xt,{...t,buttons:c})};function Io({nodeProps:{data:e}}){let t=e.drifts;return!t||t.length===0?null:z(kn,{className:`likec4-node-drifts`,css:{display:`contents`,"& + .likec4-element-shape":{outlineColor:`likec4.compare.manual.outline`,outlineWidth:`4px`,outlineStyle:`dashed`,outlineOffset:`1.5`}}})}function Lo({data:e}){return!er(e,`notes`)||f(e.notes.md||e.notes.txt)?null:z(zo,{data:e})}function Ro(e){e.nativeEvent.stopImmediatePropagation(),e.stopPropagation()}function zo({data:e}){return z(Bo,{data:e})}function Bo(e){let t=R(5),{data:n}=e,r=n.notes,i=n.width??0,a;t[0]===i?a=t[1]:(a=y(i,{min:250,max:500}),t[0]=i,t[1]=a);let o=a;y(n.height??0,{min:200,max:600});let s;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(s={},t[2]=s):s=t[2];let[c,l]=me(!1,s),u=mr(n.id+(r.md??r.txt)),d;t[3]===l?d=t[4]:(d=e=>{e&&(e.preventDefault(),`nativeEvent`in e&&e.nativeEvent.stopImmediatePropagation(),e.stopPropagation()),l.toggle()},t[3]=l,t[4]=d);let f=j(d),p=n.hovered??!1,m=c;return B(Wn,{children:[B(Dn,{children:[B(Tn.div,{className:k(`nopan nodrag`,Zr({opened:c})),variants:Uo.root,initial:`initial`,animate:c?`expanded`:p?`hovered`:`initial`,whileHover:`whileHover`,exit:`exit`,...!c&&{onPointerDownCapture:f},onMouseDownCapture:f,onClickCapture:f,onClick:Ro,"data-state":c?`expanded`:`collapsed`,children:[z(Tn.div,{variants:Uo.paper1,className:`__paper __paper-back`},`paper-back`),!c&&z(Tn.div,{layout:!0,layoutId:u,variants:Uo.paper2,"data-state":c?`expanded`:`collapsed`,className:`__paper __paper-front`},u)]},`node-notes-${u}`),c&&z(mn,{children:z(Tn.div,{layout:!0,layoutDependency:m,layoutId:u,className:O({position:`absolute`,zIndex:300,top:`0`,left:`0`,display:`flex`,pointerEvents:`all`,rounded:`sm`,backgroundColor:`likec4.overlay.body`,padding:`0`,alignItems:`stretch`,justifyContent:`stretch`,overflow:`hidden`,width:`fit-content`,height:`fit-content`,maxHeight:`70cqh`,maxWidth:`50cqw`}),"data-likec4-notes":u,style:{top:n.y+20,left:n.x+10,maxWidth:`min(calc(${o}px * 2), 50cqw)`},onMouseDownCapture:Ro,onClickCapture:Ro,onClick:Ro,children:z(be,{component:Tn.div,className:k(`nowheel`,O({flex:`1`,padding:`xs`,paddingRight:`xxs`})),children:z(jt,{className:O({paddingRight:`xxs`}),value:Zn.from(r)})})},u)},`portal`)]}),c&&z(Wo,{data:n,onCatchClick:f})]})}var Vo={rotateZ:`-5deg`,y:0,x:1,scale:1,originX:`55%`,originY:`80%`},Ho={rotateZ:`3deg`,y:-2,scale:1,backgroundColor:`color-mix(in oklab, var(--likec4-palette-fill) 8%, #FFF)`,originX:`45%`,originY:`80%`},Uo={root:{initial:{"--paper-bg":`color-mix(in oklab, var(--likec4-palette-fill) 50%, #EEE)`},hovered:{},whileHover:{"--paper-bg":`color-mix(in oklab, var(--likec4-palette-fill) 3%, #FFF)`},exit:{"--paper-bg":`color-mix(in oklab, var(--likec4-palette-fill) 50%, #EEE)`}},paper1:{initial:{...Vo,rotateZ:`-3.5deg`,y:1,scale:.95},hovered:{...Vo},whileHover:{...Vo,"--paper-bg":`color-mix(in oklab, var(--likec4-palette-fill) 3%, #FFF)`,scale:1.04},expanded:{...Vo,y:[0,1,20],scale:.95},exit:{...Vo,rotateZ:`-3.5deg`,y:1,scale:.95}},paper2:{initial:{...Ho,rotateZ:`2deg`,y:2,scale:.95,backgroundColor:`color-mix(in oklab, var(--likec4-palette-fill) 50%, #EEE)`},hovered:{...Ho},whileHover:{...Ho,scale:1.08},expanded:{...Ho,y:[0,1,20],scale:.95},exit:{...Ho,rotateZ:`2deg`,y:2,scale:.95,backgroundColor:`color-mix(in oklab, var(--likec4-palette-fill) 50%, #EEE)`}}};function Wo(e){let t=R(8),{data:n,onCatchClick:r}=e,i;t[0]===r?i=t[1]:(i=()=>{r()},t[0]=r,t[1]=i),Dr(`paneClick`,i);let a;return t[2]!==n.height||t[3]!==n.width||t[4]!==n.x||t[5]!==n.y||t[6]!==r?(a=z(mn,{children:z(kn,{css:{display:`block`,position:`absolute`,zIndex:200,pointerEvents:`all`,left:`0`,top:`0`,cursor:`zoom-out`},style:{transform:`translate(${n.x-40}px, ${n.y-40}px)`,width:(n.width??250)+80,height:(n.height??200)+80},onMouseDownCapture:r,onClickCapture:r,onClick:Ro})},`catch-all`),t[2]=n.height,t[3]=n.width,t[4]=n.x,t[5]=n.y,t[6]=r,t[7]=a):a=t[7],a}var Go=ke.withProps({color:`dark`,fz:`xs`,openDelay:400,closeDelay:150,label:``,children:null,offset:4,withinPortal:!1});function Ko(e){let t=R(3),{fqn:n}=e,r=P(),i;return t[0]!==r||t[1]!==n?(i=z(Go,{label:`Browse relationships`,children:z(Pe,{size:`md`,variant:`subtle`,color:`gray`,onClick:e=>{e.stopPropagation(),r.openRelationshipsBrowser(n)},children:z(It,{stroke:2,style:{width:`65%`,height:`65%`}})})}),t[0]=r,t[1]=n,t[2]=i):i=t[2],i}function qo(e){let t=R(4),{onOpenSource:n}=_i();if(!n)return null;let r;return t[0]!==n||t[1]!==e.deploymentId||t[2]!==e.elementId?(r=z(Go,{label:`Open source`,children:z(Pe,{size:`md`,variant:`subtle`,color:`gray`,onClick:t=>{t.stopPropagation(),e.elementId?n?.({element:e.elementId}):e.deploymentId&&n?.({deployment:e.deploymentId})},children:z(Mt,{stroke:1.8,style:{width:`65%`}})})}),t[0]=n,t[1]=e.deploymentId,t[2]=e.elementId,t[3]=r):r=t[3],r}function Jo(e){let t=R(8),{elementBorderStyle:n,onChange:r}=e,i=n===void 0?`none`:n,[a,o]=Un(i),s,c;t[0]===i?(s=t[1],c=t[2]):(s=()=>{o(i)},c=[i],t[0]=i,t[1]=s,t[2]=c),Bn(s,c);let l;t[3]===r?l=t[4]:(l=e=>{let t=e;o(t),r({border:t})},t[3]=r,t[4]=l);let u;return t[5]!==l||t[6]!==a?(u=z(Ne,{size:`xs`,fz:`xxs`,fullWidth:!0,withItemsBorders:!1,value:a,onChange:l,styles:{label:{paddingTop:2,paddingBottom:2}},data:[{label:`Solid`,value:`solid`},{label:`Dashed`,value:`dashed`},{label:`Dotted`,value:`dotted`},{label:`None`,value:`none`}]}),t[5]=l,t[6]=a,t[7]=u):u=t[7],u}var Yo=[`primary`,`secondary`,`muted`];function Xo(e){let t=R(2),{elementColor:n,elementOpacity:r,onColorPreview:i,isOpacityEditable:a,onChange:o,...s}=e,c=a===void 0?!1:a,{theme:l}=lt(),u;return t[0]===o?u=t[1]:(u=e=>o({color:e}),t[0]=o,t[1]=u),B(Oe,{clickOutsideEvents:[`pointerdown`,`mousedown`,`click`],position:`top-start`,offset:2,withinPortal:!1,...s,children:[z(Te,{children:z(Ie,{variant:`subtle`,color:`gray`,size:`xs`,px:6,children:z(Se,{color:l.colors[n].elements.fill,size:16,withShadow:!0,style:{color:`#fff`,cursor:`pointer`}})})}),B(Re,{p:`xs`,children:[z(Zo,{theme:l,elementColor:n,onColorPreview:i,onChange:u}),c&&B(Wn,{children:[z(Le,{h:`xs`}),z(xe,{label:`opacity`,labelPosition:`left`}),z(Le,{h:`xs`}),z(Qo,{elementOpacity:r,onOpacityChange:e=>{o({opacity:e})}})]})]})]})}function Zo({theme:e,elementColor:t,onColorPreview:n,onChange:r}){let i=e=>i=>{i.stopPropagation(),n(null),t!==e&&r(e)},a=S(e.colors).filter(e=>!Yo.includes(e));return z(Me,{gap:2,onMouseLeave:()=>n(null),children:B(De,{openDelay:1e3,closeDelay:300,children:[z(ti,{maxW:`120px`,gap:`1.5`,justify:`flex-start`,align:`flex-start`,direction:`row`,wrap:`wrap`,children:Yo.map(r=>z(ke,{label:r,fz:`xs`,color:`dark`,offset:2,withinPortal:!1,transitionProps:{duration:140,transition:`slide-up`},children:z(Se,{color:e.colors[r].elements.fill,size:18,withShadow:!0,onMouseEnter:()=>n(r),onClick:i(r),style:{color:`#fff`,cursor:`pointer`},children:t===r&&z(we,{style:{width:Ce(10),height:Ce(10)}})})},r))}),z(ti,{mt:`sm`,maxW:`110px`,gap:`1.5`,justify:`flex-start`,align:`flex-start`,direction:`row`,wrap:`wrap`,children:a.map(r=>z(ke,{label:r,fz:`xs`,color:`dark`,offset:2,transitionProps:{duration:140,transition:`slide-up`},children:z(Se,{color:e.colors[r].elements.fill,size:18,onMouseEnter:()=>n(r),onClick:i(r),style:{color:`#fff`,cursor:`pointer`},children:t===r&&z(we,{style:{width:Ce(10),height:Ce(10)}})})},r))})]})})}function Qo(e){let t=R(6),{elementOpacity:n,onOpacityChange:r}=e,i=n===void 0?100:n,[a,o]=Un(i),s,c;t[0]===i?(s=t[1],c=t[2]):(s=()=>{o(i)},c=[i],t[0]=i,t[1]=s,t[2]=c),zt(s,c);let l;return t[3]!==r||t[4]!==a?(l=z(Ee,{size:`sm`,color:`dark`,value:a,onChange:o,onChangeEnd:r}),t[3]=r,t[4]=a,t[5]=l):l=t[5],l}var $o=O({color:`text.dimmed`,fontSize:`xxs`,fontWeight:`bold`,maxWidth:`220px`,cursor:`default`,userSelect:`all`,textOverflow:`ellipsis`,overflow:`hidden`,whiteSpace:`nowrap`}),es=e=>e.xynodes.filter(e=>e.selected).length,ts=()=>Er(es);function ns(e){let{title:t,children:n,nodeProps:r,...i}=e,a=ts(),{selected:o,dragging:s,data:c}=r,l=o===void 0?!1:o,u=s===void 0?!1:s,{hovered:d}=c,f=(d===void 0?!1:d)&&a===0||l&&a===1,p=150;f?p=l?100:1e3:a>0&&(p=50);let[m]=Ve(f,p);return m?z(fn,{isVisible:!u,offset:4,...i,children:z(ze,{className:k(`nodrag`,`nopan`),px:5,pb:8,pt:4,radius:`sm`,shadow:`xl`,onDoubleClickCapture:A,onPointerDown:A,onClick:A,onDoubleClick:A,withBorder:!0,children:B(Jt,{gap:`2`,children:[z(kn,{px:`1`,children:z(Fe,{className:$o,children:t})}),z(Yt,{gap:`1`,children:n})]})})}):null}function rs(e,t){let n=R(13),r=P(),[i,a]=Un(null),o;n[0]!==r||n[1]!==i||n[2]!==t.data.color||n[3]!==t.data.id?(o=e=>{if(e===null){if(!i)return;a(null),r.updateNodeData(t.data.id,{color:i});return}a(e=>e??t.data.color),r.updateNodeData(t.data.id,{color:e})},n[0]=r,n[1]=i,n[2]=t.data.color,n[3]=t.data.id,n[4]=o):o=n[4];let s=j(o),c;n[5]!==r||n[6]!==t.data.id||n[7]!==e?(c=n=>{let{shape:i,color:a,...o}=n;r.updateNodeData(t.data.id,{...i&&{shape:i},...a&&{color:a},style:o}),r.triggerChange({op:`change-element-style`,style:n,targets:[e]})},n[5]=r,n[6]=t.data.id,n[7]=e,n[8]=c):c=n[8];let l=j(c),u=i??t.data.color,d;return n[9]!==l||n[10]!==s||n[11]!==u?(d={elementColor:u,onColorPreview:s,onChange:l},n[9]=l,n[10]=s,n[11]=u,n[12]=d):d=n[12],d}function is(e){let t=R(10),{enableVscode:n,enableRelationshipBrowser:r}=q(),{data:i}=e,{style:a,modelFqn:o}=i,{elementColor:s,onColorPreview:c,onChange:l}=rs(o,e),u=a?.opacity??100,d;return t[0]!==s||t[1]!==r||t[2]!==n||t[3]!==o||t[4]!==l||t[5]!==c||t[6]!==u||t[7]!==e||t[8]!==a?.border?(d=B(ns,{nodeProps:e,title:o,align:`start`,children:[z(Xo,{elementColor:s,onColorPreview:c,isOpacityEditable:!0,elementOpacity:u,onChange:l,position:`left-start`}),z(Jo,{elementBorderStyle:a?.border??(u<99?`dashed`:`none`),onChange:l}),n&&z(qo,{elementId:o}),r&&z(Ko,{fqn:o})]}),t[0]=s,t[1]=r,t[2]=n,t[3]=o,t[4]=l,t[5]=c,t[6]=u,t[7]=e,t[8]=a?.border,t[9]=d):d=t[9],d}function as(e){let t=R(11),{enableVscode:n,enableRelationshipBrowser:r}=q(),{data:i}=e,{deploymentFqn:a,style:o,modelFqn:s}=i,{elementColor:c,onColorPreview:l,onChange:u}=rs(a,e),d;return t[0]!==a||t[1]!==c||t[2]!==r||t[3]!==n||t[4]!==s||t[5]!==u||t[6]!==l||t[7]!==e||t[8]!==o?.border||t[9]!==o?.opacity?(d=B(ns,{nodeProps:e,title:a,align:`start`,children:[z(Xo,{elementColor:c,onColorPreview:l,isOpacityEditable:!0,elementOpacity:o?.opacity,onChange:u,position:`left-start`}),z(Jo,{elementBorderStyle:o?.border,onChange:u}),n&&z(qo,{deploymentId:a}),r&&s&&z(Ko,{fqn:s})]}),t[0]=a,t[1]=c,t[2]=r,t[3]=n,t[4]=s,t[5]=u,t[6]=l,t[7]=e,t[8]=o?.border,t[9]=o?.opacity,t[10]=d):d=t[10],d}var os=[...Kn].sort();function ss(e){let t=R(11),{enableVscode:n,enableRelationshipBrowser:r,enableNotes:i}=q(),a=!!(i&&e.data.notes),{data:o}=e,{shape:s,modelFqn:c,style:l}=o,{elementColor:u,onColorPreview:d,onChange:f}=rs(c,e),p=a?20:10,m;return t[0]!==u||t[1]!==r||t[2]!==n||t[3]!==c||t[4]!==f||t[5]!==d||t[6]!==e||t[7]!==s||t[8]!==l?.border||t[9]!==p?(m=B(ns,{nodeProps:e,title:c,offset:p,align:`start`,children:[z(Xo,{elementColor:u,onColorPreview:d,onChange:f}),z(ls,{elementShape:s,onChange:f}),z(Jo,{elementBorderStyle:l?.border??`none`,onChange:f}),n&&z(qo,{elementId:c}),r&&z(Ko,{fqn:c})]}),t[0]=u,t[1]=r,t[2]=n,t[3]=c,t[4]=f,t[5]=d,t[6]=e,t[7]=s,t[8]=l?.border,t[9]=p,t[10]=m):m=t[10],m}function cs(e){let t=R(11),{enableVscode:n,enableRelationshipBrowser:r}=q(),{data:i}=e,{shape:a,deploymentFqn:o,modelFqn:s,style:c}=i,{elementColor:l,onColorPreview:u,onChange:d}=rs(o,e),f;return t[0]!==o||t[1]!==l||t[2]!==r||t[3]!==n||t[4]!==s||t[5]!==d||t[6]!==u||t[7]!==e||t[8]!==a||t[9]!==c?.border?(f=B(ns,{nodeProps:e,title:o,align:`start`,children:[z(Xo,{elementColor:l,onColorPreview:u,onChange:d}),z(ls,{elementShape:a,onChange:d}),z(Jo,{elementBorderStyle:c?.border??`none`,onChange:d}),n&&z(qo,{deploymentId:o}),r&&s&&z(Ko,{fqn:s})]}),t[0]=o,t[1]=l,t[2]=r,t[3]=n,t[4]=s,t[5]=d,t[6]=u,t[7]=e,t[8]=a,t[9]=c?.border,t[10]=f):f=t[10],f}function ls({elementShape:e,onChange:t}){return B(ye,{openDelay:300,closeDelay:450,floatingStrategy:`fixed`,closeOnClickOutside:!0,clickOutsideEvents:[`pointerdown`,`mousedown`,`click`],closeOnEscape:!0,closeOnItemClick:!1,position:`top-start`,offset:2,styles:{item:{padding:`calc(var(--spacing-xs) / 1.5) var(--spacing-xs)`}},withinPortal:!1,children:[z(pe,{children:z(Ie,{variant:`light`,color:`gray`,size:`compact-sm`,fz:`xxs`,px:4,pl:8,py:2,rightSection:z(Rt,{size:12}),children:e})}),z(je,{onDoubleClick:A,onClick:A,children:os.map(n=>z(_e,{fz:`sm`,value:n,rightSection:e===n?z(Pt,{size:12}):void 0,onClick:e=>{e.stopPropagation(),t({shape:n})},children:n},n))})]})}function us(e){let t=R(11),n=P(),r;t[0]===n?r=t[1]:(r=e=>{n.openSearch(e)},t[0]=n,t[1]=r);let i=j(r),a;t[2]===n?a=t[3]:(a=e=>{n.send({type:`tag.highlight`,tag:e})},t[2]=n,t[3]=a);let o=j(a),s;t[4]===n?s=t[5]:(s=e=>{n.send({type:`tag.unhighlight`})},t[4]=n,t[5]=s);let c=j(s),l;return t[6]!==e||t[7]!==i||t[8]!==o||t[9]!==c?(l=z(ui,{onTagClick:i,onTagMouseEnter:o,onTagMouseLeave:c,...e}),t[6]=e,t[7]=i,t[8]=o,t[9]=c,t[10]=l):l=t[10],l}function ds(e){let t=R(7),n=P(),r=e.data.modelFqn;if(!r)return null;let i;t[0]!==n||t[1]!==r||t[2]!==e.id?(i=t=>{t.stopPropagation(),n.openElementDetails(r,e.id)},t[0]=n,t[1]=r,t[2]=e.id,t[3]=i):i=t[3];let a;return t[4]!==e||t[5]!==i?(a=z(vo,{...e,onClick:i}),t[4]=e,t[5]=i,t[6]=a):a=t[6],a}function fs(e){let t=R(7),n=P(),r=e.data.modelFqn;if(!r)return null;let i;t[0]!==n||t[1]!==r||t[2]!==e.id?(i=t=>{t.stopPropagation(),n.openElementDetails(r,e.id)},t[0]=n,t[1]=r,t[2]=e.id,t[3]=i):i=t[3];let a;return t[4]!==e||t[5]!==i?(a=z(po,{...e,onClick:i}),t[4]=e,t[5]=i,t[6]=a):a=t[6],a}function ps(e){let t=R(7),{enableElementTags:n,enableElementDetails:r,enableReadOnly:i,enableCompareWithLatest:a,enableNotes:o}=q(),s;return t[0]!==a||t[1]!==r||t[2]!==n||t[3]!==o||t[4]!==i||t[5]!==e?(s=B(ut,{nodeProps:e,children:[a&&z(Io,{nodeProps:e}),z(mt,{...e}),z(yt,{...e}),n&&z(us,{...e}),z(Po,{...e}),r&&z(ds,{...e}),!i&&z(ss,{...e}),o&&z(Lo,{...e}),z(vt,{direction:e.data.viewLayoutDir})]}),t[0]=a,t[1]=r,t[2]=n,t[3]=o,t[4]=i,t[5]=e,t[6]=s):s=t[6],s}function ms(e){let t=R(7),{enableElementTags:n,enableElementDetails:r,enableReadOnly:i,enableCompareWithLatest:a,enableNotes:o}=q(),s;return t[0]!==a||t[1]!==r||t[2]!==n||t[3]!==o||t[4]!==i||t[5]!==e?(s=B(ut,{nodeProps:e,children:[a&&z(Io,{nodeProps:e}),z(mt,{...e}),z(yt,{...e}),n&&z(us,{...e}),z(Fo,{...e}),r&&z(ds,{...e}),!i&&z(cs,{...e}),o&&z(Lo,{...e}),z(vt,{direction:e.data.viewLayoutDir})]}),t[0]=a,t[1]=r,t[2]=n,t[3]=o,t[4]=i,t[5]=e,t[6]=s):s=t[6],s}var hs=O({outlineColor:`likec4.compare.manual.outline`,outlineWidth:`4px`,outlineStyle:`dashed`,outlineOffset:`1.5`}),gs=e=>e.data.drifts&&e.data.drifts.length>0;function _s(e){let t=R(6),{enableElementDetails:n,enableReadOnly:r,enableCompareWithLatest:i}=q(),a=i&&gs(e)?hs:void 0,o;return t[0]!==i||t[1]!==n||t[2]!==r||t[3]!==e||t[4]!==a?(o=B(mo,{className:a,nodeProps:e,children:[i&&z(Io,{nodeProps:e}),z(ho,{...e}),z(No,{...e}),n&&z(fs,{...e}),!r&&z(is,{...e}),z(vt,{direction:e.data.viewLayoutDir})]}),t[0]=i,t[1]=n,t[2]=r,t[3]=e,t[4]=a,t[5]=o):o=t[5],o}function vs(e){let t=R(6),{enableElementDetails:n,enableReadOnly:r,enableCompareWithLatest:i}=q(),a=i&&gs(e)?hs:void 0,o;return t[0]!==i||t[1]!==n||t[2]!==r||t[3]!==e||t[4]!==a?(o=B(mo,{className:a,nodeProps:e,children:[i&&z(Io,{nodeProps:e}),z(ho,{...e}),z(No,{...e}),n&&z(fs,{...e}),!r&&z(as,{...e}),z(vt,{direction:e.data.viewLayoutDir})]}),t[0]=i,t[1]=n,t[2]=r,t[3]=e,t[4]=a,t[5]=o):o=t[5],o}function ys(e){let t=R(4),{enableCompareWithLatest:n}=q(),r=n&&gs(e)?hs:void 0,i;return t[0]!==n||t[1]!==e||t[2]!==r?(i=B(mo,{className:r,nodeProps:e,children:[n&&z(Io,{nodeProps:e}),z(ho,{...e}),z(vt,{direction:e.data.viewLayoutDir})]}),t[0]=n,t[1]=e,t[2]=r,t[3]=i):i=t[3],i}var bs={left:hn.Left,right:hn.Right,top:hn.Top,bottom:hn.Bottom},xs=({data:e,port:t})=>B(Wn,{children:[z(kn,{"data-likec4-color":e.color,className:O({position:`absolute`,backgroundColor:`var(--likec4-palette-fill)`,rounded:`xs`,width:{base:`5px`,_whenHovered:`7px`,_whenSelected:`7px`},transition:`fast`,translateX:`-1/2`,translateY:`-1/2`,translate:`auto`}),style:{top:t.cy,left:t.cx,height:t.height}}),z(gn,{id:t.id,type:t.type,position:bs[t.position],style:{top:t.cy-3,left:t.cx-3,width:6,height:6,right:`unset`,bottom:`unset`,visibility:`hidden`,transform:t.position===`left`?`translate(-150%, 0)`:`translate(100%, 0)`}})]}),Ss=e=>`modelFqn`in e.data&&p(e.data.modelFqn);function Cs(e){let t=R(14),{enableElementDetails:n,enableReadOnly:r,enableCompareWithLatest:i,enableNotes:a}=q(),o=e.data,{id:s,positionAbsoluteY:c,data:l}=e,{viewHeight:u,hovered:d,ports:f}=l,p=d===void 0?!1:d,m;if(t[0]!==o||t[1]!==i||t[2]!==n||t[3]!==a||t[4]!==r||t[5]!==s||t[6]!==p||t[7]!==f||t[8]!==c||t[9]!==e||t[10]!==u){let l;t[12]===e.data?l=t[13]:(l=t=>z(xs,{port:t,data:e.data},t.id),t[12]=e.data,t[13]=l),m=B(Wn,{children:[z(kn,{"data-likec4-color":`gray`,className:O({position:`absolute`,rounded:`xs`,top:`1`,pointerEvents:`none`,transition:`fast`,translateX:`-1/2`,translate:`auto`}),style:{backgroundColor:`var(--likec4-palette-stroke)`,opacity:p?.6:.4,left:`50%`,width:p?3:2,height:u-c,zIndex:-1,pointerEvents:`none`}}),B(ut,{nodeProps:e,children:[i&&z(Io,{nodeProps:e}),z(mt,{...e}),z(yt,{...e}),Ss(e)&&B(Wn,{children:[z(Po,{...e}),n&&z(ds,{id:s,data:o}),!r&&z(ss,{...e})]}),a&&z(Lo,{...e})]}),f.map(l)]}),t[0]=o,t[1]=i,t[2]=n,t[3]=a,t[4]=r,t[5]=s,t[6]=p,t[7]=f,t[8]=c,t[9]=e,t[10]=u,t[11]=m}else m=t[11];return m}function ws(e){return z(kn,{"data-likec4-color":e.data.color,css:{width:`100%`,height:`100%`,border:`default`,rounded:`sm`,borderWidth:1,"--_color":{base:`var(--likec4-palette-stroke)`,_dark:`[color-mix(in oklab, var(--likec4-palette-hiContrast) 40%, var(--likec4-palette-fill))]`},borderColor:`[var(--_color)/30]`,backgroundColor:`var(--likec4-palette-fill)/15`,pointerEvents:`none`,paddingLeft:`2`,paddingTop:`0.5`,fontSize:`xs`,fontWeight:`bold`,letterSpacing:`.75px`,color:`[var(--_color)/75]`},children:`PARALLEL`})}var Ts={ElementNode:ps,DeploymentNode:ms,CompoundElementNode:_s,CompoundDeploymentNode:vs,ViewGroupNode:ys,SequenceActorNode:Cs,SequenceParallelArea:ws},Es={RelationshipEdge:Eo,SequenceStepEdge:Ao},Ds=class{static LeftPadding=42;static RightPadding=42;static TopPadding=60;static BottomPadding=42;id;minX=1/0;minY=1/0;maxX=-1/0;maxY=-1/0;initial;get positionAbsolute(){return{x:this.minX,y:this.minY}}set positionAbsolute(e){let t=Math.trunc(e.x),n=Math.trunc(e.y);this.maxX+=t-this.minX,this.maxY+=n-this.minY,this.minX=t,this.minY=n}get dimensions(){return{width:Math.ceil(this.maxX-this.minX),height:Math.ceil(this.maxY-this.minY)}}get diff(){let{x:e,y:t}=this.positionAbsolute;return{x:Math.trunc(e-this.initial.x),y:Math.trunc(t-this.initial.y)}}get isMoved(){let e=this.diff;return e.x!==0||e.y!==0}get isResized(){let e=this.dimensions;return e.width!==this.initial.width||e.height!==this.initial.height}get position(){let e=this.positionAbsolute;if(!this.parent)return e;let t=this.parent.positionAbsolute;return{x:e.x-t.x,y:e.y-t.y}}constructor(e,t=null){this.id=e.id,this.positionAbsolute=t?{x:e.position.x+t.minX,y:e.position.y+t.minY}:e.position;let{width:n,height:r}=Sn(e);this.maxX=this.minX+Math.ceil(n),this.maxY=this.minY+Math.ceil(r),this.initial={x:this.minX,y:this.minY,width:Math.ceil(n),height:Math.ceil(r)},t&&t.children.push(this)}},Os=class extends Ds{parent;children=[];constructor(e,t=null){super(e,t),this.parent=t}},ks=class extends Ds{parent;constructor(e,t=null){super(e,t),this.parent=t}};function As(e,t){let n=e.data.controlPoints??null;return r=>{let i=H(r.get(e.id),`Edge ${e.id} not found`),{x:a,y:o}=t.diff;return a===0&&o===0?{id:e.id,type:`replace`,item:xr(i,t=>{t.data.points=e.data.points,t.data.controlPoints=n,t.data.labelBBox=e.data.labelBBox})}:{id:e.id,type:`replace`,item:xr(i,t=>{t.data.points=D(e.data.points,e=>[e[0]+a,e[1]+o]),n?t.data.controlPoints=n.map(e=>({x:e.x+a,y:e.y+o})):t.data.controlPoints=null,e.data.labelBBox&&(t.data.labelBBox??=e.data.labelBBox,t.data.labelBBox.x=e.data.labelBBox.x+a,t.data.labelBBox.y=e.data.labelBBox.y+o)})}}}function js(e,t,n,r){let i=e.data.controlPoints??at(e.data.points),a=sr(U.center(n)),o=sr(U.center(r)),s=a.subtract(o),c=s.length();return n=>{let r=H(n.get(e.id),`Edge ${e.id} not found`),{x:a,y:l}=t.diff;if(a===0&&l===0)return{id:e.id,type:`replace`,item:xr(r,t=>{t.data.points=e.data.points,t.data.controlPoints=e.data.controlPoints,t.data.labelBBox=e.data.labelBBox})};let u=sr(a,l),d=e=>{let t=sr(e),n=y(t.subtract(o).dot(s)/c**2,{min:-1,max:1}),r=t.add(u.multiply(n)).trunc();return{x:r.x,y:r.y}};return{id:e.id,type:`replace`,item:xr(r,t=>{if(t.data.controlPoints=i.map(d),e.data.labelBBox){t.data.labelBBox??=e.data.labelBBox;let{x:n,y:r}=d(e.data.labelBBox);t.data.labelBBox.x=n,t.data.labelBBox.y=r}})}}}function Ms(e,t){let{parentLookup:n,nodeLookup:r,edges:i}=e.getState(),o=new Map,c=new Jn(e=>{let t=r.get(e)?.parentId;return t?[t,...c.get(t)]:[]}),l=new Jn(e=>{let t=n.get(e);if(!t||t.size===0)return new Set;let r=new Set;for(let e of t.values()){r.add(e.id);for(let t of l.get(e.id))r.add(t)}return r});if(E(t,2)){let e=v(t,a(e=>[...l.get(e)]),se(),e=>s(t,e));G(E(e,1),`All editing nodes are nested within each other`),t=e}let u=new Set(t.flatMap(e=>c.get(e))),d=[...r.values()].flatMap(e=>e.parentId?[]:{xynode:e,parent:null});for(;d.length>0;){let{xynode:e,parent:r}=d.shift();if(!t.includes(e.id)&&u.has(e.id)){let t=new Os(e,r);o.set(e.id,t),n.get(e.id)?.forEach(e=>{d.push({xynode:e,parent:t})});continue}o.set(e.id,new ks(e,r))}let f=[...o.values()],p=new Map,m=e=>{let t=o.get(e);if(t)return t;for(let t of c.get(e)){let e=o.get(t);if(e)return e}return null},h=new Set(t.flatMap(e=>[e,...l.get(e)]));for(let e of i){let t=h.has(e.source),n=h.has(e.target);if(!t&&!n)continue;if(t&&n){let t=o.get(e.source)??o.get(e.target)??m(e.source)??m(e.target);G(!!t,`At least one of the edge nodes should have a moving ancestor`),p.set(e,As(e,t));continue}G(t!==n,`Logic error`);let i=m(t?e.source:e.target);G(!!i,`Moving endpoint should be found`);let[a,s]=v([e.source,e.target],D(e=>H(r.get(e),`Node ${e} not found`)),D(ct)),[c,l]=t?[a,s]:[s,a];p.set(e,js(e,i,c,l))}function g(e){for(let t of e){if(!(t instanceof Os))continue;g(t.children);let e={minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};for(let n of t.children)e.minX=Math.min(e.minX,n.minX),e.minY=Math.min(e.minY,n.minY),e.maxX=Math.max(e.maxX,n.maxX),e.maxY=Math.max(e.maxY,n.maxY);t.minX=e.minX-Ds.LeftPadding,t.minY=e.minY-Ds.TopPadding,t.maxX=e.maxX+Ds.RightPadding,t.maxY=e.maxY+Ds.BottomPadding}}let _=[...p.values()];function y(){let{nodeLookup:n}=e.getState();for(let e of t){let t=o.get(e);if(!t){console.warn(`Rect not found for id ${e}`);continue}let r=n.get(e);if(!r){console.warn(`Node not found for id ${e}`);continue}t.positionAbsolute=r.internals.positionAbsolute}}function b(){let{edgeLookup:t,triggerNodeChanges:n,triggerEdgeChanges:r}=e.getState();g(f);let i=[],a=[];for(let e of f)i.push({id:e.id,type:`position`,dragging:!1,position:e.position,positionAbsolute:e.positionAbsolute}),e instanceof Os&&i.push({id:e.id,type:`dimensions`,setAttributes:!0,resizing:!1,dimensions:e.dimensions});i.length>0&&n(i);for(let e of _)a.push(e(t));a.length>0&&r(a)}let x=null;function S(){x!==null&&(cancelAnimationFrame(x),x=null)}function C(){S(),y(),b()}function w(){x??=requestAnimationFrame(()=>{x=null,y(),b()})}function ee(){return fr(f,e=>e.isMoved||e.isResized)}return{rects:o,onMove:w,updateXYFlow:b,hasChanges:ee,cancelPending:S,flushPending:C}}function Ns(){let e=R(9),t=ht(),n=P(),r=Hn(void 0),a;e[0]!==n||e[1]!==t?(a=(e,a)=>{let{nodeLookup:o}=t.getState(),s=v(Array.from(o.values()),i(e=>e.dragging===!0||e.id===a.id||e.selected===!0),D(Ps));E(s,1)&&(n.startEditing(`node`),r.current=Ms(t,s))},e[0]=n,e[1]=t,e[2]=a):a=e[2];let o;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(o=e=>{r.current?.onMove()},e[3]=o):o=e[3];let s;e[4]===n?s=e[5]:(s=e=>{if(!r.current)return;let t=r.current.hasChanges();t?r.current.flushPending():r.current.cancelPending(),n.stopEditing(t),r.current=void 0},e[4]=n,e[5]=s);let c;return e[6]!==a||e[7]!==s?(c={onNodeDragStart:a,onNodeDrag:o,onNodeDragStop:s},e[6]=a,e[7]=s,e[8]=c):c=e[8],c}function Ps(e){return e.id}var Fs={relationship:Es.RelationshipEdge,"seq-step":Es.SequenceStepEdge},Is={element:Ts.ElementNode,deployment:Ts.DeploymentNode,"compound-element":Ts.CompoundElementNode,"compound-deployment":Ts.CompoundDeploymentNode,"view-group":Ts.ViewGroupNode,"seq-actor":Ts.SequenceActorNode,"seq-parallel":Ts.SequenceParallelArea};function Ls(e){return!e||r(e)?Is:{element:e.element??Is.element,deployment:e.deployment??Is.deployment,"compound-element":e.compoundElement??Is[`compound-element`],"compound-deployment":e.compoundDeployment??Is[`compound-deployment`],"view-group":e.viewGroup??Is[`view-group`],"seq-actor":e.seqActor??Is[`seq-actor`],"seq-parallel":e.seqParallel??Is[`seq-parallel`]}}var Rs=e=>{let t=Mi(e);return{x:-t.x,y:-t.y,zoom:1}},zs=Cr(({context:e,children:t})=>{let{enableReadOnly:n}=ao(e),r=n||t.editor?.getSnapshot().context.editing?.subject!==`edge`,i=!n&&e.nodesDraggable;return e.dynamicViewVariant===`sequence`&&e.view._type===`dynamic`&&(i=!1),{enableReadOnly:n,initialized:e.initialized.xydata&&e.initialized.xyflow,nodes:e.xynodes,edges:e.xyedges,pannable:e.pannable,zoomable:e.zoomable,nodesDraggable:i,nodesSelectable:e.nodesSelectable&&r,fitViewPadding:e.fitViewPadding,enableFitView:e.features.enableFitView,...!e.features.enableFitView&&{viewport:Rs(e)}}});function Bs(e){let t=R(53),{background:n,reactFlowProps:r,children:i,renderNodes:a}=e,o=n===void 0?`dots`:n,s=r===void 0?{}:r,c=P(),{enableReadOnly:l,initialized:u,nodes:d,edges:f,enableFitView:p,nodesDraggable:m,nodesSelectable:h,...g}=wr(zs),{onNodeContextMenu:_,onCanvasContextMenu:v,onEdgeContextMenu:y,onNodeClick:b,onEdgeClick:x,onCanvasClick:S,onCanvasDblClick:C}=_i(),{reducedGraphics:w,$panning:ee}=wt(),te=w,ne=Ns(),T=ee,re;t[0]===T?re=t[1]:(re=()=>{T.set(!0)},t[0]=T,t[1]=re);let ie=ve(re,te?200:800),ae;t[2]!==T||t[3]!==ie?(ae=()=>{ie.clear(),T.set(!1)},t[2]=T,t[3]=ie,t[4]=ae):ae=t[4];let E=he(ae,200),oe;t[5]!==T||t[6]!==ie||t[7]!==E?(oe=e=>{if(!e){ie.clear();return}T.get()?E():ie.start()},t[5]=T,t[6]=ie,t[7]=E,t[8]=oe):oe=t[8];let se=j(oe),ce;t[9]!==c||t[10]!==E?(ce=(e,t)=>{e&&E(),c.send({type:`xyflow.viewportMoved`,viewport:t,manually:!!e})},t[9]=c,t[10]=E,t[11]=ce):ce=t[11];let D=j(ce),le;t[12]===c?le=t[13]:(le=()=>{c.send({type:`xyflow.resized`})},t[12]=c,t[13]=le);let ue=j(le),de,fe;t[14]===a?(de=t[15],fe=t[16]):(de=()=>Ls(a),fe=[a],t[14]=a,t[15]=de,t[16]=fe);let pe=Bt(de,fe,Dt),me;t[17]===pe?me=t[18]:(me=[pe],t[17]=pe,t[18]=me),Et(Vs,me);let ge;t[19]===c?ge=t[20]:(ge=e=>{c.send({type:`xyflow.applyChanges`,nodes:e})},t[19]=c,t[20]=ge);let _e;t[21]===c?_e=t[22]:(_e=e=>{c.send({type:`xyflow.applyChanges`,edges:e})},t[21]=c,t[22]=_e);let ye;t[23]!==c||t[24]!==b?(ye=(e,t)=>{e.stopPropagation(),c.send({type:`xyflow.nodeClick`,node:t}),b?.(c.findDiagramNode(t.id),e)},t[23]=c,t[24]=b,t[25]=ye):ye=t[25];let be;t[26]!==c||t[27]!==x?(be=(e,t)=>{e.stopPropagation(),c.send({type:`xyflow.edgeClick`,edge:t}),x?.(c.findDiagramEdge(t.id),e)},t[26]=c,t[27]=x,t[28]=be):be=t[28];let xe;t[29]===c?xe=t[30]:(xe=(e,t)=>{e.stopPropagation(),c.send({type:`xyflow.edgeDoubleClick`,edge:t})},t[29]=c,t[30]=xe);let Se;t[31]!==c||t[32]!==S?(Se=e=>{e.stopPropagation(),c.send({type:`xyflow.paneClick`}),S?.(e)},t[31]=c,t[32]=S,t[33]=Se):Se=t[33];let Ce;t[34]!==c||t[35]!==C?(Ce=e=>{e.stopPropagation(),e.preventDefault(),c.send({type:`xyflow.paneDblClick`}),C?.(e)},t[34]=c,t[35]=C,t[36]=Ce):Ce=t[36];let we;t[37]===c?we=t[38]:(we=(e,t)=>{e.stopPropagation(),c.send({type:`xyflow.nodeMouseEnter`,node:t})},t[37]=c,t[38]=we);let Te;t[39]===c?Te=t[40]:(Te=(e,t)=>{e.stopPropagation(),c.send({type:`xyflow.nodeMouseLeave`,node:t})},t[39]=c,t[40]=Te);let Ee;t[41]===c?Ee=t[42]:(Ee=(e,t)=>{e.stopPropagation(),c.send({type:`xyflow.edgeMouseEnter`,edge:t,event:e})},t[41]=c,t[42]=Ee);let De;t[43]===c?De=t[44]:(De=(e,t)=>{e.stopPropagation(),c.send({type:`xyflow.edgeMouseLeave`,edge:t,event:e})},t[43]=c,t[44]=De);let Oe;t[45]===c?Oe=t[46]:(Oe=e=>{c.send({type:`xyflow.init`,instance:e})},t[45]=c,t[46]=Oe);let ke;t[47]!==c||t[48]!==_?(ke=(e,t)=>{let n=H(c.findDiagramNode(t.id),`diagramNode ${t.id} not found`);_?.(n,e)},t[47]=c,t[48]=_,t[49]=ke):ke=t[49];let Ae;return t[50]!==c||t[51]!==y?(Ae=(e,t)=>{let n=H(c.findDiagramEdge(t.id),`diagramEdge ${t.id} not found`);y?.(n,e)},t[50]=c,t[51]=y,t[52]=Ae):Ae=t[52],z(pt,{nodes:d,edges:f,className:k(u?`initialized`:`not-initialized`),nodeTypes:pe,edgeTypes:Fs,onNodesChange:j(ge),onEdgesChange:j(_e),background:u?o:`transparent`,fitView:!1,onNodeClick:j(ye),onEdgeClick:j(be),onEdgeDoubleClick:j(xe),onPaneClick:j(Se),onDoubleClick:j(Ce),onNodeMouseEnter:j(we),onNodeMouseLeave:j(Te),onEdgeMouseEnter:j(Ee),onEdgeMouseLeave:j(De),onMove:se,onMoveEnd:D,onInit:j(Oe),onNodeContextMenu:j(ke),onEdgeContextMenu:j(Ae),...v&&{onPaneContextMenu:v},...p&&{onViewportResize:ue},nodesDraggable:m,nodesSelectable:h,elevateEdgesOnSelect:!l,zIndexMode:`manual`,...m&&ne,...g,...s,children:i})}function Vs(){console.warn(`renderNodes changed - this might degrade performance`)}function Hs(e,t){try{return Sr(!1),Ws(e,t)}finally{Sr(!0)}}var Us=e=>d(e.parent);function Ws(e,t){V(e.id===t.id,`View IDs do not match`),V(e._type===t._type,`View types do not match`),V(e._layout===`manual`&&t._layout===`auto`,`Views must be manual and auto`);let n=new Set,r=new Set,i=e=>!n.has(typeof e==`string`?e:e.id),a=e=>r.has(e.source)&&r.has(e.target)&&i(e.source)&&i(e.target),o=new Map(t.nodes.map(t=>{t.children&&t.children.length>0&&n.add(t.id);let i=e.nodes.find(e=>e.id===t.id);return i?[t.id,qs({latest:t,manual:i})]:(r.add(t.id),[t.id,Ys(t)])}));if(r.size===o.size)return xr(t,e=>{e._layout=`manual`,e.nodes=br([...o.values()]),e.edges=br(t.edges.map(Ys)),delete e.drifts});n.size>0&&Ks(o);let s=[...o.values()],c=t.edges.map(t=>{let n=t.dir??`forward`,r=e=>e.source===t.source&&e.target===t.target&&(e.dir===n||!e.dir&&!t.dir),i=e.edges.find(e=>e.id===t.id&&r(e));return i||=e.edges.find(e=>r(e)),i?Js({latest:t,manual:i}):a(t)?Ys(t):Xs(t,o.get(t.source),o.get(t.target))}),l=U.merge(...s.filter(Us));return xr(t,e=>{e._layout=`manual`,e.nodes=br(s),e.edges=br(c),e.bounds=l,delete e.drifts})}var Gs={Left:42,Right:42,Top:60,Bottom:42};function Ks(e){function t(n){let r=H(e.get(n),`Node ${n} not found`);if(r.children.length===0)return r;let i=[];for(let e of r.children)i.push(t(e));let a=U.merge(...i);return r.x=a.x-Gs.Left,r.y=a.y-Gs.Top,r.width=a.width+Gs.Left+Gs.Right,r.height=a.height+Gs.Top+Gs.Bottom,r}for(let n of e.values())!Us(n)||n.children.length===0||t(n.id)}function qs({latest:e,manual:t}){return V(t.id===e.id,`Node IDs do not match`),xr(e,e=>{e.x=t.x,e.y=t.y,e.drifts=null})}function Js(e){let{manual:t,latest:n}=e;return xr(n,e=>{t.controlPoints?e.controlPoints=t.controlPoints:delete e.controlPoints,e.points=br(t.points),t.labelBBox&&(e.labelBBox=n.labelBBox??t.labelBBox,e.labelBBox.x=t.labelBBox.x,e.labelBBox.y=t.labelBBox.y),e.drifts=null})}function Ys(e){if(`drifts`in e&&e.drifts!==null){let t={...e};return t.drifts=null,t}return e}function Xs(e,t,n){let r=Qs(t,n),i=r[0];return xr(e,t=>{t.points=br(D(r,or)),t.controlPoints=r,e.labelBBox&&(t.labelBBox.x=i.x,t.labelBBox.y=i.y),delete t.drifts})}function Zs(e,t,n){let r=e.width/2/n.x,i=e.height/2/n.y,a=Math.min(Math.abs(r),Math.abs(i));return W(n).multiply(a).add(t)}function Qs(e,t){let n=W(U.center(e)),r=W(U.center(t));if(e===t){let t=W(0,e.height||0).multiply(-.5).add(n);return[t.add(W(-80/2.5,-80)).trunc().toObject(),t.add(W(80/2.5,-80)).trunc().toObject()]}let i=r.subtract(n),a=Zs(e,n,i),o=Zs(t,r,i.multiply(-1)).subtract(a);return[a.add(o.multiply(.4)).trunc().toObject(),a.add(o.multiply(.6)).trunc().toObject()]}var $s=e=>Promise.resolve().then(()=>e());function ec(){let e=R(13),t=Mr(),n;e[0]===t?n=e[1]:(n=d(t),e[0]=t,e[1]=n);let r=n,i;e[2]===t?i=e[3]:(i=async e=>{let{input:n}=e,{viewId:r,current:i}=n;if(!t)throw console.error(`No editor port available for applying latest to manual layout`),Error(`No editor port`);return{updated:Hs(await $s(()=>i??t.fetchView(r,`manual`)),await $s(()=>t.fetchView(r,`auto`)))}},e[2]=t,e[3]=i);let a=j(i),o;e[4]===t?o=e[5]:(o=async e=>{let{input:n}=e;if(!t)throw console.error(`No editor port available for executing change`),Error(`No editor port`);for(let e of n.changes)await $s(()=>t.handleChange(n.viewId,e));return{}},e[4]=t,e[5]=o);let s=j(o),c;e[6]===t?c=e[7]:(c=async e=>{let{input:n}=e;if(!t)throw console.error(`No editor port available for applying semantic layout`),Error(`No editor port`);if(!t.applySemanticLayout)throw console.error(`No applySemanticLayout method available on editor port`),Error(`No applySemanticLayout method`);return await t.applySemanticLayout(n.viewId),{}},e[6]=t,e[7]=c);let l=j(c),u;return e[8]!==a||e[9]!==l||e[10]!==s||e[11]!==r?(u=Object.assign(da.provide({actors:{applyLatest:Qt(a),executeChange:Qt(s),applySemanticLayout:Qt(l)}}),{isStub:r}),e[8]=a,e[9]=l,e[10]=s,e[11]=r,e[12]=u):u=e[12],u}function tc(e){return{ref:e,get actor(){return e.current},editorActor(){let t=Y(e.current.system).editorActorRef;return K(t,`Editor actor not found in actor system`)},overlays(){let t=Y(e.current.system).overlaysActorRef;return K(t,`Overlays actor not found in actor system`)},searchActor(){let t=Y(e.current.system).searchActorRef;return K(t,`Search actor not found in actor system`)},send:t=>e.current.send(t),navigateTo:(t,n,r)=>{e.current.send({type:`navigate.to`,viewId:t,...n&&{fromNode:n},...r&&{focusOnElement:r}})},navigate:t=>{e.current.send({type:`navigate.${t}`})},fitDiagram:(t=350)=>{e.current.send({type:`xyflow.fitDiagram`,duration:t})},openRelationshipsBrowser:t=>{e.current.send({type:`open.relationshipsBrowser`,fqn:t})},openSource:t=>{e.current.send({type:`open.source`,...t})},openElementDetails:(t,n)=>{e.current.send({type:`open.elementDetails`,fqn:t,fromNode:n})},openRelationshipDetails:(...t)=>{t.length===1?e.current.send({type:`open.relationshipDetails`,params:{edgeId:t[0]}}):e.current.send({type:`open.relationshipDetails`,params:{source:t[0],target:t[1]}})},updateNodeData:(t,n)=>{e.current.send({type:`update.nodeData`,nodeId:t,data:n})},updateEdgeData:(t,n)=>{e.current.send({type:`update.edgeData`,edgeId:t,data:n})},startEditing:t=>{let n=Y(e.current.system).editorActorRef;G(n,`No editor actor found in diagram actor system`),n.send({type:`edit.move.start`,subject:t})},stopEditing:(t=!1)=>{let n=Y(e.current.system).editorActorRef;G(n,`No editor actor found in diagram actor system`),n.send({type:t?`edit.move.end`:`edit.move.cancel`})},undoEditing:()=>{let t=Y(e.current.system).editorActorRef;G(t,`No editor actor found in diagram actor system`);let n=t.getSnapshot().context.history!==null;return n&&t.send({type:`undo`}),n},align:t=>{e.current.send({type:`layout.align`,mode:t})},resetEdgeControlPoints:()=>{e.current.send({type:`layout.resetEdgeControlPoints`})},focusNode:t=>{e.current.send({type:`focus.node`,nodeId:t})},focusOnElement:t=>{let n=e.current.getSnapshot().context,r=ki(n.xynodes,t);r&&e.current.send({type:`focus.node`,nodeId:r.id,autoUnfocus:!0})},get currentView(){return e.current.getSnapshot().context.view},getContext:()=>e.current.getSnapshot().context,findDiagramNode:t=>Ai(e.current.getSnapshot().context,t),findEdge:t=>e.current.getSnapshot().context.xyedges.find(e=>e.data.id===t)??null,findDiagramEdge:t=>ji(e.current.getSnapshot().context,t),startWalkthrough:()=>{e.current.send({type:`walkthrough.start`})},walkthroughStep:(t=`next`)=>{e.current.send({type:`walkthrough.step`,direction:t})},stopWalkthrough:()=>{e.current.send({type:`walkthrough.end`})},toggleFeature:(t,n)=>{e.current.send({type:`toggle.feature`,feature:t,...n!==void 0&&{forceValue:n}})},highlightNotation:(t,n)=>{e.current.send({type:`notations.highlight`,notation:t,...n&&{kind:n}})},unhighlightNotation:()=>{e.current.send({type:`notations.unhighlight`})},openSearch:t=>{e.current.send({type:`open.search`,...t&&{search:t}})},triggerChange:t=>{e.current.send({type:`trigger.change`,change:t})},switchDynamicViewVariant:t=>{e.current.send({type:`switch.dynamicViewVariant`,variant:t})},highlightNode:t=>{e.current.send({type:`highlight.node`,nodeId:t})},highlightEdge:t=>{e.current.send({type:`highlight.edge`,edgeId:t})},unhighlightAll:()=>{e.current.send({type:`unhighlight.all`})},centerViewportOnNode:t=>{e.current.send({type:`xyflow.centerViewport`,nodeId:t})},centerViewportOnEdge:t=>{e.current.send({type:`xyflow.centerViewport`,edgeId:t})}}}var nc=`likec4:diagram:toggledFeatures`,rc={read(){try{let e=sessionStorage.getItem(nc);return e?JSON.parse(e):null}catch(e){return console.error(`Error reading fromStorage ${nc}:`,e),null}},write(e){return sessionStorage.setItem(nc,JSON.stringify(ce(e,l))),e}};function ic(e,t){let n=t.view,r=e.view.id===n.id;return n._type===`dynamic`&&n.variant===`sequence`?{xynodes:t.xynodes,xyedges:t.xyedges,view:n}:{xynodes:_a(e.xynodes,t.xynodes),xyedges:r?ma(e.xyedges,t.xyedges):t.xyedges,view:n}}function ac(e){let{xynodes:t,xyedges:n,focusedNode:r}=e;if(!r)return null;let i=new Set([r]),a=n.map(e=>e.source===r||e.target===r?(i.add(e.source),i.add(e.target),M.setData(e,{dimmed:!1,active:!0})):M.setData(e,{dimmed:!0,active:!1}));return{xynodes:t.map(e=>M.setDimmed(e,!i.has(e.id))),xyedges:a}}function oc({context:e,event:t}){return L(t,`update.nodeData`),{xynodes:e.xynodes.map(e=>{if(e.id!==t.nodeId)return e;let n=te(e.data,t.data);return N(n,e.data)?e:{...e,data:n}})}}function sc({context:e,event:t}){return L(t,`update.edgeData`),{xyedges:e.xyedges.map(e=>{if(e.id!==t.edgeId)return e;let n=te(e.data,t.data);return N(n,e.data)?e:{...e,data:n}})}}function cc(e,t,n){let r=Sn(e),i=r.width/2/n.x,a=r.height/2/n.y,o=Math.min(Math.abs(i),Math.abs(a));return W(n).multiply(o).add(t)}function lc(e,t){let n=H(e.get(t.source),`Source node ${t.source} not found`),r=H(e.get(t.target),`Target node ${t.target} not found`),i=W($e(n)),a=W($e(r));if(n===r){let e=W(0,n.height||0).multiply(-.5).add(i);return[e.add(W(-80/2.5,-80)).round().toObject(),e.add(W(80/2.5,-80)).round().toObject()]}let o=a.subtract(i),s=cc(n,i,o),c=cc(r,a,o.multiply(-1)).subtract(s);return[s.add(c.multiply(.4)).round().toObject(),s.add(c.multiply(.6)).round().toObject()]}var uc=e=>$.createAction(({context:t,event:n})=>{let r,i;e?(r=e.viewport,i=e.duration):(L(n,`xyflow.setViewport`),r=n.viewport,i=n.duration),i??=450;let{panZoom:a}=H(t.xystore).getState(),o=i>0?{duration:i,interpolate:`smooth`}:void 0;a?.setViewport({x:Math.round(r.x),y:Math.round(r.y),zoom:r.zoom},o).catch(e=>{console.error(`Error during setViewport`,{err:e})})}),dc=e=>$.createAction(({context:t,event:n})=>{let r;r=e||(n.type===`update.view`?qn.center(Mi(t,n.view)):qn.center(Mi(t))),V(t.xyflow,`xyflow is not initialized`);let i=t.xyflow.getZoom();t.xyflow.setCenter(Math.round(r.x),Math.round(r.y),{zoom:i}).catch(e=>{console.error(`Error during setViewportCenter`,{err:e})})}),fc=()=>$.raise(({context:e,event:t})=>{L(t,`xyflow.centerViewport`);let n=e.xystore.getState();if(`edgeId`in t){let e=n.edgeLookup.get(t.edgeId);if(!e)return{type:`noop`};let r=n.nodeLookup.get(e.source),i=n.nodeLookup.get(e.target);if(!r||!i)return{type:`noop`};let a=wn([r,i],n),o=Pr({points:e.data.points,controlPoints:e.data.controlPoints&&tr(e.data.controlPoints)?e.data.controlPoints:null,labelBBox:e.data.labelBBox??null});return{type:`xyflow.fitDiagram`,bounds:qn.merge(a,o)}}let r=n.nodeLookup.get(t.nodeId);return r?{type:`xyflow.fitDiagram`,bounds:wn([r],n)}:{type:`noop`}}),pc=e=>$.createAction(({context:t,event:n})=>{let r,i;e?(r=e.bounds,i=e.duration):n.type===`xyflow.fitDiagram`&&(r=n.bounds,i=n.duration),r??=Mi(t),i??=450;let{width:a,height:o,panZoom:s,transform:c}=H(t.xystore).getState(),l=Math.max(1,c[2]),u=Cn(r,a,o,Qe,l,t.fitViewPadding);u.x=Math.round(u.x),u.y=Math.round(u.y);let d=i>0?{duration:i,interpolate:`smooth`}:void 0;s?.setViewport(u,d).catch(e=>{console.error(`Error during fitDiagram panZoom setViewport`,{err:e})})}),mc=()=>$.createAction(({context:e})=>{let{bounds:t,duration:n=450}=e.activeWalkthrough&&e.dynamicViewVariant===`sequence`?Fi({context:e}):Ni({context:e}),{width:r,height:i,panZoom:a,transform:o}=H(e.xystore).getState(),s=Cn(t,r,i,Qe,Math.max(1,o[2]),e.fitViewPadding);s.x=Math.round(s.x),s.y=Math.round(s.y);let c=n>0?{duration:n,interpolate:`smooth`}:void 0;a?.setViewport(s,c).catch(e=>{console.error(`Error during fitFocusedBounds panZoom setViewport`,{err:e})})}),hc=30,gc=e=>{let{delay:t=hc,...n}=e??{};return $.raise({type:`xyflow.setViewport`,...n},{id:`fitDiagram`,delay:t})},_c=()=>$.cancel(`fitDiagram`),vc=e=>{let{delay:t=hc,...n}=e??{};return $.raise({type:`xyflow.fitDiagram`,...n},{id:`fitDiagram`,delay:t})},yc=e=>$.raise(({context:t})=>({type:`update.view`,view:e??t.view}),{delay:hc}),bc=e=>$.assign(({context:t})=>e===!1?{viewportBefore:null}:{viewportBefore:{wasChangedManually:t.viewportChangedManually,value:e??{...t.viewport}}}),xc=e=>$.enqueueActions(({enqueue:t,context:{viewportBefore:n}})=>{t(_c());let r=e?.delay===0;n?(t.assign({viewportChangedManually:n.wasChangedManually,viewportBefore:null}),t(r?uc({viewport:n.value,...e}):gc({viewport:n.value,...e}))):t(r?pc({...e}):vc({...e}))});function Sc(e){let{view:t}=e,n=[],r=[],i=new Map,a=t.autoLayout?.direction??`TB`,o=Xn.from(t.nodes.reduce((e,t)=>(i.set(t.id,t),t.parent||e.push({node:t,parent:null}),e),[])),s=e=>!0;if(e.where)try{let t=ar(e.where);s=e=>t({...w(e,[`tags`,`kind`]),...`source`in e?{source:c(e.source)}:e,...`target`in e?{target:c(e.target)}:e})}catch(e){console.error(`Error in where filter:`,e)}let c=e=>H(i.get(e),`Node not found: ${e}`),l;for(;l=o.dequeue();){let{node:e,parent:r}=l,i=E(e.children,1)||e.kind==Yn;if(i)for(let t of e.children)o.enqueue({node:c(t),parent:e});let u={x:e.x,y:e.y};r&&(u.x-=r.x,u.y-=r.y);let d={id:``+e.id,deletable:!1,position:u,zIndex:i?Ze.Compound:Ze.Element,style:{width:e.width,height:e.height},initialWidth:e.width,initialHeight:e.height,hidden:e.kind!==Yn&&!s(e),...r&&{parentId:``+r.id}},f={viewId:t.id,id:e.id,title:e.title,color:e.color,shape:e.shape,style:e.style,depth:e.depth??0,icon:e.icon??`none`,tags:e.tags??null,x:e.x,y:e.y,drifts:e.drifts??null,notes:e.notes,viewLayoutDir:a},p={viewId:t.id,id:e.id,title:e.title,technology:e.technology??null,description:e.description??null,height:e.height,width:e.width,level:e.level,color:e.color,shape:e.shape,style:e.style,icon:e.icon??null,tags:e.tags,notes:e.notes,x:e.x,y:e.y,isMultiple:e.style?.multiple??!1,drifts:e.drifts??null,viewLayoutDir:a};if(e.kind===Yn){n.push({...d,type:`view-group`,data:{isViewGroup:!0,...f}});continue}let m=e.modelRef??null,h=e.deploymentRef??null;if(!m&&!h)throw console.error(`Invalid node`,e),Error(`Element should have either modelRef or deploymentRef`);let g={navigateTo:e.navigateTo??null};switch(!0){case i&&!!h:n.push({...d,type:`compound-deployment`,data:{...f,...g,deploymentFqn:h,modelFqn:m}});break;case i:V(!!m,`ModelRef expected`),n.push({...d,type:`compound-element`,data:{...f,...g,modelFqn:m}});break;case!!h:n.push({...d,type:`deployment`,data:{...p,...g,deploymentFqn:h,modelFqn:m}});break;default:V(!!m,`ModelRef expected`),n.push({...d,type:`element`,data:{...p,...g,modelFqn:m}})}}for(let e of t.edges){let t=e.source,n=e.target,i=``+e.id;if(!E(e.points,2)){console.error(`edge should have at least 2 points`,e);continue}r.push({id:i,type:`relationship`,source:``+t,target:``+n,zIndex:Ze.Edge,hidden:!s(e),deletable:!1,data:{id:e.id,label:e.label,technology:e.technology,notes:e.notes??null,navigateTo:e.navigateTo,controlPoints:e.controlPoints??null,labelBBox:e.labelBBox??null,labelXY:null,points:e.points,color:e.color??`gray`,line:e.line??`dashed`,dir:e.dir??`forward`,head:e.head??`normal`,tail:e.tail??`none`,astPath:e.astPath,drifts:e.drifts??null},interactionWidth:20})}return{xynodes:n,xyedges:r}}var Cc={compound:0,parallel:1,actor:10,step:20},wc={default:`gray`,active:`amber`};function Tc(e,t){let{actors:n,steps:r,compounds:i,parallelAreas:a,bounds:o}=e.sequenceLayout,s=[],c=[],l=t=>H(e.nodes.find(e=>e.id===t));for(let t of i)s.push(Ec(t,l(t.origin),e));for(let t of a)s.push(Dc(t,e));for(let t of n)s.push(Oc(t,l(t.id),o,e));for(let n of r){let r=e.edges.find(e=>e.id===n.id);if(!r)throw Error(`Edge ${n.id} not found`);c.push(kc(n,r,t??e.id))}return{xynodes:s,xyedges:c}}function Ec({id:e,x:t,y:n,width:r,height:i,depth:a},o,s){return{id:e,type:`view-group`,data:{id:o.id,title:o.title,color:o.color??`gray`,shape:o.shape,style:o.style,tags:o.tags,x:t,y:n,viewId:s.id,depth:a,isViewGroup:!0,drifts:o.drifts??null,viewLayoutDir:`LR`,notes:void 0},position:{x:t,y:n},draggable:!1,selectable:!1,focusable:!1,style:{pointerEvents:`none`},width:r,initialWidth:r,height:i,initialHeight:i}}function Dc({parallelPrefix:e,x:t,y:n,width:r,height:i},a){return{id:`seq-parallel-${e}`,type:`seq-parallel`,data:{id:`seq-parallel-${e}`,title:`PARALLEL`,technology:null,color:wc.default,shape:`rectangle`,style:{},tags:[],x:t,y:n,level:0,icon:null,width:r,height:i,description:null,viewId:a.id,parallelPrefix:e,drifts:null,viewLayoutDir:`LR`,notes:void 0},zIndex:Cc.parallel,position:{x:t,y:n},draggable:!1,deletable:!1,selectable:!1,focusable:!1,style:{pointerEvents:`none`},width:r,initialWidth:r,height:i,initialHeight:i}}function Oc({id:e,x:t,y:n,width:r,height:i,ports:a},o,s,c){return{id:e,type:`seq-actor`,data:{id:o.id,x:t,y:n,level:0,icon:o.icon??null,isMultiple:o.style.multiple??!1,title:o.title,width:r,height:i,color:o.color,navigateTo:o.navigateTo??null,shape:o.shape,style:o.style,tags:o.tags,modelFqn:o.modelRef??null,technology:o.technology??null,description:o.description??null,viewHeight:s.height,viewId:c.id,notes:o.notes,ports:a,drifts:o.drifts??null,viewLayoutDir:`LR`},deletable:!1,selectable:!0,zIndex:Cc.actor,position:{x:t,y:n},width:r,initialWidth:r,height:i,initialHeight:i}}function kc({id:e,labelBBox:t,sourceHandle:n,targetHandle:r},i,a){return{id:e,type:`seq-step`,data:{id:e,label:i.label,technology:i.technology,notes:i.notes??null,navigateTo:i.navigateTo===a?null:i.navigateTo,controlPoints:null,labelBBox:{x:0,y:0,width:t?.width??i.labelBBox?.width??32,height:t?.height??i.labelBBox?.height??32},labelXY:null,points:i.points,color:i.color,line:i.line,dir:`forward`,head:i.head??`normal`,tail:i.tail??`none`,astPath:i.astPath,drifts:i.drifts??null},selectable:!0,focusable:!1,zIndex:20,interactionWidth:40,source:i.source,sourceHandle:n,target:i.target,targetHandle:r}}function Ac({dynamicViewVariant:e,...t}){let n=t.view,r=n._type===`dynamic`,{xynodes:i,xyedges:a}=r&&e===`sequence`?Tc(n,t.currentViewId):Sc({...t});return r&&n.variant!==e?{view:{...n,variant:e},xynodes:i,xyedges:a}:{view:n,xynodes:i,xyedges:a}}var jc=class{},Mc=class extends jc{getEdgePosition;computePosition;propertyToEdit;alignTo;constructor(e,t,n){super(),this.getEdgePosition=e,this.computePosition=t,this.propertyToEdit=n}computeLayout(e){this.alignTo=this.getEdgePosition(e)}applyPosition(e){return{[this.propertyToEdit]:this.computePosition(this.alignTo,e)}}},Nc=class extends jc{layout=new Map;axisPreset;get primaryAxisCoord(){return this.axisPreset.primaryAxisCoord}get secondaryAxisCoord(){return this.axisPreset.secondaryAxisCoord}get primaryAxisDimension(){return this.axisPreset.primaryAxisDimension}get secondaryAxisDimension(){return this.axisPreset.secondaryAxisDimension}constructor(e){super(),this.axisPreset=e===`Column`?{primaryAxisDimension:`width`,secondaryAxisDimension:`height`,primaryAxisCoord:`x`,secondaryAxisCoord:`y`}:{primaryAxisDimension:`height`,secondaryAxisDimension:`width`,primaryAxisCoord:`y`,secondaryAxisCoord:`x`}}applyPosition(e){return this.layout?.get(e.id)??{}}computeLayout(e){let t=v(e,oe(e=>e[this.primaryAxisCoord])),n=this.getLayoutRect(t),r=this.getLayers(t);this.layout=this.buildLayout(r,n,t)}getLayoutRect(e){let t=Math.min(...e.map(e=>e.x)),n=Math.min(...e.map(e=>e.y)),r=Math.max(...e.map(e=>e.x+e.width)),i=Math.max(...e.map(e=>e.y+e.height));return{x:t,y:n,width:r-t,height:i-n}}getLayers(e){let t=[],n=0,r=null;for(let i of e)if(r&&i[this.primaryAxisCoord]<n)r.nodes.push(i),r.primaryAxisSize=Math.max(r.primaryAxisSize,i[this.primaryAxisDimension]),r.occupiedSpace+=i[this.secondaryAxisDimension],n=Math.max(i[this.primaryAxisCoord]+i[this.primaryAxisDimension],n);else{r={primaryAxisSize:i[this.primaryAxisDimension],nodes:[i],occupiedSpace:i[this.secondaryAxisDimension],layout:null},t.push(r),n=i[this.primaryAxisCoord]+i[this.primaryAxisDimension];continue}return t.forEach(e=>e.nodes.sort((e,t)=>e[this.secondaryAxisCoord]-t[this.secondaryAxisCoord])),t}buildLayout(e,t,n){let r=new Map(n.map(e=>[e.id,e])),i=[],a=e.reduce((e,t)=>e+t.primaryAxisSize,0),o=e.length>1?(t[this.primaryAxisDimension]-a)/(e.length-1):0,s=e.reduce((t,n,r)=>e[t].occupiedSpace<n.occupiedSpace?r:t,0),c=e[s],l=e.slice(0,s).reduce((e,t)=>e+t.primaryAxisSize+o,t[this.primaryAxisCoord]),u=this.buildLayerLayout(c,t,l,r,null);c.layout=u,i.push(...u.nodePositions);let d=l+c.primaryAxisSize+o,f=c;for(let n=s+1;n<e.length;n++){let a=e[n];a.layout=this.buildLayerLayout(a,t,d,r,f),i.push(...a.layout.nodePositions),f=a.layout.refLayer??a,d+=a.primaryAxisSize+o}d=l,f=c;for(let n=s-1;n>=0;n--){let a=e[n];d-=a.primaryAxisSize+o,a.layout=this.buildLayerLayout(a,t,d,r,f),i.push(...a.layout.nodePositions),f=a.layout.refLayer??a}return new Map(i)}buildLayerLayout(e,t,n,r,i){let a=this.scoreLayout(this.spaceAround(e,t,n),r);if(e.nodes.length!=1){let i=this.scoreLayout(this.spaceBetween(e,t,n),r);a=i[0]<a[0]?i:a}if(i&&i.nodes.length-1>=e.nodes.length){let t=this.scoreLayout(this.placeInGaps(e,n,i),r);a=t[0]<a[0]?t:a}if(i&&i.nodes.length>=e.nodes.length){let t=this.scoreLayout(this.placeInCells(e,n,i),r);a=t[0]<a[0]?t:a}return a[1]}spaceBetween(e,t,n){let r=(t[this.secondaryAxisDimension]-e.occupiedSpace)/(e.nodes.length-1),i=t[this.secondaryAxisCoord],a=new Map;for(let t of e.nodes)a.set(t.id,{[this.secondaryAxisCoord]:i,[this.primaryAxisCoord]:n}),i+=t[this.secondaryAxisDimension]+r;return{nodePositions:a,refLayer:null}}spaceAround(e,t,n){let r=(t[this.secondaryAxisDimension]-e.occupiedSpace)/(e.nodes.length+1),i=t[this.secondaryAxisCoord]+r,a=new Map;for(let t of oe(e.nodes,e=>e[this.secondaryAxisCoord]))a.set(t.id,{[this.secondaryAxisCoord]:i,[this.primaryAxisCoord]:n}),i+=t[this.secondaryAxisDimension]+r;return{nodePositions:a,refLayer:null}}placeInGaps(e,t,n){let r=new Map,i=e.nodes,a=this.getGapsPositions(n),o=0;for(let e=0,n=i[e];e<i.length;e++,n=i[e]){let s=n[this.secondaryAxisCoord]+n[this.secondaryAxisDimension]/2,c=1/0;for(;o-e<=a.length-i.length;){let e=a[o]-s;if(Math.abs(e)<Math.abs(c))c=e,o++;else break}r.set(n.id,{[this.secondaryAxisCoord]:n[this.secondaryAxisCoord]+c,[this.primaryAxisCoord]:t})}return{nodePositions:r,refLayer:n}}placeInCells(e,t,n){let r=new Map,i=e.nodes,a=this.getNodePositions(n),o=0;for(let e=0,n=i[e];e<i.length;e++,n=i[e]){let s=n[this.secondaryAxisCoord]+n[this.secondaryAxisDimension]/2,c=1/0;for(;o-e<=a.length-i.length;){let e=a[o]-s;if(Math.abs(e)<Math.abs(c))c=e,o++;else break}r.set(n.id,{[this.secondaryAxisCoord]:n[this.secondaryAxisCoord]+c,[this.primaryAxisCoord]:t})}return{nodePositions:r,refLayer:n}}scoreLayout(e,t){return[v(Array.from(e.nodePositions),D(([e,n])=>{let r=t.get(e);return V(r,`Could not find original rect for node ${e}`),[w(r,[`x`,`y`]),n]}),D(([e,t])=>Math.abs(e[this.secondaryAxisCoord]-t[this.secondaryAxisCoord])),ie((e,t)=>e+t,0)),e]}getGapsPositions(e){let t=[],{layout:n,nodes:r}=e;V(n,`Layout of the layer must be computed before calling getGapsPositions`);for(let e=1;e<r.length;e++){let i=r[e-1],a=r[e],o=n.nodePositions.get(i.id),s=n.nodePositions.get(a.id);t.push((s[this.secondaryAxisCoord]+o[this.secondaryAxisCoord]+i[this.secondaryAxisDimension])/2)}return t}getNodePositions(e){let t=[],{layout:n,nodes:r}=e;V(n,`Layout of the layer must be computed before calling getGapsPositions`);for(let e=0;e<r.length;e++){let i=r[e],a=n.nodePositions.get(i.id);t.push(a[this.secondaryAxisCoord]+i[this.secondaryAxisDimension]/2)}return t}};function Pc(e){switch(e){case`Left`:return new Mc(e=>Math.min(...e.map(e=>e.x)),(e,t)=>Math.floor(e),`x`);case`Top`:return new Mc(e=>Math.min(...e.map(e=>e.y)),(e,t)=>Math.floor(e),`y`);case`Right`:return new Mc(e=>Math.max(...e.map(e=>e.x+e.width)),(e,t)=>Math.floor(e-t.width),`x`);case`Bottom`:return new Mc(e=>Math.max(...e.map(e=>e.y+e.height)),(e,t)=>Math.floor(e-t.height),`y`);case`Center`:return new Mc(e=>Math.min(...e.map(e=>e.x+e.width/2)),(e,t)=>Math.floor(e-t.width/2),`x`);case`Middle`:return new Mc(e=>Math.min(...e.map(e=>e.y+e.height/2)),(e,t)=>Math.floor(e-t.height/2),`y`)}}function Fc(e){let{width:t,height:n}=Sn(e);return{...e.internals.positionAbsolute,id:e.id,width:t,height:n}}function Ic(e){switch(e){case`Left`:case`Right`:case`Top`:case`Bottom`:case`Center`:case`Middle`:return Pc(e);case`Column`:case`Row`:return new Nc(e);default:ir(e)}}var Lc=()=>$.assign(({context:e})=>({toggledFeatures:{...e.toggledFeatures,enableCompareWithLatest:!1},viewportOnAutoLayout:null,viewportOnManualLayout:null})),Rc=()=>$.assign(({context:e,event:t})=>{if(L(t,`xyflow.edgeDoubleClick`),!t.edge.data.controlPoints)return{};let{nodeLookup:n}=e.xystore.getState();return{xyedges:e.xyedges.map(e=>{if(e.id!==t.edge.id)return e;let r=lc(n,e),i=r[0];return{...e,data:{...e.data,controlPoints:r,labelBBox:e.data.labelBBox?{...e.data.labelBBox,...i}:null,labelXY:null}}})}}),zc=()=>$.assign(({context:e,event:t})=>{L(t,`xyflow.nodeClick`);let{lastClickedNode:n}=e;return!n||n.id!==t.node.id?{lastClickedNode:{id:t.node.id,clicks:1,timestamp:Date.now()}}:{lastClickedNode:{id:n.id,clicks:n.clicks+1,timestamp:Date.now()}}}),Bc=()=>$.assign(({event:e})=>{let t,n=!1;switch(e.type){case`xyflow.nodeClick`:t=e.node.data.id;break;case`focus.node`:t=e.nodeId,n=e.autoUnfocus===!0;break;default:throw Error(`Unexpected event type: ${e.type} in action 'assign: focusedNode'`)}return{focusedNode:t,autoUnfocusTimer:n}}),Vc=()=>$.assign(()=>({lastClickedNode:null})),Hc=()=>$.assign(({context:e,event:t})=>(L(t,`update.features`),{features:{...e.features,...t.features}})),Uc=()=>$.assign(({event:e})=>(L(e,`update.inputs`),Qn({...e.inputs}))),Wc=e=>$.assign(({context:t,event:n})=>{let r;e?r=Ac({currentViewId:t.view.id,dynamicViewVariant:t.dynamicViewVariant,view:e,where:t.where}):(L(n,`update.view`),r=`xynodes`in n?n:Ac({currentViewId:t.view.id,dynamicViewVariant:t.dynamicViewVariant,view:n.view,where:t.where}));let i=ic(t,r),{lastClickedNode:a,focusedNode:o,activeWalkthrough:s}=t;if(a||o||s){let e=new Set(i.xynodes.map(e=>e.id));a&&!e.has(a.id)&&(a=null),o&&!e.has(o)&&(o=null);let t=s?.stepId;return t&&!i.xyedges.some(e=>e.id===t)&&(s=null),{...i,lastClickedNode:a,focusedNode:o,activeWalkthrough:s}}return i}),Gc=()=>$.enqueueActions(({context:e,enqueue:t})=>{let n=ac(e);n?t.assign(n):t.raise({type:`key.esc`})}),Kc=()=>$.assign(({context:e})=>({xynodes:e.xynodes.map(M.setDimmed(!1)),xyedges:e.xyedges.map(M.setData({dimmed:!1,active:!1}))})),qc=()=>$.assign(({event:e})=>(L(e,`switch.dynamicViewVariant`),{dynamicViewVariant:e.variant})),Jc=e=>$.assign(({context:t,event:n})=>{let r=e?.node;return r||=(L(n,`xyflow.nodeMouseEnter`),n.node),{xynodes:t.xynodes.map(e=>e.id===r.id?M.setHovered(e,!0):e)}}),Yc=e=>$.assign(({context:t,event:n})=>{let r=e?.node;return r||=(L(n,`xyflow.nodeMouseLeave`),n.node),{xynodes:t.xynodes.map(e=>e.id===r.id?M.setHovered(e,!1):e)}}),Xc=()=>$.emit(()=>({type:`paneClick`})),Zc=e=>$.emit(({event:t})=>e?{type:`openSource`,params:e}:(L(t,`open.source`),{type:`openSource`,params:t})),Qc=()=>$.emit(({context:e})=>({type:`openSource`,params:{view:e.view.id}})),$c=()=>$.emit(({context:e})=>(V(e.xyflow,`XYFlow instance not found`),{type:`initialized`,instance:e.xyflow})),el=()=>$.emit(({context:e,event:t})=>(L(t,`xyflow.nodeClick`),{type:`nodeClick`,node:H(Ai(e,t.node.id),`Node ${t.node.id} not found in diagram`),xynode:t.node})),tl=e=>$.emit(({context:t})=>({type:`navigateTo`,viewId:e?.viewId??H(t.lastOnNavigate,`Invalid state, lastOnNavigate is null`).toView})),nl=()=>$.emit(({context:e,event:t})=>(L(t,`xyflow.edgeClick`),{type:`edgeClick`,edge:H(ji(e,t.edge.id),`Edge ${t.edge.id} not found in diagram`),xyedge:t.edge})),rl=e=>$.enqueueActions(({event:t,enqueue:n})=>{let r=e;r||=(L(t,`trigger.change`),t.change),n.assign({viewportChangedManually:!0}),n.sendTo(Y.editorActor,{type:`change.view`,change:r})}),il=()=>$.enqueueActions(({event:e,system:t,context:n,enqueue:r})=>{if(!n.features.enableCompareWithLatest){console.warn(`Layout type cannot be changed while CompareWithLatest feature is disabled`);return}let i=n.view._layout,a=i===`auto`?`manual`:`auto`;if(e.type===`emit.onLayoutTypeChange`&&(a=e.layoutType),i===a){console.warn(`Ignoring layout type change event, layout type is already`,i);return}if(n.toggledFeatures.enableCompareWithLatest===!0){i===`manual`&&a===`auto`&&Y(t).editorActorRef?.send({type:`cancel`});let e=n.viewport;i===`auto`&&r.assign({viewportOnAutoLayout:e}),i===`manual`&&r.assign({viewportOnManualLayout:e})}r.emit({type:`onLayoutTypeChange`,layoutType:a})}),al=e=>$.createAction(({context:t,event:n})=>{let r;e?r=e.mode:(L(n,`layout.align`),r=n.mode);let i=H(t.xystore,`xystore is not initialized`),{nodeLookup:a,parentLookup:o}=i.getState(),s=[...ur(new Set(a.values().filter(e=>e.selected).map(e=>e.id)),new Set(o.keys()))];if(!E(s,2)){console.warn(`At least 2 nodes must be selected to align`);return}let c=Ms(i,s),l=Ic(r),u=s.map(e=>({node:H(a.get(e)),rect:H(c.rects.get(e))}));l.computeLayout(u.map(({node:e})=>Fc(e)));for(let{rect:e,node:t}of u)e.positionAbsolute={...e.positionAbsolute,...l.applyPosition(Fc(t))};c.updateXYFlow()}),ol=()=>$.assign(({context:e})=>{let{nodeLookup:t}=e.xystore.getState();return{xyedges:e.xyedges.map(e=>{if(!e.data.controlPoints)return e;let n=lc(t,e),r=n[0];return{...e,data:{...e.data,controlPoints:n,labelBBox:e.data.labelBBox?{...e.data.labelBBox,x:r.x,y:r.y}:null,labelXY:e.data.labelXY?r:null}}})}}),sl=()=>$.assign(({context:e,event:t})=>{L(t,`notations.highlight`);let{notation:n,kind:r}=t,i=r?[r]:n.kinds,a=e=>e.notation===n.title&&e.shape===n.shape&&e.color===n.color&&i.includes(e.kind);return{xynodes:e.xynodes.map(t=>{let n=Ai(e,t.id),r=n&&a(n);return M.setDimmed(t,r?!1:`immediate`)}),xyedges:e.xyedges.map(e=>M.setDimmed(e,!0))}}),cl=()=>$.assign(({context:e,event:t})=>(L(t,`tag.highlight`),{xynodes:e.xynodes.map(e=>e.data.tags?.includes(t.tag)?M.setDimmed(e,!1):M.setDimmed(e,!0))})),ll=()=>$.assign(({context:e,event:t})=>{switch(L(t,[`highlight.edge`,`highlight.node`]),t.type){case`highlight.node`:{let n=t.nodeId;return e.xynodes.find(e=>e.id===n)?{xynodes:e.xynodes.map(e=>M.setDimmed(e,e.id!==n)),xyedges:e.xyedges.map(M.setData({dimmed:!0,active:!1}))}:(console.warn(`Node with id ${n} not found for highlighting`),{})}case`highlight.edge`:{let n=t.edgeId,r=e.xyedges.find(e=>e.id===n);return r?{xynodes:e.xynodes.map(e=>M.setDimmed(e,r.source!==e.id&&r.target!==e.id)),xyedges:e.xyedges.map(e=>M.setData(e,{dimmed:e.id!==n,active:e.id===n}))}:(console.warn(`Edge with id ${n} not found for highlighting`),{})}default:ir(t)}}),ul=()=>$.assign(({context:e,event:t})=>{L(t,`toggle.feature`);let n=`enable${t.feature}`,r=e.toggledFeatures[n]??e.features[n],i=t.forceValue??!r;return{toggledFeatures:{...e.toggledFeatures,[n]:i}}}),dl=()=>$.sendTo(Y.searchActor,{type:`close`}),fl=()=>$.sendTo(Y.overlaysActor,{type:`close.all`}),pl=()=>$.enqueueActions(({enqueue:e,system:t})=>{let n=Y(t).editorActorRef;n&&e.stopChild(n)}),ml=()=>$.enqueueActions(({enqueue:e,context:t,system:n,check:r})=>{let i=r(`enabled: Editor`),a=Y(n).editorActorRef;if(!i&&a){e.stopChild(a);return}i&&!a&&e.spawnChild(`editorActor`,{id:`editor`,systemId:`editor`,input:{viewId:t.view.id},syncSnapshot:!0})}),hl=(e=`node`)=>$.sendTo(Y.editorActor,{type:`edit.move.start`,subject:e}),gl=()=>$.sendTo(Y.editorActor,{type:`view.synched`}),_l=(e=!1)=>$.sendTo(Y.editorActor,{type:e?`edit.move.end`:`edit.move.cancel`}),vl=()=>$.sendTo(Y.editorActor,{type:`cancel`}),yl=e=>`modelFqn`in e.data&&p(e.data.modelFqn),bl=e=>$.enqueueActions(({context:t,event:n,enqueue:r})=>{let i=null,a,o;switch(!0){case!!e:o=e.fqn,a=e.fromNode??t.view.nodes.find(t=>t.modelRef===e.fqn)?.id;break;case n.type===`xyflow.nodeClick`:if(!yl(n.node)){console.warn(`No modelFqn in clicked node data`);return}o=n.node.data.modelFqn,a=n.node.data.id;break;case n.type===`open.elementDetails`:o=n.fqn,a=n.fromNode;break;default:{if(!t.lastClickedNode){console.warn(`No last clicked node`);return}a=t.lastClickedNode.id;let e=t.xynodes.find(e=>e.id===a);if(!e||!yl(e)){console.warn(`No modelFqn in last clicked node`);return}o=e.data.modelFqn;break}}let s=a?t.xystore.getState().nodeLookup.get(a):null;if(a&&s){let e=un(s),n=t.xyflow.getZoom(),r={...t.xyflow.flowToScreenPosition(e),width:e.width*n,height:e.height*n};i={node:a,clientRect:r}}r.sendTo(Y.overlaysActor,{type:`open.elementDetails`,subject:o,currentView:t.view,...i&&{initiatedFrom:i}})}),xl=()=>$.enqueueActions(({context:e,event:t,enqueue:n,check:r})=>{if(L(t,[`open.relationshipsBrowser`,`open.relationshipDetails`,`open.elementDetails`]),!r(`enabled: Overlays`)){console.warn(`Overlays feature is disabled`);return}switch(t.type){case`open.elementDetails`:r(`enabled: ElementDetails`)?n(bl()):console.warn(`ElementDetails feature is disabled`);break;case`open.relationshipsBrowser`:if(!e.features.enableRelationshipBrowser){console.warn(`RelationshipBrowser feature is disabled`);return}n.sendTo(Y.overlaysActor,{type:`open.relationshipsBrowser`,subject:t.fqn,viewId:e.view.id,scope:`view`,closeable:!0,enableChangeScope:!0,enableSelectSubject:!0});break;case`open.relationshipDetails`:if(!e.features.enableRelationshipDetails){console.warn(`RelationshipDetails feature is disabled`);return}n.sendTo(Y.overlaysActor,{type:`open.relationshipDetails`,viewId:e.view.id,...t.params});break;default:ir(t)}}),Sl=()=>$.enqueueActions(({context:e,enqueue:t})=>{let n=e.focusedNode??e.lastClickedNode?.id;if(!n||!e.features.enableVscode)return;let r=Ai(e,n);r&&(r.deploymentRef?t.raise({type:`open.source`,deployment:r.deploymentRef}):r.modelRef&&t.raise({type:`open.source`,element:r.modelRef}))}),Cl=()=>$.enqueueActions(({enqueue:e,check:t,system:n})=>{let r=t(`enabled: Overlays`),i=Y(n).overlaysActorRef;if(r&&!i){e.spawnChild(`overlaysActorLogic`,{id:`overlays`,systemId:`overlays`,syncSnapshot:!0});return}!r&&i&&(e.sendTo(i,{type:`close.all`}),e.stopChild(i))}),wl=()=>$.enqueueActions(({enqueue:e,check:t,system:n})=>{let r=t(`enabled: Search`),i=Y(n).searchActorRef;if(r&&!i){e.spawnChild(`searchActorLogic`,{id:`search`,systemId:`search`,syncSnapshot:!0});return}!r&&i&&(e.sendTo(i,{type:`close`}),e.stopChild(i))}),Tl=()=>$.enqueueActions(({enqueue:e,context:t,event:n})=>{L(n,`xyflow.edgeMouseEnter`);let r=n.edge;e.assign({xyedges:t.xyedges.map(e=>e.id===n.edge.id?(r=M.setHovered(e,!0),r):e)}),e.emit({type:`edgeMouseEnter`,edge:r,event:n.event})}),El=()=>$.enqueueActions(({enqueue:e,context:t,event:n})=>{L(n,`xyflow.edgeMouseLeave`);let r=n.edge;e.assign({xyedges:t.xyedges.map(e=>e.id===n.edge.id?(r=M.setHovered(e,!1),r):e)}),e.emit({type:`edgeMouseLeave`,edge:r,event:n.event})}),Dl=()=>$.spawnChild(`hotkeyActorLogic`,{id:`hotkey`}),Ol=()=>$.stopChild(`hotkey`),kl=3e3,Al=()=>$.enqueueActions(({context:e,enqueue:t})=>{e.autoUnfocusTimer&&t.raise({type:`focus.autoUnfocus`},{delay:kl,id:`autoUnfocusTimer`})}),jl=()=>$.cancel(`autoUnfocusTimer`),Ml=()=>$.enqueueActions(({enqueue:e,context:t,event:n})=>{L(n,[`navigate.to`,`navigate.back`,`navigate.forward`]);let{view:r,focusedNode:i,activeWalkthrough:a,dynamicViewVariant:o,viewport:s,viewportChangedManually:c,viewportBefore:l,navigationHistory:u}=t,{currentIndex:d,history:f}=u,p=f;if(d<f.length){let e=xr(f.at(d)??{},e=>{e.viewport={...s},e.viewportChangedManually=c,e.focusedNode=i,r._type===`dynamic`?(e.activeWalkthrough=a?.stepId??null,e.dynamicViewVariant=o):(e.activeWalkthrough=null,e.dynamicViewVariant=null),l?e.viewportBefore=structuredClone(l):delete e.viewportBefore});p=[...f],p[d]=e}switch(n.type){case`navigate.to`:e.assign({navigationHistory:{currentIndex:d,history:p},lastOnNavigate:{fromView:t.view.id,toView:n.viewId,fromNode:n.fromNode??null,focusOnElement:n.focusOnElement??null}}),e(tl());break;case`navigate.back`:{V(d>0,`Cannot navigate back`);let t=p[d-1];e.assign({navigationHistory:{currentIndex:d-1,history:p},lastOnNavigate:null}),e(tl({viewId:t.viewId}));break}case`navigate.forward`:{V(d<p.length-1,`Cannot navigate forward`);let t=p[d+1];e.assign({navigationHistory:{currentIndex:d+1,history:p},lastOnNavigate:null}),e(tl({viewId:t.viewId}));break}default:ir(n)}}),Nl=()=>$.enqueueActions(({enqueue:e,event:t,context:n})=>{if(t.type!==`update.view`){console.warn(`Ignoring unexpected event type: ${t.type} in action 'update.view'`);return}let r=t.view;if(r.id!==n.view.id){console.warn(`updateView called for another view - ignoring`,{event:t});return}if(e(Wc()),t.source===`editor`)return;if(e(gl()),n.toggledFeatures.enableCompareWithLatest===!0&&n.view._layout!==r._layout){if(r._layout===`auto`&&n.viewportOnAutoLayout){e(uc({viewport:n.viewportOnAutoLayout,duration:0}));return}if(r._layout===`manual`&&n.viewportOnManualLayout){e(uc({viewport:n.viewportOnManualLayout,duration:0}));return}}let i=!n.viewportChangedManually&&!n.focusedNode&&!n.activeWalkthrough;i||=n.toggledFeatures.enableCompareWithLatest===!0&&!!r._layout&&n.view._layout!==r._layout,r._type===`dynamic`&&n.view._type===`dynamic`&&r.variant===n.view.variant&&r.variant!==n.dynamicViewVariant&&e(dc(U.center(Mi(n,r)))),i&&(e(_c()),e(vc()))}),Pl=$.createStateConfig({on:{"xyflow.init":{actions:I(({context:e,event:t})=>({initialized:{...e.initialized,xyflow:!0},xyflow:t.instance})),target:`isReady`},"update.view":{actions:[Wc(),I(({context:e})=>({initialized:{...e.initialized,xydata:!0}}))],target:`isReady`}}}),Fl=$.createStateConfig({always:[{guard:`isReady`,actions:[pc({duration:0}),I(({context:e})=>({navigationHistory:{currentIndex:0,history:[{viewId:e.view.id,viewport:{...e.xyflow.getViewport()},viewportChangedManually:!1}]}})),$c()],target:`ready`},{target:`initializing`}]}),Il=()=>$.assign(({context:e,event:t})=>{L(t,`update.view`);let{lastOnNavigate:n,navigationHistory:{currentIndex:r,history:i}}=e,a=i[r];if(!a||a.viewId===t.view.id||n)return{};let o=r>0?i.at(r-1):null;if(o&&o.viewId===t.view.id)return{navigationHistory:{currentIndex:r-1,history:i},lastOnNavigate:null};let s=r<i.length-1?i.at(r+1):null;if(s&&s.viewId===t.view.id)return{navigationHistory:{currentIndex:r+1,history:i},lastOnNavigate:null};if(t.view._type===`element`&&t.view.viewOf){let n=t.view.viewOf,r=e.xynodes.find(e=>Li(e)===n);if(r)return{lastOnNavigate:{fromView:e.view.id,toView:t.view.id,fromNode:r.id}}}return{}}),Ll=$.createStateConfig({id:so.navigating.slice(1),always:{...co.idle,actions:[_c(),Il(),Lc(),an(({enqueue:e,context:t,event:n})=>{L(n,`update.view`);let{xyflow:r,xystore:i,navigationHistory:{currentIndex:a,history:o}}=t,s=`xynodes`in n?n:{...n,...Ac({currentViewId:t.view.id,dynamicViewVariant:t.dynamicViewVariant,view:n.view,where:t.where})};G(r,`xyflow is not initialized`);let c=r.getViewport(),l=e=>{let t=c.zoom,n=e.zoom-t;return Math.abs(n)<.01?e.zoom:Math.trunc(1e4*(t+n*(n<0?.6:.3)))/1e4},u=t=>{let n=l(t);n===t.zoom?r.setViewport(t,{duration:0}):(r.setViewport({x:bt(t.x*(1+c.zoom-n)),y:bt(t.y*(1+c.zoom-n)),zoom:n}),e(gc({delay:100,viewport:t})))},d=o[a];if(d&&d.viewId===s.view.id){let{focusedNode:n,activeWalkthrough:r,viewportBefore:i}=d,a={...ic(t,s),dynamicViewVariant:d.dynamicViewVariant??(s.view._type===`dynamic`?s.view.variant:void 0)??t.dynamicViewVariant,viewportChangedManually:i?.wasChangedManually??d.viewportChangedManually,viewport:i?.value??d.viewport,viewportBefore:null};if(e.assign(a),u(a.viewport),n){e.raise({type:`focus.node`,nodeId:n},{delay:150});return}if(r){e.raise({type:`walkthrough.start`,stepId:r},{delay:150});return}return}let f=Mi(t,s.view),m=zi(t,f),{fromNode:h,toNode:g}=Ri(t,s);if(h&&g){let t=r.getInternalNode(h.id),n=r.flowToScreenPosition({x:t.internals.positionAbsolute.x,y:t.internals.positionAbsolute.y}),a=r.flowToScreenPosition({x:g.data.x,y:g.data.y});i.getState().panBy({x:Math.round(n.x-a.x),y:Math.round(n.y-a.y)}).catch(e=>{console.error(`Error during xyflow.panBy`,{err:e})}),e(gc({delay:100,viewport:m}))}else{let n=l(m);if(n!==m.zoom){let{width:i,height:a}=t.xystore.getState(),o=U.center(f),s=Tt(t.fitViewPadding,i,a);r.setViewport({x:bt((i-s.x)/2-o.x*n+s.left),y:bt((a-s.y)/2-o.y*n+s.top),zoom:n}),e(gc({delay:100,viewport:m}))}else r.setViewport(m,{duration:0})}let _=a<o.length-1?o.slice(0,a+1):[...o];_.length>20&&_.shift(),_.push({viewId:n.view.id,viewport:{...m},viewportChangedManually:!1});let v=t.lastOnNavigate?.focusOnElement,y=p(v)?ki(s.xynodes,v):null;e.assign({...ic(t,s),viewportChangedManually:!1,lastOnNavigate:null,dynamicViewVariant:s.view._type===`dynamic`?s.view.variant:t.dynamicViewVariant,navigationHistory:{currentIndex:_.length-1,history:_}}),y&&e.raise({type:`focus.node`,nodeId:y.id,autoUnfocus:!0},{delay:250})})]}}),Rl=$.createStateConfig({id:so.focused.slice(1),entry:[_c(),Gc(),bc(),Sl(),Dl(),mc(),Al()],exit:[Ol(),Kc(),xc(),jl(),I({focusedNode:null,autoUnfocusTimer:!1})],on:{"focus.autoUnfocus":{...co.idle},"xyflow.nodeClick":[{guard:$t([`enabled: ElementDetails`,`click: focused node`,`click: node has modelFqn`]),actions:[zc(),bl(),el()]},{guard:`click: focused node`,actions:[zc(),el()],...co.idle},{actions:[zc(),F(({event:e})=>({type:`focus.node`,nodeId:e.node.id})),el()]}],"focus.node":{actions:[Bc(),Gc(),Sl(),mc()]},"key.esc":{...co.idle},"xyflow.paneClick":{actions:[Xc()],...co.idle},"notations.unhighlight":{actions:Gc()},"tag.unhighlight":{actions:Gc()}}}),zl=$.createStateConfig({id:so.idle.slice(1),on:{"xyflow.nodeClick":[{guard:$t([`enabled: Readonly`,`enabled: FocusMode`,`click: node has connections`,nn([`click: same node`,`click: selected node`])]),actions:[zc(),Bc(),el()],...co.focused},{guard:$t([`enabled: Readonly`,`enabled: ElementDetails`,`click: node has modelFqn`,nn([`click: same node`,`click: selected node`])]),actions:[zc(),Sl(),bl(),el()]},{actions:[zc(),Sl(),el()]}],"xyflow.paneClick":{actions:[Vc(),Xc()]},"xyflow.paneDblClick":{actions:[Vc(),vc(),Qc(),Xc()]},"focus.node":[{guard:`focus.node: autoUnfocus`,actions:Bc(),target:so.focused},{guard:`enabled: FocusMode`,actions:Bc(),target:so.focused}],"xyflow.edgeClick":{guard:$t([`enabled: Readonly`,`is dynamic view`,`enabled: DynamicViewWalkthrough`,`click: selected edge`]),actions:[Vc(),F(({event:e})=>({type:`walkthrough.start`,stepId:e.edge.id})),nl()]}}}),Bl=$.createStateConfig({id:so.printing.slice(1),entry:[_c(),bc(),an(({enqueue:e,context:t})=>{let n=Mi(t);e(uc({viewport:{x:n.x+16,y:n.y+16,zoom:1},duration:0}))})],exit:[xc({delay:0,duration:0})],on:{"media.print.off":{...co.idle},"*":{actions:[sn(({event:e})=>`Printing state - ignoring event: ${e.type}`)]}}}),Vl=()=>$.enqueueActions(({context:e,enqueue:t})=>{let{activeWalkthrough:n}=e;if(!n){console.warn(`Active walkthrough is null`),t.raise({type:`walkthrough.end`});return}let{stepId:r,parallelPrefix:i}=n,a=e.xyedges.find(e=>e.id===r);if(!a){console.warn(`Invalid walkthrough stepId:`,r),t.raise({type:`walkthrough.end`});return}t.assign({xyedges:e.xyedges.map(e=>{let t=r===e.id||!!i&&e.id.startsWith(i);return M.setData(e,{active:t,dimmed:r!==e.id})}),xynodes:e.xynodes.map(e=>{let t=a.source!==e.id&&a.target!==e.id;return e.type===`seq-parallel`?M.setData(e,{color:i===e.data.parallelPrefix?wc.active:wc.default,dimmed:t}):M.setDimmed(e,t)})})}),Hl=()=>$.emit(({context:e})=>{let t=e.xyedges.find(t=>t.id===e.activeWalkthrough?.stepId);return V(t,`Invalid walkthrough state`),{type:`walkthroughStarted`,edge:t}}),Ul=()=>$.emit(()=>({type:`walkthroughStopped`})),Wl=()=>$.emit(({context:e})=>{let t=e.xyedges.find(t=>t.id===e.activeWalkthrough?.stepId);return V(t,`Invalid walkthrough state`),{type:`walkthroughStep`,edge:t}}),Gl=$.createStateConfig({id:so.walkthrough.slice(1),entry:[Dl(),vl(),_c(),bc(),I({activeWalkthrough:({context:e,event:t})=>{L(t,`walkthrough.start`);let n=t.stepId??m(e.xyedges).id;return{stepId:n,parallelPrefix:$n(n)}}}),Vl(),mc(),Hl()],exit:[Ol(),an(({enqueue:e,context:t})=>{e.assign({activeWalkthrough:null}),t.dynamicViewVariant===`sequence`&&t.activeWalkthrough?.parallelPrefix&&e.assign({xynodes:t.xynodes.map(e=>e.type===`seq-parallel`?M.setData(e,{color:wc.default}):e)})}),Kc(),xc(),Ul()],on:{"key.esc":{target:so.idle},"key.arrow.left":{actions:F({type:`walkthrough.step`,direction:`previous`})},"key.arrow.up":{actions:F({type:`walkthrough.step`,direction:`previous`})},"key.arrow.right":{actions:F({type:`walkthrough.step`,direction:`next`})},"key.arrow.down":{actions:F({type:`walkthrough.step`,direction:`next`})},"walkthrough.step":{actions:[I(({context:e,event:t})=>{let{stepId:n}=e.activeWalkthrough,r=e.xyedges.findIndex(e=>e.id===n),i=y(t.direction===`next`?r+1:r-1,{min:0,max:e.xyedges.length-1});if(i===r)return{};let a=H(e.xyedges[i]).id;return{activeWalkthrough:{stepId:a,parallelPrefix:$n(a)}}}),Vl(),mc(),Wl()]},"xyflow.edgeClick":[{guard:`click: active walkthrough step`,actions:[mc(),nl()]},{actions:[I(({event:e})=>{let t=e.edge.id;return V(nr(t)),{activeWalkthrough:{stepId:t,parallelPrefix:$n(t)}}}),Vl(),mc(),nl(),Wl()]}],"notations.unhighlight":{actions:Vl()},"tag.unhighlight":{actions:Vl()},"update.view":{guard:`is same view`,actions:[Nl(),Vl()]},"walkthrough.end":{target:so.idle},"xyflow.paneDblClick":{target:so.idle}}}),Kl=$.createStateConfig({initial:`idle`,entry:[en(`mediaPrintActorLogic`,{id:`mediaPrint`}),ml(),Cl(),wl()],exit:[_c(),Xt(`mediaPrint`),fl(),dl(),pl()],states:{idle:zl,focused:Rl,walkthrough:Gl,printing:Bl},on:{"layout.align":{guard:`not readonly`,actions:[hl(`node`),al(),_l(!0)]},"layout.resetEdgeControlPoints":{guard:`not readonly`,actions:[hl(`edge`),ol(),_l(!0)]},"layout.resetManualLayout":{actions:[vl(),Lc(),rl({op:`reset-manual-layout`})]},"media.print.on":{...co.printing},"navigate.*":{actions:Ml()},"notations.highlight":{actions:sl()},"notations.unhighlight":{actions:Kc()},"highlight.*":{actions:ll()},"unhighlight.all":{actions:Kc()},"open.elementDetails":{actions:xl()},"open.relationshipDetails":{actions:xl()},"open.relationshipsBrowser":{actions:xl()},"open.search":{guard:`enabled: Search`,actions:Zt(Y.searchActor,({event:e})=>({type:`open`,search:e.search}))},"open.source":{guard:`enabled: OpenSource`,actions:Zc()},"tag.highlight":{actions:cl()},"tag.unhighlight":{actions:Kc()},"toggle.feature":{actions:ul()},"update.features":{actions:[Hc(),Cl(),wl(),ml()]},"update.view":[{guard:`is another view`,...co.navigating},{actions:Nl()}],"walkthrough.start":{guard:`is dynamic view`,...co.walkthrough},"xyflow.edgeClick":{actions:[Vc(),nl()]},"xyflow.edgeDoubleClick":{guard:$t([`not readonly`,({event:e})=>!!e.edge.data.controlPoints&&e.edge.data.controlPoints.length>0]),actions:[hl(`edge`),Rc(),_l(!0)]},"xyflow.edgeMouseEnter":{actions:Tl()},"xyflow.edgeMouseLeave":{actions:El()},"xyflow.centerViewport":{actions:fc()},"xyflow.fitDiagram":{guard:`enabled: FitView`,actions:[I({viewportChangedManually:!1}),pc()]},"xyflow.nodeClick":{actions:[zc(),el()]},"xyflow.nodeMouseEnter":{actions:Jc()},"xyflow.nodeMouseLeave":{actions:Yc()},"xyflow.paneClick":{actions:[Vc(),Xc()]},"xyflow.paneDblClick":{actions:[Vc(),_c(),vc(),Qc(),Xc()]},"xyflow.resized":{guard:({context:e})=>e.features.enableFitView&&!e.viewportChangedManually,actions:[_c(),vc({delay:150})]},"xyflow.setViewport":{actions:uc()}}}),ql=$.createMachine({initial:`initializing`,context:({input:e})=>({...e,xyedges:[],xynodes:[],features:{...bi,...e.features},toggledFeatures:rc.read()??{enableReadOnly:!0,enableCompareWithLatest:!1},initialized:{xydata:!1,xyflow:!1},viewportChangedManually:!1,lastOnNavigate:null,lastClickedNode:null,focusedNode:null,autoUnfocusTimer:!1,activeElementDetails:null,viewportBefore:null,viewportOnManualLayout:null,viewportOnAutoLayout:null,navigationHistory:{currentIndex:0,history:[]},viewport:{x:0,y:0,zoom:1},xyflow:null,dynamicViewVariant:e.dynamicViewVariant??(e.view._type===`dynamic`?e.view.variant:`diagram`)??`diagram`,activeWalkthrough:null}),states:{initializing:Pl,isReady:Fl,ready:Kl,navigating:Ll,final:{type:`final`}},on:{"update.nodeData":{actions:I(oc)},"update.edgeData":{actions:I(sc)},"switch.dynamicViewVariant":{guard:({context:e,event:t})=>e.dynamicViewVariant!==t.variant,actions:[qc(),I({viewportChangedManually:!1}),yc()]},"update.inputs":{actions:Uc()},"update.view-bounds":{actions:I(({context:e,event:t})=>({view:{...e.view,bounds:t.bounds}}))},"update.features":{actions:Hc()},"trigger.change":{actions:rl()},"emit.onLayoutTypeChange":{actions:il()},"xyflow.applyChanges":{actions:I(({context:e,event:t})=>({xynodes:t.nodes?xn(t.nodes,e.xynodes):e.xynodes,xyedges:t.edges?_n(t.edges,e.xyedges):e.xyedges}))},"xyflow.viewportMoved":{actions:I(({event:e,context:t})=>({viewportChangedManually:t.viewportChangedManually||e.manually,viewport:e.viewport}))},destroy:{target:`.final`,actions:[pl(),_c(),Xt(`hotkey`),Xt(`overlays`),Xt(`search`),Xt(`mediaPrint`),I({xyflow:null,xystore:null,xyedges:[],xynodes:[],initialized:{xydata:!1,xyflow:!1}})]}}});function Jl({id:e,view:t,zoomable:n,pannable:r,nodesDraggable:i,nodesSelectable:a,fitViewPadding:o,where:s=null,children:c,dynamicViewVariant:l}){let u=vn(),d=ec(),f=q(),p=cn(ql.provide({actors:{editorActor:d}}),{id:`diagram-${e}`,systemId:`diagram`,input:{xystore:u,view:t,zoomable:n,pannable:r,fitViewPadding:o,nodesDraggable:i,nodesSelectable:a,where:s,features:f,dynamicViewVariant:l}}),m=Hn(p);m.current!==p&&(console.warn(`DiagramMachine actor instance changed`,{previous:m.current.getSnapshot().context,current:p.getSnapshot().context}),m.current=p);let[h,g]=Un(()=>tc(m));return Bn(()=>{g(e=>e.ref===m?e:(console.error(`DiagramMachine actorRef changed, creating new DiagramApi instance, this should not happen during the lifetime of the actor`),tc(m)))},[m]),Bn(()=>{p.send({type:`update.features`,features:f})},[p,f]),Et(()=>p.send({type:`update.inputs`,inputs:{zoomable:n,where:s,pannable:r,fitViewPadding:o,nodesDraggable:i,nodesSelectable:a}}),[p,n,s,r,o,i,a]),Et(()=>{l&&p.send({type:`switch.dynamicViewVariant`,variant:l})},[p,l]),Bn(()=>p.send({type:`update.view`,view:t,source:`external`}),[p,t]),z(Wt,{value:p,children:B(qt,{value:h,children:[z(Ei,{children:z(Xl,{children:c})}),z(Zl,{})]})})}var Yl=Tr(e=>{let t=e.toggledFeatures,n=e.view.drifts!=null&&e.view.drifts.length>0&&e.features.enableCompareWithLatest&&(t.enableCompareWithLatest??!1)&&d(e.activeWalkthrough),r=e.features.enableReadOnly||t.enableReadOnly||!!e.activeWalkthrough||n&&e.view._layout===`auto`;return(t.enableReadOnly!==r||t.enableCompareWithLatest!==n)&&(t={...t,enableCompareWithLatest:n,enableReadOnly:r}),t});function Xl(e){let t=R(6),{children:n}=e,r=wr(Yl),i,a;t[0]===r?(i=t[1],a=t[2]):(i=()=>{rc.write(r)},a=[r],t[0]=r,t[1]=i,t[2]=a),Et(i,a);let o;return t[3]!==n||t[4]!==r?(o=z(Si,{overrides:r,children:n}),t[3]=n,t[4]=r,t[5]=o):o=t[5],o}var Zl=Ln(()=>{let e=P(),t=vi();return Dr(`openSource`,({params:e})=>t.current.onOpenSource?.(e)),Dr(`navigateTo`,({viewId:e})=>t.current.onNavigateTo?.(e)),Dr(`onLayoutTypeChange`,({layoutType:e})=>{t.current.onLayoutTypeChange?.(e)}),Dr(`initialized`,({instance:n})=>{try{t.current.onInitialized?.({diagram:e,xyflow:n})}catch(e){console.error(e)}},{once:!0}),null});export{Dr as A,jr as C,Tr as D,Cr as E,Er as O,Nr as S,Or as T,gi as _,mo as a,ui as b,ao as c,Ai as d,Ei as f,q as g,wi as h,ho as i,wr as k,Ea as l,Si as m,Bs as n,po as o,bi as p,vo as r,lo as s,Jl as t,ji as u,_i as v,Mr as w,oi as x,li as y};