@diagrammo/dgmo 0.88.0 → 0.89.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/README.md +4 -2
  2. package/dist/advanced.d.ts +41 -11
  3. package/dist/advanced.js +107 -105
  4. package/dist/{analyzer-R5UBTRO2.js → analyzer-7ZGAZIE6.js} +2 -2
  5. package/dist/block.js +25 -25
  6. package/dist/{chart-meta-PbgpGwYo.d.ts → chart-meta-Bev5Ebjr.d.ts} +1 -1
  7. package/dist/chart-meta.d.ts +2 -2
  8. package/dist/chart-meta.js +11 -11
  9. package/dist/{chart-types-Db_EGf1o.d.ts → chart-types-Bf8C5QQW.d.ts} +1 -1
  10. package/dist/{charts-d3-3BZRSZV6.js → charts-d3-KEQSUWKP.js} +10 -10
  11. package/dist/{chunk-LJFXC3IP.js → chunk-2GM7N5TV.js} +10 -10
  12. package/dist/{chunk-H2GEIFUF.js → chunk-3AQJNY65.js} +8 -8
  13. package/dist/{chunk-WXPBP4IT.js → chunk-44FTCIRI.js} +9 -9
  14. package/dist/{chunk-WZ23JJ7U.js → chunk-4AJKOUBO.js} +11 -11
  15. package/dist/{chunk-YK4N6TBN.js → chunk-4R6OMKXB.js} +7 -7
  16. package/dist/{chunk-HEYGGSNQ.js → chunk-5LE2CTLS.js} +2 -2
  17. package/dist/{chunk-MVCPO6LI.js → chunk-7C2RAGPT.js} +31 -21
  18. package/dist/{chunk-VJ2KROJ5.js → chunk-7KPHRTND.js} +1 -1
  19. package/dist/{chunk-LHL6HDUL.js → chunk-7SX4IY6T.js} +84 -12
  20. package/dist/{chunk-LSQGJN5H.js → chunk-7W4XLIVH.js} +15 -15
  21. package/dist/{chunk-XUDGZJTJ.js → chunk-AZ24RI5L.js} +6 -6
  22. package/dist/{chunk-UMRZPRAN.js → chunk-BB6QKWHZ.js} +15 -15
  23. package/dist/{chunk-6I5UN4FD.js → chunk-C4FRGZGX.js} +4 -4
  24. package/dist/{chunk-3DOQOXXI.js → chunk-CNUN5GO6.js} +1 -1
  25. package/dist/{chunk-5KGM44TG.js → chunk-CX6OH5WP.js} +1 -1
  26. package/dist/{chunk-D4M25W6R.js → chunk-DDPGEGHB.js} +5 -5
  27. package/dist/{chunk-B7CU2HW5.js → chunk-DZPHN2WN.js} +9 -9
  28. package/dist/{chunk-O6MMQQLF.js → chunk-ECMA6XE2.js} +10 -10
  29. package/dist/{chunk-MGBV4JEI.js → chunk-EDXGEQW3.js} +1 -1
  30. package/dist/{chunk-5LD7SHXO.js → chunk-EXKCRXPO.js} +9 -9
  31. package/dist/{chunk-HTPZDZKQ.js → chunk-FKLE6QA3.js} +13 -13
  32. package/dist/{chunk-ERNCPKD4.js → chunk-G2KHLANR.js} +1 -1
  33. package/dist/{chunk-NJIGYGZS.js → chunk-HAMF4F3P.js} +12 -7
  34. package/dist/{chunk-UY6TEJJH.js → chunk-HJRP6PXL.js} +1 -1
  35. package/dist/{chunk-LNO3ASX5.js → chunk-HUNDJTTH.js} +1 -1
  36. package/dist/{chunk-RH2PROYG.js → chunk-I6GGMCTV.js} +4 -2
  37. package/dist/{chunk-DOXBS7F5.js → chunk-ID2K3IHI.js} +4 -4
  38. package/dist/{chunk-33FQ6HNV.js → chunk-IQ6P3HDE.js} +9 -9
  39. package/dist/{chunk-BAZT6CIF.js → chunk-ITSBBQTH.js} +7 -7
  40. package/dist/{chunk-UNNJCSSQ.js → chunk-JVZ7KFAX.js} +1 -1
  41. package/dist/{chunk-AQIBKTPG.js → chunk-K5XT7NHD.js} +3 -3
  42. package/dist/{chunk-HAH5X345.js → chunk-KATED53P.js} +1 -1
  43. package/dist/{chunk-7HWY4QAJ.js → chunk-L24LESXF.js} +1 -0
  44. package/dist/{chunk-VPASQOR3.js → chunk-LFKSHDVI.js} +1 -1
  45. package/dist/{chunk-XVSJYAK7.js → chunk-LPYYZCSI.js} +2 -2
  46. package/dist/{chunk-BV6PKJUS.js → chunk-LR6RRDWN.js} +5 -5
  47. package/dist/{chunk-DAX42XVH.js → chunk-LYLNMN77.js} +8 -8
  48. package/dist/{chunk-VW52W5F6.js → chunk-M2BCY7H3.js} +101 -84
  49. package/dist/{chunk-A4XPI4YN.js → chunk-MFW6P7WH.js} +27 -0
  50. package/dist/{chunk-CFBY77QJ.js → chunk-N4BBSDWI.js} +9 -9
  51. package/dist/{chunk-IDJGV6VM.js → chunk-NIUO2TNR.js} +215 -1
  52. package/dist/{chunk-PLE2432T.js → chunk-NRPELUB6.js} +2 -2
  53. package/dist/{chunk-FM3WAVB6.js → chunk-NS7L7YKH.js} +1 -1
  54. package/dist/{chunk-YMG7JDEY.js → chunk-NSR2CGV6.js} +71 -24
  55. package/dist/{chunk-LD2JSKU3.js → chunk-OOCVGX4W.js} +15 -0
  56. package/dist/{chunk-N4XHXBDQ.js → chunk-PMNITNPR.js} +4 -4
  57. package/dist/{chunk-MSXRNVHB.js → chunk-Q6SQISHT.js} +12 -11
  58. package/dist/{chunk-UNAP6O26.js → chunk-QIOYTQDZ.js} +9 -9
  59. package/dist/{chunk-BT2WH2XT.js → chunk-RGWYZR3S.js} +1 -1
  60. package/dist/{chunk-PPH6ILHL.js → chunk-RPKBWJBB.js} +4 -4
  61. package/dist/{chunk-JD4RHBNX.js → chunk-RXIKESRI.js} +7 -7
  62. package/dist/{chunk-BMUWF77V.js → chunk-S2WE7TVK.js} +4 -4
  63. package/dist/{chunk-QFIXL3OK.js → chunk-SEKNYIMO.js} +1 -1
  64. package/dist/{chunk-FPXMCGS5.js → chunk-SLQT3JP3.js} +1 -1
  65. package/dist/{chunk-LL6D3MES.js → chunk-SOPM5PLO.js} +9 -9
  66. package/dist/{chunk-J7Q4VPBJ.js → chunk-TAP2NZEU.js} +22 -16
  67. package/dist/{chunk-RE6TVIAV.js → chunk-UKJLPA7R.js} +4 -4
  68. package/dist/{chunk-RGI64U3A.js → chunk-UQLHKLF4.js} +9 -9
  69. package/dist/{chunk-JLETTWUJ.js → chunk-UWKRPQZO.js} +49 -23
  70. package/dist/{chunk-XIFK423U.js → chunk-W7QN5BC5.js} +4 -4
  71. package/dist/{chunk-XWYR5T52.js → chunk-WEF6MXFG.js} +14 -14
  72. package/dist/{chunk-P5V63L35.js → chunk-WP22MHH6.js} +17 -17
  73. package/dist/{chunk-PUVTFUNH.js → chunk-WRCAH3UO.js} +18 -18
  74. package/dist/{chunk-N7XRBWXA.js → chunk-XJ2TBXHA.js} +10 -10
  75. package/dist/{chunk-DSG6GBUQ.js → chunk-XUCQVKLQ.js} +6 -6
  76. package/dist/{chunk-NZCSVD4M.js → chunk-Y7PSAHAY.js} +8 -8
  77. package/dist/{chunk-AAMCXQPP.js → chunk-YMFQLWZ2.js} +6 -6
  78. package/dist/completion-registry.d.ts +1 -1
  79. package/dist/completion-registry.js +4 -16
  80. package/dist/countdown.js +1 -1
  81. package/dist/{dgmo-router-F2DSURTR.js → dgmo-router-7WANZOBD.js} +11 -11
  82. package/dist/{dimensions-6QAWEGIR.js → dimensions-7MF7VSGS.js} +6 -6
  83. package/dist/{flowchart-renderer-THC6Y7EH.js → flowchart-renderer-DZQZRL2F.js} +6 -5
  84. package/dist/index.d.ts +1 -1
  85. package/dist/index.js +27 -27
  86. package/dist/{layout-P6DTD4RT.js → layout-4RRC7XU7.js} +2 -2
  87. package/dist/{layout-QX5T6ZNE.js → layout-6L3BIFEZ.js} +4 -4
  88. package/dist/{layout-SOPAVXIH.js → layout-DXVAYF6W.js} +3 -3
  89. package/dist/{layout-LUQKAGGT.js → layout-EFEZ533S.js} +4 -4
  90. package/dist/{layout-EHTYSMV4.js → layout-H4K54IW3.js} +2 -2
  91. package/dist/{layout-AM57TGN5.js → layout-IGAVGDME.js} +3 -3
  92. package/dist/{layout-5NPBHV5F.js → layout-PP36LUTA.js} +2 -2
  93. package/dist/{layout-CUFA7XJD.js → layout-Q3RYSODA.js} +4 -4
  94. package/dist/layout-XUW444O5.js +1 -1
  95. package/dist/{layout-BOVTLAOT.js → layout-ZP7XYVXF.js} +2 -2
  96. package/dist/{layout-search-VKSBUCDM.js → layout-search-YKUL4VBV.js} +105 -6
  97. package/dist/{legend-constants-ZVO4FLAK.js → legend-constants-HE7FVDJP.js} +4 -2
  98. package/dist/{palettes-BIV54XLS.js → palettes-WZAIQTEG.js} +6 -4
  99. package/dist/{parser-ACW6C6OY.js → parser-337TACHB.js} +1 -1
  100. package/dist/{parser-WUK6CP5X.js → parser-GCCWMBTU.js} +3 -3
  101. package/dist/{parser-GPW4ZHPQ.js → parser-IMM2JJX3.js} +2 -1
  102. package/dist/{parser-JXS4426S.js → parser-P4TOQYNN.js} +2 -2
  103. package/dist/{parser-PVIWHVGY.js → parser-TL3JA4RI.js} +1 -1
  104. package/dist/{parser-C327BBE3.js → parser-UTXFJG4X.js} +1 -1
  105. package/dist/{renderer-RWJ45DWH.js → renderer-2ZQ6DPVD.js} +3 -3
  106. package/dist/{renderer-NHPKNNBD.js → renderer-3AD4NDF5.js} +9 -9
  107. package/dist/{renderer-2KVQGGTT.js → renderer-43ESBXVY.js} +8 -8
  108. package/dist/{renderer-A4LMOBZL.js → renderer-4JE5ORRO.js} +12 -12
  109. package/dist/{renderer-RAATRF6W.js → renderer-5GZNGZU5.js} +7 -7
  110. package/dist/{renderer-RMGN3Q7D.js → renderer-6OQM32X3.js} +3 -3
  111. package/dist/{renderer-222OTVQV.js → renderer-7HOSI6JJ.js} +4 -4
  112. package/dist/{renderer-RNCYODNF.js → renderer-7L7J4DHO.js} +8 -8
  113. package/dist/{renderer-DCFQDBGJ.js → renderer-7MCC6GKH.js} +2 -2
  114. package/dist/{renderer-3FF4QVGW.js → renderer-7VQOKAII.js} +8 -8
  115. package/dist/{renderer-4BHOELCE.js → renderer-BLHN3RCY.js} +3 -3
  116. package/dist/{renderer-PQYO2HCE.js → renderer-CEIX5JPA.js} +3 -3
  117. package/dist/{renderer-2OOPQ4CH.js → renderer-CHQZES6G.js} +3 -3
  118. package/dist/{renderer-36JH4OMC.js → renderer-DBNDLKPE.js} +9 -9
  119. package/dist/{renderer-KVAQE7PQ.js → renderer-DCJ4AQ3N.js} +7 -7
  120. package/dist/{renderer-LODEVN3V.js → renderer-EAORWLVK.js} +10 -10
  121. package/dist/{renderer-XRALFCIN.js → renderer-FCXRDYSJ.js} +8 -8
  122. package/dist/{renderer-YDAVCRTP.js → renderer-IR5GGAPB.js} +8 -8
  123. package/dist/{renderer-QM23SWAM.js → renderer-J4OS77PK.js} +2 -2
  124. package/dist/{renderer-4BIMRO4X.js → renderer-JR2XNZAH.js} +6 -6
  125. package/dist/{renderer-JKV2DBYP.js → renderer-JRVY7HAD.js} +6 -6
  126. package/dist/{renderer-R34GJL7U.js → renderer-NAA7D33G.js} +11 -11
  127. package/dist/{renderer-SDUSBCJI.js → renderer-P4XCRNCY.js} +7 -7
  128. package/dist/{renderer-A6ACVK4X.js → renderer-QQHQY3GT.js} +6 -6
  129. package/dist/{renderer-YIZ7G4HU.js → renderer-TJJGFQGT.js} +13 -13
  130. package/dist/{renderer-TPOZOAXR.js → renderer-VGQMJC5K.js} +12 -12
  131. package/dist/{renderer-XUPLAO4B.js → renderer-VYWCMRWA.js} +7 -7
  132. package/dist/{renderer-WH2HWE5Z.js → renderer-WB75JME5.js} +8 -8
  133. package/dist/{renderer-BICLPGAH.js → renderer-WQ654YT5.js} +2 -2
  134. package/dist/{renderer-6BUUTWVS.js → renderer-XFEZ5UBE.js} +8 -8
  135. package/dist/{renderer-4NZZ5J2F.js → renderer-XHEMXBQM.js} +7 -7
  136. package/dist/{renderer-RENDISO5.js → renderer-YTEZK3GC.js} +12 -12
  137. package/dist/{renderer-X5A5VIRD.js → renderer-ZXQXRNDR.js} +8 -8
  138. package/dist/{renderer-radial-XZ5TKUT4.js → renderer-radial-NA5DVBG4.js} +7 -7
  139. package/dist/{state-renderer-5IQ4OJUI.js → state-renderer-4S2C2CHB.js} +9 -9
  140. package/docs/ai-integration.md +5 -3
  141. package/docs/language-reference.md +2 -2
  142. package/package.json +1 -1
  143. package/dist/{chunk-3TYUXC7D.js → chunk-2SKMEL7V.js} +0 -0
  144. package/dist/{chunk-CLQIXD2C.js → chunk-7Z2VFRP5.js} +3 -3
  145. package/dist/{chunk-NF5YKFRH.js → chunk-B3S76BZO.js} +0 -0
  146. package/dist/{chunk-UIUXIDBX.js → chunk-CUYHST3B.js} +4 -4
  147. package/dist/{chunk-GUYVKGFN.js → chunk-DPSMX4EY.js} +0 -0
  148. package/dist/{chunk-2A4DQAXG.js → chunk-IIOLFAGJ.js} +3 -3
@@ -6,13 +6,13 @@ import {
6
6
  layoutC4Context,
7
7
  layoutC4Deployment,
8
8
  rollUpContextRelationships
9
- } from "./chunk-DAX42XVH.js";
9
+ } from "./chunk-LYLNMN77.js";
10
10
  import "./chunk-XCKNFFKM.js";
11
- import "./chunk-RH2PROYG.js";
12
- import "./chunk-KAO7JL4I.js";
13
11
  import "./chunk-L5AFONQU.js";
14
12
  import "./chunk-44GP7PD5.js";
15
- import "./chunk-7HWY4QAJ.js";
13
+ import "./chunk-I6GGMCTV.js";
14
+ import "./chunk-KAO7JL4I.js";
15
+ import "./chunk-L24LESXF.js";
16
16
  import "./chunk-2M4IGSCY.js";
17
17
  import "./chunk-BYU54C3S.js";
18
18
  import "./chunk-5WRI5ZAA.js";
@@ -8,12 +8,12 @@ import "./chunk-NPWVOFB3.js";
8
8
  import "./chunk-S7W75MIM.js";
9
9
  import "./chunk-Z6DXWULM.js";
10
10
  import "./chunk-ICLB27PZ.js";
11
- import "./chunk-KAO7JL4I.js";
12
11
  import "./chunk-NXMESY4J.js";
13
12
  import "./chunk-J64NZ6NF.js";
14
13
  import "./chunk-O753JUEZ.js";
15
14
  import "./chunk-NOTA6TEI.js";
16
15
  import "./chunk-44GP7PD5.js";
16
+ import "./chunk-KAO7JL4I.js";
17
17
  import "./chunk-2M4IGSCY.js";
18
18
  import "./chunk-BYU54C3S.js";
19
19
  import "./chunk-5WRI5ZAA.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  computeNodeSize,
3
3
  layoutBoxesAndLines
4
- } from "./chunk-XIFK423U.js";
4
+ } from "./chunk-W7QN5BC5.js";
5
5
  import "./chunk-QT3KDDXK.js";
6
6
  import "./chunk-HTNLLT34.js";
7
7
  import "./chunk-6EK55ART.js";
@@ -11,9 +11,9 @@ import "./chunk-NPWVOFB3.js";
11
11
  import "./chunk-S7W75MIM.js";
12
12
  import "./chunk-Z6DXWULM.js";
13
13
  import "./chunk-ICLB27PZ.js";
14
- import "./chunk-KAO7JL4I.js";
15
14
  import "./chunk-O753JUEZ.js";
16
15
  import "./chunk-NOTA6TEI.js";
16
+ import "./chunk-KAO7JL4I.js";
17
17
  import "./chunk-BYU54C3S.js";
18
18
  import "./chunk-5WRI5ZAA.js";
19
19
  export {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  computeNodeSize
3
- } from "./chunk-XIFK423U.js";
3
+ } from "./chunk-W7QN5BC5.js";
4
4
  import {
5
5
  clipEndpointsToNodes,
6
6
  groupedTierCandidates
@@ -19,9 +19,9 @@ import "./chunk-NPWVOFB3.js";
19
19
  import "./chunk-S7W75MIM.js";
20
20
  import "./chunk-Z6DXWULM.js";
21
21
  import "./chunk-ICLB27PZ.js";
22
- import "./chunk-KAO7JL4I.js";
23
22
  import "./chunk-O753JUEZ.js";
24
23
  import "./chunk-NOTA6TEI.js";
24
+ import "./chunk-KAO7JL4I.js";
25
25
  import "./chunk-BYU54C3S.js";
26
26
  import "./chunk-5WRI5ZAA.js";
27
27
 
@@ -833,6 +833,42 @@ function shuffle(a, r) {
833
833
  }
834
834
  return x;
835
835
  }
836
+ var SIFT_MAX_SWEEPS = 4;
837
+ function siftId(v, nd, real) {
838
+ if (real.has(v)) return v;
839
+ if ((nd.dummy === "edge" || nd.dummy === "edge-label") && nd.edgeObj) {
840
+ const name = nd.edgeLabel?.forwardName ?? nd.edgeObj.name ?? "";
841
+ return `${nd.edgeObj.v}${nd.edgeObj.w}${name}${nd.rank}`;
842
+ }
843
+ return null;
844
+ }
845
+ function applyOrderPlan(lg, real, forced, captured) {
846
+ const runs = /* @__PURE__ */ new Map();
847
+ for (const v of lg.nodes()) {
848
+ const nd = lg.node(v);
849
+ if (nd.rank === void 0) continue;
850
+ const id = siftId(v, nd, real);
851
+ if (id === null) continue;
852
+ const parent = lg.isCompound() ? lg.parent(v) : void 0;
853
+ const key = `${nd.rank}\0${parent ?? ""}`;
854
+ let run = runs.get(key);
855
+ if (!run) runs.set(key, run = []);
856
+ run.push({ v, id });
857
+ }
858
+ for (const run of runs.values()) {
859
+ if (run.length < 2) continue;
860
+ run.sort((a, b) => lg.node(a.v).order - lg.node(b.v).order);
861
+ const ids = run.map((e) => e.id);
862
+ const key = [...ids].sort().join("\0");
863
+ const want = forced?.get(key);
864
+ if (want) {
865
+ const slots = run.map((e) => lg.node(e.v).order);
866
+ const byId = new Map(run.map((e) => [e.id, e.v]));
867
+ want.forEach((id, i) => lg.node(byId.get(id)).order = slots[i]);
868
+ }
869
+ captured.set(key, want ? [...want] : ids);
870
+ }
871
+ }
836
872
  var splineGen = d3line().x((d) => d.x).y((d) => d.y).curve(curveBasis);
837
873
  var PATH_TOKEN_RE = /[MLQC]|-?\d*\.?\d+(?:e-?\d+)?/gi;
838
874
  function flatten(d) {
@@ -1557,7 +1593,8 @@ async function layoutBoxesAndLinesSearch(parsed, collapseInfo, opts) {
1557
1593
  return { x: rect.x + dx * s, y: rect.y + dy * s };
1558
1594
  };
1559
1595
  const isInsideRect = (p, rect) => Math.abs(p.x - rect.x) <= rect.w / 2 && Math.abs(p.y - rect.y) <= rect.h / 2;
1560
- function place(cfg, reserve = reserveEdgeLabels) {
1596
+ const realBoxes = new Set(parsed.nodes.map((n2) => n2.label));
1597
+ function place(cfg, reserve = reserveEdgeLabels, plan) {
1561
1598
  const r = cfg.seed === void 0 ? null : rng2(cfg.seed + 1);
1562
1599
  const ord = (a) => r ? shuffle(a, r) : a.slice();
1563
1600
  const g = new dagre.graphlib.Graph({ compound: true, multigraph: true });
@@ -1604,7 +1641,19 @@ async function layoutBoxesAndLinesSearch(parsed, collapseInfo, opts) {
1604
1641
  g.setEdge(s, t, edgeLabel, edgeKey(e));
1605
1642
  }
1606
1643
  }
1607
- dagre.layout(g);
1644
+ if (plan)
1645
+ dagre.layout(g, {
1646
+ customOrder: (lg, order) => {
1647
+ order(lg, {});
1648
+ applyOrderPlan(
1649
+ lg,
1650
+ realBoxes,
1651
+ plan.forced,
1652
+ plan.captured
1653
+ );
1654
+ }
1655
+ });
1656
+ else dagre.layout(g);
1608
1657
  const nodes = parsed.nodes.map((n2) => {
1609
1658
  const p = g.node(n2.label);
1610
1659
  return {
@@ -1740,9 +1789,9 @@ async function layoutBoxesAndLinesSearch(parsed, collapseInfo, opts) {
1740
1789
  const objective = (lay, viol) => viol * 1e6 + edgeLength(lay) + lambda * meanDrift(lay, prev) * 10;
1741
1790
  const progressTotal = configs.length + Math.min(opts?.refineK ?? 6, configs.length);
1742
1791
  let progressDone = 0;
1743
- const step = async (phase) => {
1792
+ const step = async (phase, advance = true) => {
1744
1793
  if (!onProgress) return;
1745
- onProgress(++progressDone, progressTotal, phase);
1794
+ onProgress(advance ? ++progressDone : progressDone, progressTotal, phase);
1746
1795
  const now = performance.now();
1747
1796
  if (now - searchStart > YIELD_AFTER_MS && now - lastYield > YIELD_EVERY_MS) {
1748
1797
  lastYield = now;
@@ -1882,6 +1931,56 @@ async function layoutBoxesAndLinesSearch(parsed, collapseInfo, opts) {
1882
1931
  }
1883
1932
  }
1884
1933
  }
1934
+ const winnerCfg = cfgOf.get(best);
1935
+ if (opts?.sift !== false && bestBad > 0 && Number.isFinite(bestBad) && winnerCfg) {
1936
+ let current;
1937
+ try {
1938
+ const captured = /* @__PURE__ */ new Map();
1939
+ attempts++;
1940
+ place(winnerCfg, reserveEdgeLabels, { captured });
1941
+ current = captured;
1942
+ } catch {
1943
+ }
1944
+ for (let sweep = 0; current && sweep < SIFT_MAX_SWEEPS && attempts < maxCandidates; sweep++) {
1945
+ let improved = false;
1946
+ for (const key of [...current.keys()].sort()) {
1947
+ for (const entry of [...current.get(key)]) {
1948
+ const run = current.get(key);
1949
+ const from = run.indexOf(entry);
1950
+ let bestRun = null;
1951
+ for (let to = 0; to < run.length; to++) {
1952
+ if (to === from || attempts >= maxCandidates) continue;
1953
+ const tried = run.filter((v) => v !== entry);
1954
+ tried.splice(to, 0, entry);
1955
+ const forced = new Map(current);
1956
+ forced.set(key, tried);
1957
+ attempts++;
1958
+ let lay;
1959
+ try {
1960
+ lay = place(winnerCfg, reserveEdgeLabels, {
1961
+ forced,
1962
+ captured: /* @__PURE__ */ new Map()
1963
+ });
1964
+ } catch {
1965
+ continue;
1966
+ }
1967
+ const bad = badness(lay, bestBad - 1);
1968
+ if (bad < bestBad) {
1969
+ bestBad = bad;
1970
+ best = lay;
1971
+ bestRun = tried;
1972
+ }
1973
+ }
1974
+ if (bestRun) {
1975
+ current.set(key, bestRun);
1976
+ improved = true;
1977
+ }
1978
+ await step("Sifting layout", false);
1979
+ }
1980
+ }
1981
+ if (!improved) break;
1982
+ }
1983
+ }
1885
1984
  if (bestBad > 0) {
1886
1985
  const rerouted = deroutePierces(best);
1887
1986
  if (rerouted !== best && badness(rerouted, bestBad - 1) < bestBad)
@@ -16,14 +16,15 @@ import {
16
16
  LEGEND_MAX_ENTRY_ROWS,
17
17
  LEGEND_PILL_FONT_SIZE,
18
18
  LEGEND_PILL_PAD,
19
+ LEGEND_PILL_TOGGLE_CLASS,
19
20
  LEGEND_TOGGLE_DOT_R,
20
21
  LEGEND_TOGGLE_OFF_OPACITY,
21
22
  legendChromeColors,
22
23
  measureLegendText,
23
24
  truncateLegendText
24
- } from "./chunk-RH2PROYG.js";
25
+ } from "./chunk-I6GGMCTV.js";
25
26
  import "./chunk-KAO7JL4I.js";
26
- import "./chunk-7HWY4QAJ.js";
27
+ import "./chunk-L24LESXF.js";
27
28
  import "./chunk-2M4IGSCY.js";
28
29
  import "./chunk-BYU54C3S.js";
29
30
  import "./chunk-5WRI5ZAA.js";
@@ -45,6 +46,7 @@ export {
45
46
  LEGEND_MAX_ENTRY_ROWS,
46
47
  LEGEND_PILL_FONT_SIZE,
47
48
  LEGEND_PILL_PAD,
49
+ LEGEND_PILL_TOGGLE_CLASS,
48
50
  LEGEND_TOGGLE_DOT_R,
49
51
  LEGEND_TOGGLE_OFF_OPACITY,
50
52
  legendChromeColors,
@@ -12,8 +12,9 @@ import {
12
12
  resolvePaletteOrFallback,
13
13
  slatePalette,
14
14
  tidewaterPalette,
15
- tokyoNightPalette
16
- } from "./chunk-IDJGV6VM.js";
15
+ tokyoNightPalette,
16
+ validateThemeFile
17
+ } from "./chunk-NIUO2TNR.js";
17
18
  import {
18
19
  contrastText,
19
20
  getSegmentColors,
@@ -25,7 +26,7 @@ import {
25
26
  shapeFill,
26
27
  themeBaseBg,
27
28
  tint
28
- } from "./chunk-7HWY4QAJ.js";
29
+ } from "./chunk-L24LESXF.js";
29
30
  import "./chunk-2M4IGSCY.js";
30
31
  import "./chunk-BYU54C3S.js";
31
32
  import "./chunk-5WRI5ZAA.js";
@@ -53,5 +54,6 @@ export {
53
54
  themeBaseBg,
54
55
  tidewaterPalette,
55
56
  tint,
56
- tokyoNightPalette
57
+ tokyoNightPalette,
58
+ validateThemeFile
57
59
  };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  parseKanban
3
- } from "./chunk-GUYVKGFN.js";
3
+ } from "./chunk-DPSMX4EY.js";
4
4
  import "./chunk-NOTA6TEI.js";
5
5
  import "./chunk-L5AFONQU.js";
6
6
  import "./chunk-44GP7PD5.js";
@@ -2,14 +2,14 @@ import {
2
2
  GANTT_KNOWN_BOOLEANS,
3
3
  GANTT_KNOWN_OPTIONS,
4
4
  parseGantt
5
- } from "./chunk-BAZT6CIF.js";
5
+ } from "./chunk-ITSBBQTH.js";
6
6
  import "./chunk-EQW6HOP4.js";
7
7
  import "./chunk-DAOFNU6J.js";
8
+ import "./chunk-NIUO2TNR.js";
8
9
  import "./chunk-NOTA6TEI.js";
9
10
  import "./chunk-L5AFONQU.js";
10
11
  import "./chunk-44GP7PD5.js";
11
- import "./chunk-IDJGV6VM.js";
12
- import "./chunk-7HWY4QAJ.js";
12
+ import "./chunk-L24LESXF.js";
13
13
  import "./chunk-2M4IGSCY.js";
14
14
  import "./chunk-BYU54C3S.js";
15
15
  import "./chunk-5WRI5ZAA.js";
@@ -2,11 +2,12 @@ import {
2
2
  extractSymbols,
3
3
  looksLikeClassDiagram,
4
4
  parseClassDiagram
5
- } from "./chunk-A4XPI4YN.js";
5
+ } from "./chunk-MFW6P7WH.js";
6
6
  import "./chunk-J64NZ6NF.js";
7
7
  import "./chunk-O753JUEZ.js";
8
8
  import "./chunk-N7VMGZCU.js";
9
9
  import "./chunk-NOTA6TEI.js";
10
+ import "./chunk-L5AFONQU.js";
10
11
  import "./chunk-44GP7PD5.js";
11
12
  import "./chunk-2M4IGSCY.js";
12
13
  import "./chunk-BYU54C3S.js";
@@ -3,8 +3,8 @@ import {
3
3
  looksLikePert,
4
4
  parseEdgeLabel,
5
5
  parsePert
6
- } from "./chunk-UNNJCSSQ.js";
7
- import "./chunk-3TYUXC7D.js";
6
+ } from "./chunk-JVZ7KFAX.js";
7
+ import "./chunk-2SKMEL7V.js";
8
8
  import "./chunk-EQW6HOP4.js";
9
9
  import "./chunk-DAOFNU6J.js";
10
10
  import "./chunk-NOTA6TEI.js";
@@ -4,7 +4,7 @@ import {
4
4
  isSequenceSection,
5
5
  looksLikeSequence,
6
6
  parseSequenceDgmo
7
- } from "./chunk-VPASQOR3.js";
7
+ } from "./chunk-LFKSHDVI.js";
8
8
  import "./chunk-C3Z4DX3V.js";
9
9
  import "./chunk-N7VMGZCU.js";
10
10
  import "./chunk-NOTA6TEI.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  parseJourneyMap
3
- } from "./chunk-NF5YKFRH.js";
3
+ } from "./chunk-B3S76BZO.js";
4
4
  import "./chunk-IYULMRBE.js";
5
5
  import "./chunk-L5AFONQU.js";
6
6
  import "./chunk-44GP7PD5.js";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  renderWireframe
3
- } from "./chunk-PPH6ILHL.js";
3
+ } from "./chunk-RPKBWJBB.js";
4
4
  import "./chunk-24YPR5EH.js";
5
5
  import "./chunk-VLC6WNRD.js";
6
6
  import "./chunk-ICLB27PZ.js";
7
- import "./chunk-KAO7JL4I.js";
8
7
  import "./chunk-44GP7PD5.js";
9
- import "./chunk-7HWY4QAJ.js";
8
+ import "./chunk-KAO7JL4I.js";
9
+ import "./chunk-L24LESXF.js";
10
10
  import "./chunk-2M4IGSCY.js";
11
11
  import "./chunk-BYU54C3S.js";
12
12
  import "./chunk-5WRI5ZAA.js";
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  renderJourneyMap,
3
3
  renderJourneyMapForExport
4
- } from "./chunk-N7XRBWXA.js";
5
- import "./chunk-DOXBS7F5.js";
4
+ } from "./chunk-XJ2TBXHA.js";
5
+ import "./chunk-ID2K3IHI.js";
6
6
  import "./chunk-RJNZHFNG.js";
7
7
  import "./chunk-5DH3KYFH.js";
8
8
  import "./chunk-NPWVOFB3.js";
@@ -10,17 +10,17 @@ import "./chunk-S7W75MIM.js";
10
10
  import "./chunk-Z6DXWULM.js";
11
11
  import "./chunk-24YPR5EH.js";
12
12
  import "./chunk-XCKNFFKM.js";
13
- import "./chunk-LD2JSKU3.js";
14
- import "./chunk-LHL6HDUL.js";
15
- import "./chunk-FM3WAVB6.js";
13
+ import "./chunk-OOCVGX4W.js";
14
+ import "./chunk-7SX4IY6T.js";
15
+ import "./chunk-NS7L7YKH.js";
16
16
  import "./chunk-ICLB27PZ.js";
17
- import "./chunk-NF5YKFRH.js";
18
- import "./chunk-RH2PROYG.js";
19
- import "./chunk-KAO7JL4I.js";
17
+ import "./chunk-B3S76BZO.js";
20
18
  import "./chunk-IYULMRBE.js";
21
19
  import "./chunk-L5AFONQU.js";
22
20
  import "./chunk-44GP7PD5.js";
23
- import "./chunk-7HWY4QAJ.js";
21
+ import "./chunk-I6GGMCTV.js";
22
+ import "./chunk-KAO7JL4I.js";
23
+ import "./chunk-L24LESXF.js";
24
24
  import "./chunk-2M4IGSCY.js";
25
25
  import "./chunk-BYU54C3S.js";
26
26
  import "./chunk-5WRI5ZAA.js";
@@ -7,7 +7,7 @@ import {
7
7
  groupMessagesBySection,
8
8
  renderSequenceDiagram,
9
9
  summarizeSectionParticipation
10
- } from "./chunk-YMG7JDEY.js";
10
+ } from "./chunk-NSR2CGV6.js";
11
11
  import "./chunk-NPWVOFB3.js";
12
12
  import {
13
13
  parseInlineMarkdown,
@@ -16,20 +16,20 @@ import {
16
16
  import "./chunk-Z6DXWULM.js";
17
17
  import "./chunk-24YPR5EH.js";
18
18
  import "./chunk-XCKNFFKM.js";
19
- import "./chunk-3DOQOXXI.js";
19
+ import "./chunk-CNUN5GO6.js";
20
20
  import "./chunk-VLC6WNRD.js";
21
- import "./chunk-LHL6HDUL.js";
22
- import "./chunk-FM3WAVB6.js";
21
+ import "./chunk-7SX4IY6T.js";
22
+ import "./chunk-NS7L7YKH.js";
23
23
  import "./chunk-ICLB27PZ.js";
24
- import "./chunk-RH2PROYG.js";
25
- import "./chunk-KAO7JL4I.js";
26
- import "./chunk-VPASQOR3.js";
24
+ import "./chunk-LFKSHDVI.js";
27
25
  import "./chunk-C3Z4DX3V.js";
28
26
  import "./chunk-N7VMGZCU.js";
29
27
  import "./chunk-NOTA6TEI.js";
30
28
  import "./chunk-L5AFONQU.js";
31
29
  import "./chunk-44GP7PD5.js";
32
- import "./chunk-7HWY4QAJ.js";
30
+ import "./chunk-I6GGMCTV.js";
31
+ import "./chunk-KAO7JL4I.js";
32
+ import "./chunk-L24LESXF.js";
33
33
  import "./chunk-2M4IGSCY.js";
34
34
  import "./chunk-BYU54C3S.js";
35
35
  import "./chunk-5WRI5ZAA.js";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  renderClassDiagram,
3
3
  renderClassDiagramForExport
4
- } from "./chunk-XWYR5T52.js";
5
- import "./chunk-CLQIXD2C.js";
6
- import "./chunk-HAH5X345.js";
4
+ } from "./chunk-WEF6MXFG.js";
5
+ import "./chunk-7Z2VFRP5.js";
6
+ import "./chunk-KATED53P.js";
7
7
  import "./chunk-HTNLLT34.js";
8
8
  import "./chunk-6EK55ART.js";
9
9
  import "./chunk-RJNZHFNG.js";
@@ -13,23 +13,23 @@ import "./chunk-S7W75MIM.js";
13
13
  import "./chunk-Z6DXWULM.js";
14
14
  import "./chunk-24YPR5EH.js";
15
15
  import "./chunk-XCKNFFKM.js";
16
- import "./chunk-QFIXL3OK.js";
17
- import "./chunk-3DOQOXXI.js";
18
- import "./chunk-LD2JSKU3.js";
16
+ import "./chunk-SEKNYIMO.js";
17
+ import "./chunk-CNUN5GO6.js";
18
+ import "./chunk-OOCVGX4W.js";
19
19
  import "./chunk-VLC6WNRD.js";
20
- import "./chunk-LHL6HDUL.js";
21
- import "./chunk-FM3WAVB6.js";
20
+ import "./chunk-7SX4IY6T.js";
21
+ import "./chunk-NS7L7YKH.js";
22
22
  import "./chunk-ICLB27PZ.js";
23
- import "./chunk-RH2PROYG.js";
24
- import "./chunk-KAO7JL4I.js";
25
- import "./chunk-A4XPI4YN.js";
23
+ import "./chunk-MFW6P7WH.js";
26
24
  import "./chunk-J64NZ6NF.js";
27
25
  import "./chunk-O753JUEZ.js";
28
26
  import "./chunk-N7VMGZCU.js";
29
27
  import "./chunk-NOTA6TEI.js";
30
28
  import "./chunk-L5AFONQU.js";
31
29
  import "./chunk-44GP7PD5.js";
32
- import "./chunk-7HWY4QAJ.js";
30
+ import "./chunk-I6GGMCTV.js";
31
+ import "./chunk-KAO7JL4I.js";
32
+ import "./chunk-L24LESXF.js";
33
33
  import "./chunk-2M4IGSCY.js";
34
34
  import "./chunk-BYU54C3S.js";
35
35
  import "./chunk-5WRI5ZAA.js";
@@ -2,21 +2,21 @@ import {
2
2
  renderSketch,
3
3
  renderSketchForExport,
4
4
  sketchEdgeGeometry
5
- } from "./chunk-CFBY77QJ.js";
5
+ } from "./chunk-N4BBSDWI.js";
6
6
  import "./chunk-XBJJP2HN.js";
7
7
  import "./chunk-R2K5L4UA.js";
8
8
  import "./chunk-24YPR5EH.js";
9
9
  import "./chunk-XCKNFFKM.js";
10
- import "./chunk-3DOQOXXI.js";
10
+ import "./chunk-CNUN5GO6.js";
11
11
  import "./chunk-VLC6WNRD.js";
12
- import "./chunk-LHL6HDUL.js";
13
- import "./chunk-FM3WAVB6.js";
12
+ import "./chunk-7SX4IY6T.js";
13
+ import "./chunk-NS7L7YKH.js";
14
14
  import "./chunk-ICLB27PZ.js";
15
- import "./chunk-RH2PROYG.js";
16
- import "./chunk-KAO7JL4I.js";
17
15
  import "./chunk-L5AFONQU.js";
18
16
  import "./chunk-44GP7PD5.js";
19
- import "./chunk-7HWY4QAJ.js";
17
+ import "./chunk-I6GGMCTV.js";
18
+ import "./chunk-KAO7JL4I.js";
19
+ import "./chunk-L24LESXF.js";
20
20
  import "./chunk-2M4IGSCY.js";
21
21
  import "./chunk-BYU54C3S.js";
22
22
  import "./chunk-5WRI5ZAA.js";
@@ -2,17 +2,17 @@ import {
2
2
  MARKER_LABELS,
3
3
  renderRaci,
4
4
  renderRaciForExport
5
- } from "./chunk-JD4RHBNX.js";
5
+ } from "./chunk-RXIKESRI.js";
6
6
  import "./chunk-24YPR5EH.js";
7
7
  import "./chunk-XCKNFFKM.js";
8
8
  import "./chunk-VLC6WNRD.js";
9
9
  import "./chunk-ICLB27PZ.js";
10
- import "./chunk-KAO7JL4I.js";
11
10
  import "./chunk-3RYBTEF5.js";
12
11
  import "./chunk-NOTA6TEI.js";
13
12
  import "./chunk-4WW3SGMH.js";
14
13
  import "./chunk-44GP7PD5.js";
15
- import "./chunk-7HWY4QAJ.js";
14
+ import "./chunk-KAO7JL4I.js";
15
+ import "./chunk-L24LESXF.js";
16
16
  import "./chunk-2M4IGSCY.js";
17
17
  import "./chunk-BYU54C3S.js";
18
18
  import "./chunk-5WRI5ZAA.js";
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  renderGoal,
3
3
  renderGoalForExport
4
- } from "./chunk-XVSJYAK7.js";
5
- import "./chunk-LNO3ASX5.js";
4
+ } from "./chunk-LPYYZCSI.js";
5
+ import "./chunk-HUNDJTTH.js";
6
6
  import "./chunk-S7W75MIM.js";
7
7
  import "./chunk-Z6DXWULM.js";
8
8
  import "./chunk-VLC6WNRD.js";
9
9
  import "./chunk-ICLB27PZ.js";
10
- import "./chunk-KAO7JL4I.js";
11
10
  import "./chunk-L5AFONQU.js";
12
11
  import "./chunk-44GP7PD5.js";
13
- import "./chunk-7HWY4QAJ.js";
12
+ import "./chunk-KAO7JL4I.js";
13
+ import "./chunk-L24LESXF.js";
14
14
  import "./chunk-2M4IGSCY.js";
15
15
  import "./chunk-BYU54C3S.js";
16
16
  import "./chunk-5WRI5ZAA.js";
@@ -1,22 +1,22 @@
1
1
  import {
2
2
  buildTagLaneRowList,
3
3
  renderGantt
4
- } from "./chunk-MVCPO6LI.js";
4
+ } from "./chunk-7C2RAGPT.js";
5
5
  import "./chunk-YRYKTYMQ.js";
6
6
  import "./chunk-24YPR5EH.js";
7
7
  import "./chunk-XCKNFFKM.js";
8
- import "./chunk-3DOQOXXI.js";
8
+ import "./chunk-CNUN5GO6.js";
9
9
  import "./chunk-VLC6WNRD.js";
10
- import "./chunk-LHL6HDUL.js";
11
- import "./chunk-FM3WAVB6.js";
10
+ import "./chunk-7SX4IY6T.js";
11
+ import "./chunk-NS7L7YKH.js";
12
12
  import "./chunk-ICLB27PZ.js";
13
- import "./chunk-RH2PROYG.js";
14
- import "./chunk-KAO7JL4I.js";
13
+ import "./chunk-NIUO2TNR.js";
15
14
  import "./chunk-NOTA6TEI.js";
16
15
  import "./chunk-L5AFONQU.js";
17
16
  import "./chunk-44GP7PD5.js";
18
- import "./chunk-IDJGV6VM.js";
19
- import "./chunk-7HWY4QAJ.js";
17
+ import "./chunk-I6GGMCTV.js";
18
+ import "./chunk-KAO7JL4I.js";
19
+ import "./chunk-L24LESXF.js";
20
20
  import "./chunk-2M4IGSCY.js";
21
21
  import "./chunk-BYU54C3S.js";
22
22
  import "./chunk-5WRI5ZAA.js";
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  renderCountdown,
3
3
  renderCountdownForExport
4
- } from "./chunk-5KGM44TG.js";
4
+ } from "./chunk-CX6OH5WP.js";
5
5
  import "./chunk-NPWVOFB3.js";
6
6
  import "./chunk-S7W75MIM.js";
7
7
  import "./chunk-Z6DXWULM.js";
8
8
  import "./chunk-ICLB27PZ.js";
9
9
  import "./chunk-WFA6IULY.js";
10
10
  import "./chunk-3DPOIW3W.js";
11
- import "./chunk-7HWY4QAJ.js";
11
+ import "./chunk-L24LESXF.js";
12
12
  import "./chunk-2M4IGSCY.js";
13
13
  import "./chunk-BYU54C3S.js";
14
14
  import "./chunk-5WRI5ZAA.js";
@@ -1,23 +1,23 @@
1
1
  import {
2
2
  renderKanban,
3
3
  renderKanbanForExport
4
- } from "./chunk-J7Q4VPBJ.js";
4
+ } from "./chunk-TAP2NZEU.js";
5
5
  import "./chunk-S7W75MIM.js";
6
6
  import "./chunk-Z6DXWULM.js";
7
7
  import "./chunk-24YPR5EH.js";
8
8
  import "./chunk-XCKNFFKM.js";
9
- import "./chunk-LD2JSKU3.js";
9
+ import "./chunk-OOCVGX4W.js";
10
10
  import "./chunk-VLC6WNRD.js";
11
- import "./chunk-LHL6HDUL.js";
12
- import "./chunk-FM3WAVB6.js";
11
+ import "./chunk-7SX4IY6T.js";
12
+ import "./chunk-NS7L7YKH.js";
13
13
  import "./chunk-ICLB27PZ.js";
14
- import "./chunk-GUYVKGFN.js";
15
- import "./chunk-RH2PROYG.js";
16
- import "./chunk-KAO7JL4I.js";
14
+ import "./chunk-DPSMX4EY.js";
17
15
  import "./chunk-NOTA6TEI.js";
18
16
  import "./chunk-L5AFONQU.js";
19
17
  import "./chunk-44GP7PD5.js";
20
- import "./chunk-7HWY4QAJ.js";
18
+ import "./chunk-I6GGMCTV.js";
19
+ import "./chunk-KAO7JL4I.js";
20
+ import "./chunk-L24LESXF.js";
21
21
  import "./chunk-2M4IGSCY.js";
22
22
  import "./chunk-BYU54C3S.js";
23
23
  import "./chunk-5WRI5ZAA.js";
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  renderPyramid,
3
3
  renderPyramidForExport
4
- } from "./chunk-BMUWF77V.js";
4
+ } from "./chunk-S2WE7TVK.js";
5
5
  import "./chunk-NPWVOFB3.js";
6
6
  import "./chunk-S7W75MIM.js";
7
7
  import "./chunk-Z6DXWULM.js";
8
8
  import "./chunk-24YPR5EH.js";
9
9
  import "./chunk-VLC6WNRD.js";
10
10
  import "./chunk-ICLB27PZ.js";
11
- import "./chunk-KAO7JL4I.js";
12
11
  import "./chunk-44GP7PD5.js";
13
- import "./chunk-7HWY4QAJ.js";
12
+ import "./chunk-KAO7JL4I.js";
13
+ import "./chunk-L24LESXF.js";
14
14
  import "./chunk-2M4IGSCY.js";
15
15
  import "./chunk-BYU54C3S.js";
16
16
  import "./chunk-5WRI5ZAA.js";