likec4 1.55.0 → 1.56.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 (263) hide show
  1. package/__app__/chunks/ColorSchemeToggle.mjs +1 -0
  2. package/__app__/chunks/DiagramActorProvider.mjs +10 -0
  3. package/__app__/chunks/Fallback.mjs +1 -0
  4. package/__app__/chunks/Header.mjs +13 -0
  5. package/__app__/chunks/IconRenderer.mjs +1 -0
  6. package/__app__/chunks/LikeC4Diagram.mjs +19 -0
  7. package/__app__/chunks/LikeC4ModelContext.mjs +1 -0
  8. package/__app__/chunks/LikeC4ModelContext2.mjs +1 -0
  9. package/__app__/chunks/LikeC4Styles.mjs +48 -0
  10. package/__app__/chunks/NavigationPanel.mjs +1 -0
  11. package/__app__/chunks/StaticLikeC4Diagram.mjs +1 -0
  12. package/__app__/chunks/ViewReact.mjs +1 -0
  13. package/__app__/chunks/__root.mjs +1 -0
  14. package/__app__/chunks/adhoc-editor.mjs +1 -0
  15. package/__app__/chunks/hooks.mjs +1 -0
  16. package/__app__/chunks/libs/@dagrejs/dagre.mjs +1 -0
  17. package/__app__/chunks/libs/@floating-ui/core.mjs +1 -0
  18. package/__app__/chunks/libs/@floating-ui/dom.mjs +1 -0
  19. package/__app__/chunks/libs/@floating-ui/react.mjs +1 -0
  20. package/__app__/chunks/libs/@mantine/core.mjs +41 -0
  21. package/__app__/chunks/libs/@mantine/hooks.mjs +1 -0
  22. package/__app__/chunks/libs/@nanostores/react.mjs +1 -0
  23. package/__app__/chunks/libs/@react-hookz/web.mjs +1 -0
  24. package/__app__/chunks/libs/@tabler/icons-react.mjs +15 -0
  25. package/__app__/chunks/libs/@tanstack/history.mjs +1 -0
  26. package/__app__/chunks/libs/@tanstack/react-router.mjs +3 -0
  27. package/__app__/chunks/libs/@tanstack/router-core.mjs +1 -0
  28. package/__app__/chunks/libs/@xstate/react.mjs +1 -0
  29. package/__app__/chunks/libs/@xstate/store.mjs +1 -0
  30. package/__app__/chunks/libs/@xyflow/react.mjs +7 -0
  31. package/__app__/chunks/libs/@zag-js/anatomy.mjs +1 -0
  32. package/__app__/chunks/libs/@zag-js/collection.mjs +1 -0
  33. package/__app__/chunks/libs/@zag-js/core.mjs +1 -0
  34. package/__app__/chunks/libs/@zag-js/react.mjs +1 -0
  35. package/__app__/chunks/libs/@zag-js/tree-view.mjs +1 -0
  36. package/__app__/chunks/libs/bezier-js.mjs +1 -0
  37. package/__app__/chunks/libs/d3-path.mjs +1 -0
  38. package/__app__/chunks/libs/d3-shape.mjs +1 -0
  39. package/__app__/chunks/libs/fast-equals.mjs +1 -0
  40. package/__app__/chunks/libs/framer-motion.mjs +9 -0
  41. package/__app__/chunks/libs/html-to-image.mjs +2 -0
  42. package/__app__/chunks/libs/motion-dom.mjs +1 -0
  43. package/__app__/chunks/libs/motion.mjs +1 -0
  44. package/__app__/chunks/libs/nanostores.mjs +1 -0
  45. package/__app__/chunks/libs/react-error-boundary.mjs +1 -0
  46. package/__app__/chunks/libs/react-resizable-panels.mjs +1 -0
  47. package/__app__/chunks/libs/remeda.mjs +1 -0
  48. package/__app__/chunks/libs/xstate.mjs +1 -0
  49. package/__app__/chunks/libs/zod.mjs +39 -0
  50. package/__app__/chunks/rolldown-runtime.mjs +1 -0
  51. package/__app__/chunks/safeCtx.mjs +1 -0
  52. package/__app__/chunks/searchParams.mjs +1 -0
  53. package/__app__/chunks/single-index.mjs +1 -0
  54. package/__app__/chunks/styled-system.mjs +1 -0
  55. package/__app__/chunks/styles.css.mjs +1 -0
  56. package/__app__/chunks/useLikeC4Project.mjs +1 -0
  57. package/__app__/chunks/useUpdateEffect.mjs +1 -0
  58. package/__app__/codegen/react.mjs +11 -0
  59. package/__app__/codegen/webcomponent.mjs +790 -0
  60. package/__app__/src/fonts.css +1 -1
  61. package/__app__/src/main.mjs +1 -0
  62. package/__app__/src/pages/AdHocViewEditor.mjs +1 -0
  63. package/__app__/src/pages/EmbedPage.mjs +1 -0
  64. package/__app__/src/pages/ExportPage.mjs +1 -0
  65. package/__app__/src/pages/ProjectsOverview.mjs +1 -0
  66. package/__app__/src/pages/ViewAsD2.mjs +1 -0
  67. package/__app__/src/pages/ViewAsDot.mjs +1 -0
  68. package/__app__/src/pages/ViewAsMmd.mjs +1 -0
  69. package/__app__/src/pages/ViewAsPuml.mjs +1 -0
  70. package/__app__/src/pages/ViewEditor.mjs +1 -0
  71. package/__app__/src/pages/ViewReact.mjs +1 -0
  72. package/__app__/src/routeTree.gen.mjs +1 -0
  73. package/__app__/src/routes/__root.mjs +1 -0
  74. package/__app__/src/routes/_single/adhoc.mjs +1 -0
  75. package/__app__/src/routes/_single/embed._viewId.mjs +1 -0
  76. package/__app__/src/routes/_single/export._viewId.mjs +1 -0
  77. package/__app__/src/routes/_single/route.mjs +1 -0
  78. package/__app__/src/routes/_single/single-index.mjs +1 -0
  79. package/__app__/src/routes/_single/view._viewId.d2.mjs +1 -0
  80. package/__app__/src/routes/_single/view._viewId.dot.mjs +1 -0
  81. package/__app__/src/routes/_single/view._viewId.index.mjs +1 -0
  82. package/__app__/src/routes/_single/view._viewId.mjs +1 -0
  83. package/__app__/src/routes/_single/view._viewId.mmd.mjs +1 -0
  84. package/__app__/src/routes/_single/view._viewId.puml.mjs +1 -0
  85. package/__app__/src/routes/_single/webcomponent._.mjs +33 -0
  86. package/__app__/src/routes/index.mjs +1 -0
  87. package/__app__/src/routes/project._projectId/-components.mjs +1 -0
  88. package/__app__/src/routes/project._projectId/adhoc.mjs +1 -0
  89. package/__app__/src/routes/project._projectId/embed._viewId.mjs +1 -0
  90. package/__app__/src/routes/project._projectId/export._viewId.mjs +1 -0
  91. package/__app__/src/routes/project._projectId/index.mjs +1 -0
  92. package/__app__/src/routes/project._projectId/route.mjs +1 -0
  93. package/__app__/src/routes/project._projectId/view._viewId.d2.mjs +1 -0
  94. package/__app__/src/routes/project._projectId/view._viewId.dot.mjs +1 -0
  95. package/__app__/src/routes/project._projectId/view._viewId.index.mjs +1 -0
  96. package/__app__/src/routes/project._projectId/view._viewId.mjs +1 -0
  97. package/__app__/src/routes/project._projectId/view._viewId.mmd.mjs +1 -0
  98. package/__app__/src/routes/project._projectId/view._viewId.puml.mjs +1 -0
  99. package/__app__/src/routes/projects.mjs +1 -0
  100. package/__app__/src/style.css +1 -1
  101. package/dist/chunks/filenames.mjs +17 -0
  102. package/dist/{_chunks → chunks}/index.d.mts +2 -1
  103. package/dist/{_chunks → chunks}/index2.d.mts +71 -12
  104. package/dist/chunks/libs/@chevrotain/gast.mjs +1 -0
  105. package/dist/chunks/libs/@chevrotain/regexp-to-ast.mjs +9 -0
  106. package/dist/chunks/libs/@chevrotain/utils.mjs +1 -0
  107. package/dist/chunks/libs/@hono/mcp.mjs +45 -0
  108. package/dist/chunks/libs/@hono/node-server.mjs +1 -0
  109. package/dist/{_chunks → chunks}/libs/@logtape/logtape.d.mts +2 -0
  110. package/dist/chunks/libs/@logtape/logtape.mjs +4 -0
  111. package/dist/chunks/libs/@lume/kiwi.mjs +1 -0
  112. package/dist/chunks/libs/@modelcontextprotocol/sdk.mjs +12 -0
  113. package/dist/chunks/libs/ajv.mjs +1 -0
  114. package/dist/chunks/libs/ansi-align.mjs +2 -0
  115. package/dist/chunks/libs/ansi-regex.mjs +1 -0
  116. package/dist/chunks/libs/ansi-styles.mjs +1 -0
  117. package/dist/chunks/libs/atomically.mjs +1 -0
  118. package/dist/chunks/libs/birpc.mjs +1 -0
  119. package/dist/chunks/libs/boxen.mjs +22 -0
  120. package/dist/chunks/libs/chevrotain-allstar.mjs +2 -0
  121. package/dist/chunks/libs/chevrotain.mjs +58 -0
  122. package/dist/chunks/libs/conf.mjs +1 -0
  123. package/dist/chunks/libs/defu.mjs +1 -0
  124. package/dist/chunks/libs/destr.mjs +1 -0
  125. package/dist/chunks/libs/eventemitter3.mjs +1 -0
  126. package/dist/chunks/libs/find-up-simple.mjs +1 -0
  127. package/dist/chunks/libs/get-port.mjs +1 -0
  128. package/dist/chunks/libs/hono.mjs +1 -0
  129. package/dist/chunks/libs/is-docker.mjs +1 -0
  130. package/dist/chunks/libs/is-error-instance.mjs +1 -0
  131. package/dist/chunks/libs/is-inside-container.mjs +1 -0
  132. package/dist/chunks/libs/is-plain-obj.mjs +1 -0
  133. package/dist/chunks/libs/isexe.mjs +1 -0
  134. package/dist/chunks/libs/json5.mjs +14 -0
  135. package/dist/chunks/libs/khroma.mjs +1 -0
  136. package/dist/chunks/libs/ky.mjs +3 -0
  137. package/dist/{_chunks → chunks}/libs/langium.d.mts +4 -4
  138. package/dist/chunks/libs/langium.mjs +32 -0
  139. package/dist/chunks/libs/merge-error-cause.mjs +2 -0
  140. package/dist/chunks/libs/p-debounce.mjs +1 -0
  141. package/dist/chunks/libs/p-limit.mjs +1 -0
  142. package/dist/chunks/libs/p-queue.mjs +1 -0
  143. package/dist/chunks/libs/p-timeout.mjs +1 -0
  144. package/dist/chunks/libs/package-manager-detector.mjs +1 -0
  145. package/dist/chunks/libs/package-up.mjs +1 -0
  146. package/dist/chunks/libs/pako.mjs +1 -0
  147. package/dist/chunks/libs/parse-ms.mjs +1 -0
  148. package/dist/chunks/libs/pathe.mjs +1 -0
  149. package/dist/chunks/libs/picomatch.mjs +1 -0
  150. package/dist/chunks/libs/pretty-ms.mjs +1 -0
  151. package/dist/chunks/libs/remeda.mjs +1 -0
  152. package/dist/chunks/libs/safe-stringify.mjs +1 -0
  153. package/dist/chunks/libs/strip-indent.mjs +1 -0
  154. package/dist/chunks/libs/tinyrainbow.mjs +1 -0
  155. package/dist/{_chunks → chunks}/libs/ts-graphviz.d.mts +2 -0
  156. package/dist/chunks/libs/ts-graphviz.mjs +4 -0
  157. package/dist/chunks/libs/ufo.mjs +1 -0
  158. package/dist/chunks/libs/unstorage.mjs +1 -0
  159. package/dist/chunks/libs/which.mjs +1 -0
  160. package/dist/chunks/libs/word-wrap.mjs +12 -0
  161. package/dist/{_chunks → chunks}/libs/zod.d.mts +2 -0
  162. package/dist/chunks/node.mjs +76 -0
  163. package/dist/chunks/plugin.mjs +400 -0
  164. package/dist/chunks/rolldown-runtime.mjs +1 -0
  165. package/dist/chunks/sequence-view.mjs +1 -0
  166. package/dist/cli/index.mjs +262 -123
  167. package/dist/config/index.d.mts +1 -2
  168. package/dist/config/index.mjs +1 -1
  169. package/dist/index.d.mts +4 -8
  170. package/dist/index.mjs +1 -1
  171. package/dist/model/index.d.mts +2 -1
  172. package/dist/model/index.mjs +1 -1
  173. package/dist/vite-plugin/index.d.mts +38 -8
  174. package/dist/vite-plugin/index.mjs +1 -1
  175. package/dist/{_chunks → vite-plugin/internal/chunks}/libs/@nanostores/react.d.mts +2 -56
  176. package/dist/vite-plugin/internal/chunks/libs/@nanostores/react.mjs +1 -0
  177. package/dist/vite-plugin/internal/chunks/libs/birpc.mjs +1 -0
  178. package/dist/vite-plugin/internal/chunks/libs/fast-equals.mjs +1 -0
  179. package/dist/vite-plugin/internal/chunks/libs/nanostores.d.mts +59 -0
  180. package/dist/vite-plugin/internal/chunks/libs/nanostores.mjs +1 -0
  181. package/dist/vite-plugin/internal/chunks/libs/remeda.mjs +1 -0
  182. package/dist/vite-plugin/internal/chunks/rolldown-runtime.mjs +1 -0
  183. package/dist/vite-plugin/{internal.d.mts → internal/index.d.mts} +12 -3
  184. package/dist/vite-plugin/internal/index.mjs +1 -0
  185. package/package.json +37 -57
  186. package/react/index.d.mts +2 -28
  187. package/react/index.mjs +50520 -53827
  188. package/vite-plugin/internal/package.json +2 -2
  189. package/vite-plugin-modules.d.ts +14 -0
  190. package/__app__/react/likec4.tsx +0 -25
  191. package/__app__/src/ProjectsOverview.js +0 -16
  192. package/__app__/src/const.js +0 -19
  193. package/__app__/src/likec4.js +0 -21225
  194. package/__app__/src/main.js +0 -7
  195. package/__app__/src/routes/index.js +0 -324
  196. package/__app__/src/routes/projects.js +0 -189
  197. package/__app__/src/routes/single.js +0 -1924
  198. package/__app__/src/vendors.js +0 -52672
  199. package/__app__/src/webcomponent.js +0 -68
  200. package/dist/THIRD-PARTY-LICENSES.md +0 -1609
  201. package/dist/_chunks/libs/@chevrotain/cst-dts-gen.mjs +0 -30
  202. package/dist/_chunks/libs/@chevrotain/regexp-to-ast.mjs +0 -9
  203. package/dist/_chunks/libs/@chevrotain/types.d.mts +0 -1
  204. package/dist/_chunks/libs/@chevrotain/utils.mjs +0 -1
  205. package/dist/_chunks/libs/@hono/mcp.mjs +0 -45
  206. package/dist/_chunks/libs/@hono/node-server.mjs +0 -1
  207. package/dist/_chunks/libs/@logtape/logtape.mjs +0 -4
  208. package/dist/_chunks/libs/@lume/kiwi.mjs +0 -1
  209. package/dist/_chunks/libs/@modelcontextprotocol/sdk.mjs +0 -12
  210. package/dist/_chunks/libs/@nanostores/react.mjs +0 -1
  211. package/dist/_chunks/libs/ajv.mjs +0 -1
  212. package/dist/_chunks/libs/ansi-align.mjs +0 -2
  213. package/dist/_chunks/libs/ansi-regex.mjs +0 -1
  214. package/dist/_chunks/libs/ansi-styles.mjs +0 -1
  215. package/dist/_chunks/libs/atomically.mjs +0 -1
  216. package/dist/_chunks/libs/birpc.mjs +0 -1
  217. package/dist/_chunks/libs/boxen.mjs +0 -22
  218. package/dist/_chunks/libs/chevrotain-allstar.mjs +0 -2
  219. package/dist/_chunks/libs/chevrotain.mjs +0 -58
  220. package/dist/_chunks/libs/conf.mjs +0 -1
  221. package/dist/_chunks/libs/defu.mjs +0 -1
  222. package/dist/_chunks/libs/destr.mjs +0 -1
  223. package/dist/_chunks/libs/esm-env.mjs +0 -1
  224. package/dist/_chunks/libs/eventemitter3.mjs +0 -1
  225. package/dist/_chunks/libs/fast-equals.mjs +0 -1
  226. package/dist/_chunks/libs/find-up-simple.mjs +0 -1
  227. package/dist/_chunks/libs/get-port.mjs +0 -1
  228. package/dist/_chunks/libs/is-docker.mjs +0 -1
  229. package/dist/_chunks/libs/is-error-instance.mjs +0 -1
  230. package/dist/_chunks/libs/is-inside-container.mjs +0 -1
  231. package/dist/_chunks/libs/is-plain-obj.mjs +0 -1
  232. package/dist/_chunks/libs/isexe.mjs +0 -1
  233. package/dist/_chunks/libs/json5.mjs +0 -14
  234. package/dist/_chunks/libs/khroma.mjs +0 -1
  235. package/dist/_chunks/libs/ky.mjs +0 -3
  236. package/dist/_chunks/libs/langium.mjs +0 -33
  237. package/dist/_chunks/libs/merge-error-cause.mjs +0 -2
  238. package/dist/_chunks/libs/p-limit.mjs +0 -1
  239. package/dist/_chunks/libs/p-queue.mjs +0 -1
  240. package/dist/_chunks/libs/p-timeout.mjs +0 -1
  241. package/dist/_chunks/libs/package-manager-detector.mjs +0 -1
  242. package/dist/_chunks/libs/package-up.mjs +0 -1
  243. package/dist/_chunks/libs/pako.mjs +0 -1
  244. package/dist/_chunks/libs/parse-ms.mjs +0 -1
  245. package/dist/_chunks/libs/pathe.mjs +0 -1
  246. package/dist/_chunks/libs/picomatch.mjs +0 -1
  247. package/dist/_chunks/libs/pretty-ms.mjs +0 -1
  248. package/dist/_chunks/libs/remeda.mjs +0 -2
  249. package/dist/_chunks/libs/safe-stringify.mjs +0 -1
  250. package/dist/_chunks/libs/strip-indent.mjs +0 -1
  251. package/dist/_chunks/libs/tinyrainbow.mjs +0 -1
  252. package/dist/_chunks/libs/ts-graphviz.mjs +0 -4
  253. package/dist/_chunks/libs/ufo.mjs +0 -1
  254. package/dist/_chunks/libs/unstorage.mjs +0 -1
  255. package/dist/_chunks/libs/which.mjs +0 -1
  256. package/dist/_chunks/libs/word-wrap.mjs +0 -12
  257. package/dist/_chunks/node.mjs +0 -76
  258. package/dist/_chunks/rolldown-runtime.mjs +0 -1
  259. package/dist/_chunks/sequence.mjs +0 -1
  260. package/dist/_chunks/src.mjs +0 -17
  261. package/dist/_chunks/src2.mjs +0 -499
  262. package/dist/vite-plugin/internal.mjs +0 -1
  263. /package/dist/{_chunks → chunks}/libs/vscode-languageserver.mjs +0 -0
@@ -0,0 +1 @@
1
+ import"./rolldown-runtime.mjs";import{l as e,u as t}from"./libs/@tanstack/react-router.mjs";import{Dt as n,Ot as r,dt as i}from"./libs/@mantine/core.mjs";import{S as a,m as o}from"./libs/@tabler/icons-react.mjs";import{t as s}from"./searchParams.mjs";import{useEffect as c,useRef as l}from"react";import{c as u}from"react/compiler-runtime";import{jsx as d,jsxs as f}from"react/jsx-runtime";function ColorSchemeToggle(){let p=u(21),m;p[0]===Symbol.for(`react.memo_cache_sentinel`)?(m={keepTransitions:!0},p[0]=m):m=p[0];let{setColorScheme:h}=r(m),g=n(`light`),_=e(),v;p[1]===Symbol.for(`react.memo_cache_sentinel`)?(v={from:`__root__`},p[1]=v):v=p[1];let{theme:y}=t(v),b;p[2]===y?b=p[3]:(b=s(y),p[2]=y,p[3]=b);let x=b!=null,S=l(null),t3,C;p[4]!==x||p[5]!==h?(t3=()=>{S.current!=null&&!x&&(h(S.current),S.current=null)},C=[x,h],p[4]=x,p[5]=h,p[6]=t3,p[7]=C):(t3=p[6],C=p[7]),c(t3,C);let t5;p[8]!==g||p[9]!==x||p[10]!==_||p[11]!==h?(t5=()=>{if(S.current!=null)return;let e=g===`light`?`dark`:`light`;x?(S.current=e,_({to:`../`,search:_temp,replace:!0}).catch(()=>{S.current=null})):h(e)},p[8]=g,p[9]=x,p[10]=_,p[11]=h,p[12]=t5):t5=p[12];let w=t5,T=g===`light`?`block`:`none`,E;p[13]===T?E=p[14]:(E=d(a,{stroke:1.5,display:T}),p[13]=T,p[14]=E);let D=g===`dark`?`block`:`none`,O;p[15]===D?O=p[16]:(O=d(o,{stroke:1.5,display:D}),p[15]=D,p[16]=O);let k;return p[17]!==E||p[18]!==O||p[19]!==w?(k=f(i,{size:`md`,variant:`subtle`,color:`gray`,onClick:w,"aria-label":`Toggle color scheme`,children:[E,O]}),p[17]=E,p[18]=O,p[19]=w,p[20]=k):k=p[20],k}function _temp(e){return{...e,theme:void 0}}export{ColorSchemeToggle as t};
@@ -0,0 +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`
2
+ --colors-likec4-tag-bg: ${t};
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`),`
5
+ --colors-likec4-tag-border: var(--colors-${t}-8);
6
+ --colors-likec4-tag-bg: var(--colors-${t}-9);
7
+ --colors-likec4-tag-bg-hover: var(--colors-${t}-10);
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};
@@ -0,0 +1 @@
1
+ import"./rolldown-runtime.mjs";import{_ as e,d as t,f as n}from"./libs/@tanstack/react-router.mjs";import{E as r,N as i,O as a}from"./libs/remeda.mjs";import{B as o,H as s,W as c,it as l,lt as u,rt as d}from"./libs/@mantine/core.mjs";import{jsx as f,jsxs as p}from"react/jsx-runtime";function Fallback({error:m,resetErrorBoundary:h}){let g=n(),_=t({strict:!1});if(e(m))return f(o,{my:`md`,children:p(l,{variant:`light`,color:`orange`,children:[p(d,{c:`orange`,fz:`md`,children:[`The diagram`,` `,f(s,{color:`orange`,children:_.viewId??`unknown`}),` `,`does not exist or contains errors`]}),f(c,{onClick:()=>{h(),g.navigate({to:`/`})},variant:`light`,color:`orange`,mt:`lg`,size:`xs`,children:`Go to overview`})]})});let v=m,y=`Unknown error`;try{switch(!0){case a(v):y=`Unknown error`;break;case i(v):y=v.stack??v.message;break;case typeof v==`string`:y=v;break;case r(v):y=v.stack??v.message??`${v}`;break;default:y=`${v}`;break}}catch(e){y=`${e}`}return f(o,{my:`md`,children:p(l,{variant:`filled`,color:`red`,title:`Something went wrong`,children:[f(s,{block:!0,color:`red`,children:y}),p(u,{mt:`lg`,children:[f(c,{onClick:()=>{g.invalidate().finally(()=>{h()})},color:`red`,variant:`white`,size:`xs`,children:`Try again`}),f(c,{onClick:()=>{h(),g.navigate({to:`/`})},color:`red`,size:`xs`,children:`Go to overview`})]})]})})}export{Fallback as t};
@@ -0,0 +1,13 @@
1
+ import{i as e}from"./rolldown-runtime.mjs";import{f as t,i as n,r}from"./libs/@tanstack/react-router.mjs";import{C as i,Ct as a,D as o,E as s,Et as c,H as l,Mt as u,O as d,Ot as f,R as p,S as m,T as h,Vt as g,W as _,a as v,b as y,c as b,dt as x,it as S,k as C,l as w,lt as T,o as E,p as D,qt as O,rt as k,s as A,w as j,x as M,z as N}from"./libs/@mantine/core.mjs";import{D as P,k as F,t as I}from"./styled-system.mjs";import{K as L,U as R,X as z,Y as B,g as V,nt as H}from"./libs/@tabler/icons-react.mjs";import{P as U,dr as ee}from"./libs/framer-motion.mjs";import{r as W}from"./useLikeC4Project.mjs";import{t as te}from"./ColorSchemeToggle.mjs";import{n as ne,r as re,t as G}from"./hooks.mjs";import{memo as ie,useCallback as ae,useState as K}from"react";import{c as q}from"react/compiler-runtime";import{Fragment as J,jsx as Y,jsxs as X}from"react/jsx-runtime";import{ComponentName as Z,useHashHistory as oe}from"likec4:app-config";const{withProvider:se,withContext:Q}=P(I),shouldForwardProp=(e,t)=>!t.includes(e)&&(ee(e)||!F(e)),$={Root:se(U,`root`,{shouldForwardProp}),Body:Q(U,`body`,{shouldForwardProp}),Label:Q(U,`label`,{shouldForwardProp}),Dropdown:Q(U,`dropdown`,{shouldForwardProp})};function SelectProject(){let e=q(12),t=W(),n=G();if(t.length<2)return null;let r;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=Y(B,{opacity:.5,size:14}),e[0]=r):r=e[0];let i=n.title??n.id,a;e[1]===i?a=e[2]:(a=Y(h,{children:Y(_,{variant:`subtle`,size:`sm`,color:`gray`,px:`sm`,rightSection:r,visibleFrom:`md`,children:i})}),e[1]=i,e[2]=a);let s,c;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(s=Y(o,{renderRoot:_temp$1,children:`Projects overview`}),c=Y(C,{}),e[3]=s,e[4]=c):(s=e[3],c=e[4]);let l;e[5]===t?l=e[6]:(l=t.map(_temp2),e[5]=t,e[6]=l);let u;e[7]===l?u=e[8]:(u=X(d,{children:[s,c,l]}),e[7]=l,e[8]=u);let f;return e[9]!==a||e[10]!==u?(f=X(j,{shadow:`md`,width:200,trigger:`click-hover`,openDelay:200,children:[a,u]}),e[9]=a,e[10]=u,e[11]=f):f=e[11],f}function _temp2(e){let{id:t,title:n}=e;return Y(o,{renderRoot:e=>Y(r,{...e,to:`/project/$projectId/view/$viewId/`,params:{projectId:t,viewId:`index`}}),children:n??t},t)}function _temp$1(e){return Y(r,{...e,to:`/projects`})}e(_temp$1,`_temp`);const AlertLocalhost=()=>{let e=q(2),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=Y(H,{}),e[0]=t):t=e[0];let n;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(n=Y(S,{color:`yellow`,icon:t,title:`Localhost URL`,styles:{body:{gap:O(4)}},children:Y(k,{c:`yellow`,size:`sm`,children:`You need to deploy your project to make it available on the internet`})}),e[1]=n):n=e[1],n},CopyButtonChild=e=>{let t=q(7),{copied:n,copy:r}=e,i=n?`teal`:`gray`,a;t[0]===n?a=t[1]:(a=Y(n?z:L,{style:{width:O(16)}}),t[0]=n,t[1]=a);let o=n?`Copied`:`Copy to clipboard`,s;return t[2]!==r||t[3]!==i||t[4]!==a||t[5]!==o?(s=Y(_,{size:`xs`,color:i,variant:`light`,leftSection:a,onClick:r,children:o}),t[2]=r,t[3]=i,t[4]=a,t[5]=o,t[6]=s):s=t[6],s},EmbedPanel=({diagram:e})=>{let n=t(),{colorScheme:r}=f(),[i,o]=K(r),s=n.buildLocation({to:`/embed/$viewId/`,params:{viewId:e.id},search:{padding:20,...i===`auto`?{}:{theme:i}}}).href;s=oe?`#${s}`:s;let c=new URL(s,window.location.href),u=e.bounds.width+40,d=e.bounds.height+40,p=c.href,m=`
2
+ <div style="aspect-ratio:${u}/${d};width:100%;height:auto;max-width:${u}px;margin:0 auto">
3
+ <iframe src="${p}" width="100%" height="100%" style="border:0;background:transparent;"></iframe>
4
+ </div>
5
+ `.trim();return X(w,{children:[m.includes(`http://localhost`)&&Y(AlertLocalhost,{}),Y(a,{children:Y(k,{size:`sm`,children:`Embedded view is an iframe with a static diagram`})}),X(w,{gap:`xs`,children:[X(T,{justify:`space-between`,children:[Y(a,{children:Y(k,{fw:`500`,size:`sm`,children:`HTML`})}),X(T,{gap:`xs`,children:[Y(x,{component:`a`,href:p,target:`_blank`,variant:`light`,color:`gray`,children:Y(R,{})}),Y(N,{value:m,timeout:1500,children:CopyButtonChild})]})]}),Y(l,{block:!0,children:m}),Y(a,{style:{alignSelf:`flex-start`},children:Y(D,{label:`Color scheme`,value:i,allowDeselect:!1,onChange:e=>o(e??`auto`),data:[{value:`auto`,label:`Auto`},{value:`light`,label:`Light`},{value:`dark`,label:`Dark`}]})})]})]})};function WebcomponentsPanel(e){let n=q(48),{diagram:r}=e,i=t(),o;n[0]===i.basepath?o=n[1]:(o=i.basepath.endsWith(`/`)?i.basepath:`${i.basepath}/`,n[0]=i.basepath,n[1]=o);let s=`${o}likec4-views.js`,c;n[2]===s?c=n[3]:(c=new URL(s,window.location.href),n[2]=s,n[3]=c);let u=c.href,d,f,p,m,h;if(n[4]!==r.id||n[5]!==u||n[6]!==i){p=`
6
+ <script module src="${u}"><\/script>
7
+ `.trim();let e=`
8
+ <${Z.View}
9
+ view-id="${encodeURIComponent(r.id)}"
10
+ browser="true"
11
+ dynamic-variant="sequence">
12
+ </${Z.View}>
13
+ `,t;n[12]===e?t=n[13]:(t=e.trim(),n[12]=e,n[13]=t),f=t;let a;n[14]!==r.id||n[15]!==i?(a=i.buildLocation(import.meta.env.DEV?{to:`/webcomponent/$/`,params:{_splat:`/`},hash:r.id,search:!0}:{to:`/webcomponent/$/`,params:{_splat:r.id},search:!0}),n[14]=r.id,n[15]=i,n[16]=a):a=n[16],h=a,d=w,m=p.includes(`http://localhost`)&&Y(AlertLocalhost,{}),n[4]=r.id,n[5]=u,n[6]=i,n[7]=d,n[8]=f,n[9]=p,n[10]=m,n[11]=h}else d=n[7],f=n[8],p=n[9],m=n[10],h=n[11];let g;n[17]===Symbol.for(`react.memo_cache_sentinel`)?(g=Y(a,{children:Y(k,{size:`sm`,children:`Add this script to your page:`})}),n[17]=g):g=n[17];let _;n[18]===Symbol.for(`react.memo_cache_sentinel`)?(_=Y(a,{children:Y(k,{fw:`500`,size:`sm`,children:`JavaScript`})}),n[18]=_):_=n[18];let v;n[19]===Symbol.for(`react.memo_cache_sentinel`)?(v=Y(R,{}),n[19]=v):v=n[19];let y;n[20]===h.href?y=n[21]:(y=Y(x,{component:`a`,href:h.href,target:`_blank`,variant:`light`,color:`gray`,children:v}),n[20]=h.href,n[21]=y);let b;n[22]===p?b=n[23]:(b=Y(N,{value:p,timeout:1500,children:CopyButtonChild}),n[22]=p,n[23]=b);let S;n[24]!==y||n[25]!==b?(S=X(T,{justify:`space-between`,children:[_,X(T,{gap:`xs`,children:[y,b]})]}),n[24]=y,n[25]=b,n[26]=S):S=n[26];let C;n[27]===p?C=n[28]:(C=Y(l,{block:!0,children:p}),n[27]=p,n[28]=C);let E;n[29]===Symbol.for(`react.memo_cache_sentinel`)?(E=Y(`br`,{}),n[29]=E):E=n[29];let D;n[30]===Symbol.for(`react.memo_cache_sentinel`)?(D=Y(`code`,{children:`<head>`}),n[30]=D):D=n[30];let O;n[31]===Symbol.for(`react.memo_cache_sentinel`)?(O=Y(a,{children:X(k,{size:`sm`,c:`dimmed`,children:[`This script defines a custom element (webcomponent) that renders your diagrams.`,E,`Script must be inserted once in the `,D,` or at the end of the `,Y(`code`,{children:`<body>`}),` `,`tag.`]})}),n[31]=O):O=n[31];let A;n[32]!==S||n[33]!==C?(A=X(w,{gap:`xs`,children:[S,C,O]}),n[32]=S,n[33]=C,n[34]=A):A=n[34];let j;n[35]===Symbol.for(`react.memo_cache_sentinel`)?(j=Y(a,{children:Y(k,{fw:`500`,size:`sm`,children:`HTML`})}),n[35]=j):j=n[35];let M,P;n[36]===f?(M=n[37],P=n[38]):(M=X(T,{justify:`space-between`,children:[j,Y(a,{children:Y(N,{value:f,timeout:1500,children:CopyButtonChild})})]}),P=Y(l,{block:!0,children:f}),n[36]=f,n[37]=M,n[38]=P);let F;n[39]===Symbol.for(`react.memo_cache_sentinel`)?(F=Y(a,{children:X(k,{size:`sm`,c:`dimmed`,children:[`Insert this code to your page. Page may have multiple `,Y(`code`,{children:`<likec4-view>`}),`.`]})}),n[39]=F):F=n[39];let I;n[40]!==M||n[41]!==P?(I=X(w,{gap:`xs`,children:[M,P,F]}),n[40]=M,n[41]=P,n[42]=I):I=n[42];let L;return n[43]!==d||n[44]!==A||n[45]!==I||n[46]!==m?(L=X(d,{children:[m,g,A,I]}),n[43]=d,n[44]=A,n[45]=I,n[46]=m,n[47]=L):L=n[47],L}function ShareModal(e){let t=q(19),{onClose:n}=e,[r]=ne(),[a,o]=K(`webcomponent`);if(!r)return null;let s;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(s=Y(M,{backgroundOpacity:.5,blur:3}),t[0]=s):s=t[0];let t2;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(t2=e=>o(e??`webcomponent`),t[1]=t2):t2=t[1];let c;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(c=X(b,{children:[Y(E,{value:`webcomponent`,children:`Webcomponent`}),Y(E,{value:`embed`,children:`Embedded`})]}),t[2]=c):c=t[2];let l;t[3]===r?l=t[4]:(l=Y(A,{value:`embed`,pt:`md`,children:Y(EmbedPanel,{diagram:r})}),t[3]=r,t[4]=l);let u;t[5]===r?u=t[6]:(u=Y(A,{value:`webcomponent`,pt:`md`,children:Y(WebcomponentsPanel,{diagram:r})}),t[5]=r,t[6]=u);let d;t[7]!==a||t[8]!==l||t[9]!==u?(d=X(v,{value:a,onChange:t2,children:[c,l,u]}),t[7]=a,t[8]=l,t[9]=u,t[10]=d):d=t[10];let f;t[11]===n?f=t[12]:(f=Y(T,{justify:`flex-end`,mt:`lg`,children:Y(_,{size:`sm`,onClick:n,children:`Close`})}),t[11]=n,t[12]=f);let p;t[13]!==d||t[14]!==f?(p=Y(m,{children:X(i,{children:[d,f]})}),t[13]=d,t[14]=f,t[15]=p):p=t[15];let h;return t[16]!==n||t[17]!==p?(h=X(y,{size:`xl`,opened:!0,onClose:n,children:[s,p]}),t[16]=n,t[17]=p,t[18]=h):h=t[18],h}const ce=ie(()=>{let e=q(16),t=W(),i;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(i={select(e){return e.some(_temp)}},e[0]=i):i=e[0];let a=n(i),{breakpoints:o}=c(),s=g(`(min-width: ${o.md})`)??!1,[l,d]=u(!1),{open:f,close:m}=d,h;e[1]!==a||e[2]!==s||e[3]!==f||e[4]!==t?(h=a?X(J,{children:[Y(SelectProject,{}),t.length<=1&&Y(_,{size:s?`sm`:`xs`,leftSection:Y(V,{size:14}),onClick:f,children:`Share`}),Y(ExportButton,{})]}):Y(_,{component:r,to:`../`,size:s?`sm`:`xs`,variant:`subtle`,color:`gray`,children:`Back to diagram`}),e[1]=a,e[2]=s,e[3]=f,e[4]=t,e[5]=h):h=e[5];let v,y;e[6]===Symbol.for(`react.memo_cache_sentinel`)?(v=Y(p,{orientation:`vertical`,visibleFrom:`md`}),y=Y(te,{}),e[6]=v,e[7]=y):(v=e[6],y=e[7]);let b;e[8]===h?b=e[9]:(b=Y($.Root,{panelPosition:`right`,hideBelow:`md`,children:X($.Body,{gap:`2`,children:[h,v,y]})}),e[8]=h,e[9]=b);let x;e[10]!==m||e[11]!==l?(x=l&&Y(ShareModal,{onClose:m}),e[10]=m,e[11]=l,e[12]=x):x=e[12];let S;return e[13]!==b||e[14]!==x?(S=X(J,{children:[b,x]}),e[13]=b,e[14]=x,e[15]=S):S=e[15],S}),enableDownload=e=>({...e,download:!0}),enableJpegDownload=e=>({...e,download:!0,format:`jpeg`});function ExportButton(){let e=n({select:e=>e.some(({routeId:e})=>e===`/project/$projectId`)}),[t,i]=K(!1),a=G(),c=re(),l=ae(async()=>{try{i(!0);let{loadDrawioSources:e}=await import(`likec4:drawio`),{drawioEditUrl:t}=await e(a.id),n=t(c);window.open(n,`_blank`,`noopener,noreferrer`)}catch(e){console.error(`Failed to export to Draw.io:`,e)}finally{i(!1)}},[a.id,c]);return X(j,{shadow:`md`,width:200,trigger:`click-hover`,openDelay:200,children:[Y(h,{children:Y(_,{variant:`subtle`,size:`sm`,color:`gray`,px:`sm`,rightSection:Y(B,{opacity:.5,size:14}),visibleFrom:`md`,children:`Export`})}),X(d,{children:[Y(s,{children:`Current view`}),Y(o,{renderRoot:t=>Y(r,{target:`_blank`,to:e?`/project/$projectId/export/$viewId/`:`/export/$viewId/`,search:enableDownload,...t}),children:`Export as .png`}),Y(o,{renderRoot:t=>Y(r,{target:`_blank`,to:e?`/project/$projectId/export/$viewId/`:`/export/$viewId/`,search:enableJpegDownload,...t}),children:`Export as .jpg`}),Y(o,{renderRoot:t=>Y(r,{to:e?`/project/$projectId/view/$viewId/dot/`:`/view/$viewId/dot/`,search:!0,...t}),children:`Export as .dot`}),Y(o,{renderRoot:t=>Y(r,{to:e?`/project/$projectId/view/$viewId/d2`:`/view/$viewId/d2`,search:!0,...t}),children:`Export as .d2`}),Y(o,{renderRoot:t=>Y(r,{to:e?`/project/$projectId/view/$viewId/mmd`:`/view/$viewId/mmd`,search:!0,...t}),children:`Export as .mmd`}),Y(o,{renderRoot:t=>Y(r,{to:e?`/project/$projectId/view/$viewId/puml`:`/view/$viewId/puml`,search:!0,...t}),children:`Export as .puml`}),Y(o,{disabled:t,onClick:l,children:`Export to Draw.io`}),Y(o,{disabled:!0,children:`Export to Miro`}),Y(o,{disabled:!0,children:`Export to Notion`})]})]})}function _temp(e){let{routeId:t}=e;return t===`/_single/view/$viewId/`||t===`/project/$projectId/view/$viewId/`}export{ce as t};
@@ -0,0 +1 @@
1
+ import"./rolldown-runtime.mjs";import{M as e}from"./styled-system.mjs";import{B as t,G as n,W as r,Z as i,b as a,u as o,x as s}from"./libs/@tabler/icons-react.mjs";import{createContext as c,useContext as l}from"react";import{c as u}from"react/compiler-runtime";import{Fragment as d,jsx as f}from"react/jsx-runtime";const p=c(null);function IconRendererProvider(e){let t=u(5),{value:n,children:r}=e;if(l(p)){let e;return t[0]===r?e=t[1]:(e=f(d,{children:r}),t[0]=r,t[1]=e),e}let i;return t[2]!==r||t[3]!==n?(i=f(p.Provider,{value:n,children:r}),t[2]=r,t[3]=n,t[4]=i):i=t[4],i}function decodeSvgDataUrl(e){if(!e.startsWith(`data:image/svg+xml`))return null;try{if(e.includes(`;base64,`)){let t=e.split(`;base64,`)[1];if(t)return atob(t)}else{let t=e.split(`,`)[1];if(t)return decodeURIComponent(t)}}catch{}return null}function IconRenderer(t){let n=u(18),{element:r,className:i,style:a}=t,o=l(p);if(!r||!r.icon||r.icon===`none`)return null;let s;if(r.icon.startsWith(`http://`)||r.icon.startsWith(`https://`)||r.icon.startsWith(`data:image`)){let e;n[0]===r.icon?e=n[1]:(e=r.icon.startsWith(`data:image/svg+xml`)?decodeSvgDataUrl(r.icon):null,n[0]=r.icon,n[1]=e);let t=e;if(t){let e;n[2]===Symbol.for(`react.memo_cache_sentinel`)?(e={display:`contents`},n[2]=e):e=n[2];let r;n[3]===t?r=n[4]:(r=f(`span`,{style:e,dangerouslySetInnerHTML:{__html:t}}),n[3]=t,n[4]=r),s=r}else{let e;n[5]!==r.icon||n[6]!==r.title?(e=f(`img`,{src:r.icon,alt:r.title}),n[5]=r.icon,n[6]=r.title,n[7]=e):e=n[7],s=e}}else if(o){let e;n[8]!==o||n[9]!==r?(e=f(o,{node:r}),n[8]=o,n[9]=r,n[10]=e):e=n[10],s=e}if(!s)return null;let c;n[11]===i?c=n[12]:(c=e(i,`likec4-element-icon`),n[11]=i,n[12]=c);let d;return n[13]!==r.icon||n[14]!==s||n[15]!==a||n[16]!==c?(d=f(`div`,{className:c,"data-likec4-icon":r.icon,style:a,children:s}),n[13]=r.icon,n[14]=s,n[15]=a,n[16]=c,n[17]=d):d=n[17],d}const m={browser:i,cylinder:n,mobile:r,person:o,queue:a,rectangle:s,storage:n,bucket:n,document:t,component:s};function IconOrShapeRenderer(t){let n=u(12),{element:r,className:i,style:a}=t;if(!r.icon||r.icon===`none`){let t=m[r.shape],o;n[0]===i?o=n[1]:(o=e(i,`likec4-shape-icon`),n[0]=i,n[1]=o);let s;n[2]===t?s=n[3]:(s=f(t,{}),n[2]=t,n[3]=s);let c;return n[4]!==a||n[5]!==o||n[6]!==s?(c=f(`div`,{className:o,style:a,children:s}),n[4]=a,n[5]=o,n[6]=s,n[7]=c):c=n[7],c}let o;return n[8]!==i||n[9]!==r||n[10]!==a?(o=f(IconRenderer,{element:r,className:i,style:a}),n[8]=i,n[9]=r,n[10]=a,n[11]=o):o=n[11],o}export{IconRenderer as n,IconRendererProvider as r,IconOrShapeRenderer as t};