@zombie-mermaid/core 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js ADDED
@@ -0,0 +1,888 @@
1
+ //#region packages/core/src/click-directive.ts
2
+ function e(e, t) {
3
+ let n = e.match(/^click\s+([\w\p{L}-]+)\s+(.*)$/iu);
4
+ if (!n) return;
5
+ let r = n[1], i = n[2].trim(), a = { ...t.get(r) }, o = i.match(/^(?:call|callback)\s+(.+?)\s*$/i);
6
+ if (o) {
7
+ let e = o[1].match(/^(.*?\))\s+"([^"]*)"\s*$/);
8
+ e ? (a.callback = e[1].trim(), a.tooltip = e[2]) : a.callback = o[1].trim(), t.set(r, a);
9
+ return;
10
+ }
11
+ i = i.replace(/^href\s+/i, "");
12
+ let s = [...i.matchAll(/"([^"]*)"/g)].map((e) => e[1]);
13
+ s.length > 0 && (a.href = s[0]), s.length > 1 && (a.tooltip = s[1]);
14
+ let c = i.match(/(_blank|_self|_parent|_top)\s*$/i);
15
+ c && (a.target = c[1].toLowerCase()), (a.href !== void 0 || a.tooltip !== void 0) && t.set(r, a);
16
+ }
17
+ function t(e) {
18
+ if (!e || /[\x00-\x1F\x7F]/.test(e)) return;
19
+ let t = e.trim();
20
+ if (/^[./#?]/.test(t)) return t;
21
+ let n = t.match(/^([a-zA-Z][a-zA-Z0-9+.-]*):/)?.[1];
22
+ return n === void 0 || /^(https?|mailto)$/i.test(n) ? t : void 0;
23
+ }
24
+ //#endregion
25
+ //#region packages/core/src/color-utils.ts
26
+ var n = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/, r = /^rgba?\(\s*([\d.]+%?)\s*[, ]\s*([\d.]+%?)\s*[, ]\s*([\d.]+%?)\s*(?:[,/]\s*([\d.]+%?)\s*)?\)$/i;
27
+ function i(e) {
28
+ let t = a(e);
29
+ return t ? [
30
+ t.r,
31
+ t.g,
32
+ t.b
33
+ ] : null;
34
+ }
35
+ function a(e) {
36
+ let t = n.exec(e.trim());
37
+ if (!t) return null;
38
+ let r = t[1];
39
+ if (r === void 0) return null;
40
+ let i = r;
41
+ return (i.length === 3 || i.length === 4) && (i = i.split("").map((e) => e + e).join("")), {
42
+ r: parseInt(i.slice(0, 2), 16),
43
+ g: parseInt(i.slice(2, 4), 16),
44
+ b: parseInt(i.slice(4, 6), 16),
45
+ a: i.length === 8 ? parseInt(i.slice(6, 8), 16) / 255 : 1
46
+ };
47
+ }
48
+ function o(e) {
49
+ return e.endsWith("%") ? Number(e.slice(0, -1)) / 100 * 255 : Number(e);
50
+ }
51
+ function s(e) {
52
+ return e === void 0 ? 1 : e.endsWith("%") ? Number(e.slice(0, -1)) / 100 : Number(e);
53
+ }
54
+ function c(e) {
55
+ let t = e.trim();
56
+ if (t.toLowerCase() === "transparent") return {
57
+ r: 0,
58
+ g: 0,
59
+ b: 0,
60
+ a: 0
61
+ };
62
+ let n = a(t);
63
+ if (n) return n;
64
+ let i = r.exec(t);
65
+ if (i) {
66
+ let [, e, t, n, r] = i;
67
+ if (e === void 0 || t === void 0 || n === void 0) return null;
68
+ let a = {
69
+ r: o(e),
70
+ g: o(t),
71
+ b: o(n),
72
+ a: s(r)
73
+ };
74
+ return [
75
+ a.r,
76
+ a.g,
77
+ a.b,
78
+ a.a
79
+ ].some((e) => Number.isNaN(e)) ? null : a;
80
+ }
81
+ return null;
82
+ }
83
+ function l(e, t, n, r) {
84
+ let i, a;
85
+ n === void 0 && r === void 0 ? (i = 50, a = 50) : n === void 0 ? (a = r ?? 50, i = 100 - a) : r === void 0 ? (i = n, a = 100 - i) : (i = n, a = r);
86
+ let o = i + a;
87
+ if (o === 0) return null;
88
+ let s = o < 100 ? o / 100 : 1;
89
+ i /= o, a /= o;
90
+ let c = e.a * i + t.a * a, l = (n, r) => c === 0 ? 0 : (n * e.a * i + r * t.a * a) / c;
91
+ return {
92
+ r: l(e.r, t.r),
93
+ g: l(e.g, t.g),
94
+ b: l(e.b, t.b),
95
+ a: c * s
96
+ };
97
+ }
98
+ function u(e, t, n) {
99
+ let r = c(e), i = c(t);
100
+ if (!r || !i) return e;
101
+ let a = l(r, i, n, 100 - n);
102
+ return a ? f(a) : e;
103
+ }
104
+ var d = (e) => Math.min(255, Math.max(0, Math.round(e)));
105
+ function f(e) {
106
+ let t = d(e.r), n = d(e.g), r = d(e.b), i = Math.min(1, Math.max(0, e.a));
107
+ return i >= 1 ? "#" + [
108
+ t,
109
+ n,
110
+ r
111
+ ].map((e) => e.toString(16).padStart(2, "0")).join("") : `rgba(${t}, ${n}, ${r}, ${Number(i.toFixed(3))})`;
112
+ }
113
+ //#endregion
114
+ //#region packages/core/src/statements.ts
115
+ var p = /^[&#](?:#?[0-9]+|#?[xX][0-9a-fA-F]+|[a-zA-Z][a-zA-Z0-9]*);/, m = /* @__PURE__ */ new Set(["&", "#"]);
116
+ function h(e) {
117
+ let t = null;
118
+ for (let n = 0; n < e.length; n++) {
119
+ let r = e[n];
120
+ if (t !== null) {
121
+ r === t && (t = null);
122
+ continue;
123
+ }
124
+ if (r === "\"" || r === "'") {
125
+ t = r;
126
+ continue;
127
+ }
128
+ if (m.has(r)) {
129
+ let t = p.exec(e.slice(n));
130
+ if (t) {
131
+ n += t[0].length - 1;
132
+ continue;
133
+ }
134
+ }
135
+ if (r === "%" && e[n + 1] === "%") return n;
136
+ }
137
+ return -1;
138
+ }
139
+ function g(e) {
140
+ let t = [], n = "", r = null;
141
+ for (let i = 0; i < e.length; i++) {
142
+ let a = e[i];
143
+ if (r !== null) {
144
+ n += a, a === r && (r = null);
145
+ continue;
146
+ }
147
+ if (a === "\"" || a === "'") {
148
+ r = a, n += a;
149
+ continue;
150
+ }
151
+ if (m.has(a)) {
152
+ let t = p.exec(e.slice(i));
153
+ if (t) {
154
+ n += t[0], i += t[0].length - 1;
155
+ continue;
156
+ }
157
+ }
158
+ if (a === ";") {
159
+ t.push(n), n = "";
160
+ continue;
161
+ }
162
+ n += a;
163
+ }
164
+ return t.push(n), t;
165
+ }
166
+ function _(e) {
167
+ let t = [], n = e.split("\n");
168
+ for (let e = 0; e < n.length; e++) {
169
+ let r = n[e].trim(), i = e + 1, a = h(r);
170
+ if (a !== -1 && (r = r.slice(0, a).trim()), r.length === 0) continue;
171
+ let o = [];
172
+ for (let e of g(r)) {
173
+ let t = e.trim();
174
+ t.length !== 0 && o.push({
175
+ text: t,
176
+ line: i
177
+ });
178
+ }
179
+ o.length > 0 && t.push(o);
180
+ }
181
+ return t;
182
+ }
183
+ function v(e) {
184
+ return _(e).flat();
185
+ }
186
+ //#endregion
187
+ //#region packages/core/src/diagram-type.ts
188
+ function ee(e) {
189
+ let t = v(e)[0]?.text.toLowerCase() ?? "";
190
+ return /^xychart(?:-beta)?(?:\s|$)/.test(t) ? "xychart" : /^sequencediagram\s*$/.test(t) ? "sequence" : /^classdiagram\s*$/.test(t) ? "class" : /^erdiagram\s*$/.test(t) ? "er" : "flowchart";
191
+ }
192
+ //#endregion
193
+ //#region packages/core/src/direction.ts
194
+ function y(e) {
195
+ return e === "TD" || e === "TB" || e === "LR" || e === "BT" || e === "RL";
196
+ }
197
+ function te(e) {
198
+ let t = e?.toUpperCase();
199
+ if (t === void 0 || !y(t)) throw Error(`Invalid direction: "${e}"`);
200
+ return t;
201
+ }
202
+ //#endregion
203
+ //#region packages/core/src/direction-override.ts
204
+ function ne(e, t) {
205
+ return t === void 0 || !y(t) ? e : {
206
+ ...e,
207
+ direction: t
208
+ };
209
+ }
210
+ //#endregion
211
+ //#region packages/core/src/init-directive.ts
212
+ var b = /* @__PURE__ */ new Set([
213
+ "linear",
214
+ "basis",
215
+ "natural",
216
+ "step",
217
+ "stepBefore",
218
+ "stepAfter"
219
+ ]), x = {
220
+ theme: "colors come from the caller's bg/fg render options, which are usually CSS variables so a diagram inherits the host page's light/dark. A diagram-supplied theme would hard-code colors that fight it. Mermaid's theme names (default/dark/forest/neutral) also have no equivalent in this renderer's palettes — pass `bg`/`fg`, or a THEMES entry, instead",
221
+ securitylevel: "this renderer emits static SVG and never executes diagram-supplied script, so there is no sandbox to configure",
222
+ defaultrenderer: "ELK is the only layout engine; dagre/elk selection has no effect",
223
+ fontfamily: "use the `font` render option instead",
224
+ htmllabels: "labels are always rendered as SVG text; there is no HTML label mode",
225
+ maxtextsize: "no text-size limit is enforced",
226
+ startonload: "not a browser auto-render integration"
227
+ }, S = /^\s*%%\{\s*(?:init|initialize)\s*:\s*([\s\S]*?)\}%%/i;
228
+ function re(e) {
229
+ return S.test(e);
230
+ }
231
+ function ie(e) {
232
+ let t = "", n = null;
233
+ for (let r = 0; r < e.length; r++) {
234
+ let i = e[r];
235
+ if (n !== null) {
236
+ if (i === "\\" && r + 1 < e.length) {
237
+ let n = e[r + 1];
238
+ t += n === "'" ? "'" : `\\${n}`, r++;
239
+ } else i === n ? (n = null, t += "\"") : t += i === "\"" ? "\\\"" : i;
240
+ continue;
241
+ }
242
+ if (i === "\"" || i === "'") {
243
+ n = i, t += "\"";
244
+ continue;
245
+ }
246
+ if (/[A-Za-z_$]/.test(i)) {
247
+ let n = r;
248
+ for (; n < e.length && /[\w$-]/.test(e[n]);) n++;
249
+ let i = e.slice(r, n), a = n;
250
+ for (; a < e.length && /\s/.test(e[a]);) a++;
251
+ if (e[a] === ":") {
252
+ t += `"${i}"`, r = n - 1;
253
+ continue;
254
+ }
255
+ t += /^(true|false|null)$/i.test(i) ? i.toLowerCase() : `"${i}"`, r = n - 1;
256
+ continue;
257
+ }
258
+ t += i;
259
+ }
260
+ return t;
261
+ }
262
+ function C(e) {
263
+ let t = e.match(S);
264
+ if (!t) return;
265
+ let n;
266
+ try {
267
+ n = JSON.parse(ie(t[1]));
268
+ } catch {
269
+ return;
270
+ }
271
+ if (typeof n != "object" || !n) return;
272
+ let r = { ignored: [] }, i = { ...n };
273
+ for (let [e, t] of Object.entries(i)) {
274
+ let n = e.toLowerCase();
275
+ if (n === "theme" && typeof t == "string") {
276
+ r.theme = t, r.ignored.push(e);
277
+ continue;
278
+ }
279
+ if (n === "flowchart" && typeof t == "object" && t) {
280
+ let e = { ...t };
281
+ for (let [t, n] of Object.entries(e)) {
282
+ if (t.toLowerCase() === "curve" && typeof n == "string") {
283
+ b.has(n) && (r.curve = n);
284
+ continue;
285
+ }
286
+ t.toLowerCase() in x && r.ignored.push(t);
287
+ }
288
+ continue;
289
+ }
290
+ n in x && r.ignored.push(e);
291
+ }
292
+ return r;
293
+ }
294
+ function w(e) {
295
+ let t = { ignored: [] };
296
+ for (let n of e) {
297
+ let e = C(n);
298
+ e && (e.theme !== void 0 && (t.theme = e.theme), e.curve !== void 0 && (t.curve = e.curve), t.ignored.push(...e.ignored));
299
+ }
300
+ return t;
301
+ }
302
+ function T(e, t) {
303
+ return t.curve === void 0 || e.curve !== void 0 ? e : {
304
+ ...e,
305
+ curve: t.curve
306
+ };
307
+ }
308
+ function ae(e) {
309
+ return [...new Set(e.ignored)].map((e) => `${e}: ${x[e.toLowerCase()] ?? "not supported"}`);
310
+ }
311
+ //#endregion
312
+ //#region packages/core/src/text-metrics.ts
313
+ var E = {
314
+ " ": .521,
315
+ "!": .533,
316
+ "\"": .863,
317
+ "#": 1.173,
318
+ $: 1.188,
319
+ "%": 1.818,
320
+ "&": 1.193,
321
+ "'": .555,
322
+ "(": .675,
323
+ ")": .675,
324
+ "*": .928,
325
+ "+": 1.225,
326
+ ",": .534,
327
+ "-": .852,
328
+ ".": .534,
329
+ "/": .667,
330
+ 0: 1.168,
331
+ 1: .753,
332
+ 2: 1.129,
333
+ 3: 1.144,
334
+ 4: 1.196,
335
+ 5: 1.099,
336
+ 6: 1.148,
337
+ 7: 1.048,
338
+ 8: 1.146,
339
+ 9: 1.148,
340
+ ":": .534,
341
+ ";": .559,
342
+ "<": 1.225,
343
+ "=": 1.225,
344
+ ">": 1.225,
345
+ "?": .947,
346
+ "@": 1.789,
347
+ A: 1.278,
348
+ B: 1.212,
349
+ C: 1.353,
350
+ D: 1.336,
351
+ E: 1.113,
352
+ F: 1.093,
353
+ G: 1.382,
354
+ H: 1.376,
355
+ I: .497,
356
+ J: 1.057,
357
+ K: 1.244,
358
+ L: 1.047,
359
+ M: 1.673,
360
+ N: 1.395,
361
+ O: 1.416,
362
+ P: 1.183,
363
+ Q: 1.416,
364
+ R: 1.192,
365
+ S: 1.188,
366
+ T: 1.195,
367
+ U: 1.378,
368
+ V: 1.278,
369
+ W: 1.825,
370
+ X: 1.263,
371
+ Y: 1.257,
372
+ Z: 1.165,
373
+ "[": .675,
374
+ "\\": .667,
375
+ "]": .675,
376
+ "^": .873,
377
+ _: .845,
378
+ "`": .598,
379
+ a: 1.04,
380
+ b: 1.134,
381
+ c: 1.058,
382
+ d: 1.134,
383
+ e: 1.08,
384
+ f: .685,
385
+ g: 1.136,
386
+ h: 1.095,
387
+ i: .448,
388
+ j: .448,
389
+ k: 1.016,
390
+ l: .448,
391
+ m: 1.622,
392
+ n: 1.094,
393
+ o: 1.11,
394
+ p: 1.134,
395
+ q: 1.134,
396
+ r: .697,
397
+ s: .977,
398
+ t: .606,
399
+ u: 1.095,
400
+ v: 1.041,
401
+ w: 1.515,
402
+ x: 1.011,
403
+ y: 1.041,
404
+ z: 1.023,
405
+ "{": .789,
406
+ "|": .616,
407
+ "}": .789,
408
+ "~": 1.225
409
+ };
410
+ function oe(e) {
411
+ return Object.hasOwn(E, e);
412
+ }
413
+ var se = /* @__PURE__ */ new Set([
414
+ "i",
415
+ "l",
416
+ "t",
417
+ "f",
418
+ "j",
419
+ "I",
420
+ "1",
421
+ "!",
422
+ "|",
423
+ ".",
424
+ ",",
425
+ ":",
426
+ ";",
427
+ "'"
428
+ ]), ce = /* @__PURE__ */ new Set([
429
+ "W",
430
+ "M",
431
+ "w",
432
+ "m",
433
+ "@",
434
+ "%"
435
+ ]), le = /* @__PURE__ */ new Set(["W", "M"]), ue = /* @__PURE__ */ new Set([
436
+ "(",
437
+ ")",
438
+ "[",
439
+ "]",
440
+ "{",
441
+ "}",
442
+ "/",
443
+ "\\",
444
+ "-",
445
+ "\"",
446
+ "`"
447
+ ]);
448
+ function de(e) {
449
+ return e >= 768 && e <= 879 || e >= 6832 && e <= 6911 || e >= 7616 && e <= 7679 || e >= 8400 && e <= 8447 || e >= 65056 && e <= 65071;
450
+ }
451
+ function D(e) {
452
+ return e >= 4352 && e <= 4447 || e >= 11904 && e <= 12031 || e >= 12032 && e <= 12255 || e >= 12288 && e <= 12351 || e >= 12352 && e <= 12447 || e >= 12448 && e <= 12543 || e >= 12544 && e <= 12591 || e >= 12592 && e <= 12687 || e >= 12688 && e <= 12799 || e >= 12800 && e <= 13311 || e >= 13312 && e <= 19903 || e >= 19968 && e <= 40959 || e >= 44032 && e <= 55215 || e >= 63744 && e <= 64255 || e >= 65280 && e <= 65376 || e >= 65504 && e <= 65510 || e >= 131072;
453
+ }
454
+ var fe = /\p{Emoji_Presentation}/u, O = /\p{Extended_Pictographic}/u;
455
+ function k(e) {
456
+ return e >= 9632 && e <= 9727;
457
+ }
458
+ function A(e) {
459
+ return e >= 8596 && e <= 8601 || e === 8617 || e === 8618;
460
+ }
461
+ function j(e) {
462
+ if (fe.test(e)) return !0;
463
+ let t = e.codePointAt(0);
464
+ return t !== void 0 && k(t) || t !== void 0 && A(t) ? !1 : O.test(e);
465
+ }
466
+ function M(e) {
467
+ let t = e.codePointAt(0);
468
+ return t === void 0 ? !1 : D(t) || j(e);
469
+ }
470
+ function N(e) {
471
+ let t = e.codePointAt(0);
472
+ if (t === void 0) return 0;
473
+ if (Object.hasOwn(E, e)) {
474
+ let t = E[e];
475
+ /* v8 ignore else */
476
+ if (t !== void 0) return t;
477
+ }
478
+ if (de(t)) return 0;
479
+ if (D(t) || j(e)) return 2;
480
+ let n = e.normalize("NFD")[0];
481
+ if (n !== void 0 && n !== e) {
482
+ let e = E[n];
483
+ if (e !== void 0) return e;
484
+ }
485
+ return e === " " ? .3 : le.has(e) ? 1.5 : ce.has(e) ? 1.2 : se.has(e) ? .4 : ue.has(e) ? .5 : e === "r" ? .8 : t >= 65 && t <= 90 ? 1.2 : 1;
486
+ }
487
+ var P = .6, F = !1;
488
+ function I(e) {
489
+ return /mono|consol|menlo|courier|\bcode\b/i.test(e);
490
+ }
491
+ function L(e) {
492
+ F = e;
493
+ }
494
+ function R(e, t, n) {
495
+ let r = t * .15;
496
+ if (F) {
497
+ let n = 0;
498
+ for (let t of e) n += 1;
499
+ return n * t * P + r;
500
+ }
501
+ let i = n >= 600 ? .6 : n >= 500 ? .57 : .54, a = 0;
502
+ for (let t of e) a += N(t);
503
+ return a * t * i + r;
504
+ }
505
+ var z = 1.3;
506
+ function B(e, t, n) {
507
+ let r = e.split("\n"), i = t * z, a = 0;
508
+ for (let e of r) {
509
+ let r = R(e.replace(/<\/?(?:b|strong|i|em|u|s|del)\s*>/gi, ""), t, n);
510
+ r > a && (a = r);
511
+ }
512
+ return {
513
+ width: a,
514
+ height: r.length * i,
515
+ lines: r,
516
+ lineHeight: i
517
+ };
518
+ }
519
+ //#endregion
520
+ //#region packages/core/src/multiline-utils.ts
521
+ function V(e) {
522
+ let t = e.startsWith("\"") && e.endsWith("\"") ? e.slice(1, -1) : e;
523
+ return (t.length >= 2 && t.startsWith("`") && t.endsWith("`") ? t.slice(1, -1) : t).replace(/<br\s*\/?>/gi, "\n").replace(/\\n/g, "\n").replace(/<\/?(?:sub|sup|small|mark)\s*>/gi, "").replace(/\*\*(.+?)\*\*/g, "<b>$1</b>").replace(/(?<!\*)\*([^\s*](?:[^*]*[^\s*])?)\*(?!\*)/g, "<i>$1</i>").replace(/~~(.+?)~~/g, "<s>$1</s>");
524
+ }
525
+ function pe(e) {
526
+ return e.replace(/<\/?(?:b|strong|i|em|u|s|del)\s*>/gi, "");
527
+ }
528
+ function H(e) {
529
+ return e.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#39;");
530
+ }
531
+ function U(e) {
532
+ return e.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
533
+ }
534
+ var W = /<(\/)?(?:(b|strong)|(i|em)|(u)|(s|del))\s*>/gi;
535
+ function me(e) {
536
+ let t = [], n = !1, r = !1, i = !1, a = !1, o = 0;
537
+ W.lastIndex = 0;
538
+ let s;
539
+ for (; (s = W.exec(e)) !== null;) {
540
+ s.index > o && t.push({
541
+ text: e.slice(o, s.index),
542
+ bold: n,
543
+ italic: r,
544
+ underline: i,
545
+ strikethrough: a
546
+ }), o = s.index + s[0].length;
547
+ let c = !!s[1];
548
+ s[2] ? n = !c : s[3] ? r = !c : s[4] ? i = !c : s[5] && (a = !c);
549
+ }
550
+ return o < e.length && t.push({
551
+ text: e.slice(o),
552
+ bold: n,
553
+ italic: r,
554
+ underline: i,
555
+ strikethrough: a
556
+ }), t;
557
+ }
558
+ var he = /<\/?(?:b|strong|i|em|u|s|del)\s*>/i;
559
+ function G(e) {
560
+ if (!he.test(e)) return H(e);
561
+ let t = me(e);
562
+ return t.length === 0 ? "" : t.every((e) => !e.bold && !e.italic && !e.underline && !e.strikethrough) ? t.map((e) => H(e.text)).join("") : t.map((e) => {
563
+ let t = H(e.text);
564
+ if (!e.bold && !e.italic && !e.underline && !e.strikethrough) return t;
565
+ let n = [];
566
+ e.bold && n.push("font-weight=\"bold\""), e.italic && n.push("font-style=\"italic\"");
567
+ let r = [];
568
+ return e.underline && r.push("underline"), e.strikethrough && r.push("line-through"), r.length && n.push(`text-decoration="${r.join(" ")}"`), `<tspan ${n.join(" ")}>${t}</tspan>`;
569
+ }).join("");
570
+ }
571
+ function K(e, t, n, r, i, a = .35) {
572
+ let o = e.split("\n");
573
+ if (o.length === 1) return `<text x="${t}" y="${n}" ${i} dy="${r * a}">${G(e)}</text>`;
574
+ let s = r * z, c = -((o.length - 1) / 2) * s + r * a;
575
+ return `<text x="${t}" y="${n}" ${i}>${o.map((e, n) => `<tspan x="${t}" dy="${n === 0 ? c : s}">${G(e)}</tspan>`).join("")}</text>`;
576
+ }
577
+ function ge(e, t, n, r, i, a, o, s, c) {
578
+ let l = r + o * 2, u = i + o * 2;
579
+ return `${`<rect x="${t - l / 2}" y="${n - u / 2}" width="${l}" height="${u}" ${c} />`}\n${K(e, t, n, a, s)}`;
580
+ }
581
+ //#endregion
582
+ //#region packages/core/src/style-directives.ts
583
+ function q(e) {
584
+ let t = e.replace(/;\s*$/, ""), n = {};
585
+ for (let e of t.split(",")) {
586
+ let t = e.indexOf(":");
587
+ if (t > 0) {
588
+ let r = e.slice(0, t).trim(), i = e.slice(t + 1).trim();
589
+ r && i && (n[r] = i);
590
+ }
591
+ }
592
+ return n;
593
+ }
594
+ function _e(e, t) {
595
+ let n = e.match(/^classDef\s+([\w,-]+)\s+(.+)$/);
596
+ if (!n) return !1;
597
+ let r = q(n[2]);
598
+ for (let e of n[1].split(",")) {
599
+ let n = e.trim();
600
+ n && t.classDefs.set(n, r);
601
+ }
602
+ return !0;
603
+ }
604
+ function ve(e, t) {
605
+ let n = e.match(/^class\s+([\w,-]+)\s+([\w-]+)\s*;?\s*$/);
606
+ if (!n) return !1;
607
+ let r = n[2];
608
+ for (let e of n[1].split(",")) t.classAssignments.set(e.trim(), r);
609
+ return !0;
610
+ }
611
+ function ye(e, t) {
612
+ let n = e.match(/^cssClass\s+"([^"]*)"\s+([\w-]+)\s*;?\s*$/);
613
+ if (!n) return !1;
614
+ let r = n[2];
615
+ for (let e of n[1].split(",")) {
616
+ let n = e.trim();
617
+ n && t.classAssignments.set(n, r);
618
+ }
619
+ return !0;
620
+ }
621
+ function be(e, t) {
622
+ let n = e.match(/^style\s+([\w,-]+)\s+(.+)$/);
623
+ if (!n) return !1;
624
+ let r = q(n[2]);
625
+ for (let e of n[1].split(",").map((e) => e.trim())) t.nodeStyles.set(e, {
626
+ ...t.nodeStyles.get(e),
627
+ ...r
628
+ });
629
+ return !0;
630
+ }
631
+ function xe(e) {
632
+ let t = e.match(/^(.+?):::([\w][\w-]*)$/);
633
+ return t ? {
634
+ id: t[1],
635
+ className: t[2]
636
+ } : { id: e };
637
+ }
638
+ function Se(e, t) {
639
+ let n, r = t.classDefs.get("default");
640
+ r && (n = { ...r });
641
+ let i = t.classAssignments.get(e);
642
+ if (i) {
643
+ let e = t.classDefs.get(i);
644
+ e && (n = n ? {
645
+ ...n,
646
+ ...e
647
+ } : { ...e });
648
+ }
649
+ let a = t.nodeStyles.get(e);
650
+ return a && (n = n ? {
651
+ ...n,
652
+ ...a
653
+ } : { ...a }), n;
654
+ }
655
+ function Ce(e) {
656
+ if (e) return /^-?[a-zA-Z_][a-zA-Z0-9_-]*$/.test(e) ? e : void 0;
657
+ }
658
+ //#endregion
659
+ //#region packages/core/src/generated/mono-font-subset.ts
660
+ var we = "JetBrains Mono NL", Te = "@font-face {\n font-family: 'JetBrains Mono NL';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff2;base64,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) format('woff2');\n unicode-range: U+0020-007E, U+00A0-00FF;\n}", Ee = {
661
+ bg: "#FFFFFF",
662
+ fg: "#27272A"
663
+ }, J = {
664
+ text: 100,
665
+ textSec: 60,
666
+ textMuted: 40,
667
+ textFaint: 25,
668
+ line: 50,
669
+ arrow: 85,
670
+ nodeFill: 3,
671
+ nodeStroke: 20,
672
+ groupHeader: 5,
673
+ innerStroke: 12,
674
+ keyBadge: 10
675
+ }, De = {
676
+ "zinc-light": {
677
+ bg: "#FFFFFF",
678
+ fg: "#27272A"
679
+ },
680
+ "zinc-dark": {
681
+ bg: "#18181B",
682
+ fg: "#FAFAFA"
683
+ },
684
+ "tokyo-night": {
685
+ bg: "#1a1b26",
686
+ fg: "#a9b1d6",
687
+ line: "#3d59a1",
688
+ accent: "#7aa2f7",
689
+ muted: "#565f89"
690
+ },
691
+ "tokyo-night-storm": {
692
+ bg: "#24283b",
693
+ fg: "#a9b1d6",
694
+ line: "#3d59a1",
695
+ accent: "#7aa2f7",
696
+ muted: "#565f89"
697
+ },
698
+ "tokyo-night-light": {
699
+ bg: "#d5d6db",
700
+ fg: "#343b58",
701
+ line: "#34548a",
702
+ accent: "#34548a",
703
+ muted: "#9699a3"
704
+ },
705
+ "catppuccin-mocha": {
706
+ bg: "#1e1e2e",
707
+ fg: "#cdd6f4",
708
+ line: "#585b70",
709
+ accent: "#cba6f7",
710
+ muted: "#6c7086"
711
+ },
712
+ "catppuccin-latte": {
713
+ bg: "#eff1f5",
714
+ fg: "#4c4f69",
715
+ line: "#9ca0b0",
716
+ accent: "#8839ef",
717
+ muted: "#9ca0b0"
718
+ },
719
+ nord: {
720
+ bg: "#2e3440",
721
+ fg: "#d8dee9",
722
+ line: "#4c566a",
723
+ accent: "#88c0d0",
724
+ muted: "#616e88"
725
+ },
726
+ "nord-light": {
727
+ bg: "#eceff4",
728
+ fg: "#2e3440",
729
+ line: "#aab1c0",
730
+ accent: "#5e81ac",
731
+ muted: "#7b88a1"
732
+ },
733
+ dracula: {
734
+ bg: "#282a36",
735
+ fg: "#f8f8f2",
736
+ line: "#6272a4",
737
+ accent: "#bd93f9",
738
+ muted: "#6272a4"
739
+ },
740
+ "github-light": {
741
+ bg: "#ffffff",
742
+ fg: "#1f2328",
743
+ line: "#d1d9e0",
744
+ accent: "#0969da",
745
+ muted: "#59636e"
746
+ },
747
+ "github-dark": {
748
+ bg: "#0d1117",
749
+ fg: "#e6edf3",
750
+ line: "#3d444d",
751
+ accent: "#4493f8",
752
+ muted: "#9198a1"
753
+ },
754
+ "solarized-light": {
755
+ bg: "#fdf6e3",
756
+ fg: "#657b83",
757
+ line: "#93a1a1",
758
+ accent: "#268bd2",
759
+ muted: "#93a1a1"
760
+ },
761
+ "solarized-dark": {
762
+ bg: "#002b36",
763
+ fg: "#839496",
764
+ line: "#586e75",
765
+ accent: "#268bd2",
766
+ muted: "#586e75"
767
+ },
768
+ "one-dark": {
769
+ bg: "#282c34",
770
+ fg: "#abb2bf",
771
+ line: "#4b5263",
772
+ accent: "#c678dd",
773
+ muted: "#5c6370"
774
+ }
775
+ };
776
+ function Oe(e) {
777
+ let t = e.colors ?? {}, n = e.type === "dark", r = (t) => e.tokenColors?.find((e) => Array.isArray(e.scope) ? e.scope.includes(t) : e.scope === t)?.settings?.foreground;
778
+ return {
779
+ bg: t["editor.background"] ?? (n ? "#1e1e1e" : "#ffffff"),
780
+ fg: t["editor.foreground"] ?? (n ? "#d4d4d4" : "#333333"),
781
+ line: t["editorLineNumber.foreground"] ?? void 0,
782
+ accent: t.focusBorder ?? r("keyword") ?? void 0,
783
+ muted: r("comment") ?? t["editorLineNumber.foreground"] ?? void 0,
784
+ surface: t["editor.selectionBackground"] ?? void 0,
785
+ border: t["editorWidget.border"] ?? void 0
786
+ };
787
+ }
788
+ var ke = /[<>{};]/;
789
+ function Ae(e) {
790
+ let t = e.trim();
791
+ if (!t.startsWith("var(") || !t.endsWith(")") || ke.test(t)) return !1;
792
+ let n = 0;
793
+ for (let e of t) if (e === "(") n++;
794
+ else if (e === ")" && (n--, n < 0)) return !1;
795
+ return n === 0;
796
+ }
797
+ var je = /* @__PURE__ */ new Set([
798
+ "sans-serif",
799
+ "serif",
800
+ "monospace",
801
+ "system-ui",
802
+ "ui-sans-serif",
803
+ "ui-serif",
804
+ "ui-monospace",
805
+ "ui-rounded",
806
+ "cursive",
807
+ "fantasy",
808
+ "math",
809
+ "emoji",
810
+ "fangsong"
811
+ ]);
812
+ function Y(e) {
813
+ let t = e.trim();
814
+ return t.includes(",") ? !0 : je.has(t.toLowerCase());
815
+ }
816
+ function X(e) {
817
+ return e === void 0 || e.trim() === "" ? "<style>" : `<style nonce="${U(e)}">`;
818
+ }
819
+ function Me(e, t, n) {
820
+ let r = Ae(e), i = r ? e.trim() : e.replace(/[<>{};'"]/g, ""), a = r || Y(e) ? [] : [`@import url('https://fonts.googleapis.com/css2?family=${encodeURIComponent(i)}:wght@400;500;600;700&amp;display=swap');`], o = `
821
+ /* Derived from --bg and --fg (overridable via --line, --accent, etc.) */
822
+ --_text: var(--fg);
823
+ --_text-sec: var(--muted, color-mix(in srgb, var(--fg) ${J.textSec}%, var(--bg)));
824
+ --_text-muted: var(--muted, color-mix(in srgb, var(--fg) ${J.textMuted}%, var(--bg)));
825
+ --_text-faint: color-mix(in srgb, var(--fg) ${J.textFaint}%, var(--bg));
826
+ --_line: var(--line, color-mix(in srgb, var(--fg) ${J.line}%, var(--bg)));
827
+ --_arrow: var(--accent, color-mix(in srgb, var(--fg) ${J.arrow}%, var(--bg)));
828
+ --_node-fill: var(--surface, color-mix(in srgb, var(--fg) ${J.nodeFill}%, var(--bg)));
829
+ --_node-stroke: var(--border, color-mix(in srgb, var(--fg) ${J.nodeStroke}%, var(--bg)));
830
+ --_group-fill: var(--bg);
831
+ --_group-hdr: color-mix(in srgb, var(--fg) ${J.groupHeader}%, var(--bg));
832
+ --_inner-stroke: color-mix(in srgb, var(--fg) ${J.innerStroke}%, var(--bg));
833
+ --_key-badge: color-mix(in srgb, var(--fg) ${J.keyBadge}%, var(--bg));`;
834
+ return [
835
+ X(n),
836
+ ...a.length > 0 ? [` ${a.join("\n ")}`] : [],
837
+ ...t ? [` ${Te}`] : [],
838
+ ` text { font-family: ${r ? i : `'${i}'`}, system-ui, sans-serif; }`,
839
+ ...t ? [` .mono { font-family: '${we}', 'SF Mono', 'Fira Code', ui-monospace, monospace; }`] : [],
840
+ ` svg {${o}`,
841
+ " }",
842
+ "</style>"
843
+ ].join("\n");
844
+ }
845
+ function Ne(e, t, n) {
846
+ return (.299 * e + .587 * t + .114 * n) / 255;
847
+ }
848
+ function Pe(e, t) {
849
+ if (!e) return t;
850
+ let n = i(e);
851
+ return n ? Ne(...n) > .5 ? "#000000" : "#FFFFFF" : t;
852
+ }
853
+ var Z = 0;
854
+ function Q() {
855
+ return Z += 1, `zm-title-${Z}`;
856
+ }
857
+ function Fe() {
858
+ Z = 0;
859
+ }
860
+ function $(e, t) {
861
+ return `${[
862
+ `--bg:${e.bg}`,
863
+ `--fg:${e.fg}`,
864
+ e.line ? `--line:${e.line}` : "",
865
+ e.accent ? `--accent:${e.accent}` : "",
866
+ e.muted ? `--muted:${e.muted}` : "",
867
+ e.surface ? `--surface:${e.surface}` : "",
868
+ e.border ? `--border:${e.border}` : ""
869
+ ].filter(Boolean).join(";")}${t ? "" : ";background:var(--bg)"}`;
870
+ }
871
+ function Ie(e, t, n, r, i, a, o, s = !0) {
872
+ let c = s ? ` style="${$(n, r)}"` : "", l = "", u = "";
873
+ if (o) {
874
+ if (i) {
875
+ let e = Q();
876
+ l = ` aria-labelledby="${e}"`, u = `\n <title id="${e}">${H(i)}</title>`;
877
+ }
878
+ } else if (a) l = " aria-hidden=\"true\"";
879
+ else if (l = " role=\"img\"", i) {
880
+ let e = Q();
881
+ l += ` aria-labelledby="${e}"`, u = `\n <title id="${e}">${H(i)}</title>`;
882
+ }
883
+ return `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${e} ${t}" width="${e}" height="${t}"${l}${c}>` + u;
884
+ }
885
+ //#endregion
886
+ export { Ee as DEFAULTS, z as LINE_HEIGHT_RATIO, J as MIX, De as THEMES, Fe as __resetSvgTitleIdCounterForTests, e as applyClickStatement, T as applyInitConfig, Me as buildStyleBlock, ae as describeIgnored, ee as detectDiagramType, U as escapeAttr, H as escapeXml, w as extractInitConfig, f as formatCssColor, Oe as fromShikiTheme, N as getCharWidth, Pe as getReadableTextColor, oe as hasMeasuredAdvance, y as isDirection, re as isInitDirective, I as isMonospaceFont, M as isWideChar, B as measureMultilineText, R as measureTextWidth, u as mixHexColors, l as mixSrgb, V as normalizeBrTags, c as parseCssColor, i as parseHexColor, a as parseHexRgba, C as parseInitDirective, q as parseStyleProps, K as renderMultilineText, ge as renderMultilineTextWithBackground, Se as resolveNodeStyle, t as safeHref, Ce as sanitizeClassName, L as setMonospaceMetrics, xe as splitClassShorthand, v as splitStatements, _ as splitStatementsByLine, pe as stripFormattingTags, X as styleOpenTag, Ie as svgOpenTag, $ as themeStyleDeclarations, te as toDirection, ve as tryApplyClassAssignment, _e as tryApplyClassDef, ye as tryApplyCssClass, be as tryApplyStyleStatement, ne as withDirectionOverride };
887
+
888
+ //# sourceMappingURL=index.js.map