@eventcatalog/core 5.0.0-beta.34 → 5.0.0-beta.36

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.
@@ -36,7 +36,7 @@ module.exports = __toCommonJS(analytics_exports);
36
36
  var import_os = __toESM(require("os"), 1);
37
37
 
38
38
  // package.json
39
- var version = "5.0.0-beta.34";
39
+ var version = "5.0.0-beta.36";
40
40
 
41
41
  // src/constants.ts
42
42
  var VERSION = version;
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  raiseEvent
3
- } from "../chunk-GTI7UNJD.js";
3
+ } from "../chunk-X43CPKDI.js";
4
4
  import "../chunk-CPW6G62V.js";
5
- import "../chunk-UDWBR66A.js";
5
+ import "../chunk-MMXH32NE.js";
6
6
  export {
7
7
  raiseEvent
8
8
  };
@@ -169,7 +169,7 @@ var verifyRequiredFieldsAreInCatalogConfigFile = async (projectDirectory) => {
169
169
  var import_os = __toESM(require("os"), 1);
170
170
 
171
171
  // package.json
172
- var version = "5.0.0-beta.34";
172
+ var version = "5.0.0-beta.36";
173
173
 
174
174
  // src/constants.ts
175
175
  var VERSION = version;
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  log_build_default
3
- } from "../chunk-EFFYDIIZ.js";
3
+ } from "../chunk-C5O33Z7X.js";
4
4
  import "../chunk-AD7CL772.js";
5
5
  import "../chunk-ZAZHAVKB.js";
6
6
  import "../chunk-CA6WCQ2T.js";
7
- import "../chunk-GTI7UNJD.js";
7
+ import "../chunk-X43CPKDI.js";
8
8
  import "../chunk-CPW6G62V.js";
9
- import "../chunk-UDWBR66A.js";
9
+ import "../chunk-MMXH32NE.js";
10
10
  import "../chunk-4G7FSRPN.js";
11
11
  export {
12
12
  log_build_default as default
@@ -13,7 +13,7 @@ import {
13
13
  } from "./chunk-CA6WCQ2T.js";
14
14
  import {
15
15
  raiseEvent
16
- } from "./chunk-GTI7UNJD.js";
16
+ } from "./chunk-X43CPKDI.js";
17
17
  import {
18
18
  TELEMETRY_REQUEST_TIMEOUT_MS,
19
19
  isTelemetryDisabled
@@ -1,5 +1,5 @@
1
1
  // package.json
2
- var version = "5.0.0-beta.34";
2
+ var version = "5.0.0-beta.36";
3
3
 
4
4
  // src/constants.ts
5
5
  var VERSION = version;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  VERSION
3
- } from "./chunk-UDWBR66A.js";
3
+ } from "./chunk-MMXH32NE.js";
4
4
 
5
5
  // src/utils/cli-logger.ts
6
6
  import pc from "picocolors";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  logger
3
- } from "./chunk-2BXQDWRV.js";
3
+ } from "./chunk-TXY767QH.js";
4
4
  import {
5
5
  cleanup,
6
6
  getEventCatalogConfigFile
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-CPW6G62V.js";
5
5
  import {
6
6
  VERSION
7
- } from "./chunk-UDWBR66A.js";
7
+ } from "./chunk-MMXH32NE.js";
8
8
 
9
9
  // src/analytics/analytics.js
10
10
  import os from "os";
@@ -25,7 +25,7 @@ __export(constants_exports, {
25
25
  module.exports = __toCommonJS(constants_exports);
26
26
 
27
27
  // package.json
28
- var version = "5.0.0-beta.34";
28
+ var version = "5.0.0-beta.36";
29
29
 
30
30
  // src/constants.ts
31
31
  var VERSION = version;
package/dist/constants.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  VERSION
3
- } from "./chunk-UDWBR66A.js";
3
+ } from "./chunk-MMXH32NE.js";
4
4
  export {
5
5
  VERSION
6
6
  };
@@ -174,7 +174,7 @@ var verifyRequiredFieldsAreInCatalogConfigFile = async (projectDirectory) => {
174
174
  var import_picocolors = __toESM(require("picocolors"), 1);
175
175
 
176
176
  // package.json
177
- var version = "5.0.0-beta.34";
177
+ var version = "5.0.0-beta.36";
178
178
 
179
179
  // src/constants.ts
180
180
  var VERSION = version;
@@ -7,7 +7,7 @@ import {
7
7
  } from "./chunk-S5GWAUG5.js";
8
8
  import {
9
9
  log_build_default
10
- } from "./chunk-EFFYDIIZ.js";
10
+ } from "./chunk-C5O33Z7X.js";
11
11
  import {
12
12
  getLicenseStatus,
13
13
  printLicenseStatus
@@ -37,10 +37,10 @@ import {
37
37
  } from "./chunk-NKNOXQ62.js";
38
38
  import {
39
39
  generate
40
- } from "./chunk-E544BTTP.js";
40
+ } from "./chunk-WJVHEPMY.js";
41
41
  import {
42
42
  logger
43
- } from "./chunk-2BXQDWRV.js";
43
+ } from "./chunk-TXY767QH.js";
44
44
  import {
45
45
  resolve_catalog_dependencies_default
46
46
  } from "./chunk-PD7KTSYN.js";
@@ -54,7 +54,7 @@ import {
54
54
  import {
55
55
  watch
56
56
  } from "./chunk-U63GDPPY.js";
57
- import "./chunk-GTI7UNJD.js";
57
+ import "./chunk-X43CPKDI.js";
58
58
  import "./chunk-CPW6G62V.js";
59
59
  import {
60
60
  getAstroConfigPath
@@ -71,7 +71,7 @@ import {
71
71
  } from "./chunk-LFQJXLHG.js";
72
72
  import {
73
73
  VERSION
74
- } from "./chunk-UDWBR66A.js";
74
+ } from "./chunk-MMXH32NE.js";
75
75
  import {
76
76
  getEventCatalogConfigFile,
77
77
  verifyRequiredFieldsAreInCatalogConfigFile
package/dist/generate.cjs CHANGED
@@ -105,7 +105,7 @@ var getEventCatalogConfigFile = async (projectDirectory) => {
105
105
  var import_picocolors = __toESM(require("picocolors"), 1);
106
106
 
107
107
  // package.json
108
- var version = "5.0.0-beta.34";
108
+ var version = "5.0.0-beta.36";
109
109
 
110
110
  // src/constants.ts
111
111
  var VERSION = version;
package/dist/generate.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  generate
3
- } from "./chunk-E544BTTP.js";
4
- import "./chunk-2BXQDWRV.js";
5
- import "./chunk-UDWBR66A.js";
3
+ } from "./chunk-WJVHEPMY.js";
4
+ import "./chunk-TXY767QH.js";
5
+ import "./chunk-MMXH32NE.js";
6
6
  import "./chunk-4G7FSRPN.js";
7
7
  export {
8
8
  generate
@@ -36,7 +36,7 @@ module.exports = __toCommonJS(cli_logger_exports);
36
36
  var import_picocolors = __toESM(require("picocolors"), 1);
37
37
 
38
38
  // package.json
39
- var version = "5.0.0-beta.34";
39
+ var version = "5.0.0-beta.36";
40
40
 
41
41
  // src/constants.ts
42
42
  var VERSION = version;
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  logger
3
- } from "../chunk-2BXQDWRV.js";
4
- import "../chunk-UDWBR66A.js";
3
+ } from "../chunk-TXY767QH.js";
4
+ import "../chunk-MMXH32NE.js";
5
5
  export {
6
6
  logger
7
7
  };
@@ -204,12 +204,22 @@ function normalizeUserData(session: any): NormalizedUser {
204
204
  }
205
205
  }
206
206
 
207
+ // The host of a token's issuer (e.g. `dev-123.okta.com`), or '' when it isn't a URL
208
+ const issuerHost = (issuer: unknown) => {
209
+ try {
210
+ return new URL(String(issuer)).hostname;
211
+ } catch {
212
+ return '';
213
+ }
214
+ };
215
+
207
216
  function detectProvider(session: any): string {
208
217
  const account = session.account;
209
218
  if (account?.provider) return account.provider;
210
219
 
211
220
  if (session.user?.sub?.startsWith('auth0|')) return 'auth0';
212
- if (session.user?.iss?.includes('okta.com') || session.user?.provider?.includes('okta')) return 'okta';
221
+ const host = issuerHost(session.user?.iss);
222
+ if (host === 'okta.com' || host.endsWith('.okta.com') || session.user?.provider?.includes('okta')) return 'okta';
213
223
  if (session.user?.iss?.includes('microsoft')) return 'microsoft';
214
224
  if (session.user?.iss?.includes('google')) return 'google';
215
225
 
@@ -204,7 +204,7 @@ For more information, see https://radix-ui.com/primitives/docs/components/${t.do
204
204
  }
205
205
  `}),(0,j.jsx)(`div`,{className:`absolute top-[10px] right-4 z-20`,children:(0,j.jsxs)(`div`,{className:`relative group`,children:[(0,j.jsx)(`button`,{onClick:v,className:`p-2.5 rounded-md shadow-md focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-[rgb(var(--ec-accent))] transition-all duration-150 ${r?`bg-green-500 text-white scale-110`:`bg-[rgb(var(--ec-card-bg))] hover:bg-[rgb(var(--ec-page-border))/0.5] text-[rgb(var(--ec-icon-color))] hover:scale-105`}`,"aria-label":r?`Copied!`:`Copy Mermaid code`,children:r?(0,j.jsx)(rD,{className:`h-5 w-5`}):(0,j.jsx)(Dde,{className:`h-5 w-5`})}),(0,j.jsx)(`div`,{className:`absolute top-full right-0 mt-2 px-2 py-1 bg-[rgb(var(--ec-page-text))] text-[rgb(var(--ec-page-bg))] text-xs rounded shadow-lg opacity-0 group-hover:opacity-100 transition-opacity whitespace-nowrap pointer-events-none z-50`,children:r?`Copied!`:`Copy Mermaid code`})]})}),(0,j.jsxs)(`div`,{className:`absolute inset-0 overflow-hidden`,children:[f&&(0,j.jsx)(`div`,{className:`w-full h-full flex items-center justify-center`,children:(0,j.jsxs)(`div`,{className:`relative`,children:[(0,j.jsxs)(`div`,{className:`flex items-center gap-4 opacity-40`,children:[(0,j.jsx)(`div`,{className:`w-24 h-10 bg-[rgb(var(--ec-page-border))] rounded animate-pulse`}),(0,j.jsx)(`div`,{className:`w-12 h-0.5 bg-[rgb(var(--ec-page-border))] animate-pulse`}),(0,j.jsx)(`div`,{className:`w-20 h-10 bg-[rgb(var(--ec-page-border))] rounded-full animate-pulse`,style:{animationDelay:`75ms`}}),(0,j.jsx)(`div`,{className:`w-12 h-0.5 bg-[rgb(var(--ec-page-border))] animate-pulse`,style:{animationDelay:`150ms`}}),(0,j.jsx)(`div`,{className:`w-24 h-10 bg-[rgb(var(--ec-page-border))] rounded animate-pulse`,style:{animationDelay:`225ms`}})]}),(0,j.jsx)(`p`,{className:`text-center text-sm text-[rgb(var(--ec-page-text-muted))] mt-4`,children:`Rendering diagram...`})]})}),l&&!f&&(0,j.jsxs)(`div`,{className:`w-full h-full flex flex-col items-center justify-center p-4`,children:[(0,j.jsx)(`div`,{className:`text-red-500 text-sm mb-2`,children:`Failed to render diagram`}),(0,j.jsx)(`div`,{className:`text-[rgb(var(--ec-page-text-muted))] text-xs font-mono bg-[rgb(var(--ec-code-bg))] p-2 rounded max-w-lg overflow-auto`,children:l}),(0,j.jsxs)(`div`,{className:`mt-4 text-sm text-[rgb(var(--ec-page-text-muted))]`,children:[(0,j.jsx)(`p`,{children:`You can still copy the Mermaid code and paste it into`}),(0,j.jsx)(`a`,{href:`https://mermaid.live`,target:`_blank`,rel:`noopener noreferrer`,className:`text-[rgb(var(--ec-accent))] hover:underline`,children:`mermaid.live`})]})]}),s&&!f&&!l&&(0,j.jsx)(`div`,{ref:g,className:`w-full h-full cursor-grab active:cursor-grabbing [&_svg]:w-full [&_svg]:h-full`,dangerouslySetInnerHTML:{__html:s}})]}),(0,j.jsx)(`div`,{className:`absolute bottom-4 left-4 z-20`,children:(0,j.jsxs)(`div`,{className:`flex items-center gap-2 bg-[rgb(var(--ec-card-bg))]/90 backdrop-blur-sm px-3 py-1.5 rounded-md shadow-sm border border-[rgb(var(--ec-page-border))]`,children:[(0,j.jsx)(`svg`,{className:`w-3.5 h-3.5 text-[rgb(var(--ec-icon-color))]`,fill:`none`,viewBox:`0 0 24 24`,stroke:`currentColor`,children:(0,j.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:2,d:`M15 15l-2 5L9 9l11 4-5 2zm0 0l5 5M7.188 2.239l.777 2.897M5.136 7.965l-2.898-.777M13.95 4.05l-2.122 2.122m-5.657 5.656l-2.12 2.122`})}),(0,j.jsx)(`span`,{className:`text-xs text-[rgb(var(--ec-page-text-muted))]`,children:`Scroll to zoom · Drag to pan`})]})})]})},rze=`system-group-`,tU=(e,t)=>{let n=new Set(e.map(e=>e.id)),r=new Set(t.map(e=>e.id)),i=[],a=(e,t,n)=>e.filter(e=>e.type===`system-group`).forEach(e=>{let r=e.id.slice(rze.length);t.has(r)&&i.push(n?{from:r,to:e.id}:{from:e.id,to:r})});return a(t,n,!0),a(e,r,!1),i.filter(e=>!r.has(e.from)&&!n.has(e.to))},nU=500,ize=e=>e<.5?2*e*e:1-(-2*e+2)**2/2,rU=(e,t,n)=>e+(t-e)*n,iU=e=>({width:e.style?.width,height:e.style?.height}),aze={width:250,height:120},oze=(e,t)=>{let n=(typeof e.style?.width==`number`?e.style.width:void 0)??e.measured?.width??aze.width,r=(typeof e.style?.height==`number`?e.style.height:void 0)??e.measured?.height??aze.height,[i,a]=e.origin??t;return{x:e.position.x-i*n,y:e.position.y-a*r,width:n,height:r}},sze=(e,t,n)=>{let[r,i]=e.origin??n;return{x:t.x+r*t.width,y:t.y+i*t.height}},cze=({fromNodes:e,fromEdges:t,toNodes:n,toEdges:r,setNodes:i,setEdges:a,getCurrentNodes:o,morphs:s=[],nodeOrigin:c=[0,0],onDone:l})=>{let u=new Map(e.map(e=>[e.id,e])),d=new Set(n.map(e=>e.id)),f=new Set(t.map(e=>e.id)),p=new Set(r.map(e=>e.id)),m=[];s.forEach(e=>{let t=u.get(e.from),r=n.find(t=>t.id===e.to);if(!t||!r)return;let i=oze(t,c);typeof r.style?.width==`number`?u.set(r.id,{...r,position:sze(r,i,c),style:{...r.style,width:i.width,height:i.height}}):m.push({node:{...t,origin:[0,0],className:`ec-morph-exit`},from:i,to:oze(r,c)})});let h=new Set(m.map(({node:e})=>e.id)),g=e.filter(e=>!d.has(e.id)&&!h.has(e.id)).map(e=>({...e,className:`ec-exit`})),_=e=>{let t=n.map(t=>{let n=u.get(t.id);if(!n)return{...t,className:`ec-enter`};let r={...t,position:{x:rU(n.position.x,t.position.x,e),y:rU(n.position.y,t.position.y,e)}},i=iU(n),a=iU(t);return typeof i.width==`number`&&typeof a.width==`number`&&typeof i.height==`number`&&typeof a.height==`number`&&(r.style={...t.style,width:rU(i.width,a.width,e),height:rU(i.height,a.height,e)}),r});return m.forEach(({node:n,from:r,to:i})=>t.push({...n,position:{x:rU(r.x,i.x,e),y:rU(r.y,i.y,e)},style:{...n.style,width:rU(r.width,i.width,e),height:rU(r.height,i.height,e)}})),[...t,...g]},v=e=>{let t=new Map(o().map(e=>[e.id,e.measured]));i(e.map(e=>{let n=t.get(e.id);return n?{...e,measured:n}:e}))};v(_(0)),a([...r.map(e=>f.has(e.id)?e:{...e,className:`ec-enter`}),...t.filter(e=>!p.has(e.id)).map(e=>({...e,className:`ec-exit`}))]);let y=performance.now(),b=requestAnimationFrame(function e(t){let r=Math.min(1,(t-y)/nU);if(r<1){v(_(ize(r))),b=requestAnimationFrame(e);return}v(n),a(e=>e.filter(e=>p.has(e.id)).map(e=>e.className===`ec-enter`?{...e,className:void 0}:e)),l?.()});return()=>cancelAnimationFrame(b)},lze=(e,t)=>{let n=new Map(t.map(e=>[e.id,e])),r=e.filter(e=>!e.parentId);if(r.length===0)return;let i=r.map(e=>{let t=n.get(e.id)?.measured??e.measured,r=(typeof e.style?.width==`number`?e.style.width:void 0)??t?.width??150,i=(typeof e.style?.height==`number`?e.style.height:void 0)??t?.height??100;return{...e.position,width:r,height:i}}),a=Math.min(...i.map(e=>e.x)),o=Math.min(...i.map(e=>e.y));return{x:a,y:o,width:Math.max(...i.map(e=>e.x+e.width))-a,height:Math.max(...i.map(e=>e.y+e.height))-o}},uze=e=>{let t=new URL(window.location.href);t.searchParams.set(`level`,String(e)),window.history.replaceState(window.history.state,``,t)},dze=e=>e,fze=(e,t)=>e.type===t,pze=(e,t)=>{let n=new Set(e.filter(e=>e.type===`channels`).map(e=>e.id)),r=new Map,i=e=>{r.has(e.id)||r.set(e.id,e)};for(let e of t){let{source:t,target:r,data:a}=e;if(!n.has(t)&&!n.has(r)){i(e);continue}let o=a?.rootSourceAndTarget;if(!o){i(e);continue}let s=o?.target?.collection===`services`||o?.target?.collection===`agents`?Yue(o.source):Jue(o.target);i(Zue({id:`${o.source.id}-${o.target.id}`,source:o.source.id,target:o.target.id,label:s,...a?.crossDomain?{data:{crossDomain:!0}}:{}}))}return{nodes:e.filter(e=>!n.has(e.id)),edges:Array.from(r.values())}},mze=({nodes:e,edges:t,setNodes:n,setEdges:r,hasChannels:i,hasMessages:a,transitionFrom:o,nodeOrigin:s,hiddenMessagesGraph:c,prepareEdges:l=e=>e,matchesLegendKey:u=fze,initialHiddenLegendKeys:d=[],onHiddenLegendKeysChange:f,preferenceScope:m,ignoreSavedLevel:h=!1,beforeLayout:g=dze,afterLayout:_=dze})=>{let v=`EventCatalog:hideMessages${m?`:${m}`:``}`,y=`EventCatalog:hideChannels${m?`:${m}`:``}`,[b]=(0,p.useState)(()=>{if(h)return 3;let e=Number(new URLSearchParams(window.location.search).get(`level`));return e===1||e===2?2:e===3?3:void 0}),[x,S]=(0,p.useState)(()=>!h&&!b&&localStorage.getItem(y)===`true`),[C,w]=(0,p.useState)(()=>b?b===2:localStorage.getItem(v)===`true`),T=(0,p.useRef)({nodes:e,edges:t}),{fitView:E,fitBounds:ee}=OT(),te=(0,p.useRef)(!1),ne=(0,p.useRef)(!1),re=(0,p.useRef)(void 0),ie=C&&a,ae=i&&(x||ie),[oe,se]=(0,p.useState)(d),ce=(0,p.useRef)(f);ce.current=f;let le=(0,p.useCallback)(e=>{te.current=!0;let t=oe.includes(e)?oe.filter(t=>t!==e):[...oe,e];se(t),ce.current?.(t)},[oe]),ue=(0,p.useRef)(u);ue.current=u;let de=e=>oe.some(t=>ue.current(e,t)),fe=T.current.nodes.some(de),[pe,me]=(0,p.useState)(()=>localStorage.getItem(`EventCatalog:highlightCrossDomain`)===`true`),he=(0,p.useCallback)(()=>{let e=!pe;me(e),localStorage.setItem(`EventCatalog:highlightCrossDomain`,JSON.stringify(e))},[pe]);(0,p.useEffect)(()=>{if(ne.current)return;let n=e.some(e=>ae&&e.type===`channels`||ie&&WE(e)||fe&&de(e));(!ae&&!ie&&!fe||n)&&(T.current={nodes:e,edges:t})},[e,t]);let ge=(0,p.useCallback)(()=>{te.current=!0;let e=!x;S(e),localStorage.setItem(y,JSON.stringify(e))},[x]),_e=(0,p.useCallback)(()=>{te.current=!0;let e=!C;w(e),localStorage.setItem(v,JSON.stringify(e)),uze(e?2:3)},[C]),ve=(0,p.useCallback)(e=>{te.current=!0;let t=e===2;w(t),localStorage.setItem(v,JSON.stringify(t)),t||(S(!1),localStorage.setItem(y,`false`)),uze(e)},[]),ye=(0,p.useRef)(e);ye.current=e;let be=(0,p.useRef)(t);be.current=t;let xe=(0,p.useRef)(l);xe.current=l;let Se=(0,p.useRef)(g);Se.current=g;let Ce=(0,p.useRef)(_);Ce.current=_;let we=(0,p.useRef)(0),[Te,Ee]=(0,p.useState)(!1),De=(0,p.useRef)(!0);return(0,p.useLayoutEffect)(()=>{let e=De.current;De.current=!1;let t=e?o:void 0;if(e&&!t&&!ae&&!ie&&!fe)return;let i=++we.current,a=!!t||te.current;te.current=!1,re.current?.();let l=({nodes:o,edges:c},l=!1)=>{if(i!==we.current)return;let u=Ce.current({nodes:o,edges:c}),d={nodes:u.nodes,edges:xe.current(u.edges)};if(!a){n(d.nodes),r(d.edges),(!e||l)&&E({...XH,duration:800});return}let f=t?.nodes??ye.current;ne.current=!0;let p=lze(d.nodes,f);p&&ee(p,{padding:.2,duration:nU}),re.current=cze({fromNodes:f,fromEdges:t?.edges??be.current,toNodes:d.nodes,toEdges:d.edges,setNodes:n,setEdges:r,getCurrentNodes:()=>ye.current,morphs:t?tU(t.nodes,d.nodes):[],nodeOrigin:s,onDone:()=>{ne.current=!1,E({...XH,duration:400,nodes:d.nodes})}})};if(!fe){if(ie&&c)return l(c);if(!ae&&!ie)return l(T.current)}let u=Se.current(T.current),d=ie?c??dde(u.nodes,u.edges):ae?pze(u.nodes,u.edges):u,f=fe?ude(d.nodes,d.edges,de):d;e&&Ee(!0),UE(f).then(t=>{l(t,!0),e&&Ee(!1)})},[ae,ie,oe]),{hideChannels:x,toggleChannelsVisibility:ge,hideMessages:C,toggleMessagesVisibility:_e,setDetailLevel:ve,hiddenLegendKeys:oe,toggleLegendKey:le,highlightCrossDomain:pe,toggleHighlightCrossDomain:he,isLayingOut:Te}},aU=(e,t)=>e.map(e=>{let n=e.data?.canAnimate??!(e.type===`flow-edge`||e.type===`multiline`||e.type==="default"||e.type===`step`||e.type===`smoothstep`||e.data?.animated===!1);return{...e,animated:n?t:!1,type:n?t?`animated`:`smoothstep`:e.type||`default`,data:{...e.data,canAnimate:n,animateMessages:n?t:!1,animated:n?t:!1}}}),hze=30,gze=`EventCatalog:animateMessages`,_ze=({disabled:e,animated:t,nodeCount:n})=>{if(e)return!1;if(t!==void 0)return t;let r=new URLSearchParams(window.location.search).get(`animate`);if(r===`true`||r===`false`)return r===`true`;let i=null;try{i=localStorage.getItem(gze)}catch{}return i!==`false`&&n<=hze},vze=`py-2.5 px-4 bg-[rgb(var(--ec-card-bg))] hover:bg-[rgb(var(--ec-accent-subtle))] border border-[rgb(var(--ec-page-border))] rounded-md focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-[rgb(var(--ec-accent))] flex items-center gap-3 transition-colors duration-150 hover:border-[rgb(var(--ec-accent)/0.3)] group whitespace-nowrap`,yze=`h-9 w-9 p-0 bg-[rgb(var(--ec-card-bg))] hover:bg-[rgb(var(--ec-accent-subtle))] border border-[rgb(var(--ec-page-border))] rounded-md focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-[rgb(var(--ec-accent))] flex items-center justify-center transition-colors duration-150 hover:border-[rgb(var(--ec-accent)/0.3)] group`,bze=`h-5 w-5 text-[rgb(var(--ec-page-text-muted))] flex-shrink-0 group-hover:text-[rgb(var(--ec-accent))] transition-colors duration-150`,xze=`h-4 w-4 text-[rgb(var(--ec-page-text-muted))] flex-shrink-0 group-hover:text-[rgb(var(--ec-accent))] transition-colors duration-150`,Sze=`min-w-56 bg-[rgb(var(--ec-page-bg))] border border-[rgb(var(--ec-page-border))] rounded-lg shadow-xl z-50 py-1.5`,Cze=`flex items-center px-3 py-2 text-xs text-[rgb(var(--ec-page-text))] hover:bg-[rgb(var(--ec-accent-subtle)/0.3)] cursor-pointer transition-colors gap-2`,oU=`w-3.5 h-3.5 text-[rgb(var(--ec-page-text-muted))] flex-shrink-0`,wze=`my-1 h-px bg-[rgb(var(--ec-page-border))]`,Tze=(0,p.memo)(({isMermaidView:e,setIsMermaidView:t,animateMessages:n,toggleAnimateMessages:r,hideAnimateMessages:i=!1,hideChannels:a,toggleChannelsVisibility:o,hasChannels:s,hideMessages:c,toggleMessagesVisibility:l,hasMessages:u,showMinimap:d,setShowMinimap:f,handleFitView:m,searchRef:h,isChatEnabled:g,openChat:_,handleCopyArchitectureCode:v,handleExportVisual:y,setIsShareModalOpen:b,toggleFullScreen:x,isDevMode:S=!1,onSaveLayout:C,onResetLayout:w,notesCount:T=0,onOpenNotes:E,onOpenInStudio:ee})=>{let[te,ne]=(0,p.useState)(`idle`),re=yB();return(0,j.jsxs)(j.Fragment,{children:[(0,j.jsxs)(tj,{children:[(0,j.jsxs)(Ige,{className:`flex items-center px-3 py-2 text-xs text-[rgb(var(--ec-page-text))] hover:bg-[rgb(var(--ec-accent-subtle)/0.3)] cursor-pointer transition-colors gap-2 outline-none`,children:[(0,j.jsx)(yde,{className:oU}),(0,j.jsx)(`span`,{className:`flex-1 font-normal`,children:`Canvas`}),(0,j.jsx)(`svg`,{className:`w-3 h-3 text-[rgb(var(--ec-page-text-muted))]`,fill:`none`,viewBox:`0 0 24 24`,stroke:`currentColor`,children:(0,j.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:2,d:`M9 5l7 7-7 7`})})]}),(0,j.jsx)(YA,{container:re,children:(0,j.jsxs)(nj,{className:`min-w-[200px] bg-[rgb(var(--ec-card-bg))] rounded-lg shadow-xl border border-[rgb(var(--ec-page-border))] py-1.5 z-[60]`,sideOffset:8,alignOffset:-8,children:[(0,j.jsxs)(QA,{checked:e,onCheckedChange:t,className:Cze,children:[(0,j.jsx)(Ode,{className:oU}),(0,j.jsx)(`span`,{className:`flex-1 font-normal`,children:`Render as mermaid`}),(0,j.jsx)(`div`,{className:`w-7 h-4 rounded-full transition-all duration-200 flex-shrink-0 relative ${e?`bg-[rgb(var(--ec-accent))]`:`bg-[rgb(var(--ec-page-border))]`}`,children:(0,j.jsx)(`div`,{className:`absolute top-0.5 w-3 h-3 rounded-full bg-white shadow-sm transition-all duration-200 ${e?`left-3.5`:`left-0.5`}`})})]}),!i&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(ej,{className:`my-1 h-px bg-[rgb(var(--ec-page-border))]`}),(0,j.jsxs)(QA,{checked:n,onCheckedChange:r,className:`flex items-center px-3 py-2 text-xs text-[rgb(var(--ec-page-text))] hover:bg-[rgb(var(--ec-accent-subtle)/0.3)] cursor-pointer transition-colors gap-2`,children:[(0,j.jsx)(ED,{className:`w-3.5 h-3.5 text-[rgb(var(--ec-page-text-muted))] flex-shrink-0`}),(0,j.jsx)(`span`,{className:`flex-1 font-normal`,children:`Simulate Messages`}),(0,j.jsx)(`div`,{className:`w-7 h-4 rounded-full transition-all duration-200 flex-shrink-0 relative ${n?`bg-[rgb(var(--ec-accent))]`:`bg-[rgb(var(--ec-page-border))]`}`,children:(0,j.jsx)(`div`,{className:`absolute top-0.5 w-3 h-3 rounded-full bg-white shadow-sm transition-all duration-200 ${n?`left-3.5`:`left-0.5`}`})})]})]}),s&&(0,j.jsxs)(QA,{checked:a||c,onCheckedChange:o,disabled:c,className:`flex items-center px-3 py-2 text-xs text-[rgb(var(--ec-page-text))] hover:bg-[rgb(var(--ec-accent-subtle)/0.3)] cursor-pointer transition-colors gap-2 data-[disabled]:opacity-50 data-[disabled]:cursor-not-allowed`,children:[(0,j.jsx)(Ade,{className:`w-3.5 h-3.5 text-[rgb(var(--ec-page-text-muted))] flex-shrink-0`}),(0,j.jsx)(`span`,{className:`flex-1 font-normal`,children:`Hide channels`}),(0,j.jsx)(`div`,{className:`w-7 h-4 rounded-full transition-all duration-200 flex-shrink-0 relative ${a||c?`bg-[rgb(var(--ec-accent))]`:`bg-[rgb(var(--ec-page-border))]`}`,children:(0,j.jsx)(`div`,{className:`absolute top-0.5 w-3 h-3 rounded-full bg-white shadow-sm transition-all duration-200 ${a||c?`left-3.5`:`left-0.5`}`})})]}),u&&(0,j.jsxs)(QA,{checked:c,onCheckedChange:l,className:`flex items-center px-3 py-2 text-xs text-[rgb(var(--ec-page-text))] hover:bg-[rgb(var(--ec-accent-subtle)/0.3)] cursor-pointer transition-colors gap-2`,children:[(0,j.jsx)(Ade,{className:`w-3.5 h-3.5 text-[rgb(var(--ec-page-text-muted))] flex-shrink-0`}),(0,j.jsx)(`span`,{className:`flex-1 font-normal`,children:`Hide messages`}),(0,j.jsx)(`div`,{className:`w-7 h-4 rounded-full transition-all duration-200 flex-shrink-0 relative ${c?`bg-[rgb(var(--ec-accent))]`:`bg-[rgb(var(--ec-page-border))]`}`,children:(0,j.jsx)(`div`,{className:`absolute top-0.5 w-3 h-3 rounded-full bg-white shadow-sm transition-all duration-200 ${c?`left-3.5`:`left-0.5`}`})})]}),(0,j.jsxs)(QA,{checked:d,onCheckedChange:f,className:Cze,children:[(0,j.jsx)(Ide,{className:oU}),(0,j.jsx)(`span`,{className:`flex-1 font-normal`,children:`Show minimap`}),(0,j.jsx)(`div`,{className:`w-7 h-4 rounded-full transition-all duration-200 flex-shrink-0 relative ${d?`bg-[rgb(var(--ec-accent))]`:`bg-[rgb(var(--ec-page-border))]`}`,children:(0,j.jsx)(`div`,{className:`absolute top-0.5 w-3 h-3 rounded-full bg-white shadow-sm transition-all duration-200 ${d?`left-3.5`:`left-0.5`}`})})]}),(0,j.jsx)(ej,{className:wze}),(0,j.jsxs)(ZA,{onClick:m,className:`px-3 py-2 text-xs text-[rgb(var(--ec-page-text))] hover:bg-[rgb(var(--ec-accent-subtle)/0.3)] cursor-pointer flex items-center gap-2 transition-colors`,children:[(0,j.jsx)(dD,{className:oU}),(0,j.jsx)(`span`,{className:`flex-1 font-normal`,children:`Fit view`})]}),(0,j.jsxs)(ZA,{onClick:()=>{h.current?.hideSuggestions(),setTimeout(()=>{document.querySelector(`input[placeholder="Search nodes..."]`)?.focus()},50)},className:`px-3 py-2 text-xs text-[rgb(var(--ec-page-text))] hover:bg-[rgb(var(--ec-accent-subtle)/0.3)] cursor-pointer flex items-center gap-2 transition-colors`,children:[(0,j.jsx)(vD,{className:oU}),(0,j.jsx)(`span`,{className:`flex-1 font-normal`,children:`Find on canvas`})]})]})})]}),T>0&&E&&(0,j.jsxs)(ZA,{onClick:E,className:`px-3 py-2 text-xs text-[rgb(var(--ec-page-text))] hover:bg-[rgb(var(--ec-accent-subtle)/0.3)] cursor-pointer flex items-center gap-2 transition-colors`,children:[(0,j.jsx)(fD,{className:`w-3.5 h-3.5 text-[rgb(var(--ec-page-text-muted))] flex-shrink-0`}),(0,j.jsxs)(`span`,{className:`flex-1 font-normal`,children:[`View notes (`,T,`)`]})]}),S&&C&&(0,j.jsxs)(tj,{children:[(0,j.jsxs)(Ige,{className:`flex items-center px-3 py-2 text-xs text-[rgb(var(--ec-page-text))] hover:bg-[rgb(var(--ec-accent-subtle)/0.3)] cursor-pointer transition-colors gap-2 outline-none`,children:[(0,j.jsx)(Vde,{className:`w-3.5 h-3.5 text-[rgb(var(--ec-page-text-muted))] flex-shrink-0`}),(0,j.jsx)(`span`,{className:`flex-1 font-normal`,children:`Layout`}),(0,j.jsx)(`span`,{className:`text-[10px] text-amber-600 font-medium`,children:`DEV`}),(0,j.jsx)(`svg`,{className:`w-3 h-3 text-[rgb(var(--ec-page-text-muted))]`,fill:`none`,viewBox:`0 0 24 24`,stroke:`currentColor`,children:(0,j.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:2,d:`M9 5l7 7-7 7`})})]}),(0,j.jsx)(YA,{container:re,children:(0,j.jsxs)(nj,{className:`min-w-[180px] bg-[rgb(var(--ec-card-bg))] rounded-lg shadow-xl border border-[rgb(var(--ec-page-border))] py-1.5 z-[60]`,sideOffset:8,alignOffset:-8,children:[(0,j.jsxs)(ZA,{onClick:async()=>{C&&(ne(`saving`),await C(),ne(`idle`))},disabled:te!==`idle`,className:`px-3 py-2 text-xs text-[rgb(var(--ec-page-text))] hover:bg-[rgb(var(--ec-accent-subtle)/0.3)] cursor-pointer flex items-center gap-2 transition-colors disabled:opacity-50 disabled:cursor-not-allowed`,children:[te===`saving`?(0,j.jsx)(bde,{className:`w-3.5 h-3.5 text-[rgb(var(--ec-page-text-muted))] flex-shrink-0 animate-spin`}):(0,j.jsx)(Vde,{className:`w-3.5 h-3.5 text-[rgb(var(--ec-page-text-muted))] flex-shrink-0`}),(0,j.jsx)(`span`,{className:`flex-1 font-normal`,children:te===`saving`?`Saving...`:`Save Layout`})]}),(0,j.jsxs)(ZA,{onClick:async()=>{w&&window.confirm(`Reset layout to auto-positioning? This will delete your saved layout.`)&&(ne(`resetting`),await w()?window.location.reload():ne(`idle`))},disabled:te!==`idle`,className:`px-3 py-2 text-xs text-[rgb(var(--ec-page-text))] hover:bg-[rgb(var(--ec-accent-subtle)/0.3)] cursor-pointer flex items-center gap-2 transition-colors disabled:opacity-50 disabled:cursor-not-allowed`,children:[te===`resetting`?(0,j.jsx)(bde,{className:`w-3.5 h-3.5 text-[rgb(var(--ec-page-text-muted))] flex-shrink-0 animate-spin`}):(0,j.jsx)(Bde,{className:`w-3.5 h-3.5 text-[rgb(var(--ec-page-text-muted))] flex-shrink-0`}),(0,j.jsx)(`span`,{className:`flex-1 font-normal`,children:te===`resetting`?`Resetting...`:`Reset Layout`})]})]})})]}),g&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(ej,{className:`my-1 h-px bg-[rgb(var(--ec-page-border))]`}),(0,j.jsxs)(ZA,{onClick:_,className:`px-3 py-2 text-xs text-[rgb(var(--ec-page-text))] hover:bg-[rgb(var(--ec-accent-subtle)/0.3)] cursor-pointer flex items-center gap-2 transition-colors`,children:[(0,j.jsx)(xde,{className:`w-3.5 h-3.5 text-[rgb(var(--ec-page-text-muted))] flex-shrink-0`}),(0,j.jsx)(`span`,{className:`flex-1 font-normal`,children:`Ask a question`})]})]}),(0,j.jsx)(ej,{className:wze}),(0,j.jsxs)(ZA,{onClick:v,className:`px-3 py-2 text-xs text-[rgb(var(--ec-page-text))] hover:bg-[rgb(var(--ec-accent-subtle)/0.3)] cursor-pointer flex items-center gap-2 transition-colors`,children:[(0,j.jsx)(Ode,{className:oU}),(0,j.jsx)(`span`,{className:`flex-1 font-normal`,children:`Copy as mermaid`})]}),(0,j.jsxs)(ZA,{onClick:y,className:`px-3 py-2 text-xs text-[rgb(var(--ec-page-text))] hover:bg-[rgb(var(--ec-accent-subtle)/0.3)] cursor-pointer flex items-center gap-2 transition-colors`,children:[(0,j.jsx)(vP,{className:oU}),(0,j.jsx)(`span`,{className:`flex-1 font-normal`,children:`Export image`})]}),(0,j.jsxs)(ZA,{onClick:()=>b(!0),className:`px-3 py-2 text-xs text-[rgb(var(--ec-page-text))] hover:bg-[rgb(var(--ec-accent-subtle)/0.3)] cursor-pointer flex items-center gap-2 transition-colors`,children:[(0,j.jsx)(Hde,{className:oU}),(0,j.jsx)(`span`,{className:`flex-1 font-normal`,children:`Share Link`})]}),(0,j.jsx)(ej,{className:wze}),(0,j.jsxs)(ZA,{onClick:x,className:`px-3 py-2 text-xs text-[rgb(var(--ec-page-text))] hover:bg-[rgb(var(--ec-accent-subtle)/0.3)] cursor-pointer flex items-center gap-2 transition-colors`,children:[(0,j.jsx)(oTe,{className:oU}),(0,j.jsx)(`span`,{className:`flex-1 font-normal`,children:`Start Presentation`})]}),ee&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(ej,{className:`my-1 h-px bg-[rgb(var(--ec-page-border))]`}),(0,j.jsxs)(ZA,{onSelect:ee,className:`px-3 py-2 text-xs text-[rgb(var(--ec-page-text))] hover:bg-[rgb(var(--ec-accent-subtle)/0.3)] cursor-pointer flex items-center gap-2 transition-colors`,children:[(0,j.jsx)(QE,{className:`w-3.5 h-3.5 text-[rgb(var(--ec-page-text-muted))] flex-shrink-0`}),(0,j.jsx)(`span`,{className:`flex-1 font-normal`,children:`Open in Studio`})]})]})]})});Tze.displayName=`VisualizerDropdownContent`;var Eze=Tze,Dze=(0,p.memo)(function({items:e,children:t}){let n=yB();return!e||e.length===0?(0,j.jsx)(j.Fragment,{children:t}):(0,j.jsxs)(wM,{children:[(0,j.jsx)(TM,{children:t}),(0,j.jsx)(EM,{container:n,children:(0,j.jsx)(DM,{className:`min-w-[220px] bg-white rounded-md p-1 shadow-md border border-gray-200 z-50`,onClick:e=>e.stopPropagation(),children:e.map((e,t)=>(0,j.jsxs)(`div`,{children:[e.separator&&t>0&&(0,j.jsx)(kM,{className:`h-[1px] bg-gray-200 m-1`}),(0,j.jsx)(OM,{asChild:!0,className:`text-sm px-2 py-1.5 outline-none cursor-pointer hover:bg-orange-100 rounded-sm flex items-center text-gray-900 hover:text-gray-900 visited:text-gray-900 no-underline hover:no-underline visited:no-underline`,children:(0,j.jsx)(`a`,{href:e.href,...e.download?{download:e.download}:{},...e.external?{target:`_blank`,rel:`noopener noreferrer`}:{},children:e.label})})]},t))})})]})}),Oze=new Set([`positionAbsoluteX`,`positionAbsoluteY`]),kze=(e,t)=>{let n=new Set([...Object.keys(e),...Object.keys(t)]);for(let r of n)if(!Oze.has(r)&&!Object.is(e[r],t[r]))return!1;return!0},Aze=e=>(0,p.memo)(e,kze),jze=(e,t)=>e?.querySelectorAll(`.react-flow__edges > svg`).forEach(e=>t?e.pauseAnimations():e.unpauseAnimations()),sU=1024,Mze=768,cU=40;function Nze(e){let t={x:e.x-cU,y:e.y-cU,width:e.width+cU*2,height:e.height+cU*2},n=Math.max(sU,Math.ceil(t.width)),r=Math.max(Mze,Math.ceil(t.height));return{width:n,height:r,viewport:nw(t,n,r,.5,2,0)}}function Pze(e){return Array.from(new Set(e.match(/--ec-[a-z0-9-]+/g)??[]))}function lU(e){return[`* { ${Object.entries(e).map(([e,t])=>`${e}: ${t};`).join(` `)} }`,`.react-flow__edge-path { stroke: var(--ec-edge-stroke, #6b7280); stroke-width: 1.5; fill: none; }`].join(`
206
206
  `)}function Fze(e){let t=new Set;for(let e of Array.from(document.styleSheets)){let n;try{n=e.cssRules}catch{continue}for(let e of Array.from(n))for(let n of Pze(e.cssText))t.add(n)}let n=window.getComputedStyle(e),r={};for(let e of t){let t=n.getPropertyValue(e).trim();t&&(r[e]=t)}return r}var Ize=[`fill`,`fill-opacity`,`stroke`,`stroke-width`,`stroke-dasharray`,`stroke-linecap`,`stroke-linejoin`,`opacity`,`font-family`,`font-size`,`font-weight`,`letter-spacing`,`text-anchor`,`dominant-baseline`];function Lze(e){let t=[];return e.querySelectorAll(`svg, svg *`).forEach(e=>{if(!(e instanceof SVGElement))return;let n=window.getComputedStyle(e),r=e.getAttribute(`style`);for(let t of Ize){let r=n.getPropertyValue(t);r&&e.style.setProperty(t,r)}t.push(()=>{r===null?e.removeAttribute(`style`):e.setAttribute(`style`,r)})}),()=>t.forEach(e=>e())}function uU(e){let t=document.createElement(`style`);t.textContent=lU(Fze(e)),e.appendChild(t);let n=Lze(e);return()=>{n(),t.remove()}}var Rze=200,zze=80,Bze={service:{width:300,height:140},agent:{width:300,height:140},"agent-tool":{width:260,height:120},agentTool:{width:260,height:120},event:{width:240,height:140},command:{width:300,height:120},query:{width:300,height:120},channel:{width:300,height:140},container:{width:300,height:140},"data-product":{width:300,height:140},data:{width:320,height:120},domain:{width:300,height:120},flow:{width:300,height:140},actor:{width:240,height:100},"external-system":{width:300,height:100},step:{width:280,height:100},"message-group":{width:350,height:200},group:{width:Rze,height:zze}},dU={width:280,height:100},Vze=e=>Bze[e.type||``]||dU;function fU(e,t){let n=e.metadata.notes||[],r=e.metadata.owners||[],i={name:e.label,version:e.metadata.version||``,summary:e.metadata.summary||``,deprecated:e.metadata.deprecated===!0,draft:e.metadata.draft===!0,...n.length>0?{notes:n}:{},...r.length>0?{owners:r}:{}};switch(e.type){case`service`:return{mode:`full`,style:t,service:i};case`agent`:return{mode:`full`,style:t,agent:{...i,...e.metadata.model?{model:e.metadata.model}:{},...Array.isArray(e.metadata.tools)?{tools:e.metadata.tools}:{}}};case`agent-tool`:case`agentTool`:return{mode:`full`,style:t,agentTool:{id:e.id,name:e.label,type:e.metadata.type||``,icon:e.metadata.icon||``,url:e.metadata.url||``,description:e.metadata.description||``}};case`event`:case`command`:case`query`:return{mode:`full`,style:t,message:{...i,schema:e.metadata.schema||``,...e.metadata.method?{method:e.metadata.method}:{},...e.metadata.path?{path:e.metadata.path}:{},...Array.isArray(e.metadata.statusCodes)&&e.metadata.statusCodes.length>0?{statusCodes:e.metadata.statusCodes}:{}}};case`channel`:return{mode:`full`,style:t,channel:{...i,protocols:e.metadata.protocols||[],address:e.metadata.address||``,...e.metadata.deliveryGuarantee?{deliveryGuarantee:e.metadata.deliveryGuarantee}:{}}};case`container`:return{mode:`full`,style:t,data:{...i,type:e.metadata.containerType||`Database`}};case`data-product`:return{mode:`full`,style:t,dataProduct:i};case`data`:return{mode:`full`,style:t,data:{...i,type:e.metadata.containerType||`Database`}};case`domain`:return{mode:`full`,style:t,domain:{data:{...i,id:e.id}}};case`flow`:return{mode:`full`,style:t,flow:{data:{...i,id:e.id}}};case`actor`:return{...i,label:e.label,mode:`full`,style:t,id:e.id};case`external-system`:return{mode:`full`,style:t,externalSystem:{label:e.label,...i,id:e.id}};case`step`:return{mode:`full`,style:t,step:{...i,title:e.label,id:e.id}};default:return{...i,style:t,resourceType:e.type}}}async function Hze(e,t,{style:n}={}){if(e.length===0)return{nodes:[],edges:[]};let r=new Map(e.map(e=>[e.id,e])),i=new Set(e.filter(t=>t.type===`domain`||e.some(e=>e.parentId===t.id)).map(e=>e.id));return UE({nodes:e.map(e=>{let t=e.parentId&&e.parentId!==e.id&&i.has(e.parentId)?e.parentId:void 0,r={id:e.id,position:{x:0,y:0},...t?{parentId:t,extent:`parent`}:{}};return i.has(e.id)?{...r,type:`group`,data:{mode:`full`,domain:{name:e.label,version:e.metadata.version||``,summary:e.metadata.summary||``}},style:{width:Rze,height:zze,background:`transparent`,border:`none`,padding:0}}:{...r,type:e.type,data:fU(e,n)}}),edges:t.filter(e=>!i.has(e.source)&&!i.has(e.target)).map(e=>{let t=pU(e,r),n=e.type===`flow-step`,i=e.type===`calls`,a=e.type===`reads-writes`,o={type:FC.ArrowClosed,width:20,height:20,color:`rgb(var(--ec-page-text-muted))`};return{id:e.id,source:e.source,target:e.target,label:a?`reads/writes`:n?e.label||void 0:e.label||e.type,type:n?`flow-edge`:i?`step`:`animated`,markerEnd:o,...a?{markerStart:o}:{},data:{edgeType:e.type,message:{collection:t}}}})},{sizeOf:Vze})}var Uze=new Set([`event`,`command`,`query`]);function pU(e,t){let n=t.get(e.target);if(n&&Uze.has(n.type))return`${n.type}s`;let r=t.get(e.source);return r&&Uze.has(r.type)?`${r.type}s`:n?`${n.type}s`:void 0}var mU=e=>{if(typeof e==`number`)return e;if(typeof e==`string`){let t=Number.parseFloat(e);return Number.isFinite(t)?t:void 0}},Wze=e=>({width:mU(e.measured?.width)??mU(e.width)??mU(e.style?.width)??260,height:mU(e.measured?.height)??mU(e.height)??mU(e.style?.height)??140}),hU=(e,t,n=0)=>e.x<t.x+t.width+n&&e.x+e.width+n>t.x&&e.y<t.y+t.height+n&&e.y+e.height+n>t.y,Gze=(e,t=e.position.y)=>{let n=Wze(e);return{x:e.position.x,y:t,width:n.width,height:n.height}},Kze=({nodes:e,movableNodeIds:t,protectedBounds:n,groupNodeId:r,gap:i=40})=>{let a=e.filter(e=>t.has(e.id)).sort((e,t)=>e.position.y-t.position.y),o=new Set(a.map(e=>e.id)),s=[n,...e.filter(e=>!e.parentId&&e.id!==r&&!o.has(e.id)).map(e=>Gze(e))],c=new Map,l=n.y+n.height/2,u=e=>{let t=Wze(e),r=e.position.y+t.height/2>=l?1:-1,a=r>0?Math.max(e.position.y,n.y+n.height+i):Math.min(e.position.y,n.y-t.height-i),o=0;for(;o<s.length+8;){let n={x:e.position.x,y:a,width:t.width,height:t.height},l=s.find(e=>hU(n,e,i));if(!l){s.push(n),c.set(e.id,{...e.position,y:a});return}a=r>0?l.y+l.height+i:l.y-t.height-i,o+=1}s.push({x:e.position.x,y:a,width:t.width,height:t.height}),c.set(e.id,{...e.position,y:a})},d=a.filter(e=>{let t=Wze(e);return e.position.y+t.height/2>=l}),f=new Set(d.map(e=>e.id)),p=a.filter(e=>!f.has(e.id)).reverse();return d.forEach(u),p.forEach(u),c},qze=(e,t)=>e.find(e=>e.id===t&&e.type===`messageGroupExpanded`),Jze=({currentNodes:e,groupNodeId:t,expandedContainerNode:n,childNodes:r,downstreamNodes:i,getDownstreamPosition:a})=>{let o=e.filter(e=>e.id!==t&&e.parentId!==t),s=new Set(o.map(e=>e.id)),c=i.filter(e=>!s.has(e.id)).map((e,t)=>({...e,position:a(e,t)}));return[...o,n,...r,...c]},Yze={service:{icon:yD,color:`#ec4899`,label:`Service`},services:{icon:yD,color:`#ec4899`,label:`Service`},agent:{icon:tD,color:`#0ea5e9`,label:`Agent`},agents:{icon:tD,color:`#0ea5e9`,label:`Agent`},event:{icon:ED,color:`#f97316`,label:`Event`},events:{icon:ED,color:`#f97316`,label:`Event`},command:{icon:pD,color:`#3b82f6`,label:`Command`},commands:{icon:pD,color:`#3b82f6`,label:`Command`},query:{icon:vD,color:`#22c55e`,label:`Query`},queries:{icon:vD,color:`#22c55e`,label:`Query`},channel:{icon:eD,color:`#6b7280`,label:`Channel`},channels:{icon:eD,color:`#6b7280`,label:`Channel`},data:{icon:oD,color:`#3b82f6`,label:`Data`},"data-products":{icon:gD,color:`#6366f1`,label:`Data Product`},externalSystem:{icon:cD,color:`#ec4899`,label:`External System`},actor:{icon:bD,color:`#eab308`,label:`Actor`},view:{icon:Rde,color:`#8b5cf6`,label:`View`},domain:{icon:nD,color:`#14b8a6`,label:`Domain`},domains:{icon:nD,color:`#14b8a6`,label:`Domain`}};function Xze(e){return e&&Yze[e]||null}function Zze(e){let t=e.data,n=[t?.service,t?.message,t?.channel,t?.data,t?.dataProduct,t?.externalSystem,t?.actor];for(let t of n)if(t?.notes&&t.notes.length>0)return{name:t.name||e.id,notes:t.notes,nodeType:e.type||`unknown`};return t?.notes&&t.notes.length>0?{name:t.name||e.id,notes:t.notes,nodeType:e.type||`unknown`}:null}var gU={50:`#fffbeb`,100:`#fef3c7`,200:`#fde68a`,400:`#fbbf24`,500:`#f59e0b`,600:`#d97706`,700:`#b45309`,800:`#92400e`},_U={high:{bg:`#fef2f2`,fg:`#b91c1c`,border:`#fecaca`,label:`High`,accent:`#ef4444`},critical:{bg:`#fef2f2`,fg:`#991b1b`,border:`#fecaca`,label:`Critical`,accent:`#dc2626`},low:{bg:`#f0fdf4`,fg:`#15803d`,border:`#bbf7d0`,label:`Low`,accent:`#22c55e`}},Qze=[[`#7c3aed`,`#a78bfa`],[`#2563eb`,`#60a5fa`],[`#0891b2`,`#22d3ee`],[`#059669`,`#34d399`],[`#d97706`,`#fbbf24`],[`#dc2626`,`#f87171`],[`#db2777`,`#f472b6`],[`#4f46e5`,`#818cf8`]];function vU(e){let t=0;for(let n=0;n<e.length;n++)t=t*31+e.charCodeAt(n)|0;return Math.abs(t)}function $ze({name:e,size:t=28}){let n=e.split(/\s+/).map(e=>e[0]).join(``).toUpperCase().slice(0,2),[r,i]=Qze[vU(e)%Qze.length];return(0,j.jsx)(`div`,{style:{width:t,height:t,borderRadius:`50%`,background:`linear-gradient(135deg, ${r}, ${i})`,display:`flex`,alignItems:`center`,justifyContent:`center`,flexShrink:0},children:(0,j.jsx)(`span`,{style:{fontSize:Math.round(t*.42),fontWeight:700,color:`white`,lineHeight:1},children:n})})}function yU({priority:e}){let t=_U[e.toLowerCase()];if(!t)return null;let n=e===`high`||e===`critical`;return(0,j.jsxs)(`span`,{style:{display:`inline-flex`,alignItems:`center`,gap:3,fontSize:10,fontWeight:600,color:t.fg,background:t.bg,border:`1px solid ${t.border}`,borderRadius:99,padding:`2px 7px`,textTransform:`uppercase`,letterSpacing:`0.03em`,lineHeight:1.4},children:[n&&(0,j.jsx)(Sde,{style:{width:9,height:9},strokeWidth:2.5}),t.label]})}function bU({note:e,index:t}){let n=e.priority?_U[e.priority.toLowerCase()]:null;return(0,j.jsxs)(`div`,{style:{background:`white`,border:`1px solid #e2e8f0`,borderRadius:10,padding:`14px 16px`,position:`relative`,boxShadow:`0 1px 3px rgba(0,0,0,0.04)`},children:[n&&(0,j.jsx)(`div`,{style:{position:`absolute`,left:0,top:10,bottom:10,width:3,borderRadius:`0 2px 2px 0`,background:n.accent}}),(0,j.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginBottom:8},children:[e.author?(0,j.jsx)($ze,{name:e.author,size:24}):(0,j.jsx)(`div`,{style:{width:24,height:24,borderRadius:`50%`,background:`#f1f5f9`,border:`2px solid ${gU[200]}`,display:`flex`,alignItems:`center`,justifyContent:`center`,flexShrink:0},children:(0,j.jsx)(`span`,{style:{fontSize:10,fontWeight:700,color:gU[700]},children:t+1})}),(0,j.jsx)(`div`,{style:{flex:1,minWidth:0},children:e.author&&(0,j.jsx)(`span`,{style:{fontSize:13,fontWeight:600,color:`#0f172a`,lineHeight:1},children:e.author})}),e.priority&&(0,j.jsx)(yU,{priority:e.priority})]}),(0,j.jsx)(`p`,{style:{fontSize:13,lineHeight:1.6,color:`#334155`,margin:0,whiteSpace:`pre-wrap`,wordBreak:`break-word`,paddingLeft:n?6:0},children:e.content})]})}function eBe({noteGroups:e,isOpen:t,onClose:n,nodes:r}){let{setCenter:i,getZoom:a}=OT(),[o,s]=(0,p.useState)(0),c=yB(),l=e.reduce((e,t)=>e+t.notes.length,0),u=e[o]||e[0],d=(0,p.useCallback)(e=>{let t=r.find(t=>t.id===e);if(!t)return;let o=Math.max(a(),1);i(t.position.x+100,t.position.y+50,{zoom:o,duration:600}),n()},[r,i,a,n]);return l===0?null:(0,j.jsx)(N_e,{open:t,onOpenChange:e=>{e||(n(),s(0))},children:(0,j.jsx)(P_e,{container:c,children:(0,j.jsxs)(`div`,{className:`fixed inset-0 z-[99999]`,style:{isolation:`isolate`},children:[(0,j.jsx)(oM,{style:{position:`fixed`,inset:0,background:`rgba(15, 23, 42, 0.55)`,backdropFilter:`blur(6px)`}}),(0,j.jsxs)(sM,{style:{position:`fixed`,top:`50%`,left:`50%`,transform:`translate(-50%, -50%)`,width:`94vw`,maxWidth:720,height:`78vh`,maxHeight:560,background:`white`,borderRadius:14,boxShadow:`0 0 0 1px rgba(0,0,0,0.06), 0 20px 50px rgba(0,0,0,0.2)`,display:`flex`,flexDirection:`column`,overflow:`hidden`,outline:`none`},children:[(0,j.jsxs)(`div`,{style:{padding:`14px 20px`,borderBottom:`1px solid #e2e8f0`,display:`flex`,alignItems:`center`,gap:12,flexShrink:0},children:[(0,j.jsx)(`div`,{style:{width:32,height:32,borderRadius:8,background:`#f1f5f9`,display:`flex`,alignItems:`center`,justifyContent:`center`,flexShrink:0},children:(0,j.jsx)(fD,{style:{width:16,height:16,color:`#64748b`},strokeWidth:2.5})}),(0,j.jsxs)(`div`,{style:{flex:1,minWidth:0},children:[(0,j.jsx)(cM,{style:{fontSize:15,fontWeight:700,color:`#0f172a`,margin:0,lineHeight:1.25},children:`Notes`}),(0,j.jsxs)(lM,{style:{fontSize:12,color:`#64748b`,margin:0,marginTop:1},children:[l,` note`,l===1?``:`s`,` across`,` `,e.length,` resource`,e.length===1?``:`s`]})]}),(0,j.jsx)(uM,{asChild:!0,children:(0,j.jsx)(`button`,{style:{width:30,height:30,borderRadius:8,border:`none`,background:`rgba(0,0,0,0.04)`,display:`flex`,alignItems:`center`,justifyContent:`center`,cursor:`pointer`,color:`#94a3b8`,flexShrink:0},"aria-label":`Close`,children:(0,j.jsx)(wD,{style:{width:15,height:15}})})})]}),(0,j.jsxs)(`div`,{style:{display:`flex`,flex:1,overflow:`hidden`},children:[(0,j.jsx)(`div`,{style:{width:240,flexShrink:0,borderRight:`1px solid #e2e8f0`,overflowY:`auto`,background:`#f8fafc`},children:e.map((e,t)=>{let n=t===o,r=Xze(e.nodeType),i=r?.icon||fD,a=r?.color||`#64748b`;return(0,j.jsxs)(`button`,{onClick:()=>s(t),style:{width:`100%`,padding:`12px 16px`,background:n?`white`:`transparent`,border:`none`,borderBottom:`1px solid #f1f5f9`,borderRight:n?`2px solid ${a}`:`2px solid transparent`,cursor:`pointer`,display:`flex`,alignItems:`center`,gap:10,textAlign:`left`,transition:`background 0.1s`},children:[(0,j.jsx)(`div`,{style:{width:28,height:28,borderRadius:7,background:n?a:`${a}14`,display:`flex`,alignItems:`center`,justifyContent:`center`,flexShrink:0,transition:`background 0.15s`},children:(0,j.jsx)(i,{style:{width:14,height:14,color:n?`white`:a,transition:`color 0.15s`},strokeWidth:2})}),(0,j.jsxs)(`div`,{style:{flex:1,minWidth:0},children:[(0,j.jsx)(`div`,{style:{fontSize:12,fontWeight:n?600:500,color:n?`#0f172a`:`#475569`,lineHeight:1.3,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},children:e.name}),(0,j.jsxs)(`div`,{style:{fontSize:10,color:`#94a3b8`,lineHeight:1.3,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`,marginTop:2},children:[r?.label||e.nodeType,` ·`,` `,e.notes.length,` note`,e.notes.length===1?``:`s`]})]}),(0,j.jsx)(iD,{style:{width:14,height:14,color:n?a:`#cbd5e1`,flexShrink:0},strokeWidth:2})]},e.nodeId)})}),(0,j.jsx)(`div`,{style:{flex:1,overflowY:`auto`,display:`flex`,flexDirection:`column`},children:u&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsxs)(`div`,{style:{padding:`14px 20px`,borderBottom:`1px solid #f1f5f9`,display:`flex`,alignItems:`center`,justifyContent:`space-between`,flexShrink:0,background:`#fafbfc`},children:[(0,j.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:10},children:[(()=>{let e=Xze(u.nodeType),t=e?.icon||fD,n=e?.color||`#64748b`;return(0,j.jsx)(`div`,{style:{width:30,height:30,borderRadius:8,background:`${n}14`,display:`flex`,alignItems:`center`,justifyContent:`center`,flexShrink:0},children:(0,j.jsx)(t,{style:{width:15,height:15,color:n},strokeWidth:2})})})(),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`div`,{style:{fontSize:14,fontWeight:600,color:`#0f172a`,lineHeight:1.3},children:u.name}),(0,j.jsxs)(`div`,{style:{fontSize:11,color:`#94a3b8`,marginTop:2},children:[Xze(u.nodeType)?.label||u.nodeType,` `,`· `,u.notes.length,` note`,u.notes.length===1?``:`s`]})]})]}),(0,j.jsxs)(`button`,{onClick:()=>d(u.nodeId),style:{display:`flex`,alignItems:`center`,gap:5,padding:`5px 10px`,borderRadius:6,border:`1px solid #e2e8f0`,background:`white`,cursor:`pointer`,fontSize:11,fontWeight:500,color:`#475569`,transition:`all 0.12s`},onMouseEnter:e=>{e.currentTarget.style.borderColor=gU[400],e.currentTarget.style.color=gU[700]},onMouseLeave:e=>{e.currentTarget.style.borderColor=`#e2e8f0`,e.currentTarget.style.color=`#475569`},children:[(0,j.jsx)(uD,{style:{width:12,height:12}}),`Find on canvas`]})]}),(0,j.jsx)(`div`,{style:{flex:1,overflowY:`auto`,padding:`16px 20px`,display:`flex`,flexDirection:`column`,gap:10},children:u.notes.map((e,t)=>(0,j.jsx)(bU,{note:e,index:t},t))})]})})]})]})]})})})}var tBe=1,nBe=[.1,.1],rBe=[`services`,`service`,`agents`,`agent`,`externalSystem`,`data`,`data-products`,`events`,`event`,`commands`,`command`,`queries`,`query`,`messageGroup`,`messageGroupExpanded`,`channels`,`channel`],xU=[`domains`,`domain`,`domain-group`,`context-domain`,`systems`,`system`,`external-system`,`externalSystem`,`context-actor`,`actor`,`actors`,`note`,`notes`],iBe={...XH,duration:0},aBe={hideAttribution:!0},oBe=[],sBe=[],cBe={backgroundColor:`rgb(var(--ec-page-bg))`,border:`1px solid rgb(var(--ec-page-border))`,borderRadius:`8px`},lBe={marginBottom:`20px`,marginLeft:`420px`},uBe={marginLeft:`60px`},dBe=new Set([`flowExpanded`,`messageGroupExpanded`]),fBe=e=>e!=null&&dBe.has(e),SU=`ec-walkthrough-current`,CU=(e,t)=>{let n=(e.className??``).split(` `).filter(e=>e&&e!==SU);return t&&n.push(SU),n.length>0?n.join(` `):void 0},wU=e=>e?.opacity===void 0||e.opacity===1,TU=e=>{let t=CU(e,!1);return!e.selected&&t===e.className&&wU(e.style)?e:{...e,style:{...e.style,opacity:1},className:t,selected:!1}},EU=(e,t)=>{let n=e.data?.canAnimate===!1?!1:t;return wU(e.style)&&wU(e.labelStyle)&&wU(e.data)&&!!e.animated===n&&!!e.data?.animated===n?e:{...e,style:{...e.style,opacity:1},labelStyle:{...e.labelStyle,opacity:1},data:{...e.data,opacity:1,animated:n},animated:n}},pBe=(e,t)=>{let n=!1,r=e.map(e=>{let r=t(e);return r!==e&&(n=!0),r});return n?r:e},mBe=170,hBe=`group`,gBe=`groupStyle`,_Be=(e,t)=>{try{let n=new URL(window.location.href);e?(n.searchParams.set(hBe,e),n.searchParams.set(gBe,t)):(n.searchParams.delete(hBe),n.searchParams.delete(gBe)),window.history.replaceState(window.history.state,``,n)}catch{}},vBe=()=>{try{let e=new URL(window.location.href).searchParams;return{groupBy:e.get(hBe),style:e.get(gBe)}}catch{return{groupBy:null,style:null}}},yBe={marginTop:64},bBe=(e,t,n)=>{let r=e.filter(e=>!e.hidden),i=new Set(r.map(e=>e.id));return{nodes:r.map(e=>{let{position:t,width:r,height:i}=n(e);return{id:e.id,type:e.type,data:e.data,...e.parentId&&{parentId:e.parentId},center:{x:t.x+r/2,y:t.y+i/2},width:r,height:i}}),edges:t.filter(e=>!e.hidden&&i.has(e.source)&&i.has(e.target)).map(e=>{let t=e.data?.route;return{source:e.source,target:e.target,...typeof e.label==`string`&&{label:e.label},...t&&{route:{points:t.points,label:t.label}}}})}},DU=e=>({width:e.measured?.width??e.width??(typeof e.style?.width==`number`?e.style.width:0),height:e.measured?.height??e.height??(typeof e.style?.height==`number`?e.style.height:0)}),xBe={strokeWidth:1,stroke:`var(--ec-edge-stroke, #6b7280)`},OU={type:FC.ArrowClosed,width:20,height:20},SBe=(e,t)=>e===`sends`?t===`commands`?`invokes`:t===`queries`?`requests`:`publishes
207
- event`:t===`commands`||t===`queries`?`accepts`:`subscribed by`,CBe=(e,t,n)=>{let r=new Map;for(let e of n)r.has(e.source)||r.set(e.source,[]),r.get(e.source).push(e.target);let i=new Set([e]),a=[e];for(;a.length>0;){let e=a.shift();for(let n of r.get(e)||[]){if(n===t)return!0;i.has(n)||(i.add(n),a.push(n))}}return!1},wBe=(e,t,n,r)=>{let i=e.expandedEdges||[];return(e.messages||[]).map(t=>{let a=t.message,o=`${a.data.id}-${a.data.version}`,s=r.get(o),c=a.collection||`events`,l=SBe(e.direction,c);return e.direction===`sends`?{id:`${n}-to-${s}`,source:n,target:s,label:l,type:`animated`,style:xBe,markerEnd:OU}:CBe(o,n,i)?null:{id:`${s}-to-${n}`,source:s,target:n,label:l,type:`animated`,style:xBe,markerEnd:OU}}).filter(Boolean)},TBe=({nodes:e,edges:t,title:n,includeBackground:r=!0,linkTo:i=`docs`,includeKey:a=!0,linksToVisualiser:o=!1,links:s=[],mode:c=`full`,showFlowWalkthrough:l=!0,showSearch:u=!0,showMenu:d=!0,compactSearch:f=!1,hideAttribution:m=!1,zoomOnScroll:h=!1,isChatEnabled:g=!1,maxTextSize:_,isDevMode:v=!1,resourceKey:y,animated:b,disableMessageAnimation:x=!1,overviewLabel:S,isOverview:C=!1,onShowOverview:w,transitionFrom:T,hiddenMessagesGraph:E,initialHiddenLegendKeys:ee,onHiddenLegendKeysChange:te,preferenceScope:ne,swimlanes:re,focusNodeId:ie,focusRequestId:ae,fitRequestId:oe,onNodeClick:se,onBuildUrl:ce,onNavigate:le,onSaveLayout:ue,onResetLayout:de,onOpenInStudio:fe,studioGraphs:pe})=>{(0,p.useEffect)(()=>{ce&&rIe(ce)},[]);let me=(0,p.useMemo)(()=>{let e=e=>{let t=t=>{let n=t.data?.contextMenu;return n?.length?(0,j.jsx)(Dze,{items:n,children:(0,j.jsx)(e,{...t})}):(0,j.jsx)(e,{...t})};return t.displayName=`WithContextMenu(${e.displayName||e.name||`Component`})`,t},t=e=>(0,j.jsx)(lB,{...e,readOnly:!0});t.displayName=`ReadOnlyNoteNode`;let n={...Object.fromEntries(Object.entries(sH).map(([t,n])=>[t,iRe.has(t)?e(n):n])),note:t};return Object.fromEntries(Object.entries(n).map(([e,t])=>[e,Aze(t)]))},[]),he=(0,p.useMemo)(()=>({animated:gRe,multiline:_H,"flow-edge":yRe,default:bRe,smoothstep:yH,step:xRe}),[]),[ge,_e]=(0,p.useState)(()=>_ze({disabled:x,animated:b,nodeCount:e.length})),ve=(0,p.useCallback)(e=>aU(e,ge),[ge]),[ye]=(0,p.useState)(()=>ve(t)),[be,xe,Se]=due(e),[Ce,we,Te]=bE(ye),{fitView:Ee,getNodes:De,getIntersectingNodes:Oe,getZoom:ke,setCenter:Ae,getEdges:je,getViewport:Me,setViewport:Ne,getInternalNode:Pe}=OT(),Fe=dT(),Ie=(0,p.useRef)({nodes:e,edges:t});(0,p.useEffect)(()=>{let n=Ie.current;Ie.current={nodes:e,edges:t},!(n.nodes===e&&n.edges===t)&&(xe(e),we(ve(t)),requestAnimationFrame(()=>{Ee({duration:300,padding:.2})}))},[e,t,xe,we,Ee,ve]);let[Le,Re]=(0,p.useState)(null),[ze,Be]=(0,p.useState)(!1),[Ve,He]=(0,p.useState)(!1),[Ue,We]=(0,p.useState)(!1),[Ge,Ke]=(0,p.useState)(!1),[qe,Je]=(0,p.useState)(!1),[Ye,Xe]=(0,p.useState)(!1),[Ze,Qe]=(0,p.useState)(!1),$e=(0,p.useRef)({}),[et,tt]=(0,p.useState)(!1),[nt,rt]=(0,p.useState)(null),[it,at]=(0,p.useState)(null),ot=(0,p.useRef)(null),[st,ct]=(0,p.useState)(`boxes`),lt=(0,p.useRef)(`boxes`),ut=(0,p.useRef)(null),[dt,ft]=(0,p.useState)(!1),pt=(0,p.useCallback)(()=>ft(!0),[]),mt=(0,p.useRef)(0),ht=(0,p.useCallback)(()=>{mt.current+=1,mt.current===1&&(Jt.current?.classList.add(`ec-interaction-active`),jze(Jt.current,!0))},[]),gt=(0,p.useCallback)(()=>{mt.current=Math.max(0,mt.current-1),mt.current===0&&(Jt.current?.classList.remove(`ec-interaction-active`),jze(Jt.current,!1))},[]),_t=(0,p.useRef)([]),vt=(0,p.useCallback)((e,t)=>{let n=Jt.current;if(!n)return;let r=n.querySelectorAll(`[data-id="${t.source}"], [data-id="${t.target}"]`);r.forEach(e=>e.classList.add(`ec-edge-hover-node`)),_t.current=Array.from(r)},[]),yt=(0,p.useCallback)(()=>{_t.current.forEach(e=>e.classList.remove(`ec-edge-hover-node`)),_t.current=[]},[]),bt=(0,p.useRef)([]),xt=(0,p.useRef)([]),St=(0,p.useCallback)((e,t)=>{let n=Jt.current;if(!n)return;let r=new Set,i=[];for(let e of Zt.current){if(e.source!==t.id&&e.target!==t.id)continue;let a=n.querySelector(`.react-flow__edge[data-id="${e.id}"]`);a&&(a.classList.add(`ec-node-hover-edge`),i.push(a)),e.source!==t.id&&r.add(e.source),e.target!==t.id&&r.add(e.target)}bt.current=i,r.add(t.id);let a=Array.from(r).map(e=>`[data-id="${e}"]`).join(`, `);if(a){let e=n.querySelectorAll(a);e.forEach(e=>e.classList.add(`ec-edge-hover-node`)),xt.current=Array.from(e)}},[]),Ct=(0,p.useCallback)(()=>{bt.current.forEach(e=>e.classList.remove(`ec-node-hover-edge`)),bt.current=[],xt.current.forEach(e=>e.classList.remove(`ec-edge-hover-node`)),xt.current=[]},[]),wt=(0,p.useMemo)(()=>e.some(e=>e.type===`channels`),[e]),Tt=(0,p.useMemo)(()=>e.some(WE),[e]),Et=(0,p.useMemo)(()=>t.some(e=>e.type===`flow-edge`),[t]),Dt=(0,p.useCallback)(e=>{let t=Fe.getState().nodeLookup.get(e.id)?.measured;return t?.width&&t?.height?{width:t.width,height:t.height}:tde(e)},[Fe]),Ot=(0,p.useCallback)(e=>lt.current===`lanes`?ULe(e):e,[]),kt=(0,p.useCallback)(e=>{let t=ot.current,n=lt.current,r=HLe(e.nodes);if(!r&&!t||r?.groupBy===t&&r?.style===n)return e;let i=ULe(e);return!t||n===`boxes`||t===`domain-system`?i:(ut.current=i,VLe(i,t,{sizeOf:Dt}))},[]),At=(0,p.useMemo)(()=>e.some(e=>rBe.includes(e.type||``)),[e]),jt=(0,p.useMemo)(()=>e.every(e=>xU.includes(e.type||``)),[e]),Mt=(0,p.useMemo)(()=>c===`full`&&e.some(e=>!!e.data?.otherDomain),[e,c]),Nt=(0,p.useRef)({}),{hideChannels:Pt,toggleChannelsVisibility:Ft,hideMessages:It,toggleMessagesVisibility:Lt,setDetailLevel:Rt,isLayingOut:zt,hiddenLegendKeys:Bt,toggleLegendKey:Vt,highlightCrossDomain:Ht,toggleHighlightCrossDomain:Ut}=mze({nodes:be,edges:Ce,setNodes:xe,setEdges:we,hasChannels:wt,hasMessages:Tt,transitionFrom:T,nodeOrigin:nBe,hiddenMessagesGraph:E,prepareEdges:ve,matchesLegendKey:(0,p.useCallback)((e,t)=>{let n=Nt.current[t]?.groupId;return n?e.data?.group?.id===n:e.type===t},[]),initialHiddenLegendKeys:ee,onHiddenLegendKeysChange:te,preferenceScope:ne??y?.split(`/`)[0],ignoreSavedLevel:Et,beforeLayout:Ot,afterLayout:kt}),Wt=(0,p.useCallback)(e=>w?.(e,{nodes:De(),edges:je(),viewport:Me()}),[w,De,je,Me]),Gt=(0,p.useMemo)(()=>{if(Et||!S&&!jt&&!At)return[];let e=e=>{C&&Wt(!1),Rt(e)};return[{description:S??`domains, systems and relationships`,active:C||!S&&jt,disabledReason:!S&&!jt?`Not available here: this diagram has no overview of domains or systems`:void 0,onSelect:()=>{S&&!C&&Wt(!0)}},{description:`services and data stores`,active:!C&&!jt&&(It||!Tt),disabledReason:S||!jt?void 0:`Not available here: this diagram only shows domains, systems and their relationships`,onSelect:()=>e(2)},{description:`messages and channels`,active:!C&&Tt&&!It,disabledReason:C||Tt?void 0:`Not available here: this diagram has no messages or channels`,onSelect:()=>e(3)}]},[S,C,jt,At,Et,It,Tt,Rt,Wt]),Kt=(0,p.useMemo)(()=>Mt?[{label:Ht?`Stop highlighting cross-domain communication`:`Highlight cross-domain communication`,icon:(0,j.jsx)(SD,{className:`w-4 h-4`}),active:Ht,onClick:Ut}]:[],[Mt,Ht,Ut]),qt=(0,p.useRef)(null),Jt=(0,p.useRef)(null),Yt=(0,p.useRef)(null),Xt=(0,p.useRef)(be);Xt.current=be;let Zt=(0,p.useRef)(Ce);Zt.current=Ce;let Qt=(0,p.useRef)(0),$t=(0,p.useRef)(Pt);$t.current=Pt;let en=(0,p.useRef)(``),tn=`${be.map(e=>`${e.id}:${e.type}`).join(`,`)}|${Ce.map(e=>`${e.source}>${e.target}`).join(`,`)}`;tn!==en.current&&(en.current=tn);let nn=en.current,{walkthroughNodes:rn,walkthroughEdges:an}=(0,p.useMemo)(()=>{let e=new Set(be.filter(e=>fBe(e.type)||QV(e)).map(e=>e.id));return{walkthroughNodes:be.filter(t=>!e.has(t.id)),walkthroughEdges:Ce.filter(t=>!e.has(t.source)&&!e.has(t.target))}},[nn]),on=(0,p.useCallback)(()=>{let e=Jt.current;e&&(e.classList.add(`ec-animating-layout`),setTimeout(()=>e.classList.remove(`ec-animating-layout`),400))},[]),sn=(0,p.useCallback)((e,t)=>{let n={x:t.x-80,y:t.y-80,width:t.width+160,height:t.height+160},r=new Set(Oe(n,!0).filter(t=>t.id!==e&&!t.parentId).map(e=>e.id));r.size!==0&&xe(t=>{let i=Kze({nodes:t,movableNodeIds:r,protectedBounds:n,groupNodeId:e});return t.map(e=>{let t=i.get(e.id);return t?{...e,position:t}:e})})},[Oe,xe]),cn=(0,p.useCallback)(n=>{let r=n.target;if(!r.closest(`.ec-collapse-group-btn, .ec-collapse-flow-btn`))return;n.stopPropagation();let i=r.closest(`[data-id]`);if(!i)return;let a=i.getAttribute(`data-id`);if(!a)return;let o=Xt.current,s=Zt.current,c=o.find(e=>e.id===a);if(!c||!fBe(c.type))return;Qt.current++;let l=c.data.__preExpansion,u=l?.node??e.find(e=>e.id===a&&(e.type===`messageGroup`||e.type===`flows`||e.type===`flow`));if(!u)return;let d=l?.edges??t.filter(e=>e.source===a||e.target===a),f=new Set(o.filter(e=>e.parentId===a).map(e=>e.id)),p=u.data,m=new Set(l?l.nodeIds:e.map(e=>e.id)),h=new Set((p.expandedNodes||[]).map(e=>e.id).filter(e=>!m.has(e))),g=e=>e.id.startsWith(`${a}__`);on(),xe(e=>{let t=s.filter(e=>!f.has(e.source)&&!f.has(e.target)&&!g(e)).concat(d),n=new Set;for(let e of t)n.add(e.source),n.add(e.target);return[...e.filter(e=>e.id!==a&&!f.has(e.id)&&!(h.has(e.id)&&!n.has(e.id))).map(e=>{let t=l?.nodePositions?.[e.id];return!t||e.parentId?e:{...e,position:t}}),{...u,position:l?.nodePositions?.[a]??c.position}]}),we(e=>[...e.filter(e=>!f.has(e.source)&&!f.has(e.target)&&!g(e)),...d].map(e=>{let t=l?.edgeRoutes?.[e.id];return t?{...e,data:{...e.data,route:t}}:e}))},[e,t,xe,we,on]);(0,p.useEffect)(()=>{if(v&&e.length>0){let t={};e.forEach(e=>{t[e.id]={x:e.position.x,y:e.position.y}}),$e.current=t}},[v,e]);let ln=(0,p.useCallback)(()=>{if(!v)return;let e=$e.current;Object.keys(e).length!==0&&Xe(Xt.current.some(t=>{let n=e[t.id];return n&&(Math.abs(t.position.x-n.x)>tBe||Math.abs(t.position.y-n.y)>tBe)}))},[v]),un=(0,p.useCallback)(e=>{Se(e),e.some(e=>e.type===`position`&&!e.dragging)&&setTimeout(ln,0)},[Se,ln]),dn=(0,p.useCallback)(()=>{xe(e=>pBe(e,TU)),we(e=>pBe(e,e=>EU(e,ge)))},[xe,we,ge]);(0,p.useEffect)(()=>{if(!ie)return;let e=Xt.current.find(e=>e.id===ie);e&&(xe(e=>e.map(e=>({...e,selected:e.id===ie}))),requestAnimationFrame(()=>{Ee({duration:450,padding:.35,nodes:[e]})}))},[ie,ae,Ee,xe]),(0,p.useEffect)(()=>{oe!=null&&requestAnimationFrame(()=>{Ee({duration:400,padding:.2})})},[oe,Ee]);let fn=(0,p.useCallback)((e,t)=>{if(se){se(t);return}let n=Zt.current.some(e=>e.type===`flow-edge`),r=Xt.current.some(e=>e.type===`entities`),i=(t.type===`flows`||t.type===`flow`)&&Array.isArray(t.data?.expandedNodes)&&t.data.expandedNodes.length>0;if(!((n||r)&&!i)&&!(i&&ot.current)&&!QV(t)&&!(t.type===`domain`||t.type===`domains`)&&!(t.type===`system`||t.type===`systems`)&&t.type!==`context-actor`&&t.type!==`system-group`&&!fBe(t.type)){if(t.type===`messageGroup`){let e=t.data,n=t.id,r=qze(Xt.current,n);if(r?.type===`messageGroupExpanded`){let e=r?.measured,t=e?.width??r.style?.width??380,n=e?.height??r.style?.height??300;Ae(r.position.x+t/2,r.position.y+n/2,{duration:300,zoom:Math.min(Math.max(ke(),.55),1)});return}let i=`${e.service.id}-${e.service.version}`,a=e.messages?.length||0,o=a*190+100,s=Zt.current.filter(e=>e.source===n||e.target===n),c=Xt.current.map(e=>e.id),l=Object.fromEntries(Xt.current.map(e=>[e.id,{...e.position}])),u={id:n,type:`messageGroupExpanded`,position:t.position,data:{groupName:e.groupName,direction:e.direction,messageCount:a,onCollapse:n,__preExpansion:{node:t,edges:s,nodeIds:c,nodePositions:l}},style:{width:380,height:o}},d=(e.messages||[]).map((t,r)=>{let i=t.message;return{id:`${n}__${`${i.data.id}-${i.data.version}`}`,type:i.collection,parentId:n,extent:`parent`,position:{x:70,y:70+r*190},data:{mode:e.mode||`simple`,message:{...i.data}}}}),f=new Map;for(let t of e.messages||[]){let e=t.message,r=`${e.data.id}-${e.data.version}`;f.set(r,`${n}__${r}`)}let p=wBe(e,n,i,f),m=$t.current?new Set((e.expandedNodes||[]).filter(e=>e.type===`channels`).map(e=>e.id)):new Set,h=(e.expandedNodes||[]).filter(e=>!m.has(e.id)),g=new Set,_=(e.expandedEdges||[]).map(e=>({...e,type:`animated`,source:f.get(e.source)||e.source,target:f.get(e.target)||e.target,id:`${n}__${e.id}`})).filter(e=>!(g.has(e.id)||(g.add(e.id),m.has(e.source)||m.has(e.target))));on(),xe(r=>{let i=e.direction===`sends`?t.position.x+380+260:t.position.x-420,a=t.position.y+40;return Jze({currentNodes:r,groupNodeId:n,expandedContainerNode:u,childNodes:d,downstreamNodes:h,getDownstreamPosition:(e,t)=>({x:i,y:a+t*190})})}),we(e=>[...e.filter(e=>e.source!==n&&e.target!==n),...ve([...p,..._])]),requestAnimationFrame(()=>{let e={x:t.position.x,y:t.position.y,width:380,height:o};xe(r=>{let i=r.filter(e=>e.parentId===n);if(i.length===0)return r;let a=i.map(e=>{let t=document.querySelector(`[data-id="${e.id}"]`);return{id:e.id,w:t?.offsetWidth??240,h:t?.offsetHeight??120}}),o=50+(a.reduce((e,t)=>e+t.h,0)+25*(a.length-1))+60,s=80;return e={x:t.position.x,y:t.position.y,width:380,height:o},r.map(t=>{if(t.id===n)return e={x:t.position.x,y:t.position.y,width:380,height:o},{...t,style:{...t.style,height:o}};if(t.parentId!==n)return t;let r=a.find(e=>e.id===t.id);if(!r)return t;let i=Math.max(0,(380-r.w)/2),c=s;return s+=r.h+25,{...t,position:{x:i,y:c}}})}),requestAnimationFrame(()=>{let t=De().find(e=>e.id===n),r=t?.measured,i=r?.width??t?.style?.width??380,a=r?.height??t?.style?.height??e.height,o={x:t?.position.x??e.x,y:t?.position.y??e.y,width:i,height:a};sn(n,o),Ae(o.x+i/2,o.y+a/2,{duration:450,zoom:Math.min(Math.max(ke(),.55),1)})})});return}if(i){let e=t.data,n=t.id,r=e.expandedNodes||[],i=e.expandedEdges||[],a=r.map(e=>({...e,parentId:n,extent:`parent`,position:{x:0,y:0}})),o=Zt.current.filter(e=>e.source===n||e.target===n),s=Xt.current.map(e=>e.id),c=Object.fromEntries(Xt.current.filter(e=>!e.parentId).map(e=>[e.id,e.position])),l=Object.fromEntries(Zt.current.filter(e=>e.data?.route).map(e=>[e.id,e.data.route])),u={id:n,type:`flowExpanded`,position:t.position,data:{flowName:e.flow?.name||e.flow?.data?.name,version:e.flow?.version||e.flow?.data?.version,__preExpansion:{node:t,edges:o,nodeIds:s,nodePositions:c,edgeRoutes:l}},style:{background:`transparent`,border:`none`,padding:0,overflow:`visible`}},d=new Set(a.map(e=>e.id)),f=new Set,p=new Set;for(let e of i)d.has(e.target)&&f.add(e.target),d.has(e.source)&&p.add(e.source);let m=a.map(e=>e.id).filter(e=>!f.has(e)),h=a.map(e=>e.id).filter(e=>!p.has(e)),g=Zt.current,_=g.filter(e=>e.target===n),v=g.filter(e=>e.source===n),y=[];for(let e of _)for(let t of m.length>0?m:[n])y.push({...e,id:`${e.id}__to__${t}`,target:t});let b=[];for(let e of v)for(let t of h.length>0?h:[n])b.push({...e,id:`${e.id}__from__${t}`,source:t});let x=++Qt.current,S=Xt.current;UE({nodes:[...S.filter(e=>e.id!==n),u,...a],edges:[...g.filter(e=>e.source!==n&&e.target!==n),...i,...y,...b]}).then(e=>{x===Qt.current&&(on(),xe(e.nodes),we(e.edges),Ee({duration:400,padding:.2}))});return}o&&le||(rt(t.id),tt(!0))}},[se,o,le,sn,De,ke,Ae,ve]),pn=(0,p.useCallback)(()=>{_e(e=>{let t=!e;return localStorage.setItem(gze,JSON.stringify(t)),t})},[]),mn=(0,p.useCallback)(()=>{Ee({...XH,duration:400})},[Ee]);(0,p.useEffect)(()=>{_e(_ze({disabled:x,animated:b,nodeCount:e.length}))},[b,x,e.length]);let hn=(0,p.useRef)(ge);(0,p.useEffect)(()=>{hn.current!==ge&&(hn.current=ge,we(e=>aU(e,ge)))},[ge]),(0,p.useEffect)(()=>{T||setTimeout(()=>{Ee({maxZoom:1,duration:800})},150)},[]);let gn=(0,p.useCallback)(()=>{try{return tze(Xt.current,Zt.current,{includeStyles:!0,direction:`LR`})}catch(e){return console.error(`Error generating mermaid code:`,e),``}},[]);(0,p.useEffect)(()=>{if(h)return;Yt.current||=(()=>{for(let e of[`.docs-layout .overflow-y-auto`,`.overflow-y-auto`,`[style*="overflow-y:auto"]`,`[style*="overflow-y: auto"]`]){let t=document.querySelector(e);if(t)return t}return null})();let e=e=>{if(!e.ctrlKey&&!e.shiftKey&&!e.metaKey){e.preventDefault();let t=Yt.current;t?t.scrollBy({top:e.deltaY,left:e.deltaX,behavior:`instant`}):window.scrollBy({top:e.deltaY,left:e.deltaX,behavior:`instant`})}},t=Jt.current;if(t)return t.addEventListener(`wheel`,e,{passive:!1}),()=>{t.removeEventListener(`wheel`,e)}},[h]);let _n=(0,p.useCallback)(()=>{qt.current?.hideSuggestions(),dn(),Ee({maxZoom:1,duration:800})},[dn,Ee]),vn=(0,p.useCallback)(e=>{fn(null,e)},[fn]),yn=(0,p.useCallback)(()=>{dn(),Ee({maxZoom:1,duration:800})},[dn,Ee]),bn=(0,p.useCallback)((e,t)=>{let n=document.createElement(`a`);n.setAttribute(`download`,`${t||`eventcatalog`}.png`),n.setAttribute(`href`,e),n.click()},[]),xn=(0,p.useCallback)(()=>{window.dispatchEvent(new CustomEvent(`eventcatalog:open-chat`))},[]),Sn=(0,p.useCallback)(async()=>{if(!y||!ue||ot.current)return!1;let e={};return Xt.current.forEach(t=>{QV(t)||(e[t.id]={x:t.position.x,y:t.position.y})}),await ue(y,e)},[y,ue]),Cn=(0,p.useCallback)(async()=>{let{detail:e,overview:t,hiddenMessages:r}=pe,i=Gt.findIndex(e=>e.active)+1||3,a={nodes:De().filter(e=>!e.hidden),edges:je().filter(e=>!e.hidden)},o=new Map(e.nodes.map(e=>[e.id,e])),s=i===3?bBe(a.nodes,a.edges,e=>{let t=Pe(e.id);return{position:t?.internals.positionAbsolute??e.position,width:t?.measured.width??e.width??0,height:t?.measured.height??e.height??0}}):bBe(e.nodes,e.edges,e=>{let t={...e.position};for(let n=e.parentId&&o.get(e.parentId);n;n=n.parentId&&o.get(n.parentId))t.x+=n.position.x,t.y+=n.position.y;return{position:t,...DU(e)}}),c=({nodes:e,edges:t})=>({nodes:e,edges:ve(t)}),l=async()=>{if(i===2)return a;if(r)return c(r);let t=i===3?a:e;return t.nodes.some(qE)?c(await UE(dde(t.nodes,t.edges))):c(t)};return{title:n,level:i,...s,levels:{...(i===1||t)&&{1:i===1?a:c(t)},2:await l()},unavailableLevels:{...Gt[0]?.disabledReason&&{1:Gt[0].disabledReason},...Gt[1]?.disabledReason&&{2:Gt[1].disabledReason}}}},[n,Gt,pe,ve,De,je,Pe]),wn=(0,p.useCallback)(()=>{fe&&pe&&fe({title:n,getSnapshot:Cn})},[fe,pe,n,Cn]),Tn=(0,p.useCallback)(async()=>!y||!de?!1:await de(y),[y,de]),En=(0,p.useCallback)(async()=>{Qe(!0);let e=await Sn();if(Qe(!1),e){let e={};Xt.current.forEach(t=>{e[t.id]={x:t.position.x,y:t.position.y}}),$e.current=e,Xe(!1)}},[Sn]),Dn=(0,p.useCallback)(async()=>{await eU(gn())},[gn]),On=(0,p.useCallback)(async()=>{await eU(typeof window<`u`?window.location.href:``),We(!0),setTimeout(()=>We(!1),2e3)},[]),kn=(0,p.useCallback)(()=>{document.fullscreenElement?document.exitFullscreen():Jt.current?.requestFullscreen().catch(e=>{console.error(`Error attempting to enable full-screen mode: ${e.message} (${e.name})`)})},[]);(0,p.useEffect)(()=>{let e=()=>{Be(!!document.fullscreenElement),setTimeout(()=>{Ee({duration:800})},100)};return document.addEventListener(`fullscreenchange`,e),()=>{document.removeEventListener(`fullscreenchange`,e)}},[Ee]);let An=(0,p.useCallback)(()=>{let{width:e,height:t,viewport:r}=Nze(RC(De(),{nodeLookup:Fe.getState().nodeLookup})),i=document.querySelector(`.react-flow__controls`);i&&(i.style.display=`none`);let a=document.querySelector(`.react-flow__viewport`),o=uU(a);Bj(a,{backgroundColor:`#f1f1f1`,width:e,height:t,style:{width:`${e}px`,height:`${t}px`,transform:`translate(${r.x}px, ${r.y}px) scale(${r.zoom})`}}).then(e=>{bn(e,n)}).finally(()=>{o(),i&&(i.style.display=`block`)})},[De,Fe,bn,n]),jn=(0,p.useRef)(``),Mn=be.map(e=>`${e.id}:${e.type}:${e.data.group?.id||``}`).join(`,`);Mn!==jn.current&&(jn.current=Mn);let Nn=jn.current,Pn=(0,p.useMemo)(()=>qH(be),[Nn]),Fn=(0,p.useRef)(null),In=(0,p.useMemo)(()=>(Fn.current??=qH(e),Object.assign(Fn.current,Pn),Object.fromEntries(Object.entries(Fn.current).filter(([e])=>e in Pn||Bt.includes(e)))),[Pn,Bt]);Nt.current=In;let Ln=(0,p.useRef)(``),Rn=be.map(e=>e.id).join(`,`);Rn!==Ln.current&&(Ln.current=Rn);let zn=Ln.current,Bn=(0,p.useMemo)(()=>be.filter(e=>!QV(e)),[zn]),Vn=(0,p.useMemo)(()=>{let e=[];for(let t of be){let n=Zze(t);n&&e.push({nodeId:t.id,name:n.name,notes:n.notes,nodeType:n.nodeType})}return e},[zn]),Hn=(0,p.useMemo)(()=>Vn.reduce((e,t)=>e+t.notes.length,0),[Vn]),[Un,Wn]=(0,p.useState)([]),Gn=(0,p.useRef)([]),Kn=(0,p.useCallback)((e,t,n=e?[e]:[])=>{if(e===null){dn(),Wn([]),Gn.current=[],Re(null),t&&setTimeout(()=>{Ee({duration:800,padding:.1})},100);return}let r=Xt.current,i=Zt.current;if(!r.find(t=>t.id===e))return;let a=new Set(n),o=new Set;n.slice(1).forEach((e,t)=>{let r=n[t];i.forEach(t=>{t.source===r&&t.target===e&&o.add(t.id)})});let s=i.filter(t=>t.source===e),c=new Set(s.map(e=>e.target)),l=e=>a.has(e.id)||QV(e)?1:c.has(e.id)?.75:.15;xe(r.map(t=>({...t,className:CU(t,t.id===e),style:{...t.style,opacity:l(t)}}))),we(i.map(t=>{let n=t.source===e,r=n||o.has(t.id);return{...t,data:{...t.data,opacity:r?1:.15,animated:n},style:{...t.style,opacity:r?1:.15,strokeWidth:r?3:2},labelStyle:{...t.labelStyle,opacity:r?1:.15},animated:n}})),Wn(n),Gn.current=n;let u=Jt.current?.getBoundingClientRect();if(!u)return;let d=RC([e,...c],{nodeLookup:Fe.getState().nodeLookup}),f=Math.min(mBe,u.height*.35);Ne(nw(d,u.width,u.height-f,.1,.9,.15),{duration:700})},[xe,we,dn,Ne,Fe]),qn=(0,p.useMemo)(()=>Et?FLe.filter(t=>$V(e,t)):[],[Et,e]),Jn=(0,p.useMemo)(()=>Object.fromEntries(qn.map(t=>[t,zLe(e,t)])),[qn,e]),[Yn,Xn]=(0,p.useState)(0),Zn=(0,p.useRef)(0),Qn=(0,p.useCallback)((e,t=lt.current)=>{let n=t===`lanes`&&e===`domain-system`?`domain`:e;if(n===ot.current&&t===lt.current)return;let r=ut.current??{nodes:Xt.current,edges:Zt.current};ut.current=n?r:null,ot.current=n,lt.current=t,at(n),ct(t);let i=++Zn.current,a=e=>{i===Zn.current&&(on(),xe(e.nodes),we(e.edges),Xn(e=>e+1))};n?t===`lanes`&&n!==`domain-system`?a(VLe(r,n,{sizeOf:Dt})):WLe(r,n,{sizeOf:Dt}).then(a):a(r),_Be(n,t)},[on,xe,we,Dt]);(0,p.useEffect)(()=>{if(Yn===0)return;let e=Gn.current;e.length>0?Kn(e[e.length-1],!1,e):(dn(),Ee({duration:400,padding:.1}))},[Yn]);let $n=fue(),er=(0,p.useRef)(!1);(0,p.useEffect)(()=>{if(!$n||er.current)return;er.current=!0;let t=vBe(),n=t.groupBy??re,r=t.style??`boxes`;ILe(n)&&$V(e,n)&&LLe(r)&&Qn(n,r)},[$n]);let tr=!n,nr=tr?yze:vze,rr=tr?xze:bze;return(0,j.jsx)(`div`,{ref:Jt,onClick:cn,className:`w-full h-full bg-[rgb(var(--ec-page-bg))] flex flex-col eventcatalog-visualizer`,style:{width:`100%`,height:`100%`,display:`flex`,flexDirection:`column`},children:(0,j.jsxs)(vB,{value:Jt.current,children:[Ge?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsxs)(`div`,{className:`w-full pr-6 flex space-x-2 justify-between items-center bg-[rgb(var(--ec-page-bg))] border-b border-[rgb(var(--ec-page-border))] p-4`,children:[(0,j.jsx)(`div`,{className:`flex space-x-2 ml-4`,children:(0,j.jsxs)(JA,{children:[(0,j.jsx)(jge,{asChild:!0,children:(0,j.jsxs)(`button`,{className:nr,"aria-label":`Open menu`,children:[n&&(0,j.jsx)(`span`,{className:`text-base font-medium text-[rgb(var(--ec-page-text))] leading-tight`,children:n}),(0,j.jsx)(XE,{className:rr})]})}),(0,j.jsx)(YA,{container:Jt.current,children:(0,j.jsxs)(XA,{className:Sze,sideOffset:0,align:`end`,alignOffset:-180,children:[(0,j.jsx)(Fge,{className:`fill-[rgb(var(--ec-page-bg))] stroke-[rgb(var(--ec-page-border))] stroke-1`}),(0,j.jsx)(Eze,{isMermaidView:Ge,setIsMermaidView:Ke,animateMessages:ge,toggleAnimateMessages:pn,hideAnimateMessages:x,hideChannels:Pt,toggleChannelsVisibility:Ft,hasChannels:wt,hideMessages:It,toggleMessagesVisibility:Lt,hasMessages:Tt,showMinimap:qe,setShowMinimap:Je,handleFitView:mn,searchRef:qt,isChatEnabled:g,openChat:xn,handleCopyArchitectureCode:Dn,handleExportVisual:An,setIsShareModalOpen:He,toggleFullScreen:kn,isDevMode:v,onSaveLayout:it?void 0:Sn,onResetLayout:Tn,onOpenInStudio:fe?wn:void 0})]})})]})}),c===`full`&&u&&(0,j.jsx)(`div`,{className:`flex justify-end items-center gap-2`,children:!Ge&&(0,j.jsx)(`div`,{className:`w-96`,children:(0,j.jsx)(CH,{ref:qt,nodes:Bn,onNodeSelect:vn,onClear:yn})})})]}),(0,j.jsx)(`div`,{className:`flex-1 overflow-hidden relative`,children:(0,j.jsx)(nze,{nodes:be,edges:Ce,maxTextSize:_})})]}):(0,j.jsxs)(yE,{nodeTypes:me,proOptions:m?aBe:void 0,edgeTypes:he,minZoom:.07,nodes:be,edges:Ce,fitView:!T,fitViewOptions:iBe,defaultViewport:T?.viewport,onNodesChange:un,onEdgesChange:Te,onEdgeMouseEnter:vt,onEdgeMouseLeave:yt,connectionLineType:PC.SmoothStep,nodeOrigin:nBe,elevateNodesOnSelect:!1,onNodeClick:fn,onNodeMouseEnter:St,onNodeMouseLeave:Ct,onPaneClick:_n,onMoveStart:ht,onMoveEnd:gt,onNodeDragStart:ht,onNodeDragStop:gt,zoomOnScroll:h,className:`relative${zt?` ec-laying-out`:``}${Mt&&Ht?` ec-highlight-cross-domain`:``}`,children:[(0,j.jsxs)(gT,{position:`top-center`,className:`w-full pr-6 pointer-events-none`,children:[(0,j.jsxs)(`div`,{className:`flex space-x-2 justify-between items-center pointer-events-auto`,children:[(0,j.jsx)(`div`,{className:`flex space-x-2 ml-4`,children:d&&(0,j.jsxs)(JA,{children:[(0,j.jsx)(jge,{asChild:!0,children:(0,j.jsxs)(`button`,{className:nr,"aria-label":`Open menu`,children:[n&&(0,j.jsx)(`span`,{className:`text-base font-medium text-[rgb(var(--ec-page-text))] leading-tight`,children:n}),(0,j.jsx)(XE,{className:rr})]})}),(0,j.jsx)(YA,{container:Jt.current,children:(0,j.jsxs)(XA,{className:`min-w-56 bg-[rgb(var(--ec-page-bg))] border border-[rgb(var(--ec-page-border))] rounded-lg shadow-xl z-50 py-1.5`,sideOffset:0,align:`end`,alignOffset:-180,children:[(0,j.jsx)(Fge,{className:`fill-[rgb(var(--ec-page-bg))] stroke-[rgb(var(--ec-page-border))] stroke-1`}),(0,j.jsx)(Eze,{isMermaidView:Ge,setIsMermaidView:Ke,animateMessages:ge,toggleAnimateMessages:pn,hideAnimateMessages:x,hideChannels:Pt,toggleChannelsVisibility:Ft,hasChannels:wt,hideMessages:It,toggleMessagesVisibility:Lt,hasMessages:Tt,showMinimap:qe,setShowMinimap:Je,handleFitView:mn,searchRef:qt,isChatEnabled:g,openChat:xn,handleCopyArchitectureCode:Dn,handleExportVisual:An,setIsShareModalOpen:He,toggleFullScreen:kn,isDevMode:v,onSaveLayout:it?void 0:Sn,onResetLayout:Tn,notesCount:Hn,onOpenNotes:pt,onOpenInStudio:fe?wn:void 0})]})})]})}),c===`full`&&u&&(0,j.jsx)(`div`,{className:`flex justify-end items-center gap-2`,children:!Ge&&(0,j.jsx)(`div`,{className:f?`w-60`:`w-96`,children:(0,j.jsx)(CH,{ref:qt,nodes:Bn,onNodeSelect:vn,onClear:yn})})})]}),s.length>0&&(0,j.jsx)(`div`,{className:`flex justify-end mt-3`,children:(0,j.jsxs)(`div`,{className:`relative flex items-center -mt-1`,children:[(0,j.jsx)(`span`,{className:`absolute left-2 pointer-events-none flex items-center h-full`,children:(0,j.jsx)(Mde,{className:`h-4 w-4 text-[rgb(var(--ec-page-text-muted))]`})}),(0,j.jsx)(`select`,{value:s.find(e=>window.location.href.includes(e.url))?.url||s[0].url,onChange:e=>{le?le(e.target.value):window.location.href=e.target.value},className:`appearance-none pl-7 pr-6 py-0 text-[14px] bg-[rgb(var(--ec-card-bg))] text-[rgb(var(--ec-page-text))] rounded-md border border-[rgb(var(--ec-page-border))] hover:bg-[rgb(var(--ec-page-border)/0.5)] focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-[rgb(var(--ec-accent))]`,style:{minWidth:120,height:`26px`},children:s.map(e=>(0,j.jsx)(`option`,{value:e.url,children:e.label},e.url))}),(0,j.jsx)(`span`,{className:`absolute right-2 pointer-events-none`,children:(0,j.jsx)(`svg`,{className:`w-4 h-4 text-[rgb(var(--ec-page-text-muted))]`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,viewBox:`0 0 24 24`,children:(0,j.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M19 9l-7 7-7-7`})})})]})})]}),r&&(0,j.jsx)(GRe,{}),r&&(0,j.jsx)(Cue,{}),c===`full`&&(0,j.jsx)(LRe,{levels:Gt,tools:Kt,animateMessages:ge,toggleAnimateMessages:pn,hideAnimateMessages:x||Ce.length===0,showMinimap:qe,setShowMinimap:Je,handleFitView:mn}),qe&&(0,j.jsx)(Iue,{nodeStrokeWidth:3,zoomable:!0,pannable:!0,style:cBe}),qn.length>0&&(0,j.jsx)(gT,{position:`top-right`,style:c===`full`&&u?yBe:void 0,children:(0,j.jsx)(VH,{options:qn,counts:Jn,value:it,style:st,onChange:Qn})}),Et&&l&&(0,j.jsx)(NRe,{trail:Un}),Et&&l&&(0,j.jsx)(gT,{position:`bottom-left`,children:(0,j.jsx)(jH,{nodes:rn,edges:an,isFlowVisualization:Et,onStepChange:Kn,mode:c})}),v&&Ye&&!it&&(0,j.jsx)(gT,{position:`bottom-left`,style:Et&&l?lBe:uBe,children:(0,j.jsxs)(`div`,{className:`bg-[rgb(var(--ec-card-bg))] border border-[rgb(var(--ec-page-border))] rounded-lg shadow-md px-3 py-2 flex items-center gap-3`,children:[(0,j.jsx)(`span`,{className:`text-xs text-[rgb(var(--ec-page-text-muted))]`,children:`Layout changed`}),(0,j.jsx)(`button`,{onClick:En,disabled:Ze,className:`text-xs font-medium text-white bg-[rgb(var(--ec-accent))] hover:bg-[rgb(var(--ec-accent-hover))] px-2 py-1 rounded transition-colors disabled:opacity-50`,children:Ze?`Saving...`:`Save`})]})}),a&&(0,j.jsx)(YH,{legend:In,hiddenKeys:Bt,showMinimap:qe,onLegendClick:Vt})]}),(0,j.jsx)(WRe,{isOpen:et,onClose:()=>{tt(!1)},initialNodeId:nt,nodes:be,edges:Ce,nodeTypes:me,edgeTypes:he}),(0,j.jsx)(eBe,{noteGroups:Vn,isOpen:dt,onClose:()=>ft(!1),nodes:be}),Ve&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`div`,{className:`fixed inset-0 bg-black/20 z-40`,onClick:()=>He(!1),style:{animation:`fadeIn 150ms ease-out`}}),(0,j.jsxs)(`div`,{className:`fixed top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 bg-[rgb(var(--ec-page-bg))] rounded-lg shadow-xl z-50 w-full max-w-md p-6 border border-[rgb(var(--ec-page-border))]`,style:{animation:`slideInCenter 250ms ease-out`},children:[(0,j.jsx)(`style`,{children:`
207
+ event`:t===`commands`||t===`queries`?`accepts`:`subscribed by`,CBe=(e,t,n)=>{let r=new Map;for(let e of n)r.has(e.source)||r.set(e.source,[]),r.get(e.source).push(e.target);let i=new Set([e]),a=[e];for(;a.length>0;){let e=a.shift();for(let n of r.get(e)||[]){if(n===t)return!0;i.has(n)||(i.add(n),a.push(n))}}return!1},wBe=(e,t,n,r)=>{let i=e.expandedEdges||[];return(e.messages||[]).map(t=>{let a=t.message,o=`${a.data.id}-${a.data.version}`,s=r.get(o),c=a.collection||`events`,l=SBe(e.direction,c);return e.direction===`sends`?{id:`${n}-to-${s}`,source:n,target:s,label:l,type:`animated`,style:xBe,markerEnd:OU}:CBe(o,n,i)?null:{id:`${s}-to-${n}`,source:s,target:n,label:l,type:`animated`,style:xBe,markerEnd:OU}}).filter(Boolean)},TBe=({nodes:e,edges:t,title:n,includeBackground:r=!0,linkTo:i=`docs`,includeKey:a=!0,linksToVisualiser:o=!1,links:s=[],mode:c=`full`,showFlowWalkthrough:l=!0,showSearch:u=!0,showMenu:d=!0,compactSearch:f=!1,hideAttribution:m=!1,zoomOnScroll:h=!1,isChatEnabled:g=!1,maxTextSize:_,isDevMode:v=!1,resourceKey:y,animated:b,disableMessageAnimation:x=!1,overviewLabel:S,isOverview:C=!1,onShowOverview:w,transitionFrom:T,hiddenMessagesGraph:E,initialHiddenLegendKeys:ee,onHiddenLegendKeysChange:te,preferenceScope:ne,swimlanes:re,focusNodeId:ie,focusRequestId:ae,fitRequestId:oe,onNodeClick:se,onBuildUrl:ce,onNavigate:le,onSaveLayout:ue,onResetLayout:de,onOpenInStudio:fe,studioGraphs:pe})=>{(0,p.useEffect)(()=>{ce&&rIe(ce)},[]);let me=(0,p.useMemo)(()=>{let e=e=>{let t=t=>{let n=t.data?.contextMenu;return n?.length?(0,j.jsx)(Dze,{items:n,children:(0,j.jsx)(e,{...t})}):(0,j.jsx)(e,{...t})};return t.displayName=`WithContextMenu(${e.displayName||e.name||`Component`})`,t},t=e=>(0,j.jsx)(lB,{...e,readOnly:!0});t.displayName=`ReadOnlyNoteNode`;let n={...Object.fromEntries(Object.entries(sH).map(([t,n])=>[t,iRe.has(t)?e(n):n])),note:t};return Object.fromEntries(Object.entries(n).map(([e,t])=>[e,Aze(t)]))},[]),he=(0,p.useMemo)(()=>({animated:gRe,multiline:_H,"flow-edge":yRe,default:bRe,smoothstep:yH,step:xRe}),[]),[ge,_e]=(0,p.useState)(()=>_ze({disabled:x,animated:b,nodeCount:e.length})),ve=(0,p.useCallback)(e=>aU(e,ge),[ge]),[ye]=(0,p.useState)(()=>ve(t)),[be,xe,Se]=due(e),[Ce,we,Te]=bE(ye),{fitView:Ee,getNodes:De,getIntersectingNodes:Oe,getZoom:ke,setCenter:Ae,getEdges:je,getViewport:Me,setViewport:Ne,getInternalNode:Pe}=OT(),Fe=dT(),Ie=(0,p.useRef)({nodes:e,edges:t});(0,p.useEffect)(()=>{let n=Ie.current;Ie.current={nodes:e,edges:t},!(n.nodes===e&&n.edges===t)&&(xe(e),we(ve(t)),requestAnimationFrame(()=>{Ee({duration:300,padding:.2})}))},[e,t,xe,we,Ee,ve]);let[Le,Re]=(0,p.useState)(null),[ze,Be]=(0,p.useState)(!1),[Ve,He]=(0,p.useState)(!1),[Ue,We]=(0,p.useState)(!1),[Ge,Ke]=(0,p.useState)(!1),[qe,Je]=(0,p.useState)(!1),[Ye,Xe]=(0,p.useState)(!1),[Ze,Qe]=(0,p.useState)(!1),$e=(0,p.useRef)({}),[et,tt]=(0,p.useState)(!1),[nt,rt]=(0,p.useState)(null),[it,at]=(0,p.useState)(null),ot=(0,p.useRef)(null),[st,ct]=(0,p.useState)(`boxes`),lt=(0,p.useRef)(`boxes`),ut=(0,p.useRef)(null),[dt,ft]=(0,p.useState)(!1),pt=(0,p.useCallback)(()=>ft(!0),[]),mt=(0,p.useRef)(0),ht=(0,p.useCallback)(()=>{mt.current+=1,mt.current===1&&(Jt.current?.classList.add(`ec-interaction-active`),jze(Jt.current,!0))},[]),gt=(0,p.useCallback)(()=>{mt.current=Math.max(0,mt.current-1),mt.current===0&&(Jt.current?.classList.remove(`ec-interaction-active`),jze(Jt.current,!1))},[]),_t=(0,p.useRef)([]),vt=(0,p.useCallback)((e,t)=>{let n=Jt.current;if(!n)return;let r=n.querySelectorAll(`[data-id="${t.source}"], [data-id="${t.target}"]`);r.forEach(e=>e.classList.add(`ec-edge-hover-node`)),_t.current=Array.from(r)},[]),yt=(0,p.useCallback)(()=>{_t.current.forEach(e=>e.classList.remove(`ec-edge-hover-node`)),_t.current=[]},[]),bt=(0,p.useRef)([]),xt=(0,p.useRef)([]),St=(0,p.useCallback)((e,t)=>{let n=Jt.current;if(!n)return;let r=new Set,i=[];for(let e of Zt.current){if(e.source!==t.id&&e.target!==t.id)continue;let a=n.querySelector(`.react-flow__edge[data-id="${e.id}"]`);a&&(a.classList.add(`ec-node-hover-edge`),i.push(a)),e.source!==t.id&&r.add(e.source),e.target!==t.id&&r.add(e.target)}bt.current=i,r.add(t.id);let a=Array.from(r).map(e=>`[data-id="${e}"]`).join(`, `);if(a){let e=n.querySelectorAll(a);e.forEach(e=>e.classList.add(`ec-edge-hover-node`)),xt.current=Array.from(e)}},[]),Ct=(0,p.useCallback)(()=>{bt.current.forEach(e=>e.classList.remove(`ec-node-hover-edge`)),bt.current=[],xt.current.forEach(e=>e.classList.remove(`ec-edge-hover-node`)),xt.current=[]},[]),wt=(0,p.useMemo)(()=>e.some(e=>e.type===`channels`),[e]),Tt=(0,p.useMemo)(()=>e.some(WE),[e]),Et=(0,p.useMemo)(()=>t.some(e=>e.type===`flow-edge`),[t]),Dt=(0,p.useCallback)(e=>{let t=Fe.getState().nodeLookup.get(e.id)?.measured;return t?.width&&t?.height?{width:t.width,height:t.height}:tde(e)},[Fe]),Ot=(0,p.useCallback)(e=>lt.current===`lanes`?ULe(e):e,[]),kt=(0,p.useCallback)(e=>{let t=ot.current,n=lt.current,r=HLe(e.nodes);if(!r&&!t||r?.groupBy===t&&r?.style===n)return e;let i=ULe(e);return!t||n===`boxes`||t===`domain-system`?i:(ut.current=i,VLe(i,t,{sizeOf:Dt}))},[]),At=(0,p.useMemo)(()=>e.some(e=>rBe.includes(e.type||``)),[e]),jt=(0,p.useMemo)(()=>e.every(e=>xU.includes(e.type||``)),[e]),Mt=(0,p.useMemo)(()=>c===`full`&&e.some(e=>!!e.data?.otherDomain),[e,c]),Nt=(0,p.useRef)({}),{hideChannels:Pt,toggleChannelsVisibility:Ft,hideMessages:It,toggleMessagesVisibility:Lt,setDetailLevel:Rt,isLayingOut:zt,hiddenLegendKeys:Bt,toggleLegendKey:Vt,highlightCrossDomain:Ht,toggleHighlightCrossDomain:Ut}=mze({nodes:be,edges:Ce,setNodes:xe,setEdges:we,hasChannels:wt,hasMessages:Tt,transitionFrom:T,nodeOrigin:nBe,hiddenMessagesGraph:E,prepareEdges:ve,matchesLegendKey:(0,p.useCallback)((e,t)=>{let n=Nt.current[t]?.groupId;return n?e.data?.group?.id===n:e.type===t},[]),initialHiddenLegendKeys:ee,onHiddenLegendKeysChange:te,preferenceScope:ne??y?.split(`/`)[0],ignoreSavedLevel:Et,beforeLayout:Ot,afterLayout:kt}),Wt=(0,p.useCallback)(e=>w?.(e,{nodes:De(),edges:je(),viewport:Me()}),[w,De,je,Me]),Gt=(0,p.useMemo)(()=>{if(Et||!S&&!jt&&!At)return[];let e=e=>{C&&Wt(!1),Rt(e)};return[{description:S??`domains, systems and relationships`,active:C||!S&&jt,disabledReason:!S&&!jt?`Not available here: this diagram has no overview of domains or systems`:void 0,onSelect:()=>{S&&!C&&Wt(!0)}},{description:`services and data stores`,active:!C&&!jt&&(It||!Tt),disabledReason:S||!jt?void 0:`Not available here: this diagram only shows domains, systems and their relationships`,onSelect:()=>e(2)},{description:`messages and channels`,active:!C&&Tt&&!It,disabledReason:C||Tt?void 0:`Not available here: this diagram has no messages or channels`,onSelect:()=>e(3)}]},[S,C,jt,At,Et,It,Tt,Rt,Wt]),Kt=(0,p.useMemo)(()=>Mt?[{label:Ht?`Stop highlighting cross-domain communication`:`Highlight cross-domain communication`,icon:(0,j.jsx)(SD,{className:`w-4 h-4`}),active:Ht,onClick:Ut}]:[],[Mt,Ht,Ut]),qt=(0,p.useRef)(null),Jt=(0,p.useRef)(null),Yt=(0,p.useRef)(null),Xt=(0,p.useRef)(be);Xt.current=be;let Zt=(0,p.useRef)(Ce);Zt.current=Ce;let Qt=(0,p.useRef)(0),$t=(0,p.useRef)(Pt);$t.current=Pt;let en=(0,p.useRef)(``),tn=`${be.map(e=>`${e.id}:${e.type}`).join(`,`)}|${Ce.map(e=>`${e.source}>${e.target}`).join(`,`)}`;tn!==en.current&&(en.current=tn);let nn=en.current,{walkthroughNodes:rn,walkthroughEdges:an}=(0,p.useMemo)(()=>{let e=new Set(be.filter(e=>fBe(e.type)||QV(e)).map(e=>e.id));return{walkthroughNodes:be.filter(t=>!e.has(t.id)),walkthroughEdges:Ce.filter(t=>!e.has(t.source)&&!e.has(t.target))}},[nn]),on=(0,p.useCallback)(()=>{let e=Jt.current;e&&(e.classList.add(`ec-animating-layout`),setTimeout(()=>e.classList.remove(`ec-animating-layout`),400))},[]),sn=(0,p.useCallback)((e,t)=>{let n={x:t.x-80,y:t.y-80,width:t.width+160,height:t.height+160},r=new Set(Oe(n,!0).filter(t=>t.id!==e&&!t.parentId).map(e=>e.id));r.size!==0&&xe(t=>{let i=Kze({nodes:t,movableNodeIds:r,protectedBounds:n,groupNodeId:e});return t.map(e=>{let t=i.get(e.id);return t?{...e,position:t}:e})})},[Oe,xe]),cn=(0,p.useCallback)(n=>{let r=n.target;if(!r.closest(`.ec-collapse-group-btn, .ec-collapse-flow-btn`))return;n.stopPropagation();let i=r.closest(`[data-id]`);if(!i)return;let a=i.getAttribute(`data-id`);if(!a)return;let o=Xt.current,s=Zt.current,c=o.find(e=>e.id===a);if(!c||!fBe(c.type))return;Qt.current++;let l=c.data.__preExpansion,u=l?.node??e.find(e=>e.id===a&&(e.type===`messageGroup`||e.type===`flows`||e.type===`flow`));if(!u)return;let d=l?.edges??t.filter(e=>e.source===a||e.target===a),f=new Set(o.filter(e=>e.parentId===a).map(e=>e.id)),p=u.data,m=new Set(l?l.nodeIds:e.map(e=>e.id)),h=new Set((p.expandedNodes||[]).map(e=>e.id).filter(e=>!m.has(e))),g=e=>e.id.startsWith(`${a}__`);on(),xe(e=>{let t=s.filter(e=>!f.has(e.source)&&!f.has(e.target)&&!g(e)).concat(d),n=new Set;for(let e of t)n.add(e.source),n.add(e.target);return[...e.filter(e=>e.id!==a&&!f.has(e.id)&&!(h.has(e.id)&&!n.has(e.id))).map(e=>{let t=l?.nodePositions?.[e.id];return!t||e.parentId?e:{...e,position:t}}),{...u,position:l?.nodePositions?.[a]??c.position}]}),we(e=>[...e.filter(e=>!f.has(e.source)&&!f.has(e.target)&&!g(e)),...d].map(e=>{let t=l?.edgeRoutes?.[e.id];return t?{...e,data:{...e.data,route:t}}:e}))},[e,t,xe,we,on]);(0,p.useEffect)(()=>{if(v&&e.length>0){let t={};e.forEach(e=>{t[e.id]={x:e.position.x,y:e.position.y}}),$e.current=t}},[v,e]);let ln=(0,p.useCallback)(()=>{if(!v)return;let e=$e.current;Object.keys(e).length!==0&&Xe(Xt.current.some(t=>{let n=e[t.id];return n&&(Math.abs(t.position.x-n.x)>tBe||Math.abs(t.position.y-n.y)>tBe)}))},[v]),un=(0,p.useCallback)(e=>{Se(e),e.some(e=>e.type===`position`&&!e.dragging)&&setTimeout(ln,0)},[Se,ln]),dn=(0,p.useCallback)(()=>{xe(e=>pBe(e,TU)),we(e=>pBe(e,e=>EU(e,ge)))},[xe,we,ge]);(0,p.useEffect)(()=>{if(!ie)return;let e=Xt.current.find(e=>e.id===ie);e&&(xe(e=>e.map(e=>({...e,selected:e.id===ie}))),requestAnimationFrame(()=>{Ee({duration:450,padding:.35,nodes:[e]})}))},[ie,ae,Ee,xe]),(0,p.useEffect)(()=>{oe!=null&&requestAnimationFrame(()=>{Ee({duration:400,padding:.2})})},[oe,Ee]);let fn=(0,p.useCallback)((e,t)=>{if(se){se(t);return}let n=Zt.current.some(e=>e.type===`flow-edge`),r=Xt.current.some(e=>e.type===`entities`),i=(t.type===`flows`||t.type===`flow`)&&Array.isArray(t.data?.expandedNodes)&&t.data.expandedNodes.length>0;if(!((n||r)&&!i)&&!(i&&ot.current)&&!QV(t)&&!(t.type===`domain`||t.type===`domains`)&&!(t.type===`system`||t.type===`systems`)&&t.type!==`context-actor`&&t.type!==`system-group`&&!fBe(t.type)){if(t.type===`messageGroup`){let e=t.data,n=t.id,r=qze(Xt.current,n);if(r?.type===`messageGroupExpanded`){let e=r?.measured,t=e?.width??r.style?.width??380,n=e?.height??r.style?.height??300;Ae(r.position.x+t/2,r.position.y+n/2,{duration:300,zoom:Math.min(Math.max(ke(),.55),1)});return}let i=`${e.service.id}-${e.service.version}`,a=e.messages?.length||0,o=a*190+100,s=Zt.current.filter(e=>e.source===n||e.target===n),c=Xt.current.map(e=>e.id),l=Object.fromEntries(Xt.current.map(e=>[e.id,{...e.position}])),u={id:n,type:`messageGroupExpanded`,position:t.position,data:{groupName:e.groupName,direction:e.direction,messageCount:a,onCollapse:n,__preExpansion:{node:t,edges:s,nodeIds:c,nodePositions:l}},style:{width:380,height:o}},d=(e.messages||[]).map((t,r)=>{let i=t.message;return{id:`${n}__${`${i.data.id}-${i.data.version}`}`,type:i.collection,parentId:n,extent:`parent`,position:{x:70,y:70+r*190},data:{mode:e.mode||`simple`,message:{...i.data}}}}),f=new Map;for(let t of e.messages||[]){let e=t.message,r=`${e.data.id}-${e.data.version}`;f.set(r,`${n}__${r}`)}let p=wBe(e,n,i,f),m=$t.current?new Set((e.expandedNodes||[]).filter(e=>e.type===`channels`).map(e=>e.id)):new Set,h=(e.expandedNodes||[]).filter(e=>!m.has(e.id)),g=new Set,_=(e.expandedEdges||[]).map(e=>({...e,type:`animated`,source:f.get(e.source)||e.source,target:f.get(e.target)||e.target,id:`${n}__${e.id}`})).filter(e=>!(g.has(e.id)||(g.add(e.id),m.has(e.source)||m.has(e.target))));on(),xe(r=>{let i=e.direction===`sends`?t.position.x+380+260:t.position.x-420,a=t.position.y+40;return Jze({currentNodes:r,groupNodeId:n,expandedContainerNode:u,childNodes:d,downstreamNodes:h,getDownstreamPosition:(e,t)=>({x:i,y:a+t*190})})}),we(e=>[...e.filter(e=>e.source!==n&&e.target!==n),...ve([...p,..._])]),requestAnimationFrame(()=>{let e={x:t.position.x,y:t.position.y,width:380,height:o};xe(r=>{let i=r.filter(e=>e.parentId===n);if(i.length===0)return r;let a=i.map(e=>{let t=document.querySelector(`[data-id="${e.id}"]`);return{id:e.id,w:t?.offsetWidth??240,h:t?.offsetHeight??120}}),o=50+(a.reduce((e,t)=>e+t.h,0)+25*(a.length-1))+60,s=80;return e={x:t.position.x,y:t.position.y,width:380,height:o},r.map(t=>{if(t.id===n)return e={x:t.position.x,y:t.position.y,width:380,height:o},{...t,style:{...t.style,height:o}};if(t.parentId!==n)return t;let r=a.find(e=>e.id===t.id);if(!r)return t;let i=Math.max(0,(380-r.w)/2),c=s;return s+=r.h+25,{...t,position:{x:i,y:c}}})}),requestAnimationFrame(()=>{let t=De().find(e=>e.id===n),r=t?.measured,i=r?.width??t?.style?.width??380,a=r?.height??t?.style?.height??e.height,o={x:t?.position.x??e.x,y:t?.position.y??e.y,width:i,height:a};sn(n,o),Ae(o.x+i/2,o.y+a/2,{duration:450,zoom:Math.min(Math.max(ke(),.55),1)})})});return}if(i){let e=t.data,n=t.id,r=e.expandedNodes||[],i=e.expandedEdges||[],a=r.map(e=>({...e,parentId:n,extent:`parent`,position:{x:0,y:0}})),o=Zt.current.filter(e=>e.source===n||e.target===n),s=Xt.current.map(e=>e.id),c=Object.fromEntries(Xt.current.filter(e=>!e.parentId).map(e=>[e.id,e.position])),l=Object.fromEntries(Zt.current.filter(e=>e.data?.route).map(e=>[e.id,e.data.route])),u={id:n,type:`flowExpanded`,position:t.position,data:{flowName:e.flow?.name||e.flow?.data?.name,version:e.flow?.version||e.flow?.data?.version,__preExpansion:{node:t,edges:o,nodeIds:s,nodePositions:c,edgeRoutes:l}},style:{background:`transparent`,border:`none`,padding:0,overflow:`visible`}},d=new Set(a.map(e=>e.id)),f=new Set,p=new Set;for(let e of i)d.has(e.target)&&f.add(e.target),d.has(e.source)&&p.add(e.source);let m=a.map(e=>e.id).filter(e=>!f.has(e)),h=a.map(e=>e.id).filter(e=>!p.has(e)),g=Zt.current,_=g.filter(e=>e.target===n),v=g.filter(e=>e.source===n),y=[];for(let e of _)for(let t of m.length>0?m:[n])y.push({...e,id:`${e.id}__to__${t}`,target:t});let b=[];for(let e of v)for(let t of h.length>0?h:[n])b.push({...e,id:`${e.id}__from__${t}`,source:t});let x=++Qt.current,S=Xt.current;UE({nodes:[...S.filter(e=>e.id!==n),u,...a],edges:[...g.filter(e=>e.source!==n&&e.target!==n),...i,...y,...b]}).then(e=>{x===Qt.current&&(on(),xe(e.nodes),we(e.edges),Ee({duration:400,padding:.2}))});return}o&&le||(rt(t.id),tt(!0))}},[se,o,le,sn,De,ke,Ae,ve]),pn=(0,p.useCallback)(()=>{_e(e=>{let t=!e;return localStorage.setItem(gze,JSON.stringify(t)),t})},[]),mn=(0,p.useCallback)(()=>{Ee({...XH,duration:400})},[Ee]);(0,p.useEffect)(()=>{_e(_ze({disabled:x,animated:b,nodeCount:e.length}))},[b,x,e.length]);let hn=(0,p.useRef)(ge);(0,p.useEffect)(()=>{hn.current!==ge&&(hn.current=ge,we(e=>aU(e,ge)))},[ge]),(0,p.useEffect)(()=>{T||setTimeout(()=>{Ee({maxZoom:1,duration:800})},150)},[]);let gn=(0,p.useCallback)(()=>{try{return tze(Xt.current,Zt.current,{includeStyles:!0,direction:`LR`})}catch(e){return console.error(`Error generating mermaid code:`,e),``}},[]);(0,p.useEffect)(()=>{if(h)return;Yt.current||=(()=>{for(let e of[`.docs-layout .overflow-y-auto`,`.overflow-y-auto`,`[style*="overflow-y:auto"]`,`[style*="overflow-y: auto"]`]){let t=document.querySelector(e);if(t)return t}return null})();let e=e=>{if(!e.ctrlKey&&!e.shiftKey&&!e.metaKey){e.preventDefault();let t=Yt.current;t?t.scrollBy({top:e.deltaY,left:e.deltaX,behavior:`instant`}):window.scrollBy({top:e.deltaY,left:e.deltaX,behavior:`instant`})}},t=Jt.current;if(t)return t.addEventListener(`wheel`,e,{passive:!1}),()=>{t.removeEventListener(`wheel`,e)}},[h]);let _n=(0,p.useCallback)(()=>{qt.current?.hideSuggestions(),dn(),Ee({maxZoom:1,duration:800})},[dn,Ee]),vn=(0,p.useCallback)(e=>{fn(null,e)},[fn]),yn=(0,p.useCallback)(()=>{dn(),Ee({maxZoom:1,duration:800})},[dn,Ee]),bn=(0,p.useCallback)((e,t)=>{let n=document.createElement(`a`);n.setAttribute(`download`,`${t||`eventcatalog`}.png`),n.setAttribute(`href`,e),n.click()},[]),xn=(0,p.useCallback)(()=>{window.dispatchEvent(new CustomEvent(`eventcatalog:open-chat`))},[]),Sn=(0,p.useCallback)(async()=>{if(!y||!ue||ot.current)return!1;let e={};return Xt.current.forEach(t=>{QV(t)||(e[t.id]={x:t.position.x,y:t.position.y})}),await ue(y,e)},[y,ue]),Cn=(0,p.useCallback)(async()=>{let{detail:e,overview:t,hiddenMessages:r}=pe,i=Gt.findIndex(e=>e.active)+1||3,a={nodes:De().filter(e=>!e.hidden),edges:je().filter(e=>!e.hidden)},o=new Map(e.nodes.map(e=>[e.id,e])),s=i===3?bBe(a.nodes,a.edges,e=>{let t=Pe(e.id);return{position:t?.internals.positionAbsolute??e.position,width:t?.measured.width??e.width??0,height:t?.measured.height??e.height??0}}):bBe(e.nodes,e.edges,e=>{let t={...e.position};for(let n=e.parentId&&o.get(e.parentId);n;n=n.parentId&&o.get(n.parentId))t.x+=n.position.x,t.y+=n.position.y;return{position:t,...DU(e)}}),c=({nodes:e,edges:t})=>({nodes:e,edges:ve(t)}),l=async()=>{if(i===2)return a;if(r)return c(r);let t=i===3?a:e;return t.nodes.some(qE)?c(await UE(dde(t.nodes,t.edges))):c(t)};return{title:n,level:i,...s,levels:{...(i===1||t)&&{1:i===1?a:c(t)},2:await l()},unavailableLevels:{...Gt[0]?.disabledReason&&{1:Gt[0].disabledReason},...Gt[1]?.disabledReason&&{2:Gt[1].disabledReason}}}},[n,Gt,pe,ve,De,je,Pe]),wn=(0,p.useCallback)(()=>{fe&&pe&&fe({title:n,getSnapshot:Cn})},[fe,pe,n,Cn]),Tn=(0,p.useCallback)(async()=>!y||!de?!1:await de(y),[y,de]),En=(0,p.useCallback)(async()=>{Qe(!0);let e=await Sn();if(Qe(!1),e){let e={};Xt.current.forEach(t=>{e[t.id]={x:t.position.x,y:t.position.y}}),$e.current=e,Xe(!1)}},[Sn]),Dn=(0,p.useCallback)(async()=>{await eU(gn())},[gn]),On=(0,p.useCallback)(async()=>{await eU(typeof window<`u`?window.location.href:``),We(!0),setTimeout(()=>We(!1),2e3)},[]),kn=(0,p.useCallback)(()=>{document.fullscreenElement?document.exitFullscreen():Jt.current?.requestFullscreen().catch(e=>{console.error(`Error attempting to enable full-screen mode: ${e.message} (${e.name})`)})},[]);(0,p.useEffect)(()=>{let e=()=>{Be(!!document.fullscreenElement),setTimeout(()=>{Ee({duration:800})},100)};return document.addEventListener(`fullscreenchange`,e),()=>{document.removeEventListener(`fullscreenchange`,e)}},[Ee]);let An=(0,p.useCallback)(()=>{let{width:e,height:t,viewport:r}=Nze(RC(De(),{nodeLookup:Fe.getState().nodeLookup})),i=document.querySelector(`.react-flow__controls`);i&&(i.style.display=`none`);let a=document.querySelector(`.react-flow__viewport`),o=uU(a);Bj(a,{backgroundColor:`#f1f1f1`,width:e,height:t,style:{width:`${e}px`,height:`${t}px`,transform:`translate(${r.x}px, ${r.y}px) scale(${r.zoom})`}}).then(e=>{bn(e,n)}).finally(()=>{o(),i&&(i.style.display=`block`)})},[De,Fe,bn,n]),jn=(0,p.useRef)(``),Mn=be.map(e=>`${e.id}:${e.type}:${e.data.group?.id||``}`).join(`,`);Mn!==jn.current&&(jn.current=Mn);let Nn=jn.current,Pn=(0,p.useMemo)(()=>qH(be),[Nn]),Fn=(0,p.useRef)(null),In=(0,p.useMemo)(()=>(Fn.current??=qH(e),Object.assign(Fn.current,Pn),Object.fromEntries(Object.entries(Fn.current).filter(([e])=>e in Pn||Bt.includes(e)))),[Pn,Bt]);Nt.current=In;let Ln=(0,p.useRef)(``),Rn=be.map(e=>e.id).join(`,`);Rn!==Ln.current&&(Ln.current=Rn);let zn=Ln.current,Bn=(0,p.useMemo)(()=>be.filter(e=>!QV(e)),[zn]),Vn=(0,p.useMemo)(()=>{let e=[];for(let t of be){let n=Zze(t);n&&e.push({nodeId:t.id,name:n.name,notes:n.notes,nodeType:n.nodeType})}return e},[zn]),Hn=(0,p.useMemo)(()=>Vn.reduce((e,t)=>e+t.notes.length,0),[Vn]),[Un,Wn]=(0,p.useState)([]),Gn=(0,p.useRef)([]),Kn=(0,p.useCallback)((e,t,n=e?[e]:[])=>{if(e===null){dn(),Wn([]),Gn.current=[],Re(null),t&&setTimeout(()=>{Ee({duration:800,padding:.1})},100);return}let r=Xt.current,i=Zt.current;if(!r.find(t=>t.id===e))return;let a=new Set(n),o=new Set;n.slice(1).forEach((e,t)=>{let r=n[t];i.forEach(t=>{t.source===r&&t.target===e&&o.add(t.id)})});let s=i.filter(t=>t.source===e),c=new Set(s.map(e=>e.target)),l=e=>a.has(e.id)||QV(e)?1:c.has(e.id)?.75:.15;xe(r.map(t=>({...t,className:CU(t,t.id===e),style:{...t.style,opacity:l(t)}}))),we(i.map(t=>{let n=t.source===e,r=n||o.has(t.id);return{...t,data:{...t.data,opacity:r?1:.15,animated:n},style:{...t.style,opacity:r?1:.15,strokeWidth:r?3:2},labelStyle:{...t.labelStyle,opacity:r?1:.15},animated:n}})),Wn(n),Gn.current=n;let u=Jt.current?.getBoundingClientRect();if(!u)return;let d=RC([e,...c],{nodeLookup:Fe.getState().nodeLookup}),f=Math.min(mBe,u.height*.35);Ne(nw(d,u.width,u.height-f,.1,.9,.15),{duration:700})},[xe,we,dn,Ne,Fe]),qn=(0,p.useMemo)(()=>Et?FLe.filter(t=>$V(e,t)):[],[Et,e]),Jn=(0,p.useMemo)(()=>Object.fromEntries(qn.map(t=>[t,zLe(e,t)])),[qn,e]),[Yn,Xn]=(0,p.useState)(0),Zn=(0,p.useRef)(0),Qn=(0,p.useCallback)((e,t=lt.current)=>{let n=t===`lanes`&&e===`domain-system`?`domain`:e;if(n===ot.current&&t===lt.current)return;let r=ut.current??{nodes:Xt.current,edges:Zt.current};ut.current=n?r:null,ot.current=n,lt.current=t,at(n),ct(t);let i=++Zn.current,a=e=>{i===Zn.current&&(on(),xe(e.nodes),we(e.edges),Xn(e=>e+1))};n?t===`lanes`&&n!==`domain-system`?a(VLe(r,n,{sizeOf:Dt})):WLe(r,n,{sizeOf:Dt}).then(a):a(r),_Be(n,t)},[on,xe,we,Dt]);(0,p.useEffect)(()=>{if(Yn===0)return;let e=Gn.current;e.length>0?Kn(e[e.length-1],!1,e):(dn(),Ee({duration:400,padding:.1}))},[Yn]);let $n=fue(),er=(0,p.useRef)(!1);(0,p.useEffect)(()=>{if(!$n||er.current)return;er.current=!0;let t=vBe(),n=t.groupBy??re,r=t.style??`boxes`;ILe(n)&&$V(e,n)&&LLe(r)&&Qn(n,r)},[$n]);let tr=!n,nr=tr?yze:vze,rr=tr?xze:bze;return(0,j.jsx)(`div`,{ref:Jt,onClick:cn,className:`w-full h-full bg-[rgb(var(--ec-page-bg))] flex flex-col eventcatalog-visualizer`,style:{width:`100%`,height:`100%`,display:`flex`,flexDirection:`column`},children:(0,j.jsxs)(vB,{value:Jt.current,children:[Ge?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsxs)(`div`,{className:`w-full pr-6 flex space-x-2 justify-between items-center bg-[rgb(var(--ec-page-bg))] border-b border-[rgb(var(--ec-page-border))] p-4`,children:[(0,j.jsx)(`div`,{className:`flex space-x-2 ml-4`,children:(0,j.jsxs)(JA,{children:[(0,j.jsx)(jge,{asChild:!0,children:(0,j.jsxs)(`button`,{className:nr,"aria-label":`Open menu`,children:[n&&(0,j.jsx)(`span`,{className:`text-base font-medium text-[rgb(var(--ec-page-text))] leading-tight`,children:n}),(0,j.jsx)(XE,{className:rr})]})}),(0,j.jsx)(YA,{container:Jt.current,children:(0,j.jsxs)(XA,{className:Sze,sideOffset:0,align:`end`,alignOffset:-180,children:[(0,j.jsx)(Fge,{className:`fill-[rgb(var(--ec-page-bg))] stroke-[rgb(var(--ec-page-border))] stroke-1`}),(0,j.jsx)(Eze,{isMermaidView:Ge,setIsMermaidView:Ke,animateMessages:ge,toggleAnimateMessages:pn,hideAnimateMessages:x,hideChannels:Pt,toggleChannelsVisibility:Ft,hasChannels:wt,hideMessages:It,toggleMessagesVisibility:Lt,hasMessages:Tt,showMinimap:qe,setShowMinimap:Je,handleFitView:mn,searchRef:qt,isChatEnabled:g,openChat:xn,handleCopyArchitectureCode:Dn,handleExportVisual:An,setIsShareModalOpen:He,toggleFullScreen:kn,isDevMode:v,onSaveLayout:it?void 0:Sn,onResetLayout:Tn,onOpenInStudio:fe?wn:void 0})]})})]})}),c===`full`&&u&&(0,j.jsx)(`div`,{className:`flex justify-end items-center gap-2`,children:!Ge&&(0,j.jsx)(`div`,{className:`w-96`,children:(0,j.jsx)(CH,{ref:qt,nodes:Bn,onNodeSelect:vn,onClear:yn})})})]}),(0,j.jsx)(`div`,{className:`flex-1 overflow-hidden relative`,children:(0,j.jsx)(nze,{nodes:be,edges:Ce,maxTextSize:_})})]}):(0,j.jsxs)(yE,{nodeTypes:me,proOptions:m?aBe:void 0,edgeTypes:he,minZoom:.07,nodes:be,edges:Ce,fitView:!T,fitViewOptions:iBe,defaultViewport:T?.viewport,onNodesChange:un,onEdgesChange:Te,onEdgeMouseEnter:vt,onEdgeMouseLeave:yt,connectionLineType:PC.SmoothStep,nodeOrigin:nBe,elevateNodesOnSelect:!1,onNodeClick:fn,onNodeMouseEnter:St,onNodeMouseLeave:Ct,onPaneClick:_n,onMoveStart:ht,onMoveEnd:gt,onNodeDragStart:ht,onNodeDragStop:gt,zoomOnScroll:h,className:`relative${zt?` ec-laying-out`:``}${Mt&&Ht?` ec-highlight-cross-domain`:``}`,children:[(0,j.jsxs)(gT,{position:`top-center`,className:`w-full pr-6 pointer-events-none`,children:[(0,j.jsxs)(`div`,{className:`flex space-x-2 justify-between items-center pointer-events-auto`,children:[(0,j.jsx)(`div`,{className:`flex space-x-2 ml-4`,children:d&&(0,j.jsxs)(JA,{children:[(0,j.jsx)(jge,{asChild:!0,children:(0,j.jsxs)(`button`,{className:nr,"aria-label":`Open menu`,children:[n&&(0,j.jsx)(`span`,{className:`text-base font-medium text-[rgb(var(--ec-page-text))] leading-tight`,children:n}),(0,j.jsx)(XE,{className:rr})]})}),(0,j.jsx)(YA,{container:Jt.current,children:(0,j.jsxs)(XA,{className:`min-w-56 bg-[rgb(var(--ec-page-bg))] border border-[rgb(var(--ec-page-border))] rounded-lg shadow-xl z-50 py-1.5`,sideOffset:0,align:`end`,alignOffset:-180,children:[(0,j.jsx)(Fge,{className:`fill-[rgb(var(--ec-page-bg))] stroke-[rgb(var(--ec-page-border))] stroke-1`}),(0,j.jsx)(Eze,{isMermaidView:Ge,setIsMermaidView:Ke,animateMessages:ge,toggleAnimateMessages:pn,hideAnimateMessages:x,hideChannels:Pt,toggleChannelsVisibility:Ft,hasChannels:wt,hideMessages:It,toggleMessagesVisibility:Lt,hasMessages:Tt,showMinimap:qe,setShowMinimap:Je,handleFitView:mn,searchRef:qt,isChatEnabled:g,openChat:xn,handleCopyArchitectureCode:Dn,handleExportVisual:An,setIsShareModalOpen:He,toggleFullScreen:kn,isDevMode:v,onSaveLayout:it?void 0:Sn,onResetLayout:Tn,notesCount:Hn,onOpenNotes:pt,onOpenInStudio:fe?wn:void 0})]})})]})}),c===`full`&&u&&(0,j.jsx)(`div`,{className:`flex justify-end items-center gap-2`,children:!Ge&&(0,j.jsx)(`div`,{className:f?`w-60`:`w-96`,children:(0,j.jsx)(CH,{ref:qt,nodes:Bn,onNodeSelect:vn,onClear:yn})})})]}),s.length>0&&(0,j.jsx)(`div`,{className:`flex justify-end mt-3`,children:(0,j.jsxs)(`div`,{className:`relative flex items-center -mt-1`,children:[(0,j.jsx)(`span`,{className:`absolute left-2 pointer-events-none flex items-center h-full`,children:(0,j.jsx)(Mde,{className:`h-4 w-4 text-[rgb(var(--ec-page-text-muted))]`})}),(0,j.jsx)(`select`,{value:s.find(e=>window.location.href.includes(e.url))?.url||s[0].url,onChange:e=>{let t=s.find(t=>t.url===e.target.value)?.url;t&&(le?le(t):window.location.href=t)},className:`appearance-none pl-7 pr-6 py-0 text-[14px] bg-[rgb(var(--ec-card-bg))] text-[rgb(var(--ec-page-text))] rounded-md border border-[rgb(var(--ec-page-border))] hover:bg-[rgb(var(--ec-page-border)/0.5)] focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-[rgb(var(--ec-accent))]`,style:{minWidth:120,height:`26px`},children:s.map(e=>(0,j.jsx)(`option`,{value:e.url,children:e.label},e.url))}),(0,j.jsx)(`span`,{className:`absolute right-2 pointer-events-none`,children:(0,j.jsx)(`svg`,{className:`w-4 h-4 text-[rgb(var(--ec-page-text-muted))]`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,viewBox:`0 0 24 24`,children:(0,j.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M19 9l-7 7-7-7`})})})]})})]}),r&&(0,j.jsx)(GRe,{}),r&&(0,j.jsx)(Cue,{}),c===`full`&&(0,j.jsx)(LRe,{levels:Gt,tools:Kt,animateMessages:ge,toggleAnimateMessages:pn,hideAnimateMessages:x||Ce.length===0,showMinimap:qe,setShowMinimap:Je,handleFitView:mn}),qe&&(0,j.jsx)(Iue,{nodeStrokeWidth:3,zoomable:!0,pannable:!0,style:cBe}),qn.length>0&&(0,j.jsx)(gT,{position:`top-right`,style:c===`full`&&u?yBe:void 0,children:(0,j.jsx)(VH,{options:qn,counts:Jn,value:it,style:st,onChange:Qn})}),Et&&l&&(0,j.jsx)(NRe,{trail:Un}),Et&&l&&(0,j.jsx)(gT,{position:`bottom-left`,children:(0,j.jsx)(jH,{nodes:rn,edges:an,isFlowVisualization:Et,onStepChange:Kn,mode:c})}),v&&Ye&&!it&&(0,j.jsx)(gT,{position:`bottom-left`,style:Et&&l?lBe:uBe,children:(0,j.jsxs)(`div`,{className:`bg-[rgb(var(--ec-card-bg))] border border-[rgb(var(--ec-page-border))] rounded-lg shadow-md px-3 py-2 flex items-center gap-3`,children:[(0,j.jsx)(`span`,{className:`text-xs text-[rgb(var(--ec-page-text-muted))]`,children:`Layout changed`}),(0,j.jsx)(`button`,{onClick:En,disabled:Ze,className:`text-xs font-medium text-white bg-[rgb(var(--ec-accent))] hover:bg-[rgb(var(--ec-accent-hover))] px-2 py-1 rounded transition-colors disabled:opacity-50`,children:Ze?`Saving...`:`Save`})]})}),a&&(0,j.jsx)(YH,{legend:In,hiddenKeys:Bt,showMinimap:qe,onLegendClick:Vt})]}),(0,j.jsx)(WRe,{isOpen:et,onClose:()=>{tt(!1)},initialNodeId:nt,nodes:be,edges:Ce,nodeTypes:me,edgeTypes:he}),(0,j.jsx)(eBe,{noteGroups:Vn,isOpen:dt,onClose:()=>ft(!1),nodes:be}),Ve&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`div`,{className:`fixed inset-0 bg-black/20 z-40`,onClick:()=>He(!1),style:{animation:`fadeIn 150ms ease-out`}}),(0,j.jsxs)(`div`,{className:`fixed top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 bg-[rgb(var(--ec-page-bg))] rounded-lg shadow-xl z-50 w-full max-w-md p-6 border border-[rgb(var(--ec-page-border))]`,style:{animation:`slideInCenter 250ms ease-out`},children:[(0,j.jsx)(`style`,{children:`
208
208
  @keyframes fadeIn {
209
209
  from { opacity: 0; }
210
210
  to { opacity: 1; }
@@ -49,7 +49,9 @@ const stripLikeC4Comments = (content: string) => content.replace(/\/\*[\s\S]*?\*
49
49
  const parseLikeC4Views = (content: string, filePath: string): LikeC4View[] => {
50
50
  const contentWithoutComments = stripLikeC4Comments(content);
51
51
  const viewDeclarationPattern =
52
- /\b(?:(dynamic|deployment)\s+)?view(?:\s+([A-Za-z_][\w.-]*))?(?:\s+of\s+[A-Za-z_][\w.-]*(?:\.[A-Za-z_][\w.-]*)*)?\s*\{/g;
52
+ // `of` names an element, dotted or not (`[\w.-]*` takes the dots: a separate group for each dotted part made the
53
+ // pattern backtrack heavily on a long dotted name without its `{`)
54
+ /\b(?:(dynamic|deployment)\s+)?view(?:\s+([A-Za-z_][\w.-]*))?(?:\s+of\s+[A-Za-z_][\w.-]*)?\s*\{/g;
53
55
  const views: LikeC4View[] = [];
54
56
  let match: RegExpExecArray | null;
55
57
 
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  },
8
8
  "license": "BUSL-1.1",
9
9
  "type": "module",
10
- "version": "5.0.0-beta.34",
10
+ "version": "5.0.0-beta.36",
11
11
  "publishConfig": {
12
12
  "access": "public"
13
13
  },
@@ -140,9 +140,9 @@
140
140
  "y-protocols": "^1.0.7",
141
141
  "yjs": "^13.6.33",
142
142
  "zod": "^4.6.6",
143
- "@eventcatalog/linter": "1.2.0-beta.5",
143
+ "@eventcatalog/linter": "1.2.0-beta.6",
144
144
  "@eventcatalog/sdk": "2.30.0-beta.2",
145
- "@eventcatalog/visualiser": "^5.0.0-beta.8"
145
+ "@eventcatalog/visualiser": "^5.0.0-beta.9"
146
146
  },
147
147
  "devDependencies": {
148
148
  "@astrojs/check": "^0.9.10",