@aact/view 3.0.0-beta.22 → 3.0.0-beta.24

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.
package/README.md CHANGED
@@ -6,11 +6,6 @@ DSL / C4-PUML / model-json source you point `aact check` at is the
6
6
  source of truth; `aact view` renders it as an interactive graph
7
7
  that re-layouts every time you save the file.
8
8
 
9
- > **Status: experimental.** Ships on the `proposal/aact-view`
10
- > branch; not yet on a beta release. Expect rough edges around
11
- > non-default models and watch the CHANGELOG entry when the feature
12
- > graduates.
13
-
14
9
  ## Install
15
10
 
16
11
  `@aact/view` is an optional companion package. Install alongside
@@ -31,6 +26,7 @@ configuration plumbing.
31
26
  npx aact view # uses aact.config.ts in cwd
32
27
  npx aact view --port 4321 # pin port (defaults to 3000 with auto-fallback)
33
28
  npx aact view --no-open # skip auto-opening the browser
29
+ npx aact view --diff main:architecture.dsl
34
30
  ```
35
31
 
36
32
  The console prints a URL with a per-session auth token:
@@ -44,6 +40,12 @@ Open that URL. Saving the source file re-parses through aact-core
44
40
  and pushes the new model over WebSocket — the graph re-layouts in
45
41
  place.
46
42
 
43
+ `--diff <baseline>` loads the baseline once at boot (file path, git
44
+ ref, or stdin with `--diff-format`) and keeps the current side live
45
+ from `aact.config.ts`. The canvas colors changed nodes / relations;
46
+ the right panel shows the diff summary, grouped architectural changes,
47
+ and primitive changes.
48
+
47
49
  ## What you see
48
50
 
49
51
  The canvas follows the Simon Brown C4 reference palette (Person
package/dist/index.d.ts CHANGED
@@ -18,6 +18,14 @@ export interface RunWorkbenchOptions {
18
18
  /** Suppress the automatic browser-open. The URL still prints to
19
19
  * stdout so CI / headless flows can pick it up. */
20
20
  readonly noOpen?: boolean;
21
+ /** Baseline input for diff mode (file path, git ref, or `-`).
22
+ * When set, the workbench loads two models, runs `computeDiff`,
23
+ * and exposes the result on the envelope so the SPA renders a
24
+ * diff overlay. Current side stays the configured source. */
25
+ readonly diffBaseline?: string;
26
+ /** Explicit format hint for the diff baseline — required for
27
+ * stdin input or non-canonical file extensions. */
28
+ readonly diffBaselineFormat?: string;
21
29
  }
22
30
  export interface RunWorkbenchResult {
23
31
  /** `0` when the user quit cleanly; `2` when the server failed to
package/dist/index.js CHANGED
@@ -1,21 +1,55 @@
1
1
  import { randomBytes } from "node:crypto";
2
+ import { analyzeArchitecture, computeDiff, loadBaseline } from "aact";
2
3
  import { loadModelFromConfig } from "./load-model.js";
3
4
  import { startServer } from "./server.js";
4
5
  import { startWatcher } from "./watcher.js";
5
6
  const sourceOf = (config) => typeof config.source === "string" ? config.source : config.source.path;
6
7
  const createAuthToken = () => randomBytes(24).toString("base64url");
8
+ const loadDiffBaseline = async (options) => {
9
+ if (!options.diffBaseline)
10
+ return undefined;
11
+ const result = await loadBaseline({
12
+ arg: options.diffBaseline,
13
+ sideLabel: "baseline",
14
+ ...(options.diffBaselineFormat
15
+ ? { formatOverride: options.diffBaselineFormat }
16
+ : {}),
17
+ });
18
+ return {
19
+ model: result.model,
20
+ source: result.side.source,
21
+ format: result.side.format,
22
+ };
23
+ };
7
24
  /** Build a `ModelEnvelope` from a single in-process loadModel call.
8
25
  * Mirrors the wider `aact model --json` envelope so the SPA can
9
26
  * reuse aact's contract — schemaVersion stays at `1`. */
10
- const buildEnvelope = async (options, aactVersion) => {
27
+ const buildEnvelope = async (options, aactVersion, baseline) => {
11
28
  const startedAt = performance.now();
12
29
  const { model, issues } = await loadModelFromConfig(options.config);
30
+ // Architecture metrics for the optional UI overlay. Same options
31
+ // path as the CLI (`src/cli/commands/analyze.ts`), so the user's
32
+ // `config.analyze.{syncTechnologies, asyncTechnologies, exclude,
33
+ // topN}` flows uniformly between `aact analyze` and the workbench.
34
+ const { report: analysis } = analyzeArchitecture(model, options.config.analyze);
35
+ // Compute diff against the cached baseline when diff mode is on.
36
+ // Reuses the same `computeDiff` the CLI runs — no second pipeline.
37
+ let diff;
38
+ if (baseline) {
39
+ const data = computeDiff(baseline.model, model, { source: baseline.source, format: baseline.format }, { source: sourceOf(options.config), format: options.config.source.type });
40
+ diff = { baselineModel: baseline.model, data };
41
+ }
13
42
  return {
14
43
  schemaVersion: 1,
15
44
  command: "view",
16
45
  ok: true,
17
46
  exitCode: 0,
18
- data: { model, issues: [...issues] },
47
+ data: {
48
+ model,
49
+ issues: [...issues],
50
+ analysis,
51
+ ...(diff ? { diff } : {}),
52
+ },
19
53
  diagnostics: [],
20
54
  meta: {
21
55
  aactVersion,
@@ -64,7 +98,11 @@ export const runWorkbench = async (options) => {
64
98
  let server;
65
99
  try {
66
100
  const authToken = createAuthToken();
67
- const envelope = await buildEnvelope(options, aactVersion);
101
+ // Load the diff baseline once at boot — git refs are immutable
102
+ // and file paths are taken at session start. The watcher only
103
+ // tracks the current side; baseline never reloads.
104
+ const baseline = await loadDiffBaseline(options);
105
+ const envelope = await buildEnvelope(options, aactVersion, baseline);
68
106
  server = await startServer({
69
107
  ...(options.port === undefined ? {} : { port: options.port }),
70
108
  ...(options.noOpen === undefined ? {} : { noOpen: options.noOpen }),
@@ -77,6 +115,10 @@ export const runWorkbench = async (options) => {
77
115
  // eslint-disable-next-line no-console
78
116
  console.log(` open it manually — --no-open suppressed auto-launch`);
79
117
  }
118
+ if (baseline) {
119
+ // eslint-disable-next-line no-console
120
+ console.log(` diff baseline: ${baseline.source} (${baseline.format})`);
121
+ }
80
122
  // eslint-disable-next-line no-console
81
123
  console.log(` watching ${sourceOf(options.config)} for changes (Ctrl-C to stop)`);
82
124
  const watcher = startWatcher({
@@ -84,7 +126,7 @@ export const runWorkbench = async (options) => {
84
126
  onChange: async () => {
85
127
  const startedAt = performance.now();
86
128
  try {
87
- const next = await buildEnvelope(options, aactVersion);
129
+ const next = await buildEnvelope(options, aactVersion, baseline);
88
130
  server?.broadcast(next);
89
131
  // eslint-disable-next-line no-console
90
132
  console.log(` ↻ reloaded (${Object.keys(next.data.model.elements).length} elements, ${next.data.issues.length} issues)`);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/server.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { AnalysisReport, DiffData, Model } from "aact";
1
2
  import { type Listener } from "listhen";
2
3
  import type { ModelLoadResult } from "./load-model.js";
3
4
  /**
@@ -14,6 +15,20 @@ export interface ModelEnvelope {
14
15
  readonly data: {
15
16
  readonly model: ModelLoadResult["model"];
16
17
  readonly issues: readonly ModelLoadResult["issues"][number][];
18
+ /** Architecture metrics from `analyzeArchitecture(model,
19
+ * config.analyze)`. The UI's optional "Analyze" overlay reads
20
+ * this — when disabled, the field is still populated, just
21
+ * hidden. Keeping it on the envelope avoids a second round-trip
22
+ * to compute it from the SPA's worker. */
23
+ readonly analysis: AnalysisReport;
24
+ /** Diff result against the baseline loaded at boot. Present
25
+ * only when `aact view --diff <baseline>` is in effect. The
26
+ * SPA colors current graph nodes/relations and keeps removed
27
+ * baseline-only items visible in the sidebar change list. */
28
+ readonly diff?: {
29
+ readonly baselineModel: Model;
30
+ readonly data: DiffData;
31
+ };
17
32
  };
18
33
  readonly diagnostics: readonly never[];
19
34
  readonly meta: {
package/dist/server.js CHANGED
@@ -90,14 +90,7 @@ export const startServer = async (options) => {
90
90
  }
91
91
  }
92
92
  };
93
- const app = new H3();
94
- app.get("/api/model", (event) => {
95
- const url = parseRequestUrl(event.req.url);
96
- if (!isAuthorized(url, event.req.headers))
97
- return unauthorized();
98
- return current;
99
- });
100
- app.get("/api/ws", defineWebSocketHandler({
93
+ const webSocketHooks = {
101
94
  upgrade(request) {
102
95
  const url = parseRequestUrl(request.url);
103
96
  if (!isAuthorized(url, request.headers))
@@ -116,7 +109,27 @@ export const startServer = async (options) => {
116
109
  error(peer) {
117
110
  peers.delete(peer);
118
111
  },
119
- }));
112
+ };
113
+ const resolveWebSocketHooks = (request) => {
114
+ const url = parseRequestUrl(request.url);
115
+ if (url.pathname !== "/api/ws") {
116
+ return {
117
+ upgrade: () => new Response("Not Found", {
118
+ status: 404,
119
+ headers: { "content-type": "text/plain; charset=utf-8" },
120
+ }),
121
+ };
122
+ }
123
+ return webSocketHooks;
124
+ };
125
+ const app = new H3();
126
+ app.get("/api/model", (event) => {
127
+ const url = parseRequestUrl(event.req.url);
128
+ if (!isAuthorized(url, event.req.headers))
129
+ return unauthorized();
130
+ return current;
131
+ });
132
+ app.get("/api/ws", defineWebSocketHandler(webSocketHooks));
120
133
  // Serve the pre-built Svelte SPA from `dist/ui/`. Resolve each
121
134
  // request path against the bundle dir, fall back to `index.html`
122
135
  // for client-side routes (Svelte Flow drill-down is in-app, but
@@ -174,7 +187,7 @@ export const startServer = async (options) => {
174
187
  showURL: false,
175
188
  qr: false,
176
189
  public: false,
177
- ws: true,
190
+ ws: { resolve: resolveWebSocketHooks },
178
191
  });
179
192
  const url = authUrl(listener.url);
180
193
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{r as e}from"./rolldown-runtime-CkqCuyE9.js";import{$ as t,A as n,B as r,C as i,E as a,F as o,G as s,H as c,J as l,K as u,L as d,M as f,O as p,T as m,W as h,X as g,Y as _,Z as v,_ as y,b,ct as x,et as S,f as C,it as w,j as T,m as E,p as D,q as O,rt as k,tt as A,w as j,x as M,z as N}from"./svelte-DegjF43v.js";import{a as P,c as F,i as ee,n as te,o as I,r as ne,s as L,t as re}from"./xyflow-BjlDntcZ.js";import{t as ie}from"./elk-B440gP8v.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var R=Symbol(`aact-view:actions`),z=p(`<span class="meta svelte-11zjl56"> </span>`),B=p(`<div role="button" tabindex="0"><!> <header class="header svelte-11zjl56"><span class="kind svelte-11zjl56"> </span> <span class="label svelte-11zjl56"> </span> <!></header> <!></div>`);function ae(e,n){S(n,!0);let r=v(R),s={Enterprise:`#0b3b6c`,System:`#1168bd`,Container:`#438dd5`,Component:`#85bbf0`},c=g(()=>s[n.data.kind]??`#94a3b8`),l=e=>{e.target!==e.currentTarget&&!e.target.closest(`.header`)||r?.selectBoundary(n.data.name)},d=e=>{e.stopPropagation(),n.data.canExpand?r?.toggleBoundary(n.data.name,n.data.label):r?.enterBoundary(n.data.name,n.data.label)},p=e=>{if(e.key===`Enter`){r?.selectBoundary(n.data.name);return}e.key===` `&&(e.preventDefault(),n.data.canExpand?r?.toggleBoundary(n.data.name,n.data.label):r?.enterBoundary(n.data.name,n.data.label))};var _=B();let y,b;var x=h(_);I(x,{type:`target`,get position(){return F.Left}});var T=u(x,2),O=h(T),k=h(O);w(O);var A=u(O,2),j=h(A,!0);w(A);var M=u(A,2),P=e=>{var t=z(),r=h(t);w(t),N(()=>m(r,`${n.data.childCount??``} · double-click to ${n.data.canExpand?`expand`:`enter`}`)),a(e,t)};i(M,e=>{n.data.expanded||e(P)}),w(T),I(u(T,2),{type:`source`,get position(){return F.Right}}),w(_),N(()=>{y=E(_,1,`boundary svelte-11zjl56`,null,y,{expanded:n.data.expanded,"is-selected":n.selected}),C(_,`aria-label`,`${n.data.kind} boundary: ${n.data.label}`),b=D(_,``,b,{"--accent":o(c)}),m(k,`${n.data.kind??``} boundary`),m(j,n.data.label)}),f(`click`,_,l),f(`dblclick`,_,d),f(`keydown`,_,p),a(e,_),t()}T([`click`,`dblclick`,`keydown`]);var V=p(`<span class="tech svelte-1okyz27"> </span>`),H=p(`<span class="desc svelte-1okyz27"> </span>`),oe=p(`<div role="button" tabindex="0"><!> <div class="cyl-top svelte-1okyz27" aria-hidden="true"></div> <div class="body svelte-1okyz27"><span class="kind svelte-1okyz27"> </span> <span class="label svelte-1okyz27"> </span> <!> <!></div> <!></div>`);function se(e,n){S(n,!0);let r=v(R),s=g(()=>n.data.external?`#475569`:`#1168bd`);var c=oe();let l,d;var p=h(c);I(p,{type:`target`,get position(){return F.Left}});var _=u(p,4),y=h(_),b=h(y,!0);w(y);var x=u(y,2),C=h(x,!0);w(x);var T=u(x,2),O=e=>{var t=V(),r=h(t);w(t),N(()=>m(r,`[${n.data.technology??``}]`)),a(e,t)};i(T,e=>{n.data.technology&&e(O)});var k=u(T,2),A=e=>{var t=H(),r=h(t,!0);w(t),N(()=>m(r,n.data.description)),a(e,t)};i(k,e=>{n.data.description&&e(A)}),w(_),I(u(_,2),{type:`source`,get position(){return F.Right}}),w(c),N(()=>{l=E(c,1,`db svelte-1okyz27`,null,l,{external:n.data.external,"is-selected":n.selected}),d=D(c,``,d,{"--fill":o(s)}),m(b,n.data.kind),m(C,n.data.label)}),f(`click`,c,()=>r?.selectElement(n.data.name)),f(`keydown`,c,e=>{e.key===`Enter`&&r?.selectElement(n.data.name)}),a(e,c),t()}T([`click`,`keydown`]);var U=p(`<span class="tech svelte-698jog"> </span>`),W=p(`<span class="desc svelte-698jog"> </span>`),G=p(`<div role="button" tabindex="0"><!> <div class="head svelte-698jog"><span class="kind svelte-698jog"> </span></div> <span class="label svelte-698jog"> </span> <!> <!> <!></div>`);function ce(e,n){S(n,!0);let r=v(R),s=(e,t)=>t?`#475569`:e===`System`?`#1168bd`:e===`Container`?`#438dd5`:e===`Component`?`#85bbf0`:`#1168bd`,c=g(()=>s(n.data.kind,n.data.external)),l=g(()=>n.data.kind===`Component`&&!n.data.external?`#0f172a`:`#f8fafc`);var d=G();let p,_;var y=h(d);I(y,{type:`target`,get position(){return F.Left}});var b=u(y,2),x=h(b),C=h(x);w(x),w(b);var T=u(b,2),O=h(T,!0);w(T);var k=u(T,2),A=e=>{var t=U(),r=h(t);w(t),N(()=>m(r,`[${n.data.technology??``}]`)),a(e,t)};i(k,e=>{n.data.technology&&e(A)});var j=u(k,2),M=e=>{var t=W(),r=h(t,!0);w(t),N(()=>m(r,n.data.description)),a(e,t)};i(j,e=>{n.data.description&&e(M)}),I(u(j,2),{type:`source`,get position(){return F.Right}}),w(d),N(()=>{p=E(d,1,`el svelte-698jog`,null,p,{external:n.data.external,"is-selected":n.selected}),_=D(d,``,_,{"--fill":o(c),"--text":o(l)}),m(C,`${n.data.kind??``}${n.data.external?` · external`:``}`),m(O,n.data.label)}),f(`click`,d,()=>r?.selectElement(n.data.name)),f(`keydown`,d,e=>{e.key===`Enter`&&r?.selectElement(n.data.name)}),a(e,d),t()}T([`click`,`keydown`]);var K=p(`<span class="desc svelte-64vle7"> </span>`),le=p(`<div role="button" tabindex="0"><!> <div class="head svelte-64vle7" aria-hidden="true"><svg viewBox="0 0 24 24" class="silhouette svelte-64vle7" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="7" r="4" class="svelte-64vle7"></circle><path d="M4 21c0-4.42 3.58-8 8-8s8 3.58 8 8" class="svelte-64vle7"></path></svg></div> <div class="body svelte-64vle7"><span class="kind svelte-64vle7">Person</span> <span class="label svelte-64vle7"> </span> <!></div> <!></div>`);function ue(e,n){S(n,!0);let r=v(R);var o=le();let s;var c=h(o);I(c,{type:`target`,get position(){return F.Left}});var l=u(c,4),d=u(h(l),2),p=h(d,!0);w(d);var g=u(d,2),_=e=>{var t=K(),r=h(t,!0);w(t),N(()=>m(r,n.data.description)),a(e,t)};i(g,e=>{n.data.description&&e(_)}),w(l),I(u(l,2),{type:`source`,get position(){return F.Right}}),w(o),N(()=>{s=E(o,1,`person svelte-64vle7`,null,s,{external:n.data.external,"is-selected":n.selected}),m(p,n.data.label)}),f(`click`,o,()=>r?.selectElement(n.data.name)),f(`keydown`,o,e=>{e.key===`Enter`&&r?.selectElement(n.data.name)}),a(e,o),t()}T([`click`,`keydown`]);var de=p(`<span class="tech svelte-1s4sqjz"> </span>`),q=p(`<span class="desc svelte-1s4sqjz"> </span>`),J=p(`<div role="button" tabindex="0"><!> <div class="body svelte-1s4sqjz"><span class="kind svelte-1s4sqjz"> </span> <span class="label svelte-1s4sqjz"> </span> <!> <!></div> <!></div>`);function fe(e,n){S(n,!0);let r=v(R),s=g(()=>n.data.external?`#475569`:`#1168bd`);var c=J();let l,d;var p=h(c);I(p,{type:`target`,get position(){return F.Left}});var _=u(p,2),y=h(_),b=h(y,!0);w(y);var x=u(y,2),C=h(x,!0);w(x);var T=u(x,2),O=e=>{var t=de(),r=h(t);w(t),N(()=>m(r,`[${n.data.technology??``}]`)),a(e,t)};i(T,e=>{n.data.technology&&e(O)});var k=u(T,2),A=e=>{var t=q(),r=h(t,!0);w(t),N(()=>m(r,n.data.description)),a(e,t)};i(k,e=>{n.data.description&&e(A)}),w(_),I(u(_,2),{type:`source`,get position(){return F.Right}}),w(c),N(()=>{l=E(c,1,`q svelte-1s4sqjz`,null,l,{external:n.data.external,"is-selected":n.selected}),d=D(c,``,d,{"--fill":o(s)}),m(b,n.data.kind),m(C,n.data.label)}),f(`click`,c,()=>r?.selectElement(n.data.name)),f(`keydown`,c,e=>{e.key===`Enter`&&r?.selectElement(n.data.name)}),a(e,c),t()}T([`click`,`keydown`]);var pe=new(e(ie(),1)).default,me=e=>pe.layout(e),he=220,ge=110,_e=200,ve=130,ye=260,be=160,Y=e=>`e:${e}`,X=e=>`b:${e}`,xe=e=>e===`Person`?{width:_e,height:ve}:{width:he,height:ge},Se=e=>e===`Person`?`person`:e===`SystemDb`||e===`ContainerDb`||e===`ComponentDb`?`database`:e===`SystemQueue`||e===`ContainerQueue`||e===`ComponentQueue`?`queue`:`element`,Ce=e=>({name:e.name,label:e.label,kind:e.kind,description:e.description??``,external:e.external,technology:e.technology??``,tags:e.tags}),we=(e,t)=>({name:e.name,label:e.label,kind:e.kind,childCount:e.elementNames.length+e.boundaryNames.length,expanded:t.expanded,canExpand:t.canExpand}),Te={"elk.algorithm":`layered`,"elk.direction":`RIGHT`,"elk.layered.spacing.nodeNodeBetweenLayers":`90`,"elk.spacing.nodeNode":`50`,"elk.spacing.edgeEdge":`20`,"elk.spacing.edgeNode":`30`,"elk.layered.spacing.edgeEdgeBetweenLayers":`20`,"elk.layered.spacing.edgeNodeBetweenLayers":`30`,"elk.padding":`[top=48, left=44, bottom=44, right=44]`},Ee=(e,t)=>!t||t<=1?e:e?`${e} · ×${t}`:`×${t}`,De=async e=>{let t=e=>({source:e.fromKind===`boundary`?X(e.from):Y(e.from),target:e.toKind===`boundary`?X(e.to):Y(e.to)}),n=await me({id:`root`,layoutOptions:Te,children:[...e.boundaries.map(e=>({id:X(e.name),width:ye,height:be})),...e.elements.map(e=>({id:Y(e.name),...xe(e.kind)}))],edges:e.relations.map((e,n)=>{let{source:r,target:i}=t(e);return{id:`edge-${n}`,sources:[r],targets:[i]}})}),r=[];for(let t of e.boundaries){let e=X(t.name),i=n.children?.find(t=>t.id===e);r.push({id:e,type:`boundary`,position:{x:i?.x??0,y:i?.y??0},data:we(t,{expanded:!1,canExpand:!1}),style:`width: ${i?.width??ye}px; height: ${i?.height??be}px;`})}for(let t of e.elements){let e=Y(t.name),i=n.children?.find(t=>t.id===e),{width:a,height:o}=xe(t.kind);r.push({id:e,type:Se(t.kind),position:{x:i?.x??0,y:i?.y??0},data:Ce(t),style:`width: ${a}px; height: ${o}px;`})}return{nodes:r,edges:e.relations.map((e,n)=>{let{source:r,target:i}=t(e);return{id:`edge-${n}`,source:r,target:i,label:Ee(e.label,e.count),type:`default`,animated:!1,data:{crossBoundary:!0},markerEnd:{type:L.ArrowClosed,width:24,height:24,color:`#cbd5e1`},style:`stroke: #94a3b8; stroke-width: 1.8;`}})}},Oe=e=>{let t=new Map;for(let n of Object.values(e.boundaries)){for(let e of n.boundaryNames)t.set(e,n.name);for(let e of n.elementNames)t.set(e,n.name)}return t},Z=(e,t,n)=>{let r=new Map;for(let e of n)r.set(e,{kind:`element`,name:e});let i=(t,n)=>{for(let e of t.elementNames)r.has(e)||r.set(e,{kind:`boundary`,name:n.name});for(let r of t.boundaryNames){let t=e.boundaries[r];t&&i(t,n)}};for(let n of t){let t=e.boundaries[n];t&&i(t,t)}return r},Q=(e,t)=>{let n=new Map;for(let r of Object.values(e.elements))for(let e of r.relations){let i=t.get(r.name),a=t.get(e.to);if(!i||!a)continue;let o=i.kind===`boundary`?X(i.name):Y(i.name),s=a.kind===`boundary`?X(a.name):Y(a.name);if(o===s)continue;let c=`${o}->${s}`,l=n.get(c);if(l){n.set(c,{...l,count:(l.count??1)+1});continue}n.set(c,{from:i.name,to:a.name,label:i.kind===`boundary`||a.kind===`boundary`?void 0:e.description,fromKind:i.kind,toKind:a.kind,count:1})}return[...n.values()]},ke=(e,t)=>{let n=t[t.length-1]??{kind:`landscape`};if(n.kind===`landscape`){let t=(e.rootBoundaryNames??[]).map(t=>e.boundaries[t]).filter(e=>!!e),n=new Set(t.map(e=>e.name)),r=new Set,i=t=>{for(let e of t.elementNames)r.add(e);for(let n of t.boundaryNames){let t=e.boundaries[n];t&&i(t)}};for(let e of t)i(e);let a=Object.values(e.elements).filter(e=>!r.has(e.name));return{boundaries:t,elements:a,relations:Q(e,Z(e,n,new Set(a.map(e=>e.name))))}}let r=n.name?e.boundaries[n.name]:void 0;if(!r)return{boundaries:[],elements:[],relations:[]};let i=r.elementNames.map(t=>e.elements[t]).filter(e=>!!e),a=r.boundaryNames.map(t=>e.boundaries[t]).filter(e=>!!e);return{boundaries:a,elements:i,relations:Q(e,Z(e,new Set(a.map(e=>e.name)),new Set(i.map(e=>e.name))))}},Ae={...Te,"elk.padding":`[top=96, left=44, bottom=44, right=44]`},je=(e,t,n,r,i)=>{let a=n=>{if(!t.has(n.name))return{id:X(n.name),width:ye,height:be};let r=[];for(let t of n.boundaryNames){let n=e.boundaries[t];n&&r.push(a(n))}for(let t of n.elementNames){let n=e.elements[t];n&&r.push({id:Y(n.name),...xe(n.kind)})}return{id:X(n.name),children:r,layoutOptions:Ae}};return{id:`root`,layoutOptions:{...Te,"elk.hierarchyHandling":`INCLUDE_CHILDREN`},children:[...n.map(a),...r.map(e=>({id:Y(e.name),...xe(e.kind)}))],edges:[...i]}},Me=(e,t,n,r)=>{let i=e,a=t;for(;;){let e=r.get(i);if(e===void 0||n.has(e))return{id:a===`boundary`?X(i):Y(i),kind:a,name:i};i=e,a=`boundary`}},Ne=(e,t,n,r)=>{let i=[];for(let a of e){let e=a.x??0,o=a.y??0,s=a.width??0,c=a.height??0,l=a.id.startsWith(`b:`),u=a.id.slice(2);if(l){let l=t.boundaries[u];if(!l)continue;let d=n.has(u),f={id:a.id,type:`boundary`,position:{x:e,y:o},data:we(l,{expanded:d,canExpand:!0}),style:`width: ${s}px; height: ${c}px;`};r&&(f.parentId=r,f.extent=`parent`),i.push(f),d&&a.children?.length&&i.push(...Ne(a.children,t,n,a.id))}else{let n=t.elements[u];if(!n)continue;let{width:l,height:d}=xe(n.kind),f={id:a.id,type:Se(n.kind),position:{x:e,y:o},data:Ce(n),style:`width: ${s||l}px; height: ${c||d}px;`};r&&(f.parentId=r,f.extent=`parent`),i.push(f)}}return i},Pe=(e,t,n)=>{let r=n.get(e)??null,i=n.get(t)??null;return r===null||i===null||r!==i},Fe=(e,t,n)=>{let r=new Map,i=0;for(let a of Object.values(e.elements))for(let e of a.relations){let o=Me(a.name,`element`,t,n),s=Me(e.to,`element`,t,n);if(o.id===s.id)continue;let c=`${o.id}->${s.id}`,l=Pe(a.name,e.to,n),u=r.get(c);if(u){let e=u.data,t=(e?.relationCount??1)+1;r.set(c,{...u,label:Ee(e?.primaryLabel,t),data:{...e,crossBoundary:!!e?.crossBoundary||l,relationCount:t}});continue}let d=o.kind===`element`&&s.kind===`element`?e.description:void 0;r.set(c,{id:`edge-${i++}`,source:o.id,target:s.id,label:d,type:`default`,animated:!1,data:{crossBoundary:l,primaryLabel:d,relationCount:1},markerEnd:{type:L.ArrowClosed,width:24,height:24,color:`#cbd5e1`},style:`stroke: #94a3b8; stroke-width: 1.8;`})}return[...r.values()]},$=e=>{let t=(e.rootBoundaryNames??[]).map(t=>e.boundaries[t]).filter(e=>!!e),n=new Set,r=t=>{for(let e of t.elementNames)n.add(e);for(let n of t.boundaryNames){let t=e.boundaries[n];t&&r(t)}};for(let e of t)r(e);return{rootBoundaries:t,standalone:Object.values(e.elements).filter(e=>!n.has(e.name))}},Ie=async(e,t)=>{let{rootBoundaries:n,standalone:r}=$(e),i=Fe(e,t,Oe(e));return{nodes:Ne((await me(je(e,t,n,r,i.map(e=>({id:e.id,sources:[e.source],targets:[e.target]}))))).children??[],e,t,void 0),edges:i}},Le=e=>Ie(e,new Set(Object.keys(e.boundaries))),Re=p(`<span class="sep svelte-1r8vfx3" aria-hidden="true">·</span> <span class="workspace svelte-1r8vfx3"> </span>`,1),ze=p(`<span class="sep svelte-1r8vfx3" aria-hidden="true">·</span> <span class="diff-pill svelte-1r8vfx3"> </span>`,1),Be=p(`<span class="bsep svelte-1r8vfx3" aria-hidden="true">/</span>`),Ve=p(`<!> <button class="bcrumb svelte-1r8vfx3"> </button>`,1),He=p(`<nav class="breadcrumb svelte-1r8vfx3" aria-label="Drill path"></nav>`),Ue=p(`<div class="expand-controls svelte-1r8vfx3"><button class="ghost svelte-1r8vfx3">Expand all</button> <button class="ghost svelte-1r8vfx3">Collapse all</button> <span class="hint svelte-1r8vfx3">double-click a boundary to toggle</span></div>`),We=p(`<span class="hint svelte-1r8vfx3">full hierarchy — read-only overview</span>`),Ge=p(`<!> <!> <!>`,1),Ke=p(`<span class="legend-rule svelte-1r8vfx3"></span> <span class="legend-row svelte-1r8vfx3"><span class="swatch svelte-1r8vfx3" style="background: #a1c181;"></span>Added</span> <span class="legend-row svelte-1r8vfx3"><span class="swatch svelte-1r8vfx3" style="background: #dec184;"></span>Modified</span> <span class="legend-row svelte-1r8vfx3"><span class="swatch svelte-1r8vfx3" style="background: #d07277;"></span>Removed</span> <span class="legend-row svelte-1r8vfx3"><span class="swatch svelte-1r8vfx3" style="background: #7dd3fc;"></span>Renamed</span> <span class="legend-row svelte-1r8vfx3"><span class="swatch svelte-1r8vfx3" style="background: #b6a4d7;"></span>Moved</span>`,1),qe=p(`<span> </span>`),Je=p(`<span> </span>`),Ye=p(`<aside class="error-overlay svelte-1r8vfx3" role="status" aria-live="polite"><span class="error-kicker svelte-1r8vfx3"> </span> <p class="svelte-1r8vfx3"> </p> <div class="error-meta svelte-1r8vfx3"><!> <span> </span> <!></div></aside>`),Xe=p(`<p class="tech svelte-1r8vfx3"> </p>`),Ze=p(`<p class="desc svelte-1r8vfx3"> </p>`),Qe=p(`<span class="tag svelte-1r8vfx3"> </span>`),$e=p(`<div class="field svelte-1r8vfx3"><span class="k svelte-1r8vfx3">tags</span> <span class="v"></span></div>`),et=p(`<span class="prop svelte-1r8vfx3"><span class="prop-key svelte-1r8vfx3"> </span> </span>`),tt=p(`<div class="field svelte-1r8vfx3"><span class="k svelte-1r8vfx3">props</span> <span class="v props svelte-1r8vfx3"></span></div>`),nt=p(`<div class="field svelte-1r8vfx3"><span class="k svelte-1r8vfx3">source</span> <span class="v"><a class="svelte-1r8vfx3"> </a></span></div>`),rt=p(`<li class="svelte-1r8vfx3"> </li>`),it=p(`<h4 class="svelte-1r8vfx3">Issues</h4> <ul class="issues svelte-1r8vfx3"></ul>`,1),at=p(`<span class="rdesc svelte-1r8vfx3"> </span>`),ot=p(`<span class="rmeta svelte-1r8vfx3"> </span>`),st=p(`<li class="svelte-1r8vfx3"><span class="arrow svelte-1r8vfx3">→</span> <span class="to svelte-1r8vfx3"> </span> <!> <!></li>`),ct=p(`<h4 class="svelte-1r8vfx3">Outgoing relations</h4> <ul class="relations svelte-1r8vfx3"></ul>`,1),lt=p(`<span class="rdesc svelte-1r8vfx3"> </span>`),ut=p(`<span class="rmeta svelte-1r8vfx3"> </span>`),dt=p(`<li class="svelte-1r8vfx3"><span class="arrow svelte-1r8vfx3">←</span> <span class="to svelte-1r8vfx3"> </span> <!> <!></li>`),ft=p(`<h4 class="svelte-1r8vfx3">Incoming relations</h4> <ul class="relations svelte-1r8vfx3"></ul>`,1),pt=p(`<h2 class="svelte-1r8vfx3"> </h2> <h3 class="title svelte-1r8vfx3"> </h3> <!> <!> <!> <!> <!> <!> <!> <!>`,1),mt=p(`<p class="desc svelte-1r8vfx3"> </p>`),ht=p(`<span class="tag svelte-1r8vfx3"> </span>`),gt=p(`<div class="field svelte-1r8vfx3"><span class="k svelte-1r8vfx3">tags</span> <span class="v"></span></div>`),_t=p(`<span class="prop svelte-1r8vfx3"><span class="prop-key svelte-1r8vfx3"> </span> </span>`),vt=p(`<div class="field svelte-1r8vfx3"><span class="k svelte-1r8vfx3">props</span> <span class="v props svelte-1r8vfx3"></span></div>`),yt=p(`<div class="field svelte-1r8vfx3"><span class="k svelte-1r8vfx3">source</span> <span class="v"><a class="svelte-1r8vfx3"> </a></span></div>`),bt=p(`<li class="svelte-1r8vfx3"> </li>`),xt=p(`<h4 class="svelte-1r8vfx3">Issues</h4> <ul class="issues svelte-1r8vfx3"></ul>`,1),St=p(`<h2 class="svelte-1r8vfx3"> </h2> <h3 class="title svelte-1r8vfx3"> </h3> <!> <div class="field svelte-1r8vfx3"><span class="k svelte-1r8vfx3">children</span> <span class="v"> </span></div> <!> <!> <!> <!> <p class="hint svelte-1r8vfx3"><!></p>`,1),Ct=p(`<li class="change-row svelte-1r8vfx3" style="border-left-color: #38bdf8;"><span class="change-title svelte-1r8vfx3"> </span> <span class="change-subtitle svelte-1r8vfx3"> </span></li>`),wt=p(`<h4 class="svelte-1r8vfx3">Groups</h4> <ul class="change-list svelte-1r8vfx3"></ul>`,1),Tt=p(`<li class="change-row svelte-1r8vfx3"><span class="change-title svelte-1r8vfx3"><span class="change-glyph svelte-1r8vfx3"> </span> </span> <span class="change-subtitle svelte-1r8vfx3"> </span></li>`),Et=p(`<h4 class="svelte-1r8vfx3">Changes</h4> <ul class="change-list svelte-1r8vfx3"></ul>`,1),Dt=p(`<h4 class="svelte-1r8vfx3">Diff</h4> <p class="diff-headline"> </p> <dl class="info-line svelte-1r8vfx3"><div class="svelte-1r8vfx3"><dt class="svelte-1r8vfx3">structural</dt><dd class="svelte-1r8vfx3"> </dd></div> <div class="svelte-1r8vfx3"><dt class="svelte-1r8vfx3">semantic</dt><dd class="svelte-1r8vfx3"> </dd></div> <div class="svelte-1r8vfx3"><dt class="svelte-1r8vfx3">cosmetic</dt><dd class="svelte-1r8vfx3"> </dd></div> <div class="svelte-1r8vfx3"><dt class="svelte-1r8vfx3">total</dt><dd class="svelte-1r8vfx3"> </dd></div></dl> <!> <!>`,1),Ot=p(`<div class="warn svelte-1r8vfx3"><dt class="svelte-1r8vfx3">cycles</dt><dd class="svelte-1r8vfx3"> </dd></div>`),kt=p(`<li class="svelte-1r8vfx3"><span class="k svelte-1r8vfx3"> </span><span class="v svelte-1r8vfx3"> </span></li>`),At=p(`<h4 class="svelte-1r8vfx3">By kind</h4> <ul class="metrics svelte-1r8vfx3"></ul>`,1),jt=p(`<h4 class="warn-h svelte-1r8vfx3">Cycles</h4> <p class="cycle-list svelte-1r8vfx3"><span class="cycle-trail svelte-1r8vfx3"> </span></p>`,1),Mt=p(`<li class="svelte-1r8vfx3"><span class="k svelte-1r8vfx3"> </span><span class="v svelte-1r8vfx3"> </span></li>`),Nt=p(`<h4 class="svelte-1r8vfx3">Top fan-out</h4> <ul class="metrics svelte-1r8vfx3"></ul>`,1),Pt=p(`<li class="svelte-1r8vfx3"><span class="k svelte-1r8vfx3"> </span><span class="v svelte-1r8vfx3"> </span></li>`),Ft=p(`<h4 class="svelte-1r8vfx3">Top fan-in</h4> <ul class="metrics svelte-1r8vfx3"></ul>`,1),It=p(`<h4 class="svelte-1r8vfx3">Metrics</h4> <dl class="info-line svelte-1r8vfx3"><div class="svelte-1r8vfx3"><dt class="svelte-1r8vfx3">elements</dt><dd class="svelte-1r8vfx3"> </dd></div> <div class="svelte-1r8vfx3"><dt class="svelte-1r8vfx3">databases</dt><dd class="svelte-1r8vfx3"> </dd></div> <div class="svelte-1r8vfx3"><dt class="svelte-1r8vfx3">relations</dt><dd class="svelte-1r8vfx3"> </dd></div> <!></dl> <!> <h4 class="svelte-1r8vfx3">Relations by style</h4> <ul class="metrics svelte-1r8vfx3"><li class="svelte-1r8vfx3"><span class="k svelte-1r8vfx3">sync</span><span class="v svelte-1r8vfx3"> </span></li> <li class="svelte-1r8vfx3"><span class="k svelte-1r8vfx3">async</span><span class="v svelte-1r8vfx3"> </span></li> <li class="svelte-1r8vfx3"><span class="k svelte-1r8vfx3">unspecified</span><span class="v svelte-1r8vfx3"> </span></li></ul> <!> <!> <!>`,1),Lt=p(`<p class="desc svelte-1r8vfx3"> </p>`),Rt=p(`<div class="warn svelte-1r8vfx3"><dt class="svelte-1r8vfx3">issues</dt><dd class="svelte-1r8vfx3"> </dd></div>`),zt=p(`<dl class="info-line svelte-1r8vfx3"><div class="svelte-1r8vfx3"><dt class="svelte-1r8vfx3">elements</dt><dd class="svelte-1r8vfx3"> </dd></div> <div class="svelte-1r8vfx3"><dt class="svelte-1r8vfx3">boundaries</dt><dd class="svelte-1r8vfx3"> </dd></div> <div class="svelte-1r8vfx3"><dt class="svelte-1r8vfx3">relations</dt><dd class="svelte-1r8vfx3"> </dd></div> <!></dl>`),Bt=p(`<li class="svelte-1r8vfx3"> </li>`),Vt=p(`<h4 class="svelte-1r8vfx3">Loader issues</h4> <ul class="issues svelte-1r8vfx3"></ul>`,1),Ht=p(`<h4 class="svelte-1r8vfx3">Workspace</h4> <h3 class="title svelte-1r8vfx3"> </h3> <!> <!> <!>`,1),Ut=p(`<p class="hint svelte-1r8vfx3">Loading model…</p>`),Wt=p(`<div class="app svelte-1r8vfx3"><header class="topbar svelte-1r8vfx3"><div class="brand svelte-1r8vfx3"><span class="logo svelte-1r8vfx3">aact</span> <span class="sep svelte-1r8vfx3" aria-hidden="true">·</span> <span class="title svelte-1r8vfx3">view</span> <!> <span><!></span> <!></div> <div class="topbar-controls svelte-1r8vfx3"><div class="modes svelte-1r8vfx3" role="tablist" aria-label="View mode"><button role="tab" title="Replace the canvas with the boundary you double-click">Drill</button> <button role="tab" title="Open boundaries inline — parents stay visible">Expand</button> <button role="tab" title="Render every level of the hierarchy at once">Flat</button></div> <div class="modes edge-modes svelte-1r8vfx3" role="tablist" aria-label="Edge style"><button role="tab" title="Smooth bezier curves">Curve</button> <button role="tab" title="Rounded 90° corners — Structurizr-style">Smooth</button> <button role="tab" title="Sharp 90° corners">Step</button></div> <div class="modes edge-modes svelte-1r8vfx3" role="tablist" aria-label="Edge filter"><button role="tab" title="Show every relation">All</button> <button role="tab" title="Highlight relations that cross a Bounded Context; intra-boundary stays faint">Cross-BC</button></div> <div class="modes analyze-toggle svelte-1r8vfx3" role="tablist" aria-label="Analyze overlay"><button role="tab" title="Highlight cycles on the graph and show architecture metrics in the sidebar">Analyze</button></div></div> <div class="context svelte-1r8vfx3"><!></div></header> <main class="svelte-1r8vfx3"><div class="graph svelte-1r8vfx3"><!> <aside class="legend svelte-1r8vfx3" aria-label="C4 element palette"><span class="legend-row svelte-1r8vfx3"><span class="swatch svelte-1r8vfx3" style="background: #08427b;"></span>Person</span> <span class="legend-row svelte-1r8vfx3"><span class="swatch svelte-1r8vfx3" style="background: #1168bd;"></span>System</span> <span class="legend-row svelte-1r8vfx3"><span class="swatch svelte-1r8vfx3" style="background: #438dd5;"></span>Container</span> <span class="legend-row svelte-1r8vfx3"><span class="swatch svelte-1r8vfx3" style="background: #85bbf0;"></span>Component</span> <span class="legend-row svelte-1r8vfx3"><span class="swatch svelte-1r8vfx3" style="background: #475569;"></span>External</span> <!></aside> <!></div> <aside class="details svelte-1r8vfx3"><!></aside></main></div>`);function Gt(e,p){S(p,!0);let v=`aact-view:edge-style`,T=`aact-view:edge-filter`,j=`aact-view:analyze`,F=typeof localStorage<`u`&&localStorage.getItem(v)||`bezier`,I=typeof localStorage<`u`&&localStorage.getItem(T)||`all`,ie=typeof localStorage<`u`&&localStorage.getItem(j)===`on`,z=_(null),B=_(`drill`),V=_(O(F)),H=_(O(I)),oe=_(O(ie)),U=_(O([{kind:`landscape`}])),W=_(O(new Set)),G=_(null),K=_(null),le=_(O([])),de=_(O([])),q=_(`connecting`),J=_(null),pe=_(null),me={element:ce,person:ue,database:se,queue:fe,boundary:ae},he=e=>({message:e instanceof Error?e.message:String(e),source:o(z)?.meta.source??null,configPath:o(z)?.meta.configPath??null,durationMs:0,at:new Date().toISOString()});r(()=>{if(!o(z))return;let e=!1;return(async()=>{if(o(B)===`drill`){let t=await De(ke(o(z).data.model,o(U)));if(e)return;l(le,t.nodes,!0),l(de,t.edges,!0)}else if(o(B)===`expand`){let t=await Ie(o(z).data.model,o(W));if(e)return;l(le,t.nodes,!0),l(de,t.edges,!0)}else{let t=await Le(o(z).data.model);if(e)return;l(le,t.nodes,!0),l(de,t.edges,!0)}l(pe,null),!o(J)&&o(q)===`error`&&l(q,`live`)})().catch(t=>{e||(l(pe,he(t),!0),l(q,`error`))}),()=>{e=!0}});let ge=typeof location<`u`?new URLSearchParams(location.search).get(`token`):null,_e=e=>ge?`${e}?token=${encodeURIComponent(ge)}`:e,ve=async()=>{let e=await fetch(_e(`/api/model`));if(!e.ok)throw Error(`/api/model returned ${e.status}`);return await e.json()},ye=_(!1),be=e=>{l(z,e,!0),!o(ye)&&e.data.diff&&(l(B,`flat`),l(G,null),l(U,[{kind:`landscape`}],!0),l(ye,!0))},Y=`${location.protocol===`https:`?`wss:`:`ws:`}//${location.host}${_e(`/api/ws`)}`,X=()=>{let e=new WebSocket(Y);e.addEventListener(`open`,()=>{!o(J)&&!o(pe)&&l(q,`live`)}),e.addEventListener(`message`,e=>{try{let t=JSON.parse(e.data);t.type===`model-update`&&(be(t.envelope),l(J,null),o(pe)||l(q,`live`)),t.type===`model-error`&&(l(J,t.error,!0),l(q,`error`))}catch{}}),e.addEventListener(`close`,()=>{l(q,`lost`),setTimeout(X,1e3)}),e.addEventListener(`error`,()=>e.close())};ve().then(e=>{be(e),l(J,null),X()}).catch(e=>{l(J,he(e),!0),l(q,`error`),X()});let xe=({node:e})=>{e.type===`boundary`?l(G,{kind:`boundary`,name:String(e.data.name)},!0):l(G,{kind:`element`,name:String(e.data.name)},!0)},Se=({node:e})=>{l(K,e.id,!0)},Ce=()=>{l(K,null)};A(R,{selectElement:e=>{l(G,{kind:`element`,name:e},!0)},selectBoundary:e=>{l(G,{kind:`boundary`,name:e},!0)},enterBoundary:(e,t)=>{o(B)===`drill`&&(l(U,[...o(U),{kind:`boundary`,name:e,label:t}],!0),l(G,null))},toggleBoundary:e=>{if(o(B)!==`expand`)return;let t=new Set(o(W));t.has(e)?t.delete(e):t.add(e),l(W,t,!0)}});let we=e=>{l(U,o(U).slice(0,e+1),!0),l(G,null)},Te=e=>{l(B,e,!0),l(G,null),e===`drill`&&l(U,[{kind:`landscape`}],!0),e===`expand`&&l(W,new Set,!0)},Ee=()=>{l(W,new Set,!0)},Oe=()=>{o(z)&&l(W,new Set(Object.keys(o(z).data.model.boundaries)),!0)},Z=g(()=>o(G)?.kind===`element`&&o(z)?o(z).data.model.elements[o(G).name]??null:null),Q=g(()=>o(G)?.kind===`boundary`&&o(z)?o(z).data.model.boundaries[o(G).name]??null:null),Ae=g(()=>o(Z)&&o(z)?Object.values(o(z).data.model.elements).flatMap(e=>e.relations.filter(e=>e.to===o(Z).name).map(t=>({from:e.name,relation:t}))):[]),je=g(()=>o(G)&&o(z)?o(z).data.issues.filter(e=>o(G).kind===`element`?e.element===o(G).name:e.boundary===o(G).name):[]),Me=e=>{l(V,e,!0),typeof localStorage<`u`&&localStorage.setItem(v,e)},Ne=e=>{l(H,e,!0),typeof localStorage<`u`&&localStorage.setItem(T,e)},Pe=e=>{l(oe,e,!0),typeof localStorage<`u`&&localStorage.setItem(j,e?`on`:`off`)},Fe=g(()=>o(oe)&&o(z)?.data.analysis.cycles.smallest?new Set(o(z).data.analysis.cycles.smallest):new Set),$=g(()=>o(z)?.data.diff?.data??null),Gt=g(()=>o($)?.groups??[]),Kt=g(()=>(o($)?.changes??[]).slice(0,10)),qt=g(()=>o($)!==null),Jt=g(()=>{let e=new Map;for(let t of o($)?.changes??[])t.entity===`element`&&e.set(t.name,t.action);return e}),Yt=g(()=>{let e=new Map;for(let t of o($)?.changes??[])t.entity===`boundary`&&e.set(t.name,t.action);return e}),Xt=(e,t)=>`${e}->${t}`,Zt=g(()=>{let e=new Map;for(let t of o($)?.changes??[])t.entity===`relation`&&e.set(Xt(t.from,t.to),t.action);return e}),Qt={added:`#a1c181`,removed:`#d07277`,modified:`#dec184`,renamed:`#7dd3fc`,moved:`#b6a4d7`},$t=e=>{switch(e){case`added`:return`+`;case`removed`:return`−`;case`modified`:return`~`;case`renamed`:return`↦`;case`moved`:return`⇄`}},en=e=>{let t=e.id.slice(2);if(e.id.startsWith(`e:`))return o(Jt).get(t);if(e.id.startsWith(`b:`))return o(Yt).get(t)},tn=e=>{if(!(!e.source.startsWith(`e:`)||!e.target.startsWith(`e:`)))return o(Zt).get(Xt(e.source.slice(2),e.target.slice(2)))},nn=e=>typeof e==`string`&&e.length>0?e:null,rn=e=>{let t=e.evidence??{},n=nn(t.service),r=nn(t.repository),i=nn(t.database);if(n&&r&&i)return`${n} → ${r} → ${i}`;let a=nn(t.from),o=nn(t.to),s=nn(t.before),c=nn(t.after);return a&&o&&s&&c?`${a} → ${o}: ${s} → ${c}`:`${e.changeAddresses.length} change${e.changeAddresses.length===1?``:`s`}`},an=e=>{switch(e.entity){case`element`:return`${e.name}${e.previousName?` ← ${e.previousName}`:``}`;case`boundary`:return`${e.name}${e.previousName?` ← ${e.previousName}`:``}`;case`relation`:return`${e.from} → ${e.to}`;case`workspace`:return`workspace`}},on=e=>e.fields.length?e.fields.map(e=>e.field).join(`, `):e.severity,sn=e=>!!e.data?.crossBoundary,cn=g(()=>o(le).map(e=>{let t=typeof e.style==`string`?e.style:``,n=en(e);if(n){let r=Qt[n];return{...e,data:{...e.data,diffAction:n},style:`${t} outline: 3px solid ${r}; outline-offset: 5px; border-radius: 8px;`}}return o(Fe).has(e.id)?{...e,style:`${t} box-shadow: 0 0 0 3px #ef4444; border-radius: 8px;`}:e})),ln=g(()=>o(de).map(e=>{let t=o(K)!==null&&(e.source===o(K)||e.target===o(K)),n=o(H)===`cross-boundary`,r=sn(e),i=n&&!r,a=n&&r,s=o(Fe).has(e.source)&&o(Fe).has(e.target),c=tn(e);if(c&&!t){let t=Qt[c];return{...e,type:o(V),animated:c!==`removed`,data:{...e.data,diffAction:c},style:`stroke: ${t}; stroke-width: 2.8; opacity: 1;`,markerEnd:{type:L.ArrowClosed,width:26,height:26,color:t}}}if(s&&!t)return{...e,type:o(V),animated:!1,style:`stroke: #ef4444; stroke-width: 2.4; opacity: 1;`,markerEnd:{type:L.ArrowClosed,width:24,height:24,color:`#ef4444`}};if(i&&!t)return{...e,type:o(V),animated:!1,label:void 0,style:`stroke: #1e293b; stroke-width: 0.8; opacity: 0.12;`,markerEnd:{type:L.ArrowClosed,width:16,height:16,color:`#1e293b`}};if(a&&!o(K))return{...e,type:o(V),animated:!1,style:`stroke: #38bdf8; stroke-width: 2.2; opacity: 1;`,markerEnd:{type:L.ArrowClosed,width:26,height:26,color:`#38bdf8`}};if(!o(K))return{...e,type:o(V)};let l=t?`#38bdf8`:`#475569`;return{...e,type:o(V),animated:t,label:t?e.label:void 0,style:t?`stroke: #38bdf8; stroke-width: 2.4; opacity: 1;`:`stroke: #475569; stroke-width: 1.2; opacity: 0.35;`,markerEnd:{type:L.ArrowClosed,width:24,height:24,color:l}}})),un=g(()=>o(z)?{elements:Object.keys(o(z).data.model.elements).length,boundaries:Object.keys(o(z).data.model.boundaries).length,relations:Object.values(o(z).data.model.elements).reduce((e,t)=>e+t.relations.length,0),issues:o(z).data.issues.length}:null),dn=g(()=>o(J)??o(pe)),fn=g(()=>o(J)?`Reload failed`:`Layout failed`),pn=(e,t,n)=>`${typeof window<`u`&&window.__AACT_OPENER__||`vscode`}://file/${e.split(`/`).map(e=>encodeURIComponent(e)).join(`/`)}:${t}:${n}`,mn=e=>Object.entries(e??{}),hn=e=>e.message?`${e.kind}: ${e.message}`:e.kind,gn=e=>{let t=e.data?.diffAction;if(t)return Qt[t];let n=String(e.data?.kind),r=!!e.data?.external;return e.type===`person`?`#08427b`:r?`#475569`:n===`System`?`#1168bd`:n===`Container`?`#438dd5`:n===`Component`?`#85bbf0`:`#64748b`};var _n=Wt();y(`1r8vfx3`,e=>{d(()=>{c.title=`aact view`})});var vn=h(_n),yn=h(vn),bn=u(h(yn),6),xn=e=>{var t=Re(),n=u(s(t),2),r=h(n,!0);w(n),N(()=>{C(n,`title`,o(z).data.model.workspace.description??``),m(r,o(z).data.model.workspace.name)}),a(e,t)};i(bn,e=>{o(z)?.data.model.workspace?.name&&e(xn)});var Sn=u(bn,2),Cn=h(Sn),wn=e=>{a(e,n(`● live`))},Tn=e=>{a(e,n(`● reload error`))},En=e=>{a(e,n(`● disconnected — retrying`))},Dn=e=>{a(e,n(`● connecting`))};i(Cn,e=>{o(q)===`live`?e(wn):o(q)===`error`?e(Tn,1):o(q)===`lost`?e(En,2):e(Dn,-1)}),w(Sn);var On=u(Sn,2),kn=e=>{var t=ze(),n=u(s(t),2),r=h(n);w(n),N(()=>{C(n,`title`,o(z).data.diff.data.summary.headline),m(r,`diff: ${o(z).data.diff.data.summary.headline??``}`)}),a(e,t)};i(On,e=>{o(qt)&&o(z)?.data.diff&&e(kn)}),w(yn);var An=u(yn,2),jn=h(An),Mn=h(jn);let Nn;var Pn=u(Mn,2);let Fn;var In=u(Pn,2);let Ln;w(jn);var Rn=u(jn,2),zn=h(Rn);let Bn;var Vn=u(zn,2);let Hn;var Un=u(Vn,2);let Wn;w(Rn);var Gn=u(Rn,2),Kn=h(Gn);let qn;var Jn=u(Kn,2);let Yn;w(Gn);var Xn=u(Gn,2),Zn=h(Xn);let Qn;w(Xn),w(An);var $n=u(An,2),er=h($n),tr=e=>{var t=He();b(t,21,()=>o(U),M,(e,t,n)=>{var r=Ve(),c=s(r),l=e=>{a(e,Be())};i(c,e=>{n>0&&e(l)});var d=u(c,2),p=h(d,!0);w(d),N(()=>m(p,o(t).kind===`landscape`?`Landscape`:o(t).label)),f(`click`,d,()=>we(n)),a(e,r)}),w(t),a(e,t)},nr=e=>{var t=Ue(),n=h(t),r=u(n,2);k(2),w(t),f(`click`,n,Oe),f(`click`,r,Ee),a(e,t)},rr=e=>{a(e,We())};i(er,e=>{o(B)===`drill`?e(tr):o(B)===`expand`?e(nr,1):e(rr,-1)}),w($n),w(vn);var ir=u(vn,2),ar=h(ir),or=h(ar);ee(or,{children:(e,t)=>{{let t=g(()=>({type:o(V),animated:!1}));P(e,{get nodes(){return o(cn)},get edges(){return o(ln)},get nodeTypes(){return me},onnodeclick:xe,onnodepointerenter:Se,onnodepointerleave:Ce,fitView:!0,fitViewOptions:{padding:.18,duration:400},nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!0,panOnDrag:!0,zoomOnDoubleClick:!1,minZoom:.1,maxZoom:2,get defaultEdgeOptions(){return o(t)},children:(e,t)=>{var n=Ge(),r=s(n);te(r,{});var i=u(r,2);ne(i,{}),re(u(i,2),{pannable:!0,zoomable:!0,nodeColor:gn,maskColor:`rgba(15, 23, 42, 0.7)`,style:`background: #0b1220;`}),a(e,n)},$$slots:{default:!0}})}},$$slots:{default:!0}});var sr=u(or,2),cr=u(h(sr),10),lr=e=>{var t=Ke();k(10),a(e,t)};i(cr,e=>{o(qt)&&e(lr)}),w(sr);var ur=u(sr,2),dr=e=>{var t=Ye(),n=h(t),r=h(n,!0);w(n);var s=u(n,2),c=h(s,!0);w(s);var l=u(s,2),d=h(l),f=e=>{var t=qe(),n=h(t,!0);w(t),N(()=>m(n,o(dn).source)),a(e,t)};i(d,e=>{o(dn).source&&e(f)});var p=u(d,2),g=h(p,!0);w(p);var _=u(p,2),v=e=>{var t=Je(),n=h(t);w(t),N(()=>m(n,`${o(dn).durationMs??``} ms`)),a(e,t)};i(_,e=>{o(dn).durationMs>0&&e(v)}),w(l),w(t),N(e=>{m(r,o(fn)),m(c,o(dn).message),m(g,e)},[()=>new Date(o(dn).at).toLocaleTimeString()]),a(e,t)};i(ur,e=>{o(dn)&&e(dr)}),w(ar);var fr=u(ar,2),pr=h(fr),mr=e=>{var t=pt(),n=s(t),r=h(n);w(n);var c=u(n,2),l=h(c,!0);w(c);var d=u(c,2),f=e=>{var t=Xe(),n=h(t);w(t),N(()=>m(n,`[${o(Z).technology??``}]`)),a(e,t)};i(d,e=>{o(Z).technology&&e(f)});var p=u(d,2),_=e=>{var t=Ze(),n=h(t,!0);w(t),N(()=>m(n,o(Z).description)),a(e,t)};i(p,e=>{o(Z).description&&e(_)});var v=u(p,2),y=e=>{var t=$e(),n=u(h(t),2);b(n,20,()=>o(Z).tags,e=>e,(e,t)=>{var n=Qe(),r=h(n,!0);w(n),N(()=>m(r,t)),a(e,n)}),w(n),w(t),a(e,t)};i(v,e=>{o(Z).tags.length&&e(y)});var S=u(v,2),T=e=>{var t=tt(),n=u(h(t),2);b(n,21,()=>mn(o(Z).properties),([e,t])=>e,(e,t)=>{var n=g(()=>x(o(t),2));let r=()=>o(n)[0],i=()=>o(n)[1];var s=et(),c=h(s),l=h(c,!0);w(c);var d=u(c,1,!0);w(s),N(()=>{m(l,r()),m(d,i())}),a(e,s)}),w(n),w(t),a(e,t)},E=g(()=>mn(o(Z).properties).length);i(S,e=>{o(E)&&e(T)});var D=u(S,2),O=e=>{var t=nt(),n=u(h(t),2),r=h(n),i=h(r);w(r),w(n),w(t),N((e,t)=>{C(r,`href`,e),m(i,`${t??``}:${o(Z).sourceLocation.start.line??``}:${o(Z).sourceLocation.start.col??``}`)},[()=>pn(o(Z).sourceLocation.file,o(Z).sourceLocation.start.line,o(Z).sourceLocation.start.col),()=>o(Z).sourceLocation.file.split(`/`).pop()]),a(e,t)};i(D,e=>{o(Z).sourceLocation&&e(O)});var k=u(D,2),A=e=>{var t=it(),n=u(s(t),2);b(n,21,()=>o(je),M,(e,t)=>{var n=rt(),r=h(n,!0);w(n),N(e=>m(r,e),[()=>hn(o(t))]),a(e,n)}),w(n),a(e,t)};i(k,e=>{o(je).length&&e(A)});var j=u(k,2),P=e=>{var t=ct(),n=u(s(t),2);b(n,21,()=>o(Z).relations,M,(e,t)=>{var n=st(),r=u(h(n),2),s=h(r,!0);w(r);var c=u(r,2),l=e=>{var n=at(),r=h(n,!0);w(n),N(()=>m(r,o(t).description)),a(e,n)};i(c,e=>{o(t).description&&e(l)});var d=u(c,2),f=e=>{var n=ot(),r=h(n);w(n),N(()=>m(r,`[${o(t).technology??``}]`)),a(e,n)};i(d,e=>{o(t).technology&&e(f)}),w(n),N(()=>m(s,o(t).to)),a(e,n)}),w(n),a(e,t)};i(j,e=>{o(Z).relations.length&&e(P)});var F=u(j,2),ee=e=>{var t=ft(),n=u(s(t),2);b(n,21,()=>o(Ae),M,(e,t)=>{var n=dt(),r=u(h(n),2),s=h(r,!0);w(r);var c=u(r,2),l=e=>{var n=lt(),r=h(n,!0);w(n),N(()=>m(r,o(t).relation.description)),a(e,n)};i(c,e=>{o(t).relation.description&&e(l)});var d=u(c,2),f=e=>{var n=ut(),r=h(n);w(n),N(()=>m(r,`[${o(t).relation.technology??``}]`)),a(e,n)};i(d,e=>{o(t).relation.technology&&e(f)}),w(n),N(()=>m(s,o(t).from)),a(e,n)}),w(n),a(e,t)};i(F,e=>{o(Ae).length&&e(ee)}),N(()=>{m(r,`${o(Z).kind??``}${o(Z).external?` · external`:``}`),m(l,o(Z).label)}),a(e,t)},hr=e=>{var t=St(),r=s(t),c=h(r);w(r);var l=u(r,2),d=h(l,!0);w(l);var f=u(l,2),p=e=>{var t=mt(),n=h(t,!0);w(t),N(()=>m(n,o(Q).description)),a(e,t)};i(f,e=>{o(Q).description&&e(p)});var _=u(f,2),v=u(h(_),2),y=h(v);w(v),w(_);var S=u(_,2),T=e=>{var t=gt(),n=u(h(t),2);b(n,20,()=>o(Q).tags,e=>e,(e,t)=>{var n=ht(),r=h(n,!0);w(n),N(()=>m(r,t)),a(e,n)}),w(n),w(t),a(e,t)};i(S,e=>{o(Q).tags.length&&e(T)});var E=u(S,2),D=e=>{var t=vt(),n=u(h(t),2);b(n,21,()=>mn(o(Q).properties),([e,t])=>e,(e,t)=>{var n=g(()=>x(o(t),2));let r=()=>o(n)[0],i=()=>o(n)[1];var s=_t(),c=h(s),l=h(c,!0);w(c);var d=u(c,1,!0);w(s),N(()=>{m(l,r()),m(d,i())}),a(e,s)}),w(n),w(t),a(e,t)},O=g(()=>mn(o(Q).properties).length);i(E,e=>{o(O)&&e(D)});var k=u(E,2),A=e=>{var t=yt(),n=u(h(t),2),r=h(n),i=h(r);w(r),w(n),w(t),N((e,t)=>{C(r,`href`,e),m(i,`${t??``}:${o(Q).sourceLocation.start.line??``}:${o(Q).sourceLocation.start.col??``}`)},[()=>pn(o(Q).sourceLocation.file,o(Q).sourceLocation.start.line,o(Q).sourceLocation.start.col),()=>o(Q).sourceLocation.file.split(`/`).pop()]),a(e,t)};i(k,e=>{o(Q).sourceLocation&&e(A)});var j=u(k,2),P=e=>{var t=xt(),n=u(s(t),2);b(n,21,()=>o(je),M,(e,t)=>{var n=bt(),r=h(n,!0);w(n),N(e=>m(r,e),[()=>hn(o(t))]),a(e,n)}),w(n),a(e,t)};i(j,e=>{o(je).length&&e(P)});var F=u(j,2),ee=h(F),te=e=>{a(e,n(`Double-click to enter this boundary.`))},I=e=>{var t=n();N(e=>m(t,`Double-click to ${e??``} this boundary.`),[()=>o(W).has(o(Q).name)?`collapse`:`expand`]),a(e,t)},ne=e=>{a(e,n(`This boundary is part of the full hierarchy.`))};i(ee,e=>{o(B)===`drill`?e(te):o(B)===`expand`?e(I,1):e(ne,-1)}),w(F),N(()=>{m(c,`${o(Q).kind??``} boundary`),m(d,o(Q).label),m(y,`${o(Q).elementNames.length??``} elements · ${o(Q).boundaryNames.length??``} boundaries`)}),a(e,t)},gr=e=>{var t=Dt(),n=u(s(t),2),r=h(n,!0);w(n);var c=u(n,2),l=h(c),d=u(h(l)),f=h(d,!0);w(d),w(l);var p=u(l,2),g=u(h(p)),_=h(g,!0);w(g),w(p);var v=u(p,2),y=u(h(v)),x=h(y,!0);w(y),w(v);var S=u(v,2),C=u(h(S)),T=h(C,!0);w(C),w(S),w(c);var E=u(c,2),O=e=>{var t=wt(),n=u(s(t),2);b(n,21,()=>o(Gt),e=>e.id,(e,t)=>{var n=Ct(),r=h(n),i=h(r,!0);w(r);var s=u(r,2),c=h(s);w(s),w(n),N((e,n)=>{m(i,o(t).title),m(c,`${e??``} · ${n??``}% confidence`)},[()=>rn(o(t)),()=>Math.round(o(t).confidence*100)]),a(e,n)}),w(n),a(e,t)};i(E,e=>{o(Gt).length&&e(O)});var k=u(E,2),A=e=>{var t=Et(),n=u(s(t),2);b(n,21,()=>o(Kt),e=>e.address,(e,t)=>{var n=Tt(),r=h(n),i=h(r),s=h(i,!0);w(i);var c=u(i);w(r);var l=u(r,2),d=h(l);w(l),w(n),N((e,r,a)=>{D(n,`border-left-color: ${Qt[o(t).action]};`),D(i,`color: ${Qt[o(t).action]};`),m(s,e),m(c,` ${r??``}`),m(d,`${o(t).entity??``} · ${a??``}`)},[()=>$t(o(t).action),()=>an(o(t)),()=>on(o(t))]),a(e,n)}),w(n),a(e,t)};i(k,e=>{o(Kt).length&&e(A)}),N(()=>{m(r,o($).summary.headline),m(f,o($).summary.bySeverity.structural),m(_,o($).summary.bySeverity.semantic),m(x,o($).summary.bySeverity.cosmetic),m(T,o($).changes.length)}),a(e,t)},_r=e=>{let t=g(()=>o(z).data.analysis);var n=It(),r=u(s(n),2),c=h(r),l=u(h(c)),d=h(l,!0);w(l),w(c);var f=u(c,2),p=u(h(f)),_=h(p,!0);w(p),w(f);var v=u(f,2),y=u(h(v)),S=h(y,!0);w(y),w(v);var C=u(v,2),T=e=>{var n=Ot(),r=u(h(n)),i=h(r,!0);w(r),w(n),N(()=>m(i,o(t).cycles.count)),a(e,n)};i(C,e=>{o(t).cycles.count>0&&e(T)}),w(r);var E=u(r,2),D=e=>{var n=At(),r=u(s(n),2);b(r,21,()=>Object.entries(o(t).elementsByKind).sort((e,t)=>e[0].localeCompare(t[0])),([e,t])=>e,(e,t)=>{var n=g(()=>x(o(t),2));let r=()=>o(n)[0],i=()=>o(n)[1];var s=kt(),c=h(s),l=h(c,!0);w(c);var d=u(c),f=h(d,!0);w(d),w(s),N(()=>{m(l,r()),m(f,i())}),a(e,s)}),w(r),a(e,n)},O=g(()=>Object.keys(o(t).elementsByKind).length);i(E,e=>{o(O)&&e(D)});var k=u(E,4),A=h(k),j=u(h(A)),M=h(j,!0);w(j),w(A);var P=u(A,2),F=u(h(P)),ee=h(F,!0);w(F),w(P);var te=u(P,2),I=u(h(te)),ne=h(I,!0);w(I),w(te),w(k);var L=u(k,2),re=e=>{var n=jt(),r=u(s(n),2),i=h(r),c=h(i,!0);w(i),w(r),N(e=>m(c,e),[()=>o(t).cycles.smallest.join(` → `)]),a(e,n)};i(L,e=>{o(t).cycles.count>0&&o(t).cycles.smallest&&e(re)});var ie=u(L,2),R=e=>{var n=Nt(),r=u(s(n),2);b(r,21,()=>o(t).fanOut,e=>e.name,(e,t)=>{var n=Mt(),r=h(n),i=h(r,!0);w(r);var s=u(r),c=h(s,!0);w(s),w(n),N(()=>{m(i,o(t).name),m(c,o(t).count)}),a(e,n)}),w(r),a(e,n)};i(ie,e=>{o(t).fanOut.length&&e(R)});var B=u(ie,2),ae=e=>{var n=Ft(),r=u(s(n),2);b(r,21,()=>o(t).fanIn,e=>e.name,(e,t)=>{var n=Pt(),r=h(n),i=h(r,!0);w(r);var s=u(r),c=h(s,!0);w(s),w(n),N(()=>{m(i,o(t).name),m(c,o(t).count)}),a(e,n)}),w(r),a(e,n)};i(B,e=>{o(t).fanIn.length&&e(ae)}),N(()=>{m(d,o(t).elementsCount),m(_,o(t).databases.count),m(S,o(t).relationsByStyle.sync+o(t).relationsByStyle.async+o(t).relationsByStyle.unspecified),m(M,o(t).relationsByStyle.sync),m(ee,o(t).relationsByStyle.async),m(ne,o(t).relationsByStyle.unspecified)}),a(e,n)},vr=e=>{var t=Ht(),n=u(s(t),2),r=h(n,!0);w(n);var c=u(n,2),l=e=>{var t=Lt(),n=h(t,!0);w(t),N(()=>m(n,o(z).data.model.workspace.description)),a(e,t)};i(c,e=>{o(z).data.model.workspace.description&&e(l)});var d=u(c,2),f=e=>{var t=zt(),n=h(t),r=u(h(n)),s=h(r,!0);w(r),w(n);var c=u(n,2),l=u(h(c)),d=h(l,!0);w(l),w(c);var f=u(c,2),p=u(h(f)),g=h(p,!0);w(p),w(f);var _=u(f,2),v=e=>{var t=Rt(),n=u(h(t)),r=h(n,!0);w(n),w(t),N(()=>m(r,o(un).issues)),a(e,t)};i(_,e=>{o(un).issues>0&&e(v)}),w(t),N(()=>{m(s,o(un).elements),m(d,o(un).boundaries),m(g,o(un).relations)}),a(e,t)};i(d,e=>{o(un)&&e(f)});var p=u(d,2),g=e=>{var t=Vt(),n=u(s(t),2);b(n,21,()=>o(z).data.issues,M,(e,t)=>{var n=Bt(),r=h(n,!0);w(n),N(e=>m(r,e),[()=>hn(o(t))]),a(e,n)}),w(n),a(e,t)};i(p,e=>{o(z).data.issues.length&&e(g)}),N(()=>m(r,o(z).data.model.workspace.name??`(unnamed)`)),a(e,t)},yr=e=>{a(e,Ut())};i(pr,e=>{o(Z)?e(mr):o(Q)?e(hr,1):o($)?e(gr,2):o(oe)&&o(z)?e(_r,3):o(z)?.data.model.workspace?e(vr,4):e(yr,-1)}),w(fr),w(ir),w(_n),N(()=>{E(Sn,1,`status status-${o(q)??``}`,`svelte-1r8vfx3`),C(Mn,`aria-selected`,o(B)===`drill`),Nn=E(Mn,1,`svelte-1r8vfx3`,null,Nn,{active:o(B)===`drill`}),C(Pn,`aria-selected`,o(B)===`expand`),Fn=E(Pn,1,`svelte-1r8vfx3`,null,Fn,{active:o(B)===`expand`}),C(In,`aria-selected`,o(B)===`flat`),Ln=E(In,1,`svelte-1r8vfx3`,null,Ln,{active:o(B)===`flat`}),C(zn,`aria-selected`,o(V)===`bezier`),Bn=E(zn,1,`svelte-1r8vfx3`,null,Bn,{active:o(V)===`bezier`}),C(Vn,`aria-selected`,o(V)===`smoothstep`),Hn=E(Vn,1,`svelte-1r8vfx3`,null,Hn,{active:o(V)===`smoothstep`}),C(Un,`aria-selected`,o(V)===`step`),Wn=E(Un,1,`svelte-1r8vfx3`,null,Wn,{active:o(V)===`step`}),C(Kn,`aria-selected`,o(H)===`all`),qn=E(Kn,1,`svelte-1r8vfx3`,null,qn,{active:o(H)===`all`}),C(Jn,`aria-selected`,o(H)===`cross-boundary`),Yn=E(Jn,1,`svelte-1r8vfx3`,null,Yn,{active:o(H)===`cross-boundary`}),C(Zn,`aria-selected`,o(oe)),Qn=E(Zn,1,`svelte-1r8vfx3`,null,Qn,{active:o(oe)})}),f(`click`,Mn,()=>Te(`drill`)),f(`click`,Pn,()=>Te(`expand`)),f(`click`,In,()=>Te(`flat`)),f(`click`,zn,()=>Me(`bezier`)),f(`click`,Vn,()=>Me(`smoothstep`)),f(`click`,Un,()=>Me(`step`)),f(`click`,Kn,()=>Ne(`all`)),f(`click`,Jn,()=>Ne(`cross-boundary`)),f(`click`,Zn,()=>Pe(!o(oe))),a(e,_n),t()}T([`click`]);var Kt=document.querySelector(`#app`);if(!Kt)throw Error(`aact view: #app mount point missing in index.html`);j(Gt,{target:Kt});
2
+ //# sourceMappingURL=index-BR_xeaLb.js.map