@demlik/tea 0.10.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -38,7 +38,42 @@ interface LaneDriver {
38
38
  readonly session: string;
39
39
  readonly at?: string | null;
40
40
  }
41
- interface ServeOptions extends LaneViewerOptions {
41
+ interface FromDiskOptions {
42
+ /**
43
+ * Who sends each event, applied to every lane.
44
+ *
45
+ * A workflow document records topology and never provenance, so without this
46
+ * the page can see that a task cannot move and not that it is WAITING ON
47
+ * SOMEONE — which is the question a reader opened it to answer. Stated once
48
+ * here rather than copied onto each lane.
49
+ */
50
+ readonly origins?: unknown;
51
+ }
52
+ /**
53
+ * Every lane under `root`, read the way the convention says.
54
+ *
55
+ * A LANE IS A DIRECTORY HOLDING TWO FILES, and that convention is ours, so
56
+ * reading it is ours too. Three separate hosts wrote this same loop before it
57
+ * moved here, each with its own idea of the edges: whether a directory with no
58
+ * `workflow.json` is a lane (it is not — a scratch dir under the root is not
59
+ * something to draw), and whether a lane with no `events.jsonl` is broken (it
60
+ * is not — it was emitted and never run, every task sits where it booted).
61
+ *
62
+ * A lane that cannot be read is SKIPPED rather than thrown, because one bad
63
+ * directory should not take down a fleet view. A root that cannot be listed
64
+ * throws, because a short list presented as "your lanes" is worse than an
65
+ * error.
66
+ */
67
+ declare function lanesFromDisk(root: string, opts?: FromDiskOptions): Promise<LaneFiles[]>;
68
+ interface ServeOptions extends Omit<LaneViewerOptions, "lanes">, FromDiskOptions {
69
+ /** Every lane the reader should see. Omit it and `root` is read instead. */
70
+ readonly lanes?: () => readonly LaneFiles[] | Promise<readonly LaneFiles[]>;
71
+ /**
72
+ * A directory of lane directories. Supply this and {@link lanes} is not
73
+ * needed — pointing at a folder is the whole setup, which is what most
74
+ * callers want and what all of them were writing by hand.
75
+ */
76
+ readonly root?: string;
42
77
  /** Default 5411. `0` takes any free port and reports it back on `url`. */
43
78
  readonly port?: number;
44
79
  /** Default `127.0.0.1` — this reads a machine's own disk and should stay on it. */
@@ -110,4 +145,4 @@ declare function laneViewer(opts: LaneViewerOptions): (request: Request) => Prom
110
145
  */
111
146
  declare function serveLaneViewer(opts: ServeOptions): Promise<LaneViewerServer>;
112
147
 
113
- export { type LaneDriver, type LaneFiles, type LaneViewerOptions, type LaneViewerServer, type ServeOptions, type TransitionRequest, type TransitionResult, laneViewer, serveLaneViewer };
148
+ export { type FromDiskOptions, type LaneDriver, type LaneFiles, type LaneViewerOptions, type LaneViewerServer, type ServeOptions, type TransitionRequest, type TransitionResult, laneViewer, lanesFromDisk, serveLaneViewer };
@@ -1,9 +1,33 @@
1
- import { readFile } from 'fs/promises';
1
+ import { readdir, stat, readFile } from 'fs/promises';
2
2
  import { createServer } from 'http';
3
3
  import { resolve, normalize, join, extname } from 'path';
4
4
  import { fileURLToPath } from 'url';
5
5
 
6
6
  // src/chart/lane/server.ts
7
+ async function lanesFromDisk(root, opts = {}) {
8
+ const names = await readdir(root);
9
+ const read = await Promise.all(
10
+ names.map(async (id) => {
11
+ const dir = `${root}/${id}`;
12
+ try {
13
+ if (!(await stat(dir)).isDirectory()) return null;
14
+ const workflow = await readFile(`${dir}/workflow.json`, "utf8");
15
+ const events = await readFile(`${dir}/events.jsonl`, "utf8").catch(
16
+ () => ""
17
+ );
18
+ return {
19
+ id,
20
+ workflow,
21
+ events,
22
+ ...opts.origins === void 0 ? {} : { origins: opts.origins }
23
+ };
24
+ } catch {
25
+ return null;
26
+ }
27
+ })
28
+ );
29
+ return read.filter((lane) => lane !== null);
30
+ }
7
31
  var MIME = {
8
32
  ".html": "text/html; charset=utf-8",
9
33
  ".js": "text/javascript; charset=utf-8",
@@ -114,7 +138,21 @@ function laneViewer(opts) {
114
138
  };
115
139
  }
116
140
  async function serveLaneViewer(opts) {
117
- const handle = laneViewer(opts);
141
+ const root = opts.root;
142
+ if (opts.lanes === void 0 && root === void 0) {
143
+ throw new Error(
144
+ "@demlik/tea: serveLaneViewer needs either `root` (a directory of lane directories) or `lanes`"
145
+ );
146
+ }
147
+ const handle = laneViewer({
148
+ ...opts,
149
+ // Re-read on every ask rather than cache: a driver appends to these files
150
+ // while the page is open, and current is the whole point of the page.
151
+ lanes: opts.lanes ?? (() => lanesFromDisk(root, {
152
+ ...opts.origins === void 0 ? {} : { origins: opts.origins }
153
+ })),
154
+ ...opts.source === void 0 && root !== void 0 ? { source: root } : {}
155
+ });
118
156
  const host = opts.host ?? "127.0.0.1";
119
157
  const server = createServer((req, res) => {
120
158
  void (async () => {
@@ -166,6 +204,6 @@ async function serveLaneViewer(opts) {
166
204
  };
167
205
  }
168
206
 
169
- export { laneViewer, serveLaneViewer };
207
+ export { laneViewer, lanesFromDisk, serveLaneViewer };
170
208
  //# sourceMappingURL=server.js.map
171
209
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/chart/lane/server.ts"],"names":[],"mappings":";;;;;;AAqHA,IAAM,IAAA,GAAyC;AAAA,EAC7C,OAAA,EAAS,0BAAA;AAAA,EACT,KAAA,EAAO,gCAAA;AAAA,EACP,MAAA,EAAQ,yBAAA;AAAA,EACR,OAAA,EAAS,iCAAA;AAAA,EACT,MAAA,EAAQ,eAAA;AAAA,EACR,QAAA,EAAU;AACZ,CAAA;AAEA,IAAM,IAAA,GAAO,CAAC,IAAA,EAAe,MAAA,GAAS,GAAA,KACpC,IAAI,QAAA,CAAS,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA,EAAG;AAAA,EACjC,MAAA;AAAA,EACA,OAAA,EAAS,EAAE,cAAA,EAAgB,iCAAA;AAC7B,CAAC,CAAA;AAGH,IAAM,SAAS,OAAA,CAAQ,aAAA,CAAc,YAAY,GAAG,CAAA,EAAG,MAAM,QAAQ,CAAA;AAc9D,SAAS,WACd,IAAA,EACyC;AACzC,EAAA,OAAO,OAAO,OAAA,KAAwC;AACpD,IAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,OAAA,CAAQ,GAAG,CAAA;AAC/B,IAAA,MAAM,OAAO,GAAA,CAAI,QAAA;AAEjB,IAAA,IAAI,SAAS,YAAA,EAAc;AACzB,MAAA,OAAO,IAAA,CAAK,EAAE,KAAA,EAAO,MAAM,IAAA,CAAK,KAAA,EAAM,EAAG,MAAA,EAAQ,IAAA,CAAK,MAAA,IAAU,EAAA,EAAI,CAAA;AAAA,IACtE;AAEA,IAAA,IAAI,SAAS,cAAA,EAAgB;AAC3B,MAAA,IAAI,IAAA,CAAK,YAAY,MAAA,EAAW,OAAO,KAAK,EAAE,OAAA,EAAS,EAAC,EAAG,CAAA;AAC3D,MAAA,IAAI;AACF,QAAA,OAAO,KAAK,EAAE,OAAA,EAAS,MAAM,IAAA,CAAK,OAAA,IAAW,CAAA;AAAA,MAC/C,CAAA,CAAA,MAAQ;AAIN,QAAA,OAAO,IAAA,CAAK,EAAE,OAAA,EAAS,IAAI,CAAA;AAAA,MAC7B;AAAA,IACF;AAEA,IAAA,IAAI,SAAS,aAAA,EAAe;AAC1B,MAAA,MAAM,QAAQ,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,IAAA,CAAK,UAAU,GAAI,CAAA;AAC/C,MAAA,IAAI,IAAA,GAAO,EAAA;AACX,MAAA,IAAI,KAAA;AACJ,MAAA,MAAM,MAAA,GAAS,IAAI,cAAA,CAA2B;AAAA,QAC5C,MAAM,UAAA,EAAY;AAChB,UAAA,MAAM,GAAA,GAAM,IAAI,WAAA,EAAY;AAC5B,UAAA,MAAM,OAAO,YAAY;AACvB,YAAA,IAAI;AACF,cAAA,MAAM,OAAO,IAAA,CAAK,SAAA,CAAU,MAAM,IAAA,CAAK,OAAO,CAAA;AAC9C,cAAA,IAAI,SAAS,IAAA,EAAM;AACnB,cAAA,IAAA,GAAO,IAAA;AACP,cAAA,UAAA,CAAW,OAAA,CAAQ,GAAA,CAAI,MAAA,CAAO,CAAA,MAAA,EAAS,IAAI;;AAAA,CAAM,CAAC,CAAA;AAAA,YACpD,CAAA,CAAA,MAAQ;AAAA,YAER;AAAA,UACF,CAAA;AACA,UAAA,KAAK,IAAA,EAAK;AACV,UAAA,KAAA,GAAQ,WAAA,CAAY,MAAM,KAAK,IAAA,IAAQ,KAAK,CAAA;AAAA,QAC9C,CAAA;AAAA,QACA,MAAA,GAAS;AACP,UAAA,IAAI,KAAA,KAAU,MAAA,EAAW,aAAA,CAAc,KAAK,CAAA;AAAA,QAC9C;AAAA,OACD,CAAA;AACD,MAAA,OAAO,IAAI,SAAS,MAAA,EAAQ;AAAA,QAC1B,OAAA,EAAS;AAAA,UACP,cAAA,EAAgB,kCAAA;AAAA,UAChB,eAAA,EAAiB,UAAA;AAAA,UACjB,UAAA,EAAY;AAAA;AACd,OACD,CAAA;AAAA,IACH;AAEA,IAAA,IAAI,SAAS,iBAAA,EAAmB;AAC9B,MAAA,IAAI,OAAA,CAAQ,WAAW,MAAA,EAAQ,OAAO,KAAK,EAAE,EAAA,EAAI,KAAA,EAAM,EAAG,GAAG,CAAA;AAC7D,MAAA,IAAI,IAAA,CAAK,eAAe,MAAA,EAAW;AACjC,QAAA,OAAO,IAAA;AAAA,UACL;AAAA,YACE,EAAA,EAAI,KAAA;AAAA,YACJ,IAAA,EAAM,CAAA;AAAA,YACN,MAAA,EAAQ,EAAA;AAAA,YACR,MAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,SACF;AAAA,MACF;AACA,MAAA,IAAI,IAAA;AACJ,MAAA,IAAI;AACF,QAAA,IAAA,GAAQ,MAAM,QAAQ,IAAA,EAAK;AAAA,MAC7B,CAAA,CAAA,MAAQ;AACN,QAAA,OAAO,IAAA;AAAA,UACL,EAAE,IAAI,KAAA,EAAO,IAAA,EAAM,GAAG,MAAA,EAAQ,EAAA,EAAI,QAAQ,mBAAA,EAAoB;AAAA,UAC9D;AAAA,SACF;AAAA,MACF;AACA,MAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,UAAA,CAAW,IAAI,CAAA;AAGtC,MAAA,OAAO,IAAA,CAAK;AAAA,QACV,IAAI,GAAA,CAAI,EAAA;AAAA,QACR,IAAA,EAAM,GAAA,CAAI,EAAA,GAAK,CAAA,GAAI,CAAA;AAAA,QACnB,MAAA,EAAQ,GAAA,CAAI,EAAA,GAAK,GAAA,CAAI,OAAA,GAAU,EAAA;AAAA,QAC/B,MAAA,EAAQ,GAAA,CAAI,EAAA,GAAK,EAAA,GAAK,GAAA,CAAI;AAAA,OAC3B,CAAA;AAAA,IACH;AAMA,IAAA,MAAM,MAAM,IAAA,KAAS,GAAA,GAAM,eAAe,IAAA,CAAK,OAAA,CAAQ,QAAQ,EAAE,CAAA;AACjE,IAAA,MAAM,IAAA,GAAO,SAAA,CAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAC,CAAA;AACxC,IAAA,IAAI,CAAC,IAAA,CAAK,UAAA,CAAW,MAAM,CAAA,EAAG,OAAO,IAAI,QAAA,CAAS,IAAA,EAAM,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA;AAEvE,IAAA,IAAI;AACF,MAAA,MAAM,KAAA,GAAQ,MAAM,QAAA,CAAS,IAAI,CAAA;AACjC,MAAA,OAAO,IAAI,QAAA,CAAS,IAAI,UAAA,CAAW,KAAK,CAAA,EAAG;AAAA,QACzC,OAAA,EAAS;AAAA,UACP,cAAA,EAAgB,IAAA,CAAK,OAAA,CAAQ,IAAI,CAAC,CAAA,IAAK;AAAA;AACzC,OACD,CAAA;AAAA,IACH,CAAA,CAAA,MAAQ;AACN,MAAA,MAAM,OAAO,MAAM,QAAA,CAAS,IAAA,CAAK,MAAA,EAAQ,YAAY,CAAC,CAAA;AACtD,MAAA,OAAO,IAAI,QAAA,CAAS,IAAI,UAAA,CAAW,IAAI,CAAA,EAAG;AAAA,QACxC,OAAA,EAAS,EAAE,cAAA,EAAgB,IAAA,CAAK,OAAO,CAAA;AAAY,OACpD,CAAA;AAAA,IACH;AAAA,EACF,CAAA;AACF;AAuBA,eAAsB,gBACpB,IAAA,EAC2B;AAC3B,EAAA,MAAM,MAAA,GAAS,WAAW,IAAI,CAAA;AAC9B,EAAA,MAAM,IAAA,GAAO,KAAK,IAAA,IAAQ,WAAA;AAE1B,EAAA,MAAM,MAAA,GAAS,YAAA,CAAa,CAAC,GAAA,EAAK,GAAA,KAAQ;AACxC,IAAA,KAAA,CAAM,YAAY;AAChB,MAAA,MAAM,IAAA,GACJ,GAAA,CAAI,MAAA,KAAW,MAAA,IAAU,GAAA,CAAI,MAAA,KAAW,KAAA,GACpC,MAAM,IAAI,OAAA,CAAgB,CAAC,EAAA,KAAO;AAChC,QAAA,IAAI,IAAA,GAAO,EAAA;AACX,QAAA,GAAA,CAAI,EAAA,CAAG,MAAA,EAAQ,CAAC,KAAA,KAAU;AACxB,UAAA,IAAA,IAAQ,KAAA;AAAA,QACV,CAAC,CAAA;AACD,QAAA,GAAA,CAAI,EAAA,CAAG,KAAA,EAAO,MAAM,EAAA,CAAG,IAAI,CAAC,CAAA;AAAA,MAC9B,CAAC,CAAA,GACD,MAAA;AAEN,MAAA,MAAM,MAAM,MAAM,MAAA;AAAA,QAChB,IAAI,QAAQ,CAAA,OAAA,EAAU,IAAI,GAAG,GAAA,CAAI,GAAA,IAAO,GAAG,CAAA,CAAA,EAAI;AAAA,UAC7C,MAAA,EAAQ,IAAI,MAAA,IAAU,KAAA;AAAA,UACtB,GAAI,IAAA,KAAS,MAAA,GAAY,EAAC,GAAI,EAAE,IAAA;AAAK,SACtC;AAAA,OACH;AAEA,MAAA,GAAA,CAAI,UAAU,GAAA,CAAI,MAAA,EAAQ,OAAO,WAAA,CAAY,GAAA,CAAI,OAAO,CAAC,CAAA;AACzD,MAAA,IAAI,GAAA,CAAI,SAAS,IAAA,EAAM;AACrB,QAAA,GAAA,CAAI,GAAA,EAAI;AACR,QAAA;AAAA,MACF;AAGA,MAAA,MAAM,MAAA,GAAS,GAAA,CAAI,IAAA,CAAK,SAAA,EAAU;AAClC,MAAA,IAAI;AACF,QAAA,WAAS;AACP,UAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAM,GAAI,MAAM,OAAO,IAAA,EAAK;AAC1C,UAAA,IAAI,IAAA,EAAM;AACV,UAAA,GAAA,CAAI,MAAM,KAAK,CAAA;AAAA,QACjB;AAAA,MACF,CAAA,CAAA,MAAQ;AAAA,MAER;AACA,MAAA,GAAA,CAAI,GAAA,EAAI;AAAA,IACV,CAAA,GAAG;AAAA,EACL,CAAC,CAAA;AAED,EAAA,MAAM,OAAO,MAAM,IAAI,OAAA,CAAgB,CAAC,IAAI,EAAA,KAAO;AACjD,IAAA,MAAA,CAAO,IAAA,CAAK,SAAS,EAAE,CAAA;AACvB,IAAA,MAAA,CAAO,MAAA,CAAO,IAAA,CAAK,IAAA,IAAQ,IAAA,EAAM,MAAM,MAAM;AAC3C,MAAA,MAAM,IAAA,GAAO,OAAO,OAAA,EAAQ;AAC5B,MAAA,EAAA;AAAA,QACE,OAAO,SAAS,QAAA,IAAY,IAAA,KAAS,OACjC,IAAA,CAAK,IAAA,GACJ,KAAK,IAAA,IAAQ;AAAA,OACpB;AAAA,IACF,CAAC,CAAA;AAAA,EACH,CAAC,CAAA;AAED,EAAA,OAAO;AAAA,IACL,KAAK,CAAA,OAAA,EAAU,IAAA,KAAS,YAAY,WAAA,GAAc,IAAI,IAAI,IAAI,CAAA,CAAA;AAAA,IAC9D,KAAA,EAAO,MACL,IAAI,OAAA,CAAc,CAAC,EAAA,KAAO;AACxB,MAAA,MAAA,CAAO,mBAAA,IAAsB;AAC7B,MAAA,MAAA,CAAO,KAAA,CAAM,MAAM,EAAA,EAAI,CAAA;AAAA,IACzB,CAAC;AAAA,GACL;AACF","file":"server.js","sourcesContent":["// ═══════════════════════════════════════════════════════════════════════════\n// chart/lane/server — the dashboard, as something a host can SERVE.\n//\n// `./chart/lane/react` gives you the components and assumes you have a\n// bundler. A CLI does not, and the consumer this was written for — fabrika —\n// is a CLI: it already knows where the lanes are, how to fold one and how to\n// record an event, and what it does not have is a page.\n//\n// So this ships the page prebuilt and asks the host for the three facts only\n// the host can know:\n//\n// WHERE THE LANES ARE — it reads its own root; we never touch a filesystem.\n// HOW TO RECORD AN EVENT — its own verb, which stays the ONLY writer. The\n// page proposes and the host disposes; a refusal is an answer, not an\n// error, and it is displayed in the host's own words.\n// WHO HOLDS A LANE — optional, because ownership is not in the lane files at\n// all (fabrika keeps claims on GitHub), so plenty of hosts cannot answer\n// it. Absent means UNKNOWN and the page says nothing, never \"free\".\n//\n// Everything else — folding, deriving what is stuck, drawing the machines,\n// the attention ordering, the scrubbing — is the library's and is already\n// tested here. The host writes an adapter, not a dashboard.\n//\n// The handler is `(Request) => Promise<Response>`, so it mounts under Node's\n// `http`, Bun.serve, Hono, or a Worker without an adapter per framework.\n// ═══════════════════════════════════════════════════════════════════════════\n\nimport { readFile } from \"node:fs/promises\";\nimport { createServer } from \"node:http\";\nimport { extname, join, normalize, resolve } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\n/** One lane, as the two files a host already has on disk. */\nexport interface LaneFiles {\n /** The lane key — the issue number, or whatever the host names lanes by. */\n readonly id: string;\n /** `workflow.json`, verbatim. */\n readonly workflow: string;\n /** `events.jsonl`, verbatim. Empty for a lane that has not run yet. */\n readonly events: string;\n /**\n * Who sends each event, when the host knows.\n *\n * A workflow document records topology and never provenance, so without\n * this the page can see that a task cannot move and not that it is WAITING\n * ON SOMEONE — which is the question a reader opened it to answer.\n */\n readonly origins?: unknown;\n}\n\n/** What the host is asked to do when a reader presses a button. */\nexport interface TransitionRequest {\n readonly lane: string;\n readonly event: string;\n /** Absent on a single-task lane, exactly as the CLI verb allows. */\n readonly task?: string;\n}\n\n/**\n * The host's answer. A refusal is a legitimate one — the machine said no —\n * and `message` is shown to the reader verbatim, so write it for them.\n */\nexport interface TransitionResult {\n readonly ok: boolean;\n readonly message: string;\n}\n\n/** Who holds a lane, when the host can say. */\nexport interface LaneDriver {\n /** A person or account — what a reader recognises. */\n readonly login: string;\n /** The claim token, or any stable handle for the session holding it. */\n readonly session: string;\n readonly at?: string | null;\n}\n\nexport interface ServeOptions extends LaneViewerOptions {\n /** Default 5411. `0` takes any free port and reports it back on `url`. */\n readonly port?: number;\n /** Default `127.0.0.1` — this reads a machine's own disk and should stay on it. */\n readonly host?: string;\n}\n\n/** A running dashboard. */\nexport interface LaneViewerServer {\n /** Where to point a browser. Carries the real port when `port: 0` was asked for. */\n readonly url: string;\n readonly close: () => Promise<void>;\n}\n\nexport interface LaneViewerOptions {\n /** Every lane the reader should see. Called on each request; cache if slow. */\n readonly lanes: () => readonly LaneFiles[] | Promise<readonly LaneFiles[]>;\n /**\n * Record one event. OMIT IT and the page becomes read-only — every lane is\n * still shown, and nothing offers to act. That is a real mode, not a\n * degraded one: a report of a run that finished has nothing to dispatch.\n */\n readonly transition?: (\n req: TransitionRequest,\n ) => TransitionResult | Promise<TransitionResult>;\n /** Ownership, when it is knowable. `null` for a lane nobody holds. */\n readonly drivers?: () => Promise<Readonly<Record<string, LaneDriver | null>>>;\n /** Shown in the footer — where these lanes were read from. */\n readonly source?: string;\n /**\n * How often to re-ask `lanes()` for the live stream, in ms. Default 2000.\n *\n * LIVENESS IS OURS, NOT THE HOST'S. A host could watch its own files and\n * push, and then every host would write that code and get it subtly\n * different. Re-asking is uninteresting and correct: `lanes()` is a read of\n * two files a driver appends to, the answer is compared before anything is\n * sent, and a quiet fleet costs one stat per lane per tick.\n */\n readonly pollMs?: number;\n}\n\nconst MIME: Readonly<Record<string, string>> = {\n \".html\": \"text/html; charset=utf-8\",\n \".js\": \"text/javascript; charset=utf-8\",\n \".css\": \"text/css; charset=utf-8\",\n \".json\": \"application/json; charset=utf-8\",\n \".svg\": \"image/svg+xml\",\n \".woff2\": \"font/woff2\",\n};\n\nconst json = (body: unknown, status = 200): Response =>\n new Response(JSON.stringify(body), {\n status,\n headers: { \"content-type\": \"application/json; charset=utf-8\" },\n });\n\n/** Where the prebuilt page lives inside this package. */\nconst ASSETS = resolve(fileURLToPath(import.meta.url), \"..\", \"viewer\");\n\n/**\n * The page, plus the small JSON contract it speaks.\n *\n * ```ts\n * const handle = laneViewer({\n * lanes: () => readMyLanes(),\n * transition: (r) => myTransitionVerb(r),\n * });\n * // Node:\n * createServer(async (req, res) => { … await handle(request) … });\n * ```\n */\nexport function laneViewer(\n opts: LaneViewerOptions,\n): (request: Request) => Promise<Response> {\n return async (request: Request): Promise<Response> => {\n const url = new URL(request.url);\n const path = url.pathname;\n\n if (path === \"/api/lanes\") {\n return json({ lanes: await opts.lanes(), source: opts.source ?? \"\" });\n }\n\n if (path === \"/api/drivers\") {\n if (opts.drivers === undefined) return json({ drivers: {} });\n try {\n return json({ drivers: await opts.drivers() });\n } catch {\n // UNKNOWN is not \"nobody\" — an empty answer renders nothing, and a\n // lane shown free while someone holds it is what starts a second\n // driver on one piece of work.\n return json({ drivers: {} });\n }\n }\n\n if (path === \"/api/stream\") {\n const every = Math.max(250, opts.pollMs ?? 2000);\n let last = \"\";\n let timer: ReturnType<typeof setInterval> | undefined;\n const stream = new ReadableStream<Uint8Array>({\n start(controller) {\n const enc = new TextEncoder();\n const beat = async () => {\n try {\n const next = JSON.stringify(await opts.lanes());\n if (next === last) return;\n last = next;\n controller.enqueue(enc.encode(`data: ${next}\\n\\n`));\n } catch {\n // a half-written append is the next event arriving, not a fault\n }\n };\n void beat();\n timer = setInterval(() => void beat(), every);\n },\n cancel() {\n if (timer !== undefined) clearInterval(timer);\n },\n });\n return new Response(stream, {\n headers: {\n \"content-type\": \"text/event-stream; charset=utf-8\",\n \"cache-control\": \"no-store\",\n connection: \"keep-alive\",\n },\n });\n }\n\n if (path === \"/api/transition\") {\n if (request.method !== \"POST\") return json({ ok: false }, 405);\n if (opts.transition === undefined) {\n return json(\n {\n ok: false,\n exit: 1,\n stdout: \"\",\n stderr: \"this viewer is read-only\",\n },\n 200,\n );\n }\n let body: TransitionRequest;\n try {\n body = (await request.json()) as TransitionRequest;\n } catch {\n return json(\n { ok: false, exit: 1, stdout: \"\", stderr: \"malformed request\" },\n 400,\n );\n }\n const out = await opts.transition(body);\n // the page reads `{ok, exit, stdout, stderr}` — a host that speaks in\n // sentences rather than exit codes says the same thing in `stderr`.\n return json({\n ok: out.ok,\n exit: out.ok ? 0 : 1,\n stdout: out.ok ? out.message : \"\",\n stderr: out.ok ? \"\" : out.message,\n });\n }\n\n // ── the page itself ────────────────────────────────────────────────\n // Anything that is not the contract is an asset, and anything that is\n // not an asset is the page — a dashboard is one screen, so an unknown\n // path is a reader who typed something, not a 404 worth showing them.\n const rel = path === \"/\" ? \"index.html\" : path.replace(/^\\/+/, \"\");\n const file = normalize(join(ASSETS, rel));\n if (!file.startsWith(ASSETS)) return new Response(\"no\", { status: 403 });\n\n try {\n const bytes = await readFile(file);\n return new Response(new Uint8Array(bytes), {\n headers: {\n \"content-type\": MIME[extname(file)] ?? \"application/octet-stream\",\n },\n });\n } catch {\n const html = await readFile(join(ASSETS, \"index.html\"));\n return new Response(new Uint8Array(html), {\n headers: { \"content-type\": MIME[\".html\"] as string },\n });\n }\n };\n}\n\n/**\n * Start the dashboard. This is the one most callers want.\n *\n * {@link laneViewer} hands back a `(Request) => Response` for a host that already has a server to\n * mount it on. Everything BETWEEN that handler and a running page — creating the server, turning\n * node's `IncomingMessage` into a `Request`, reading a POST body, streaming a response back so the\n * event stream stays open — is the same in every host, and asking each one to write it is asking\n * them to get it subtly wrong. Notably the streaming: buffer the response and `/api/stream` never\n * delivers a frame, which looks like \"the page does not update\" and is nobody's obvious bug.\n *\n * So the three callbacks are the whole integration:\n *\n * ```ts\n * const server = await serveLaneViewer({\n * root: \".fabrika/lanes\", // not read here — see `lanes`\n * lanes: () => readMyLanes(),\n * transition: (r) => myVerb(r),\n * });\n * console.log(server.url);\n * ```\n */\nexport async function serveLaneViewer(\n opts: ServeOptions,\n): Promise<LaneViewerServer> {\n const handle = laneViewer(opts);\n const host = opts.host ?? \"127.0.0.1\";\n\n const server = createServer((req, res) => {\n void (async () => {\n const body =\n req.method === \"POST\" || req.method === \"PUT\"\n ? await new Promise<string>((ok) => {\n let read = \"\";\n req.on(\"data\", (chunk) => {\n read += chunk;\n });\n req.on(\"end\", () => ok(read));\n })\n : undefined;\n\n const out = await handle(\n new Request(`http://${host}${req.url ?? \"/\"}`, {\n method: req.method ?? \"GET\",\n ...(body === undefined ? {} : { body }),\n }),\n );\n\n res.writeHead(out.status, Object.fromEntries(out.headers));\n if (out.body === null) {\n res.end();\n return;\n }\n // STREAMED, never buffered: `/api/stream` holds open for the life of the\n // page, and a buffered response is one that never arrives.\n const reader = out.body.getReader();\n try {\n for (;;) {\n const { done, value } = await reader.read();\n if (done) break;\n res.write(value);\n }\n } catch {\n // the reader is gone — the page navigated away mid-frame\n }\n res.end();\n })();\n });\n\n const port = await new Promise<number>((ok, no) => {\n server.once(\"error\", no);\n server.listen(opts.port ?? 5411, host, () => {\n const addr = server.address();\n ok(\n typeof addr === \"object\" && addr !== null\n ? addr.port\n : (opts.port ?? 5411),\n );\n });\n });\n\n return {\n url: `http://${host === \"0.0.0.0\" ? \"localhost\" : host}:${port}`,\n close: () =>\n new Promise<void>((ok) => {\n server.closeAllConnections?.();\n server.close(() => ok());\n }),\n };\n}\n"]}
1
+ {"version":3,"sources":["../../../src/chart/lane/server.ts"],"names":[],"mappings":";;;;;;AAuGA,eAAsB,aAAA,CACpB,IAAA,EACA,IAAA,GAAwB,EAAC,EACH;AACtB,EAAA,MAAM,KAAA,GAAQ,MAAM,OAAA,CAAQ,IAAI,CAAA;AAChC,EAAA,MAAM,IAAA,GAAO,MAAM,OAAA,CAAQ,GAAA;AAAA,IACzB,KAAA,CAAM,GAAA,CAAI,OAAO,EAAA,KAAkC;AACjD,MAAA,MAAM,GAAA,GAAM,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA;AACzB,MAAA,IAAI;AACF,QAAA,IAAI,EAAE,MAAM,IAAA,CAAK,GAAG,CAAA,EAAG,WAAA,IAAe,OAAO,IAAA;AAC7C,QAAA,MAAM,WAAW,MAAM,QAAA,CAAS,CAAA,EAAG,GAAG,kBAAkB,MAAM,CAAA;AAC9D,QAAA,MAAM,SAAS,MAAM,QAAA,CAAS,GAAG,GAAG,CAAA,aAAA,CAAA,EAAiB,MAAM,CAAA,CAAE,KAAA;AAAA,UAC3D,MAAM;AAAA,SACR;AACA,QAAA,OAAO;AAAA,UACL,EAAA;AAAA,UACA,QAAA;AAAA,UACA,MAAA;AAAA,UACA,GAAI,KAAK,OAAA,KAAY,KAAA,CAAA,GAAY,EAAC,GAAI,EAAE,OAAA,EAAS,IAAA,CAAK,OAAA;AAAQ,SAChE;AAAA,MACF,CAAA,CAAA,MAAQ;AACN,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,IACF,CAAC;AAAA,GACH;AACA,EAAA,OAAO,IAAA,CAAK,MAAA,CAAO,CAAC,IAAA,KAA4B,SAAS,IAAI,CAAA;AAC/D;AAqDA,IAAM,IAAA,GAAyC;AAAA,EAC7C,OAAA,EAAS,0BAAA;AAAA,EACT,KAAA,EAAO,gCAAA;AAAA,EACP,MAAA,EAAQ,yBAAA;AAAA,EACR,OAAA,EAAS,iCAAA;AAAA,EACT,MAAA,EAAQ,eAAA;AAAA,EACR,QAAA,EAAU;AACZ,CAAA;AAEA,IAAM,IAAA,GAAO,CAAC,IAAA,EAAe,MAAA,GAAS,GAAA,KACpC,IAAI,QAAA,CAAS,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA,EAAG;AAAA,EACjC,MAAA;AAAA,EACA,OAAA,EAAS,EAAE,cAAA,EAAgB,iCAAA;AAC7B,CAAC,CAAA;AAGH,IAAM,SAAS,OAAA,CAAQ,aAAA,CAAc,YAAY,GAAG,CAAA,EAAG,MAAM,QAAQ,CAAA;AAc9D,SAAS,WACd,IAAA,EACyC;AACzC,EAAA,OAAO,OAAO,OAAA,KAAwC;AACpD,IAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,OAAA,CAAQ,GAAG,CAAA;AAC/B,IAAA,MAAM,OAAO,GAAA,CAAI,QAAA;AAEjB,IAAA,IAAI,SAAS,YAAA,EAAc;AACzB,MAAA,OAAO,IAAA,CAAK,EAAE,KAAA,EAAO,MAAM,IAAA,CAAK,KAAA,EAAM,EAAG,MAAA,EAAQ,IAAA,CAAK,MAAA,IAAU,EAAA,EAAI,CAAA;AAAA,IACtE;AAEA,IAAA,IAAI,SAAS,cAAA,EAAgB;AAC3B,MAAA,IAAI,IAAA,CAAK,YAAY,MAAA,EAAW,OAAO,KAAK,EAAE,OAAA,EAAS,EAAC,EAAG,CAAA;AAC3D,MAAA,IAAI;AACF,QAAA,OAAO,KAAK,EAAE,OAAA,EAAS,MAAM,IAAA,CAAK,OAAA,IAAW,CAAA;AAAA,MAC/C,CAAA,CAAA,MAAQ;AAIN,QAAA,OAAO,IAAA,CAAK,EAAE,OAAA,EAAS,IAAI,CAAA;AAAA,MAC7B;AAAA,IACF;AAEA,IAAA,IAAI,SAAS,aAAA,EAAe;AAC1B,MAAA,MAAM,QAAQ,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,IAAA,CAAK,UAAU,GAAI,CAAA;AAC/C,MAAA,IAAI,IAAA,GAAO,EAAA;AACX,MAAA,IAAI,KAAA;AACJ,MAAA,MAAM,MAAA,GAAS,IAAI,cAAA,CAA2B;AAAA,QAC5C,MAAM,UAAA,EAAY;AAChB,UAAA,MAAM,GAAA,GAAM,IAAI,WAAA,EAAY;AAC5B,UAAA,MAAM,OAAO,YAAY;AACvB,YAAA,IAAI;AACF,cAAA,MAAM,OAAO,IAAA,CAAK,SAAA,CAAU,MAAM,IAAA,CAAK,OAAO,CAAA;AAC9C,cAAA,IAAI,SAAS,IAAA,EAAM;AACnB,cAAA,IAAA,GAAO,IAAA;AACP,cAAA,UAAA,CAAW,OAAA,CAAQ,GAAA,CAAI,MAAA,CAAO,CAAA,MAAA,EAAS,IAAI;;AAAA,CAAM,CAAC,CAAA;AAAA,YACpD,CAAA,CAAA,MAAQ;AAAA,YAER;AAAA,UACF,CAAA;AACA,UAAA,KAAK,IAAA,EAAK;AACV,UAAA,KAAA,GAAQ,WAAA,CAAY,MAAM,KAAK,IAAA,IAAQ,KAAK,CAAA;AAAA,QAC9C,CAAA;AAAA,QACA,MAAA,GAAS;AACP,UAAA,IAAI,KAAA,KAAU,MAAA,EAAW,aAAA,CAAc,KAAK,CAAA;AAAA,QAC9C;AAAA,OACD,CAAA;AACD,MAAA,OAAO,IAAI,SAAS,MAAA,EAAQ;AAAA,QAC1B,OAAA,EAAS;AAAA,UACP,cAAA,EAAgB,kCAAA;AAAA,UAChB,eAAA,EAAiB,UAAA;AAAA,UACjB,UAAA,EAAY;AAAA;AACd,OACD,CAAA;AAAA,IACH;AAEA,IAAA,IAAI,SAAS,iBAAA,EAAmB;AAC9B,MAAA,IAAI,OAAA,CAAQ,WAAW,MAAA,EAAQ,OAAO,KAAK,EAAE,EAAA,EAAI,KAAA,EAAM,EAAG,GAAG,CAAA;AAC7D,MAAA,IAAI,IAAA,CAAK,eAAe,MAAA,EAAW;AACjC,QAAA,OAAO,IAAA;AAAA,UACL;AAAA,YACE,EAAA,EAAI,KAAA;AAAA,YACJ,IAAA,EAAM,CAAA;AAAA,YACN,MAAA,EAAQ,EAAA;AAAA,YACR,MAAA,EAAQ;AAAA,WACV;AAAA,UACA;AAAA,SACF;AAAA,MACF;AACA,MAAA,IAAI,IAAA;AACJ,MAAA,IAAI;AACF,QAAA,IAAA,GAAQ,MAAM,QAAQ,IAAA,EAAK;AAAA,MAC7B,CAAA,CAAA,MAAQ;AACN,QAAA,OAAO,IAAA;AAAA,UACL,EAAE,IAAI,KAAA,EAAO,IAAA,EAAM,GAAG,MAAA,EAAQ,EAAA,EAAI,QAAQ,mBAAA,EAAoB;AAAA,UAC9D;AAAA,SACF;AAAA,MACF;AACA,MAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,UAAA,CAAW,IAAI,CAAA;AAGtC,MAAA,OAAO,IAAA,CAAK;AAAA,QACV,IAAI,GAAA,CAAI,EAAA;AAAA,QACR,IAAA,EAAM,GAAA,CAAI,EAAA,GAAK,CAAA,GAAI,CAAA;AAAA,QACnB,MAAA,EAAQ,GAAA,CAAI,EAAA,GAAK,GAAA,CAAI,OAAA,GAAU,EAAA;AAAA,QAC/B,MAAA,EAAQ,GAAA,CAAI,EAAA,GAAK,EAAA,GAAK,GAAA,CAAI;AAAA,OAC3B,CAAA;AAAA,IACH;AAMA,IAAA,MAAM,MAAM,IAAA,KAAS,GAAA,GAAM,eAAe,IAAA,CAAK,OAAA,CAAQ,QAAQ,EAAE,CAAA;AACjE,IAAA,MAAM,IAAA,GAAO,SAAA,CAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAC,CAAA;AACxC,IAAA,IAAI,CAAC,IAAA,CAAK,UAAA,CAAW,MAAM,CAAA,EAAG,OAAO,IAAI,QAAA,CAAS,IAAA,EAAM,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA;AAEvE,IAAA,IAAI;AACF,MAAA,MAAM,KAAA,GAAQ,MAAM,QAAA,CAAS,IAAI,CAAA;AACjC,MAAA,OAAO,IAAI,QAAA,CAAS,IAAI,UAAA,CAAW,KAAK,CAAA,EAAG;AAAA,QACzC,OAAA,EAAS;AAAA,UACP,cAAA,EAAgB,IAAA,CAAK,OAAA,CAAQ,IAAI,CAAC,CAAA,IAAK;AAAA;AACzC,OACD,CAAA;AAAA,IACH,CAAA,CAAA,MAAQ;AACN,MAAA,MAAM,OAAO,MAAM,QAAA,CAAS,IAAA,CAAK,MAAA,EAAQ,YAAY,CAAC,CAAA;AACtD,MAAA,OAAO,IAAI,QAAA,CAAS,IAAI,UAAA,CAAW,IAAI,CAAA,EAAG;AAAA,QACxC,OAAA,EAAS,EAAE,cAAA,EAAgB,IAAA,CAAK,OAAO,CAAA;AAAY,OACpD,CAAA;AAAA,IACH;AAAA,EACF,CAAA;AACF;AAuBA,eAAsB,gBACpB,IAAA,EAC2B;AAC3B,EAAA,MAAM,OAAO,IAAA,CAAK,IAAA;AAClB,EAAA,IAAI,IAAA,CAAK,KAAA,KAAU,MAAA,IAAa,IAAA,KAAS,MAAA,EAAW;AAClD,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACA,EAAA,MAAM,SAAS,UAAA,CAAW;AAAA,IACxB,GAAG,IAAA;AAAA;AAAA;AAAA,IAGH,KAAA,EACE,IAAA,CAAK,KAAA,KACJ,MACC,cAAc,IAAA,EAAgB;AAAA,MAC5B,GAAI,KAAK,OAAA,KAAY,MAAA,GAAY,EAAC,GAAI,EAAE,OAAA,EAAS,IAAA,CAAK,OAAA;AAAQ,KAC/D,CAAA,CAAA;AAAA,IACL,GAAI,IAAA,CAAK,MAAA,KAAW,MAAA,IAAa,IAAA,KAAS,SACtC,EAAE,MAAA,EAAQ,IAAA,EAAK,GACf;AAAC,GACN,CAAA;AACD,EAAA,MAAM,IAAA,GAAO,KAAK,IAAA,IAAQ,WAAA;AAE1B,EAAA,MAAM,MAAA,GAAS,YAAA,CAAa,CAAC,GAAA,EAAK,GAAA,KAAQ;AACxC,IAAA,KAAA,CAAM,YAAY;AAChB,MAAA,MAAM,IAAA,GACJ,GAAA,CAAI,MAAA,KAAW,MAAA,IAAU,GAAA,CAAI,MAAA,KAAW,KAAA,GACpC,MAAM,IAAI,OAAA,CAAgB,CAAC,EAAA,KAAO;AAChC,QAAA,IAAI,IAAA,GAAO,EAAA;AACX,QAAA,GAAA,CAAI,EAAA,CAAG,MAAA,EAAQ,CAAC,KAAA,KAAU;AACxB,UAAA,IAAA,IAAQ,KAAA;AAAA,QACV,CAAC,CAAA;AACD,QAAA,GAAA,CAAI,EAAA,CAAG,KAAA,EAAO,MAAM,EAAA,CAAG,IAAI,CAAC,CAAA;AAAA,MAC9B,CAAC,CAAA,GACD,MAAA;AAEN,MAAA,MAAM,MAAM,MAAM,MAAA;AAAA,QAChB,IAAI,QAAQ,CAAA,OAAA,EAAU,IAAI,GAAG,GAAA,CAAI,GAAA,IAAO,GAAG,CAAA,CAAA,EAAI;AAAA,UAC7C,MAAA,EAAQ,IAAI,MAAA,IAAU,KAAA;AAAA,UACtB,GAAI,IAAA,KAAS,MAAA,GAAY,EAAC,GAAI,EAAE,IAAA;AAAK,SACtC;AAAA,OACH;AAEA,MAAA,GAAA,CAAI,UAAU,GAAA,CAAI,MAAA,EAAQ,OAAO,WAAA,CAAY,GAAA,CAAI,OAAO,CAAC,CAAA;AACzD,MAAA,IAAI,GAAA,CAAI,SAAS,IAAA,EAAM;AACrB,QAAA,GAAA,CAAI,GAAA,EAAI;AACR,QAAA;AAAA,MACF;AAGA,MAAA,MAAM,MAAA,GAAS,GAAA,CAAI,IAAA,CAAK,SAAA,EAAU;AAClC,MAAA,IAAI;AACF,QAAA,WAAS;AACP,UAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAM,GAAI,MAAM,OAAO,IAAA,EAAK;AAC1C,UAAA,IAAI,IAAA,EAAM;AACV,UAAA,GAAA,CAAI,MAAM,KAAK,CAAA;AAAA,QACjB;AAAA,MACF,CAAA,CAAA,MAAQ;AAAA,MAER;AACA,MAAA,GAAA,CAAI,GAAA,EAAI;AAAA,IACV,CAAA,GAAG;AAAA,EACL,CAAC,CAAA;AAED,EAAA,MAAM,OAAO,MAAM,IAAI,OAAA,CAAgB,CAAC,IAAI,EAAA,KAAO;AACjD,IAAA,MAAA,CAAO,IAAA,CAAK,SAAS,EAAE,CAAA;AACvB,IAAA,MAAA,CAAO,MAAA,CAAO,IAAA,CAAK,IAAA,IAAQ,IAAA,EAAM,MAAM,MAAM;AAC3C,MAAA,MAAM,IAAA,GAAO,OAAO,OAAA,EAAQ;AAC5B,MAAA,EAAA;AAAA,QACE,OAAO,SAAS,QAAA,IAAY,IAAA,KAAS,OACjC,IAAA,CAAK,IAAA,GACJ,KAAK,IAAA,IAAQ;AAAA,OACpB;AAAA,IACF,CAAC,CAAA;AAAA,EACH,CAAC,CAAA;AAED,EAAA,OAAO;AAAA,IACL,KAAK,CAAA,OAAA,EAAU,IAAA,KAAS,YAAY,WAAA,GAAc,IAAI,IAAI,IAAI,CAAA,CAAA;AAAA,IAC9D,KAAA,EAAO,MACL,IAAI,OAAA,CAAc,CAAC,EAAA,KAAO;AACxB,MAAA,MAAA,CAAO,mBAAA,IAAsB;AAC7B,MAAA,MAAA,CAAO,KAAA,CAAM,MAAM,EAAA,EAAI,CAAA;AAAA,IACzB,CAAC;AAAA,GACL;AACF","file":"server.js","sourcesContent":["// ═══════════════════════════════════════════════════════════════════════════\n// chart/lane/server — the dashboard, as something a host can SERVE.\n//\n// `./chart/lane/react` gives you the components and assumes you have a\n// bundler. A CLI does not, and the consumer this was written for — fabrika —\n// is a CLI: it already knows where the lanes are, how to fold one and how to\n// record an event, and what it does not have is a page.\n//\n// So this ships the page prebuilt and asks the host for the three facts only\n// the host can know:\n//\n// WHERE THE LANES ARE — it reads its own root; we never touch a filesystem.\n// HOW TO RECORD AN EVENT — its own verb, which stays the ONLY writer. The\n// page proposes and the host disposes; a refusal is an answer, not an\n// error, and it is displayed in the host's own words.\n// WHO HOLDS A LANE — optional, because ownership is not in the lane files at\n// all (fabrika keeps claims on GitHub), so plenty of hosts cannot answer\n// it. Absent means UNKNOWN and the page says nothing, never \"free\".\n//\n// Everything else — folding, deriving what is stuck, drawing the machines,\n// the attention ordering, the scrubbing — is the library's and is already\n// tested here. The host writes an adapter, not a dashboard.\n//\n// The handler is `(Request) => Promise<Response>`, so it mounts under Node's\n// `http`, Bun.serve, Hono, or a Worker without an adapter per framework.\n// ═══════════════════════════════════════════════════════════════════════════\n\nimport { readdir, readFile, stat } from \"node:fs/promises\";\nimport { createServer } from \"node:http\";\nimport { extname, join, normalize, resolve } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\n/** One lane, as the two files a host already has on disk. */\nexport interface LaneFiles {\n /** The lane key — the issue number, or whatever the host names lanes by. */\n readonly id: string;\n /** `workflow.json`, verbatim. */\n readonly workflow: string;\n /** `events.jsonl`, verbatim. Empty for a lane that has not run yet. */\n readonly events: string;\n /**\n * Who sends each event, when the host knows.\n *\n * A workflow document records topology and never provenance, so without\n * this the page can see that a task cannot move and not that it is WAITING\n * ON SOMEONE — which is the question a reader opened it to answer.\n */\n readonly origins?: unknown;\n}\n\n/** What the host is asked to do when a reader presses a button. */\nexport interface TransitionRequest {\n readonly lane: string;\n readonly event: string;\n /** Absent on a single-task lane, exactly as the CLI verb allows. */\n readonly task?: string;\n}\n\n/**\n * The host's answer. A refusal is a legitimate one — the machine said no —\n * and `message` is shown to the reader verbatim, so write it for them.\n */\nexport interface TransitionResult {\n readonly ok: boolean;\n readonly message: string;\n}\n\n/** Who holds a lane, when the host can say. */\nexport interface LaneDriver {\n /** A person or account — what a reader recognises. */\n readonly login: string;\n /** The claim token, or any stable handle for the session holding it. */\n readonly session: string;\n readonly at?: string | null;\n}\n\nexport interface FromDiskOptions {\n /**\n * Who sends each event, applied to every lane.\n *\n * A workflow document records topology and never provenance, so without this\n * the page can see that a task cannot move and not that it is WAITING ON\n * SOMEONE — which is the question a reader opened it to answer. Stated once\n * here rather than copied onto each lane.\n */\n readonly origins?: unknown;\n}\n\n/**\n * Every lane under `root`, read the way the convention says.\n *\n * A LANE IS A DIRECTORY HOLDING TWO FILES, and that convention is ours, so\n * reading it is ours too. Three separate hosts wrote this same loop before it\n * moved here, each with its own idea of the edges: whether a directory with no\n * `workflow.json` is a lane (it is not — a scratch dir under the root is not\n * something to draw), and whether a lane with no `events.jsonl` is broken (it\n * is not — it was emitted and never run, every task sits where it booted).\n *\n * A lane that cannot be read is SKIPPED rather than thrown, because one bad\n * directory should not take down a fleet view. A root that cannot be listed\n * throws, because a short list presented as \"your lanes\" is worse than an\n * error.\n */\nexport async function lanesFromDisk(\n root: string,\n opts: FromDiskOptions = {},\n): Promise<LaneFiles[]> {\n const names = await readdir(root);\n const read = await Promise.all(\n names.map(async (id): Promise<LaneFiles | null> => {\n const dir = `${root}/${id}`;\n try {\n if (!(await stat(dir)).isDirectory()) return null;\n const workflow = await readFile(`${dir}/workflow.json`, \"utf8\");\n const events = await readFile(`${dir}/events.jsonl`, \"utf8\").catch(\n () => \"\",\n );\n return {\n id,\n workflow,\n events,\n ...(opts.origins === undefined ? {} : { origins: opts.origins }),\n };\n } catch {\n return null;\n }\n }),\n );\n return read.filter((lane): lane is LaneFiles => lane !== null);\n}\n\nexport interface ServeOptions\n extends Omit<LaneViewerOptions, \"lanes\">,\n FromDiskOptions {\n /** Every lane the reader should see. Omit it and `root` is read instead. */\n readonly lanes?: () => readonly LaneFiles[] | Promise<readonly LaneFiles[]>;\n /**\n * A directory of lane directories. Supply this and {@link lanes} is not\n * needed — pointing at a folder is the whole setup, which is what most\n * callers want and what all of them were writing by hand.\n */\n readonly root?: string;\n /** Default 5411. `0` takes any free port and reports it back on `url`. */\n readonly port?: number;\n /** Default `127.0.0.1` — this reads a machine's own disk and should stay on it. */\n readonly host?: string;\n}\n\n/** A running dashboard. */\nexport interface LaneViewerServer {\n /** Where to point a browser. Carries the real port when `port: 0` was asked for. */\n readonly url: string;\n readonly close: () => Promise<void>;\n}\n\nexport interface LaneViewerOptions {\n /** Every lane the reader should see. Called on each request; cache if slow. */\n readonly lanes: () => readonly LaneFiles[] | Promise<readonly LaneFiles[]>;\n /**\n * Record one event. OMIT IT and the page becomes read-only — every lane is\n * still shown, and nothing offers to act. That is a real mode, not a\n * degraded one: a report of a run that finished has nothing to dispatch.\n */\n readonly transition?: (\n req: TransitionRequest,\n ) => TransitionResult | Promise<TransitionResult>;\n /** Ownership, when it is knowable. `null` for a lane nobody holds. */\n readonly drivers?: () => Promise<Readonly<Record<string, LaneDriver | null>>>;\n /** Shown in the footer — where these lanes were read from. */\n readonly source?: string;\n /**\n * How often to re-ask `lanes()` for the live stream, in ms. Default 2000.\n *\n * LIVENESS IS OURS, NOT THE HOST'S. A host could watch its own files and\n * push, and then every host would write that code and get it subtly\n * different. Re-asking is uninteresting and correct: `lanes()` is a read of\n * two files a driver appends to, the answer is compared before anything is\n * sent, and a quiet fleet costs one stat per lane per tick.\n */\n readonly pollMs?: number;\n}\n\nconst MIME: Readonly<Record<string, string>> = {\n \".html\": \"text/html; charset=utf-8\",\n \".js\": \"text/javascript; charset=utf-8\",\n \".css\": \"text/css; charset=utf-8\",\n \".json\": \"application/json; charset=utf-8\",\n \".svg\": \"image/svg+xml\",\n \".woff2\": \"font/woff2\",\n};\n\nconst json = (body: unknown, status = 200): Response =>\n new Response(JSON.stringify(body), {\n status,\n headers: { \"content-type\": \"application/json; charset=utf-8\" },\n });\n\n/** Where the prebuilt page lives inside this package. */\nconst ASSETS = resolve(fileURLToPath(import.meta.url), \"..\", \"viewer\");\n\n/**\n * The page, plus the small JSON contract it speaks.\n *\n * ```ts\n * const handle = laneViewer({\n * lanes: () => readMyLanes(),\n * transition: (r) => myTransitionVerb(r),\n * });\n * // Node:\n * createServer(async (req, res) => { … await handle(request) … });\n * ```\n */\nexport function laneViewer(\n opts: LaneViewerOptions,\n): (request: Request) => Promise<Response> {\n return async (request: Request): Promise<Response> => {\n const url = new URL(request.url);\n const path = url.pathname;\n\n if (path === \"/api/lanes\") {\n return json({ lanes: await opts.lanes(), source: opts.source ?? \"\" });\n }\n\n if (path === \"/api/drivers\") {\n if (opts.drivers === undefined) return json({ drivers: {} });\n try {\n return json({ drivers: await opts.drivers() });\n } catch {\n // UNKNOWN is not \"nobody\" — an empty answer renders nothing, and a\n // lane shown free while someone holds it is what starts a second\n // driver on one piece of work.\n return json({ drivers: {} });\n }\n }\n\n if (path === \"/api/stream\") {\n const every = Math.max(250, opts.pollMs ?? 2000);\n let last = \"\";\n let timer: ReturnType<typeof setInterval> | undefined;\n const stream = new ReadableStream<Uint8Array>({\n start(controller) {\n const enc = new TextEncoder();\n const beat = async () => {\n try {\n const next = JSON.stringify(await opts.lanes());\n if (next === last) return;\n last = next;\n controller.enqueue(enc.encode(`data: ${next}\\n\\n`));\n } catch {\n // a half-written append is the next event arriving, not a fault\n }\n };\n void beat();\n timer = setInterval(() => void beat(), every);\n },\n cancel() {\n if (timer !== undefined) clearInterval(timer);\n },\n });\n return new Response(stream, {\n headers: {\n \"content-type\": \"text/event-stream; charset=utf-8\",\n \"cache-control\": \"no-store\",\n connection: \"keep-alive\",\n },\n });\n }\n\n if (path === \"/api/transition\") {\n if (request.method !== \"POST\") return json({ ok: false }, 405);\n if (opts.transition === undefined) {\n return json(\n {\n ok: false,\n exit: 1,\n stdout: \"\",\n stderr: \"this viewer is read-only\",\n },\n 200,\n );\n }\n let body: TransitionRequest;\n try {\n body = (await request.json()) as TransitionRequest;\n } catch {\n return json(\n { ok: false, exit: 1, stdout: \"\", stderr: \"malformed request\" },\n 400,\n );\n }\n const out = await opts.transition(body);\n // the page reads `{ok, exit, stdout, stderr}` — a host that speaks in\n // sentences rather than exit codes says the same thing in `stderr`.\n return json({\n ok: out.ok,\n exit: out.ok ? 0 : 1,\n stdout: out.ok ? out.message : \"\",\n stderr: out.ok ? \"\" : out.message,\n });\n }\n\n // ── the page itself ────────────────────────────────────────────────\n // Anything that is not the contract is an asset, and anything that is\n // not an asset is the page — a dashboard is one screen, so an unknown\n // path is a reader who typed something, not a 404 worth showing them.\n const rel = path === \"/\" ? \"index.html\" : path.replace(/^\\/+/, \"\");\n const file = normalize(join(ASSETS, rel));\n if (!file.startsWith(ASSETS)) return new Response(\"no\", { status: 403 });\n\n try {\n const bytes = await readFile(file);\n return new Response(new Uint8Array(bytes), {\n headers: {\n \"content-type\": MIME[extname(file)] ?? \"application/octet-stream\",\n },\n });\n } catch {\n const html = await readFile(join(ASSETS, \"index.html\"));\n return new Response(new Uint8Array(html), {\n headers: { \"content-type\": MIME[\".html\"] as string },\n });\n }\n };\n}\n\n/**\n * Start the dashboard. This is the one most callers want.\n *\n * {@link laneViewer} hands back a `(Request) => Response` for a host that already has a server to\n * mount it on. Everything BETWEEN that handler and a running page — creating the server, turning\n * node's `IncomingMessage` into a `Request`, reading a POST body, streaming a response back so the\n * event stream stays open — is the same in every host, and asking each one to write it is asking\n * them to get it subtly wrong. Notably the streaming: buffer the response and `/api/stream` never\n * delivers a frame, which looks like \"the page does not update\" and is nobody's obvious bug.\n *\n * So the three callbacks are the whole integration:\n *\n * ```ts\n * const server = await serveLaneViewer({\n * root: \".fabrika/lanes\", // not read here — see `lanes`\n * lanes: () => readMyLanes(),\n * transition: (r) => myVerb(r),\n * });\n * console.log(server.url);\n * ```\n */\nexport async function serveLaneViewer(\n opts: ServeOptions,\n): Promise<LaneViewerServer> {\n const root = opts.root;\n if (opts.lanes === undefined && root === undefined) {\n throw new Error(\n \"@demlik/tea: serveLaneViewer needs either `root` (a directory of lane directories) or `lanes`\",\n );\n }\n const handle = laneViewer({\n ...opts,\n // Re-read on every ask rather than cache: a driver appends to these files\n // while the page is open, and current is the whole point of the page.\n lanes:\n opts.lanes ??\n (() =>\n lanesFromDisk(root as string, {\n ...(opts.origins === undefined ? {} : { origins: opts.origins }),\n })),\n ...(opts.source === undefined && root !== undefined\n ? { source: root }\n : {}),\n });\n const host = opts.host ?? \"127.0.0.1\";\n\n const server = createServer((req, res) => {\n void (async () => {\n const body =\n req.method === \"POST\" || req.method === \"PUT\"\n ? await new Promise<string>((ok) => {\n let read = \"\";\n req.on(\"data\", (chunk) => {\n read += chunk;\n });\n req.on(\"end\", () => ok(read));\n })\n : undefined;\n\n const out = await handle(\n new Request(`http://${host}${req.url ?? \"/\"}`, {\n method: req.method ?? \"GET\",\n ...(body === undefined ? {} : { body }),\n }),\n );\n\n res.writeHead(out.status, Object.fromEntries(out.headers));\n if (out.body === null) {\n res.end();\n return;\n }\n // STREAMED, never buffered: `/api/stream` holds open for the life of the\n // page, and a buffered response is one that never arrives.\n const reader = out.body.getReader();\n try {\n for (;;) {\n const { done, value } = await reader.read();\n if (done) break;\n res.write(value);\n }\n } catch {\n // the reader is gone — the page navigated away mid-frame\n }\n res.end();\n })();\n });\n\n const port = await new Promise<number>((ok, no) => {\n server.once(\"error\", no);\n server.listen(opts.port ?? 5411, host, () => {\n const addr = server.address();\n ok(\n typeof addr === \"object\" && addr !== null\n ? addr.port\n : (opts.port ?? 5411),\n );\n });\n });\n\n return {\n url: `http://${host === \"0.0.0.0\" ? \"localhost\" : host}:${port}`,\n close: () =>\n new Promise<void>((ok) => {\n server.closeAllConnections?.();\n server.close(() => ok());\n }),\n };\n}\n"]}
@@ -1,4 +1,4 @@
1
- import{Et as e,Ft as t,Ht as n,Ot as r,Tt as i,U as a,Y as o,a as s,at as c,f as l,it as u,q as d,st as f,ut as p,zt as m}from"./chunk-NSK5VX7P-CBCyTZMs.js";import{n as h}from"./index-Obj05Jex.js";import{n as g,t as _}from"./chunk-KBJHAD2P-DZOw7xU6.js";import{t as v}from"./chunk-2GRJ4B5K-HdDf8SI3.js";var y=(function(){var e=n(function(e,t,n,r){for(n||={},r=e.length;r--;n[e[r]]=t);return n},`o`),t=[1,2],r=[1,3],i=[1,4],a=[2,4],o=[1,9],s=[1,11],c=[1,16],l=[1,17],u=[1,18],d=[1,19],f=[1,33],p=[1,20],m=[1,21],h=[1,22],g=[1,23],_=[1,24],v=[1,26],y=[1,27],b=[1,28],x=[1,29],S=[1,30],C=[1,31],w=[1,32],T=[1,35],E=[1,36],D=[1,37],O=[1,38],k=[1,34],A=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],j=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,39,40,41,45,48,51,52,53,54,57],M=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],N={trace:n(function(){},`trace`),yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,classDefStatement:10,styleStatement:11,cssClassStatement:12,idStatement:13,DESCR:14,"-->":15,HIDE_EMPTY:16,scale:17,WIDTH:18,COMPOSIT_STATE:19,STRUCT_START:20,STRUCT_STOP:21,STATE_DESCR:22,AS:23,ID:24,FORK:25,JOIN:26,CHOICE:27,CONCURRENT:28,note:29,notePosition:30,NOTE_TEXT:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,CLICK:38,STRING:39,HREF:40,classDef:41,CLASSDEF_ID:42,CLASSDEF_STYLEOPTS:43,DEFAULT:44,style:45,STYLE_IDS:46,STYLEDEF_STYLEOPTS:47,class:48,CLASSENTITY_IDS:49,STYLECLASS:50,direction_tb:51,direction_bt:52,direction_rl:53,direction_lr:54,eol:55,";":56,EDGE_STATE:57,STYLE_SEPARATOR:58,left_of:59,right_of:60,$accept:0,$end:1},terminals_:{2:`error`,4:`SPACE`,5:`NL`,6:`SD`,14:`DESCR`,15:`-->`,16:`HIDE_EMPTY`,17:`scale`,18:`WIDTH`,19:`COMPOSIT_STATE`,20:`STRUCT_START`,21:`STRUCT_STOP`,22:`STATE_DESCR`,23:`AS`,24:`ID`,25:`FORK`,26:`JOIN`,27:`CHOICE`,28:`CONCURRENT`,29:`note`,31:`NOTE_TEXT`,33:`acc_title`,34:`acc_title_value`,35:`acc_descr`,36:`acc_descr_value`,37:`acc_descr_multiline_value`,38:`CLICK`,39:`STRING`,40:`HREF`,41:`classDef`,42:`CLASSDEF_ID`,43:`CLASSDEF_STYLEOPTS`,44:`DEFAULT`,45:`style`,46:`STYLE_IDS`,47:`STYLEDEF_STYLEOPTS`,48:`class`,49:`CLASSENTITY_IDS`,50:`STYLECLASS`,51:`direction_tb`,52:`direction_bt`,53:`direction_rl`,54:`direction_lr`,56:`;`,57:`EDGE_STATE`,58:`STYLE_SEPARATOR`,59:`left_of`,60:`right_of`},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,1],[9,4],[9,4],[9,1],[9,2],[9,2],[9,1],[9,5],[9,5],[10,3],[10,3],[11,3],[12,3],[32,1],[32,1],[32,1],[32,1],[55,1],[55,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1]],performAction:n(function(e,t,n,r,i,a,o){var s=a.length-1;switch(i){case 3:return r.setRootDoc(a[s]),a[s];case 4:this.$=[];break;case 5:a[s]!=`nl`&&(a[s-1].push(a[s]),this.$=a[s-1]);break;case 6:case 7:this.$=a[s];break;case 8:this.$=`nl`;break;case 12:this.$=a[s];break;case 13:let e=a[s-1];e.description=r.trimColon(a[s]),this.$=e;break;case 14:this.$={stmt:`relation`,state1:a[s-2],state2:a[s]};break;case 15:let t=r.trimColon(a[s]);this.$={stmt:`relation`,state1:a[s-3],state2:a[s-1],description:t};break;case 19:this.$={stmt:`state`,id:a[s-3],type:`default`,description:``,doc:a[s-1]};break;case 20:var c=a[s],l=a[s-2].trim();if(a[s].match(`:`)){var u=a[s].split(`:`);c=u[0],l=[l,u[1]]}this.$={stmt:`state`,id:c,type:`default`,description:l};break;case 21:this.$={stmt:`state`,id:a[s-3],type:`default`,description:a[s-5],doc:a[s-1]};break;case 22:this.$={stmt:`state`,id:a[s],type:`fork`};break;case 23:this.$={stmt:`state`,id:a[s],type:`join`};break;case 24:this.$={stmt:`state`,id:a[s],type:`choice`};break;case 25:this.$={stmt:`state`,id:r.getDividerId(),type:`divider`};break;case 26:this.$={stmt:`state`,id:a[s-1].trim(),note:{position:a[s-2].trim(),text:a[s].trim()}};break;case 29:this.$=a[s].trim(),r.setAccTitle(this.$);break;case 30:case 31:this.$=a[s].trim(),r.setAccDescription(this.$);break;case 32:this.$={stmt:`click`,id:a[s-3],url:a[s-2],tooltip:a[s-1]};break;case 33:this.$={stmt:`click`,id:a[s-3],url:a[s-1],tooltip:``};break;case 34:case 35:this.$={stmt:`classDef`,id:a[s-1].trim(),classes:a[s].trim()};break;case 36:this.$={stmt:`style`,id:a[s-1].trim(),styleClass:a[s].trim()};break;case 37:this.$={stmt:`applyClass`,id:a[s-1].trim(),styleClass:a[s].trim()};break;case 38:r.setDirection(`TB`),this.$={stmt:`dir`,value:`TB`};break;case 39:r.setDirection(`BT`),this.$={stmt:`dir`,value:`BT`};break;case 40:r.setDirection(`RL`),this.$={stmt:`dir`,value:`RL`};break;case 41:r.setDirection(`LR`),this.$={stmt:`dir`,value:`LR`};break;case 44:case 45:this.$={stmt:`state`,id:a[s].trim(),type:`default`,description:``};break;case 46:this.$={stmt:`state`,id:a[s-2].trim(),classes:[a[s].trim()],type:`default`,description:``};break;case 47:this.$={stmt:`state`,id:a[s-2].trim(),classes:[a[s].trim()],type:`default`,description:``}}},`anonymous`),table:[{3:1,4:t,5:r,6:i},{1:[3]},{3:5,4:t,5:r,6:i},{3:6,4:t,5:r,6:i},e([1,4,5,16,17,19,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],a,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:o,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:c,17:l,19:u,22:d,24:f,25:p,26:m,27:h,28:g,29:_,32:25,33:v,35:y,37:b,38:x,41:S,45:C,48:w,51:T,52:E,53:D,54:O,57:k},e(A,[2,5]),{9:39,10:12,11:13,12:14,13:15,16:c,17:l,19:u,22:d,24:f,25:p,26:m,27:h,28:g,29:_,32:25,33:v,35:y,37:b,38:x,41:S,45:C,48:w,51:T,52:E,53:D,54:O,57:k},e(A,[2,7]),e(A,[2,8]),e(A,[2,9]),e(A,[2,10]),e(A,[2,11]),e(A,[2,12],{14:[1,40],15:[1,41]}),e(A,[2,16]),{18:[1,42]},e(A,[2,18],{20:[1,43]}),{23:[1,44]},e(A,[2,22]),e(A,[2,23]),e(A,[2,24]),e(A,[2,25]),{30:45,31:[1,46],59:[1,47],60:[1,48]},e(A,[2,28]),{34:[1,49]},{36:[1,50]},e(A,[2,31]),{13:51,24:f,57:k},{42:[1,52],44:[1,53]},{46:[1,54]},{49:[1,55]},e(j,[2,44],{58:[1,56]}),e(j,[2,45],{58:[1,57]}),e(A,[2,38]),e(A,[2,39]),e(A,[2,40]),e(A,[2,41]),e(A,[2,6]),e(A,[2,13]),{13:58,24:f,57:k},e(A,[2,17]),e(M,a,{7:59}),{24:[1,60]},{24:[1,61]},{23:[1,62]},{24:[2,48]},{24:[2,49]},e(A,[2,29]),e(A,[2,30]),{39:[1,63],40:[1,64]},{43:[1,65]},{43:[1,66]},{47:[1,67]},{50:[1,68]},{24:[1,69]},{24:[1,70]},e(A,[2,14],{14:[1,71]}),{4:o,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:c,17:l,19:u,21:[1,72],22:d,24:f,25:p,26:m,27:h,28:g,29:_,32:25,33:v,35:y,37:b,38:x,41:S,45:C,48:w,51:T,52:E,53:D,54:O,57:k},e(A,[2,20],{20:[1,73]}),{31:[1,74]},{24:[1,75]},{39:[1,76]},{39:[1,77]},e(A,[2,34]),e(A,[2,35]),e(A,[2,36]),e(A,[2,37]),e(j,[2,46]),e(j,[2,47]),e(A,[2,15]),e(A,[2,19]),e(M,a,{7:78}),e(A,[2,26]),e(A,[2,27]),{5:[1,79]},{5:[1,80]},{4:o,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:c,17:l,19:u,21:[1,81],22:d,24:f,25:p,26:m,27:h,28:g,29:_,32:25,33:v,35:y,37:b,38:x,41:S,45:C,48:w,51:T,52:E,53:D,54:O,57:k},e(A,[2,32]),e(A,[2,33]),e(A,[2,21])],defaultActions:{5:[2,1],6:[2,2],47:[2,48],48:[2,49]},parseError:n(function(e,t){if(t.recoverable)this.trace(e);else{var n=Error(e);throw n.hash=t,n}},`parseError`),parse:n(function(e){var t=this,r=[0],i=[],a=[null],o=[],s=this.table,c=``,l=0,u=0,d=0,f=2,p=1,m=o.slice.call(arguments,1),h=Object.create(this.lexer),g={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(g.yy[_]=this.yy[_]);h.setInput(e,g.yy),g.yy.lexer=h,g.yy.parser=this,h.yylloc===void 0&&(h.yylloc={});var v=h.yylloc;o.push(v);var y=h.options&&h.options.ranges;this.parseError=typeof g.yy.parseError==`function`?g.yy.parseError:Object.getPrototypeOf(this).parseError;function b(e){r.length-=2*e,a.length-=e,o.length-=e}n(b,`popStack`);function x(){var e=i.pop()||h.lex()||p;return typeof e!=`number`&&(e instanceof Array&&(i=e,e=i.pop()),e=t.symbols_[e]||e),e}n(x,`lex`);for(var S,C,w,T,E,D={},O,k,A,j;;){if(w=r[r.length-1],this.defaultActions[w]?T=this.defaultActions[w]:(S??=x(),T=s[w]&&s[w][S]),T===void 0||!T.length||!T[0]){var M=``;for(O in j=[],s[w])this.terminals_[O]&&O>f&&j.push(`'`+this.terminals_[O]+`'`);M=h.showPosition?`Parse error on line `+(l+1)+`:
1
+ import{Et as e,Ft as t,Ht as n,Ot as r,Tt as i,U as a,Y as o,a as s,at as c,f as l,it as u,q as d,st as f,ut as p,zt as m}from"./chunk-NSK5VX7P-CBCyTZMs.js";import{n as h}from"./index-Bgt4sXpW.js";import{n as g,t as _}from"./chunk-KBJHAD2P-DZOw7xU6.js";import{t as v}from"./chunk-2GRJ4B5K-HdDf8SI3.js";var y=(function(){var e=n(function(e,t,n,r){for(n||={},r=e.length;r--;n[e[r]]=t);return n},`o`),t=[1,2],r=[1,3],i=[1,4],a=[2,4],o=[1,9],s=[1,11],c=[1,16],l=[1,17],u=[1,18],d=[1,19],f=[1,33],p=[1,20],m=[1,21],h=[1,22],g=[1,23],_=[1,24],v=[1,26],y=[1,27],b=[1,28],x=[1,29],S=[1,30],C=[1,31],w=[1,32],T=[1,35],E=[1,36],D=[1,37],O=[1,38],k=[1,34],A=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],j=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,39,40,41,45,48,51,52,53,54,57],M=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],N={trace:n(function(){},`trace`),yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,classDefStatement:10,styleStatement:11,cssClassStatement:12,idStatement:13,DESCR:14,"-->":15,HIDE_EMPTY:16,scale:17,WIDTH:18,COMPOSIT_STATE:19,STRUCT_START:20,STRUCT_STOP:21,STATE_DESCR:22,AS:23,ID:24,FORK:25,JOIN:26,CHOICE:27,CONCURRENT:28,note:29,notePosition:30,NOTE_TEXT:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,CLICK:38,STRING:39,HREF:40,classDef:41,CLASSDEF_ID:42,CLASSDEF_STYLEOPTS:43,DEFAULT:44,style:45,STYLE_IDS:46,STYLEDEF_STYLEOPTS:47,class:48,CLASSENTITY_IDS:49,STYLECLASS:50,direction_tb:51,direction_bt:52,direction_rl:53,direction_lr:54,eol:55,";":56,EDGE_STATE:57,STYLE_SEPARATOR:58,left_of:59,right_of:60,$accept:0,$end:1},terminals_:{2:`error`,4:`SPACE`,5:`NL`,6:`SD`,14:`DESCR`,15:`-->`,16:`HIDE_EMPTY`,17:`scale`,18:`WIDTH`,19:`COMPOSIT_STATE`,20:`STRUCT_START`,21:`STRUCT_STOP`,22:`STATE_DESCR`,23:`AS`,24:`ID`,25:`FORK`,26:`JOIN`,27:`CHOICE`,28:`CONCURRENT`,29:`note`,31:`NOTE_TEXT`,33:`acc_title`,34:`acc_title_value`,35:`acc_descr`,36:`acc_descr_value`,37:`acc_descr_multiline_value`,38:`CLICK`,39:`STRING`,40:`HREF`,41:`classDef`,42:`CLASSDEF_ID`,43:`CLASSDEF_STYLEOPTS`,44:`DEFAULT`,45:`style`,46:`STYLE_IDS`,47:`STYLEDEF_STYLEOPTS`,48:`class`,49:`CLASSENTITY_IDS`,50:`STYLECLASS`,51:`direction_tb`,52:`direction_bt`,53:`direction_rl`,54:`direction_lr`,56:`;`,57:`EDGE_STATE`,58:`STYLE_SEPARATOR`,59:`left_of`,60:`right_of`},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,1],[9,4],[9,4],[9,1],[9,2],[9,2],[9,1],[9,5],[9,5],[10,3],[10,3],[11,3],[12,3],[32,1],[32,1],[32,1],[32,1],[55,1],[55,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1]],performAction:n(function(e,t,n,r,i,a,o){var s=a.length-1;switch(i){case 3:return r.setRootDoc(a[s]),a[s];case 4:this.$=[];break;case 5:a[s]!=`nl`&&(a[s-1].push(a[s]),this.$=a[s-1]);break;case 6:case 7:this.$=a[s];break;case 8:this.$=`nl`;break;case 12:this.$=a[s];break;case 13:let e=a[s-1];e.description=r.trimColon(a[s]),this.$=e;break;case 14:this.$={stmt:`relation`,state1:a[s-2],state2:a[s]};break;case 15:let t=r.trimColon(a[s]);this.$={stmt:`relation`,state1:a[s-3],state2:a[s-1],description:t};break;case 19:this.$={stmt:`state`,id:a[s-3],type:`default`,description:``,doc:a[s-1]};break;case 20:var c=a[s],l=a[s-2].trim();if(a[s].match(`:`)){var u=a[s].split(`:`);c=u[0],l=[l,u[1]]}this.$={stmt:`state`,id:c,type:`default`,description:l};break;case 21:this.$={stmt:`state`,id:a[s-3],type:`default`,description:a[s-5],doc:a[s-1]};break;case 22:this.$={stmt:`state`,id:a[s],type:`fork`};break;case 23:this.$={stmt:`state`,id:a[s],type:`join`};break;case 24:this.$={stmt:`state`,id:a[s],type:`choice`};break;case 25:this.$={stmt:`state`,id:r.getDividerId(),type:`divider`};break;case 26:this.$={stmt:`state`,id:a[s-1].trim(),note:{position:a[s-2].trim(),text:a[s].trim()}};break;case 29:this.$=a[s].trim(),r.setAccTitle(this.$);break;case 30:case 31:this.$=a[s].trim(),r.setAccDescription(this.$);break;case 32:this.$={stmt:`click`,id:a[s-3],url:a[s-2],tooltip:a[s-1]};break;case 33:this.$={stmt:`click`,id:a[s-3],url:a[s-1],tooltip:``};break;case 34:case 35:this.$={stmt:`classDef`,id:a[s-1].trim(),classes:a[s].trim()};break;case 36:this.$={stmt:`style`,id:a[s-1].trim(),styleClass:a[s].trim()};break;case 37:this.$={stmt:`applyClass`,id:a[s-1].trim(),styleClass:a[s].trim()};break;case 38:r.setDirection(`TB`),this.$={stmt:`dir`,value:`TB`};break;case 39:r.setDirection(`BT`),this.$={stmt:`dir`,value:`BT`};break;case 40:r.setDirection(`RL`),this.$={stmt:`dir`,value:`RL`};break;case 41:r.setDirection(`LR`),this.$={stmt:`dir`,value:`LR`};break;case 44:case 45:this.$={stmt:`state`,id:a[s].trim(),type:`default`,description:``};break;case 46:this.$={stmt:`state`,id:a[s-2].trim(),classes:[a[s].trim()],type:`default`,description:``};break;case 47:this.$={stmt:`state`,id:a[s-2].trim(),classes:[a[s].trim()],type:`default`,description:``}}},`anonymous`),table:[{3:1,4:t,5:r,6:i},{1:[3]},{3:5,4:t,5:r,6:i},{3:6,4:t,5:r,6:i},e([1,4,5,16,17,19,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],a,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:o,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:c,17:l,19:u,22:d,24:f,25:p,26:m,27:h,28:g,29:_,32:25,33:v,35:y,37:b,38:x,41:S,45:C,48:w,51:T,52:E,53:D,54:O,57:k},e(A,[2,5]),{9:39,10:12,11:13,12:14,13:15,16:c,17:l,19:u,22:d,24:f,25:p,26:m,27:h,28:g,29:_,32:25,33:v,35:y,37:b,38:x,41:S,45:C,48:w,51:T,52:E,53:D,54:O,57:k},e(A,[2,7]),e(A,[2,8]),e(A,[2,9]),e(A,[2,10]),e(A,[2,11]),e(A,[2,12],{14:[1,40],15:[1,41]}),e(A,[2,16]),{18:[1,42]},e(A,[2,18],{20:[1,43]}),{23:[1,44]},e(A,[2,22]),e(A,[2,23]),e(A,[2,24]),e(A,[2,25]),{30:45,31:[1,46],59:[1,47],60:[1,48]},e(A,[2,28]),{34:[1,49]},{36:[1,50]},e(A,[2,31]),{13:51,24:f,57:k},{42:[1,52],44:[1,53]},{46:[1,54]},{49:[1,55]},e(j,[2,44],{58:[1,56]}),e(j,[2,45],{58:[1,57]}),e(A,[2,38]),e(A,[2,39]),e(A,[2,40]),e(A,[2,41]),e(A,[2,6]),e(A,[2,13]),{13:58,24:f,57:k},e(A,[2,17]),e(M,a,{7:59}),{24:[1,60]},{24:[1,61]},{23:[1,62]},{24:[2,48]},{24:[2,49]},e(A,[2,29]),e(A,[2,30]),{39:[1,63],40:[1,64]},{43:[1,65]},{43:[1,66]},{47:[1,67]},{50:[1,68]},{24:[1,69]},{24:[1,70]},e(A,[2,14],{14:[1,71]}),{4:o,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:c,17:l,19:u,21:[1,72],22:d,24:f,25:p,26:m,27:h,28:g,29:_,32:25,33:v,35:y,37:b,38:x,41:S,45:C,48:w,51:T,52:E,53:D,54:O,57:k},e(A,[2,20],{20:[1,73]}),{31:[1,74]},{24:[1,75]},{39:[1,76]},{39:[1,77]},e(A,[2,34]),e(A,[2,35]),e(A,[2,36]),e(A,[2,37]),e(j,[2,46]),e(j,[2,47]),e(A,[2,15]),e(A,[2,19]),e(M,a,{7:78}),e(A,[2,26]),e(A,[2,27]),{5:[1,79]},{5:[1,80]},{4:o,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:c,17:l,19:u,21:[1,81],22:d,24:f,25:p,26:m,27:h,28:g,29:_,32:25,33:v,35:y,37:b,38:x,41:S,45:C,48:w,51:T,52:E,53:D,54:O,57:k},e(A,[2,32]),e(A,[2,33]),e(A,[2,21])],defaultActions:{5:[2,1],6:[2,2],47:[2,48],48:[2,49]},parseError:n(function(e,t){if(t.recoverable)this.trace(e);else{var n=Error(e);throw n.hash=t,n}},`parseError`),parse:n(function(e){var t=this,r=[0],i=[],a=[null],o=[],s=this.table,c=``,l=0,u=0,d=0,f=2,p=1,m=o.slice.call(arguments,1),h=Object.create(this.lexer),g={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(g.yy[_]=this.yy[_]);h.setInput(e,g.yy),g.yy.lexer=h,g.yy.parser=this,h.yylloc===void 0&&(h.yylloc={});var v=h.yylloc;o.push(v);var y=h.options&&h.options.ranges;this.parseError=typeof g.yy.parseError==`function`?g.yy.parseError:Object.getPrototypeOf(this).parseError;function b(e){r.length-=2*e,a.length-=e,o.length-=e}n(b,`popStack`);function x(){var e=i.pop()||h.lex()||p;return typeof e!=`number`&&(e instanceof Array&&(i=e,e=i.pop()),e=t.symbols_[e]||e),e}n(x,`lex`);for(var S,C,w,T,E,D={},O,k,A,j;;){if(w=r[r.length-1],this.defaultActions[w]?T=this.defaultActions[w]:(S??=x(),T=s[w]&&s[w][S]),T===void 0||!T.length||!T[0]){var M=``;for(O in j=[],s[w])this.terminals_[O]&&O>f&&j.push(`'`+this.terminals_[O]+`'`);M=h.showPosition?`Parse error on line `+(l+1)+`:
2
2
  `+h.showPosition()+`
3
3
  Expecting `+j.join(`, `)+`, got '`+(this.terminals_[S]||S)+`'`:`Parse error on line `+(l+1)+`: Unexpected `+(S==p?`end of input`:`'`+(this.terminals_[S]||S)+`'`),this.parseError(M,{text:h.match,token:this.terminals_[S]||S,line:h.yylineno,loc:v,expected:j})}if(T[0]instanceof Array&&T.length>1)throw Error(`Parse Error: multiple actions possible at state: `+w+`, token: `+S);switch(T[0]){case 1:r.push(S),a.push(h.yytext),o.push(h.yylloc),r.push(T[1]),S=null,C?(S=C,C=null):(u=h.yyleng,c=h.yytext,l=h.yylineno,v=h.yylloc,d>0&&d--);break;case 2:if(k=this.productions_[T[1]][1],D.$=a[a.length-k],D._$={first_line:o[o.length-(k||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(k||1)].first_column,last_column:o[o.length-1].last_column},y&&(D._$.range=[o[o.length-(k||1)].range[0],o[o.length-1].range[1]]),E=this.performAction.apply(D,[c,u,l,g.yy,T[1],a,o].concat(m)),E!==void 0)return E;k&&(r=r.slice(0,-1*k*2),a=a.slice(0,-1*k),o=o.slice(0,-1*k)),r.push(this.productions_[T[1]][0]),a.push(D.$),o.push(D._$),A=s[r[r.length-2]][r[r.length-1]],r.push(A);break;case 3:return!0}}return!0},`parse`)};N.lexer=(function(){return{EOF:1,parseError:n(function(e,t){if(this.yy.parser)this.yy.parser.parseError(e,t);else throw Error(e)},`parseError`),setInput:n(function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match=``,this.conditionStack=[`INITIAL`],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},`setInput`),input:n(function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},`input`),unput:n(function(e){var t=e.length,n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},`unput`),more:n(function(){return this._more=!0,this},`more`),reject:n(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError(`Lexical error on line `+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
4
4
  `+this.showPosition(),{text:``,token:null,line:this.yylineno});return this},`reject`),less:n(function(e){this.unput(this.match.slice(e))},`less`),pastInput:n(function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?`...`:``)+e.substr(-20).replace(/\n/g,``)},`pastInput`),upcomingInput:n(function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?`...`:``)).replace(/\n/g,``)},`upcomingInput`),showPosition:n(function(){var e=this.pastInput(),t=Array(e.length+1).join(`-`);return e+this.upcomingInput()+`
@@ -1,4 +1,4 @@
1
- import{Et as e,Ft as t,Ht as n,Ot as r,St as i,Tt as a,U as o,Y as s,at as c,f as l,gt as u,it as d,o as f,q as p,st as m,ut as h,zt as g}from"./chunk-NSK5VX7P-CBCyTZMs.js";import{n as _,t as v}from"./index-Obj05Jex.js";import{t as y}from"./chunk-5VM5RSS4-BP4fRS_5.js";import{n as b,t as x}from"./chunk-KBJHAD2P-DZOw7xU6.js";import{t as S}from"./chunk-2GRJ4B5K-HdDf8SI3.js";var C=(function(){var e=n(function(e,t,n,r){for(n||={},r=e.length;r--;n[e[r]]=t);return n},`o`),t=[1,18],r=[1,19],i=[1,20],a=[1,41],o=[1,26],s=[1,42],c=[1,24],l=[1,25],u=[1,32],d=[1,33],f=[1,34],p=[1,45],m=[1,35],h=[1,36],g=[1,37],_=[1,38],v=[1,27],y=[1,28],b=[1,29],x=[1,30],S=[1,31],C=[1,44],w=[1,46],T=[1,43],E=[1,47],D=[1,9],O=[1,8,9],k=[1,58],A=[1,59],j=[1,60],M=[1,61],N=[1,62],P=[1,63],ee=[1,64],F=[1,8,9,41],te=[1,77],I=[1,8,9,12,13,22,39,41,44,46,68,69,70,71,72,73,74,79,81],L=[1,8,9,12,13,18,20,22,39,41,44,46,47,60,68,69,70,71,72,73,74,79,81,86,100,102,103],R=[13,60,86,100,102,103],z=[13,60,73,74,86,100,102,103],ne=[13,60,68,69,70,71,72,86,100,102,103],B=[1,103],V=[1,121],H=[1,117],U=[1,113],W=[1,119],G=[1,114],K=[1,115],q=[1,116],J=[1,118],Y=[1,120],re=[22,50,60,61,82,86,87,88,89,90],ie=[1,128],X=[12,39],ae=[1,8,9,39,41,44,46],Z=[1,8,9,22],oe=[1,153],se=[1,8,9,61],Q=[1,8,9,22,50,60,61,82,86,87,88,89,90],ce={trace:n(function(){},`trace`),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,statements:5,graphConfig:6,CLASS_DIAGRAM:7,NEWLINE:8,EOF:9,statement:10,classLabel:11,SQS:12,STR:13,SQE:14,namespaceName:15,alphaNumToken:16,classLiteralName:17,DOT:18,className:19,GENERICTYPE:20,relationStatement:21,LABEL:22,namespaceStatement:23,classStatement:24,memberStatement:25,annotationStatement:26,clickStatement:27,styleStatement:28,cssClassStatement:29,noteStatement:30,classDefStatement:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,namespaceIdentifier:38,STRUCT_START:39,classStatements:40,STRUCT_STOP:41,NAMESPACE:42,classIdentifier:43,STYLE_SEPARATOR:44,members:45,ANNOTATION_START:46,ANNOTATION_END:47,CLASS:48,emptyBody:49,SPACE:50,MEMBER:51,SEPARATOR:52,relation:53,NOTE_FOR:54,noteText:55,NOTE:56,CLASSDEF:57,classList:58,stylesOpt:59,ALPHA:60,COMMA:61,direction_tb:62,direction_bt:63,direction_rl:64,direction_lr:65,relationType:66,lineType:67,AGGREGATION:68,EXTENSION:69,COMPOSITION:70,DEPENDENCY:71,LOLLIPOP:72,LINE:73,DOTTED_LINE:74,CALLBACK:75,LINK:76,LINK_TARGET:77,CLICK:78,CALLBACK_NAME:79,CALLBACK_ARGS:80,HREF:81,STYLE:82,CSSCLASS:83,style:84,styleComponent:85,NUM:86,COLON:87,UNIT:88,BRKT:89,PCT:90,commentToken:91,textToken:92,graphCodeTokens:93,textNoTagsToken:94,TAGSTART:95,TAGEND:96,"==":97,"--":98,DEFAULT:99,MINUS:100,keywords:101,UNICODE_TEXT:102,BQUOTE_STR:103,$accept:0,$end:1},terminals_:{2:`error`,7:`CLASS_DIAGRAM`,8:`NEWLINE`,9:`EOF`,12:`SQS`,13:`STR`,14:`SQE`,18:`DOT`,20:`GENERICTYPE`,22:`LABEL`,33:`acc_title`,34:`acc_title_value`,35:`acc_descr`,36:`acc_descr_value`,37:`acc_descr_multiline_value`,39:`STRUCT_START`,41:`STRUCT_STOP`,42:`NAMESPACE`,44:`STYLE_SEPARATOR`,46:`ANNOTATION_START`,47:`ANNOTATION_END`,48:`CLASS`,50:`SPACE`,51:`MEMBER`,52:`SEPARATOR`,54:`NOTE_FOR`,56:`NOTE`,57:`CLASSDEF`,60:`ALPHA`,61:`COMMA`,62:`direction_tb`,63:`direction_bt`,64:`direction_rl`,65:`direction_lr`,68:`AGGREGATION`,69:`EXTENSION`,70:`COMPOSITION`,71:`DEPENDENCY`,72:`LOLLIPOP`,73:`LINE`,74:`DOTTED_LINE`,75:`CALLBACK`,76:`LINK`,77:`LINK_TARGET`,78:`CLICK`,79:`CALLBACK_NAME`,80:`CALLBACK_ARGS`,81:`HREF`,82:`STYLE`,83:`CSSCLASS`,86:`NUM`,87:`COLON`,88:`UNIT`,89:`BRKT`,90:`PCT`,93:`graphCodeTokens`,95:`TAGSTART`,96:`TAGEND`,97:`==`,98:`--`,99:`DEFAULT`,100:`MINUS`,101:`keywords`,102:`UNICODE_TEXT`,103:`BQUOTE_STR`},productions_:[0,[3,1],[3,1],[4,1],[6,4],[5,1],[5,2],[5,3],[11,3],[15,1],[15,1],[15,3],[15,2],[19,1],[19,3],[19,1],[19,2],[19,2],[19,2],[10,1],[10,2],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[23,4],[23,5],[38,2],[38,3],[40,1],[40,2],[40,3],[40,1],[40,2],[40,3],[40,1],[40,2],[40,3],[24,1],[24,3],[24,4],[24,3],[24,6],[24,4],[24,7],[24,6],[43,2],[43,3],[49,0],[49,2],[49,2],[26,4],[45,1],[45,2],[25,1],[25,2],[25,1],[25,1],[21,3],[21,4],[21,4],[21,5],[30,3],[30,2],[31,3],[58,1],[58,3],[32,1],[32,1],[32,1],[32,1],[53,3],[53,2],[53,2],[53,1],[66,1],[66,1],[66,1],[66,1],[66,1],[67,1],[67,1],[27,3],[27,4],[27,3],[27,4],[27,4],[27,5],[27,3],[27,4],[27,4],[27,5],[27,4],[27,5],[27,5],[27,6],[28,3],[29,3],[59,1],[59,3],[84,1],[84,2],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[91,1],[91,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[94,1],[94,1],[94,1],[94,1],[16,1],[16,1],[16,1],[16,1],[17,1],[55,1]],performAction:n(function(e,t,n,r,i,a,o){var s=a.length-1;switch(i){case 8:this.$=a[s-1];break;case 9:case 10:case 13:case 15:this.$=a[s];break;case 11:case 14:this.$=a[s-2]+`.`+a[s];break;case 12:case 16:this.$=a[s-1]+a[s];break;case 17:case 18:this.$=a[s-1]+`~`+a[s]+`~`;break;case 19:r.addRelation(a[s]);break;case 20:a[s-1].title=r.cleanupLabel(a[s]),r.addRelation(a[s-1]);break;case 31:this.$=a[s].trim(),r.setAccTitle(this.$);break;case 32:case 33:this.$=a[s].trim(),r.setAccDescription(this.$);break;case 34:r.addClassesToNamespace(a[s-3],a[s-1][0],a[s-1][1]),r.popNamespace();break;case 35:r.addClassesToNamespace(a[s-4],a[s-1][0],a[s-1][1]),r.popNamespace();break;case 36:this.$=r.addNamespace(a[s]);break;case 37:this.$=r.addNamespace(a[s-1],a[s]);break;case 38:this.$=[[a[s]],[]];break;case 39:this.$=[[a[s-1]],[]];break;case 40:a[s][0].unshift(a[s-2]),this.$=a[s];break;case 41:this.$=[[],[a[s]]];break;case 42:this.$=[[],[a[s-1]]];break;case 43:a[s][1].unshift(a[s-2]),this.$=a[s];break;case 44:case 45:this.$=[[],[]];break;case 46:this.$=a[s];break;case 48:r.setCssClass(a[s-2],a[s]);break;case 49:r.addMembers(a[s-3],a[s-1]);break;case 51:r.setCssClass(a[s-5],a[s-3]),r.addMembers(a[s-5],a[s-1]);break;case 52:r.addAnnotation(a[s-3],a[s-1]);break;case 53:r.addAnnotation(a[s-6],a[s-4]),r.addMembers(a[s-6],a[s-1]);break;case 54:r.addAnnotation(a[s-5],a[s-3]);break;case 55:this.$=a[s],r.addClass(a[s]);break;case 56:this.$=a[s-1],r.addClass(a[s-1]),r.setClassLabel(a[s-1],a[s]);break;case 60:r.addAnnotation(a[s],a[s-2]);break;case 61:case 74:this.$=[a[s]];break;case 62:a[s].push(a[s-1]),this.$=a[s];break;case 63:break;case 64:r.addMember(a[s-1],r.cleanupLabel(a[s]));break;case 65:break;case 66:break;case 67:this.$={id1:a[s-2],id2:a[s],relation:a[s-1],relationTitle1:`none`,relationTitle2:`none`};break;case 68:this.$={id1:a[s-3],id2:a[s],relation:a[s-1],relationTitle1:a[s-2],relationTitle2:`none`};break;case 69:this.$={id1:a[s-3],id2:a[s],relation:a[s-2],relationTitle1:`none`,relationTitle2:a[s-1]};break;case 70:this.$={id1:a[s-4],id2:a[s],relation:a[s-2],relationTitle1:a[s-3],relationTitle2:a[s-1]};break;case 71:this.$=r.addNote(a[s],a[s-1]);break;case 72:this.$=r.addNote(a[s]);break;case 73:this.$=a[s-2],r.defineClass(a[s-1],a[s]);break;case 75:this.$=a[s-2].concat([a[s]]);break;case 76:r.setDirection(`TB`);break;case 77:r.setDirection(`BT`);break;case 78:r.setDirection(`RL`);break;case 79:r.setDirection(`LR`);break;case 80:this.$={type1:a[s-2],type2:a[s],lineType:a[s-1]};break;case 81:this.$={type1:`none`,type2:a[s],lineType:a[s-1]};break;case 82:this.$={type1:a[s-1],type2:`none`,lineType:a[s]};break;case 83:this.$={type1:`none`,type2:`none`,lineType:a[s]};break;case 84:this.$=r.relationType.AGGREGATION;break;case 85:this.$=r.relationType.EXTENSION;break;case 86:this.$=r.relationType.COMPOSITION;break;case 87:this.$=r.relationType.DEPENDENCY;break;case 88:this.$=r.relationType.LOLLIPOP;break;case 89:this.$=r.lineType.LINE;break;case 90:this.$=r.lineType.DOTTED_LINE;break;case 91:case 97:this.$=a[s-2],r.setClickEvent(a[s-1],a[s]);break;case 92:case 98:this.$=a[s-3],r.setClickEvent(a[s-2],a[s-1]),r.setTooltip(a[s-2],a[s]);break;case 93:this.$=a[s-2],r.setLink(a[s-1],a[s]);break;case 94:this.$=a[s-3],r.setLink(a[s-2],a[s-1],a[s]);break;case 95:this.$=a[s-3],r.setLink(a[s-2],a[s-1]),r.setTooltip(a[s-2],a[s]);break;case 96:this.$=a[s-4],r.setLink(a[s-3],a[s-2],a[s]),r.setTooltip(a[s-3],a[s-1]);break;case 99:this.$=a[s-3],r.setClickEvent(a[s-2],a[s-1],a[s]);break;case 100:this.$=a[s-4],r.setClickEvent(a[s-3],a[s-2],a[s-1]),r.setTooltip(a[s-3],a[s]);break;case 101:this.$=a[s-3],r.setLink(a[s-2],a[s]);break;case 102:this.$=a[s-4],r.setLink(a[s-3],a[s-1],a[s]);break;case 103:this.$=a[s-4],r.setLink(a[s-3],a[s-1]),r.setTooltip(a[s-3],a[s]);break;case 104:this.$=a[s-5],r.setLink(a[s-4],a[s-2],a[s]),r.setTooltip(a[s-4],a[s-1]);break;case 105:this.$=a[s-2],r.setCssStyle(a[s-1],a[s]);break;case 106:r.setCssClass(a[s-1],a[s]);break;case 107:this.$=[a[s]];break;case 108:a[s-2].push(a[s]),this.$=a[s-2];break;case 110:this.$=a[s-1]+a[s]}},`anonymous`),table:[{3:1,4:2,5:3,6:4,7:[1,6],10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:t,35:r,37:i,38:22,42:a,43:23,46:o,48:s,51:c,52:l,54:u,56:d,57:f,60:p,62:m,63:h,64:g,65:_,75:v,76:y,78:b,82:x,83:S,86:C,100:w,102:T,103:E},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},e(D,[2,5],{8:[1,48]}),{8:[1,49]},e(O,[2,19],{22:[1,50]}),e(O,[2,21]),e(O,[2,22]),e(O,[2,23]),e(O,[2,24]),e(O,[2,25]),e(O,[2,26]),e(O,[2,27]),e(O,[2,28]),e(O,[2,29]),e(O,[2,30]),{34:[1,51]},{36:[1,52]},e(O,[2,33]),e(O,[2,63],{53:53,66:56,67:57,13:[1,54],22:[1,55],68:k,69:A,70:j,71:M,72:N,73:P,74:ee}),{39:[1,65]},e(F,[2,47],{39:[1,67],44:[1,66],46:[1,68]}),e(O,[2,65]),e(O,[2,66]),{16:69,60:p,86:C,100:w,102:T},{16:39,17:40,19:70,60:p,86:C,100:w,102:T,103:E},{16:39,17:40,19:71,60:p,86:C,100:w,102:T,103:E},{16:39,17:40,19:72,60:p,86:C,100:w,102:T,103:E},{60:[1,73]},{13:[1,74]},{16:39,17:40,19:75,60:p,86:C,100:w,102:T,103:E},{13:te,55:76},{58:78,60:[1,79]},e(O,[2,76]),e(O,[2,77]),e(O,[2,78]),e(O,[2,79]),e(I,[2,13],{16:39,17:40,19:81,18:[1,80],20:[1,82],60:p,86:C,100:w,102:T,103:E}),e(I,[2,15],{20:[1,83]}),{15:84,16:85,17:86,60:p,86:C,100:w,102:T,103:E},{16:39,17:40,19:87,60:p,86:C,100:w,102:T,103:E},e(L,[2,133]),e(L,[2,134]),e(L,[2,135]),e(L,[2,136]),e([1,8,9,12,13,20,22,39,41,44,46,68,69,70,71,72,73,74,79,81],[2,137]),e(D,[2,6],{10:5,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,19:21,38:22,43:23,16:39,17:40,5:88,33:t,35:r,37:i,42:a,46:o,48:s,51:c,52:l,54:u,56:d,57:f,60:p,62:m,63:h,64:g,65:_,75:v,76:y,78:b,82:x,83:S,86:C,100:w,102:T,103:E}),{5:89,10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:t,35:r,37:i,38:22,42:a,43:23,46:o,48:s,51:c,52:l,54:u,56:d,57:f,60:p,62:m,63:h,64:g,65:_,75:v,76:y,78:b,82:x,83:S,86:C,100:w,102:T,103:E},e(O,[2,20]),e(O,[2,31]),e(O,[2,32]),{13:[1,91],16:39,17:40,19:90,60:p,86:C,100:w,102:T,103:E},{53:92,66:56,67:57,68:k,69:A,70:j,71:M,72:N,73:P,74:ee},e(O,[2,64]),{67:93,73:P,74:ee},e(R,[2,83],{66:94,68:k,69:A,70:j,71:M,72:N}),e(z,[2,84]),e(z,[2,85]),e(z,[2,86]),e(z,[2,87]),e(z,[2,88]),e(ne,[2,89]),e(ne,[2,90]),{8:[1,96],23:99,24:97,30:98,38:22,40:95,42:a,43:23,48:s,54:u,56:d},{16:100,60:p,86:C,100:w,102:T},{41:[1,102],45:101,51:B},{16:104,60:p,86:C,100:w,102:T},{47:[1,105]},{13:[1,106]},{13:[1,107]},{79:[1,108],81:[1,109]},{22:V,50:H,59:110,60:U,82:W,84:111,85:112,86:G,87:K,88:q,89:J,90:Y},{60:[1,122]},{13:te,55:123},e(F,[2,72]),e(F,[2,138]),{22:V,50:H,59:124,60:U,61:[1,125],82:W,84:111,85:112,86:G,87:K,88:q,89:J,90:Y},e(re,[2,74]),{16:39,17:40,19:126,60:p,86:C,100:w,102:T,103:E},e(I,[2,16]),e(I,[2,17]),e(I,[2,18]),{11:127,12:ie,39:[2,36]},e(X,[2,9],{16:85,17:86,15:130,18:[1,129],60:p,86:C,100:w,102:T,103:E}),e(X,[2,10]),e(ae,[2,55],{11:131,12:ie}),e(D,[2,7]),{9:[1,132]},e(Z,[2,67]),{16:39,17:40,19:133,60:p,86:C,100:w,102:T,103:E},{13:[1,135],16:39,17:40,19:134,60:p,86:C,100:w,102:T,103:E},e(R,[2,82],{66:136,68:k,69:A,70:j,71:M,72:N}),e(R,[2,81]),{41:[1,137]},{23:99,24:97,30:98,38:22,40:138,42:a,43:23,48:s,54:u,56:d},{8:[1,139],41:[2,38]},{8:[1,140],41:[2,41]},{8:[1,141],41:[2,44]},e(F,[2,48],{39:[1,142]}),{41:[1,143]},e(F,[2,50]),{41:[2,61],45:144,51:B},{47:[1,145]},{16:39,17:40,19:146,60:p,86:C,100:w,102:T,103:E},e(O,[2,91],{13:[1,147]}),e(O,[2,93],{13:[1,149],77:[1,148]}),e(O,[2,97],{13:[1,150],80:[1,151]}),{13:[1,152]},e(O,[2,105],{61:oe}),e(se,[2,107],{85:154,22:V,50:H,60:U,82:W,86:G,87:K,88:q,89:J,90:Y}),e(Q,[2,109]),e(Q,[2,111]),e(Q,[2,112]),e(Q,[2,113]),e(Q,[2,114]),e(Q,[2,115]),e(Q,[2,116]),e(Q,[2,117]),e(Q,[2,118]),e(Q,[2,119]),e(O,[2,106]),e(F,[2,71]),e(O,[2,73],{61:oe}),{60:[1,155]},e(I,[2,14]),{39:[2,37]},{13:[1,156]},{15:157,16:85,17:86,60:p,86:C,100:w,102:T,103:E},e(X,[2,12]),e(ae,[2,56]),{1:[2,4]},e(Z,[2,69]),e(Z,[2,68]),{16:39,17:40,19:158,60:p,86:C,100:w,102:T,103:E},e(R,[2,80]),e(F,[2,34]),{41:[1,159]},{23:99,24:97,30:98,38:22,40:160,41:[2,39],42:a,43:23,48:s,54:u,56:d},{23:99,24:97,30:98,38:22,40:161,41:[2,42],42:a,43:23,48:s,54:u,56:d},{23:99,24:97,30:98,38:22,40:162,41:[2,45],42:a,43:23,48:s,54:u,56:d},{45:163,51:B},e(F,[2,49]),{41:[2,62]},e(F,[2,52],{39:[1,164]}),e(O,[2,60]),e(O,[2,92]),e(O,[2,94]),e(O,[2,95],{77:[1,165]}),e(O,[2,98]),e(O,[2,99],{13:[1,166]}),e(O,[2,101],{13:[1,168],77:[1,167]}),{22:V,50:H,60:U,82:W,84:169,85:112,86:G,87:K,88:q,89:J,90:Y},e(Q,[2,110]),e(re,[2,75]),{14:[1,170]},e(X,[2,11]),e(Z,[2,70]),e(F,[2,35]),{41:[2,40]},{41:[2,43]},{41:[2,46]},{41:[1,171]},{41:[1,173],45:172,51:B},e(O,[2,96]),e(O,[2,100]),e(O,[2,102]),e(O,[2,103],{77:[1,174]}),e(se,[2,108],{85:154,22:V,50:H,60:U,82:W,86:G,87:K,88:q,89:J,90:Y}),e(ae,[2,8]),e(F,[2,51]),{41:[1,175]},e(F,[2,54]),e(O,[2,104]),e(F,[2,53])],defaultActions:{2:[2,1],3:[2,2],4:[2,3],127:[2,37],132:[2,4],144:[2,62],160:[2,40],161:[2,43],162:[2,46]},parseError:n(function(e,t){if(t.recoverable)this.trace(e);else{var n=Error(e);throw n.hash=t,n}},`parseError`),parse:n(function(e){var t=this,r=[0],i=[],a=[null],o=[],s=this.table,c=``,l=0,u=0,d=0,f=2,p=1,m=o.slice.call(arguments,1),h=Object.create(this.lexer),g={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(g.yy[_]=this.yy[_]);h.setInput(e,g.yy),g.yy.lexer=h,g.yy.parser=this,h.yylloc===void 0&&(h.yylloc={});var v=h.yylloc;o.push(v);var y=h.options&&h.options.ranges;this.parseError=typeof g.yy.parseError==`function`?g.yy.parseError:Object.getPrototypeOf(this).parseError;function b(e){r.length-=2*e,a.length-=e,o.length-=e}n(b,`popStack`);function x(){var e=i.pop()||h.lex()||p;return typeof e!=`number`&&(e instanceof Array&&(i=e,e=i.pop()),e=t.symbols_[e]||e),e}n(x,`lex`);for(var S,C,w,T,E,D={},O,k,A,j;;){if(w=r[r.length-1],this.defaultActions[w]?T=this.defaultActions[w]:(S??=x(),T=s[w]&&s[w][S]),T===void 0||!T.length||!T[0]){var M=``;for(O in j=[],s[w])this.terminals_[O]&&O>f&&j.push(`'`+this.terminals_[O]+`'`);M=h.showPosition?`Parse error on line `+(l+1)+`:
1
+ import{Et as e,Ft as t,Ht as n,Ot as r,St as i,Tt as a,U as o,Y as s,at as c,f as l,gt as u,it as d,o as f,q as p,st as m,ut as h,zt as g}from"./chunk-NSK5VX7P-CBCyTZMs.js";import{n as _,t as v}from"./index-Bgt4sXpW.js";import{t as y}from"./chunk-5VM5RSS4-BP4fRS_5.js";import{n as b,t as x}from"./chunk-KBJHAD2P-DZOw7xU6.js";import{t as S}from"./chunk-2GRJ4B5K-HdDf8SI3.js";var C=(function(){var e=n(function(e,t,n,r){for(n||={},r=e.length;r--;n[e[r]]=t);return n},`o`),t=[1,18],r=[1,19],i=[1,20],a=[1,41],o=[1,26],s=[1,42],c=[1,24],l=[1,25],u=[1,32],d=[1,33],f=[1,34],p=[1,45],m=[1,35],h=[1,36],g=[1,37],_=[1,38],v=[1,27],y=[1,28],b=[1,29],x=[1,30],S=[1,31],C=[1,44],w=[1,46],T=[1,43],E=[1,47],D=[1,9],O=[1,8,9],k=[1,58],A=[1,59],j=[1,60],M=[1,61],N=[1,62],P=[1,63],ee=[1,64],F=[1,8,9,41],te=[1,77],I=[1,8,9,12,13,22,39,41,44,46,68,69,70,71,72,73,74,79,81],L=[1,8,9,12,13,18,20,22,39,41,44,46,47,60,68,69,70,71,72,73,74,79,81,86,100,102,103],R=[13,60,86,100,102,103],z=[13,60,73,74,86,100,102,103],ne=[13,60,68,69,70,71,72,86,100,102,103],B=[1,103],V=[1,121],H=[1,117],U=[1,113],W=[1,119],G=[1,114],K=[1,115],q=[1,116],J=[1,118],Y=[1,120],re=[22,50,60,61,82,86,87,88,89,90],ie=[1,128],X=[12,39],ae=[1,8,9,39,41,44,46],Z=[1,8,9,22],oe=[1,153],se=[1,8,9,61],Q=[1,8,9,22,50,60,61,82,86,87,88,89,90],ce={trace:n(function(){},`trace`),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,statements:5,graphConfig:6,CLASS_DIAGRAM:7,NEWLINE:8,EOF:9,statement:10,classLabel:11,SQS:12,STR:13,SQE:14,namespaceName:15,alphaNumToken:16,classLiteralName:17,DOT:18,className:19,GENERICTYPE:20,relationStatement:21,LABEL:22,namespaceStatement:23,classStatement:24,memberStatement:25,annotationStatement:26,clickStatement:27,styleStatement:28,cssClassStatement:29,noteStatement:30,classDefStatement:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,namespaceIdentifier:38,STRUCT_START:39,classStatements:40,STRUCT_STOP:41,NAMESPACE:42,classIdentifier:43,STYLE_SEPARATOR:44,members:45,ANNOTATION_START:46,ANNOTATION_END:47,CLASS:48,emptyBody:49,SPACE:50,MEMBER:51,SEPARATOR:52,relation:53,NOTE_FOR:54,noteText:55,NOTE:56,CLASSDEF:57,classList:58,stylesOpt:59,ALPHA:60,COMMA:61,direction_tb:62,direction_bt:63,direction_rl:64,direction_lr:65,relationType:66,lineType:67,AGGREGATION:68,EXTENSION:69,COMPOSITION:70,DEPENDENCY:71,LOLLIPOP:72,LINE:73,DOTTED_LINE:74,CALLBACK:75,LINK:76,LINK_TARGET:77,CLICK:78,CALLBACK_NAME:79,CALLBACK_ARGS:80,HREF:81,STYLE:82,CSSCLASS:83,style:84,styleComponent:85,NUM:86,COLON:87,UNIT:88,BRKT:89,PCT:90,commentToken:91,textToken:92,graphCodeTokens:93,textNoTagsToken:94,TAGSTART:95,TAGEND:96,"==":97,"--":98,DEFAULT:99,MINUS:100,keywords:101,UNICODE_TEXT:102,BQUOTE_STR:103,$accept:0,$end:1},terminals_:{2:`error`,7:`CLASS_DIAGRAM`,8:`NEWLINE`,9:`EOF`,12:`SQS`,13:`STR`,14:`SQE`,18:`DOT`,20:`GENERICTYPE`,22:`LABEL`,33:`acc_title`,34:`acc_title_value`,35:`acc_descr`,36:`acc_descr_value`,37:`acc_descr_multiline_value`,39:`STRUCT_START`,41:`STRUCT_STOP`,42:`NAMESPACE`,44:`STYLE_SEPARATOR`,46:`ANNOTATION_START`,47:`ANNOTATION_END`,48:`CLASS`,50:`SPACE`,51:`MEMBER`,52:`SEPARATOR`,54:`NOTE_FOR`,56:`NOTE`,57:`CLASSDEF`,60:`ALPHA`,61:`COMMA`,62:`direction_tb`,63:`direction_bt`,64:`direction_rl`,65:`direction_lr`,68:`AGGREGATION`,69:`EXTENSION`,70:`COMPOSITION`,71:`DEPENDENCY`,72:`LOLLIPOP`,73:`LINE`,74:`DOTTED_LINE`,75:`CALLBACK`,76:`LINK`,77:`LINK_TARGET`,78:`CLICK`,79:`CALLBACK_NAME`,80:`CALLBACK_ARGS`,81:`HREF`,82:`STYLE`,83:`CSSCLASS`,86:`NUM`,87:`COLON`,88:`UNIT`,89:`BRKT`,90:`PCT`,93:`graphCodeTokens`,95:`TAGSTART`,96:`TAGEND`,97:`==`,98:`--`,99:`DEFAULT`,100:`MINUS`,101:`keywords`,102:`UNICODE_TEXT`,103:`BQUOTE_STR`},productions_:[0,[3,1],[3,1],[4,1],[6,4],[5,1],[5,2],[5,3],[11,3],[15,1],[15,1],[15,3],[15,2],[19,1],[19,3],[19,1],[19,2],[19,2],[19,2],[10,1],[10,2],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[23,4],[23,5],[38,2],[38,3],[40,1],[40,2],[40,3],[40,1],[40,2],[40,3],[40,1],[40,2],[40,3],[24,1],[24,3],[24,4],[24,3],[24,6],[24,4],[24,7],[24,6],[43,2],[43,3],[49,0],[49,2],[49,2],[26,4],[45,1],[45,2],[25,1],[25,2],[25,1],[25,1],[21,3],[21,4],[21,4],[21,5],[30,3],[30,2],[31,3],[58,1],[58,3],[32,1],[32,1],[32,1],[32,1],[53,3],[53,2],[53,2],[53,1],[66,1],[66,1],[66,1],[66,1],[66,1],[67,1],[67,1],[27,3],[27,4],[27,3],[27,4],[27,4],[27,5],[27,3],[27,4],[27,4],[27,5],[27,4],[27,5],[27,5],[27,6],[28,3],[29,3],[59,1],[59,3],[84,1],[84,2],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[91,1],[91,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[94,1],[94,1],[94,1],[94,1],[16,1],[16,1],[16,1],[16,1],[17,1],[55,1]],performAction:n(function(e,t,n,r,i,a,o){var s=a.length-1;switch(i){case 8:this.$=a[s-1];break;case 9:case 10:case 13:case 15:this.$=a[s];break;case 11:case 14:this.$=a[s-2]+`.`+a[s];break;case 12:case 16:this.$=a[s-1]+a[s];break;case 17:case 18:this.$=a[s-1]+`~`+a[s]+`~`;break;case 19:r.addRelation(a[s]);break;case 20:a[s-1].title=r.cleanupLabel(a[s]),r.addRelation(a[s-1]);break;case 31:this.$=a[s].trim(),r.setAccTitle(this.$);break;case 32:case 33:this.$=a[s].trim(),r.setAccDescription(this.$);break;case 34:r.addClassesToNamespace(a[s-3],a[s-1][0],a[s-1][1]),r.popNamespace();break;case 35:r.addClassesToNamespace(a[s-4],a[s-1][0],a[s-1][1]),r.popNamespace();break;case 36:this.$=r.addNamespace(a[s]);break;case 37:this.$=r.addNamespace(a[s-1],a[s]);break;case 38:this.$=[[a[s]],[]];break;case 39:this.$=[[a[s-1]],[]];break;case 40:a[s][0].unshift(a[s-2]),this.$=a[s];break;case 41:this.$=[[],[a[s]]];break;case 42:this.$=[[],[a[s-1]]];break;case 43:a[s][1].unshift(a[s-2]),this.$=a[s];break;case 44:case 45:this.$=[[],[]];break;case 46:this.$=a[s];break;case 48:r.setCssClass(a[s-2],a[s]);break;case 49:r.addMembers(a[s-3],a[s-1]);break;case 51:r.setCssClass(a[s-5],a[s-3]),r.addMembers(a[s-5],a[s-1]);break;case 52:r.addAnnotation(a[s-3],a[s-1]);break;case 53:r.addAnnotation(a[s-6],a[s-4]),r.addMembers(a[s-6],a[s-1]);break;case 54:r.addAnnotation(a[s-5],a[s-3]);break;case 55:this.$=a[s],r.addClass(a[s]);break;case 56:this.$=a[s-1],r.addClass(a[s-1]),r.setClassLabel(a[s-1],a[s]);break;case 60:r.addAnnotation(a[s],a[s-2]);break;case 61:case 74:this.$=[a[s]];break;case 62:a[s].push(a[s-1]),this.$=a[s];break;case 63:break;case 64:r.addMember(a[s-1],r.cleanupLabel(a[s]));break;case 65:break;case 66:break;case 67:this.$={id1:a[s-2],id2:a[s],relation:a[s-1],relationTitle1:`none`,relationTitle2:`none`};break;case 68:this.$={id1:a[s-3],id2:a[s],relation:a[s-1],relationTitle1:a[s-2],relationTitle2:`none`};break;case 69:this.$={id1:a[s-3],id2:a[s],relation:a[s-2],relationTitle1:`none`,relationTitle2:a[s-1]};break;case 70:this.$={id1:a[s-4],id2:a[s],relation:a[s-2],relationTitle1:a[s-3],relationTitle2:a[s-1]};break;case 71:this.$=r.addNote(a[s],a[s-1]);break;case 72:this.$=r.addNote(a[s]);break;case 73:this.$=a[s-2],r.defineClass(a[s-1],a[s]);break;case 75:this.$=a[s-2].concat([a[s]]);break;case 76:r.setDirection(`TB`);break;case 77:r.setDirection(`BT`);break;case 78:r.setDirection(`RL`);break;case 79:r.setDirection(`LR`);break;case 80:this.$={type1:a[s-2],type2:a[s],lineType:a[s-1]};break;case 81:this.$={type1:`none`,type2:a[s],lineType:a[s-1]};break;case 82:this.$={type1:a[s-1],type2:`none`,lineType:a[s]};break;case 83:this.$={type1:`none`,type2:`none`,lineType:a[s]};break;case 84:this.$=r.relationType.AGGREGATION;break;case 85:this.$=r.relationType.EXTENSION;break;case 86:this.$=r.relationType.COMPOSITION;break;case 87:this.$=r.relationType.DEPENDENCY;break;case 88:this.$=r.relationType.LOLLIPOP;break;case 89:this.$=r.lineType.LINE;break;case 90:this.$=r.lineType.DOTTED_LINE;break;case 91:case 97:this.$=a[s-2],r.setClickEvent(a[s-1],a[s]);break;case 92:case 98:this.$=a[s-3],r.setClickEvent(a[s-2],a[s-1]),r.setTooltip(a[s-2],a[s]);break;case 93:this.$=a[s-2],r.setLink(a[s-1],a[s]);break;case 94:this.$=a[s-3],r.setLink(a[s-2],a[s-1],a[s]);break;case 95:this.$=a[s-3],r.setLink(a[s-2],a[s-1]),r.setTooltip(a[s-2],a[s]);break;case 96:this.$=a[s-4],r.setLink(a[s-3],a[s-2],a[s]),r.setTooltip(a[s-3],a[s-1]);break;case 99:this.$=a[s-3],r.setClickEvent(a[s-2],a[s-1],a[s]);break;case 100:this.$=a[s-4],r.setClickEvent(a[s-3],a[s-2],a[s-1]),r.setTooltip(a[s-3],a[s]);break;case 101:this.$=a[s-3],r.setLink(a[s-2],a[s]);break;case 102:this.$=a[s-4],r.setLink(a[s-3],a[s-1],a[s]);break;case 103:this.$=a[s-4],r.setLink(a[s-3],a[s-1]),r.setTooltip(a[s-3],a[s]);break;case 104:this.$=a[s-5],r.setLink(a[s-4],a[s-2],a[s]),r.setTooltip(a[s-4],a[s-1]);break;case 105:this.$=a[s-2],r.setCssStyle(a[s-1],a[s]);break;case 106:r.setCssClass(a[s-1],a[s]);break;case 107:this.$=[a[s]];break;case 108:a[s-2].push(a[s]),this.$=a[s-2];break;case 110:this.$=a[s-1]+a[s]}},`anonymous`),table:[{3:1,4:2,5:3,6:4,7:[1,6],10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:t,35:r,37:i,38:22,42:a,43:23,46:o,48:s,51:c,52:l,54:u,56:d,57:f,60:p,62:m,63:h,64:g,65:_,75:v,76:y,78:b,82:x,83:S,86:C,100:w,102:T,103:E},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},e(D,[2,5],{8:[1,48]}),{8:[1,49]},e(O,[2,19],{22:[1,50]}),e(O,[2,21]),e(O,[2,22]),e(O,[2,23]),e(O,[2,24]),e(O,[2,25]),e(O,[2,26]),e(O,[2,27]),e(O,[2,28]),e(O,[2,29]),e(O,[2,30]),{34:[1,51]},{36:[1,52]},e(O,[2,33]),e(O,[2,63],{53:53,66:56,67:57,13:[1,54],22:[1,55],68:k,69:A,70:j,71:M,72:N,73:P,74:ee}),{39:[1,65]},e(F,[2,47],{39:[1,67],44:[1,66],46:[1,68]}),e(O,[2,65]),e(O,[2,66]),{16:69,60:p,86:C,100:w,102:T},{16:39,17:40,19:70,60:p,86:C,100:w,102:T,103:E},{16:39,17:40,19:71,60:p,86:C,100:w,102:T,103:E},{16:39,17:40,19:72,60:p,86:C,100:w,102:T,103:E},{60:[1,73]},{13:[1,74]},{16:39,17:40,19:75,60:p,86:C,100:w,102:T,103:E},{13:te,55:76},{58:78,60:[1,79]},e(O,[2,76]),e(O,[2,77]),e(O,[2,78]),e(O,[2,79]),e(I,[2,13],{16:39,17:40,19:81,18:[1,80],20:[1,82],60:p,86:C,100:w,102:T,103:E}),e(I,[2,15],{20:[1,83]}),{15:84,16:85,17:86,60:p,86:C,100:w,102:T,103:E},{16:39,17:40,19:87,60:p,86:C,100:w,102:T,103:E},e(L,[2,133]),e(L,[2,134]),e(L,[2,135]),e(L,[2,136]),e([1,8,9,12,13,20,22,39,41,44,46,68,69,70,71,72,73,74,79,81],[2,137]),e(D,[2,6],{10:5,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,19:21,38:22,43:23,16:39,17:40,5:88,33:t,35:r,37:i,42:a,46:o,48:s,51:c,52:l,54:u,56:d,57:f,60:p,62:m,63:h,64:g,65:_,75:v,76:y,78:b,82:x,83:S,86:C,100:w,102:T,103:E}),{5:89,10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:t,35:r,37:i,38:22,42:a,43:23,46:o,48:s,51:c,52:l,54:u,56:d,57:f,60:p,62:m,63:h,64:g,65:_,75:v,76:y,78:b,82:x,83:S,86:C,100:w,102:T,103:E},e(O,[2,20]),e(O,[2,31]),e(O,[2,32]),{13:[1,91],16:39,17:40,19:90,60:p,86:C,100:w,102:T,103:E},{53:92,66:56,67:57,68:k,69:A,70:j,71:M,72:N,73:P,74:ee},e(O,[2,64]),{67:93,73:P,74:ee},e(R,[2,83],{66:94,68:k,69:A,70:j,71:M,72:N}),e(z,[2,84]),e(z,[2,85]),e(z,[2,86]),e(z,[2,87]),e(z,[2,88]),e(ne,[2,89]),e(ne,[2,90]),{8:[1,96],23:99,24:97,30:98,38:22,40:95,42:a,43:23,48:s,54:u,56:d},{16:100,60:p,86:C,100:w,102:T},{41:[1,102],45:101,51:B},{16:104,60:p,86:C,100:w,102:T},{47:[1,105]},{13:[1,106]},{13:[1,107]},{79:[1,108],81:[1,109]},{22:V,50:H,59:110,60:U,82:W,84:111,85:112,86:G,87:K,88:q,89:J,90:Y},{60:[1,122]},{13:te,55:123},e(F,[2,72]),e(F,[2,138]),{22:V,50:H,59:124,60:U,61:[1,125],82:W,84:111,85:112,86:G,87:K,88:q,89:J,90:Y},e(re,[2,74]),{16:39,17:40,19:126,60:p,86:C,100:w,102:T,103:E},e(I,[2,16]),e(I,[2,17]),e(I,[2,18]),{11:127,12:ie,39:[2,36]},e(X,[2,9],{16:85,17:86,15:130,18:[1,129],60:p,86:C,100:w,102:T,103:E}),e(X,[2,10]),e(ae,[2,55],{11:131,12:ie}),e(D,[2,7]),{9:[1,132]},e(Z,[2,67]),{16:39,17:40,19:133,60:p,86:C,100:w,102:T,103:E},{13:[1,135],16:39,17:40,19:134,60:p,86:C,100:w,102:T,103:E},e(R,[2,82],{66:136,68:k,69:A,70:j,71:M,72:N}),e(R,[2,81]),{41:[1,137]},{23:99,24:97,30:98,38:22,40:138,42:a,43:23,48:s,54:u,56:d},{8:[1,139],41:[2,38]},{8:[1,140],41:[2,41]},{8:[1,141],41:[2,44]},e(F,[2,48],{39:[1,142]}),{41:[1,143]},e(F,[2,50]),{41:[2,61],45:144,51:B},{47:[1,145]},{16:39,17:40,19:146,60:p,86:C,100:w,102:T,103:E},e(O,[2,91],{13:[1,147]}),e(O,[2,93],{13:[1,149],77:[1,148]}),e(O,[2,97],{13:[1,150],80:[1,151]}),{13:[1,152]},e(O,[2,105],{61:oe}),e(se,[2,107],{85:154,22:V,50:H,60:U,82:W,86:G,87:K,88:q,89:J,90:Y}),e(Q,[2,109]),e(Q,[2,111]),e(Q,[2,112]),e(Q,[2,113]),e(Q,[2,114]),e(Q,[2,115]),e(Q,[2,116]),e(Q,[2,117]),e(Q,[2,118]),e(Q,[2,119]),e(O,[2,106]),e(F,[2,71]),e(O,[2,73],{61:oe}),{60:[1,155]},e(I,[2,14]),{39:[2,37]},{13:[1,156]},{15:157,16:85,17:86,60:p,86:C,100:w,102:T,103:E},e(X,[2,12]),e(ae,[2,56]),{1:[2,4]},e(Z,[2,69]),e(Z,[2,68]),{16:39,17:40,19:158,60:p,86:C,100:w,102:T,103:E},e(R,[2,80]),e(F,[2,34]),{41:[1,159]},{23:99,24:97,30:98,38:22,40:160,41:[2,39],42:a,43:23,48:s,54:u,56:d},{23:99,24:97,30:98,38:22,40:161,41:[2,42],42:a,43:23,48:s,54:u,56:d},{23:99,24:97,30:98,38:22,40:162,41:[2,45],42:a,43:23,48:s,54:u,56:d},{45:163,51:B},e(F,[2,49]),{41:[2,62]},e(F,[2,52],{39:[1,164]}),e(O,[2,60]),e(O,[2,92]),e(O,[2,94]),e(O,[2,95],{77:[1,165]}),e(O,[2,98]),e(O,[2,99],{13:[1,166]}),e(O,[2,101],{13:[1,168],77:[1,167]}),{22:V,50:H,60:U,82:W,84:169,85:112,86:G,87:K,88:q,89:J,90:Y},e(Q,[2,110]),e(re,[2,75]),{14:[1,170]},e(X,[2,11]),e(Z,[2,70]),e(F,[2,35]),{41:[2,40]},{41:[2,43]},{41:[2,46]},{41:[1,171]},{41:[1,173],45:172,51:B},e(O,[2,96]),e(O,[2,100]),e(O,[2,102]),e(O,[2,103],{77:[1,174]}),e(se,[2,108],{85:154,22:V,50:H,60:U,82:W,86:G,87:K,88:q,89:J,90:Y}),e(ae,[2,8]),e(F,[2,51]),{41:[1,175]},e(F,[2,54]),e(O,[2,104]),e(F,[2,53])],defaultActions:{2:[2,1],3:[2,2],4:[2,3],127:[2,37],132:[2,4],144:[2,62],160:[2,40],161:[2,43],162:[2,46]},parseError:n(function(e,t){if(t.recoverable)this.trace(e);else{var n=Error(e);throw n.hash=t,n}},`parseError`),parse:n(function(e){var t=this,r=[0],i=[],a=[null],o=[],s=this.table,c=``,l=0,u=0,d=0,f=2,p=1,m=o.slice.call(arguments,1),h=Object.create(this.lexer),g={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(g.yy[_]=this.yy[_]);h.setInput(e,g.yy),g.yy.lexer=h,g.yy.parser=this,h.yylloc===void 0&&(h.yylloc={});var v=h.yylloc;o.push(v);var y=h.options&&h.options.ranges;this.parseError=typeof g.yy.parseError==`function`?g.yy.parseError:Object.getPrototypeOf(this).parseError;function b(e){r.length-=2*e,a.length-=e,o.length-=e}n(b,`popStack`);function x(){var e=i.pop()||h.lex()||p;return typeof e!=`number`&&(e instanceof Array&&(i=e,e=i.pop()),e=t.symbols_[e]||e),e}n(x,`lex`);for(var S,C,w,T,E,D={},O,k,A,j;;){if(w=r[r.length-1],this.defaultActions[w]?T=this.defaultActions[w]:(S??=x(),T=s[w]&&s[w][S]),T===void 0||!T.length||!T[0]){var M=``;for(O in j=[],s[w])this.terminals_[O]&&O>f&&j.push(`'`+this.terminals_[O]+`'`);M=h.showPosition?`Parse error on line `+(l+1)+`:
2
2
  `+h.showPosition()+`
3
3
  Expecting `+j.join(`, `)+`, got '`+(this.terminals_[S]||S)+`'`:`Parse error on line `+(l+1)+`: Unexpected `+(S==p?`end of input`:`'`+(this.terminals_[S]||S)+`'`),this.parseError(M,{text:h.match,token:this.terminals_[S]||S,line:h.yylineno,loc:v,expected:j})}if(T[0]instanceof Array&&T.length>1)throw Error(`Parse Error: multiple actions possible at state: `+w+`, token: `+S);switch(T[0]){case 1:r.push(S),a.push(h.yytext),o.push(h.yylloc),r.push(T[1]),S=null,C?(S=C,C=null):(u=h.yyleng,c=h.yytext,l=h.yylineno,v=h.yylloc,d>0&&d--);break;case 2:if(k=this.productions_[T[1]][1],D.$=a[a.length-k],D._$={first_line:o[o.length-(k||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(k||1)].first_column,last_column:o[o.length-1].last_column},y&&(D._$.range=[o[o.length-(k||1)].range[0],o[o.length-1].range[1]]),E=this.performAction.apply(D,[c,u,l,g.yy,T[1],a,o].concat(m)),E!==void 0)return E;k&&(r=r.slice(0,-1*k*2),a=a.slice(0,-1*k),o=o.slice(0,-1*k)),r.push(this.productions_[T[1]][0]),a.push(D.$),o.push(D._$),A=s[r[r.length-2]][r[r.length-1]],r.push(A);break;case 3:return!0}}return!0},`parse`)};ce.lexer=(function(){return{EOF:1,parseError:n(function(e,t){if(this.yy.parser)this.yy.parser.parseError(e,t);else throw Error(e)},`parseError`),setInput:n(function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match=``,this.conditionStack=[`INITIAL`],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},`setInput`),input:n(function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},`input`),unput:n(function(e){var t=e.length,n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},`unput`),more:n(function(){return this._more=!0,this},`more`),reject:n(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError(`Lexical error on line `+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
4
4
  `+this.showPosition(),{text:``,token:null,line:this.yylineno});return this},`reject`),less:n(function(e){this.unput(this.match.slice(e))},`less`),pastInput:n(function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?`...`:``)+e.substr(-20).replace(/\n/g,``)},`pastInput`),upcomingInput:n(function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?`...`:``)).replace(/\n/g,``)},`upcomingInput`),showPosition:n(function(){var e=this.pastInput(),t=Array(e.length+1).join(`-`);return e+this.upcomingInput()+`
@@ -1,4 +1,4 @@
1
- import{Ht as e,st as t,zt as n}from"./chunk-NSK5VX7P-CBCyTZMs.js";import{a as r,c as i,d as a,f as o,h as s,i as c,l,m as u,o as d,p as f,r as p,s as m,u as h}from"./index-Obj05Jex.js";import{a as g,i as _,n as v,r as y,t as b}from"./dagre-K_PewWfS.js";var x=4;function S(e){return g(e,x)}function C(e){var t={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:w(e),edges:T(e)};return y(e.graph())||(t.value=S(e.graph())),t}function w(e){return _(e.nodes(),function(t){var n=e.node(t),r=e.parent(t),i={v:t};return y(n)||(i.value=n),y(r)||(i.parent=r),i})}function T(e){return _(e.edges(),function(t){var n=e.edge(t),r={v:t.v,w:t.w};return y(t.name)||(r.name=t.name),y(n)||(r.value=n),r})}var E=new Map,D=new Map,O=new Map,k=e(()=>{D.clear(),O.clear(),E.clear()},`clear`),A=e((e,t)=>{let r=D.get(t)||[];return n.trace(`In isDescendant`,t,` `,e,` = `,r.includes(e)),r.includes(e)},`isDescendant`),j=e((e,t)=>{let r=D.get(t)||[];return n.info(`Descendants of `,t,` is `,r),n.info(`Edge is `,e),e.v===t||e.w===t?!1:r?r.includes(e.v)||A(e.v,t)||A(e.w,t)||r.includes(e.w):(n.debug(`Tilt, `,t,`,not in descendants`),!1)},`edgeInCluster`),M=e((e,t,r,i)=>{n.warn(`Copying children of `,e,`root`,i,`data`,t.node(e),i);let a=t.children(e)||[];e!==i&&a.push(e),n.warn(`Copying (nodes) clusterId`,e,`nodes`,a),a.forEach(a=>{if(t.children(a).length>0)M(a,t,r,i);else{let o=t.node(a);n.info(`cp `,a,` to `,i,` with parent `,e),r.setNode(a,o),i!==t.parent(a)&&(n.warn(`Setting parent`,a,t.parent(a)),r.setParent(a,t.parent(a))),e!==i&&a!==e?(n.debug(`Setting parent`,a,e),r.setParent(a,e)):(n.info(`In copy `,e,`root`,i,`data`,t.node(e),i),n.debug(`Not Setting parent for node=`,a,`cluster!==rootId`,e!==i,`node!==clusterId`,a!==e));let s=t.edges(a);n.debug(`Copying Edges`,s),s.forEach(a=>{n.info(`Edge`,a);let o=t.edge(a.v,a.w,a.name);n.info(`Edge data`,o,i);try{if(j(a,i)){let e=D.get(i)||[],s=e.includes(a.v)||A(a.v,i)||a.v===i,c=e.includes(a.w)||A(a.w,i)||a.w===i;if(s&&c)n.info(`Copying as `,a.v,a.w,o,a.name),r.setEdge(a.v,a.w,o,a.name),n.info(`newGraph edges `,r.edges(),r.edge(r.edges()[0]));else{let e=s?i:a.v,r=c?i:a.w;n.info(`Rebinding cross-boundary edge as `,e,r,o,a.name),t.setEdge(e,r,o,a.name)}}else n.info(`Skipping copy of edge `,a.v,`-->`,a.w,` rootId: `,i,` clusterId:`,e)}catch(e){n.error(e)}})}n.debug(`Removing node`,a),t.removeNode(a)})},`copy`),N=e((e,t)=>{let n=t.children(e),r=[...n];for(let i of n)O.set(i,e),r=[...r,...N(i,t)];return r},`extractDescendants`),P=e((e,t,n)=>{let r=e.edges().filter(e=>e.v===t||e.w===t),i=e.edges().filter(e=>e.v===n||e.w===n),a=r.map(e=>({v:e.v===t?n:e.v,w:e.w===t?t:e.w})),o=i.map(e=>({v:e.v,w:e.w}));return a.filter(e=>o.some(t=>e.v===t.v&&e.w===t.w))},`findCommonEdges`),F=e((e,t,r)=>{let i=t.children(e);if(n.trace(`Searching children of id `,e,i),i.length<1)return e;let a;for(let e of i){let n=F(e,t,r),i=P(t,r,n);if(n){if(i.length>0)a=n;else return n}}return a},`findNonClusterChild`),I=e(e=>!E.has(e)||!E.get(e).externalConnections?e:E.has(e)?E.get(e).id:e,`getAnchorId`),L=e((e,t)=>{if(!e||t>10){n.debug(`Opting out, no graph `);return}n.debug(`Opting in, graph `),e.nodes().forEach(function(t){e.children(t).length>0&&(n.warn(`Cluster identified`,t,` Replacement id in edges: `,F(t,e,t)),D.set(t,N(t,e)),E.set(t,{id:F(t,e,t),clusterData:e.node(t)}))}),e.nodes().forEach(function(t){let r=e.children(t),i=e.edges();r.length>0?(n.debug(`Cluster identified`,t,D),i.forEach(e=>{A(e.v,t)^A(e.w,t)&&(n.warn(`Edge: `,e,` leaves cluster `,t),n.warn(`Descendants of XXX `,t,`: `,D.get(t)),E.get(t).externalConnections=!0)})):n.debug(`Not a cluster `,t,D)});for(let t of E.keys()){let n=E.get(t).id,r=e.parent(n);r!==t&&E.has(r)&&!E.get(r).externalConnections&&(E.get(t).id=r);let i=e.edges().some(e=>e.v===t);if(n&&E.get(t)?.externalConnections&&i&&V(e,n,t)){let r=H(e,t,e.parent(n));r&&(E.get(t).id=r)}}e.edges().forEach(function(t){let r=e.edge(t);n.warn(`Edge `+t.v+` -> `+t.w+`: `+JSON.stringify(t)),n.warn(`Edge `+t.v+` -> `+t.w+`: `+JSON.stringify(e.edge(t)));let i=t.v,a=t.w;if(n.warn(`Fix XXX`,E,`ids:`,t.v,t.w,`Translating: `,E.get(t.v),` --- `,E.get(t.w)),E.get(t.v)||E.get(t.w)){if(n.warn(`Fixing and trying - removing XXX`,t.v,t.w,t.name),i=I(t.v),a=I(t.w),e.removeEdge(t.v,t.w,t.name),i!==t.v){let n=e.parent(i);E.get(n).externalConnections=!0,r.fromCluster=t.v}if(a!==t.w){let n=e.parent(a);E.get(n).externalConnections=!0,r.toCluster=t.w}n.warn(`Fix Replacing with XXX`,i,a,t.name),e.setEdge(i,a,r,t.name)}}),n.warn(`Adjusted Graph`,C(e)),R(e,0),n.trace(E)},`adjustClustersAndEdges`),R=e((e,t)=>{if(n.warn(`extractor - `,t,C(e),e.children(`D`)),t>10){n.error(`Bailing out`);return}let r=e.nodes(),i=!1;for(let t of r){let n=e.children(t);i||=n.length>0}if(!i){n.debug(`Done, no node has children`,e.nodes());return}n.debug(`Nodes = `,r,t);for(let i of r)if(n.debug(`Extracting node`,i,E,E.has(i)&&!E.get(i).externalConnections,!e.parent(i),e.node(i),e.children(`D`),` Depth `,t),!E.has(i))n.debug(`Not a cluster`,i,t);else if(E.get(i)?.clusterData?.explicitDir&&e.children(i)&&e.children(i).length>0){n.warn(`Cluster with explicit dir, creating subgraph for children`,i,t);let r=E.get(i).clusterData.dir,a=new v({multigraph:!0,compound:!0}).setGraph({rankdir:r,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});M(i,e,a,i);let o=e.node(i)||{};e.setNode(i,{...o,clusterNode:!0,id:i,clusterData:E.get(i).clusterData,label:E.get(i).label,graph:a}),n.warn(`Subgraph for cluster with explicit dir created:`,i,C(a))}else if(!E.get(i).externalConnections&&e.children(i)&&e.children(i).length>0){n.warn(`Cluster without external connections, without a parent and with children`,i,t);let r=e.graph().rankdir===`TB`?`LR`:`TB`;E.get(i)?.clusterData?.dir&&(r=E.get(i).clusterData.dir,n.warn(`Fixing dir`,E.get(i).clusterData.dir,r));let a=new v({multigraph:!0,compound:!0}).setGraph({rankdir:r,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});M(i,e,a,i);let o=e.node(i)||{};e.setNode(i,{...o,clusterNode:!0,id:i,clusterData:E.get(i).clusterData,label:E.get(i).label,graph:a}),n.debug(`Old graph after copy`,C(e))}else n.warn(`Cluster ** `,i,` **not meeting the criteria !externalConnections:`,!E.get(i).externalConnections,` no parent: `,!e.parent(i),` children `,e.children(i)&&e.children(i).length>0,e.children(`D`),t),n.debug(E);r=e.nodes(),n.warn(`New list of nodes`,r);for(let i of r){let r=e.node(i);n.warn(` Now next level`,i,r),r?.clusterNode&&R(r.graph,t+1)}},`extractor`),z=e((e,t)=>{if(t.length===0)return[];let n=Object.assign([],t);return t.forEach(t=>{let r=z(e,e.children(t));n=[...n,...r]}),n},`sorter`),B=e(e=>z(e,e.children()),`sortNodesByHierarchy`),V=e((e,t,n)=>{let r=e.parent(t);for(;r&&r!==n;){let t=E.get(r);if(t&&!t.externalConnections)return!0;r=e.parent(r)}return!1},`isNodeInExtractableCluster`),H=e((e,t,n)=>{let r=e.children(t)??[];for(let i of r){if(i===n||A(i,n))continue;let r=F(i,e,t);if(r&&!V(e,r,t))return r}return null},`findSafeAnchorNode`),U=e((e,t,n)=>Math.max(t,Math.min(n,e)),`clamp`),W=e((e=`TB`)=>{switch(e){case`BT`:return`bottom`;case`LR`:return`right`;case`RL`:return`left`;default:return`top`}},`getDefaultSelfLoopSide`),G=e(e=>e===`flowchart`||e===`flowchart-v2`||e===`stateDiagram`,`shouldMergeSelfLoopSegments`),K=e((e,t,n,r,i)=>{let a=[],o=new Set;if(n.forEach(({start:e,end:t})=>{e!==r&&o.add(e),t!==r&&o.add(t)}),o.forEach(t=>{let n=e.node(t);typeof n?.x==`number`&&typeof n?.y==`number`&&a.push(n)}),a.length===0&&n.forEach(({edge:e})=>{(e.points??[]).forEach(e=>{typeof e?.x==`number`&&typeof e?.y==`number`&&a.push(e)})}),a.length===0)return W(i);let s=a.reduce((e,t)=>({x:e.x+t.x/a.length,y:e.y+t.y/a.length}),{x:0,y:0}),c=s.x-t.x,l=s.y-t.y;return Math.abs(c)>Math.abs(l)?c>0?`right`:`left`:Math.abs(l)>0?l>0?`bottom`:`top`:W(i)},`getSelfLoopSide`),q=e((e,t=`top`,n=0,r=0)=>{let i=e.x,a=e.y-n,o=e.width/2,s=e.height/2,c=Math.max(36,Math.min(100,e.width*.8)),l=U(Math.max(r,e.width*.35),36,c),u=U(Math.min(e.width,e.height)*.45,24,48);switch(t){case`bottom`:{let e=a+s;return[{x:i-l/2,y:e},{x:i-l/2,y:e+u},{x:i+l/2,y:e+u},{x:i+l/2,y:e}]}case`right`:{let e=i+o;return[{x:e,y:a-l/2},{x:e+u,y:a-l/2},{x:e+u,y:a+l/2},{x:e,y:a+l/2}]}case`left`:{let e=i-o;return[{x:e,y:a-l/2},{x:e-u,y:a-l/2},{x:e-u,y:a+l/2},{x:e,y:a+l/2}]}default:{let e=a-s;return[{x:i-l/2,y:e},{x:i-l/2,y:e-u},{x:i+l/2,y:e-u},{x:i+l/2,y:e}]}}},`getSelfLoopPoints`),J=e((e,t,n=`top`,r=0,i={})=>{let a=e.x,o=e.y-r,s=i.width??0,c=i.height??0;switch(n){case`bottom`:return{x:a,y:Math.max(...t.map(e=>e.y))+c/2+4};case`right`:return{x:Math.max(...t.map(e=>e.x))+s/2+4,y:o};case`left`:return{x:Math.min(...t.map(e=>e.x))-s/2-4,y:o};default:return{x:a,y:Math.min(...t.map(e=>e.y))-c/2-4}}},`getSelfLoopLabelPosition`),Y=e((e,t=0,{mergeSelfLoops:n=!0}={})=>{let r=new Map,i=[],a=e.graph()?.rankdir;return e.edges().forEach(t=>{let a=e.edge(t);if(n&&a.selfLoop){let e=a.selfLoop.id;r.has(e)||r.set(e,[]),r.get(e).push({edge:a,start:t.v,end:t.w})}else i.push({edge:a,start:t.v,end:t.w})}),r.forEach(n=>{if(n.length!==3){n.forEach(e=>i.push(e));return}n.sort((e,t)=>e.edge.selfLoop.order-t.edge.selfLoop.order);let[r,o,s]=n,c=r.edge.originalEdge??o.edge.originalEdge??s.edge.originalEdge??o.edge,l=e.node(c.start);if(!l){n.forEach(e=>i.push(e));return}let u={width:o.edge.width,height:o.edge.height},d=K(e,l,n,c.start,a),f=q(l,d,t,u.width??0),p=J(l,f,d,t,u),m={...o.edge,...c,id:c.id,points:f,start:c.start,end:c.end,x:p.x,y:p.y,width:u.width,height:u.height,labelStyle:o.edge.labelStyle,fromCluster:r.edge.fromCluster??o.edge.fromCluster??s.edge.fromCluster,toCluster:r.edge.toCluster??o.edge.toCluster??s.edge.toCluster};delete m.selfLoop,delete m.originalEdge,i.push({edge:m,start:m.start,end:m.end})}),i},`getEdgesToRender`),X=e(async(t,i,l,d,p,g)=>{n.warn(`Graph in recursive render:XAX`,C(i),p);let _=i.graph().rankdir;n.trace(`Dir in recursive render - dir:`,_);let v=t.insert(`g`).attr(`class`,`root`);i.nodes()?n.info(`Recursive render XXX`,i.nodes()):n.info(`No nodes found for`,i),i.edges().length>0&&n.info(`Recursive edges`,i.edge(i.edges()[0]));let y=v.insert(`g`).attr(`class`,`clusters`),x=v.insert(`g`).attr(`class`,`edgePaths`),S=v.insert(`g`).attr(`class`,`edgeLabels`),w=v.insert(`g`).attr(`class`,`nodes`),T=G(l);await Promise.all(i.nodes().map(async function(e){let t=i.node(e);if(p!==void 0){let t=JSON.parse(JSON.stringify(p.clusterData));n.trace(`Setting data for parent cluster XXX
1
+ import{Ht as e,st as t,zt as n}from"./chunk-NSK5VX7P-CBCyTZMs.js";import{a as r,c as i,d as a,f as o,h as s,i as c,l,m as u,o as d,p as f,r as p,s as m,u as h}from"./index-Bgt4sXpW.js";import{a as g,i as _,n as v,r as y,t as b}from"./dagre-K_PewWfS.js";var x=4;function S(e){return g(e,x)}function C(e){var t={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:w(e),edges:T(e)};return y(e.graph())||(t.value=S(e.graph())),t}function w(e){return _(e.nodes(),function(t){var n=e.node(t),r=e.parent(t),i={v:t};return y(n)||(i.value=n),y(r)||(i.parent=r),i})}function T(e){return _(e.edges(),function(t){var n=e.edge(t),r={v:t.v,w:t.w};return y(t.name)||(r.name=t.name),y(n)||(r.value=n),r})}var E=new Map,D=new Map,O=new Map,k=e(()=>{D.clear(),O.clear(),E.clear()},`clear`),A=e((e,t)=>{let r=D.get(t)||[];return n.trace(`In isDescendant`,t,` `,e,` = `,r.includes(e)),r.includes(e)},`isDescendant`),j=e((e,t)=>{let r=D.get(t)||[];return n.info(`Descendants of `,t,` is `,r),n.info(`Edge is `,e),e.v===t||e.w===t?!1:r?r.includes(e.v)||A(e.v,t)||A(e.w,t)||r.includes(e.w):(n.debug(`Tilt, `,t,`,not in descendants`),!1)},`edgeInCluster`),M=e((e,t,r,i)=>{n.warn(`Copying children of `,e,`root`,i,`data`,t.node(e),i);let a=t.children(e)||[];e!==i&&a.push(e),n.warn(`Copying (nodes) clusterId`,e,`nodes`,a),a.forEach(a=>{if(t.children(a).length>0)M(a,t,r,i);else{let o=t.node(a);n.info(`cp `,a,` to `,i,` with parent `,e),r.setNode(a,o),i!==t.parent(a)&&(n.warn(`Setting parent`,a,t.parent(a)),r.setParent(a,t.parent(a))),e!==i&&a!==e?(n.debug(`Setting parent`,a,e),r.setParent(a,e)):(n.info(`In copy `,e,`root`,i,`data`,t.node(e),i),n.debug(`Not Setting parent for node=`,a,`cluster!==rootId`,e!==i,`node!==clusterId`,a!==e));let s=t.edges(a);n.debug(`Copying Edges`,s),s.forEach(a=>{n.info(`Edge`,a);let o=t.edge(a.v,a.w,a.name);n.info(`Edge data`,o,i);try{if(j(a,i)){let e=D.get(i)||[],s=e.includes(a.v)||A(a.v,i)||a.v===i,c=e.includes(a.w)||A(a.w,i)||a.w===i;if(s&&c)n.info(`Copying as `,a.v,a.w,o,a.name),r.setEdge(a.v,a.w,o,a.name),n.info(`newGraph edges `,r.edges(),r.edge(r.edges()[0]));else{let e=s?i:a.v,r=c?i:a.w;n.info(`Rebinding cross-boundary edge as `,e,r,o,a.name),t.setEdge(e,r,o,a.name)}}else n.info(`Skipping copy of edge `,a.v,`-->`,a.w,` rootId: `,i,` clusterId:`,e)}catch(e){n.error(e)}})}n.debug(`Removing node`,a),t.removeNode(a)})},`copy`),N=e((e,t)=>{let n=t.children(e),r=[...n];for(let i of n)O.set(i,e),r=[...r,...N(i,t)];return r},`extractDescendants`),P=e((e,t,n)=>{let r=e.edges().filter(e=>e.v===t||e.w===t),i=e.edges().filter(e=>e.v===n||e.w===n),a=r.map(e=>({v:e.v===t?n:e.v,w:e.w===t?t:e.w})),o=i.map(e=>({v:e.v,w:e.w}));return a.filter(e=>o.some(t=>e.v===t.v&&e.w===t.w))},`findCommonEdges`),F=e((e,t,r)=>{let i=t.children(e);if(n.trace(`Searching children of id `,e,i),i.length<1)return e;let a;for(let e of i){let n=F(e,t,r),i=P(t,r,n);if(n){if(i.length>0)a=n;else return n}}return a},`findNonClusterChild`),I=e(e=>!E.has(e)||!E.get(e).externalConnections?e:E.has(e)?E.get(e).id:e,`getAnchorId`),L=e((e,t)=>{if(!e||t>10){n.debug(`Opting out, no graph `);return}n.debug(`Opting in, graph `),e.nodes().forEach(function(t){e.children(t).length>0&&(n.warn(`Cluster identified`,t,` Replacement id in edges: `,F(t,e,t)),D.set(t,N(t,e)),E.set(t,{id:F(t,e,t),clusterData:e.node(t)}))}),e.nodes().forEach(function(t){let r=e.children(t),i=e.edges();r.length>0?(n.debug(`Cluster identified`,t,D),i.forEach(e=>{A(e.v,t)^A(e.w,t)&&(n.warn(`Edge: `,e,` leaves cluster `,t),n.warn(`Descendants of XXX `,t,`: `,D.get(t)),E.get(t).externalConnections=!0)})):n.debug(`Not a cluster `,t,D)});for(let t of E.keys()){let n=E.get(t).id,r=e.parent(n);r!==t&&E.has(r)&&!E.get(r).externalConnections&&(E.get(t).id=r);let i=e.edges().some(e=>e.v===t);if(n&&E.get(t)?.externalConnections&&i&&V(e,n,t)){let r=H(e,t,e.parent(n));r&&(E.get(t).id=r)}}e.edges().forEach(function(t){let r=e.edge(t);n.warn(`Edge `+t.v+` -> `+t.w+`: `+JSON.stringify(t)),n.warn(`Edge `+t.v+` -> `+t.w+`: `+JSON.stringify(e.edge(t)));let i=t.v,a=t.w;if(n.warn(`Fix XXX`,E,`ids:`,t.v,t.w,`Translating: `,E.get(t.v),` --- `,E.get(t.w)),E.get(t.v)||E.get(t.w)){if(n.warn(`Fixing and trying - removing XXX`,t.v,t.w,t.name),i=I(t.v),a=I(t.w),e.removeEdge(t.v,t.w,t.name),i!==t.v){let n=e.parent(i);E.get(n).externalConnections=!0,r.fromCluster=t.v}if(a!==t.w){let n=e.parent(a);E.get(n).externalConnections=!0,r.toCluster=t.w}n.warn(`Fix Replacing with XXX`,i,a,t.name),e.setEdge(i,a,r,t.name)}}),n.warn(`Adjusted Graph`,C(e)),R(e,0),n.trace(E)},`adjustClustersAndEdges`),R=e((e,t)=>{if(n.warn(`extractor - `,t,C(e),e.children(`D`)),t>10){n.error(`Bailing out`);return}let r=e.nodes(),i=!1;for(let t of r){let n=e.children(t);i||=n.length>0}if(!i){n.debug(`Done, no node has children`,e.nodes());return}n.debug(`Nodes = `,r,t);for(let i of r)if(n.debug(`Extracting node`,i,E,E.has(i)&&!E.get(i).externalConnections,!e.parent(i),e.node(i),e.children(`D`),` Depth `,t),!E.has(i))n.debug(`Not a cluster`,i,t);else if(E.get(i)?.clusterData?.explicitDir&&e.children(i)&&e.children(i).length>0){n.warn(`Cluster with explicit dir, creating subgraph for children`,i,t);let r=E.get(i).clusterData.dir,a=new v({multigraph:!0,compound:!0}).setGraph({rankdir:r,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});M(i,e,a,i);let o=e.node(i)||{};e.setNode(i,{...o,clusterNode:!0,id:i,clusterData:E.get(i).clusterData,label:E.get(i).label,graph:a}),n.warn(`Subgraph for cluster with explicit dir created:`,i,C(a))}else if(!E.get(i).externalConnections&&e.children(i)&&e.children(i).length>0){n.warn(`Cluster without external connections, without a parent and with children`,i,t);let r=e.graph().rankdir===`TB`?`LR`:`TB`;E.get(i)?.clusterData?.dir&&(r=E.get(i).clusterData.dir,n.warn(`Fixing dir`,E.get(i).clusterData.dir,r));let a=new v({multigraph:!0,compound:!0}).setGraph({rankdir:r,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});M(i,e,a,i);let o=e.node(i)||{};e.setNode(i,{...o,clusterNode:!0,id:i,clusterData:E.get(i).clusterData,label:E.get(i).label,graph:a}),n.debug(`Old graph after copy`,C(e))}else n.warn(`Cluster ** `,i,` **not meeting the criteria !externalConnections:`,!E.get(i).externalConnections,` no parent: `,!e.parent(i),` children `,e.children(i)&&e.children(i).length>0,e.children(`D`),t),n.debug(E);r=e.nodes(),n.warn(`New list of nodes`,r);for(let i of r){let r=e.node(i);n.warn(` Now next level`,i,r),r?.clusterNode&&R(r.graph,t+1)}},`extractor`),z=e((e,t)=>{if(t.length===0)return[];let n=Object.assign([],t);return t.forEach(t=>{let r=z(e,e.children(t));n=[...n,...r]}),n},`sorter`),B=e(e=>z(e,e.children()),`sortNodesByHierarchy`),V=e((e,t,n)=>{let r=e.parent(t);for(;r&&r!==n;){let t=E.get(r);if(t&&!t.externalConnections)return!0;r=e.parent(r)}return!1},`isNodeInExtractableCluster`),H=e((e,t,n)=>{let r=e.children(t)??[];for(let i of r){if(i===n||A(i,n))continue;let r=F(i,e,t);if(r&&!V(e,r,t))return r}return null},`findSafeAnchorNode`),U=e((e,t,n)=>Math.max(t,Math.min(n,e)),`clamp`),W=e((e=`TB`)=>{switch(e){case`BT`:return`bottom`;case`LR`:return`right`;case`RL`:return`left`;default:return`top`}},`getDefaultSelfLoopSide`),G=e(e=>e===`flowchart`||e===`flowchart-v2`||e===`stateDiagram`,`shouldMergeSelfLoopSegments`),K=e((e,t,n,r,i)=>{let a=[],o=new Set;if(n.forEach(({start:e,end:t})=>{e!==r&&o.add(e),t!==r&&o.add(t)}),o.forEach(t=>{let n=e.node(t);typeof n?.x==`number`&&typeof n?.y==`number`&&a.push(n)}),a.length===0&&n.forEach(({edge:e})=>{(e.points??[]).forEach(e=>{typeof e?.x==`number`&&typeof e?.y==`number`&&a.push(e)})}),a.length===0)return W(i);let s=a.reduce((e,t)=>({x:e.x+t.x/a.length,y:e.y+t.y/a.length}),{x:0,y:0}),c=s.x-t.x,l=s.y-t.y;return Math.abs(c)>Math.abs(l)?c>0?`right`:`left`:Math.abs(l)>0?l>0?`bottom`:`top`:W(i)},`getSelfLoopSide`),q=e((e,t=`top`,n=0,r=0)=>{let i=e.x,a=e.y-n,o=e.width/2,s=e.height/2,c=Math.max(36,Math.min(100,e.width*.8)),l=U(Math.max(r,e.width*.35),36,c),u=U(Math.min(e.width,e.height)*.45,24,48);switch(t){case`bottom`:{let e=a+s;return[{x:i-l/2,y:e},{x:i-l/2,y:e+u},{x:i+l/2,y:e+u},{x:i+l/2,y:e}]}case`right`:{let e=i+o;return[{x:e,y:a-l/2},{x:e+u,y:a-l/2},{x:e+u,y:a+l/2},{x:e,y:a+l/2}]}case`left`:{let e=i-o;return[{x:e,y:a-l/2},{x:e-u,y:a-l/2},{x:e-u,y:a+l/2},{x:e,y:a+l/2}]}default:{let e=a-s;return[{x:i-l/2,y:e},{x:i-l/2,y:e-u},{x:i+l/2,y:e-u},{x:i+l/2,y:e}]}}},`getSelfLoopPoints`),J=e((e,t,n=`top`,r=0,i={})=>{let a=e.x,o=e.y-r,s=i.width??0,c=i.height??0;switch(n){case`bottom`:return{x:a,y:Math.max(...t.map(e=>e.y))+c/2+4};case`right`:return{x:Math.max(...t.map(e=>e.x))+s/2+4,y:o};case`left`:return{x:Math.min(...t.map(e=>e.x))-s/2-4,y:o};default:return{x:a,y:Math.min(...t.map(e=>e.y))-c/2-4}}},`getSelfLoopLabelPosition`),Y=e((e,t=0,{mergeSelfLoops:n=!0}={})=>{let r=new Map,i=[],a=e.graph()?.rankdir;return e.edges().forEach(t=>{let a=e.edge(t);if(n&&a.selfLoop){let e=a.selfLoop.id;r.has(e)||r.set(e,[]),r.get(e).push({edge:a,start:t.v,end:t.w})}else i.push({edge:a,start:t.v,end:t.w})}),r.forEach(n=>{if(n.length!==3){n.forEach(e=>i.push(e));return}n.sort((e,t)=>e.edge.selfLoop.order-t.edge.selfLoop.order);let[r,o,s]=n,c=r.edge.originalEdge??o.edge.originalEdge??s.edge.originalEdge??o.edge,l=e.node(c.start);if(!l){n.forEach(e=>i.push(e));return}let u={width:o.edge.width,height:o.edge.height},d=K(e,l,n,c.start,a),f=q(l,d,t,u.width??0),p=J(l,f,d,t,u),m={...o.edge,...c,id:c.id,points:f,start:c.start,end:c.end,x:p.x,y:p.y,width:u.width,height:u.height,labelStyle:o.edge.labelStyle,fromCluster:r.edge.fromCluster??o.edge.fromCluster??s.edge.fromCluster,toCluster:r.edge.toCluster??o.edge.toCluster??s.edge.toCluster};delete m.selfLoop,delete m.originalEdge,i.push({edge:m,start:m.start,end:m.end})}),i},`getEdgesToRender`),X=e(async(t,i,l,d,p,g)=>{n.warn(`Graph in recursive render:XAX`,C(i),p);let _=i.graph().rankdir;n.trace(`Dir in recursive render - dir:`,_);let v=t.insert(`g`).attr(`class`,`root`);i.nodes()?n.info(`Recursive render XXX`,i.nodes()):n.info(`No nodes found for`,i),i.edges().length>0&&n.info(`Recursive edges`,i.edge(i.edges()[0]));let y=v.insert(`g`).attr(`class`,`clusters`),x=v.insert(`g`).attr(`class`,`edgePaths`),S=v.insert(`g`).attr(`class`,`edgeLabels`),w=v.insert(`g`).attr(`class`,`nodes`),T=G(l);await Promise.all(i.nodes().map(async function(e){let t=i.node(e);if(p!==void 0){let t=JSON.parse(JSON.stringify(p.clusterData));n.trace(`Setting data for parent cluster XXX
2
2
  Node.id = `,e,`
3
3
  data=`,t.height,`
4
4
  Parent cluster`,p.height),i.setNode(p.id,t),i.parent(e)||(n.trace(`Setting parent`,e,p.id),i.setParent(e,p.id,t))}if(n.info(`(Insert) Node XXX`+e+`: `+JSON.stringify(i.node(e))),t?.clusterNode){n.info(`Cluster identified XBX`,e,t.width,i.node(e));let{ranksep:r,nodesep:a}=i.graph();t.graph.setGraph({...t.graph.graph(),ranksep:r+25,nodesep:a});let o=await X(w,t.graph,l,d,i.node(e),g),s=o.elem;u(t,s),t.diff=o.diff||0,n.info(`New compound node after recursive render XAX`,e,`width`,t.width,`height`,t.height),f(s,t)}else i.children(e).length>0?(n.trace(`Cluster - the non recursive path XBX`,e,t.id,t,t.width,`Graph:`,i),n.trace(F(t.id,i)),E.set(t.id,{id:F(t.id,i),node:t})):(n.trace(`Node - the non recursive path XAX`,e,w,i.node(e),_),await a(w,i.node(e),{config:g,dir:_}))})),await e(async()=>{let e=i.edges().map(async function(e){let t=i.edge(e.v,e.w,e.name);if(n.info(`Edge `+e.v+` -> `+e.w+`: `+JSON.stringify(e)),n.info(`Edge `+e.v+` -> `+e.w+`: `,e,` `,JSON.stringify(i.edge(e))),n.info(`Fix`,E,`ids:`,e.v,e.w,`Translating: `,E.get(e.v),E.get(e.w)),T&&t.selfLoop){if(t.selfLoop.order!==1)return;let e=t.id;t.id=t.selfLoop.id,await r(S,t),t.id=e;return}await r(S,t)});await Promise.all(e)},`processEdges`)(),n.info(`Graph before layout:`,JSON.stringify(C(i))),n.info(`############################################# XXX`),n.info(`### Layout ### XXX`),n.info(`############################################# XXX`),b(i),n.info(`Graph after layout:`,JSON.stringify(C(i)));let D=0,{subGraphTitleTotalMargin:O}=s(g);await Promise.all(B(i).map(async function(e){let t=i.node(e);if(n.info(`Position XBX => `+e+`: (`+t.x,`,`+t.y,`) width: `,t.width,` height: `,t.height),t?.clusterNode)t.y+=O,n.info(`A tainted cluster node XBX1`,e,t.id,t.width,t.height,t.x,t.y,i.parent(e)),E.get(t.id).node=t,o(t);else if(i.children(e).length>0){n.info(`A pure cluster node XBX1`,e,t.id,t.x,t.y,t.width,t.height,i.parent(e)),t.height+=O,i.node(t.parentId);let r=t?.padding/2||0,a=t?.labelBBox?.height||0,o=a-r||0;n.debug(`OffsetY`,o,`labelHeight`,a,`halfPadding`,r),await h(y,t),E.get(t.id).node=t}else{let e=i.node(t.parentId);t.y+=O/2,n.info(`A regular node XBX1 - using the padding`,t.id,`parent`,t.parentId,t.width,t.height,t.x,t.y,`offsetY`,t.offsetY,`parent`,e,e?.offsetY,t),o(t)}}));let k=O/2;return Y(i,k,{mergeSelfLoops:T}).forEach(function({edge:e,start:t,end:r}){n.info(`Edge `+t+` -> `+r+`: `+JSON.stringify(e),e),e.points.forEach(e=>e.y+=k);let a=i.node(t),o=i.node(r),s=c(x,e,E,l,a,o,d);m(e,s)}),i.nodes().forEach(function(e){let t=i.node(e);n.info(e,t.type,t.diff),t.isGroup&&(D=t.diff)}),n.warn(`Returning from recursive render XAX`,v,D),{elem:v,diff:D}},`recursiveRender`),Z=e(async(e,r)=>{let a=new v({multigraph:!0,compound:!0}).setGraph({rankdir:e.direction,nodesep:e.config?.nodeSpacing||e.config?.flowchart?.nodeSpacing||e.nodeSpacing,ranksep:e.config?.rankSpacing||e.config?.flowchart?.rankSpacing||e.rankSpacing,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}}),o=r.select(`g`);d(o,e.markers,e.type,e.diagramId),l(),p(),i(),k(),e.nodes.forEach(e=>{a.setNode(e.id,{...e}),e.parentId&&a.setParent(e.id,e.parentId)}),n.debug(`Edges:`,e.edges),e.edges.forEach(e=>{if(e.start===e.end){let t=e.start,n=t+`---`+t+`---1`,r=t+`---`+t+`---2`,i=a.node(t);a.setNode(n,{domId:n,id:n,parentId:i.parentId,labelStyle:``,label:``,padding:0,shape:`labelRect`,style:``,width:10,height:10}),a.setParent(n,i.parentId),a.setNode(r,{domId:r,id:r,parentId:i.parentId,labelStyle:``,padding:0,shape:`labelRect`,label:``,style:``,width:10,height:10}),a.setParent(r,i.parentId);let o=structuredClone(e),s=structuredClone(e),c=structuredClone(e),l=structuredClone(e);s.originalEdge=o,s.selfLoop={id:o.id,order:0},c.originalEdge=o,c.selfLoop={id:o.id,order:1},l.originalEdge=o,l.selfLoop={id:o.id,order:2},s.label=``,s.arrowTypeEnd=`none`,s.endLabelLeft=``,s.endLabelRight=``,s.startLabelLeft=``,s.id=t+`-cyclic-special-1`,c.startLabelRight=``,c.startLabelLeft=``,c.endLabelLeft=``,c.endLabelRight=``,c.arrowTypeStart=`none`,c.arrowTypeEnd=`none`,c.id=t+`-cyclic-special-mid`,l.label=``,l.startLabelRight=``,l.startLabelLeft=``,l.arrowTypeStart=`none`,i.isGroup&&(s.fromCluster=t,l.toCluster=t),l.id=t+`-cyclic-special-2`,l.arrowTypeStart=`none`,a.setEdge(t,n,s,t+`-cyclic-special-0`),a.setEdge(n,r,c,t+`-cyclic-special-1`),a.setEdge(r,t,l,t+`-cyclic-special-2`)}else a.setEdge(e.start,e.end,{...e},e.id)}),n.warn(`Graph at first:`,JSON.stringify(C(a))),L(a),n.warn(`Graph after XAX:`,JSON.stringify(C(a)));let s=t();await X(o,a,e.type,e.diagramId,void 0,s)},`render`);export{Y as getEdgesToRender,Z as render};
@@ -1 +1 @@
1
- .tea-lv{--tea-lv-fg:var(--foreground,#e6edf3);--tea-lv-muted:var(--muted-foreground,#8b949e);--tea-lv-border:var(--border,#30363d);--tea-lv-bg:var(--card,#0d1117);--tea-lv-raised:var(--muted,#161b22);--tea-lv-accent:var(--teal-11,#2dd4bf);--tea-lv-warn:var(--amber-11,#d29922);--tea-lv-bad:var(--crimson-11,#f85149);--tea-lv-r:var(--radius,6px);font-family:var(--font-mono,"JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace);color:var(--tea-lv-fg);background:var(--tea-lv-bg);border:1px solid var(--tea-lv-border);border-radius:var(--tea-lv-r);flex-direction:column;gap:1.6rem;padding:1.25rem;font-size:12px;line-height:1.55;display:flex}.tea-lv-boot{color:var(--tea-lv-muted);padding:16px;font-style:italic}.tea-lv-sep{color:var(--tea-lv-border)}.tea-lv-head{border-bottom:1px solid var(--tea-lv-border);flex-wrap:wrap;align-items:center;gap:.75rem;padding-bottom:.75rem;display:flex}.tea-lv-title{letter-spacing:-.01em;font-size:15px;font-weight:700}.tea-lv-src,.tea-lv-standing,.tea-lv-status,.tea-lv-badge{text-transform:uppercase;letter-spacing:.08em;border:1px solid var(--tea-lv-border);background:var(--tea-lv-raised);color:var(--tea-lv-muted);border-radius:999px;padding:.15rem .45rem;font-size:10px;font-weight:600}.tea-lv-src[data-source=live]{color:var(--tea-lv-accent);border-color:var(--tea-lv-accent)}.tea-lv-now{align-items:center;gap:6px;display:inline-flex}.tea-lv-phase,.tea-lv-terminal{color:var(--tea-lv-fg);font-weight:700}.tea-lv-warn{color:var(--tea-lv-warn)}.tea-lv-muted{color:var(--tea-lv-muted)}.tea-lv-lede{font-family:var(--font-sans,ui-sans-serif, system-ui, sans-serif);max-width:68ch;color:var(--tea-lv-muted);margin:0;font-size:13.5px;line-height:1.65}.tea-lv-lede b{color:var(--tea-lv-fg)}.tea-lv-panel{border:1px solid var(--tea-lv-border);border-radius:var(--tea-lv-r);background:var(--tea-lv-raised);box-sizing:border-box;align-self:stretch;width:100%;min-width:0;padding:.9rem 1rem}.tea-lv-h{text-transform:uppercase;letter-spacing:.09em;color:var(--tea-lv-muted);flex-wrap:wrap;align-items:center;gap:.5rem;margin:0 0 .6rem;font-size:11px;font-weight:600;display:flex}.tea-lv-hint{font-family:var(--font-sans,ui-sans-serif, system-ui, sans-serif);text-transform:none;letter-spacing:0;opacity:.75;font-size:11.5px}.tea-lv-none{color:var(--tea-lv-muted);margin:0;font-style:italic}.tea-lv-stuck{border-left:3px solid var(--tea-lv-warn)}.tea-lv-stuck .tea-lv-h{color:var(--tea-lv-warn)}.tea-lv-stuck:has([data-stuck]){border-left-color:var(--tea-lv-bad)}.tea-lv-stucklist{flex-direction:column;gap:.2rem;margin:0;padding-left:1.1rem;display:flex}.tea-lv-stucklist [data-stuck=budget-spent]{color:var(--tea-lv-warn)}.tea-lv-stucklist [data-stuck=tripped],.tea-lv-stucklist [data-stuck=dead-end]{color:var(--tea-lv-bad)}.tea-lv-tripped{color:var(--tea-lv-bad);margin:8px 0 0}.tea-lv-phase-complete .tea-lv-standing{color:var(--tea-lv-accent)}.tea-lv-phase-active{border-color:var(--tea-lv-accent)}.tea-lv-phase-active .tea-lv-standing{color:var(--tea-lv-fg)}.tea-lv-phase-tripped{border-color:var(--tea-lv-bad)}.tea-lv-phase-tripped .tea-lv-standing{color:var(--tea-lv-bad)}.tea-lv-phase-waiting{opacity:.75}.tea-lv-phase-waiting .tea-lv-standing{color:var(--tea-lv-muted)}.tea-lv-chips{flex-wrap:wrap;gap:.4rem;margin:0 0 .75rem;padding:0;list-style:none;display:flex}.tea-lv-chip{border:1px solid var(--tea-lv-border);border-radius:var(--tea-lv-r);background:var(--tea-lv-bg);color:var(--tea-lv-muted);padding:.2rem .5rem}.tea-lv-chip[data-end=error]{border-color:var(--tea-lv-bad);color:var(--tea-lv-bad)}.tea-lv-chip[data-end=true]{border-color:var(--tea-lv-accent);color:var(--tea-lv-accent)}.tea-lv-task{border-top:1px solid var(--tea-lv-border);min-width:0;margin-top:.75rem;padding-top:.75rem}.tea-lv-collapsed>summary{cursor:pointer;color:var(--tea-lv-muted)}.tea-lv-taskh{margin:0 0 .3rem;font-size:13px;font-weight:400}.tea-lv-state{color:var(--tea-lv-accent);font-weight:600}.tea-lv-badge{border-color:var(--tea-lv-bad);color:var(--tea-lv-bad)}.tea-lv-waiting{color:var(--tea-lv-fg);border-left:2px solid var(--tea-lv-accent);background:var(--tea-lv-bg);border-radius:0 var(--tea-lv-r) var(--tea-lv-r) 0;margin:.2rem 0 .6rem;padding:.45rem .6rem}.tea-lv-retries{color:var(--tea-lv-warn);margin:0 0 4px}.tea-lv-controls{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.5rem;margin:.5rem 0 .9rem;display:grid}.tea-lv-ev{border:1px solid var(--tea-lv-border);border-radius:var(--tea-lv-r);background:var(--tea-lv-bg);flex-direction:column;gap:.25rem;min-width:0;padding:.5rem .6rem;display:flex}.tea-lv-ev[data-status=refused]{opacity:.62;border-style:dashed}.tea-lv-btn{font:inherit;text-align:left;border:1px solid var(--tea-lv-border);border-radius:var(--tea-lv-r);background:var(--tea-lv-raised);color:var(--tea-lv-fg);cursor:pointer;padding:.2rem .5rem;font-weight:700}.tea-lv-ev[data-sendable=true] .tea-lv-btn,.tea-lv-btn:hover:not(:disabled){border-color:var(--tea-lv-accent);color:var(--tea-lv-accent)}.tea-lv-btn:disabled{cursor:not-allowed;color:var(--tea-lv-muted);background:0 0;border-color:#0000;padding-left:0}.tea-lv-to{color:var(--tea-lv-muted)}.tea-lv-ev-end .tea-lv-btn,.tea-lv-ev-undeclared .tea-lv-btn{color:var(--tea-lv-bad);text-decoration:line-through}.tea-lv-ev-ignored .tea-lv-btn{color:var(--tea-lv-warn);text-decoration:line-through}.tea-lv-ev-out-of-scope .tea-lv-btn,.tea-lv-ev-no-edge .tea-lv-btn{color:var(--tea-lv-muted);text-decoration:line-through}.tea-lv-accepts>summary{cursor:pointer;color:var(--tea-lv-muted);margin:.35rem 0;font-size:11px}.tea-lv-accepts[open]>summary{margin-bottom:.6rem}.tea-lv-unavailable{color:var(--tea-lv-muted);margin:0;font-style:italic}.tea-lv-mermaid{border:1px solid var(--tea-lv-border);border-radius:var(--tea-lv-r);background:var(--tea-lv-bg);color:var(--tea-lv-muted);margin:0;padding:.75rem;line-height:1.5;overflow-x:auto}.tea-lv-travel{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.tea-lv-scrub{accent-color:var(--tea-lv-accent);flex-wrap:wrap;flex:260px;align-items:center;gap:10px;display:flex}.tea-lv-scrub input[type=range]{min-width:120px;accent-color:var(--tea-lv-accent);flex:160px}.tea-lv-step{color:var(--tea-lv-muted);white-space:nowrap}.tea-lv-scrub button{font:inherit;border:1px solid var(--tea-lv-border);border-radius:var(--tea-lv-r);color:var(--tea-lv-fg);cursor:pointer;background:0 0;padding:2px 10px}.tea-lv-scrub button:disabled{cursor:not-allowed;opacity:.5}.tea-lv-steps{border-collapse:collapse;width:100%;max-height:280px;display:block;overflow:auto}.tea-lv-steps th,.tea-lv-steps td{text-align:left;border-bottom:1px solid var(--tea-lv-border);white-space:nowrap;color:var(--tea-lv-muted);padding:.25rem .6rem .25rem 0}.tea-lv-steps th{text-transform:uppercase;letter-spacing:.08em;font-size:10px;font-weight:400}.tea-lv-steps td:first-child{color:var(--tea-lv-fg)}.tea-lv-steps tr[data-refused] td{opacity:.7;font-style:italic}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{color:#e6edf3;background:#0d1117;margin:0;font:15px/1.6 ui-sans-serif,system-ui,sans-serif}main{max-width:1000px;margin:0 auto;padding:1.5rem 1rem 5rem}.lv-bar{z-index:5;background:#161b22;border-bottom:1px solid #30363d;flex-wrap:wrap;align-items:center;gap:1rem;padding:.85rem 1.25rem;display:flex;position:sticky;top:0}.lv-brand{letter-spacing:-.01em;font-weight:600}.lv-bar nav{flex-wrap:wrap;gap:.4rem;display:flex}.lv-bar button{font:inherit;color:#e6edf3;cursor:pointer;background:#21262d;border:1px solid #30363d;border-radius:999px;padding:.28rem .7rem;font-size:.85rem}.lv-bar button:hover{border-color:#2dd4bf}.lv-bar button.on{color:#04201c;background:#2dd4bf;border-color:#2dd4bf;font-weight:600}.lv-src{color:#8b949e;margin-left:auto;font-size:.72rem}.lv-empty{padding-top:4rem}.lv-empty pre{background:#161b22;border:1px solid #30363d;border-radius:6px;padding:.9rem 1.1rem;overflow-x:auto}.fl{max-width:860px;margin:0 auto;padding:3.5rem 1rem 6rem}.fl-h1{letter-spacing:-.02em;text-wrap:balance;margin:0 0 1.4rem;font-size:1.6rem;font-weight:600}.fl-counts{flex-wrap:wrap;gap:.5rem;margin-bottom:2rem;display:flex}.fl-chip{color:#8b949e;border:1px solid #30363d;border-radius:999px;padding:.24rem .7rem;font-size:.78rem}.fl-chip b{color:#e6edf3;font-variant-numeric:tabular-nums}.fl-chip.is-needs-you{color:#e3b341;border-color:#d29922}.fl-chip.is-needs-you b{color:#e3b341}.fl-chip.is-tripped{color:#ff7b72;border-color:#f85149}.fl-chip.is-tripped b{color:#ff7b72}.fl-rows{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.fl-row{text-align:left;width:100%;font:inherit;color:#e6edf3;cursor:pointer;background:#161b22;border:1px solid #30363d;border-left-width:3px;border-radius:6px;grid-template-columns:5.5rem 1fr auto;align-items:baseline;gap:1rem;padding:.85rem 1.1rem;display:grid}.fl-row:hover{border-color:#2dd4bf}.fl-row.is-needs-you{border-left-color:#d29922}.fl-row.is-tripped{border-left-color:#f85149}.fl-row.is-quiet{border-left-color:#8b949e}.fl-row.is-moving{border-left-color:#2dd4bf}.fl-row.is-done{opacity:.62;border-left-color:#238636}.fl-row.is-unstarted{opacity:.62}.fl-id{font-variant-numeric:tabular-nums;font-weight:600}.fl-head{color:#c9d1d9}.fl-head code{background:0 0}.fl-meta{color:#8b949e;white-space:nowrap;font-size:.78rem}.fl-foot{color:#8b949e;margin-top:2.5rem;font-size:.75rem}.lv-back{font:inherit;color:#e6edf3;cursor:pointer;background:#21262d;border:1px solid #30363d;border-radius:999px;padding:.28rem .7rem;font-size:.85rem}.lv-back:hover{border-color:#2dd4bf}@media (width<=620px){.fl-row{grid-template-columns:1fr;gap:.3rem}}.act{background:#161b22;border:1px solid #30363d;border-radius:8px;margin:0 0 1.5rem;padding:1rem 1.2rem 1.1rem}.act-h{letter-spacing:.1em;text-transform:uppercase;color:#e6edf3;flex-wrap:wrap;align-items:baseline;gap:.75rem;margin:0 0 .9rem;font-size:.78rem;display:flex}.act-sub{text-transform:none;letter-spacing:0;color:#8b949e;font-size:.8rem;font-style:italic}.act-row{border-top:1px solid #21262d;flex-wrap:wrap;align-items:center;gap:.75rem;padding:.45rem 0;display:flex}.act-row:first-of-type{border-top:0}.act-task{min-width:15rem;font-family:ui-monospace,monospace;font-size:.83rem}.act-at{color:#8b949e}.act-btns{flex-wrap:wrap;gap:.35rem;display:flex}.act-btn{font:inherit;color:#e6edf3;cursor:pointer;background:#21262d;border:1px solid #30363d;border-radius:5px;padding:.24rem .62rem;font-family:ui-monospace,monospace;font-size:.76rem}.act-btn:hover:not(:disabled){color:#2dd4bf;border-color:#2dd4bf}.act-btn:disabled{opacity:.45;cursor:default}.act-said{font-size:.78rem}.act-said.ok{color:#3fb950}.act-said.no{color:#e3b341}.fl-drv{color:#a5d6ff;border:1px solid #30363d;border-radius:999px;margin-right:.6rem;padding:.1rem .5rem;font-family:ui-monospace,monospace;font-size:.68rem;display:inline-block}
1
+ .tea-lv{--tea-lv-fg:var(--foreground,#e6edf3);--tea-lv-muted:var(--muted-foreground,#8b949e);--tea-lv-border:var(--border,#30363d);--tea-lv-bg:var(--card,#0d1117);--tea-lv-raised:var(--muted,#161b22);--tea-lv-accent:var(--teal-11,#2dd4bf);--tea-lv-warn:var(--amber-11,#d29922);--tea-lv-bad:var(--crimson-11,#f85149);--tea-lv-r:var(--radius,6px);font-family:var(--font-mono,"JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace);color:var(--tea-lv-fg);background:var(--tea-lv-bg);border:1px solid var(--tea-lv-border);border-radius:var(--tea-lv-r);flex-direction:column;gap:1.6rem;padding:1.25rem;font-size:12px;line-height:1.55;display:flex}.tea-lv-boot{color:var(--tea-lv-muted);padding:16px;font-style:italic}.tea-lv-sep{color:var(--tea-lv-border)}.tea-lv-head{border-bottom:1px solid var(--tea-lv-border);flex-wrap:wrap;align-items:center;gap:.75rem;padding-bottom:.75rem;display:flex}.tea-lv-title{letter-spacing:-.01em;font-size:15px;font-weight:700}.tea-lv-src,.tea-lv-standing,.tea-lv-status,.tea-lv-badge{text-transform:uppercase;letter-spacing:.08em;border:1px solid var(--tea-lv-border);background:var(--tea-lv-raised);color:var(--tea-lv-muted);border-radius:999px;padding:.15rem .45rem;font-size:10px;font-weight:600}.tea-lv-src[data-source=live]{color:var(--tea-lv-accent);border-color:var(--tea-lv-accent)}.tea-lv-now{align-items:center;gap:6px;display:inline-flex}.tea-lv-phase,.tea-lv-terminal{color:var(--tea-lv-fg);font-weight:700}.tea-lv-warn{color:var(--tea-lv-warn)}.tea-lv-muted{color:var(--tea-lv-muted)}.tea-lv-lede{font-family:var(--font-sans,ui-sans-serif, system-ui, sans-serif);max-width:68ch;color:var(--tea-lv-muted);margin:0;font-size:13.5px;line-height:1.65}.tea-lv-lede b{color:var(--tea-lv-fg)}.tea-lv-panel{border:1px solid var(--tea-lv-border);border-radius:var(--tea-lv-r);background:var(--tea-lv-raised);box-sizing:border-box;align-self:stretch;width:100%;min-width:0;padding:.9rem 1rem}.tea-lv-h{text-transform:uppercase;letter-spacing:.09em;color:var(--tea-lv-muted);flex-wrap:wrap;align-items:center;gap:.5rem;margin:0 0 .6rem;font-size:11px;font-weight:600;display:flex}.tea-lv-hint{font-family:var(--font-sans,ui-sans-serif, system-ui, sans-serif);text-transform:none;letter-spacing:0;opacity:.75;font-size:11.5px}.tea-lv-none{color:var(--tea-lv-muted);margin:0;font-style:italic}.tea-lv-stuck{border-left:3px solid var(--tea-lv-warn)}.tea-lv-stuck .tea-lv-h{color:var(--tea-lv-warn)}.tea-lv-stuck:has([data-stuck]){border-left-color:var(--tea-lv-bad)}.tea-lv-stucklist{flex-direction:column;gap:.2rem;margin:0;padding-left:1.1rem;display:flex}.tea-lv-stucklist [data-stuck=budget-spent]{color:var(--tea-lv-warn)}.tea-lv-stucklist [data-stuck=tripped],.tea-lv-stucklist [data-stuck=dead-end]{color:var(--tea-lv-bad)}.tea-lv-tripped{color:var(--tea-lv-bad);margin:8px 0 0}.tea-lv-phase-complete .tea-lv-standing{color:var(--tea-lv-accent)}.tea-lv-phase-active{border-color:var(--tea-lv-accent)}.tea-lv-phase-active .tea-lv-standing{color:var(--tea-lv-fg)}.tea-lv-phase-tripped{border-color:var(--tea-lv-bad)}.tea-lv-phase-tripped .tea-lv-standing{color:var(--tea-lv-bad)}.tea-lv-phase-waiting{opacity:.75}.tea-lv-phase-waiting .tea-lv-standing{color:var(--tea-lv-muted)}.tea-lv-chips{flex-wrap:wrap;gap:.4rem;margin:0 0 .75rem;padding:0;list-style:none;display:flex}.tea-lv-chip{border:1px solid var(--tea-lv-border);border-radius:var(--tea-lv-r);background:var(--tea-lv-bg);color:var(--tea-lv-muted);padding:.2rem .5rem}.tea-lv-chip[data-end=error]{border-color:var(--tea-lv-bad);color:var(--tea-lv-bad)}.tea-lv-chip[data-end=true]{border-color:var(--tea-lv-accent);color:var(--tea-lv-accent)}.tea-lv-task{border-top:1px solid var(--tea-lv-border);min-width:0;margin-top:.75rem;padding-top:.75rem}.tea-lv-collapsed>summary{cursor:pointer;color:var(--tea-lv-muted)}.tea-lv-taskh{margin:0 0 .3rem;font-size:13px;font-weight:400}.tea-lv-state{color:var(--tea-lv-accent);font-weight:600}.tea-lv-badge{border-color:var(--tea-lv-bad);color:var(--tea-lv-bad)}.tea-lv-waiting{color:var(--tea-lv-fg);border-left:2px solid var(--tea-lv-accent);background:var(--tea-lv-bg);border-radius:0 var(--tea-lv-r) var(--tea-lv-r) 0;margin:.2rem 0 .6rem;padding:.45rem .6rem}.tea-lv-retries{color:var(--tea-lv-warn);margin:0 0 4px}.tea-lv-controls{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.5rem;margin:.5rem 0 .9rem;display:grid}.tea-lv-ev{border:1px solid var(--tea-lv-border);border-radius:var(--tea-lv-r);background:var(--tea-lv-bg);flex-direction:column;gap:.25rem;min-width:0;padding:.5rem .6rem;display:flex}.tea-lv-ev[data-status=refused]{opacity:.62;border-style:dashed}.tea-lv-btn{font:inherit;text-align:left;border:1px solid var(--tea-lv-border);border-radius:var(--tea-lv-r);background:var(--tea-lv-raised);color:var(--tea-lv-fg);cursor:pointer;padding:.2rem .5rem;font-weight:700}.tea-lv-ev[data-sendable=true] .tea-lv-btn,.tea-lv-btn:hover:not(:disabled){border-color:var(--tea-lv-accent);color:var(--tea-lv-accent)}.tea-lv-btn:disabled{cursor:not-allowed;color:var(--tea-lv-muted);background:0 0;border-color:#0000;padding-left:0}.tea-lv-to{color:var(--tea-lv-muted)}.tea-lv-ev-end .tea-lv-btn,.tea-lv-ev-undeclared .tea-lv-btn{color:var(--tea-lv-bad);text-decoration:line-through}.tea-lv-ev-ignored .tea-lv-btn{color:var(--tea-lv-warn);text-decoration:line-through}.tea-lv-ev-out-of-scope .tea-lv-btn,.tea-lv-ev-no-edge .tea-lv-btn{color:var(--tea-lv-muted);text-decoration:line-through}.tea-lv-accepts>summary{cursor:pointer;color:var(--tea-lv-muted);margin:.35rem 0;font-size:11px}.tea-lv-accepts[open]>summary{margin-bottom:.6rem}.tea-lv-unavailable{color:var(--tea-lv-muted);margin:0;font-style:italic}.tea-lv-mermaid{border:1px solid var(--tea-lv-border);border-radius:var(--tea-lv-r);background:var(--tea-lv-bg);color:var(--tea-lv-muted);margin:0;padding:.75rem;line-height:1.5;overflow-x:auto}.tea-lv-travel{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.tea-lv-scrub{accent-color:var(--tea-lv-accent);flex-wrap:wrap;flex:260px;align-items:center;gap:10px;display:flex}.tea-lv-scrub input[type=range]{min-width:120px;accent-color:var(--tea-lv-accent);flex:160px}.tea-lv-step{color:var(--tea-lv-muted);white-space:nowrap}.tea-lv-scrub button{font:inherit;border:1px solid var(--tea-lv-border);border-radius:var(--tea-lv-r);color:var(--tea-lv-fg);cursor:pointer;background:0 0;padding:2px 10px}.tea-lv-scrub button:disabled{cursor:not-allowed;opacity:.5}.tea-lv-steps{border-collapse:collapse;width:100%;max-height:280px;display:block;overflow:auto}.tea-lv-steps th,.tea-lv-steps td{text-align:left;border-bottom:1px solid var(--tea-lv-border);white-space:nowrap;color:var(--tea-lv-muted);padding:.25rem .6rem .25rem 0}.tea-lv-steps th{text-transform:uppercase;letter-spacing:.08em;font-size:10px;font-weight:400}.tea-lv-steps td:first-child{color:var(--tea-lv-fg)}.tea-lv-steps tr[data-refused] td{opacity:.7;font-style:italic}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{color:#e6edf3;background:#0d1117;margin:0;font:15px/1.6 ui-sans-serif,system-ui,sans-serif}.op{grid-template:"hd hd""rail stage"minmax(0,1fr)/minmax(15rem,19rem) minmax(0,1fr);height:100dvh;display:grid}.hd{background:#010409;border-bottom:1px solid #30363d;flex-wrap:wrap;grid-area:hd;align-items:center;gap:1.1rem;padding:.7rem 1.25rem;display:flex}.hd-brand{letter-spacing:-.01em;color:#8b949e;font-weight:600}.hd-say{letter-spacing:-.01em;font-size:1.02rem;font-weight:600}.hd-say.is-needs-you{color:#e3b341}.hd-say.is-tripped{color:#ff7b72}.hd-counts{flex-wrap:wrap;gap:.4rem;display:flex}.hd-chip{color:#8b949e;white-space:nowrap;border:1px solid #30363d;border-radius:999px;padding:.16rem .6rem;font-size:.74rem}.hd-chip b{color:#e6edf3;font-variant-numeric:tabular-nums}.hd-chip.is-needs-you{color:#e3b341;border-color:#d29922}.hd-chip.is-needs-you b{color:#e3b341}.hd-chip.is-tripped{color:#ff7b72;border-color:#f85149}.hd-chip.is-tripped b{color:#ff7b72}.hd-src{color:#8b949e;text-overflow:ellipsis;white-space:nowrap;direction:rtl;align-items:center;gap:.45rem;max-width:28ch;margin-left:auto;font-family:ui-monospace,monospace;font-size:.7rem;display:flex;overflow:hidden}.hd-live{background:#3fb950;border-radius:50%;flex:none;width:6px;height:6px;animation:2.4s ease-out infinite hd-beat;box-shadow:0 0 #3fb9508c}@keyframes hd-beat{60%,to{box-shadow:0 0 0 7px #3fb95000}}@media (prefers-reduced-motion:reduce){.hd-live{animation:none}}.rail{background:#010409;border-right:1px solid #30363d;grid-area:rail;padding:.6rem;overflow-y:auto}.rail-rows{flex-direction:column;gap:.3rem;margin:0;padding:0;list-style:none;display:flex}.rail-row{text-align:left;width:100%;font:inherit;color:#e6edf3;cursor:pointer;background:0 0;border:1px solid #0000;border-left:3px solid #30363d;border-radius:5px;gap:.12rem;padding:.55rem .7rem;display:grid}.rail-row:hover{background:#161b22}.rail-row.on{background:#161b22;border-color:#30363d}.rail-row.on:after{content:""}.rail-row.is-needs-you{border-left-color:#d29922}.rail-row.is-tripped{border-left-color:#f85149}.rail-row.is-quiet{border-left-color:#8b949e}.rail-row.is-moving{border-left-color:#2dd4bf}.rail-row.is-done{border-left-color:#238636}.rail-row.is-done:not(.on),.rail-row.is-unstarted:not(.on){opacity:.55}.rail-top{align-items:baseline;gap:.45rem;display:flex}.rail-id{font-variant-numeric:tabular-nums;font-weight:600}.rail-drv{color:#a5d6ff;white-space:nowrap;border:1px solid #30363d;border-radius:999px;margin-left:auto;padding:.02rem .4rem;font-family:ui-monospace,monospace;font-size:.62rem}.rail-head{color:#c9d1d9;font-size:.8rem;line-height:1.35}.rail-meta{color:#8b949e;font-variant-numeric:tabular-nums;font-size:.71rem}.stage{grid-area:stage;padding:1.4rem 1.75rem 5rem;overflow-y:auto}.stage-hd{flex-wrap:wrap;align-items:baseline;gap:.85rem;margin-bottom:1.1rem;display:flex}.stage-hd h1{letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin:0;font-size:1.35rem;font-weight:600}.stage-sub{color:#8b949e;font-size:.88rem}.lv-empty{max-width:46rem;margin:0 auto;padding:4rem 1.5rem}.lv-empty pre{background:#161b22;border:1px solid #30363d;border-radius:6px;padding:.9rem 1.1rem;overflow-x:auto}@media (width<=60rem){.op{grid-template:"hd""rail""stage"minmax(0,1fr)/minmax(0,1fr);height:auto;min-height:100dvh}.rail{border-bottom:1px solid #30363d;border-right:0;max-height:15rem}.stage{padding:1.2rem 1rem 4rem}}.act{background:#161b22;border:1px solid #30363d;border-radius:8px;margin:0 0 1.5rem;padding:1rem 1.2rem 1.1rem}.act-h{letter-spacing:.1em;text-transform:uppercase;color:#e6edf3;flex-wrap:wrap;align-items:baseline;gap:.75rem;margin:0 0 .9rem;font-size:.78rem;display:flex}.act-sub{text-transform:none;letter-spacing:0;color:#8b949e;font-size:.8rem;font-style:italic}.act-row{border-top:1px solid #21262d;grid-template-columns:minmax(11rem,18rem) minmax(0,auto) minmax(0,1fr);align-items:center;gap:.5rem 1rem;padding:.4rem 0;display:grid}.act-row:first-of-type{border-top:0}.act-task{overflow-wrap:anywhere;min-width:0;font-family:ui-monospace,monospace;font-size:.83rem}.act-at{color:#8b949e}@media (width<=48rem){.act-row{grid-template-columns:minmax(0,1fr)}}.act-btns{flex-wrap:wrap;gap:.35rem;display:flex}.act-btn{font:inherit;color:#e6edf3;cursor:pointer;background:#21262d;border:1px solid #30363d;border-radius:5px;padding:.24rem .62rem;font-family:ui-monospace,monospace;font-size:.76rem}.act-btn:hover:not(:disabled){color:#2dd4bf;border-color:#2dd4bf}.act-btn:disabled{opacity:.45;cursor:default}.act-said{font-size:.78rem}.act-said.ok{color:#3fb950}.act-said.no{color:#e3b341}.stage .tea-lv-mermaid svg{width:100%;height:auto;max-width:min(100%,46rem)!important}.stage pre.mermaid:not([data-processed]){visibility:hidden}
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dagre-VZM6K2ZE-Og2UIoWg.js","assets/chunk-NSK5VX7P-CBCyTZMs.js","assets/dagre-K_PewWfS.js","assets/classDiagram-v2-OCEON4UE-DnUXz1Pv.js","assets/chunk-5VM5RSS4-BP4fRS_5.js","assets/chunk-KBJHAD2P-DZOw7xU6.js","assets/chunk-2GRJ4B5K-HdDf8SI3.js","assets/stateDiagram-OKZ733FA-CIZQWK5X.js","assets/chunk-5RXB4S5H-IPzIfiJ6.js","assets/stateDiagram-v2-UEYNNEHI-Sm6p0NoR.js","assets/timeline-definition-Z64GVDOM-CV3KwSb-.js","assets/path-fybaL0A-.js","assets/mindmap-definition-FAOFIHXS-DvgvXZhp.js","assets/kanban-definition-27J2QSJJ-CxkCxJUN.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dagre-VZM6K2ZE-831qZcA8.js","assets/chunk-NSK5VX7P-CBCyTZMs.js","assets/dagre-K_PewWfS.js","assets/classDiagram-v2-OCEON4UE-D4uAiFr8.js","assets/chunk-5VM5RSS4-BP4fRS_5.js","assets/chunk-KBJHAD2P-DZOw7xU6.js","assets/chunk-2GRJ4B5K-HdDf8SI3.js","assets/stateDiagram-OKZ733FA-B_88AzBS.js","assets/chunk-5RXB4S5H-CcNtpUd7.js","assets/stateDiagram-v2-UEYNNEHI-CR5gcgq6.js","assets/timeline-definition-Z64GVDOM-CCv52MfY.js","assets/path-fybaL0A-.js","assets/mindmap-definition-FAOFIHXS-CGj9nrVk.js","assets/kanban-definition-27J2QSJJ-G7PaPzy-.js"])))=>i.map(i=>d[i]);
2
2
  import{$ as e,Bt as t,C as n,Ct as r,D as i,Dt as a,E as o,Ft as s,G as c,Ht as l,K as u,Mt as d,Nt as f,O as p,Pt as m,Q as h,S as g,St as _,T as v,U as y,Ut as b,W as x,X as S,Y as C,Z as w,_t as T,b as E,bt as D,c as O,ct as ee,d as k,dt as A,et as te,f as ne,ft as re,g as ie,gt as ae,h as oe,ht as se,i as ce,jt as le,k as j,kt as ue,l as de,lt as fe,m as pe,n as me,nt as M,ot as he,p as ge,r as _e,rt as ve,s as ye,st as N,t as be,tt as xe,u as Se,v as Ce,vt as we,w as Te,wt as Ee,x as De,xt as Oe,y as ke,yt as Ae,zt as P}from"./chunk-NSK5VX7P-CBCyTZMs.js";import{n as je,t as Me}from"./path-fybaL0A-.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),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})(),Array.prototype.slice;function Ne(e){return typeof e==`object`&&`length`in e?e:Array.from(e)}function Pe(e){return e[0]}function Fe(e){return e[1]}function Ie(e,t){var n=je(!0),r=null,i=j,a=null,o=Me(s);e=typeof e==`function`?e:e===void 0?Pe:je(e),t=typeof t==`function`?t:t===void 0?Fe:je(t);function s(s){var c,l=(s=Ne(s)).length,u,d=!1,f;for(r??(a=i(f=o())),c=0;c<=l;++c)!(c<l&&n(u=s[c],c,s))===d&&((d=!d)?a.lineStart():a.lineEnd()),d&&a.point(+e(u,c,s),+t(u,c,s));if(f)return a=null,f+``||null}return s.x=function(t){return arguments.length?(e=typeof t==`function`?t:je(+t),s):e},s.y=function(e){return arguments.length?(t=typeof e==`function`?e:je(+e),s):t},s.defined=function(e){return arguments.length?(n=typeof e==`function`?e:je(!!e),s):n},s.curve=function(e){return arguments.length?(i=e,r!=null&&(a=i(r)),s):i},s.context=function(e){return arguments.length?(e==null?r=a=null:a=i(r=e),s):r},s}var Le=l(e=>{let{securityLevel:t}=N(),n=y(`body`);if(t===`sandbox`){let t=y(`#i${e}`).node()?.contentDocument??document;n=y(t.body)}return n.select(`#${e}`)},`selectSvgElement`);function Re(e){return e==null}l(Re,`isNothing`);function ze(e){return typeof e==`object`&&!!e}l(ze,`isObject`);function Be(e){return Array.isArray(e)?e:Re(e)?[]:[e]}l(Be,`toArray`);function Ve(e,t){var n,r,i,a;if(t)for(a=Object.keys(t),n=0,r=a.length;n<r;n+=1)i=a[n],e[i]=t[i];return e}l(Ve,`extend`);function He(e,t){var n=``,r;for(r=0;r<t;r+=1)n+=e;return n}l(He,`repeat`);function Ue(e){return e===0&&1/e==-1/0}l(Ue,`isNegativeZero`);var We={isNothing:Re,isObject:ze,toArray:Be,repeat:He,isNegativeZero:Ue,extend:Ve};function Ge(e,t){var n=``,r=e.reason||`(unknown reason)`;return e.mark?(e.mark.name&&(n+=`in "`+e.mark.name+`" `),n+=`(`+(e.mark.line+1)+`:`+(e.mark.column+1)+`)`,!t&&e.mark.snippet&&(n+=`
3
3
 
4
4
  `+e.mark.snippet),r+` `+n):r}l(Ge,`formatError`);function Ke(e,t){Error.call(this),this.name=`YAMLException`,this.reason=e,this.mark=t,this.message=Ge(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=Error().stack||``}l(Ke,`YAMLException$1`),Ke.prototype=Object.create(Error.prototype),Ke.prototype.constructor=Ke,Ke.prototype.toString=l(function(e){return this.name+`: `+Ge(this,e)},`toString`);var qe=Ke;function Je(e,t,n,r,i){var a=``,o=``,s=Math.floor(i/2)-1;return r-t>s&&(a=` ... `,t=r-s+a.length),n-r>s&&(o=` ...`,n=r+s-o.length),{str:a+e.slice(t,n).replace(/\t/g,`→`)+o,pos:r-t+a.length}}l(Je,`getLine`);function Ye(e,t){return We.repeat(` `,t-e.length)+e}l(Ye,`padStart`);function Xe(e,t){if(t=Object.create(t||null),!e.buffer)return null;t.maxLength||(t.maxLength=79),typeof t.indent!=`number`&&(t.indent=1),typeof t.linesBefore!=`number`&&(t.linesBefore=3),typeof t.linesAfter!=`number`&&(t.linesAfter=2);for(var n=/\r?\n|\r|\0/g,r=[0],i=[],a,o=-1;a=n.exec(e.buffer);)i.push(a.index),r.push(a.index+a[0].length),e.position<=a.index&&o<0&&(o=r.length-2);o<0&&(o=r.length-1);var s=``,c,l,u=Math.min(e.line+t.linesAfter,i.length).toString().length,d=t.maxLength-(t.indent+u+3);for(c=1;c<=t.linesBefore&&!(o-c<0);c++)l=Je(e.buffer,r[o-c],i[o-c],e.position-(r[o]-r[o-c]),d),s=We.repeat(` `,t.indent)+Ye((e.line-c+1).toString(),u)+` | `+l.str+`
@@ -169,8 +169,8 @@ Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error
169
169
  L0,20`)},`requirement_arrow`),requirement_contains:l((e,t,n)=>{let r=e.append(`defs`).append(`marker`).attr(`id`,n+`_`+t+`-requirement_containsStart`).attr(`refX`,0).attr(`refY`,10).attr(`markerWidth`,20).attr(`markerHeight`,20).attr(`orient`,`auto`).append(`g`);r.append(`circle`).attr(`cx`,10).attr(`cy`,10).attr(`r`,9).attr(`fill`,`none`),r.append(`line`).attr(`x1`,1).attr(`x2`,19).attr(`y1`,10).attr(`y2`,10),r.append(`line`).attr(`y1`,1).attr(`y2`,19).attr(`x1`,10).attr(`x2`,10)},`requirement_contains`),requirement_arrow_neo:l((e,t,n)=>{let{themeVariables:r}=he(),{strokeWidth:i}=r;e.append(`defs`).append(`marker`).attr(`id`,n+`_`+t+`-requirement_arrowEnd`).attr(`refX`,20).attr(`refY`,10).attr(`markerWidth`,20).attr(`markerHeight`,20).attr(`orient`,`auto`).attr(`markerUnits`,`userSpaceOnUse`).attr(`stroke-width`,`${i}`).attr(`viewBox`,`0 0 25 20`).append(`path`).attr(`d`,`M0,0
170
170
  L20,10
171
171
  M20,10
172
- L0,20`).attr(`stroke-linejoin`,`miter`)},`requirement_arrow_neo`),requirement_contains_neo:l((e,t,n)=>{let{themeVariables:r}=he(),{strokeWidth:i}=r,a=e.append(`defs`).append(`marker`).attr(`id`,n+`_`+t+`-requirement_containsStart`).attr(`refX`,0).attr(`refY`,10).attr(`markerWidth`,20).attr(`markerHeight`,20).attr(`orient`,`auto`).attr(`markerUnits`,`userSpaceOnUse`).append(`g`);a.append(`circle`).attr(`cx`,10).attr(`cy`,10).attr(`r`,9).attr(`fill`,`none`),a.append(`line`).attr(`x1`,1).attr(`x2`,19).attr(`y1`,10).attr(`y2`,10),a.append(`line`).attr(`y1`,1).attr(`y2`,19).attr(`x1`,10).attr(`x2`,10),a.selectAll(`*`).attr(`stroke-width`,`${i}`)},`requirement_contains_neo`)},dd=ld,fd={common:C,getConfig:he,insertCluster:_c,insertEdge:ad,insertEdgeLabel:Yu,insertMarkers:dd,insertNode:Au,interpolateToCurve:O,labelHelper:G,log:P,positionEdgeLabel:Q},pd={},md=l(e=>{for(let t of e)pd[t.name]=t},`registerLayoutLoaders`);l(()=>{md([{name:`dagre`,loader:l(async()=>await m(()=>import(`./dagre-VZM6K2ZE-Og2UIoWg.js`),__vite__mapDeps([0,1,2])),`loader`)},{name:`swimlane`,loader:l(async()=>await m(()=>import(`./swimlanes-SLNWSIFB-B4xK-rwg.js`),[]),`loader`)},{name:`cose-bilkent`,loader:l(async()=>await m(()=>import(`./cose-bilkent-JH36ORCC-DOwCrGXH.js`),[]),`loader`)}])},`registerDefaultLayoutLoaders`)();var hd=l(async(e,t,n)=>{if(!(e.layoutAlgorithm in pd))throw Error(`Unknown layout algorithm: ${e.layoutAlgorithm}`);if(e.diagramId)for(let t of e.nodes){let n=t.domId||t.id;t.domId=`${e.diagramId}-${n}`}let r=pd[e.layoutAlgorithm],i=await r.loader(),{theme:a,themeVariables:o}=e.config,{useGradient:s,gradientStart:c,gradientStop:l}=o,u=t.attr(`id`);if(t.append(`defs`).append(`filter`).attr(`id`,`${u}-drop-shadow`).attr(`height`,`130%`).attr(`width`,`130%`).append(`feDropShadow`).attr(`dx`,`4`).attr(`dy`,`4`).attr(`stdDeviation`,0).attr(`flood-opacity`,`0.06`).attr(`flood-color`,`${a?.includes(`dark`)?`#FFFFFF`:`#000000`}`),t.append(`defs`).append(`filter`).attr(`id`,`${u}-drop-shadow-small`).attr(`height`,`150%`).attr(`width`,`150%`).append(`feDropShadow`).attr(`dx`,`2`).attr(`dy`,`2`).attr(`stdDeviation`,0).attr(`flood-opacity`,`0.06`).attr(`flood-color`,`${a?.includes(`dark`)?`#FFFFFF`:`#000000`}`),s){let e=t.append(`linearGradient`).attr(`id`,t.attr(`id`)+`-gradient`).attr(`gradientUnits`,`objectBoundingBox`).attr(`x1`,`0%`).attr(`y1`,`0%`).attr(`x2`,`100%`).attr(`y2`,`0%`);e.append(`svg:stop`).attr(`offset`,`0%`).attr(`stop-color`,c).attr(`stop-opacity`,1),e.append(`svg:stop`).attr(`offset`,`100%`).attr(`stop-color`,l).attr(`stop-opacity`,1)}return i.render(e,t,fd,{algorithm:r.algorithm},n)},`render`),gd=l((e=``,{fallback:t=`dagre`}={})=>{if(e in pd)return e;if(t in pd)return P.warn(`Layout algorithm ${e} is not registered. Using ${t} as fallback.`),t;throw Error(`Both layout algorithms ${e} and ${t} are not registered.`)},`getRegisteredLayoutAlgorithm`),_d=`comm`,vd=`rule`,yd=`decl`,bd=`@import`,xd=`@namespace`,Sd=`@keyframes`,Cd=`@layer`,wd=Math.abs,Td=String.fromCharCode;function Ed(e){return e.trim()}function Dd(e,t,n){return e.replace(t,n)}function Od(e,t){return e.charCodeAt(t)|0}function kd(e,t,n){return e.slice(t,n)}function Ad(e){return e.length}function jd(e){return e.length}function Md(e,t){return t.push(e),e}var Nd=1,Pd=1,Fd=0,Id=0,Ld=0,Rd=``;function zd(e,t,n,r,i,a,o,s){return{value:e,root:t,parent:n,type:r,props:i,children:a,line:Nd,column:Pd,length:o,return:``,siblings:s}}function Bd(){return Ld}function Vd(){return Ld=Id>0?Od(Rd,--Id):0,Pd--,Ld===10&&(Pd=1,Nd--),Ld}function Hd(){return Ld=Id<Fd?Od(Rd,Id++):0,Pd++,Ld===10&&(Pd=1,Nd++),Ld}function Ud(){return Od(Rd,Id)}function Wd(){return Id}function Gd(e,t){return kd(Rd,e,t)}function Kd(e){switch(e){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function qd(e){return Nd=Pd=1,Fd=Ad(Rd=e),Id=0,[]}function Jd(e){return Rd=``,e}function Yd(e){return Ed(Gd(Id-1,Qd(e===91?e+2:e===40?e+1:e)))}function Xd(e){for(;(Ld=Ud())&&Ld<33;)Hd();return Kd(e)>2||Kd(Ld)>3?``:` `}function Zd(e,t){for(;--t&&Hd()&&!(Ld<48||Ld>102||Ld>57&&Ld<65||Ld>70&&Ld<97););return Gd(e,Wd()+(t<6&&Ud()==32&&Hd()==32))}function Qd(e){for(;Hd();)switch(Ld){case e:return Id;case 34:case 39:e!==34&&e!==39&&Qd(Ld);break;case 40:e===41&&Qd(e);break;case 92:Hd();break}return Id}function $d(e,t){for(;Hd()&&e+Ld!==57&&(e+Ld!==84||Ud()!==47););return`/*`+Gd(t,Id-1)+`*`+Td(e===47?e:Hd())}function ef(e){for(;!Kd(Ud());)Hd();return Gd(e,Id)}function tf(e){return Jd(nf(``,null,null,null,[``],e=qd(e),0,[0],e))}function nf(e,t,n,r,i,a,o,s,c){for(var l=0,u=0,d=o,f=0,p=0,m=0,h=1,g=1,_=1,v=0,y=0,b=``,x=i,S=a,C=r,w=b;g;)switch(m=y,y=Hd()){case 40:m!=108&&Od(w,d-1)==58?(v++,w+=`(`):w+=Yd(y);break;case 41:v--,w+=`)`;break;case 34:case 39:case 91:w+=Yd(y);break;case 9:case 10:case 13:case 32:if(v>0){w+=Td(y);break}w+=Xd(m);break;case 92:w+=Zd(Wd()-1,7);continue;case 47:switch(Ud()){case 42:case 47:Md(af($d(Hd(),Wd()),t,n,c),c),(Kd(m||1)==5||Kd(Ud()||1)==5)&&Ad(w)&&kd(w,-1,void 0)!==` `&&(w+=` `);break;default:w+=`/`}break;case 123*h:s[l++]=Ad(w)*_;case 125*h:case 59:case 0:if(v>0&&y){w+=Td(y);break}switch(y){case 0:case 125:g=0;case 59+u:_==-1&&(w=Dd(w,/\f/g,``)),p>0&&(Ad(w)-d||h===0)&&Md(p>32?of(w+`;`,r,n,d-1,c):of(Dd(w,` `,``)+`;`,r,n,d-2,c),c);break;case 59:w+=`;`;default:if(Md(C=rf(w,t,n,l,u,i,s,b,x=[],S=[],d,a),a),y===123){if(u===0)nf(w,t,C,C,x,a,d,s,S);else{switch(f){case 99:if(Od(w,3)===110)break;case 108:if(Od(w,2)===97)break;default:u=0;case 100:case 109:case 115:}u?nf(e,C,C,r&&Md(rf(e,C,C,0,0,i,s,b,i,x=[],d,S),S),i,S,d,s,r?x:S):nf(w,C,C,C,[``],S,0,s,S)}}}l=u=p=0,h=_=1,b=w=``,d=o;break;case 58:d=1+Ad(w),p=m;default:if(h<1){if(y==123)--h;else if(y==125&&h++==0&&Vd()==125)continue}switch(w+=Td(y),y*h){case 38:_=u>0?1:(w+=`\f`,-1);break;case 44:if(v>0)break;s[l++]=(Ad(w)-1)*_,_=1;break;case 64:Ud()===45&&(w+=Yd(Hd())),f=Ud(),u=d=Ad(b=w+=ef(Wd())),y++;break;case 45:m===45&&Ad(w)==2&&(h=0)}}return a}function rf(e,t,n,r,i,a,o,s,c,l,u,d){for(var f=i-1,p=i===0?a:[``],m=jd(p),h=0,g=0,_=0;h<r;++h)for(var v=0,y=kd(e,f+1,f=wd(g=o[h])),b=e;v<m;++v)(b=Ed(g>0?p[v]+` `+y:Dd(y,/&\f/g,p[v])))&&(c[_++]=b);return zd(e,t,n,i===0?vd:s,c,l,u,d)}function af(e,t,n,r){return zd(e,t,n,_d,Td(Bd()),kd(e,2,-2),0,r)}function of(e,t,n,r,i){return zd(e,t,n,yd,kd(e,0,r),kd(e,r+1,-1),r,i)}function sf(e,t){for(var n=``,r=0;r<e.length;r++)n+=t(e[r],r,e,t)||``;return n}function cf(e,t,n,r){switch(e.type){case Cd:if(e.children.length)break;case bd:case xd:case yd:return e.return=e.return||e.value;case _d:return``;case Sd:return e.return=e.value+`{`+sf(e.children,r)+`}`;case vd:if(!Ad(e.value=e.props.join(`,`)))return``}return Ad(n=sf(e.children,r))?e.return=e.value+`{`+n+`}`:``}function lf(e){var t=jd(e);return function(n,r,i,a){for(var o=``,s=0;s<t;s++)o+=e[s](n,r,i,a)||``;return o}}var uf=`c4`,df={id:uf,detector:l(e=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./c4Diagram-5PPSVZJV-C729LI31.js`);return{diagram:e}},[]);return{id:uf,diagram:e}},`loader`)},ff=`flowchart`,pf={id:ff,detector:l((e,t)=>t?.flowchart?.defaultRenderer===`dagre-wrapper`||t?.flowchart?.defaultRenderer===`elk`?!1:/^\s*graph/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./flowDiagram-UKHOOZJN-C729LI31.js`);return{diagram:e}},[]);return{id:ff,diagram:e}},`loader`)},mf=`flowchart-v2`,hf={id:mf,detector:l((e,t)=>t?.flowchart?.defaultRenderer!==`dagre-d3`&&(t?.flowchart?.defaultRenderer===`elk`&&(t.layout=`elk`),/^\s*graph/.test(e)&&t?.flowchart?.defaultRenderer===`dagre-wrapper`?!0:/^\s*flowchart/.test(e)),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./flowDiagram-UKHOOZJN-C729LI31.js`);return{diagram:e}},[]);return{id:mf,diagram:e}},`loader`)},gf=`swimlane`,_f={id:gf,detector:l(e=>/^\s*swimlane-beta\b/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./swimlanesDiagram-ULZ7WXOC-C729LI31.js`);return{diagram:e}},[]);return{id:gf,diagram:e}},`loader`)},vf=`er`,yf={id:vf,detector:l(e=>/^\s*erDiagram/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./erDiagram-JOGREHBK-C729LI31.js`);return{diagram:e}},[]);return{id:vf,diagram:e}},`loader`)},bf=`gitGraph`,xf={id:bf,detector:l(e=>/^\s*gitGraph/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./gitGraphDiagram-DS77QQ5N-C729LI31.js`);return{diagram:e}},[]);return{id:bf,diagram:e}},`loader`)},Sf=`gantt`,Cf={id:Sf,detector:l(e=>/^\s*gantt/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./ganttDiagram-PKOTCBZU-C729LI31.js`);return{diagram:e}},[]);return{id:Sf,diagram:e}},`loader`)},wf=`info`,Tf={id:wf,detector:l(e=>/^\s*info/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./infoDiagram-6WML65LV-C729LI31.js`);return{diagram:e}},[]);return{id:wf,diagram:e}},`loader`)},Ef=`pie`,Df={id:Ef,detector:l(e=>/^\s*pie/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./pieDiagram-7S7Q4E2Y-C729LI31.js`);return{diagram:e}},[]);return{id:Ef,diagram:e}},`loader`)},Of=`quadrantChart`,kf={id:Of,detector:l(e=>/^\s*quadrantChart/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./quadrantDiagram-CIZ2JOQS-C729LI31.js`);return{diagram:e}},[]);return{id:Of,diagram:e}},`loader`)},Af=`xychart`,jf={id:Af,detector:l(e=>/^\s*xychart(-beta)?/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./xychartDiagram-ELKLHX3M-C729LI31.js`);return{diagram:e}},[]);return{id:Af,diagram:e}},`loader`)},Mf=`requirement`,Nf={id:Mf,detector:l(e=>/^\s*requirement(Diagram)?/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./requirementDiagram-LRYGKXZP-C729LI31.js`);return{diagram:e}},[]);return{id:Mf,diagram:e}},`loader`)},Pf=`sequence`,Ff={id:Pf,detector:l(e=>/^\s*sequenceDiagram/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./sequenceDiagram-SI44F4Z6-C729LI31.js`);return{diagram:e}},[]);return{id:Pf,diagram:e}},`loader`)},If=`class`,Lf={id:If,detector:l((e,t)=>t?.class?.defaultRenderer!==`dagre-wrapper`&&/^\s*classDiagram/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./classDiagram-JCYQIIEL-C729LI31.js`);return{diagram:e}},[]);return{id:If,diagram:e}},`loader`)},Rf=`classDiagram`,zf={id:Rf,detector:l((e,t)=>/^\s*classDiagram/.test(e)&&t?.class?.defaultRenderer===`dagre-wrapper`?!0:/^\s*classDiagram-v2/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./classDiagram-v2-OCEON4UE-DnUXz1Pv.js`);return{diagram:e}},__vite__mapDeps([3,1,4,5,6]));return{id:Rf,diagram:e}},`loader`)},Bf=`state`,Vf={id:Bf,detector:l((e,t)=>t?.state?.defaultRenderer!==`dagre-wrapper`&&/^\s*stateDiagram/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./stateDiagram-OKZ733FA-CIZQWK5X.js`);return{diagram:e}},__vite__mapDeps([7,1,5,6,2,8]));return{id:Bf,diagram:e}},`loader`)},Hf=`stateDiagram`,Uf={id:Hf,detector:l((e,t)=>!!(/^\s*stateDiagram-v2/.test(e)||/^\s*stateDiagram/.test(e)&&t?.state?.defaultRenderer===`dagre-wrapper`),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./stateDiagram-v2-UEYNNEHI-Sm6p0NoR.js`);return{diagram:e}},__vite__mapDeps([9,1,5,6,8]));return{id:Hf,diagram:e}},`loader`)},Wf=`journey`,Gf={id:Wf,detector:l(e=>/^\s*journey/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./journeyDiagram-NVQOT4AX-C729LI31.js`);return{diagram:e}},[]);return{id:Wf,diagram:e}},`loader`)},Kf={draw:l((e,t,n)=>{P.debug(`rendering svg for syntax error
173
- `);let r=Le(t),i=r.append(`g`);r.attr(`viewBox`,`0 0 2412 512`),S(r,100,512,!0),i.append(`path`).attr(`class`,`error-icon`).attr(`d`,`m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z`),i.append(`path`).attr(`class`,`error-icon`).attr(`d`,`m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z`),i.append(`path`).attr(`class`,`error-icon`).attr(`d`,`m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z`),i.append(`path`).attr(`class`,`error-icon`).attr(`d`,`m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z`),i.append(`path`).attr(`class`,`error-icon`).attr(`d`,`m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z`),i.append(`path`).attr(`class`,`error-icon`).attr(`d`,`m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z`),i.append(`text`).attr(`class`,`error-text`).attr(`x`,1440).attr(`y`,250).attr(`font-size`,`150px`).style(`text-anchor`,`middle`).text(`Syntax error in text`),i.append(`text`).attr(`class`,`error-text`).attr(`x`,1250).attr(`y`,400).attr(`font-size`,`100px`).style(`text-anchor`,`middle`).text(`mermaid version ${n}`)},`draw`)},qf=Kf,Jf={db:{},renderer:Kf,parser:{parse:l(()=>{},`parse`)}},Yf=`flowchart-elk`,Xf={id:Yf,detector:l((e,t={})=>/^\s*flowchart-elk/.test(e)||/^\s*(flowchart|graph)/.test(e)&&t?.flowchart?.defaultRenderer===`elk`?(t.layout=`elk`,!0):!1,`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./flowDiagram-UKHOOZJN-C729LI31.js`);return{diagram:e}},[]);return{id:Yf,diagram:e}},`loader`)},Zf=`timeline`,Qf={id:Zf,detector:l(e=>/^\s*timeline/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./timeline-definition-Z64GVDOM-CV3KwSb-.js`);return{diagram:e}},__vite__mapDeps([10,1,11]));return{id:Zf,diagram:e}},`loader`)},$f=`mindmap`,ep={id:$f,detector:l(e=>/^\s*mindmap/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./mindmap-definition-FAOFIHXS-DvgvXZhp.js`);return{diagram:e}},__vite__mapDeps([12,1,5]));return{id:$f,diagram:e}},`loader`)},tp=`kanban`,np={id:tp,detector:l(e=>/^\s*kanban/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./kanban-definition-27J2QSJJ-CxkCxJUN.js`);return{diagram:e}},__vite__mapDeps([13,1,4]));return{id:tp,diagram:e}},`loader`)},rp=`sankey`,ip={id:rp,detector:l(e=>/^\s*sankey(-beta)?/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./sankeyDiagram-W5VNT64P-C729LI31.js`);return{diagram:e}},[]);return{id:rp,diagram:e}},`loader`)},ap=`packet`,op={id:ap,detector:l(e=>/^\s*packet(-beta)?/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./diagram-LBJQPF4R-C729LI31.js`);return{diagram:e}},[]);return{id:ap,diagram:e}},`loader`)},sp=`radar`,cp={id:sp,detector:l(e=>/^\s*radar-beta/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./diagram-UB23O5K3-C729LI31.js`);return{diagram:e}},[]);return{id:sp,diagram:e}},`loader`)},lp=`block`,up={id:lp,detector:l(e=>/^\s*block(-beta)?/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./blockDiagram-VBNYF7ZC-C729LI31.js`);return{diagram:e}},[]);return{id:lp,diagram:e}},`loader`)},dp=`treeView`,fp={id:dp,detector:l(e=>/^\s*treeView-beta/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./diagram-7IWD3JNH-C729LI31.js`);return{diagram:e}},[]);return{id:dp,diagram:e}},`loader`)},pp=`architecture`,mp={id:pp,detector:l(e=>/^\s*architecture/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./architectureDiagram-T3A2C74G-C729LI31.js`);return{diagram:e}},[]);return{id:pp,diagram:e}},`loader`)},hp=`eventmodeling`,gp={id:hp,detector:l(e=>/^\s*eventmodeling/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./diagram-B4RE2ZJO-C729LI31.js`);return{diagram:e}},[]);return{id:hp,diagram:e}},`loader`)},_p=`ishikawa`,vp={id:_p,detector:l(e=>/^\s*ishikawa(-beta)?\b/i.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./ishikawaDiagram-WSZJBQD7-C729LI31.js`);return{diagram:e}},[]);return{id:_p,diagram:e}},`loader`)},yp=`venn`,bp={id:yp,detector:l(e=>/^\s*venn-beta/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./vennDiagram-T6HMQDX7-C729LI31.js`);return{diagram:e}},[]);return{id:yp,diagram:e}},`loader`)},xp=`treemap`,Sp={id:xp,detector:l(e=>/^\s*treemap/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./diagram-Q27KOJAE-C729LI31.js`);return{diagram:e}},[]);return{id:xp,diagram:e}},`loader`)},Cp=`wardley`,wp={id:Cp,detector:l(e=>/^\s*wardley-beta/i.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./wardleyDiagram-T6FBY63Y-C729LI31.js`);return{diagram:e}},[]);return{id:Cp,diagram:e}},`loader`)},Tp=`cynefin`,Ep={id:Tp,detector:l(e=>/^\s*cynefin-beta(?:[\s:]|$)/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./cynefinDiagram-MW4NZA55-C729LI31.js`);return{diagram:e}},[]);return{id:Tp,diagram:e}},`loader`)},Dp=`railroad`,Op={id:Dp,detector:l(e=>/^\s*railroad-beta/i.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./railroadDiagram-AXF67PYL-C729LI31.js`);return{diagram:e}},[]);return{id:Dp,diagram:e}},`loader`)},kp=`railroadEbnf`,Ap={id:kp,detector:l(e=>/^\s*railroad-ebnf-beta/i.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./ebnfDiagram-BXEA7PRR-C729LI31.js`);return{diagram:e}},[]);return{id:kp,diagram:e}},`loader`)},jp=`railroadAbnf`,Mp={id:jp,detector:l(e=>/^\s*railroad-abnf-beta/i.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./abnfDiagram-N423BO3Z-C729LI31.js`);return{diagram:e}},[]);return{id:jp,diagram:e}},`loader`)},Np=`railroadPeg`,Pp={id:Np,detector:l(e=>/^\s*railroad-peg-beta/i.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./pegDiagram-VL7TDLO6-C729LI31.js`);return{diagram:e}},[]);return{id:Np,diagram:e}},`loader`)},Fp=!1,Ip=l(()=>{Fp||(Fp=!0,T(`error`,Jf,e=>e.toLowerCase().trim()===`error`),T(`---`,{db:{clear:l(()=>{},`clear`)},styles:{},renderer:{draw:l(()=>{},`draw`)},parser:{parse:l(()=>{throw Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks")},`parse`)},init:l(()=>null,`init`)},e=>e.toLowerCase().trimStart().startsWith(`---`)),we(Xf,ep,mp),we(df,np,zf,Lf,yf,Cf,Tf,Df,Nf,Ff,_f,hf,pf,Qf,xf,Uf,Vf,Gf,kf,ip,op,jf,up,gp,fp,cp,vp,Sp,Op,Ap,Mp,Pp,bp,wp,Ep))},`addDiagrams`),Lp=l(async()=>{P.debug(`Loading registered diagrams`);let e=(await Promise.allSettled(Object.entries(xe).map(async([e,{detector:t,loader:n}])=>{if(n)try{ee(e)}catch{try{let{diagram:e,id:r}=await n();T(r,e,t)}catch(t){throw P.error(`Failed to load external diagram with key ${e}. Removing from detectors.`),delete xe[e],t}}}))).filter(e=>e.status===`rejected`);if(e.length>0){P.error(`Failed to load ${e.length} external diagrams`);for(let t of e)P.error(t);throw Error(`Failed to load ${e.length} external diagrams`)}},`loadRegisteredDiagrams`),Rp=`graphics-document document`;function zp(e,t){e.attr(`role`,Rp),t!==``&&e.attr(`aria-roledescription`,t)}l(zp,`setA11yDiagramInfo`);function Bp(e,t,n,r){if(e.insert!==void 0){if(n){let t=`chart-desc-${r}`;e.attr(`aria-describedby`,t),e.insert(`desc`,`:first-child`).attr(`id`,t).text(n)}if(t){let n=`chart-title-${r}`;e.attr(`aria-labelledby`,n),e.insert(`title`,`:first-child`).attr(`id`,n).text(t)}}}l(Bp,`addSVGa11yTitleDescription`);var Vp=class e{constructor(e,t,n,r,i){this.type=e,this.text=t,this.db=n,this.parser=r,this.renderer=i}static{l(this,`Diagram`)}static async fromText(t,n={}){let r=he(),i=te(t,r);t=ce(t)+`
172
+ L0,20`).attr(`stroke-linejoin`,`miter`)},`requirement_arrow_neo`),requirement_contains_neo:l((e,t,n)=>{let{themeVariables:r}=he(),{strokeWidth:i}=r,a=e.append(`defs`).append(`marker`).attr(`id`,n+`_`+t+`-requirement_containsStart`).attr(`refX`,0).attr(`refY`,10).attr(`markerWidth`,20).attr(`markerHeight`,20).attr(`orient`,`auto`).attr(`markerUnits`,`userSpaceOnUse`).append(`g`);a.append(`circle`).attr(`cx`,10).attr(`cy`,10).attr(`r`,9).attr(`fill`,`none`),a.append(`line`).attr(`x1`,1).attr(`x2`,19).attr(`y1`,10).attr(`y2`,10),a.append(`line`).attr(`y1`,1).attr(`y2`,19).attr(`x1`,10).attr(`x2`,10),a.selectAll(`*`).attr(`stroke-width`,`${i}`)},`requirement_contains_neo`)},dd=ld,fd={common:C,getConfig:he,insertCluster:_c,insertEdge:ad,insertEdgeLabel:Yu,insertMarkers:dd,insertNode:Au,interpolateToCurve:O,labelHelper:G,log:P,positionEdgeLabel:Q},pd={},md=l(e=>{for(let t of e)pd[t.name]=t},`registerLayoutLoaders`);l(()=>{md([{name:`dagre`,loader:l(async()=>await m(()=>import(`./dagre-VZM6K2ZE-831qZcA8.js`),__vite__mapDeps([0,1,2])),`loader`)},{name:`swimlane`,loader:l(async()=>await m(()=>import(`./swimlanes-SLNWSIFB-B4xK-rwg.js`),[]),`loader`)},{name:`cose-bilkent`,loader:l(async()=>await m(()=>import(`./cose-bilkent-JH36ORCC-DOwCrGXH.js`),[]),`loader`)}])},`registerDefaultLayoutLoaders`)();var hd=l(async(e,t,n)=>{if(!(e.layoutAlgorithm in pd))throw Error(`Unknown layout algorithm: ${e.layoutAlgorithm}`);if(e.diagramId)for(let t of e.nodes){let n=t.domId||t.id;t.domId=`${e.diagramId}-${n}`}let r=pd[e.layoutAlgorithm],i=await r.loader(),{theme:a,themeVariables:o}=e.config,{useGradient:s,gradientStart:c,gradientStop:l}=o,u=t.attr(`id`);if(t.append(`defs`).append(`filter`).attr(`id`,`${u}-drop-shadow`).attr(`height`,`130%`).attr(`width`,`130%`).append(`feDropShadow`).attr(`dx`,`4`).attr(`dy`,`4`).attr(`stdDeviation`,0).attr(`flood-opacity`,`0.06`).attr(`flood-color`,`${a?.includes(`dark`)?`#FFFFFF`:`#000000`}`),t.append(`defs`).append(`filter`).attr(`id`,`${u}-drop-shadow-small`).attr(`height`,`150%`).attr(`width`,`150%`).append(`feDropShadow`).attr(`dx`,`2`).attr(`dy`,`2`).attr(`stdDeviation`,0).attr(`flood-opacity`,`0.06`).attr(`flood-color`,`${a?.includes(`dark`)?`#FFFFFF`:`#000000`}`),s){let e=t.append(`linearGradient`).attr(`id`,t.attr(`id`)+`-gradient`).attr(`gradientUnits`,`objectBoundingBox`).attr(`x1`,`0%`).attr(`y1`,`0%`).attr(`x2`,`100%`).attr(`y2`,`0%`);e.append(`svg:stop`).attr(`offset`,`0%`).attr(`stop-color`,c).attr(`stop-opacity`,1),e.append(`svg:stop`).attr(`offset`,`100%`).attr(`stop-color`,l).attr(`stop-opacity`,1)}return i.render(e,t,fd,{algorithm:r.algorithm},n)},`render`),gd=l((e=``,{fallback:t=`dagre`}={})=>{if(e in pd)return e;if(t in pd)return P.warn(`Layout algorithm ${e} is not registered. Using ${t} as fallback.`),t;throw Error(`Both layout algorithms ${e} and ${t} are not registered.`)},`getRegisteredLayoutAlgorithm`),_d=`comm`,vd=`rule`,yd=`decl`,bd=`@import`,xd=`@namespace`,Sd=`@keyframes`,Cd=`@layer`,wd=Math.abs,Td=String.fromCharCode;function Ed(e){return e.trim()}function Dd(e,t,n){return e.replace(t,n)}function Od(e,t){return e.charCodeAt(t)|0}function kd(e,t,n){return e.slice(t,n)}function Ad(e){return e.length}function jd(e){return e.length}function Md(e,t){return t.push(e),e}var Nd=1,Pd=1,Fd=0,Id=0,Ld=0,Rd=``;function zd(e,t,n,r,i,a,o,s){return{value:e,root:t,parent:n,type:r,props:i,children:a,line:Nd,column:Pd,length:o,return:``,siblings:s}}function Bd(){return Ld}function Vd(){return Ld=Id>0?Od(Rd,--Id):0,Pd--,Ld===10&&(Pd=1,Nd--),Ld}function Hd(){return Ld=Id<Fd?Od(Rd,Id++):0,Pd++,Ld===10&&(Pd=1,Nd++),Ld}function Ud(){return Od(Rd,Id)}function Wd(){return Id}function Gd(e,t){return kd(Rd,e,t)}function Kd(e){switch(e){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function qd(e){return Nd=Pd=1,Fd=Ad(Rd=e),Id=0,[]}function Jd(e){return Rd=``,e}function Yd(e){return Ed(Gd(Id-1,Qd(e===91?e+2:e===40?e+1:e)))}function Xd(e){for(;(Ld=Ud())&&Ld<33;)Hd();return Kd(e)>2||Kd(Ld)>3?``:` `}function Zd(e,t){for(;--t&&Hd()&&!(Ld<48||Ld>102||Ld>57&&Ld<65||Ld>70&&Ld<97););return Gd(e,Wd()+(t<6&&Ud()==32&&Hd()==32))}function Qd(e){for(;Hd();)switch(Ld){case e:return Id;case 34:case 39:e!==34&&e!==39&&Qd(Ld);break;case 40:e===41&&Qd(e);break;case 92:Hd();break}return Id}function $d(e,t){for(;Hd()&&e+Ld!==57&&(e+Ld!==84||Ud()!==47););return`/*`+Gd(t,Id-1)+`*`+Td(e===47?e:Hd())}function ef(e){for(;!Kd(Ud());)Hd();return Gd(e,Id)}function tf(e){return Jd(nf(``,null,null,null,[``],e=qd(e),0,[0],e))}function nf(e,t,n,r,i,a,o,s,c){for(var l=0,u=0,d=o,f=0,p=0,m=0,h=1,g=1,_=1,v=0,y=0,b=``,x=i,S=a,C=r,w=b;g;)switch(m=y,y=Hd()){case 40:m!=108&&Od(w,d-1)==58?(v++,w+=`(`):w+=Yd(y);break;case 41:v--,w+=`)`;break;case 34:case 39:case 91:w+=Yd(y);break;case 9:case 10:case 13:case 32:if(v>0){w+=Td(y);break}w+=Xd(m);break;case 92:w+=Zd(Wd()-1,7);continue;case 47:switch(Ud()){case 42:case 47:Md(af($d(Hd(),Wd()),t,n,c),c),(Kd(m||1)==5||Kd(Ud()||1)==5)&&Ad(w)&&kd(w,-1,void 0)!==` `&&(w+=` `);break;default:w+=`/`}break;case 123*h:s[l++]=Ad(w)*_;case 125*h:case 59:case 0:if(v>0&&y){w+=Td(y);break}switch(y){case 0:case 125:g=0;case 59+u:_==-1&&(w=Dd(w,/\f/g,``)),p>0&&(Ad(w)-d||h===0)&&Md(p>32?of(w+`;`,r,n,d-1,c):of(Dd(w,` `,``)+`;`,r,n,d-2,c),c);break;case 59:w+=`;`;default:if(Md(C=rf(w,t,n,l,u,i,s,b,x=[],S=[],d,a),a),y===123){if(u===0)nf(w,t,C,C,x,a,d,s,S);else{switch(f){case 99:if(Od(w,3)===110)break;case 108:if(Od(w,2)===97)break;default:u=0;case 100:case 109:case 115:}u?nf(e,C,C,r&&Md(rf(e,C,C,0,0,i,s,b,i,x=[],d,S),S),i,S,d,s,r?x:S):nf(w,C,C,C,[``],S,0,s,S)}}}l=u=p=0,h=_=1,b=w=``,d=o;break;case 58:d=1+Ad(w),p=m;default:if(h<1){if(y==123)--h;else if(y==125&&h++==0&&Vd()==125)continue}switch(w+=Td(y),y*h){case 38:_=u>0?1:(w+=`\f`,-1);break;case 44:if(v>0)break;s[l++]=(Ad(w)-1)*_,_=1;break;case 64:Ud()===45&&(w+=Yd(Hd())),f=Ud(),u=d=Ad(b=w+=ef(Wd())),y++;break;case 45:m===45&&Ad(w)==2&&(h=0)}}return a}function rf(e,t,n,r,i,a,o,s,c,l,u,d){for(var f=i-1,p=i===0?a:[``],m=jd(p),h=0,g=0,_=0;h<r;++h)for(var v=0,y=kd(e,f+1,f=wd(g=o[h])),b=e;v<m;++v)(b=Ed(g>0?p[v]+` `+y:Dd(y,/&\f/g,p[v])))&&(c[_++]=b);return zd(e,t,n,i===0?vd:s,c,l,u,d)}function af(e,t,n,r){return zd(e,t,n,_d,Td(Bd()),kd(e,2,-2),0,r)}function of(e,t,n,r,i){return zd(e,t,n,yd,kd(e,0,r),kd(e,r+1,-1),r,i)}function sf(e,t){for(var n=``,r=0;r<e.length;r++)n+=t(e[r],r,e,t)||``;return n}function cf(e,t,n,r){switch(e.type){case Cd:if(e.children.length)break;case bd:case xd:case yd:return e.return=e.return||e.value;case _d:return``;case Sd:return e.return=e.value+`{`+sf(e.children,r)+`}`;case vd:if(!Ad(e.value=e.props.join(`,`)))return``}return Ad(n=sf(e.children,r))?e.return=e.value+`{`+n+`}`:``}function lf(e){var t=jd(e);return function(n,r,i,a){for(var o=``,s=0;s<t;s++)o+=e[s](n,r,i,a)||``;return o}}var uf=`c4`,df={id:uf,detector:l(e=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./c4Diagram-5PPSVZJV-C729LI31.js`);return{diagram:e}},[]);return{id:uf,diagram:e}},`loader`)},ff=`flowchart`,pf={id:ff,detector:l((e,t)=>t?.flowchart?.defaultRenderer===`dagre-wrapper`||t?.flowchart?.defaultRenderer===`elk`?!1:/^\s*graph/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./flowDiagram-UKHOOZJN-C729LI31.js`);return{diagram:e}},[]);return{id:ff,diagram:e}},`loader`)},mf=`flowchart-v2`,hf={id:mf,detector:l((e,t)=>t?.flowchart?.defaultRenderer!==`dagre-d3`&&(t?.flowchart?.defaultRenderer===`elk`&&(t.layout=`elk`),/^\s*graph/.test(e)&&t?.flowchart?.defaultRenderer===`dagre-wrapper`?!0:/^\s*flowchart/.test(e)),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./flowDiagram-UKHOOZJN-C729LI31.js`);return{diagram:e}},[]);return{id:mf,diagram:e}},`loader`)},gf=`swimlane`,_f={id:gf,detector:l(e=>/^\s*swimlane-beta\b/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./swimlanesDiagram-ULZ7WXOC-C729LI31.js`);return{diagram:e}},[]);return{id:gf,diagram:e}},`loader`)},vf=`er`,yf={id:vf,detector:l(e=>/^\s*erDiagram/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./erDiagram-JOGREHBK-C729LI31.js`);return{diagram:e}},[]);return{id:vf,diagram:e}},`loader`)},bf=`gitGraph`,xf={id:bf,detector:l(e=>/^\s*gitGraph/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./gitGraphDiagram-DS77QQ5N-C729LI31.js`);return{diagram:e}},[]);return{id:bf,diagram:e}},`loader`)},Sf=`gantt`,Cf={id:Sf,detector:l(e=>/^\s*gantt/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./ganttDiagram-PKOTCBZU-C729LI31.js`);return{diagram:e}},[]);return{id:Sf,diagram:e}},`loader`)},wf=`info`,Tf={id:wf,detector:l(e=>/^\s*info/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./infoDiagram-6WML65LV-C729LI31.js`);return{diagram:e}},[]);return{id:wf,diagram:e}},`loader`)},Ef=`pie`,Df={id:Ef,detector:l(e=>/^\s*pie/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./pieDiagram-7S7Q4E2Y-C729LI31.js`);return{diagram:e}},[]);return{id:Ef,diagram:e}},`loader`)},Of=`quadrantChart`,kf={id:Of,detector:l(e=>/^\s*quadrantChart/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./quadrantDiagram-CIZ2JOQS-C729LI31.js`);return{diagram:e}},[]);return{id:Of,diagram:e}},`loader`)},Af=`xychart`,jf={id:Af,detector:l(e=>/^\s*xychart(-beta)?/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./xychartDiagram-ELKLHX3M-C729LI31.js`);return{diagram:e}},[]);return{id:Af,diagram:e}},`loader`)},Mf=`requirement`,Nf={id:Mf,detector:l(e=>/^\s*requirement(Diagram)?/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./requirementDiagram-LRYGKXZP-C729LI31.js`);return{diagram:e}},[]);return{id:Mf,diagram:e}},`loader`)},Pf=`sequence`,Ff={id:Pf,detector:l(e=>/^\s*sequenceDiagram/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./sequenceDiagram-SI44F4Z6-C729LI31.js`);return{diagram:e}},[]);return{id:Pf,diagram:e}},`loader`)},If=`class`,Lf={id:If,detector:l((e,t)=>t?.class?.defaultRenderer!==`dagre-wrapper`&&/^\s*classDiagram/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./classDiagram-JCYQIIEL-C729LI31.js`);return{diagram:e}},[]);return{id:If,diagram:e}},`loader`)},Rf=`classDiagram`,zf={id:Rf,detector:l((e,t)=>/^\s*classDiagram/.test(e)&&t?.class?.defaultRenderer===`dagre-wrapper`?!0:/^\s*classDiagram-v2/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./classDiagram-v2-OCEON4UE-D4uAiFr8.js`);return{diagram:e}},__vite__mapDeps([3,1,4,5,6]));return{id:Rf,diagram:e}},`loader`)},Bf=`state`,Vf={id:Bf,detector:l((e,t)=>t?.state?.defaultRenderer!==`dagre-wrapper`&&/^\s*stateDiagram/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./stateDiagram-OKZ733FA-B_88AzBS.js`);return{diagram:e}},__vite__mapDeps([7,1,5,6,2,8]));return{id:Bf,diagram:e}},`loader`)},Hf=`stateDiagram`,Uf={id:Hf,detector:l((e,t)=>!!(/^\s*stateDiagram-v2/.test(e)||/^\s*stateDiagram/.test(e)&&t?.state?.defaultRenderer===`dagre-wrapper`),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./stateDiagram-v2-UEYNNEHI-CR5gcgq6.js`);return{diagram:e}},__vite__mapDeps([9,1,5,6,8]));return{id:Hf,diagram:e}},`loader`)},Wf=`journey`,Gf={id:Wf,detector:l(e=>/^\s*journey/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./journeyDiagram-NVQOT4AX-C729LI31.js`);return{diagram:e}},[]);return{id:Wf,diagram:e}},`loader`)},Kf={draw:l((e,t,n)=>{P.debug(`rendering svg for syntax error
173
+ `);let r=Le(t),i=r.append(`g`);r.attr(`viewBox`,`0 0 2412 512`),S(r,100,512,!0),i.append(`path`).attr(`class`,`error-icon`).attr(`d`,`m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z`),i.append(`path`).attr(`class`,`error-icon`).attr(`d`,`m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z`),i.append(`path`).attr(`class`,`error-icon`).attr(`d`,`m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z`),i.append(`path`).attr(`class`,`error-icon`).attr(`d`,`m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z`),i.append(`path`).attr(`class`,`error-icon`).attr(`d`,`m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z`),i.append(`path`).attr(`class`,`error-icon`).attr(`d`,`m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z`),i.append(`text`).attr(`class`,`error-text`).attr(`x`,1440).attr(`y`,250).attr(`font-size`,`150px`).style(`text-anchor`,`middle`).text(`Syntax error in text`),i.append(`text`).attr(`class`,`error-text`).attr(`x`,1250).attr(`y`,400).attr(`font-size`,`100px`).style(`text-anchor`,`middle`).text(`mermaid version ${n}`)},`draw`)},qf=Kf,Jf={db:{},renderer:Kf,parser:{parse:l(()=>{},`parse`)}},Yf=`flowchart-elk`,Xf={id:Yf,detector:l((e,t={})=>/^\s*flowchart-elk/.test(e)||/^\s*(flowchart|graph)/.test(e)&&t?.flowchart?.defaultRenderer===`elk`?(t.layout=`elk`,!0):!1,`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./flowDiagram-UKHOOZJN-C729LI31.js`);return{diagram:e}},[]);return{id:Yf,diagram:e}},`loader`)},Zf=`timeline`,Qf={id:Zf,detector:l(e=>/^\s*timeline/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./timeline-definition-Z64GVDOM-CCv52MfY.js`);return{diagram:e}},__vite__mapDeps([10,1,11]));return{id:Zf,diagram:e}},`loader`)},$f=`mindmap`,ep={id:$f,detector:l(e=>/^\s*mindmap/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./mindmap-definition-FAOFIHXS-CGj9nrVk.js`);return{diagram:e}},__vite__mapDeps([12,1,5]));return{id:$f,diagram:e}},`loader`)},tp=`kanban`,np={id:tp,detector:l(e=>/^\s*kanban/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./kanban-definition-27J2QSJJ-G7PaPzy-.js`);return{diagram:e}},__vite__mapDeps([13,1,4]));return{id:tp,diagram:e}},`loader`)},rp=`sankey`,ip={id:rp,detector:l(e=>/^\s*sankey(-beta)?/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./sankeyDiagram-W5VNT64P-C729LI31.js`);return{diagram:e}},[]);return{id:rp,diagram:e}},`loader`)},ap=`packet`,op={id:ap,detector:l(e=>/^\s*packet(-beta)?/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./diagram-LBJQPF4R-C729LI31.js`);return{diagram:e}},[]);return{id:ap,diagram:e}},`loader`)},sp=`radar`,cp={id:sp,detector:l(e=>/^\s*radar-beta/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./diagram-UB23O5K3-C729LI31.js`);return{diagram:e}},[]);return{id:sp,diagram:e}},`loader`)},lp=`block`,up={id:lp,detector:l(e=>/^\s*block(-beta)?/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./blockDiagram-VBNYF7ZC-C729LI31.js`);return{diagram:e}},[]);return{id:lp,diagram:e}},`loader`)},dp=`treeView`,fp={id:dp,detector:l(e=>/^\s*treeView-beta/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./diagram-7IWD3JNH-C729LI31.js`);return{diagram:e}},[]);return{id:dp,diagram:e}},`loader`)},pp=`architecture`,mp={id:pp,detector:l(e=>/^\s*architecture/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./architectureDiagram-T3A2C74G-C729LI31.js`);return{diagram:e}},[]);return{id:pp,diagram:e}},`loader`)},hp=`eventmodeling`,gp={id:hp,detector:l(e=>/^\s*eventmodeling/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./diagram-B4RE2ZJO-C729LI31.js`);return{diagram:e}},[]);return{id:hp,diagram:e}},`loader`)},_p=`ishikawa`,vp={id:_p,detector:l(e=>/^\s*ishikawa(-beta)?\b/i.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./ishikawaDiagram-WSZJBQD7-C729LI31.js`);return{diagram:e}},[]);return{id:_p,diagram:e}},`loader`)},yp=`venn`,bp={id:yp,detector:l(e=>/^\s*venn-beta/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./vennDiagram-T6HMQDX7-C729LI31.js`);return{diagram:e}},[]);return{id:yp,diagram:e}},`loader`)},xp=`treemap`,Sp={id:xp,detector:l(e=>/^\s*treemap/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./diagram-Q27KOJAE-C729LI31.js`);return{diagram:e}},[]);return{id:xp,diagram:e}},`loader`)},Cp=`wardley`,wp={id:Cp,detector:l(e=>/^\s*wardley-beta/i.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./wardleyDiagram-T6FBY63Y-C729LI31.js`);return{diagram:e}},[]);return{id:Cp,diagram:e}},`loader`)},Tp=`cynefin`,Ep={id:Tp,detector:l(e=>/^\s*cynefin-beta(?:[\s:]|$)/.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./cynefinDiagram-MW4NZA55-C729LI31.js`);return{diagram:e}},[]);return{id:Tp,diagram:e}},`loader`)},Dp=`railroad`,Op={id:Dp,detector:l(e=>/^\s*railroad-beta/i.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./railroadDiagram-AXF67PYL-C729LI31.js`);return{diagram:e}},[]);return{id:Dp,diagram:e}},`loader`)},kp=`railroadEbnf`,Ap={id:kp,detector:l(e=>/^\s*railroad-ebnf-beta/i.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./ebnfDiagram-BXEA7PRR-C729LI31.js`);return{diagram:e}},[]);return{id:kp,diagram:e}},`loader`)},jp=`railroadAbnf`,Mp={id:jp,detector:l(e=>/^\s*railroad-abnf-beta/i.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./abnfDiagram-N423BO3Z-C729LI31.js`);return{diagram:e}},[]);return{id:jp,diagram:e}},`loader`)},Np=`railroadPeg`,Pp={id:Np,detector:l(e=>/^\s*railroad-peg-beta/i.test(e),`detector`),loader:l(async()=>{let{diagram:e}=await m(async()=>{let{diagram:e}=await import(`./pegDiagram-VL7TDLO6-C729LI31.js`);return{diagram:e}},[]);return{id:Np,diagram:e}},`loader`)},Fp=!1,Ip=l(()=>{Fp||(Fp=!0,T(`error`,Jf,e=>e.toLowerCase().trim()===`error`),T(`---`,{db:{clear:l(()=>{},`clear`)},styles:{},renderer:{draw:l(()=>{},`draw`)},parser:{parse:l(()=>{throw Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks")},`parse`)},init:l(()=>null,`init`)},e=>e.toLowerCase().trimStart().startsWith(`---`)),we(Xf,ep,mp),we(df,np,zf,Lf,yf,Cf,Tf,Df,Nf,Ff,_f,hf,pf,Qf,xf,Uf,Vf,Gf,kf,ip,op,jf,up,gp,fp,cp,vp,Sp,Op,Ap,Mp,Pp,bp,wp,Ep))},`addDiagrams`),Lp=l(async()=>{P.debug(`Loading registered diagrams`);let e=(await Promise.allSettled(Object.entries(xe).map(async([e,{detector:t,loader:n}])=>{if(n)try{ee(e)}catch{try{let{diagram:e,id:r}=await n();T(r,e,t)}catch(t){throw P.error(`Failed to load external diagram with key ${e}. Removing from detectors.`),delete xe[e],t}}}))).filter(e=>e.status===`rejected`);if(e.length>0){P.error(`Failed to load ${e.length} external diagrams`);for(let t of e)P.error(t);throw Error(`Failed to load ${e.length} external diagrams`)}},`loadRegisteredDiagrams`),Rp=`graphics-document document`;function zp(e,t){e.attr(`role`,Rp),t!==``&&e.attr(`aria-roledescription`,t)}l(zp,`setA11yDiagramInfo`);function Bp(e,t,n,r){if(e.insert!==void 0){if(n){let t=`chart-desc-${r}`;e.attr(`aria-describedby`,t),e.insert(`desc`,`:first-child`).attr(`id`,t).text(n)}if(t){let n=`chart-title-${r}`;e.attr(`aria-labelledby`,n),e.insert(`title`,`:first-child`).attr(`id`,n).text(t)}}}l(Bp,`addSVGa11yTitleDescription`);var Vp=class e{constructor(e,t,n,r,i){this.type=e,this.text=t,this.db=n,this.parser=r,this.renderer=i}static{l(this,`Diagram`)}static async fromText(t,n={}){let r=he(),i=te(t,r);t=ce(t)+`
174
174
  `;try{ee(i)}catch{let e=fe(i);if(!e)throw new x(`Diagram ${i} not found.`);let{id:t,diagram:n}=await e();T(t,n)}let{db:a,parser:o,renderer:s,init:c}=ee(i);return o.parser&&(o.parser.yy=a),a.clear?.(),c?.(r),n.title&&a.setDiagramTitle?.(n.title),await o.parse(t),new e(i,t,a,o,s)}async render(e,t){await this.renderer.draw(this.text,e,t,this)}getParser(){return this.parser}getType(){return this.type}},Hp=[],Up=l(()=>{Hp.forEach(e=>{e()}),Hp=[]},`attachFunctions`),Wp=l(e=>e.replace(/^\s*%%(?!{)[^\n]+\n?/gm,``).trimStart(),`cleanupComments`);function Gp(e){let t=e.match(ve);if(!t)return{text:e,metadata:{}};let n=t[1],r=I(n?t[2].split(`
175
175
  `).map(e=>e.startsWith(n)?e.slice(n.length):e).join(`
176
176
  `):t[2],{schema:xi})??{};r=typeof r==`object`&&!Array.isArray(r)?r:{};let i={};return r.displayMode&&(i.displayMode=r.displayMode.toString()),r.title&&(i.title=r.title.toString()),r.config&&(i.config=r.config),{text:e.slice(t[0].length),metadata:i}}l(Gp,`extractFrontMatter`);var Kp=l(e=>e.replace(/\r\n?/g,`
@@ -192,4 +192,4 @@ Error generating stack: `+e.message+`
192
192
  `)),this.defects=e}},Ah=e=>typeof e==`object`&&!!e&&!Array.isArray(e),jh=e=>Ah(e)&&typeof e.type==`string`?e.type:void 0,Mh=`retries remain`;function Nh(e,t){let n=[];if(!Ah(t)||!Ah(t.states)||typeof t.initial!=`string`)return{defects:[`task "${e}": region must carry string \`initial\` and \`states\``]};let r=t.states,i=t.initial;r[i]===void 0&&n.push(`task "${e}": initial state "${i}" is not in \`states\``);let a=new Set;for(let[e,t]of Object.entries(r))jh(t)===`final`&&a.add(e);let o=new Set,s={};for(let[t,c]of Object.entries(r)){if(jh(c)===`history`)continue;let l={};if(s[t]=l,!Ah(c)){n.push(`task "${e}": state "${t}" is not an object`);continue}let u=c.on??{};if(!Ah(u)){n.push(`task "${e}": state "${t}" carries a non-object \`on\``);continue}let d=new Map;for(let[s,c]of Object.entries(u)){let u=Oh(s);if(u===``){n.push(`task "${e}": state "${t}" listens for "${s}", which names no event once its namespace is stripped`);continue}let f=d.get(u);if(f!==void 0){n.push(`task "${e}": state "${t}" spells the same event twice — "${f}" and "${s}" are both \`${u}\`, and a state routes each event once`);continue}if(d.set(u,s),Array.isArray(c)){let[t,i]=c.map(e=>Ah(e)&&typeof e.target==`string`?e.target:void 0);if(c.length!==2||t===void 0||i===void 0){n.push(`task "${e}": guarded "${s}" must be a two-arm array of \`{target}\` — [retry-while-retries-remain, else-fallthrough]`);continue}for(let a of[t,i])r[a]===void 0&&n.push(`task "${e}": "${s}" targets unknown state "${a}"`);a.has(i)&&o.add(i);let d=c[0];l[u]={target:t,when:Ah(d)&&typeof d.guard==`string`?d.guard:Mh,otherwise:i};continue}if(typeof c!=`string`){n.push(`task "${e}": "${s}" is neither a target nor a guarded array`);continue}if(r[c]===void 0){n.push(`task "${e}": "${s}" targets unknown state "${c}"`);continue}l[u]=jh(r[c])===`history`?{resume:{fallback:i}}:{target:c}}}if(n.length>0)return{defects:n};let c={};for(let[e,t]of Object.entries(r)){if(jh(t)===`history`)continue;let n=s[e]??{},r=a.has(e);c[e]={...e===i?{initial:!0}:{},...Object.keys(n).length>0?{on:n}:{},...r?{end:!o.has(e)||`error`}:{}}}return{node:c,defects:[]}}function Ph(e,t){let n=`phase "${e}": \`onDone\` must be a two-arm array of \`{target}\` — [{target, guard}, {target}]`;if(!Array.isArray(t)||t.length!==2)return{defect:n};let[r,i]=t.map(e=>Ah(e)&&typeof e.target==`string`?e.target:void 0);return r===void 0||i===void 0?{defect:n}:{targets:[r,i]}}function Fh(e,t={}){let n=[],r=Ah(e)?e.machine:void 0;if(!Ah(r)||!Ah(r.states))throw new kh(["document must carry a `machine.states` object"]);let i=Ah(r.context)?r.context:{},a=Ah(e)?e.trigger:void 0;a!==void 0&&typeof a!=`string`&&n.push("document `trigger` must be a string naming what fires this lane");let o=r.states,s={},c={},l=[],u=new Set,d;for(let[e,r]of Object.entries(o)){if(jh(r)!==`parallel`||!Ah(r))continue;let a=r.states;if(!Ah(a)||Object.keys(a).length===0){n.push(`phase "${e}": a parallel phase must carry task regions in \`states\``);continue}let f=[];for(let[r,o]of Object.entries(a)){let a=Nh(r,o);if(n.push(...a.defects),a.node!==void 0){let n={};for(let e of Object.values(a.node))for(let r of Object.keys(e.on??{})){let e=t.from?.[r];n[r]=e===void 0?{scope:`edges`}:{scope:`edges`,from:e}}s[r]={events:n,states:{[e]:a.node}}}let l=i[r],{maxRetries:u,retries:d,...p}=Ah(l)?l:{};c[r]={maxRetries:typeof u==`number`?u:2,extras:p},f.push(r)}l.push({name:e,tasks:f});let p=Ph(e,r.onDone);if(p.defect!==void 0&&n.push(p.defect),p.targets!==void 0){for(let t of p.targets)u.add(t),o[t]===void 0&&n.push(`phase "${e}": \`onDone\` targets unknown machine-level state "${t}"`);d={complete:p.targets[0],tripped:p.targets[1]}}}for(let[e,t]of Object.entries(o))jh(t)===`parallel`&&Ah(t)||(jh(t)===`final`?u.has(e)||n.push(`machine-level final "${e}" is targeted by no phase's \`onDone\` pair`):n.push(`machine-level state "${e}" is neither a \`parallel\` phase nor a \`final\` terminal`));if(l.length===0&&n.push("machine holds no `parallel` phase state"),n.length>0)throw new kh(n);if(d===void 0)throw new kh(["no phase carried a readable `onDone` pair"]);let f=Ah(e)&&typeof e.id==`string`?e.id:void 0,p={...f===void 0?{}:{id:f},...typeof a==`string`?{trigger:a}:{},phases:l,terminals:d,charts:s,context:c};if(t.strictFrom===!0){let e=new Set(zh(p)),n=Object.keys(t.from??{}).filter(t=>!e.has(t));if(n.length>0)throw new kh(n.map(e=>`\`from\` names "${e}", which no state in this document routes — the map is keyed by the BARE event name`))}return p}function Ih(e,t={}){let n;try{n=JSON.parse(e)}catch{throw new kh([`the document is not JSON`])}return Fh(n,t)}function Lh(e){let t=new Map;for(let n of Object.values(e.states))for(let[e,r]of Object.entries(n))t.set(e,r);return t}function Rh(e){for(let[t,n]of Lh(e))if(n.initial===!0)return t;throw Error(`@demlik/tea: imported chart marks no initial state`)}function zh(e){let t=new Set;for(let n of Object.values(e.charts))for(let e of Object.keys(n.events))t.add(e);return[...t]}function Bh(e,t){return e.events[t]?.from}function Vh(e){return e?.end!==void 0&&e.end}function Hh(e,t,n,r){let i=Lh(e).get(t)?.on?.[n];return ih(t,n,i!==void 0&&`resume`in i?i.resume.fallback:r)}var Uh=class extends Error{defects;name=`UnreplayableLogError`;_tag=`UnreplayableLogError`;constructor(e){super(`@demlik/tea: this events log does not replay against this workflow —
193
193
  `+e.map(e=>` • ${e}`).join(`
194
194
  `)),this.defects=e}};function Wh(e){let t=[],n=[];for(let[r,i]of e.split(`
195
- `).entries()){if(i.trim()===``)continue;let e;try{e=JSON.parse(i)}catch{t.push(`line ${r+1} is not JSON`);continue}let a=Gh(e);if(a===void 0){t.push(`line ${r+1} does not carry string \`task\`/\`event\`/\`at\``);continue}n.push(a)}if(t.length>0)throw new Uh(t);return n}function Gh(e){if(typeof e!=`object`||!e)return;let t=e;if(typeof t.task==`string`&&typeof t.event==`string`&&typeof t.at==`string`)return{task:t.task,event:t.event,at:t.at}}var Kh=(e,t)=>{let n=new Set,r=[];for(let i of t)e.charts[i.task]!==void 0||n.has(i.task)||(n.add(i.task),r.push(`log names task "${i.task}", which is not in this lane's machine`));return r},qh=(e,t)=>{let n=e.charts[t];if(n===void 0)throw new Uh([`log names task "${t}", which is not in this lane's machine`]);return n};function Jh(e){let t={};for(let[n,r]of Object.entries(e.charts))t[n]={type:Rh(r),retries:0,maxRetries:e.context[n]?.maxRetries??2};return t}function Yh(e,t,n,r){let i=Lh(e).get(t.type)?.on?.[n];if(i===void 0){if(e.refusals?.[t.type]?.includes(n)===!0)return t;throw new Uh([`${r===void 0?``:`task "${r}": `}state "${t.type}" holds no cell for "${n}"`])}return`resume`in i?{...t,type:t.was??i.resume.fallback}:`when`in i?t.retries<t.maxRetries?{...t,type:i.target,retries:t.retries+1,was:t.type}:{...t,type:i.otherwise,was:t.type}:{...t,type:i.target,was:t.type}}function Xh(e,t){let n=Kh(e,t);if(n.length>0)throw new Uh(n);let r={...Jh(e)};for(let n of t){let t=qh(e,n.task),i=r[n.task];if(i===void 0)throw new Uh([`log names task "${n.task}", which is not in this lane's machine`]);r[n.task]=Yh(t,i,Oh(n.event),n.task)}return r}function Zh(e,t){let n=Kh(e,t);if(n.length>0)throw new Uh(n);let r={...Jh(e)},i=[];for(let[n,a]of t.entries()){let t=qh(e,a.task),o=r[a.task];if(o===void 0)throw new Uh([`log names task "${a.task}", which is not in this lane's machine`]);let s=Oh(a.event),c=Yh(t,o,s,a.task);r[a.task]=c,i.push({index:n,at:a.at,task:a.task,event:a.event,from:o.type,to:c.type,edge:Hh(t,o.type,s,c.type)})}return i}function Qh(e,t){return Object.keys(t).filter(n=>Vh(eg(e,n,t))===`error`)}function $h(e,t){let n=n=>Vh(eg(e,n,t))!==!1,r=Qh(e,t),i=!1;return e.phases.map((e,t)=>{let a=e.tasks.filter(e=>r.includes(e)),o={name:e.name,index:t,tasks:e.tasks,tripped:a};return i?{...o,standing:`waiting`}:e.tasks.every(n)?a.length>0?(i=!0,{...o,standing:`tripped`}):{...o,standing:`complete`}:(i=!0,{...o,standing:`active`})})}function eg(e,t,n){let r=e.charts[t],i=n[t];if(r!==void 0&&i!==void 0)return Lh(r).get(i.type)}var tg=e=>e.map(e=>`\`${e}\``).join(`, `);function ng(e,t,n){return e===`cmd`?`the work \`${t}\` dispatched — ${tg(n)}`:e===`sub`?`the source \`${t}\` is subscribed to — ${tg(n)}`:`${e.world}'s ${tg(n)}`}var rg=e=>typeof e==`string`?e:`world:${e.world}`;function ig(e,t){let n=Lh(e).get(t);if(n?.end!==void 0)return null;let r=Object.keys(n?.on??{});if(r.length===0)return`\`${t}\` accepts no events, and it is not a final`;let i=new Map,a=[];for(let t of r){let n=Bh(e,t);if(n===void 0){a.push(t);continue}let r=rg(n),o=i.get(r);o===void 0?i.set(r,{origin:n,events:[t]}):o.events.push(t)}if(i.size===0)return`\`${t}\` accepts ${tg(r)}`;let o=[...i.values()].map(e=>ng(e.origin,t,e.events));return a.length>0&&o.push(`${tg(a)}, from somewhere the chart does not say`),o.join(` · `)}var ag=e=>vh(e);function og(e,t){let n=Lh(e).get(t.type),r=Vh(n);if(r===`error`)return{kind:`tripped`,state:t.type};if(r===!0)return null;let i=Object.entries(n?.on??{});if(i.length===0)return{kind:`dead-end`,state:t.type};if(t.retries>=t.maxRetries){for(let[e,n]of i)if(`when`in n)return{kind:`budget-spent`,state:t.type,event:e,landsOn:n.otherwise}}let a=i.map(([t])=>({event:t,origin:Bh(e,t)}));if(t.type!==Rh(e)&&a.length>0&&a.every(e=>typeof e.origin==`object`&&e.origin!==null)){let e=[];for(let{origin:t}of a){let n=t.world;e.includes(n)||e.push(n)}return{kind:`awaiting-world`,state:t.type,roles:e,events:a.map(e=>e.event)}}return null}function sg(e,t,n){let r=$h(e,t),i=r.find(e=>e.standing===`active`),a=r.find(e=>e.standing===`tripped`),o=[],s=(r,i)=>{let a=e.charts[i],s=t[i];if(a===void 0||s===void 0)return null;let c=Th(ag(a),{...s},n?.(i)),l=og(a,s);return l!==null&&o.push({task:i,reason:l}),{task:i,phase:r.name,state:s.type,endPolarity:Vh(Lh(a).get(s.type)),...s.was===void 0?{}:{was:s.was},retries:s.retries,maxRetries:s.maxRetries,waitingOn:ig(a,s.type),stuck:l,events:c,refusals:c.flatMap(e=>e.status===`refused`&&e.reason!==void 0?[{from:s.type,event:e.event,reason:e.reason}]:[]),legal:c.filter(e=>e.status===`legal`).map(e=>e.event)}},c=r.map(e=>({name:e.name,index:e.index,standing:e.standing,tripped:e.tripped,tasks:e.tasks.flatMap(t=>s(e,t)??[])}));return{...e.id===void 0?{}:{id:e.id},status:i===void 0?`done`:`active`,terminal:i===void 0?a===void 0?e.terminals.complete:e.terminals.tripped:null,activePhase:i?.name??null,phases:c,tripped:Qh(e,t),stuck:o}}var cg=(e,t,n)=>Eh(e,{current:t,walked:n});function lg(e,t){if(e===void 0)return!1;let n=Lh(e).get(t)?.on??{};return Object.values(n).some(e=>e!==void 0&&`resume`in e)}var ug={answerable:!1,question:`dispatch`,why:`this lane is a workflow document and its event log — the code bodies that would run an edge do not exist here, so no control can be sent. The log is the only thing that moves it.`},dg={answerable:!1,question:`retries`,why:"this region's own state carries no `retries` — the retry budget is a fact of the state a chart chose to keep, and this one keeps none"};function fg(e,t){let n=Zh(e,t);return{kind:`replay`,lane:e,total:t.length,leavesAt:n=>Xh(e,t.slice(0,n)),steps:n.map(({at:e,...t})=>({...t,refused:!1})),clock:n.map(e=>e.at),budget:(e,t)=>{let n=t[e];return n===void 0?dg:{retries:n.retries,maxRetries:n.maxRetries}},send:()=>ug,noDispatch:ug}}function pg(e,t,n){let r=e.total,i=Math.max(0,Math.min(t,r)),a=e.leavesAt(i),o=e.steps.filter(e=>e.index<i),s=sg(e.lane,a,e.optsFor),c=s.phases.reduce((e,t,n)=>t.standing===`waiting`?e:n,-1),l=s.terminal===null?-1:c,u=s.phases.map((t,n)=>{let r=t.tasks.map(t=>{let n=e.lane.charts[t.task],r=Dh(o.filter(e=>e.task===t.task));return{task:t.task,phase:t.phase,state:t.state,endPolarity:t.endPolarity,...t.was===void 0||!lg(n,t.state)?{}:{was:t.was},waitingOn:t.waitingOn,stuck:t.stuck,moved:n===void 0||t.state!==Rh(n),budget:e.budget(t.task,a),controls:t.events.map(n=>hg(e,t.task,n)),diagram:n===void 0?``:cg(n,t.state,r)}});return{name:t.name,index:t.index,standing:t.standing,tripped:t.tripped,tasks:r,expanded:mg(t.standing,r,n===l)}}),d=e=>u.find(t=>t.tasks.some(t=>t.task===e))?.name??``;return{source:e.kind,title:n??e.lane.id??`lane`,status:s.status,terminal:s.terminal,activePhase:s.activePhase,tripped:s.tripped,stuck:s.stuck.map(e=>({task:e.task,phase:d(e.task),reason:e.reason})),phases:u,steps:o,clock:e.clock,cursor:i,total:r,scrubbed:i<r,...e.noDispatch===void 0?{}:{noDispatch:e.noDispatch}}}function mg(e,t,n){if(e===`tripped`)return t.filter(e=>e.endPolarity===`error`).map(e=>e.task);if(e!==`active`&&!n)return[];let r=t.filter(e=>e.moved).map(e=>e.task);if(r.length>0)return r;let i=t[0];return i===void 0?[]:[i.task]}function hg(e,t,n){let r=n.status===`refused`;return{task:t,event:n.event,kind:r?n.reason?.kind??`undeclared`:`legal`,refused:r,...n.why===void 0?{}:{why:n.why},outcome:vg(n),send:r?gg:e.send(t,n)}}var gg={answerable:!1,question:`dispatch`,why:`this event is refused at this state — see the refusal for which mechanism refused it`};function _g(e){switch(e){case`no-guard-bag`:return`cannot say which — this lane came from a workflow document, so the guard bodies that would decide do not exist here`;case`no-implementation`:return`cannot say which — no implementation was supplied for this guard`;case`no-sample`:return`cannot say which — the guard reads the message payload and no sample was given for this event`;default:return`cannot say which — evaluating the guard threw (${e})`}}function vg(e){let t=e.cmds.length>0?` / ${e.cmds.join(`, `)}`:``;return e.guard===void 0?e.resolved===void 0?`${e.targets.join(` | `)}${t}`:`→ ${e.resolved}${t}`:e.guard.branch===`unknown`?`${e.targets.join(` | `)} — ${_g(e.guard.why??``)}`:`→ ${e.guard.target} [${e.guard.branch===`then`?``:`!`}${e.guard.guard}]${t}`}var $=Qm();function yg(e){let t=(0,$m.useMemo)(()=>fg(e.lane,e.log),[e.lane,e.log]);return(0,$.jsx)(wg,{feed:t,title:e.title,className:e.className,send:null})}function bg(e){return`tea-lv${e?` ${e}`:``}`}var xg=()=>(0,$.jsx)(`span`,{className:`tea-lv-sep`,children:` · `}),Sg=`this view was given no way to dispatch`;function Cg(e){return e.terminal===null?`still running`:e.tripped.length>0?`stopped here`:`finished`}function wg({feed:e,title:t,className:n,send:r,onReset:i}){let[a,o]=(0,$m.useState)(null),s=pg(e,a===null?e.total:Math.min(a,e.total),t),c=s.scrubbed?`you are looking at step ${s.cursor} of ${s.total}. A button dispatches into the lane as it is NOW — press “now” to get them back.`:s.noDispatch?.why,l={dispatch:r!==null&&c===void 0?{send:r}:{blocked:c??Sg},foldControls:s.noDispatch!==void 0,ended:s.terminal!==null};return(0,$.jsxs)(`div`,{className:bg(n),"data-source":s.source,children:[(0,$.jsxs)(`header`,{className:`tea-lv-head`,children:[(0,$.jsx)(`span`,{className:`tea-lv-title`,children:s.title}),(0,$.jsx)(xg,{}),(0,$.jsx)(`span`,{className:`tea-lv-src`,"data-source":s.source,children:s.source}),(0,$.jsx)(xg,{}),(0,$.jsxs)(`span`,{className:`tea-lv-now`,"data-lane-status":s.status,children:[s.terminal===null?(0,$.jsx)(`span`,{className:`tea-lv-phase`,children:s.activePhase??`—`}):(0,$.jsx)(`span`,{className:`tea-lv-terminal`,children:s.terminal}),(0,$.jsx)(xg,{}),(0,$.jsx)(`span`,{className:`tea-lv-status`,children:Cg(s)})]}),s.scrubbed?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(xg,{}),(0,$.jsxs)(`span`,{className:`tea-lv-warn`,children:[`time-travelling — step `,s.cursor,` of `,s.total]})]}):null]}),(0,$.jsxs)(`p`,{className:`tea-lv-lede`,children:[s.phases.length===1?(0,$.jsxs)($.Fragment,{children:[`A `,(0,$.jsx)(`b`,{children:`lane`}),` is a run of phases — this one has a single phase.`]}):(0,$.jsxs)($.Fragment,{children:[`A `,(0,$.jsx)(`b`,{children:`lane`}),` is `,s.phases.length,` phases that run one after another.`]}),` `,`Each phase holds tasks that run `,(0,$.jsx)(`i`,{children:`at the same time`}),`, and every task is one state machine — the diagram below it is that machine, with the state it is in right now lit up. A phase finishes when all of its tasks finish;`,` `,s.terminal===null?(0,$.jsxs)($.Fragment,{children:[`right now `,(0,$.jsx)(`b`,{children:s.activePhase}),` is the one running.`]}):(0,$.jsxs)($.Fragment,{children:[`this lane has ended, on `,(0,$.jsx)(`b`,{children:s.terminal}),`.`]})]}),`blocked`in l.dispatch?(0,$.jsx)(`p`,{className:`tea-lv-unavailable`,"data-unavailable":`dispatch`,children:l.dispatch.blocked}):null,(0,$.jsx)(Tg,{view:s}),s.phases.map(e=>(0,$.jsx)(Og,{phase:e,page:l},e.name)),(0,$.jsx)(Ng,{view:s,onScrub:o,onLive:()=>o(null),onReset:i})]})}function Tg({view:e}){return(0,$.jsxs)(`section`,{className:`tea-lv-panel tea-lv-stuck`,children:[(0,$.jsxs)(`h3`,{className:`tea-lv-h`,children:[`1 · is anything blocked?`,(0,$.jsx)(xg,{}),(0,$.jsx)(`span`,{className:`tea-lv-hint`,children:`a task nothing can move until someone acts`})]}),e.stuck.length===0?(0,$.jsx)(`p`,{className:`tea-lv-none`,children:`nothing is stuck — every task can still move`}):(0,$.jsx)(`ul`,{className:`tea-lv-stucklist`,children:e.stuck.map(e=>(0,$.jsxs)(`li`,{"data-stuck":e.reason.kind,"data-task":e.task,children:[(0,$.jsx)(`b`,{children:e.task}),` `,(0,$.jsxs)(`span`,{className:`tea-lv-muted`,children:[`(`,e.phase,`)`]}),` `,`— `,Eg(e.reason)]},e.task))}),e.tripped.length===0?null:(0,$.jsxs)(`p`,{className:`tea-lv-tripped`,children:[`tripped: `,e.tripped.join(`, `)]})]})}function Eg(e){if(e===null)return``;switch(e.kind){case`tripped`:return`landed on the error final \`${e.state}\` — as finished as a shipped task, and lost`;case`dead-end`:return`\`${e.state}\` routes no event and is not a final — nobody can move it`;case`budget-spent`:return`\`${e.state}\` has spent its retry budget — the next \`${e.event}\` is \`${e.landsOn}\`, not a retry`;case`awaiting-world`:return`\`${e.state}\` moves only when ${e.roles.join(` or `)} sends ${e.events.map(e=>`\`${e}\``).join(` or `)} — no cmd or sub can arrive here`}}function Dg(e){let t=e.tasks.length,n=`${t} task${t===1?``:`s`}`;switch(e.standing){case`active`:return t===1?`${n}, running`:`${n}, running together`;case`complete`:return`${n}, all finished`;case`tripped`:return t===1?`${n}, stopped on an error`:`${n} — ${e.tripped.length} stopped on an error`;case`waiting`:return`${n}, not started`}}function Og({phase:e,page:t}){let n=Dg(e);return(0,$.jsxs)(`section`,{className:`tea-lv-panel tea-lv-phase-${e.standing}`,"data-phase":e.name,"data-standing":e.standing,children:[(0,$.jsxs)(`h3`,{className:`tea-lv-h`,children:[e.index===0?`2 · `:``,e.name,` `,(0,$.jsx)(`span`,{className:`tea-lv-standing`,children:e.standing}),(0,$.jsx)(xg,{}),(0,$.jsx)(`span`,{className:`tea-lv-muted`,children:n})]}),(0,$.jsx)(`ul`,{className:`tea-lv-chips`,children:e.tasks.map(e=>(0,$.jsxs)(`li`,{className:`tea-lv-chip`,"data-task":e.task,"data-state":e.state,"data-end":String(e.endPolarity),children:[(0,$.jsx)(`b`,{children:e.task}),` = `,e.state,e.endPolarity===`error`?` (tripped)`:``]},e.task))}),e.tasks.map(n=>(0,$.jsx)(Ag,{task:n,expanded:e.expanded.includes(n.task),alone:e.tasks.length===1,page:t},n.task))]})}function kg(e,t,n){if(e.waitingOn!==null)return e.waitingOn;if(e.endPolarity!==`error`)return`nothing — this task is final`;let r=`nothing — this task landed on the error final \`${e.state}\``;return n?`${r}, which is what stopped the lane`:t?`${r}, and that trips \`${e.phase}\``:`${r}, and \`${e.phase}\` will trip the lane once its siblings finish`}function Ag({task:e,expanded:t,alone:n,page:r}){let[i,a]=(0,$m.useState)(!1),o=t||i,s=kg(e,n,r.ended),c=(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`p`,{className:`tea-lv-waiting`,children:[`waiting on: `,s]}),(0,$.jsx)(jg,{task:e}),r.foldControls?(0,$.jsxs)(`details`,{className:`tea-lv-accepts`,children:[(0,$.jsxs)(`summary`,{children:[`which events this state accepts (`,e.controls.filter(e=>!e.refused).length,` of`,` `,e.controls.length,`)`]}),(0,$.jsx)(`div`,{className:`tea-lv-controls`,children:e.controls.map(e=>(0,$.jsx)(Mg,{control:e,dispatch:r.dispatch},e.event))})]}):(0,$.jsx)(`div`,{className:`tea-lv-controls`,children:e.controls.map(e=>(0,$.jsx)(Mg,{control:e,dispatch:r.dispatch},e.event))}),o?(0,$.jsx)(`pre`,{className:`mermaid tea-lv-mermaid`,children:e.diagram},e.diagram):null]});return t?(0,$.jsxs)(`div`,{className:`tea-lv-task`,"data-task":e.task,"data-expanded":`true`,children:[(0,$.jsxs)(`h4`,{className:`tea-lv-taskh`,children:[(0,$.jsx)(`b`,{children:e.task}),` — `,(0,$.jsx)(`span`,{className:`tea-lv-state`,children:e.state}),e.endPolarity===`error`?(0,$.jsxs)($.Fragment,{children:[` `,(0,$.jsx)(`span`,{className:`tea-lv-badge`,children:`tripped`})]}):null,e.was===void 0?null:(0,$.jsxs)(`span`,{className:`tea-lv-muted`,children:[` · resumes to `,e.was]})]}),c]}):(0,$.jsxs)(`details`,{className:`tea-lv-task tea-lv-collapsed`,"data-task":e.task,onToggle:e=>a(e.currentTarget.open),children:[(0,$.jsxs)(`summary`,{children:[(0,$.jsx)(`b`,{children:e.task}),(0,$.jsx)(xg,{}),(0,$.jsx)(`span`,{className:`tea-lv-muted`,children:e.moved?`details`:`still at ${e.state}`})]}),c]})}function jg({task:e}){return`answerable`in e.budget?(0,$.jsxs)(`p`,{className:`tea-lv-unavailable`,"data-unavailable":e.budget.question,title:e.budget.why,children:[`retries: not available — `,e.budget.why]}):e.budget.retries===0?null:(0,$.jsxs)(`p`,{className:`tea-lv-retries`,"data-retries":e.budget.retries,children:[`retries: `,e.budget.retries,`/`,e.budget.maxRetries,e.budget.retries>=e.budget.maxRetries?` — spent`:``]})}function Mg({control:e,dispatch:t}){let n=`answerable`in e.send,r=n?void 0:e.send,i=n?e.send.why:void 0,a=`blocked`in t?t.blocked:void 0,o=r!==void 0&&a===void 0;return(0,$.jsxs)(`div`,{className:`tea-lv-ev tea-lv-ev-${e.kind}`,"data-event":e.event,"data-task":e.task,"data-status":e.refused?`refused`:`legal`,"data-sendable":String(o),children:[(0,$.jsx)(`button`,{type:`button`,className:`tea-lv-btn`,disabled:!o,title:e.why??i??a??e.outcome,onClick:()=>{r!==void 0&&`send`in t&&t.send(r)},children:e.event}),(0,$.jsx)(`span`,{className:`tea-lv-to`,children:e.refused?e.why:e.outcome})]})}function Ng({view:e,onScrub:t,onLive:n,onReset:r}){let i=`answerable`in e.clock;return(0,$.jsxs)(`section`,{className:`tea-lv-panel tea-lv-travel`,children:[(0,$.jsxs)(`h3`,{className:`tea-lv-h`,children:[`3 · what happened, step by step`,(0,$.jsx)(xg,{}),(0,$.jsx)(`span`,{className:`tea-lv-hint`,children:`drag to rewind — everything above moves with it`})]}),(0,$.jsxs)(`div`,{className:`tea-lv-scrub`,children:[(0,$.jsx)(`input`,{type:`range`,min:0,max:e.total,value:e.cursor,"aria-label":`step`,onChange:e=>t(Number(e.target.value))}),(0,$.jsxs)(`span`,{className:`tea-lv-step`,children:[e.cursor,` / `,e.total]}),(0,$.jsx)(`button`,{type:`button`,onClick:n,disabled:!e.scrubbed,children:`now`}),r===void 0?null:(0,$.jsx)(`button`,{type:`button`,onClick:r,children:`reset`})]}),i?(0,$.jsxs)(`p`,{className:`tea-lv-unavailable`,"data-unavailable":`clock`,title:e.clock.why,children:[`when: not available — `,e.clock.why]}):null,e.steps.length===0?(0,$.jsx)(`p`,{className:`tea-lv-none`,children:`no steps yet — every task is where it booted`}):(0,$.jsxs)(`table`,{className:`tea-lv-steps`,children:[(0,$.jsx)(`thead`,{children:(0,$.jsxs)(`tr`,{children:[(0,$.jsx)(`th`,{children:`#`}),i?null:(0,$.jsx)(`th`,{children:`at`}),(0,$.jsx)(`th`,{children:`task`}),(0,$.jsx)(`th`,{children:`event`}),(0,$.jsx)(`th`,{children:`from → to`})]})}),(0,$.jsx)(`tbody`,{children:e.steps.map(t=>(0,$.jsxs)(`tr`,{"data-step":t.index,"data-refused":t.refused?`true`:void 0,children:[(0,$.jsx)(`td`,{children:t.index+1}),i?null:(0,$.jsx)(`td`,{children:e.clock[t.index]}),(0,$.jsx)(`td`,{children:t.task}),(0,$.jsx)(`td`,{children:t.event}),(0,$.jsx)(`td`,{children:t.refused?(0,$.jsxs)($.Fragment,{children:[t.from,` — refused, nothing moved`]}):(0,$.jsxs)($.Fragment,{children:[t.from,` → `,t.to]})})]},t.index))})]})]})}var Pg=globalThis.__LANE_VIEWER__??{},Fg=Pg.lanes??[],Ig=Pg.source??``,Lg=[`WIP`,`DONE`,`PASS`,`FAIL`,`BLOCKED`,`UNBLOCKED`];function Rg(e,t){let n=t.trim();switch(e){case 0:return`recorded`;case 12:return n||`the machine refused it — nothing was recorded`;case 13:return n||`that task is not in the machine`;case 7:return`there is no lane there`;case 8:return`the append did not land — the event is NOT recorded`;case 4:case 11:return n||`the lane record could not be read`;default:return n||`fabrika exited ${e}`}}async function zg(e){return await(await fetch(`/api/transition`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(e)})).json()}var Bg=[`needs-you`,`tripped`,`quiet`,`moving`,`unstarted`,`done`],Vg=(e,t)=>`${e} ${t}${e===1?``:`s`}`;function Hg(e,t,n,r){let i=n===null?null:Math.max(0,Math.round((r-Date.parse(n))/6e4)),a=t.phases.find(e=>e.name===t.activePhase),o=a===void 0||t.phases.length<2?null:`${a.name} ${a.tasks.filter(e=>e.endPolarity!==!1).length}/${a.tasks.length}`,s=t.stuck.find(e=>e.reason.kind===`awaiting-world`);if(s!==void 0&&s.reason.kind===`awaiting-world`)return{id:e,attention:`needs-you`,headline:`${s.task} is waiting on ${s.reason.roles.join(` or `)}`,progress:o,quietFor:i};if(t.tripped.length>0)return{id:e,attention:`tripped`,headline:`${Vg(t.tripped.length,`task`)} stopped on an error — ${t.tripped.join(`, `)}`,progress:o,quietFor:i};if(t.status===`done`)return{id:e,attention:`done`,headline:`finished on ${t.terminal??`a final`}`,progress:null,quietFor:i};if(n===null)return{id:e,attention:`unstarted`,headline:`emitted, nothing has happened yet`,progress:o,quietFor:null};if(i!==null&&i>=60){let n=t.stuck[0];return{id:e,attention:`quiet`,headline:n===void 0?`no event for ${Vg(i,`minute`)} — is anything still driving it?`:`quiet for ${Vg(i,`minute`)} · ${n.task} cannot move`,progress:o,quietFor:i}}let c=(a?.tasks??[]).filter(e=>e.endPolarity===!1);return{id:e,attention:`moving`,headline:c.length===0?`running`:`${Vg(c.length,`task`)} in flight — ${c.slice(0,3).map(e=>`${e.task} at ${e.state}`).join(`, `)}${c.length>3?`, …`:``}`,progress:o,quietFor:i}}var Ug=(e,t)=>{let n=Bg.indexOf(e.attention)-Bg.indexOf(t.attention);return n===0?(t.quietFor??-1)-(e.quietFor??-1):n},Wg={from:{WIP:{world:`the operator`},BLOCKED:{world:`the operator`},UNBLOCKED:{world:`a human`},DONE:`cmd`,PASS:`cmd`,FAIL:`cmd`}};Hm.initialize({startOnLoad:!1,theme:`dark`});function Gg(){let[e,t]=(0,$m.useState)(Fg),[n,r]=(0,$m.useState)(0),[i,a]=(0,$m.useState)(Ig),o=(0,$m.useCallback)(e=>{t(e),r(e=>e+1)},[]);return(0,$m.useEffect)(()=>{let e=!0;fetch(`/api/lanes`).then(e=>e.ok?e.json():null).then(t=>{!e||t?.lanes===void 0||(o(t.lanes),typeof t.source==`string`&&a(t.source))}).catch(()=>{});let t=new EventSource(`/api/stream`);return t.onmessage=e=>{try{o(JSON.parse(e.data))}catch{}},()=>{e=!1,t.close()}},[o]),{lanes:e,beat:n,source:i}}function Kg(){return(0,$m.useEffect)(()=>{let e=()=>{let e=document.querySelectorAll(`pre.mermaid:not([data-processed])`);e.length>0&&Hm.run({nodes:[...e]})};e();let t=new MutationObserver(e);return t.observe(document.body,{childList:!0,subtree:!0}),()=>t.disconnect()},[]),null}var qg={"needs-you":`needs you`,tripped:`tripped`,quiet:`gone quiet`,moving:`moving`,unstarted:`not started`,done:`done`};function Jg(){let[e,t]=(0,$m.useState)({});return(0,$m.useEffect)(()=>{let e=!0,n=()=>fetch(`/api/drivers`).then(e=>e.json()).then(n=>{e&&t(n.drivers??{})}).catch(()=>{});n();let r=setInterval(n,6e4);return()=>{e=!1,clearInterval(r)}},[]),e}function Yg(e){let t=e.session.split(`:`)[1]?.slice(0,7)??``;return`${e.login} · ${t}`}function Xg(e,t){return(0,$m.useMemo)(()=>{let t=Date.now();return e.map(e=>{let n=Ih(e.workflow,e.origins??Wg),r=Wh(e.events),i=pg(fg(n,r),2**53-1),a=r.at(-1)?.at??null;return{row:Hg(e.id,i,a,t),lane:e}}).sort((e,t)=>Ug(e.row,t.row))},[e,t])}function Zg({lanes:e,beat:t,source:n,onOpen:r}){let i=Xg(e,t),a=Jg(),o=new Map;for(let{row:e}of i)o.set(e.attention,(o.get(e.attention)??0)+1);let s=o.get(`needs-you`)??0;return(0,$.jsxs)(`main`,{className:`fl`,children:[(0,$.jsx)(`h1`,{className:`fl-h1`,children:s===0?`Nothing is waiting on you.`:`${s} lane${s===1?``:`s`} waiting on you.`}),(0,$.jsx)(`div`,{className:`fl-counts`,children:[...o].map(([e,t])=>(0,$.jsxs)(`span`,{className:`fl-chip is-${e}`,children:[(0,$.jsx)(`b`,{children:t}),` `,qg[e]]},e))}),(0,$.jsx)(`ul`,{className:`fl-rows`,children:i.map(({row:e})=>(0,$.jsx)(`li`,{children:(0,$.jsxs)(`button`,{type:`button`,className:`fl-row is-${e.attention}`,onClick:()=>r(e.id),children:[(0,$.jsx)(`span`,{className:`fl-id`,children:e.id}),(0,$.jsx)(`span`,{className:`fl-head`,children:e.headline}),(0,$.jsxs)(`span`,{className:`fl-meta`,children:[a[e.id]==null?null:(0,$.jsx)(`span`,{className:`fl-drv`,title:a[e.id]?.session,children:Yg(a[e.id])}),[e.progress,e.quietFor===null?null:Qg(e.quietFor)].filter(Boolean).join(` · `)]})]})},e.id))}),(0,$.jsxs)(`p`,{className:`fl-foot`,children:[`Read from `,(0,$.jsx)(`code`,{children:n||`this machine`}),` — nothing left it.`]})]})}function Qg(e){if(e<60)return`${e}m quiet`;let t=Math.round(e/60);return t<48?`${t}h quiet`:`${Math.round(t/24)}d quiet`}function $g({laneId:e,tasks:t,single:n}){let[r,i]=(0,$m.useState)(null),[a,o]=(0,$m.useState)(null),s=async(t,r)=>{let a=`${t}.${r}`;i(a),o(null);let s;try{s=await zg({lane:e,event:r,...n?{}:{task:t}})}catch(e){s={ok:!1,exit:-1,stdout:``,stderr:String(e)}}i(null),o({key:a,ok:s.ok,text:Rg(s.exit,s.stderr)})},c=t.filter(e=>e.events.length>0);return c.length===0?null:(0,$.jsxs)(`section`,{className:`act`,children:[(0,$.jsxs)(`h3`,{className:`act-h`,children:[`Send an event`,(0,$.jsx)(`span`,{className:`act-sub`,children:`fabrika records it, or refuses it and says why`})]}),c.map(e=>(0,$.jsxs)(`div`,{className:`act-row`,children:[(0,$.jsxs)(`span`,{className:`act-task`,children:[e.task,` `,(0,$.jsxs)(`span`,{className:`act-at`,children:[`at `,e.state]})]}),(0,$.jsx)(`span`,{className:`act-btns`,children:e.events.map(t=>{let n=`${e.task}.${t}`;return(0,$.jsx)(`button`,{type:`button`,className:`act-btn`,disabled:r!==null,onClick:()=>void s(e.task,t),children:r===n?`…`:t},t)})}),a?.key.startsWith(`${e.task}.`)===!0?(0,$.jsx)(`span`,{className:a.ok?`act-said ok`:`act-said no`,children:a.ok?`${a.key.split(`.`)[1]} recorded`:a.text}):null]},e.task))]})}function e_({lane:e}){let t=Ih(e.workflow,e.origins??Wg),n=pg(fg(t,Wh(e.events)),2**53-1),r=n.phases.find(e=>e.name===n.activePhase);if(r===void 0)return null;let i=r.tasks.map(e=>{let n=t.charts[e.task],r=n===void 0?{}:Lh(n).get(e.state)?.on??{};return{task:e.task,state:e.state,events:Lg.filter(e=>r[e]!==void 0)}});return(0,$.jsx)($g,{laneId:e.id,tasks:i,single:i.length===1})}function t_(){let[e,t]=(0,$m.useState)(null),{lanes:n,beat:r,source:i}=Gg(),[a,o]=(0,$m.useState)(0);if((0,$m.useEffect)(()=>{let e=setInterval(()=>o(e=>e+1),6e4);return()=>clearInterval(e)},[]),n.length===0)return(0,$.jsxs)(`main`,{className:`lv-empty`,children:[(0,$.jsx)(`h1`,{children:`No lanes found`}),(0,$.jsxs)(`p`,{children:[`Looked in `,(0,$.jsx)(`code`,{children:Ig}),`.`]}),(0,$.jsxs)(`p`,{children:[`A lane is a directory holding `,(0,$.jsx)(`code`,{children:`workflow.json`}),` and`,` `,(0,$.jsx)(`code`,{children:`events.jsonl`}),`. Point the viewer at one, or at the parent holding several:`]}),(0,$.jsx)(`pre`,{children:`LANE_DIR=~/phoenix/.fabrika/lanes pnpm lane:view`})]});if(e===null)return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(Zg,{lanes:n,beat:r+a,source:i,onOpen:t}),(0,$.jsx)(Kg,{})]});let s=n.find(t=>t.id===e);return s===void 0?(t(null),null):(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`header`,{className:`lv-bar`,children:[(0,$.jsx)(`button`,{type:`button`,className:`lv-back`,onClick:()=>t(null),children:`← all lanes`}),(0,$.jsx)(`nav`,{children:n.map(n=>(0,$.jsx)(`button`,{type:`button`,className:n.id===e?`on`:``,onClick:()=>t(n.id),children:n.id},n.id))}),(0,$.jsx)(`code`,{className:`lv-src`,children:i})]}),(0,$.jsxs)(`main`,{children:[(0,$.jsx)(e_,{lane:s}),(0,$.jsx)(yg,{lane:Ih(s.workflow,s.origins??Wg),log:Wh(s.events),title:s.id},s.id)]}),(0,$.jsx)(Kg,{})]})}(0,eh.createRoot)(document.getElementById(`root`)).render((0,$.jsx)(t_,{}));export{I as _,Yu as a,vc as c,Au as d,Nu as f,xi as g,ki as h,ad as i,Mu as l,K as m,hd as n,dd as o,ju as p,qu as r,Q as s,gd as t,_c as u,Le as v,Ie as y};
195
+ `).entries()){if(i.trim()===``)continue;let e;try{e=JSON.parse(i)}catch{t.push(`line ${r+1} is not JSON`);continue}let a=Gh(e);if(a===void 0){t.push(`line ${r+1} does not carry string \`task\`/\`event\`/\`at\``);continue}n.push(a)}if(t.length>0)throw new Uh(t);return n}function Gh(e){if(typeof e!=`object`||!e)return;let t=e;if(typeof t.task==`string`&&typeof t.event==`string`&&typeof t.at==`string`)return{task:t.task,event:t.event,at:t.at}}var Kh=(e,t)=>{let n=new Set,r=[];for(let i of t)e.charts[i.task]!==void 0||n.has(i.task)||(n.add(i.task),r.push(`log names task "${i.task}", which is not in this lane's machine`));return r},qh=(e,t)=>{let n=e.charts[t];if(n===void 0)throw new Uh([`log names task "${t}", which is not in this lane's machine`]);return n};function Jh(e){let t={};for(let[n,r]of Object.entries(e.charts))t[n]={type:Rh(r),retries:0,maxRetries:e.context[n]?.maxRetries??2};return t}function Yh(e,t,n,r){let i=Lh(e).get(t.type)?.on?.[n];if(i===void 0){if(e.refusals?.[t.type]?.includes(n)===!0)return t;throw new Uh([`${r===void 0?``:`task "${r}": `}state "${t.type}" holds no cell for "${n}"`])}return`resume`in i?{...t,type:t.was??i.resume.fallback}:`when`in i?t.retries<t.maxRetries?{...t,type:i.target,retries:t.retries+1,was:t.type}:{...t,type:i.otherwise,was:t.type}:{...t,type:i.target,was:t.type}}function Xh(e,t){let n=Kh(e,t);if(n.length>0)throw new Uh(n);let r={...Jh(e)};for(let n of t){let t=qh(e,n.task),i=r[n.task];if(i===void 0)throw new Uh([`log names task "${n.task}", which is not in this lane's machine`]);r[n.task]=Yh(t,i,Oh(n.event),n.task)}return r}function Zh(e,t){let n=Kh(e,t);if(n.length>0)throw new Uh(n);let r={...Jh(e)},i=[];for(let[n,a]of t.entries()){let t=qh(e,a.task),o=r[a.task];if(o===void 0)throw new Uh([`log names task "${a.task}", which is not in this lane's machine`]);let s=Oh(a.event),c=Yh(t,o,s,a.task);r[a.task]=c,i.push({index:n,at:a.at,task:a.task,event:a.event,from:o.type,to:c.type,edge:Hh(t,o.type,s,c.type)})}return i}function Qh(e,t){return Object.keys(t).filter(n=>Vh(eg(e,n,t))===`error`)}function $h(e,t){let n=n=>Vh(eg(e,n,t))!==!1,r=Qh(e,t),i=!1;return e.phases.map((e,t)=>{let a=e.tasks.filter(e=>r.includes(e)),o={name:e.name,index:t,tasks:e.tasks,tripped:a};return i?{...o,standing:`waiting`}:e.tasks.every(n)?a.length>0?(i=!0,{...o,standing:`tripped`}):{...o,standing:`complete`}:(i=!0,{...o,standing:`active`})})}function eg(e,t,n){let r=e.charts[t],i=n[t];if(r!==void 0&&i!==void 0)return Lh(r).get(i.type)}var tg=e=>e.map(e=>`\`${e}\``).join(`, `);function ng(e,t,n){return e===`cmd`?`the work \`${t}\` dispatched — ${tg(n)}`:e===`sub`?`the source \`${t}\` is subscribed to — ${tg(n)}`:`${e.world}'s ${tg(n)}`}var rg=e=>typeof e==`string`?e:`world:${e.world}`;function ig(e,t){let n=Lh(e).get(t);if(n?.end!==void 0)return null;let r=Object.keys(n?.on??{});if(r.length===0)return`\`${t}\` accepts no events, and it is not a final`;let i=new Map,a=[];for(let t of r){let n=Bh(e,t);if(n===void 0){a.push(t);continue}let r=rg(n),o=i.get(r);o===void 0?i.set(r,{origin:n,events:[t]}):o.events.push(t)}if(i.size===0)return`\`${t}\` accepts ${tg(r)}`;let o=[...i.values()].map(e=>ng(e.origin,t,e.events));return a.length>0&&o.push(`${tg(a)}, from somewhere the chart does not say`),o.join(` · `)}var ag=e=>vh(e);function og(e,t){let n=Lh(e).get(t.type),r=Vh(n);if(r===`error`)return{kind:`tripped`,state:t.type};if(r===!0)return null;let i=Object.entries(n?.on??{});if(i.length===0)return{kind:`dead-end`,state:t.type};if(t.retries>=t.maxRetries){for(let[e,n]of i)if(`when`in n)return{kind:`budget-spent`,state:t.type,event:e,landsOn:n.otherwise}}let a=i.map(([t])=>({event:t,origin:Bh(e,t)}));if(t.type!==Rh(e)&&a.length>0&&a.every(e=>typeof e.origin==`object`&&e.origin!==null)){let e=[];for(let{origin:t}of a){let n=t.world;e.includes(n)||e.push(n)}return{kind:`awaiting-world`,state:t.type,roles:e,events:a.map(e=>e.event)}}return null}function sg(e,t,n){let r=$h(e,t),i=r.find(e=>e.standing===`active`),a=r.find(e=>e.standing===`tripped`),o=[],s=(r,i)=>{let a=e.charts[i],s=t[i];if(a===void 0||s===void 0)return null;let c=Th(ag(a),{...s},n?.(i)),l=og(a,s);return l!==null&&o.push({task:i,reason:l}),{task:i,phase:r.name,state:s.type,endPolarity:Vh(Lh(a).get(s.type)),...s.was===void 0?{}:{was:s.was},retries:s.retries,maxRetries:s.maxRetries,waitingOn:ig(a,s.type),stuck:l,events:c,refusals:c.flatMap(e=>e.status===`refused`&&e.reason!==void 0?[{from:s.type,event:e.event,reason:e.reason}]:[]),legal:c.filter(e=>e.status===`legal`).map(e=>e.event)}},c=r.map(e=>({name:e.name,index:e.index,standing:e.standing,tripped:e.tripped,tasks:e.tasks.flatMap(t=>s(e,t)??[])}));return{...e.id===void 0?{}:{id:e.id},status:i===void 0?`done`:`active`,terminal:i===void 0?a===void 0?e.terminals.complete:e.terminals.tripped:null,activePhase:i?.name??null,phases:c,tripped:Qh(e,t),stuck:o}}var cg=(e,t,n)=>Eh(e,{current:t,walked:n});function lg(e,t){if(e===void 0)return!1;let n=Lh(e).get(t)?.on??{};return Object.values(n).some(e=>e!==void 0&&`resume`in e)}var ug={answerable:!1,question:`dispatch`,why:`this lane is a workflow document and its event log — the code bodies that would run an edge do not exist here, so no control can be sent. The log is the only thing that moves it.`},dg={answerable:!1,question:`retries`,why:"this region's own state carries no `retries` — the retry budget is a fact of the state a chart chose to keep, and this one keeps none"};function fg(e,t){let n=Zh(e,t);return{kind:`replay`,lane:e,total:t.length,leavesAt:n=>Xh(e,t.slice(0,n)),steps:n.map(({at:e,...t})=>({...t,refused:!1})),clock:n.map(e=>e.at),budget:(e,t)=>{let n=t[e];return n===void 0?dg:{retries:n.retries,maxRetries:n.maxRetries}},send:()=>ug,noDispatch:ug}}function pg(e,t,n){let r=e.total,i=Math.max(0,Math.min(t,r)),a=e.leavesAt(i),o=e.steps.filter(e=>e.index<i),s=sg(e.lane,a,e.optsFor),c=s.phases.reduce((e,t,n)=>t.standing===`waiting`?e:n,-1),l=s.terminal===null?-1:c,u=s.phases.map((t,n)=>{let r=t.tasks.map(t=>{let n=e.lane.charts[t.task],r=Dh(o.filter(e=>e.task===t.task));return{task:t.task,phase:t.phase,state:t.state,endPolarity:t.endPolarity,...t.was===void 0||!lg(n,t.state)?{}:{was:t.was},waitingOn:t.waitingOn,stuck:t.stuck,moved:n===void 0||t.state!==Rh(n),budget:e.budget(t.task,a),controls:t.events.map(n=>hg(e,t.task,n)),diagram:n===void 0?``:cg(n,t.state,r)}});return{name:t.name,index:t.index,standing:t.standing,tripped:t.tripped,tasks:r,expanded:mg(t.standing,r,n===l)}}),d=e=>u.find(t=>t.tasks.some(t=>t.task===e))?.name??``;return{source:e.kind,title:n??e.lane.id??`lane`,status:s.status,terminal:s.terminal,activePhase:s.activePhase,tripped:s.tripped,stuck:s.stuck.map(e=>({task:e.task,phase:d(e.task),reason:e.reason})),phases:u,steps:o,clock:e.clock,cursor:i,total:r,scrubbed:i<r,...e.noDispatch===void 0?{}:{noDispatch:e.noDispatch}}}function mg(e,t,n){if(e===`tripped`)return t.filter(e=>e.endPolarity===`error`).map(e=>e.task);if(e!==`active`&&!n)return[];let r=t.filter(e=>e.moved).map(e=>e.task);if(r.length>0)return r;let i=t[0];return i===void 0?[]:[i.task]}function hg(e,t,n){let r=n.status===`refused`;return{task:t,event:n.event,kind:r?n.reason?.kind??`undeclared`:`legal`,refused:r,...n.why===void 0?{}:{why:n.why},outcome:vg(n),send:r?gg:e.send(t,n)}}var gg={answerable:!1,question:`dispatch`,why:`this event is refused at this state — see the refusal for which mechanism refused it`};function _g(e){switch(e){case`no-guard-bag`:return`cannot say which — this lane came from a workflow document, so the guard bodies that would decide do not exist here`;case`no-implementation`:return`cannot say which — no implementation was supplied for this guard`;case`no-sample`:return`cannot say which — the guard reads the message payload and no sample was given for this event`;default:return`cannot say which — evaluating the guard threw (${e})`}}function vg(e){let t=e.cmds.length>0?` / ${e.cmds.join(`, `)}`:``;return e.guard===void 0?e.resolved===void 0?`${e.targets.join(` | `)}${t}`:`→ ${e.resolved}${t}`:e.guard.branch===`unknown`?`${e.targets.join(` | `)} — ${_g(e.guard.why??``)}`:`→ ${e.guard.target} [${e.guard.branch===`then`?``:`!`}${e.guard.guard}]${t}`}var $=Qm();function yg(e){let t=(0,$m.useMemo)(()=>fg(e.lane,e.log),[e.lane,e.log]);return(0,$.jsx)(wg,{feed:t,title:e.title,className:e.className,send:null})}function bg(e){return`tea-lv${e?` ${e}`:``}`}var xg=()=>(0,$.jsx)(`span`,{className:`tea-lv-sep`,children:` · `}),Sg=`this view was given no way to dispatch`;function Cg(e){return e.terminal===null?`still running`:e.tripped.length>0?`stopped here`:`finished`}function wg({feed:e,title:t,className:n,send:r,onReset:i}){let[a,o]=(0,$m.useState)(null),s=pg(e,a===null?e.total:Math.min(a,e.total),t),c=s.scrubbed?`you are looking at step ${s.cursor} of ${s.total}. A button dispatches into the lane as it is NOW — press “now” to get them back.`:s.noDispatch?.why,l={dispatch:r!==null&&c===void 0?{send:r}:{blocked:c??Sg},foldControls:s.noDispatch!==void 0,ended:s.terminal!==null};return(0,$.jsxs)(`div`,{className:bg(n),"data-source":s.source,children:[(0,$.jsxs)(`header`,{className:`tea-lv-head`,children:[(0,$.jsx)(`span`,{className:`tea-lv-title`,children:s.title}),(0,$.jsx)(xg,{}),(0,$.jsx)(`span`,{className:`tea-lv-src`,"data-source":s.source,children:s.source}),(0,$.jsx)(xg,{}),(0,$.jsxs)(`span`,{className:`tea-lv-now`,"data-lane-status":s.status,children:[s.terminal===null?(0,$.jsx)(`span`,{className:`tea-lv-phase`,children:s.activePhase??`—`}):(0,$.jsx)(`span`,{className:`tea-lv-terminal`,children:s.terminal}),(0,$.jsx)(xg,{}),(0,$.jsx)(`span`,{className:`tea-lv-status`,children:Cg(s)})]}),s.scrubbed?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(xg,{}),(0,$.jsxs)(`span`,{className:`tea-lv-warn`,children:[`time-travelling — step `,s.cursor,` of `,s.total]})]}):null]}),(0,$.jsxs)(`p`,{className:`tea-lv-lede`,children:[s.phases.length===1?(0,$.jsxs)($.Fragment,{children:[`A `,(0,$.jsx)(`b`,{children:`lane`}),` is a run of phases — this one has a single phase.`]}):(0,$.jsxs)($.Fragment,{children:[`A `,(0,$.jsx)(`b`,{children:`lane`}),` is `,s.phases.length,` phases that run one after another.`]}),` `,`Each phase holds tasks that run `,(0,$.jsx)(`i`,{children:`at the same time`}),`, and every task is one state machine — the diagram below it is that machine, with the state it is in right now lit up. A phase finishes when all of its tasks finish;`,` `,s.terminal===null?(0,$.jsxs)($.Fragment,{children:[`right now `,(0,$.jsx)(`b`,{children:s.activePhase}),` is the one running.`]}):(0,$.jsxs)($.Fragment,{children:[`this lane has ended, on `,(0,$.jsx)(`b`,{children:s.terminal}),`.`]})]}),`blocked`in l.dispatch?(0,$.jsx)(`p`,{className:`tea-lv-unavailable`,"data-unavailable":`dispatch`,children:l.dispatch.blocked}):null,(0,$.jsx)(Tg,{view:s}),s.phases.map(e=>(0,$.jsx)(Og,{phase:e,page:l},e.name)),(0,$.jsx)(Ng,{view:s,onScrub:o,onLive:()=>o(null),onReset:i})]})}function Tg({view:e}){return(0,$.jsxs)(`section`,{className:`tea-lv-panel tea-lv-stuck`,children:[(0,$.jsxs)(`h3`,{className:`tea-lv-h`,children:[`1 · is anything blocked?`,(0,$.jsx)(xg,{}),(0,$.jsx)(`span`,{className:`tea-lv-hint`,children:`a task nothing can move until someone acts`})]}),e.stuck.length===0?(0,$.jsx)(`p`,{className:`tea-lv-none`,children:`nothing is stuck — every task can still move`}):(0,$.jsx)(`ul`,{className:`tea-lv-stucklist`,children:e.stuck.map(e=>(0,$.jsxs)(`li`,{"data-stuck":e.reason.kind,"data-task":e.task,children:[(0,$.jsx)(`b`,{children:e.task}),` `,(0,$.jsxs)(`span`,{className:`tea-lv-muted`,children:[`(`,e.phase,`)`]}),` `,`— `,Eg(e.reason)]},e.task))}),e.tripped.length===0?null:(0,$.jsxs)(`p`,{className:`tea-lv-tripped`,children:[`tripped: `,e.tripped.join(`, `)]})]})}function Eg(e){if(e===null)return``;switch(e.kind){case`tripped`:return`landed on the error final \`${e.state}\` — as finished as a shipped task, and lost`;case`dead-end`:return`\`${e.state}\` routes no event and is not a final — nobody can move it`;case`budget-spent`:return`\`${e.state}\` has spent its retry budget — the next \`${e.event}\` is \`${e.landsOn}\`, not a retry`;case`awaiting-world`:return`\`${e.state}\` moves only when ${e.roles.join(` or `)} sends ${e.events.map(e=>`\`${e}\``).join(` or `)} — no cmd or sub can arrive here`}}function Dg(e){let t=e.tasks.length,n=`${t} task${t===1?``:`s`}`;switch(e.standing){case`active`:return t===1?`${n}, running`:`${n}, running together`;case`complete`:return`${n}, all finished`;case`tripped`:return t===1?`${n}, stopped on an error`:`${n} — ${e.tripped.length} stopped on an error`;case`waiting`:return`${n}, not started`}}function Og({phase:e,page:t}){let n=Dg(e);return(0,$.jsxs)(`section`,{className:`tea-lv-panel tea-lv-phase-${e.standing}`,"data-phase":e.name,"data-standing":e.standing,children:[(0,$.jsxs)(`h3`,{className:`tea-lv-h`,children:[e.index===0?`2 · `:``,e.name,` `,(0,$.jsx)(`span`,{className:`tea-lv-standing`,children:e.standing}),(0,$.jsx)(xg,{}),(0,$.jsx)(`span`,{className:`tea-lv-muted`,children:n})]}),(0,$.jsx)(`ul`,{className:`tea-lv-chips`,children:e.tasks.map(e=>(0,$.jsxs)(`li`,{className:`tea-lv-chip`,"data-task":e.task,"data-state":e.state,"data-end":String(e.endPolarity),children:[(0,$.jsx)(`b`,{children:e.task}),` = `,e.state,e.endPolarity===`error`?` (tripped)`:``]},e.task))}),e.tasks.map(n=>(0,$.jsx)(Ag,{task:n,expanded:e.expanded.includes(n.task),alone:e.tasks.length===1,page:t},n.task))]})}function kg(e,t,n){if(e.waitingOn!==null)return e.waitingOn;if(e.endPolarity!==`error`)return`nothing — this task is final`;let r=`nothing — this task landed on the error final \`${e.state}\``;return n?`${r}, which is what stopped the lane`:t?`${r}, and that trips \`${e.phase}\``:`${r}, and \`${e.phase}\` will trip the lane once its siblings finish`}function Ag({task:e,expanded:t,alone:n,page:r}){let[i,a]=(0,$m.useState)(!1),o=t||i,s=kg(e,n,r.ended),c=(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`p`,{className:`tea-lv-waiting`,children:[`waiting on: `,s]}),(0,$.jsx)(jg,{task:e}),r.foldControls?(0,$.jsxs)(`details`,{className:`tea-lv-accepts`,children:[(0,$.jsxs)(`summary`,{children:[`which events this state accepts (`,e.controls.filter(e=>!e.refused).length,` of`,` `,e.controls.length,`)`]}),(0,$.jsx)(`div`,{className:`tea-lv-controls`,children:e.controls.map(e=>(0,$.jsx)(Mg,{control:e,dispatch:r.dispatch},e.event))})]}):(0,$.jsx)(`div`,{className:`tea-lv-controls`,children:e.controls.map(e=>(0,$.jsx)(Mg,{control:e,dispatch:r.dispatch},e.event))}),o?(0,$.jsx)(`pre`,{className:`mermaid tea-lv-mermaid`,children:e.diagram},e.diagram):null]});return t?(0,$.jsxs)(`div`,{className:`tea-lv-task`,"data-task":e.task,"data-expanded":`true`,children:[(0,$.jsxs)(`h4`,{className:`tea-lv-taskh`,children:[(0,$.jsx)(`b`,{children:e.task}),` — `,(0,$.jsx)(`span`,{className:`tea-lv-state`,children:e.state}),e.endPolarity===`error`?(0,$.jsxs)($.Fragment,{children:[` `,(0,$.jsx)(`span`,{className:`tea-lv-badge`,children:`tripped`})]}):null,e.was===void 0?null:(0,$.jsxs)(`span`,{className:`tea-lv-muted`,children:[` · resumes to `,e.was]})]}),c]}):(0,$.jsxs)(`details`,{className:`tea-lv-task tea-lv-collapsed`,"data-task":e.task,onToggle:e=>a(e.currentTarget.open),children:[(0,$.jsxs)(`summary`,{children:[(0,$.jsx)(`b`,{children:e.task}),(0,$.jsx)(xg,{}),(0,$.jsx)(`span`,{className:`tea-lv-muted`,children:e.moved?`details`:`still at ${e.state}`})]}),c]})}function jg({task:e}){return`answerable`in e.budget?(0,$.jsxs)(`p`,{className:`tea-lv-unavailable`,"data-unavailable":e.budget.question,title:e.budget.why,children:[`retries: not available — `,e.budget.why]}):e.budget.retries===0?null:(0,$.jsxs)(`p`,{className:`tea-lv-retries`,"data-retries":e.budget.retries,children:[`retries: `,e.budget.retries,`/`,e.budget.maxRetries,e.budget.retries>=e.budget.maxRetries?` — spent`:``]})}function Mg({control:e,dispatch:t}){let n=`answerable`in e.send,r=n?void 0:e.send,i=n?e.send.why:void 0,a=`blocked`in t?t.blocked:void 0,o=r!==void 0&&a===void 0;return(0,$.jsxs)(`div`,{className:`tea-lv-ev tea-lv-ev-${e.kind}`,"data-event":e.event,"data-task":e.task,"data-status":e.refused?`refused`:`legal`,"data-sendable":String(o),children:[(0,$.jsx)(`button`,{type:`button`,className:`tea-lv-btn`,disabled:!o,title:e.why??i??a??e.outcome,onClick:()=>{r!==void 0&&`send`in t&&t.send(r)},children:e.event}),(0,$.jsx)(`span`,{className:`tea-lv-to`,children:e.refused?e.why:e.outcome})]})}function Ng({view:e,onScrub:t,onLive:n,onReset:r}){let i=`answerable`in e.clock;return(0,$.jsxs)(`section`,{className:`tea-lv-panel tea-lv-travel`,children:[(0,$.jsxs)(`h3`,{className:`tea-lv-h`,children:[`3 · what happened, step by step`,(0,$.jsx)(xg,{}),(0,$.jsx)(`span`,{className:`tea-lv-hint`,children:`drag to rewind — everything above moves with it`})]}),(0,$.jsxs)(`div`,{className:`tea-lv-scrub`,children:[(0,$.jsx)(`input`,{type:`range`,min:0,max:e.total,value:e.cursor,"aria-label":`step`,onChange:e=>t(Number(e.target.value))}),(0,$.jsxs)(`span`,{className:`tea-lv-step`,children:[e.cursor,` / `,e.total]}),(0,$.jsx)(`button`,{type:`button`,onClick:n,disabled:!e.scrubbed,children:`now`}),r===void 0?null:(0,$.jsx)(`button`,{type:`button`,onClick:r,children:`reset`})]}),i?(0,$.jsxs)(`p`,{className:`tea-lv-unavailable`,"data-unavailable":`clock`,title:e.clock.why,children:[`when: not available — `,e.clock.why]}):null,e.steps.length===0?(0,$.jsx)(`p`,{className:`tea-lv-none`,children:`no steps yet — every task is where it booted`}):(0,$.jsxs)(`table`,{className:`tea-lv-steps`,children:[(0,$.jsx)(`thead`,{children:(0,$.jsxs)(`tr`,{children:[(0,$.jsx)(`th`,{children:`#`}),i?null:(0,$.jsx)(`th`,{children:`at`}),(0,$.jsx)(`th`,{children:`task`}),(0,$.jsx)(`th`,{children:`event`}),(0,$.jsx)(`th`,{children:`from → to`})]})}),(0,$.jsx)(`tbody`,{children:e.steps.map(t=>(0,$.jsxs)(`tr`,{"data-step":t.index,"data-refused":t.refused?`true`:void 0,children:[(0,$.jsx)(`td`,{children:t.index+1}),i?null:(0,$.jsx)(`td`,{children:e.clock[t.index]}),(0,$.jsx)(`td`,{children:t.task}),(0,$.jsx)(`td`,{children:t.event}),(0,$.jsx)(`td`,{children:t.refused?(0,$.jsxs)($.Fragment,{children:[t.from,` — refused, nothing moved`]}):(0,$.jsxs)($.Fragment,{children:[t.from,` → `,t.to]})})]},t.index))})]})]})}var Pg=globalThis.__LANE_VIEWER__??{},Fg=Pg.lanes??[],Ig=Pg.source??``,Lg=[`WIP`,`DONE`,`PASS`,`FAIL`,`BLOCKED`,`UNBLOCKED`];function Rg(e,t){let n=t.trim();switch(e){case 0:return`recorded`;case 12:return n||`the machine refused it — nothing was recorded`;case 13:return n||`that task is not in the machine`;case 7:return`there is no lane there`;case 8:return`the append did not land — the event is NOT recorded`;case 4:case 11:return n||`the lane record could not be read`;default:return n||`fabrika exited ${e}`}}async function zg(e){return await(await fetch(`/api/transition`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(e)})).json()}var Bg=[`needs-you`,`tripped`,`unreadable`,`quiet`,`moving`,`unstarted`,`done`];function Vg(e,t){return{id:e,attention:`unreadable`,headline:t,progress:null,quietFor:null}}var Hg=(e,t)=>`${e} ${t}${e===1?``:`s`}`;function Ug(e,t,n,r){let i=n===null?null:Math.max(0,Math.round((r-Date.parse(n))/6e4)),a=t.phases.find(e=>e.name===t.activePhase),o=a===void 0||t.phases.length<2?null:`${a.name} ${a.tasks.filter(e=>e.endPolarity!==!1).length}/${a.tasks.length}`,s=t.stuck.find(e=>e.reason.kind===`awaiting-world`);if(s!==void 0&&s.reason.kind===`awaiting-world`)return{id:e,attention:`needs-you`,headline:`${s.task} is waiting on ${s.reason.roles.join(` or `)}`,progress:o,quietFor:i};if(t.tripped.length>0)return{id:e,attention:`tripped`,headline:`${Hg(t.tripped.length,`task`)} stopped on an error — ${t.tripped.join(`, `)}`,progress:o,quietFor:i};if(t.status===`done`)return{id:e,attention:`done`,headline:`finished on ${t.terminal??`a final`}`,progress:null,quietFor:i};if(n===null)return{id:e,attention:`unstarted`,headline:`emitted, nothing has happened yet`,progress:o,quietFor:null};if(i!==null&&i>=60){let n=t.stuck[0];return{id:e,attention:`quiet`,headline:n===void 0?`no event for ${Hg(i,`minute`)} — is anything still driving it?`:`quiet for ${Hg(i,`minute`)} · ${n.task} cannot move`,progress:o,quietFor:i}}let c=(a?.tasks??[]).filter(e=>e.endPolarity===!1);return{id:e,attention:`moving`,headline:c.length===0?`running`:`${Hg(c.length,`task`)} in flight — ${c.slice(0,3).map(e=>`${e.task} at ${e.state}`).join(`, `)}${c.length>3?`, …`:``}`,progress:o,quietFor:i}}var Wg=(e,t)=>{let n=Bg.indexOf(e.attention)-Bg.indexOf(t.attention);return n===0?(t.quietFor??-1)-(e.quietFor??-1):n},Gg={from:{WIP:{world:`the operator`},BLOCKED:{world:`the operator`},UNBLOCKED:{world:`a human`},DONE:`cmd`,PASS:`cmd`,FAIL:`cmd`}};Hm.initialize({startOnLoad:!1,theme:`dark`});function Kg(){let[e,t]=(0,$m.useState)(Fg),[n,r]=(0,$m.useState)(0),[i,a]=(0,$m.useState)(Ig),o=(0,$m.useCallback)(e=>{t(e),r(e=>e+1)},[]);return(0,$m.useEffect)(()=>{let e=!0;fetch(`/api/lanes`).then(e=>e.ok?e.json():null).then(t=>{!e||t?.lanes===void 0||(o(t.lanes),typeof t.source==`string`&&a(t.source))}).catch(()=>{});let t=new EventSource(`/api/stream`);return t.onmessage=e=>{try{o(JSON.parse(e.data))}catch{}},()=>{e=!1,t.close()}},[o]),{lanes:e,beat:n,source:i}}var qg=new Map,Jg=e=>e.closest(`[data-task]`)?.dataset.task??``;function Yg(){return(0,$m.useEffect)(()=>{let e=()=>{let e=document.querySelectorAll(`pre.mermaid:not([data-processed])`);if(e.length!==0){for(let t of e){let e=qg.get(Jg(t));e!==void 0&&(t.style.minHeight=`${e}px`)}Hm.run({nodes:[...e]}).then(()=>{for(let t of e){let e=t.querySelector(`svg`)?.getBoundingClientRect().height??0;e>0&&qg.set(Jg(t),e),t.style.minHeight=``}})}};e();let t=new MutationObserver(e);return t.observe(document.body,{childList:!0,subtree:!0}),()=>t.disconnect()},[]),null}var Xg={"needs-you":`needs you`,tripped:`tripped`,quiet:`gone quiet`,moving:`moving`,unstarted:`not started`,unreadable:`unreadable`,done:`done`};function Zg(){let[e,t]=(0,$m.useState)({});return(0,$m.useEffect)(()=>{let e=!0,n=()=>fetch(`/api/drivers`).then(e=>e.json()).then(n=>{e&&t(n.drivers??{})}).catch(()=>{});n();let r=setInterval(n,6e4);return()=>{e=!1,clearInterval(r)}},[]),e}function Qg(e){let t=e.session.split(`:`)[1]?.slice(0,7)??``;return`${e.login} · ${t}`}function $g(e,t){try{let n=Ih(e.workflow,e.origins??Gg);return{ok:!0,chart:n,view:pg(fg(n,Wh(e.events)),t)}}catch(e){return{ok:!1,why:(e instanceof Error?e.message:String(e)).replace(/^@demlik\/tea:\s*/,``)}}}function e_(e,t){return(0,$m.useMemo)(()=>{let t=Date.now();return e.map(e=>{let n=$g(e,2**53-1);if(!n.ok)return{row:Vg(e.id,n.why),lane:e,read:n};let r=Wh(e.events).at(-1)?.at??null;return{row:Ug(e.id,n.view,r,t),lane:e,read:n}}).sort((e,t)=>Wg(e.row,t.row))},[e,t])}function t_({fleet:e,drivers:t,open:n,onOpen:r}){return(0,$.jsx)(`nav`,{className:`rail`,"aria-label":`lanes`,children:(0,$.jsx)(`ul`,{className:`rail-rows`,children:e.map(({row:e})=>(0,$.jsx)(`li`,{children:(0,$.jsxs)(`button`,{type:`button`,className:`rail-row is-${e.attention}${e.id===n?` on`:``}`,"aria-current":e.id===n?`true`:void 0,onClick:()=>r(e.id),children:[(0,$.jsxs)(`span`,{className:`rail-top`,children:[(0,$.jsx)(`span`,{className:`rail-id`,children:e.id}),t[e.id]==null?null:(0,$.jsx)(`span`,{className:`rail-drv`,title:t[e.id]?.session,children:Qg(t[e.id])})]}),(0,$.jsx)(`span`,{className:`rail-head`,children:e.headline}),(0,$.jsx)(`span`,{className:`rail-meta`,children:[e.progress,e.quietFor===null?null:n_(e.quietFor)].filter(Boolean).join(` · `)})]})},e.id))})})}function n_(e){if(e<60)return`${e}m quiet`;let t=Math.round(e/60);return t<48?`${t}h quiet`:`${Math.round(t/24)}d quiet`}function r_({laneId:e,tasks:t,single:n}){let[r,i]=(0,$m.useState)(null),[a,o]=(0,$m.useState)(null),s=async(t,r)=>{let a=`${t}.${r}`;i(a),o(null);let s;try{s=await zg({lane:e,event:r,...n?{}:{task:t}})}catch(e){s={ok:!1,exit:-1,stdout:``,stderr:String(e)}}i(null),o({key:a,ok:s.ok,text:Rg(s.exit,s.stderr)})},c=t.filter(e=>e.events.length>0);return c.length===0?null:(0,$.jsxs)(`section`,{className:`act`,children:[(0,$.jsxs)(`h3`,{className:`act-h`,children:[`Send an event`,(0,$.jsx)(`span`,{className:`act-sub`,children:`fabrika records it, or refuses it and says why`})]}),c.map(e=>(0,$.jsxs)(`div`,{className:`act-row`,children:[(0,$.jsxs)(`span`,{className:`act-task`,children:[e.task,` `,(0,$.jsxs)(`span`,{className:`act-at`,children:[`at `,e.state]})]}),(0,$.jsx)(`span`,{className:`act-btns`,children:e.events.map(t=>{let n=`${e.task}.${t}`;return(0,$.jsx)(`button`,{type:`button`,className:`act-btn`,disabled:r!==null,onClick:()=>void s(e.task,t),children:r===n?`…`:t},t)})}),a?.key.startsWith(`${e.task}.`)===!0?(0,$.jsx)(`span`,{className:a.ok?`act-said ok`:`act-said no`,children:a.ok?`${a.key.split(`.`)[1]} recorded`:a.text}):null]},e.task))]})}function i_({lane:e,chart:t,view:n}){let r=n.phases.find(e=>e.name===n.activePhase);if(r===void 0)return null;let i=r.tasks.map(e=>{let n=t.charts[e.task],r=n===void 0?{}:Lh(n).get(e.state)?.on??{};return{task:e.task,state:e.state,events:Lg.filter(e=>r[e]!==void 0)}});return(0,$.jsx)(r_,{laneId:e.id,tasks:i,single:i.length===1})}function a_({id:e,why:t}){return(0,$.jsxs)(`section`,{className:`broke`,children:[(0,$.jsx)(`h2`,{className:`broke-h`,children:`This lane could not be read`}),(0,$.jsx)(`p`,{className:`broke-why`,children:t}),(0,$.jsxs)(`p`,{className:`broke-p`,children:[`Every other lane on this screen is unaffected — only this one is skipped. Its `,(0,$.jsx)(`code`,{children:`workflow.json`}),` is either not valid JSON or not a shape this viewer understands.`]}),(0,$.jsx)(`pre`,{className:`broke-cmd`,children:`cat ${Ig}/${e}/workflow.json | jq .`})]})}var o_=class extends $m.Component{state={why:null};static getDerivedStateFromError(e){return{why:e instanceof Error?e.message:String(e)}}render(){return this.state.why===null?this.props.children:(0,$.jsx)(a_,{id:this.props.id,why:this.state.why})}};function s_({needs:e,tripped:t,broken:n}){return e>0?(0,$.jsxs)(`b`,{className:`hd-say is-needs-you`,children:[e,` lane`,e===1?``:`s`,` waiting on you`]}):t>0?(0,$.jsxs)(`b`,{className:`hd-say is-tripped`,children:[t,` lane`,t===1?``:`s`,` tripped`]}):n>0?(0,$.jsxs)(`b`,{className:`hd-say is-unreadable`,children:[n,` lane`,n===1?``:`s`,` could not be read`]}):(0,$.jsx)(`b`,{className:`hd-say`,children:`Nothing is waiting on you`})}function c_(){let[e,t]=(0,$m.useState)(null),{lanes:n,beat:r,source:i}=Kg(),[a,o]=(0,$m.useState)(0);(0,$m.useEffect)(()=>{let e=setInterval(()=>o(e=>e+1),6e4);return()=>clearInterval(e)},[]);let s=e_(n,r+a),c=Zg(),l=e??s[0]?.row.id??null,u=s.find(e=>e.row.id===l),d=u?.lane;if(n.length===0)return(0,$.jsxs)(`main`,{className:`lv-empty`,children:[(0,$.jsx)(`h1`,{children:`No lanes found`}),(0,$.jsxs)(`p`,{children:[`Looked in `,(0,$.jsx)(`code`,{children:Ig}),`.`]}),(0,$.jsxs)(`p`,{children:[`A lane is a directory holding `,(0,$.jsx)(`code`,{children:`workflow.json`}),` and`,` `,(0,$.jsx)(`code`,{children:`events.jsonl`}),`. Point the viewer at one, or at the parent holding several:`]}),(0,$.jsx)(`pre`,{children:`LANE_DIR=~/phoenix/.fabrika/lanes pnpm lane:view`})]});let f=new Map;for(let{row:e}of s)f.set(e.attention,(f.get(e.attention)??0)+1);return(0,$.jsxs)(`div`,{className:`op`,children:[(0,$.jsxs)(`header`,{className:`hd`,children:[(0,$.jsx)(`span`,{className:`hd-brand`,children:`fabrika`}),(0,$.jsx)(s_,{needs:f.get(`needs-you`)??0,tripped:f.get(`tripped`)??0,broken:f.get(`unreadable`)??0}),(0,$.jsx)(`span`,{className:`hd-counts`,children:[...f].map(([e,t])=>(0,$.jsxs)(`span`,{className:`hd-chip is-${e}`,children:[(0,$.jsx)(`b`,{children:t}),` `,Xg[e]]},e))}),(0,$.jsxs)(`span`,{className:`hd-src`,title:i,children:[(0,$.jsx)(`span`,{className:`hd-live`,"aria-hidden":`true`}),i||`this machine`]})]}),(0,$.jsx)(t_,{fleet:s,drivers:c,open:l,onOpen:t}),(0,$.jsx)(`main`,{className:`stage`,children:d===void 0?null:(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`div`,{className:`stage-hd`,children:[(0,$.jsx)(`h1`,{children:d.id}),(0,$.jsx)(`span`,{className:`stage-sub`,children:u?.row.headline})]}),u===void 0||!u.read.ok?(0,$.jsx)(a_,{id:d.id,why:u?.read.ok===!1?u.read.why:`unknown`}):(0,$.jsxs)(o_,{id:d.id,children:[(0,$.jsx)(i_,{lane:d,chart:u.read.chart,view:u.read.view},`act-${d.id}`),(0,$.jsx)(yg,{lane:u.read.chart,log:Wh(d.events),title:d.id},d.id)]},`b-${d.id}`)]})}),(0,$.jsx)(Yg,{})]})}(0,eh.createRoot)(document.getElementById(`root`)).render((0,$.jsx)(c_,{}));export{I as _,Yu as a,vc as c,Au as d,Nu as f,xi as g,ki as h,ad as i,Mu as l,K as m,hd as n,dd as o,ju as p,qu as r,Q as s,gd as t,_c as u,Le as v,Ie as y};
@@ -1,4 +1,4 @@
1
- import{$ as e,At as t,Ht as n,It as r,Lt as i,Rt as a,St as o,st as s,zt as c}from"./chunk-NSK5VX7P-CBCyTZMs.js";import{_ as l,d as u,f as d,g as f,u as p,v as m}from"./index-Obj05Jex.js";import{t as h}from"./chunk-5VM5RSS4-BP4fRS_5.js";var g=(function(){var e=n(function(e,t,n,r){for(n||={},r=e.length;r--;n[e[r]]=t);return n},`o`),t=[1,4],r=[1,13],i=[1,12],a=[1,15],o=[1,16],s=[1,20],c=[1,19],l=[6,7,8],u=[1,26],d=[1,24],f=[1,25],p=[6,7,11],m=[1,31],h=[6,7,11,24],g=[1,6,13,16,17,20,23],_=[1,35],v=[1,36],y=[1,6,7,11,13,16,17,20,23],b=[1,38],x={trace:n(function(){},`trace`),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,KANBAN:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,shapeData:15,ICON:16,CLASS:17,nodeWithId:18,nodeWithoutId:19,NODE_DSTART:20,NODE_DESCR:21,NODE_DEND:22,NODE_ID:23,SHAPE_DATA:24,$accept:0,$end:1},terminals_:{2:`error`,6:`SPACELINE`,7:`NL`,8:`KANBAN`,11:`EOF`,13:`SPACELIST`,16:`ICON`,17:`CLASS`,20:`NODE_DSTART`,21:`NODE_DESCR`,22:`NODE_DEND`,23:`NODE_ID`,24:`SHAPE_DATA`},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,3],[12,2],[12,2],[12,2],[12,1],[12,2],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[19,3],[18,1],[18,4],[15,2],[15,1]],performAction:n(function(e,t,n,r,i,a,o){var s=a.length-1;switch(i){case 6:case 7:return r;case 8:r.getLogger().trace(`Stop NL `);break;case 9:r.getLogger().trace(`Stop EOF `);break;case 11:r.getLogger().trace(`Stop NL2 `);break;case 12:r.getLogger().trace(`Stop EOF2 `);break;case 15:r.getLogger().info(`Node: `,a[s-1].id),r.addNode(a[s-2].length,a[s-1].id,a[s-1].descr,a[s-1].type,a[s]);break;case 16:r.getLogger().info(`Node: `,a[s].id),r.addNode(a[s-1].length,a[s].id,a[s].descr,a[s].type);break;case 17:r.getLogger().trace(`Icon: `,a[s]),r.decorateNode({icon:a[s]});break;case 18:case 23:r.decorateNode({class:a[s]});break;case 19:r.getLogger().trace(`SPACELIST`);break;case 20:r.getLogger().trace(`Node: `,a[s-1].id),r.addNode(0,a[s-1].id,a[s-1].descr,a[s-1].type,a[s]);break;case 21:r.getLogger().trace(`Node: `,a[s].id),r.addNode(0,a[s].id,a[s].descr,a[s].type);break;case 22:r.decorateNode({icon:a[s]});break;case 27:r.getLogger().trace(`node found ..`,a[s-2]),this.$={id:a[s-1],descr:a[s-1],type:r.getType(a[s-2],a[s])};break;case 28:this.$={id:a[s],descr:a[s],type:0};break;case 29:r.getLogger().trace(`node found ..`,a[s-3]),this.$={id:a[s-3],descr:a[s-1],type:r.getType(a[s-2],a[s])};break;case 30:this.$=a[s-1]+a[s];break;case 31:this.$=a[s]}},`anonymous`),table:[{3:1,4:2,5:3,6:[1,5],8:t},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:t},{6:r,7:[1,10],9:9,12:11,13:i,14:14,16:a,17:o,18:17,19:18,20:s,23:c},e(l,[2,3]),{1:[2,2]},e(l,[2,4]),e(l,[2,5]),{1:[2,6],6:r,12:21,13:i,14:14,16:a,17:o,18:17,19:18,20:s,23:c},{6:r,9:22,12:11,13:i,14:14,16:a,17:o,18:17,19:18,20:s,23:c},{6:u,7:d,10:23,11:f},e(p,[2,24],{18:17,19:18,14:27,16:[1,28],17:[1,29],20:s,23:c}),e(p,[2,19]),e(p,[2,21],{15:30,24:m}),e(p,[2,22]),e(p,[2,23]),e(h,[2,25]),e(h,[2,26]),e(h,[2,28],{20:[1,32]}),{21:[1,33]},{6:u,7:d,10:34,11:f},{1:[2,7],6:r,12:21,13:i,14:14,16:a,17:o,18:17,19:18,20:s,23:c},e(g,[2,14],{7:_,11:v}),e(y,[2,8]),e(y,[2,9]),e(y,[2,10]),e(p,[2,16],{15:37,24:m}),e(p,[2,17]),e(p,[2,18]),e(p,[2,20],{24:b}),e(h,[2,31]),{21:[1,39]},{22:[1,40]},e(g,[2,13],{7:_,11:v}),e(y,[2,11]),e(y,[2,12]),e(p,[2,15],{24:b}),e(h,[2,30]),{22:[1,41]},e(h,[2,27]),e(h,[2,29])],defaultActions:{2:[2,1],6:[2,2]},parseError:n(function(e,t){if(t.recoverable)this.trace(e);else{var n=Error(e);throw n.hash=t,n}},`parseError`),parse:n(function(e){var t=this,r=[0],i=[],a=[null],o=[],s=this.table,c=``,l=0,u=0,d=0,f=2,p=1,m=o.slice.call(arguments,1),h=Object.create(this.lexer),g={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(g.yy[_]=this.yy[_]);h.setInput(e,g.yy),g.yy.lexer=h,g.yy.parser=this,h.yylloc===void 0&&(h.yylloc={});var v=h.yylloc;o.push(v);var y=h.options&&h.options.ranges;this.parseError=typeof g.yy.parseError==`function`?g.yy.parseError:Object.getPrototypeOf(this).parseError;function b(e){r.length-=2*e,a.length-=e,o.length-=e}n(b,`popStack`);function x(){var e=i.pop()||h.lex()||p;return typeof e!=`number`&&(e instanceof Array&&(i=e,e=i.pop()),e=t.symbols_[e]||e),e}n(x,`lex`);for(var S,C,w,T,E,D={},O,k,A,j;;){if(w=r[r.length-1],this.defaultActions[w]?T=this.defaultActions[w]:(S??=x(),T=s[w]&&s[w][S]),T===void 0||!T.length||!T[0]){var M=``;for(O in j=[],s[w])this.terminals_[O]&&O>f&&j.push(`'`+this.terminals_[O]+`'`);M=h.showPosition?`Parse error on line `+(l+1)+`:
1
+ import{$ as e,At as t,Ht as n,It as r,Lt as i,Rt as a,St as o,st as s,zt as c}from"./chunk-NSK5VX7P-CBCyTZMs.js";import{_ as l,d as u,f as d,g as f,u as p,v as m}from"./index-Bgt4sXpW.js";import{t as h}from"./chunk-5VM5RSS4-BP4fRS_5.js";var g=(function(){var e=n(function(e,t,n,r){for(n||={},r=e.length;r--;n[e[r]]=t);return n},`o`),t=[1,4],r=[1,13],i=[1,12],a=[1,15],o=[1,16],s=[1,20],c=[1,19],l=[6,7,8],u=[1,26],d=[1,24],f=[1,25],p=[6,7,11],m=[1,31],h=[6,7,11,24],g=[1,6,13,16,17,20,23],_=[1,35],v=[1,36],y=[1,6,7,11,13,16,17,20,23],b=[1,38],x={trace:n(function(){},`trace`),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,KANBAN:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,shapeData:15,ICON:16,CLASS:17,nodeWithId:18,nodeWithoutId:19,NODE_DSTART:20,NODE_DESCR:21,NODE_DEND:22,NODE_ID:23,SHAPE_DATA:24,$accept:0,$end:1},terminals_:{2:`error`,6:`SPACELINE`,7:`NL`,8:`KANBAN`,11:`EOF`,13:`SPACELIST`,16:`ICON`,17:`CLASS`,20:`NODE_DSTART`,21:`NODE_DESCR`,22:`NODE_DEND`,23:`NODE_ID`,24:`SHAPE_DATA`},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,3],[12,2],[12,2],[12,2],[12,1],[12,2],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[19,3],[18,1],[18,4],[15,2],[15,1]],performAction:n(function(e,t,n,r,i,a,o){var s=a.length-1;switch(i){case 6:case 7:return r;case 8:r.getLogger().trace(`Stop NL `);break;case 9:r.getLogger().trace(`Stop EOF `);break;case 11:r.getLogger().trace(`Stop NL2 `);break;case 12:r.getLogger().trace(`Stop EOF2 `);break;case 15:r.getLogger().info(`Node: `,a[s-1].id),r.addNode(a[s-2].length,a[s-1].id,a[s-1].descr,a[s-1].type,a[s]);break;case 16:r.getLogger().info(`Node: `,a[s].id),r.addNode(a[s-1].length,a[s].id,a[s].descr,a[s].type);break;case 17:r.getLogger().trace(`Icon: `,a[s]),r.decorateNode({icon:a[s]});break;case 18:case 23:r.decorateNode({class:a[s]});break;case 19:r.getLogger().trace(`SPACELIST`);break;case 20:r.getLogger().trace(`Node: `,a[s-1].id),r.addNode(0,a[s-1].id,a[s-1].descr,a[s-1].type,a[s]);break;case 21:r.getLogger().trace(`Node: `,a[s].id),r.addNode(0,a[s].id,a[s].descr,a[s].type);break;case 22:r.decorateNode({icon:a[s]});break;case 27:r.getLogger().trace(`node found ..`,a[s-2]),this.$={id:a[s-1],descr:a[s-1],type:r.getType(a[s-2],a[s])};break;case 28:this.$={id:a[s],descr:a[s],type:0};break;case 29:r.getLogger().trace(`node found ..`,a[s-3]),this.$={id:a[s-3],descr:a[s-1],type:r.getType(a[s-2],a[s])};break;case 30:this.$=a[s-1]+a[s];break;case 31:this.$=a[s]}},`anonymous`),table:[{3:1,4:2,5:3,6:[1,5],8:t},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:t},{6:r,7:[1,10],9:9,12:11,13:i,14:14,16:a,17:o,18:17,19:18,20:s,23:c},e(l,[2,3]),{1:[2,2]},e(l,[2,4]),e(l,[2,5]),{1:[2,6],6:r,12:21,13:i,14:14,16:a,17:o,18:17,19:18,20:s,23:c},{6:r,9:22,12:11,13:i,14:14,16:a,17:o,18:17,19:18,20:s,23:c},{6:u,7:d,10:23,11:f},e(p,[2,24],{18:17,19:18,14:27,16:[1,28],17:[1,29],20:s,23:c}),e(p,[2,19]),e(p,[2,21],{15:30,24:m}),e(p,[2,22]),e(p,[2,23]),e(h,[2,25]),e(h,[2,26]),e(h,[2,28],{20:[1,32]}),{21:[1,33]},{6:u,7:d,10:34,11:f},{1:[2,7],6:r,12:21,13:i,14:14,16:a,17:o,18:17,19:18,20:s,23:c},e(g,[2,14],{7:_,11:v}),e(y,[2,8]),e(y,[2,9]),e(y,[2,10]),e(p,[2,16],{15:37,24:m}),e(p,[2,17]),e(p,[2,18]),e(p,[2,20],{24:b}),e(h,[2,31]),{21:[1,39]},{22:[1,40]},e(g,[2,13],{7:_,11:v}),e(y,[2,11]),e(y,[2,12]),e(p,[2,15],{24:b}),e(h,[2,30]),{22:[1,41]},e(h,[2,27]),e(h,[2,29])],defaultActions:{2:[2,1],6:[2,2]},parseError:n(function(e,t){if(t.recoverable)this.trace(e);else{var n=Error(e);throw n.hash=t,n}},`parseError`),parse:n(function(e){var t=this,r=[0],i=[],a=[null],o=[],s=this.table,c=``,l=0,u=0,d=0,f=2,p=1,m=o.slice.call(arguments,1),h=Object.create(this.lexer),g={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(g.yy[_]=this.yy[_]);h.setInput(e,g.yy),g.yy.lexer=h,g.yy.parser=this,h.yylloc===void 0&&(h.yylloc={});var v=h.yylloc;o.push(v);var y=h.options&&h.options.ranges;this.parseError=typeof g.yy.parseError==`function`?g.yy.parseError:Object.getPrototypeOf(this).parseError;function b(e){r.length-=2*e,a.length-=e,o.length-=e}n(b,`popStack`);function x(){var e=i.pop()||h.lex()||p;return typeof e!=`number`&&(e instanceof Array&&(i=e,e=i.pop()),e=t.symbols_[e]||e),e}n(x,`lex`);for(var S,C,w,T,E,D={},O,k,A,j;;){if(w=r[r.length-1],this.defaultActions[w]?T=this.defaultActions[w]:(S??=x(),T=s[w]&&s[w][S]),T===void 0||!T.length||!T[0]){var M=``;for(O in j=[],s[w])this.terminals_[O]&&O>f&&j.push(`'`+this.terminals_[O]+`'`);M=h.showPosition?`Parse error on line `+(l+1)+`:
2
2
  `+h.showPosition()+`
3
3
  Expecting `+j.join(`, `)+`, got '`+(this.terminals_[S]||S)+`'`:`Parse error on line `+(l+1)+`: Unexpected `+(S==p?`end of input`:`'`+(this.terminals_[S]||S)+`'`),this.parseError(M,{text:h.match,token:this.terminals_[S]||S,line:h.yylineno,loc:v,expected:j})}if(T[0]instanceof Array&&T.length>1)throw Error(`Parse Error: multiple actions possible at state: `+w+`, token: `+S);switch(T[0]){case 1:r.push(S),a.push(h.yytext),o.push(h.yylloc),r.push(T[1]),S=null,C?(S=C,C=null):(u=h.yyleng,c=h.yytext,l=h.yylineno,v=h.yylloc,d>0&&d--);break;case 2:if(k=this.productions_[T[1]][1],D.$=a[a.length-k],D._$={first_line:o[o.length-(k||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(k||1)].first_column,last_column:o[o.length-1].last_column},y&&(D._$.range=[o[o.length-(k||1)].range[0],o[o.length-1].range[1]]),E=this.performAction.apply(D,[c,u,l,g.yy,T[1],a,o].concat(m)),E!==void 0)return E;k&&(r=r.slice(0,-1*k*2),a=a.slice(0,-1*k),o=o.slice(0,-1*k)),r.push(this.productions_[T[1]][0]),a.push(D.$),o.push(D._$),A=s[r[r.length-2]][r[r.length-1]],r.push(A);break;case 3:return!0}}return!0},`parse`)};x.lexer=(function(){return{EOF:1,parseError:n(function(e,t){if(this.yy.parser)this.yy.parser.parseError(e,t);else throw Error(e)},`parseError`),setInput:n(function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match=``,this.conditionStack=[`INITIAL`],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},`setInput`),input:n(function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},`input`),unput:n(function(e){var t=e.length,n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},`unput`),more:n(function(){return this._more=!0,this},`more`),reject:n(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError(`Lexical error on line `+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
4
4
  `+this.showPosition(),{text:``,token:null,line:this.yylineno});return this},`reject`),less:n(function(e){this.unput(this.match.slice(e))},`less`),pastInput:n(function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?`...`:``)+e.substr(-20).replace(/\n/g,``)},`pastInput`),upcomingInput:n(function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?`...`:``)).replace(/\n/g,``)},`upcomingInput`),showPosition:n(function(){var e=this.pastInput(),t=Array(e.length+1).join(`-`);return e+this.upcomingInput()+`
@@ -1,4 +1,4 @@
1
- import{$ as e,Ht as t,It as n,Lt as r,Rt as i,St as a,mt as o,ot as s,st as c,zt as l}from"./chunk-NSK5VX7P-CBCyTZMs.js";import{n as u,t as d}from"./index-Obj05Jex.js";import{n as f,t as p}from"./chunk-KBJHAD2P-DZOw7xU6.js";var m=[];for(let e=0;e<256;++e)m.push((e+256).toString(16).slice(1));function h(e,t=0){return(m[e[t+0]]+m[e[t+1]]+m[e[t+2]]+m[e[t+3]]+`-`+m[e[t+4]]+m[e[t+5]]+`-`+m[e[t+6]]+m[e[t+7]]+`-`+m[e[t+8]]+m[e[t+9]]+`-`+m[e[t+10]]+m[e[t+11]]+m[e[t+12]]+m[e[t+13]]+m[e[t+14]]+m[e[t+15]]).toLowerCase()}var g=new Uint8Array(16);function _(){return crypto.getRandomValues(g)}function v(e,t,n){return!t&&!e&&crypto.randomUUID?crypto.randomUUID():y(e,t,n)}function y(e,t,n){e||={};let r=e.random??e.rng?.()??_();if(r.length<16)throw Error(`Random bytes length must be >= 16`);if(r[6]=r[6]&15|64,r[8]=r[8]&63|128,t){if(n||=0,n<0||n+16>t.length)throw RangeError(`UUID byte range ${n}:${n+15} is out of buffer bounds`);for(let e=0;e<16;++e)t[n+e]=r[e];return t}return h(r)}var b=(function(){var e=t(function(e,t,n,r){for(n||={},r=e.length;r--;n[e[r]]=t);return n},`o`),n=[1,4],r=[1,13],i=[1,12],a=[1,15],o=[1,16],s=[1,20],c=[1,19],l=[6,7,8],u=[1,26],d=[1,24],f=[1,25],p=[6,7,11],m=[1,6,13,15,16,19,22],h=[1,33],g=[1,34],_=[1,6,7,11,13,15,16,19,22],v={trace:t(function(){},`trace`),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,MINDMAP:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,ICON:15,CLASS:16,nodeWithId:17,nodeWithoutId:18,NODE_DSTART:19,NODE_DESCR:20,NODE_DEND:21,NODE_ID:22,$accept:0,$end:1},terminals_:{2:`error`,6:`SPACELINE`,7:`NL`,8:`MINDMAP`,11:`EOF`,13:`SPACELIST`,15:`ICON`,16:`CLASS`,19:`NODE_DSTART`,20:`NODE_DESCR`,21:`NODE_DEND`,22:`NODE_ID`},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[18,3],[17,1],[17,4]],performAction:t(function(e,t,n,r,i,a,o){var s=a.length-1;switch(i){case 6:case 7:return r;case 8:r.getLogger().trace(`Stop NL `);break;case 9:r.getLogger().trace(`Stop EOF `);break;case 11:r.getLogger().trace(`Stop NL2 `);break;case 12:r.getLogger().trace(`Stop EOF2 `);break;case 15:r.getLogger().info(`Node: `,a[s].id),r.addNode(a[s-1].length,a[s].id,a[s].descr,a[s].type);break;case 16:r.getLogger().trace(`Icon: `,a[s]),r.decorateNode({icon:a[s]});break;case 17:case 21:r.decorateNode({class:a[s]});break;case 18:r.getLogger().trace(`SPACELIST`);break;case 19:r.getLogger().trace(`Node: `,a[s].id),r.addNode(0,a[s].id,a[s].descr,a[s].type);break;case 20:r.decorateNode({icon:a[s]});break;case 25:r.getLogger().trace(`node found ..`,a[s-2]),this.$={id:a[s-1],descr:a[s-1],type:r.getType(a[s-2],a[s])};break;case 26:this.$={id:a[s],descr:a[s],type:r.nodeType.DEFAULT};break;case 27:r.getLogger().trace(`node found ..`,a[s-3]),this.$={id:a[s-3],descr:a[s-1],type:r.getType(a[s-2],a[s])}}},`anonymous`),table:[{3:1,4:2,5:3,6:[1,5],8:n},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:n},{6:r,7:[1,10],9:9,12:11,13:i,14:14,15:a,16:o,17:17,18:18,19:s,22:c},e(l,[2,3]),{1:[2,2]},e(l,[2,4]),e(l,[2,5]),{1:[2,6],6:r,12:21,13:i,14:14,15:a,16:o,17:17,18:18,19:s,22:c},{6:r,9:22,12:11,13:i,14:14,15:a,16:o,17:17,18:18,19:s,22:c},{6:u,7:d,10:23,11:f},e(p,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:s,22:c}),e(p,[2,18]),e(p,[2,19]),e(p,[2,20]),e(p,[2,21]),e(p,[2,23]),e(p,[2,24]),e(p,[2,26],{19:[1,30]}),{20:[1,31]},{6:u,7:d,10:32,11:f},{1:[2,7],6:r,12:21,13:i,14:14,15:a,16:o,17:17,18:18,19:s,22:c},e(m,[2,14],{7:h,11:g}),e(_,[2,8]),e(_,[2,9]),e(_,[2,10]),e(p,[2,15]),e(p,[2,16]),e(p,[2,17]),{20:[1,35]},{21:[1,36]},e(m,[2,13],{7:h,11:g}),e(_,[2,11]),e(_,[2,12]),{21:[1,37]},e(p,[2,25]),e(p,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:t(function(e,t){if(t.recoverable)this.trace(e);else{var n=Error(e);throw n.hash=t,n}},`parseError`),parse:t(function(e){var n=this,r=[0],i=[],a=[null],o=[],s=this.table,c=``,l=0,u=0,d=0,f=2,p=1,m=o.slice.call(arguments,1),h=Object.create(this.lexer),g={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(g.yy[_]=this.yy[_]);h.setInput(e,g.yy),g.yy.lexer=h,g.yy.parser=this,h.yylloc===void 0&&(h.yylloc={});var v=h.yylloc;o.push(v);var y=h.options&&h.options.ranges;this.parseError=typeof g.yy.parseError==`function`?g.yy.parseError:Object.getPrototypeOf(this).parseError;function b(e){r.length-=2*e,a.length-=e,o.length-=e}t(b,`popStack`);function x(){var e=i.pop()||h.lex()||p;return typeof e!=`number`&&(e instanceof Array&&(i=e,e=i.pop()),e=n.symbols_[e]||e),e}t(x,`lex`);for(var S,C,w,T,E,D={},O,k,A,j;;){if(w=r[r.length-1],this.defaultActions[w]?T=this.defaultActions[w]:(S??=x(),T=s[w]&&s[w][S]),T===void 0||!T.length||!T[0]){var M=``;for(O in j=[],s[w])this.terminals_[O]&&O>f&&j.push(`'`+this.terminals_[O]+`'`);M=h.showPosition?`Parse error on line `+(l+1)+`:
1
+ import{$ as e,Ht as t,It as n,Lt as r,Rt as i,St as a,mt as o,ot as s,st as c,zt as l}from"./chunk-NSK5VX7P-CBCyTZMs.js";import{n as u,t as d}from"./index-Bgt4sXpW.js";import{n as f,t as p}from"./chunk-KBJHAD2P-DZOw7xU6.js";var m=[];for(let e=0;e<256;++e)m.push((e+256).toString(16).slice(1));function h(e,t=0){return(m[e[t+0]]+m[e[t+1]]+m[e[t+2]]+m[e[t+3]]+`-`+m[e[t+4]]+m[e[t+5]]+`-`+m[e[t+6]]+m[e[t+7]]+`-`+m[e[t+8]]+m[e[t+9]]+`-`+m[e[t+10]]+m[e[t+11]]+m[e[t+12]]+m[e[t+13]]+m[e[t+14]]+m[e[t+15]]).toLowerCase()}var g=new Uint8Array(16);function _(){return crypto.getRandomValues(g)}function v(e,t,n){return!t&&!e&&crypto.randomUUID?crypto.randomUUID():y(e,t,n)}function y(e,t,n){e||={};let r=e.random??e.rng?.()??_();if(r.length<16)throw Error(`Random bytes length must be >= 16`);if(r[6]=r[6]&15|64,r[8]=r[8]&63|128,t){if(n||=0,n<0||n+16>t.length)throw RangeError(`UUID byte range ${n}:${n+15} is out of buffer bounds`);for(let e=0;e<16;++e)t[n+e]=r[e];return t}return h(r)}var b=(function(){var e=t(function(e,t,n,r){for(n||={},r=e.length;r--;n[e[r]]=t);return n},`o`),n=[1,4],r=[1,13],i=[1,12],a=[1,15],o=[1,16],s=[1,20],c=[1,19],l=[6,7,8],u=[1,26],d=[1,24],f=[1,25],p=[6,7,11],m=[1,6,13,15,16,19,22],h=[1,33],g=[1,34],_=[1,6,7,11,13,15,16,19,22],v={trace:t(function(){},`trace`),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,MINDMAP:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,ICON:15,CLASS:16,nodeWithId:17,nodeWithoutId:18,NODE_DSTART:19,NODE_DESCR:20,NODE_DEND:21,NODE_ID:22,$accept:0,$end:1},terminals_:{2:`error`,6:`SPACELINE`,7:`NL`,8:`MINDMAP`,11:`EOF`,13:`SPACELIST`,15:`ICON`,16:`CLASS`,19:`NODE_DSTART`,20:`NODE_DESCR`,21:`NODE_DEND`,22:`NODE_ID`},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[18,3],[17,1],[17,4]],performAction:t(function(e,t,n,r,i,a,o){var s=a.length-1;switch(i){case 6:case 7:return r;case 8:r.getLogger().trace(`Stop NL `);break;case 9:r.getLogger().trace(`Stop EOF `);break;case 11:r.getLogger().trace(`Stop NL2 `);break;case 12:r.getLogger().trace(`Stop EOF2 `);break;case 15:r.getLogger().info(`Node: `,a[s].id),r.addNode(a[s-1].length,a[s].id,a[s].descr,a[s].type);break;case 16:r.getLogger().trace(`Icon: `,a[s]),r.decorateNode({icon:a[s]});break;case 17:case 21:r.decorateNode({class:a[s]});break;case 18:r.getLogger().trace(`SPACELIST`);break;case 19:r.getLogger().trace(`Node: `,a[s].id),r.addNode(0,a[s].id,a[s].descr,a[s].type);break;case 20:r.decorateNode({icon:a[s]});break;case 25:r.getLogger().trace(`node found ..`,a[s-2]),this.$={id:a[s-1],descr:a[s-1],type:r.getType(a[s-2],a[s])};break;case 26:this.$={id:a[s],descr:a[s],type:r.nodeType.DEFAULT};break;case 27:r.getLogger().trace(`node found ..`,a[s-3]),this.$={id:a[s-3],descr:a[s-1],type:r.getType(a[s-2],a[s])}}},`anonymous`),table:[{3:1,4:2,5:3,6:[1,5],8:n},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:n},{6:r,7:[1,10],9:9,12:11,13:i,14:14,15:a,16:o,17:17,18:18,19:s,22:c},e(l,[2,3]),{1:[2,2]},e(l,[2,4]),e(l,[2,5]),{1:[2,6],6:r,12:21,13:i,14:14,15:a,16:o,17:17,18:18,19:s,22:c},{6:r,9:22,12:11,13:i,14:14,15:a,16:o,17:17,18:18,19:s,22:c},{6:u,7:d,10:23,11:f},e(p,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:s,22:c}),e(p,[2,18]),e(p,[2,19]),e(p,[2,20]),e(p,[2,21]),e(p,[2,23]),e(p,[2,24]),e(p,[2,26],{19:[1,30]}),{20:[1,31]},{6:u,7:d,10:32,11:f},{1:[2,7],6:r,12:21,13:i,14:14,15:a,16:o,17:17,18:18,19:s,22:c},e(m,[2,14],{7:h,11:g}),e(_,[2,8]),e(_,[2,9]),e(_,[2,10]),e(p,[2,15]),e(p,[2,16]),e(p,[2,17]),{20:[1,35]},{21:[1,36]},e(m,[2,13],{7:h,11:g}),e(_,[2,11]),e(_,[2,12]),{21:[1,37]},e(p,[2,25]),e(p,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:t(function(e,t){if(t.recoverable)this.trace(e);else{var n=Error(e);throw n.hash=t,n}},`parseError`),parse:t(function(e){var n=this,r=[0],i=[],a=[null],o=[],s=this.table,c=``,l=0,u=0,d=0,f=2,p=1,m=o.slice.call(arguments,1),h=Object.create(this.lexer),g={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(g.yy[_]=this.yy[_]);h.setInput(e,g.yy),g.yy.lexer=h,g.yy.parser=this,h.yylloc===void 0&&(h.yylloc={});var v=h.yylloc;o.push(v);var y=h.options&&h.options.ranges;this.parseError=typeof g.yy.parseError==`function`?g.yy.parseError:Object.getPrototypeOf(this).parseError;function b(e){r.length-=2*e,a.length-=e,o.length-=e}t(b,`popStack`);function x(){var e=i.pop()||h.lex()||p;return typeof e!=`number`&&(e instanceof Array&&(i=e,e=i.pop()),e=n.symbols_[e]||e),e}t(x,`lex`);for(var S,C,w,T,E,D={},O,k,A,j;;){if(w=r[r.length-1],this.defaultActions[w]?T=this.defaultActions[w]:(S??=x(),T=s[w]&&s[w][S]),T===void 0||!T.length||!T[0]){var M=``;for(O in j=[],s[w])this.terminals_[O]&&O>f&&j.push(`'`+this.terminals_[O]+`'`);M=h.showPosition?`Parse error on line `+(l+1)+`:
2
2
  `+h.showPosition()+`
3
3
  Expecting `+j.join(`, `)+`, got '`+(this.terminals_[S]||S)+`'`:`Parse error on line `+(l+1)+`: Unexpected `+(S==p?`end of input`:`'`+(this.terminals_[S]||S)+`'`),this.parseError(M,{text:h.match,token:this.terminals_[S]||S,line:h.yylineno,loc:v,expected:j})}if(T[0]instanceof Array&&T.length>1)throw Error(`Parse Error: multiple actions possible at state: `+w+`, token: `+S);switch(T[0]){case 1:r.push(S),a.push(h.yytext),o.push(h.yylloc),r.push(T[1]),S=null,C?(S=C,C=null):(u=h.yyleng,c=h.yytext,l=h.yylineno,v=h.yylloc,d>0&&d--);break;case 2:if(k=this.productions_[T[1]][1],D.$=a[a.length-k],D._$={first_line:o[o.length-(k||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(k||1)].first_column,last_column:o[o.length-1].last_column},y&&(D._$.range=[o[o.length-(k||1)].range[0],o[o.length-1].range[1]]),E=this.performAction.apply(D,[c,u,l,g.yy,T[1],a,o].concat(m)),E!==void 0)return E;k&&(r=r.slice(0,-1*k*2),a=a.slice(0,-1*k),o=o.slice(0,-1*k)),r.push(this.productions_[T[1]][0]),a.push(D.$),o.push(D._$),A=s[r[r.length-2]][r[r.length-1]],r.push(A);break;case 3:return!0}}return!0},`parse`)};v.lexer=(function(){return{EOF:1,parseError:t(function(e,t){if(this.yy.parser)this.yy.parser.parseError(e,t);else throw Error(e)},`parseError`),setInput:t(function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match=``,this.conditionStack=[`INITIAL`],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},`setInput`),input:t(function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},`input`),unput:t(function(e){var t=e.length,n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},`unput`),more:t(function(){return this._more=!0,this},`more`),reject:t(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError(`Lexical error on line `+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
4
4
  `+this.showPosition(),{text:``,token:null,line:this.yylineno});return this},`reject`),less:t(function(e){this.unput(this.match.slice(e))},`less`),pastInput:t(function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?`...`:``)+e.substr(-20).replace(/\n/g,``)},`pastInput`),upcomingInput:t(function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?`...`:``)).replace(/\n/g,``)},`upcomingInput`),showPosition:t(function(){var e=this.pastInput(),t=Array(e.length+1).join(`-`);return e+this.upcomingInput()+`
@@ -1 +1 @@
1
- import{E as e,Ht as t,U as n,X as r,Y as i,f as a,pt as o,st as s,zt as c}from"./chunk-NSK5VX7P-CBCyTZMs.js";import{y as l}from"./index-Obj05Jex.js";import"./chunk-KBJHAD2P-DZOw7xU6.js";import"./chunk-2GRJ4B5K-HdDf8SI3.js";import{n as u,t as d}from"./dagre-K_PewWfS.js";import{i as f,n as p,t as m}from"./chunk-5RXB4S5H-IPzIfiJ6.js";var h=t(e=>e.append(`circle`).attr(`class`,`start-state`).attr(`r`,s().state.sizeUnit).attr(`cx`,s().state.padding+s().state.sizeUnit).attr(`cy`,s().state.padding+s().state.sizeUnit),`drawStartState`),g=t(e=>e.append(`line`).style(`stroke`,`grey`).style(`stroke-dasharray`,`3`).attr(`x1`,s().state.textHeight).attr(`class`,`divider`).attr(`x2`,s().state.textHeight*2).attr(`y1`,0).attr(`y2`,0),`drawDivider`),_=t((e,t)=>{let n=e.append(`text`).attr(`x`,2*s().state.padding).attr(`y`,s().state.textHeight+2*s().state.padding).attr(`font-size`,s().state.fontSize).attr(`class`,`state-title`).text(t.id),r=n.node().getBBox();return e.insert(`rect`,`:first-child`).attr(`x`,s().state.padding).attr(`y`,s().state.padding).attr(`width`,r.width+2*s().state.padding).attr(`height`,r.height+2*s().state.padding).attr(`rx`,s().state.radius),n},`drawSimpleState`),v=t((e,n)=>{let r=t(function(e,t,n){let r=e.append(`tspan`).attr(`x`,2*s().state.padding).text(t);n||r.attr(`dy`,s().state.textHeight)},`addTspan`),i=e.append(`text`).attr(`x`,2*s().state.padding).attr(`y`,s().state.textHeight+1.3*s().state.padding).attr(`font-size`,s().state.fontSize).attr(`class`,`state-title`).text(n.descriptions[0]).node().getBBox(),a=i.height,o=e.append(`text`).attr(`x`,s().state.padding).attr(`y`,a+s().state.padding*.4+s().state.dividerMargin+s().state.textHeight).attr(`class`,`state-description`),c=!0,l=!0;n.descriptions.forEach(function(e){c||(r(o,e,l),l=!1),c=!1});let u=e.append(`line`).attr(`x1`,s().state.padding).attr(`y1`,s().state.padding+a+s().state.dividerMargin/2).attr(`y2`,s().state.padding+a+s().state.dividerMargin/2).attr(`class`,`descr-divider`),d=o.node().getBBox(),f=Math.max(d.width,i.width);return u.attr(`x2`,f+3*s().state.padding),e.insert(`rect`,`:first-child`).attr(`x`,s().state.padding).attr(`y`,s().state.padding).attr(`width`,f+2*s().state.padding).attr(`height`,d.height+a+2*s().state.padding).attr(`rx`,s().state.radius),e},`drawDescrState`),y=t((e,t,n)=>{let r=s().state.padding,i=2*s().state.padding,a=e.node().getBBox(),o=a.width,c=a.x,l=e.append(`text`).attr(`x`,0).attr(`y`,s().state.titleShift).attr(`font-size`,s().state.fontSize).attr(`class`,`state-title`).text(t.id),u=l.node().getBBox().width+i,d=Math.max(u,o);d===o&&(d+=i);let f,p=e.node().getBBox();t.doc,f=c-r,u>o&&(f=(o-d)/2+r),Math.abs(c-p.x)<r&&u>o&&(f=c-(u-o)/2);let m=1-s().state.textHeight;return e.insert(`rect`,`:first-child`).attr(`x`,f).attr(`y`,m).attr(`class`,n?`alt-composit`:`composit`).attr(`width`,d).attr(`height`,p.height+s().state.textHeight+s().state.titleShift+1).attr(`rx`,`0`),l.attr(`x`,f+r),u<=o&&l.attr(`x`,c+(d-i)/2-u/2+r),e.insert(`rect`,`:first-child`).attr(`x`,f).attr(`y`,s().state.titleShift-s().state.textHeight-s().state.padding).attr(`width`,d).attr(`height`,s().state.textHeight*3).attr(`rx`,s().state.radius),e.insert(`rect`,`:first-child`).attr(`x`,f).attr(`y`,s().state.titleShift-s().state.textHeight-s().state.padding).attr(`width`,d).attr(`height`,p.height+3+2*s().state.textHeight).attr(`rx`,s().state.radius),e},`addTitleAndBox`),b=t(e=>(e.append(`circle`).attr(`class`,`end-state-outer`).attr(`r`,s().state.sizeUnit+s().state.miniPadding).attr(`cx`,s().state.padding+s().state.sizeUnit+s().state.miniPadding).attr(`cy`,s().state.padding+s().state.sizeUnit+s().state.miniPadding),e.append(`circle`).attr(`class`,`end-state-inner`).attr(`r`,s().state.sizeUnit).attr(`cx`,s().state.padding+s().state.sizeUnit+2).attr(`cy`,s().state.padding+s().state.sizeUnit+2)),`drawEndState`),x=t((e,t)=>{let n=s().state.forkWidth,r=s().state.forkHeight;if(t.parentId){let e=n;n=r,r=e}return e.append(`rect`).style(`stroke`,`black`).style(`fill`,`black`).attr(`width`,n).attr(`height`,r).attr(`x`,s().state.padding).attr(`y`,s().state.padding)},`drawForkJoinState`),S=t((e,t,n,r)=>{let a=0,o=r.append(`text`);o.style(`text-anchor`,`start`),o.attr(`class`,`noteText`);let c=e.replace(/\r\n/g,`<br/>`);c=c.replace(/\n/g,`<br/>`);let l=c.split(i.lineBreakRegex),u=1.25*s().state.noteMargin;for(let e of l){let r=e.trim();if(r.length>0){let e=o.append(`tspan`);if(e.text(r),u===0){let t=e.node().getBBox();u+=t.height}a+=u,e.attr(`x`,t+s().state.noteMargin),e.attr(`y`,n+a+1.25*s().state.noteMargin)}}return{textWidth:o.node().getBBox().width,textHeight:a}},`_drawLongText`),C=t((e,t)=>{t.attr(`class`,`state-note`);let n=t.append(`rect`).attr(`x`,0).attr(`y`,s().state.padding),{textWidth:r,textHeight:i}=S(e,0,0,t.append(`g`));return n.attr(`height`,i+2*s().state.noteMargin),n.attr(`width`,r+s().state.noteMargin*2),n},`drawNote`),w=t(function(e,t){let n=t.id,r={id:n,label:t.id,width:0,height:0},i=e.append(`g`).attr(`id`,n).attr(`class`,`stateGroup`);t.type===`start`&&h(i),t.type===`end`&&b(i),(t.type===`fork`||t.type===`join`)&&x(i,t),t.type===`note`&&C(t.note.text,i),t.type===`divider`&&g(i),t.type==="default"&&t.descriptions.length===0&&_(i,t),t.type==="default"&&t.descriptions.length>0&&v(i,t);let a=i.node().getBBox();return r.width=a.width+2*s().state.padding,r.height=a.height+2*s().state.padding,r},`drawState`),T=0,E=t(function(n,r,u){let d=t(function(e){switch(e){case m.relationType.AGGREGATION:return`aggregation`;case m.relationType.EXTENSION:return`extension`;case m.relationType.COMPOSITION:return`composition`;case m.relationType.DEPENDENCY:return`dependency`}},`getRelationType`);r.points=r.points.filter(e=>!Number.isNaN(e.y));let f=r.points,p=l().x(function(e){return e.x}).y(function(e){return e.y}).curve(e),h=n.append(`path`).attr(`d`,p(f)).attr(`id`,`edge`+T).attr(`class`,`transition`),g=``;if(s().state.arrowMarkerAbsolute&&(g=o(!0)),h.attr(`marker-end`,`url(`+g+`#`+d(m.relationType.DEPENDENCY)+`End)`),u.title!==void 0){let e=n.append(`g`).attr(`class`,`stateLabel`),{x:t,y:o}=a.calcLabelPosition(r.points),l=i.getRows(u.title),d=0,f=[],p=0,m=0;for(let n=0;n<=l.length;n++){let r=e.append(`text`).attr(`text-anchor`,`middle`).text(l[n]).attr(`x`,t).attr(`y`,o+d),i=r.node().getBBox();p=Math.max(p,i.width),m=Math.min(m,i.x),c.info(i.x,t,o+d),d===0&&(d=r.node().getBBox().height,c.info(`Title height`,d,o)),f.push(r)}let h=d*l.length;if(l.length>1){let e=(l.length-1)*d*.5;f.forEach((t,n)=>t.attr(`y`,o+n*d-e)),h=d*l.length}let g=e.node().getBBox();e.insert(`rect`,`:first-child`).attr(`class`,`box`).attr(`x`,t-p/2-s().state.padding/2).attr(`y`,o-h/2-s().state.padding/2-3.5).attr(`width`,p+s().state.padding).attr(`height`,h+s().state.padding),c.info(g)}T++},`drawEdge`),D,O={},k=t(function(){},`setConf`),A=t(function(e){e.append(`defs`).append(`marker`).attr(`id`,`dependencyEnd`).attr(`refX`,19).attr(`refY`,7).attr(`markerWidth`,20).attr(`markerHeight`,28).attr(`orient`,`auto`).append(`path`).attr(`d`,`M 19,7 L9,13 L14,7 L9,1 Z`)},`insertMarkers`),j=t(function(e,t,i,a){D=s().state;let o=s().securityLevel,l;o===`sandbox`&&(l=n(`#i`+t));let u=n(o===`sandbox`?l.nodes()[0].contentDocument.body:`body`),d=o===`sandbox`?l.nodes()[0].contentDocument:document;c.debug(`Rendering diagram `+e);let f=u.select(`[id='${t}']`);A(f),N(a.db.getRootDoc(),f.append(`g`).attr(`id`,t+`-root`),void 0,!1,u,d,a);let p=D.padding,m=f.node().getBBox(),h=m.width+p*2,g=m.height+p*2,_=h*1.75;r(f,g,_,D.useMaxWidth),f.attr(`viewBox`,`${m.x-D.padding} ${m.y-D.padding} `+h+` `+g)},`draw`),M=t(e=>e?e.length*D.fontSizeFactor:1,`getLabelWidth`),N=t((e,t,n,r,a,o,s)=>{let l=new u({compound:!0,multigraph:!0}),f,p=!0;for(f=0;f<e.length;f++)if(e[f].stmt===`relation`){p=!1;break}n?l.setGraph({rankdir:`LR`,multigraph:!0,compound:!0,ranker:`tight-tree`,ranksep:p?1:D.edgeLengthFactor,nodeSep:p?1:50,isMultiGraph:!0}):l.setGraph({rankdir:`TB`,multigraph:!0,compound:!0,ranksep:p?1:D.edgeLengthFactor,nodeSep:p?1:50,ranker:`tight-tree`,isMultiGraph:!0}),l.setDefaultEdgeLabel(function(){return{}});let m=s.db.getStates(),h=s.db.getRelations(),g=Object.keys(m);for(let e of g){let i=m[e];n&&(i.parentId=n);let c;if(i.doc){let e=t.append(`g`).attr(`id`,i.id).attr(`class`,`stateGroup`);c=N(i.doc,e,i.id,!r,a,o,s);{e=y(e,i,r);let t=e.node().getBBox();c.width=t.width,c.height=t.height+D.padding/2,O[i.id]={y:D.compositTitleSize}}}else c=w(t,i,l);if(i.note){let e=w(t,{descriptions:[],id:i.id+`-note`,note:i.note,type:`note`},l);i.note.position===`left of`?(l.setNode(c.id+`-note`,e),l.setNode(c.id,c)):(l.setNode(c.id,c),l.setNode(c.id+`-note`,e)),l.setParent(c.id,c.id+`-group`),l.setParent(c.id+`-note`,c.id+`-group`)}else l.setNode(c.id,c)}c.debug(`Count=`,l.nodeCount(),l);let _=0;h.forEach(function(e){_++,c.debug(`Setting edge`,e),l.setEdge(e.id1,e.id2,{relation:e,width:M(e.title),height:D.labelHeight*i.getRows(e.title).length,labelpos:`c`},`id`+_)}),d(l),c.debug(`Graph after layout`,l.nodes());let v=t.node();l.nodes().forEach(function(e){e!==void 0&&l.node(e)!==void 0?(c.warn(`Node `+e+`: `+JSON.stringify(l.node(e))),a.select(`#`+v.id+` #`+e).attr(`transform`,`translate(`+(l.node(e).x-l.node(e).width/2)+`,`+(l.node(e).y+(O[e]?O[e].y:0)-l.node(e).height/2)+` )`),a.select(`#`+v.id+` #`+e).attr(`data-x-shift`,l.node(e).x-l.node(e).width/2),o.querySelectorAll(`#`+v.id+` #`+e+` .divider`).forEach(e=>{let t=e.parentElement,n=0,r=0;t&&(t.parentElement&&(n=t.parentElement.getBBox().width),r=parseInt(t.getAttribute(`data-x-shift`),10),Number.isNaN(r)&&(r=0)),e.setAttribute(`x1`,0-r+8),e.setAttribute(`x2`,n-r-8)})):c.debug(`No Node `+e+`: `+JSON.stringify(l.node(e)))});let b=v.getBBox();l.edges().forEach(function(e){e!==void 0&&l.edge(e)!==void 0&&(c.debug(`Edge `+e.v+` -> `+e.w+`: `+JSON.stringify(l.edge(e))),E(t,l.edge(e),l.edge(e).relation))}),b=v.getBBox();let x={id:n||`root`,label:n||`root`,width:0,height:0};return x.width=b.width+2*D.padding,x.height=b.height+2*D.padding,c.debug(`Doc rendered`,x,l),x},`renderDoc`),P={parser:p,get db(){return new m(1)},renderer:{setConf:k,draw:j},styles:f,init:t(e=>{e.state||={},e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{P as diagram};
1
+ import{E as e,Ht as t,U as n,X as r,Y as i,f as a,pt as o,st as s,zt as c}from"./chunk-NSK5VX7P-CBCyTZMs.js";import{y as l}from"./index-Bgt4sXpW.js";import"./chunk-KBJHAD2P-DZOw7xU6.js";import"./chunk-2GRJ4B5K-HdDf8SI3.js";import{n as u,t as d}from"./dagre-K_PewWfS.js";import{i as f,n as p,t as m}from"./chunk-5RXB4S5H-CcNtpUd7.js";var h=t(e=>e.append(`circle`).attr(`class`,`start-state`).attr(`r`,s().state.sizeUnit).attr(`cx`,s().state.padding+s().state.sizeUnit).attr(`cy`,s().state.padding+s().state.sizeUnit),`drawStartState`),g=t(e=>e.append(`line`).style(`stroke`,`grey`).style(`stroke-dasharray`,`3`).attr(`x1`,s().state.textHeight).attr(`class`,`divider`).attr(`x2`,s().state.textHeight*2).attr(`y1`,0).attr(`y2`,0),`drawDivider`),_=t((e,t)=>{let n=e.append(`text`).attr(`x`,2*s().state.padding).attr(`y`,s().state.textHeight+2*s().state.padding).attr(`font-size`,s().state.fontSize).attr(`class`,`state-title`).text(t.id),r=n.node().getBBox();return e.insert(`rect`,`:first-child`).attr(`x`,s().state.padding).attr(`y`,s().state.padding).attr(`width`,r.width+2*s().state.padding).attr(`height`,r.height+2*s().state.padding).attr(`rx`,s().state.radius),n},`drawSimpleState`),v=t((e,n)=>{let r=t(function(e,t,n){let r=e.append(`tspan`).attr(`x`,2*s().state.padding).text(t);n||r.attr(`dy`,s().state.textHeight)},`addTspan`),i=e.append(`text`).attr(`x`,2*s().state.padding).attr(`y`,s().state.textHeight+1.3*s().state.padding).attr(`font-size`,s().state.fontSize).attr(`class`,`state-title`).text(n.descriptions[0]).node().getBBox(),a=i.height,o=e.append(`text`).attr(`x`,s().state.padding).attr(`y`,a+s().state.padding*.4+s().state.dividerMargin+s().state.textHeight).attr(`class`,`state-description`),c=!0,l=!0;n.descriptions.forEach(function(e){c||(r(o,e,l),l=!1),c=!1});let u=e.append(`line`).attr(`x1`,s().state.padding).attr(`y1`,s().state.padding+a+s().state.dividerMargin/2).attr(`y2`,s().state.padding+a+s().state.dividerMargin/2).attr(`class`,`descr-divider`),d=o.node().getBBox(),f=Math.max(d.width,i.width);return u.attr(`x2`,f+3*s().state.padding),e.insert(`rect`,`:first-child`).attr(`x`,s().state.padding).attr(`y`,s().state.padding).attr(`width`,f+2*s().state.padding).attr(`height`,d.height+a+2*s().state.padding).attr(`rx`,s().state.radius),e},`drawDescrState`),y=t((e,t,n)=>{let r=s().state.padding,i=2*s().state.padding,a=e.node().getBBox(),o=a.width,c=a.x,l=e.append(`text`).attr(`x`,0).attr(`y`,s().state.titleShift).attr(`font-size`,s().state.fontSize).attr(`class`,`state-title`).text(t.id),u=l.node().getBBox().width+i,d=Math.max(u,o);d===o&&(d+=i);let f,p=e.node().getBBox();t.doc,f=c-r,u>o&&(f=(o-d)/2+r),Math.abs(c-p.x)<r&&u>o&&(f=c-(u-o)/2);let m=1-s().state.textHeight;return e.insert(`rect`,`:first-child`).attr(`x`,f).attr(`y`,m).attr(`class`,n?`alt-composit`:`composit`).attr(`width`,d).attr(`height`,p.height+s().state.textHeight+s().state.titleShift+1).attr(`rx`,`0`),l.attr(`x`,f+r),u<=o&&l.attr(`x`,c+(d-i)/2-u/2+r),e.insert(`rect`,`:first-child`).attr(`x`,f).attr(`y`,s().state.titleShift-s().state.textHeight-s().state.padding).attr(`width`,d).attr(`height`,s().state.textHeight*3).attr(`rx`,s().state.radius),e.insert(`rect`,`:first-child`).attr(`x`,f).attr(`y`,s().state.titleShift-s().state.textHeight-s().state.padding).attr(`width`,d).attr(`height`,p.height+3+2*s().state.textHeight).attr(`rx`,s().state.radius),e},`addTitleAndBox`),b=t(e=>(e.append(`circle`).attr(`class`,`end-state-outer`).attr(`r`,s().state.sizeUnit+s().state.miniPadding).attr(`cx`,s().state.padding+s().state.sizeUnit+s().state.miniPadding).attr(`cy`,s().state.padding+s().state.sizeUnit+s().state.miniPadding),e.append(`circle`).attr(`class`,`end-state-inner`).attr(`r`,s().state.sizeUnit).attr(`cx`,s().state.padding+s().state.sizeUnit+2).attr(`cy`,s().state.padding+s().state.sizeUnit+2)),`drawEndState`),x=t((e,t)=>{let n=s().state.forkWidth,r=s().state.forkHeight;if(t.parentId){let e=n;n=r,r=e}return e.append(`rect`).style(`stroke`,`black`).style(`fill`,`black`).attr(`width`,n).attr(`height`,r).attr(`x`,s().state.padding).attr(`y`,s().state.padding)},`drawForkJoinState`),S=t((e,t,n,r)=>{let a=0,o=r.append(`text`);o.style(`text-anchor`,`start`),o.attr(`class`,`noteText`);let c=e.replace(/\r\n/g,`<br/>`);c=c.replace(/\n/g,`<br/>`);let l=c.split(i.lineBreakRegex),u=1.25*s().state.noteMargin;for(let e of l){let r=e.trim();if(r.length>0){let e=o.append(`tspan`);if(e.text(r),u===0){let t=e.node().getBBox();u+=t.height}a+=u,e.attr(`x`,t+s().state.noteMargin),e.attr(`y`,n+a+1.25*s().state.noteMargin)}}return{textWidth:o.node().getBBox().width,textHeight:a}},`_drawLongText`),C=t((e,t)=>{t.attr(`class`,`state-note`);let n=t.append(`rect`).attr(`x`,0).attr(`y`,s().state.padding),{textWidth:r,textHeight:i}=S(e,0,0,t.append(`g`));return n.attr(`height`,i+2*s().state.noteMargin),n.attr(`width`,r+s().state.noteMargin*2),n},`drawNote`),w=t(function(e,t){let n=t.id,r={id:n,label:t.id,width:0,height:0},i=e.append(`g`).attr(`id`,n).attr(`class`,`stateGroup`);t.type===`start`&&h(i),t.type===`end`&&b(i),(t.type===`fork`||t.type===`join`)&&x(i,t),t.type===`note`&&C(t.note.text,i),t.type===`divider`&&g(i),t.type==="default"&&t.descriptions.length===0&&_(i,t),t.type==="default"&&t.descriptions.length>0&&v(i,t);let a=i.node().getBBox();return r.width=a.width+2*s().state.padding,r.height=a.height+2*s().state.padding,r},`drawState`),T=0,E=t(function(n,r,u){let d=t(function(e){switch(e){case m.relationType.AGGREGATION:return`aggregation`;case m.relationType.EXTENSION:return`extension`;case m.relationType.COMPOSITION:return`composition`;case m.relationType.DEPENDENCY:return`dependency`}},`getRelationType`);r.points=r.points.filter(e=>!Number.isNaN(e.y));let f=r.points,p=l().x(function(e){return e.x}).y(function(e){return e.y}).curve(e),h=n.append(`path`).attr(`d`,p(f)).attr(`id`,`edge`+T).attr(`class`,`transition`),g=``;if(s().state.arrowMarkerAbsolute&&(g=o(!0)),h.attr(`marker-end`,`url(`+g+`#`+d(m.relationType.DEPENDENCY)+`End)`),u.title!==void 0){let e=n.append(`g`).attr(`class`,`stateLabel`),{x:t,y:o}=a.calcLabelPosition(r.points),l=i.getRows(u.title),d=0,f=[],p=0,m=0;for(let n=0;n<=l.length;n++){let r=e.append(`text`).attr(`text-anchor`,`middle`).text(l[n]).attr(`x`,t).attr(`y`,o+d),i=r.node().getBBox();p=Math.max(p,i.width),m=Math.min(m,i.x),c.info(i.x,t,o+d),d===0&&(d=r.node().getBBox().height,c.info(`Title height`,d,o)),f.push(r)}let h=d*l.length;if(l.length>1){let e=(l.length-1)*d*.5;f.forEach((t,n)=>t.attr(`y`,o+n*d-e)),h=d*l.length}let g=e.node().getBBox();e.insert(`rect`,`:first-child`).attr(`class`,`box`).attr(`x`,t-p/2-s().state.padding/2).attr(`y`,o-h/2-s().state.padding/2-3.5).attr(`width`,p+s().state.padding).attr(`height`,h+s().state.padding),c.info(g)}T++},`drawEdge`),D,O={},k=t(function(){},`setConf`),A=t(function(e){e.append(`defs`).append(`marker`).attr(`id`,`dependencyEnd`).attr(`refX`,19).attr(`refY`,7).attr(`markerWidth`,20).attr(`markerHeight`,28).attr(`orient`,`auto`).append(`path`).attr(`d`,`M 19,7 L9,13 L14,7 L9,1 Z`)},`insertMarkers`),j=t(function(e,t,i,a){D=s().state;let o=s().securityLevel,l;o===`sandbox`&&(l=n(`#i`+t));let u=n(o===`sandbox`?l.nodes()[0].contentDocument.body:`body`),d=o===`sandbox`?l.nodes()[0].contentDocument:document;c.debug(`Rendering diagram `+e);let f=u.select(`[id='${t}']`);A(f),N(a.db.getRootDoc(),f.append(`g`).attr(`id`,t+`-root`),void 0,!1,u,d,a);let p=D.padding,m=f.node().getBBox(),h=m.width+p*2,g=m.height+p*2,_=h*1.75;r(f,g,_,D.useMaxWidth),f.attr(`viewBox`,`${m.x-D.padding} ${m.y-D.padding} `+h+` `+g)},`draw`),M=t(e=>e?e.length*D.fontSizeFactor:1,`getLabelWidth`),N=t((e,t,n,r,a,o,s)=>{let l=new u({compound:!0,multigraph:!0}),f,p=!0;for(f=0;f<e.length;f++)if(e[f].stmt===`relation`){p=!1;break}n?l.setGraph({rankdir:`LR`,multigraph:!0,compound:!0,ranker:`tight-tree`,ranksep:p?1:D.edgeLengthFactor,nodeSep:p?1:50,isMultiGraph:!0}):l.setGraph({rankdir:`TB`,multigraph:!0,compound:!0,ranksep:p?1:D.edgeLengthFactor,nodeSep:p?1:50,ranker:`tight-tree`,isMultiGraph:!0}),l.setDefaultEdgeLabel(function(){return{}});let m=s.db.getStates(),h=s.db.getRelations(),g=Object.keys(m);for(let e of g){let i=m[e];n&&(i.parentId=n);let c;if(i.doc){let e=t.append(`g`).attr(`id`,i.id).attr(`class`,`stateGroup`);c=N(i.doc,e,i.id,!r,a,o,s);{e=y(e,i,r);let t=e.node().getBBox();c.width=t.width,c.height=t.height+D.padding/2,O[i.id]={y:D.compositTitleSize}}}else c=w(t,i,l);if(i.note){let e=w(t,{descriptions:[],id:i.id+`-note`,note:i.note,type:`note`},l);i.note.position===`left of`?(l.setNode(c.id+`-note`,e),l.setNode(c.id,c)):(l.setNode(c.id,c),l.setNode(c.id+`-note`,e)),l.setParent(c.id,c.id+`-group`),l.setParent(c.id+`-note`,c.id+`-group`)}else l.setNode(c.id,c)}c.debug(`Count=`,l.nodeCount(),l);let _=0;h.forEach(function(e){_++,c.debug(`Setting edge`,e),l.setEdge(e.id1,e.id2,{relation:e,width:M(e.title),height:D.labelHeight*i.getRows(e.title).length,labelpos:`c`},`id`+_)}),d(l),c.debug(`Graph after layout`,l.nodes());let v=t.node();l.nodes().forEach(function(e){e!==void 0&&l.node(e)!==void 0?(c.warn(`Node `+e+`: `+JSON.stringify(l.node(e))),a.select(`#`+v.id+` #`+e).attr(`transform`,`translate(`+(l.node(e).x-l.node(e).width/2)+`,`+(l.node(e).y+(O[e]?O[e].y:0)-l.node(e).height/2)+` )`),a.select(`#`+v.id+` #`+e).attr(`data-x-shift`,l.node(e).x-l.node(e).width/2),o.querySelectorAll(`#`+v.id+` #`+e+` .divider`).forEach(e=>{let t=e.parentElement,n=0,r=0;t&&(t.parentElement&&(n=t.parentElement.getBBox().width),r=parseInt(t.getAttribute(`data-x-shift`),10),Number.isNaN(r)&&(r=0)),e.setAttribute(`x1`,0-r+8),e.setAttribute(`x2`,n-r-8)})):c.debug(`No Node `+e+`: `+JSON.stringify(l.node(e)))});let b=v.getBBox();l.edges().forEach(function(e){e!==void 0&&l.edge(e)!==void 0&&(c.debug(`Edge `+e.v+` -> `+e.w+`: `+JSON.stringify(l.edge(e))),E(t,l.edge(e),l.edge(e).relation))}),b=v.getBBox();let x={id:n||`root`,label:n||`root`,width:0,height:0};return x.width=b.width+2*D.padding,x.height=b.height+2*D.padding,c.debug(`Doc rendered`,x,l),x},`renderDoc`),P={parser:p,get db(){return new m(1)},renderer:{setConf:k,draw:j},styles:f,init:t(e=>{e.state||={},e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{P as diagram};
@@ -1 +1 @@
1
- import{Ht as e}from"./chunk-NSK5VX7P-CBCyTZMs.js";import"./index-Obj05Jex.js";import"./chunk-KBJHAD2P-DZOw7xU6.js";import"./chunk-2GRJ4B5K-HdDf8SI3.js";import{i as t,n,r,t as i}from"./chunk-5RXB4S5H-IPzIfiJ6.js";var a={parser:n,get db(){return new i(2)},renderer:r,styles:t,init:e(e=>{e.state||={},e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};
1
+ import{Ht as e}from"./chunk-NSK5VX7P-CBCyTZMs.js";import"./index-Bgt4sXpW.js";import"./chunk-KBJHAD2P-DZOw7xU6.js";import"./chunk-2GRJ4B5K-HdDf8SI3.js";import{i as t,n,r,t as i}from"./chunk-5RXB4S5H-CcNtpUd7.js";var a={parser:n,get db(){return new i(2)},renderer:r,styles:t,init:e(e=>{e.state||={},e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};
@@ -1,4 +1,4 @@
1
- import{A as e,At as t,B as n,H as r,Ht as i,I as a,It as o,J as s,L as c,Lt as l,M as u,N as d,P as f,R as p,Rt as m,U as h,V as g,Vt as _,j as v,ot as y,q as b,st as x,u as S,z as C,zt as w}from"./chunk-NSK5VX7P-CBCyTZMs.js";import{n as T,t as E}from"./path-fybaL0A-.js";import{v as D}from"./index-Obj05Jex.js";function O(e){return e.innerRadius}function k(e){return e.outerRadius}function A(e){return e.startAngle}function j(e){return e.endAngle}function M(e){return e&&e.padAngle}function ee(e,t,n,r,i,a,o,s){var c=n-e,l=r-t,u=o-i,d=s-a,f=d*c-u*l;if(!(f*f<1e-12))return f=(u*(t-a)-d*(e-i))/f,[e+f*c,t+f*l]}function N(e,t,n,r,i,a,o){var s=e-n,l=t-r,u=(o?a:-a)/g(s*s+l*l),d=u*l,f=-u*s,p=e+d,m=t+f,h=n+d,_=r+f,v=(p+h)/2,y=(m+_)/2,b=h-p,x=_-m,S=b*b+x*x,C=i-a,w=p*_-h*m,T=(x<0?-1:1)*g(c(0,C*C*S-w*w)),E=(w*x-b*T)/S,D=(-w*b-x*T)/S,O=(w*x+b*T)/S,k=(-w*b+x*T)/S,A=E-v,j=D-y,M=O-v,ee=k-y;return A*A+j*j>M*M+ee*ee&&(E=O,D=k),{cx:E,cy:D,x01:-d,y01:-f,x11:E*(i/C-1),y11:D*(i/C-1)}}function te(){var t=O,i=k,o=T(0),s=null,c=A,l=j,m=M,h=null,_=E(y);function y(){var y,b,x=+t.apply(this,arguments),S=+i.apply(this,arguments),w=c.apply(this,arguments)-a,T=l.apply(this,arguments)-a,E=e(T-w),D=T>w;if(h||=y=_(),S<x&&(b=S,S=x,x=b),!(S>1e-12))h.moveTo(0,0);else if(E>r-1e-12)h.moveTo(S*f(w),S*n(w)),h.arc(0,0,S,w,T,!D),x>1e-12&&(h.moveTo(x*f(T),x*n(T)),h.arc(0,0,x,T,w,D));else{var O=w,k=T,A=w,j=T,M=E,te=E,P=m.apply(this,arguments)/2,ne=P>1e-12&&(s?+s.apply(this,arguments):g(x*x+S*S)),F=p(e(S-x)/2,+o.apply(this,arguments)),I=F,L=F,R,z;if(ne>1e-12){var B=u(ne/x*n(P)),V=u(ne/S*n(P));(M-=B*2)>1e-12?(B*=D?1:-1,A+=B,j-=B):(M=0,A=j=(w+T)/2),(te-=V*2)>1e-12?(V*=D?1:-1,O+=V,k-=V):(te=0,O=k=(w+T)/2)}var H=S*f(O),U=S*n(O),W=x*f(j),G=x*n(j);if(F>1e-12){var K=S*f(k),q=S*n(k),re=x*f(A),ie=x*n(A),J;if(E<C){if(J=ee(H,U,re,ie,K,q,W,G)){var Y=H-J[0],X=U-J[1],ae=K-J[0],oe=q-J[1],Z=1/n(v((Y*ae+X*oe)/(g(Y*Y+X*X)*g(ae*ae+oe*oe)))/2),se=g(J[0]*J[0]+J[1]*J[1]);I=p(F,(x-se)/(Z-1)),L=p(F,(S-se)/(Z+1))}else I=L=0}}te>1e-12?L>1e-12?(R=N(re,ie,H,U,S,L,D),z=N(K,q,W,G,S,L,D),h.moveTo(R.cx+R.x01,R.cy+R.y01),L<F?h.arc(R.cx,R.cy,L,d(R.y01,R.x01),d(z.y01,z.x01),!D):(h.arc(R.cx,R.cy,L,d(R.y01,R.x01),d(R.y11,R.x11),!D),h.arc(0,0,S,d(R.cy+R.y11,R.cx+R.x11),d(z.cy+z.y11,z.cx+z.x11),!D),h.arc(z.cx,z.cy,L,d(z.y11,z.x11),d(z.y01,z.x01),!D))):(h.moveTo(H,U),h.arc(0,0,S,O,k,!D)):h.moveTo(H,U),!(x>1e-12)||!(M>1e-12)?h.lineTo(W,G):I>1e-12?(R=N(W,G,K,q,x,-I,D),z=N(H,U,re,ie,x,-I,D),h.lineTo(R.cx+R.x01,R.cy+R.y01),I<F?h.arc(R.cx,R.cy,I,d(R.y01,R.x01),d(z.y01,z.x01),!D):(h.arc(R.cx,R.cy,I,d(R.y01,R.x01),d(R.y11,R.x11),!D),h.arc(0,0,x,d(R.cy+R.y11,R.cx+R.x11),d(z.cy+z.y11,z.cx+z.x11),D),h.arc(z.cx,z.cy,I,d(z.y11,z.x11),d(z.y01,z.x01),!D))):h.arc(0,0,x,j,A,D)}if(h.closePath(),y)return h=null,y+``||null}return y.centroid=function(){var e=(+t.apply(this,arguments)+ +i.apply(this,arguments))/2,r=(+c.apply(this,arguments)+ +l.apply(this,arguments))/2-C/2;return[f(r)*e,n(r)*e]},y.innerRadius=function(e){return arguments.length?(t=typeof e==`function`?e:T(+e),y):t},y.outerRadius=function(e){return arguments.length?(i=typeof e==`function`?e:T(+e),y):i},y.cornerRadius=function(e){return arguments.length?(o=typeof e==`function`?e:T(+e),y):o},y.padRadius=function(e){return arguments.length?(s=e==null?null:typeof e==`function`?e:T(+e),y):s},y.startAngle=function(e){return arguments.length?(c=typeof e==`function`?e:T(+e),y):c},y.endAngle=function(e){return arguments.length?(l=typeof e==`function`?e:T(+e),y):l},y.padAngle=function(e){return arguments.length?(m=typeof e==`function`?e:T(+e),y):m},y.context=function(e){return arguments.length?(h=e??null,y):h},y}var P=(function(){var e=i(function(e,t,n,r){for(n||={},r=e.length;r--;n[e[r]]=t);return n},`o`),t=[6,11,13,14,15,17,19,20,23,24],n=[1,12],r=[1,13],a=[1,14],o=[1,15],s=[1,16],c=[1,19],l=[1,20],u={trace:i(function(){},`trace`),yy:{},symbols_:{error:2,start:3,timeline_header:4,document:5,EOF:6,timeline:7,timeline_lr:8,timeline_td:9,line:10,SPACE:11,statement:12,NEWLINE:13,title:14,acc_title:15,acc_title_value:16,acc_descr:17,acc_descr_value:18,acc_descr_multiline_value:19,section:20,period_statement:21,event_statement:22,period:23,event:24,$accept:0,$end:1},terminals_:{2:`error`,6:`EOF`,7:`timeline`,8:`timeline_lr`,9:`timeline_td`,11:`SPACE`,13:`NEWLINE`,14:`title`,15:`acc_title`,16:`acc_title_value`,17:`acc_descr`,18:`acc_descr_value`,19:`acc_descr_multiline_value`,20:`section`,23:`period`,24:`event`},productions_:[0,[3,3],[4,1],[4,1],[4,1],[5,0],[5,2],[10,2],[10,1],[10,1],[10,1],[12,1],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[21,1],[22,1]],performAction:i(function(e,t,n,r,i,a,o){var s=a.length-1;switch(i){case 1:return a[s-1];case 3:r.setDirection(`LR`);break;case 4:r.setDirection(`TD`);break;case 5:this.$=[];break;case 6:a[s-1].push(a[s]),this.$=a[s-1];break;case 7:case 8:this.$=a[s];break;case 9:case 10:this.$=[];break;case 11:r.getCommonDb().setDiagramTitle(a[s].substr(6)),this.$=a[s].substr(6);break;case 12:this.$=a[s].trim(),r.getCommonDb().setAccTitle(this.$);break;case 13:case 14:this.$=a[s].trim(),r.getCommonDb().setAccDescription(this.$);break;case 15:r.addSection(a[s].substr(8)),this.$=a[s].substr(8);break;case 18:r.addTask(a[s],0,``),this.$=a[s];break;case 19:r.addEvent(a[s].substr(2)),this.$=a[s]}},`anonymous`),table:[{3:1,4:2,7:[1,3],8:[1,4],9:[1,5]},{1:[3]},e(t,[2,5],{5:6}),e(t,[2,2]),e(t,[2,3]),e(t,[2,4]),{6:[1,7],10:8,11:[1,9],12:10,13:[1,11],14:n,15:r,17:a,19:o,20:s,21:17,22:18,23:c,24:l},e(t,[2,10],{1:[2,1]}),e(t,[2,6]),{12:21,14:n,15:r,17:a,19:o,20:s,21:17,22:18,23:c,24:l},e(t,[2,8]),e(t,[2,9]),e(t,[2,11]),{16:[1,22]},{18:[1,23]},e(t,[2,14]),e(t,[2,15]),e(t,[2,16]),e(t,[2,17]),e(t,[2,18]),e(t,[2,19]),e(t,[2,7]),e(t,[2,12]),e(t,[2,13])],defaultActions:{},parseError:i(function(e,t){if(t.recoverable)this.trace(e);else{var n=Error(e);throw n.hash=t,n}},`parseError`),parse:i(function(e){var t=this,n=[0],r=[],a=[null],o=[],s=this.table,c=``,l=0,u=0,d=0,f=2,p=1,m=o.slice.call(arguments,1),h=Object.create(this.lexer),g={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(g.yy[_]=this.yy[_]);h.setInput(e,g.yy),g.yy.lexer=h,g.yy.parser=this,h.yylloc===void 0&&(h.yylloc={});var v=h.yylloc;o.push(v);var y=h.options&&h.options.ranges;this.parseError=typeof g.yy.parseError==`function`?g.yy.parseError:Object.getPrototypeOf(this).parseError;function b(e){n.length-=2*e,a.length-=e,o.length-=e}i(b,`popStack`);function x(){var e=r.pop()||h.lex()||p;return typeof e!=`number`&&(e instanceof Array&&(r=e,e=r.pop()),e=t.symbols_[e]||e),e}i(x,`lex`);for(var S,C,w,T,E,D={},O,k,A,j;;){if(w=n[n.length-1],this.defaultActions[w]?T=this.defaultActions[w]:(S??=x(),T=s[w]&&s[w][S]),T===void 0||!T.length||!T[0]){var M=``;for(O in j=[],s[w])this.terminals_[O]&&O>f&&j.push(`'`+this.terminals_[O]+`'`);M=h.showPosition?`Parse error on line `+(l+1)+`:
1
+ import{A as e,At as t,B as n,H as r,Ht as i,I as a,It as o,J as s,L as c,Lt as l,M as u,N as d,P as f,R as p,Rt as m,U as h,V as g,Vt as _,j as v,ot as y,q as b,st as x,u as S,z as C,zt as w}from"./chunk-NSK5VX7P-CBCyTZMs.js";import{n as T,t as E}from"./path-fybaL0A-.js";import{v as D}from"./index-Bgt4sXpW.js";function O(e){return e.innerRadius}function k(e){return e.outerRadius}function A(e){return e.startAngle}function j(e){return e.endAngle}function M(e){return e&&e.padAngle}function ee(e,t,n,r,i,a,o,s){var c=n-e,l=r-t,u=o-i,d=s-a,f=d*c-u*l;if(!(f*f<1e-12))return f=(u*(t-a)-d*(e-i))/f,[e+f*c,t+f*l]}function N(e,t,n,r,i,a,o){var s=e-n,l=t-r,u=(o?a:-a)/g(s*s+l*l),d=u*l,f=-u*s,p=e+d,m=t+f,h=n+d,_=r+f,v=(p+h)/2,y=(m+_)/2,b=h-p,x=_-m,S=b*b+x*x,C=i-a,w=p*_-h*m,T=(x<0?-1:1)*g(c(0,C*C*S-w*w)),E=(w*x-b*T)/S,D=(-w*b-x*T)/S,O=(w*x+b*T)/S,k=(-w*b+x*T)/S,A=E-v,j=D-y,M=O-v,ee=k-y;return A*A+j*j>M*M+ee*ee&&(E=O,D=k),{cx:E,cy:D,x01:-d,y01:-f,x11:E*(i/C-1),y11:D*(i/C-1)}}function te(){var t=O,i=k,o=T(0),s=null,c=A,l=j,m=M,h=null,_=E(y);function y(){var y,b,x=+t.apply(this,arguments),S=+i.apply(this,arguments),w=c.apply(this,arguments)-a,T=l.apply(this,arguments)-a,E=e(T-w),D=T>w;if(h||=y=_(),S<x&&(b=S,S=x,x=b),!(S>1e-12))h.moveTo(0,0);else if(E>r-1e-12)h.moveTo(S*f(w),S*n(w)),h.arc(0,0,S,w,T,!D),x>1e-12&&(h.moveTo(x*f(T),x*n(T)),h.arc(0,0,x,T,w,D));else{var O=w,k=T,A=w,j=T,M=E,te=E,P=m.apply(this,arguments)/2,ne=P>1e-12&&(s?+s.apply(this,arguments):g(x*x+S*S)),F=p(e(S-x)/2,+o.apply(this,arguments)),I=F,L=F,R,z;if(ne>1e-12){var B=u(ne/x*n(P)),V=u(ne/S*n(P));(M-=B*2)>1e-12?(B*=D?1:-1,A+=B,j-=B):(M=0,A=j=(w+T)/2),(te-=V*2)>1e-12?(V*=D?1:-1,O+=V,k-=V):(te=0,O=k=(w+T)/2)}var H=S*f(O),U=S*n(O),W=x*f(j),G=x*n(j);if(F>1e-12){var K=S*f(k),q=S*n(k),re=x*f(A),ie=x*n(A),J;if(E<C){if(J=ee(H,U,re,ie,K,q,W,G)){var Y=H-J[0],X=U-J[1],ae=K-J[0],oe=q-J[1],Z=1/n(v((Y*ae+X*oe)/(g(Y*Y+X*X)*g(ae*ae+oe*oe)))/2),se=g(J[0]*J[0]+J[1]*J[1]);I=p(F,(x-se)/(Z-1)),L=p(F,(S-se)/(Z+1))}else I=L=0}}te>1e-12?L>1e-12?(R=N(re,ie,H,U,S,L,D),z=N(K,q,W,G,S,L,D),h.moveTo(R.cx+R.x01,R.cy+R.y01),L<F?h.arc(R.cx,R.cy,L,d(R.y01,R.x01),d(z.y01,z.x01),!D):(h.arc(R.cx,R.cy,L,d(R.y01,R.x01),d(R.y11,R.x11),!D),h.arc(0,0,S,d(R.cy+R.y11,R.cx+R.x11),d(z.cy+z.y11,z.cx+z.x11),!D),h.arc(z.cx,z.cy,L,d(z.y11,z.x11),d(z.y01,z.x01),!D))):(h.moveTo(H,U),h.arc(0,0,S,O,k,!D)):h.moveTo(H,U),!(x>1e-12)||!(M>1e-12)?h.lineTo(W,G):I>1e-12?(R=N(W,G,K,q,x,-I,D),z=N(H,U,re,ie,x,-I,D),h.lineTo(R.cx+R.x01,R.cy+R.y01),I<F?h.arc(R.cx,R.cy,I,d(R.y01,R.x01),d(z.y01,z.x01),!D):(h.arc(R.cx,R.cy,I,d(R.y01,R.x01),d(R.y11,R.x11),!D),h.arc(0,0,x,d(R.cy+R.y11,R.cx+R.x11),d(z.cy+z.y11,z.cx+z.x11),D),h.arc(z.cx,z.cy,I,d(z.y11,z.x11),d(z.y01,z.x01),!D))):h.arc(0,0,x,j,A,D)}if(h.closePath(),y)return h=null,y+``||null}return y.centroid=function(){var e=(+t.apply(this,arguments)+ +i.apply(this,arguments))/2,r=(+c.apply(this,arguments)+ +l.apply(this,arguments))/2-C/2;return[f(r)*e,n(r)*e]},y.innerRadius=function(e){return arguments.length?(t=typeof e==`function`?e:T(+e),y):t},y.outerRadius=function(e){return arguments.length?(i=typeof e==`function`?e:T(+e),y):i},y.cornerRadius=function(e){return arguments.length?(o=typeof e==`function`?e:T(+e),y):o},y.padRadius=function(e){return arguments.length?(s=e==null?null:typeof e==`function`?e:T(+e),y):s},y.startAngle=function(e){return arguments.length?(c=typeof e==`function`?e:T(+e),y):c},y.endAngle=function(e){return arguments.length?(l=typeof e==`function`?e:T(+e),y):l},y.padAngle=function(e){return arguments.length?(m=typeof e==`function`?e:T(+e),y):m},y.context=function(e){return arguments.length?(h=e??null,y):h},y}var P=(function(){var e=i(function(e,t,n,r){for(n||={},r=e.length;r--;n[e[r]]=t);return n},`o`),t=[6,11,13,14,15,17,19,20,23,24],n=[1,12],r=[1,13],a=[1,14],o=[1,15],s=[1,16],c=[1,19],l=[1,20],u={trace:i(function(){},`trace`),yy:{},symbols_:{error:2,start:3,timeline_header:4,document:5,EOF:6,timeline:7,timeline_lr:8,timeline_td:9,line:10,SPACE:11,statement:12,NEWLINE:13,title:14,acc_title:15,acc_title_value:16,acc_descr:17,acc_descr_value:18,acc_descr_multiline_value:19,section:20,period_statement:21,event_statement:22,period:23,event:24,$accept:0,$end:1},terminals_:{2:`error`,6:`EOF`,7:`timeline`,8:`timeline_lr`,9:`timeline_td`,11:`SPACE`,13:`NEWLINE`,14:`title`,15:`acc_title`,16:`acc_title_value`,17:`acc_descr`,18:`acc_descr_value`,19:`acc_descr_multiline_value`,20:`section`,23:`period`,24:`event`},productions_:[0,[3,3],[4,1],[4,1],[4,1],[5,0],[5,2],[10,2],[10,1],[10,1],[10,1],[12,1],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[21,1],[22,1]],performAction:i(function(e,t,n,r,i,a,o){var s=a.length-1;switch(i){case 1:return a[s-1];case 3:r.setDirection(`LR`);break;case 4:r.setDirection(`TD`);break;case 5:this.$=[];break;case 6:a[s-1].push(a[s]),this.$=a[s-1];break;case 7:case 8:this.$=a[s];break;case 9:case 10:this.$=[];break;case 11:r.getCommonDb().setDiagramTitle(a[s].substr(6)),this.$=a[s].substr(6);break;case 12:this.$=a[s].trim(),r.getCommonDb().setAccTitle(this.$);break;case 13:case 14:this.$=a[s].trim(),r.getCommonDb().setAccDescription(this.$);break;case 15:r.addSection(a[s].substr(8)),this.$=a[s].substr(8);break;case 18:r.addTask(a[s],0,``),this.$=a[s];break;case 19:r.addEvent(a[s].substr(2)),this.$=a[s]}},`anonymous`),table:[{3:1,4:2,7:[1,3],8:[1,4],9:[1,5]},{1:[3]},e(t,[2,5],{5:6}),e(t,[2,2]),e(t,[2,3]),e(t,[2,4]),{6:[1,7],10:8,11:[1,9],12:10,13:[1,11],14:n,15:r,17:a,19:o,20:s,21:17,22:18,23:c,24:l},e(t,[2,10],{1:[2,1]}),e(t,[2,6]),{12:21,14:n,15:r,17:a,19:o,20:s,21:17,22:18,23:c,24:l},e(t,[2,8]),e(t,[2,9]),e(t,[2,11]),{16:[1,22]},{18:[1,23]},e(t,[2,14]),e(t,[2,15]),e(t,[2,16]),e(t,[2,17]),e(t,[2,18]),e(t,[2,19]),e(t,[2,7]),e(t,[2,12]),e(t,[2,13])],defaultActions:{},parseError:i(function(e,t){if(t.recoverable)this.trace(e);else{var n=Error(e);throw n.hash=t,n}},`parseError`),parse:i(function(e){var t=this,n=[0],r=[],a=[null],o=[],s=this.table,c=``,l=0,u=0,d=0,f=2,p=1,m=o.slice.call(arguments,1),h=Object.create(this.lexer),g={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(g.yy[_]=this.yy[_]);h.setInput(e,g.yy),g.yy.lexer=h,g.yy.parser=this,h.yylloc===void 0&&(h.yylloc={});var v=h.yylloc;o.push(v);var y=h.options&&h.options.ranges;this.parseError=typeof g.yy.parseError==`function`?g.yy.parseError:Object.getPrototypeOf(this).parseError;function b(e){n.length-=2*e,a.length-=e,o.length-=e}i(b,`popStack`);function x(){var e=r.pop()||h.lex()||p;return typeof e!=`number`&&(e instanceof Array&&(r=e,e=r.pop()),e=t.symbols_[e]||e),e}i(x,`lex`);for(var S,C,w,T,E,D={},O,k,A,j;;){if(w=n[n.length-1],this.defaultActions[w]?T=this.defaultActions[w]:(S??=x(),T=s[w]&&s[w][S]),T===void 0||!T.length||!T[0]){var M=``;for(O in j=[],s[w])this.terminals_[O]&&O>f&&j.push(`'`+this.terminals_[O]+`'`);M=h.showPosition?`Parse error on line `+(l+1)+`:
2
2
  `+h.showPosition()+`
3
3
  Expecting `+j.join(`, `)+`, got '`+(this.terminals_[S]||S)+`'`:`Parse error on line `+(l+1)+`: Unexpected `+(S==p?`end of input`:`'`+(this.terminals_[S]||S)+`'`),this.parseError(M,{text:h.match,token:this.terminals_[S]||S,line:h.yylineno,loc:v,expected:j})}if(T[0]instanceof Array&&T.length>1)throw Error(`Parse Error: multiple actions possible at state: `+w+`, token: `+S);switch(T[0]){case 1:n.push(S),a.push(h.yytext),o.push(h.yylloc),n.push(T[1]),S=null,C?(S=C,C=null):(u=h.yyleng,c=h.yytext,l=h.yylineno,v=h.yylloc,d>0&&d--);break;case 2:if(k=this.productions_[T[1]][1],D.$=a[a.length-k],D._$={first_line:o[o.length-(k||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(k||1)].first_column,last_column:o[o.length-1].last_column},y&&(D._$.range=[o[o.length-(k||1)].range[0],o[o.length-1].range[1]]),E=this.performAction.apply(D,[c,u,l,g.yy,T[1],a,o].concat(m)),E!==void 0)return E;k&&(n=n.slice(0,-1*k*2),a=a.slice(0,-1*k),o=o.slice(0,-1*k)),n.push(this.productions_[T[1]][0]),a.push(D.$),o.push(D._$),A=s[n[n.length-2]][n[n.length-1]],n.push(A);break;case 3:return!0}}return!0},`parse`)};u.lexer=(function(){return{EOF:1,parseError:i(function(e,t){if(this.yy.parser)this.yy.parser.parseError(e,t);else throw Error(e)},`parseError`),setInput:i(function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match=``,this.conditionStack=[`INITIAL`],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},`setInput`),input:i(function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},`input`),unput:i(function(e){var t=e.length,n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},`unput`),more:i(function(){return this._more=!0,this},`more`),reject:i(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError(`Lexical error on line `+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
4
4
  `+this.showPosition(),{text:``,token:null,line:this.yylineno});return this},`reject`),less:i(function(e){this.unput(this.match.slice(e))},`less`),pastInput:i(function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?`...`:``)+e.substr(-20).replace(/\n/g,``)},`pastInput`),upcomingInput:i(function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?`...`:``)).replace(/\n/g,``)},`upcomingInput`),showPosition:i(function(){var e=this.pastInput(),t=Array(e.length+1).join(`-`);return e+this.upcomingInput()+`
@@ -4,10 +4,10 @@
4
4
  <meta charset="utf-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1" />
6
6
  <title>fabrika lanes</title>
7
- <script type="module" crossorigin src="/assets/index-Obj05Jex.js"></script>
7
+ <script type="module" crossorigin src="/assets/index-Bgt4sXpW.js"></script>
8
8
  <link rel="modulepreload" crossorigin href="/assets/chunk-NSK5VX7P-CBCyTZMs.js">
9
9
  <link rel="modulepreload" crossorigin href="/assets/path-fybaL0A-.js">
10
- <link rel="stylesheet" crossorigin href="/assets/index-sP-6AD57.css">
10
+ <link rel="stylesheet" crossorigin href="/assets/index-9SkH5NA3.css">
11
11
  </head>
12
12
  <body>
13
13
  <div id="root"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@demlik/tea",
3
- "version": "0.10.0",
3
+ "version": "0.12.0",
4
4
  "description": "TEA-faithful state machine substrate — one package, every host adapter. Core + subs + testing, plus React, Durable Object, Chrome extension, Node, in-memory, work-queue, devtools, and property-testing modules as subpaths.",
5
5
  "keywords": [
6
6
  "tea",