@diagrammo/dgmo 0.90.0 → 0.91.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 (179) hide show
  1. package/dist/advanced.d.ts +156 -2
  2. package/dist/advanced.js +558 -115
  3. package/dist/block.d.ts +10 -1
  4. package/dist/block.js +46 -39
  5. package/dist/{calculator-PX3JHKAS.js → calculator-3LZUWOBK.js} +1 -1
  6. package/dist/chart-meta.js +12 -12
  7. package/dist/{charts-d3-QW4ERNUE.js → charts-d3-YXD6VGZQ.js} +3 -3
  8. package/dist/{chunk-64KSPLU2.js → chunk-273GB7WK.js} +4 -4
  9. package/dist/{chunk-GYBKG4Z6.js → chunk-2A4OFZ2Z.js} +2 -2
  10. package/dist/{chunk-YWRZG6GN.js → chunk-2AM6VA3A.js} +8 -8
  11. package/dist/{chunk-PQ5NW3QZ.js → chunk-2UV627GG.js} +4 -4
  12. package/dist/{chunk-AAC3XQWV.js → chunk-37QQXKFV.js} +8 -9
  13. package/dist/{chunk-RCBHL2B5.js → chunk-3LINSNJT.js} +112 -112
  14. package/dist/{chunk-5TZPIKNV.js → chunk-3SLRZKLB.js} +2 -2
  15. package/dist/{chunk-X3WYJ5T7.js → chunk-3YTAOMMN.js} +1 -1
  16. package/dist/{chunk-A5EE66RQ.js → chunk-53BJIOLF.js} +1 -1
  17. package/dist/{chunk-QRIW46LR.js → chunk-57L2JPP2.js} +6 -2
  18. package/dist/{chunk-IIOLFAGJ.js → chunk-5DIBB2QG.js} +51 -32
  19. package/dist/{chunk-7Z2VFRP5.js → chunk-5U6DXIMV.js} +47 -24
  20. package/dist/{chunk-5M6PMV5Z.js → chunk-5VPWIC6T.js} +3 -3
  21. package/dist/{chunk-SLO22FPS.js → chunk-634LDSN6.js} +1 -1
  22. package/dist/{chunk-G5BGW4BX.js → chunk-6NO3MNBC.js} +3 -3
  23. package/dist/{chunk-NUYWNKHH.js → chunk-6QEXWMBP.js} +12 -16
  24. package/dist/{chunk-POBNN5DP.js → chunk-7BBRSOKS.js} +2 -2
  25. package/dist/{chunk-NFWRIC2V.js → chunk-AR4QVMWG.js} +4 -1
  26. package/dist/{chunk-JRQ4LBQI.js → chunk-B6EUFLRP.js} +4 -4
  27. package/dist/{chunk-LNQDICFJ.js → chunk-CPGKRI7H.js} +5 -8
  28. package/dist/{chunk-ZNNVI5SR.js → chunk-CU2PZLZP.js} +53 -31
  29. package/dist/{chunk-LBRHDWEA.js → chunk-CVZBLHHW.js} +1 -1
  30. package/dist/{chunk-S4LLHDGK.js → chunk-CXIPV2FY.js} +3 -3
  31. package/dist/{chunk-ICYPGWOV.js → chunk-D7DXNQW5.js} +2 -2
  32. package/dist/{chunk-54YUDXGP.js → chunk-D7PP35BA.js} +1 -1
  33. package/dist/{chunk-RRBV4HIM.js → chunk-DLX7MEN4.js} +1 -1
  34. package/dist/{chunk-S7C32S2T.js → chunk-EDPDAUBL.js} +2 -2
  35. package/dist/{chunk-LC5LY5V2.js → chunk-EP7BT3HU.js} +1 -1
  36. package/dist/{chunk-ICZ7M6IZ.js → chunk-EQJ3U5EW.js} +1 -1
  37. package/dist/{chunk-K4GUO7FV.js → chunk-F2436VRR.js} +1 -1
  38. package/dist/{chunk-5M52RPAS.js → chunk-F26ZPBSF.js} +2 -2
  39. package/dist/{chunk-3BQCSQQJ.js → chunk-FJCYK4K3.js} +11 -11
  40. package/dist/{chunk-PXEUQ7EG.js → chunk-G22UV5AF.js} +4 -4
  41. package/dist/{chunk-CUY56BK4.js → chunk-G3EUQMV4.js} +3 -3
  42. package/dist/{chunk-I6FWHICD.js → chunk-GCDW3WAY.js} +5 -5
  43. package/dist/{chunk-WHRIN7N3.js → chunk-HFG7KQOY.js} +12 -14
  44. package/dist/{chunk-SVQDLYX7.js → chunk-HLVGZXM5.js} +1 -1
  45. package/dist/{chunk-3HBR3YAN.js → chunk-HSGWR2FL.js} +6 -6
  46. package/dist/{chunk-RNXX2GOQ.js → chunk-HWXUQCDY.js} +2 -2
  47. package/dist/{chunk-YE7D2S75.js → chunk-HYV6GSXM.js} +5 -2
  48. package/dist/{chunk-AHWA36O7.js → chunk-II4XJETG.js} +1 -1
  49. package/dist/{chunk-EB7AEM2H.js → chunk-IMKPFW67.js} +3 -3
  50. package/dist/{chunk-C4W62JZO.js → chunk-IS6WFBX7.js} +2 -2
  51. package/dist/{chunk-SMEVBJJJ.js → chunk-IUBCDNT2.js} +1 -1
  52. package/dist/{chunk-TQ644YGV.js → chunk-IWTUXGHN.js} +3 -3
  53. package/dist/{chunk-PNCKZFPE.js → chunk-J2SQNZ6D.js} +1 -1
  54. package/dist/{chunk-YKGUSW6D.js → chunk-JA2S7PHR.js} +7 -7
  55. package/dist/{chunk-IRVQT4GR.js → chunk-JJQWCI35.js} +2 -2
  56. package/dist/chunk-JJUDOR4I.js +110 -0
  57. package/dist/{chunk-VCHYS3RD.js → chunk-K3BYD3WU.js} +1 -1
  58. package/dist/{chunk-EEYQFJVK.js → chunk-KFXY5IW2.js} +2 -2
  59. package/dist/{chunk-Y6GQQ4Y2.js → chunk-LKR4FACF.js} +1 -3
  60. package/dist/{chunk-IJ27L3R4.js → chunk-MA42PIGJ.js} +1 -1
  61. package/dist/{chunk-GQVXYRPC.js → chunk-MI6SJJQU.js} +1 -1
  62. package/dist/{chunk-DXPT2HPH.js → chunk-MJKQ5ZYY.js} +2 -2
  63. package/dist/{chunk-J3ODKAWN.js → chunk-MNL547RV.js} +5 -5
  64. package/dist/{chunk-2EDJPHXQ.js → chunk-N254IJM2.js} +6 -6
  65. package/dist/{layout-search-YKUL4VBV.js → chunk-NWPMLX2V.js} +27 -30
  66. package/dist/{chunk-COPSI54O.js → chunk-PSGSFRRE.js} +2 -2
  67. package/dist/{chunk-FDRHBQUG.js → chunk-PUZ63XZM.js} +8 -8
  68. package/dist/{chunk-MIVSVEK4.js → chunk-PZVTFQI2.js} +2 -2
  69. package/dist/{chunk-W7QN5BC5.js → chunk-Q3N7PI3B.js} +180 -7
  70. package/dist/{chunk-HX2KJEPD.js → chunk-QKJ6MQXW.js} +1 -3
  71. package/dist/{chunk-NJYA4QSN.js → chunk-QVKTAU7P.js} +1 -1
  72. package/dist/{chunk-EK7JYFCL.js → chunk-R7BSF7Z7.js} +1 -1
  73. package/dist/{chunk-PIHAUVA4.js → chunk-RHXIUUWB.js} +1 -1
  74. package/dist/{chunk-GXP344YZ.js → chunk-RMTOZALT.js} +6 -3
  75. package/dist/{chunk-CYF2X3CG.js → chunk-ROCBGUJN.js} +7 -7
  76. package/dist/{chunk-RY5RRKYN.js → chunk-RVTYIGWZ.js} +3 -3
  77. package/dist/{chunk-NMKLX57Y.js → chunk-SKF7XLCM.js} +1 -1
  78. package/dist/{chunk-NP2SE6MQ.js → chunk-SMTWQ66K.js} +5 -5
  79. package/dist/{chunk-3AX6MCI6.js → chunk-SPQVER4T.js} +2 -2
  80. package/dist/{chunk-A5PUOHIS.js → chunk-SWBHH2UW.js} +1 -1
  81. package/dist/{chunk-7TF3QOOD.js → chunk-TIVMAITN.js} +14 -0
  82. package/dist/{chunk-4IYJOXGS.js → chunk-TLPY4ZBI.js} +604 -430
  83. package/dist/{chunk-U762HK4D.js → chunk-TPEYEOXA.js} +4 -4
  84. package/dist/{chunk-FS2LZBHG.js → chunk-UWJP4JSZ.js} +2 -2
  85. package/dist/{chunk-JX4RCC6B.js → chunk-V3KHZQPK.js} +2 -2
  86. package/dist/{chunk-RJYFHEP4.js → chunk-VGSSAMLA.js} +2 -2
  87. package/dist/{chunk-HIVJBESO.js → chunk-VMD2CYVP.js} +35 -36
  88. package/dist/{chunk-OSIUWQ3N.js → chunk-WNTPJZU7.js} +1 -1
  89. package/dist/{chunk-R2PTZ6QM.js → chunk-WTE27AJT.js} +7 -7
  90. package/dist/{chunk-OWJVSJLA.js → chunk-XLAREWBK.js} +2 -2
  91. package/dist/{chunk-NY56FM55.js → chunk-XLPJJ35N.js} +2 -2
  92. package/dist/{chunk-DNMICILX.js → chunk-XQTRGKQ3.js} +3 -3
  93. package/dist/{chunk-QOZ4RVQY.js → chunk-YZG37S7L.js} +3 -3
  94. package/dist/{chunk-62VWZ3SE.js → chunk-ZB2Q67NO.js} +10 -10
  95. package/dist/completion-registry.js +2 -2
  96. package/dist/{compute-JAP5E2E4.js → compute-2XWFVO7K.js} +1 -1
  97. package/dist/{dgmo-router-BJBXSZMV.js → dgmo-router-YHBMKTXY.js} +32 -32
  98. package/dist/{dimensions-AMA2S7RO.js → dimensions-QMGWJQTR.js} +3 -3
  99. package/dist/{flowchart-parser-ADZIFVCH.js → flowchart-parser-BLJ6RA53.js} +2 -2
  100. package/dist/{flowchart-renderer-CAG6ZNJ6.js → flowchart-renderer-FXRQKXAK.js} +10 -6
  101. package/dist/index.js +37 -37
  102. package/dist/{layout-5VSMZPMG.js → layout-5HCEF7VO.js} +1 -1
  103. package/dist/{layout-VQ2USZJ3.js → layout-6PLSBB5X.js} +2 -2
  104. package/dist/{layout-UIV56NUA.js → layout-B7PQRAMB.js} +1 -1
  105. package/dist/{layout-C6MKMOBI.js → layout-CCVCLZ6S.js} +1 -1
  106. package/dist/{layout-T2PGKQUQ.js → layout-CRUAP7JG.js} +2 -2
  107. package/dist/{layout-UFB2O4AO.js → layout-G42FDCF3.js} +2 -2
  108. package/dist/{layout-6OSF2UGP.js → layout-IV4H2FLB.js} +2 -2
  109. package/dist/{layout-4RRC7XU7.js → layout-JTNRSGOS.js} +6 -3
  110. package/dist/{layout-H4K54IW3.js → layout-RBLD5EGX.js} +6 -3
  111. package/dist/{layout-SW3XWYKC.js → layout-ROAVGBUC.js} +1 -1
  112. package/dist/{layout-QS2SESBU.js → layout-T2DQ4M77.js} +6 -2
  113. package/dist/{layout-ZP7XYVXF.js → layout-YKGQRFDM.js} +2 -4
  114. package/dist/layout-search-L75YOBME.js +42 -0
  115. package/dist/{parser-NAUUUCI3.js → parser-2XCDVLSN.js} +2 -2
  116. package/dist/{parser-ESZ5J5IJ.js → parser-4QNRCGU5.js} +2 -2
  117. package/dist/{parser-W2DWCCLO.js → parser-6NSQLPTS.js} +2 -2
  118. package/dist/{parser-223VOHSB.js → parser-6X4GGH2R.js} +2 -2
  119. package/dist/{parser-B2FWP7ZO.js → parser-D6YRVV75.js} +2 -2
  120. package/dist/{parser-T2RVIRDG.js → parser-EY3VJWBE.js} +2 -2
  121. package/dist/{parser-KFIK3EOO.js → parser-EYF4ZSZO.js} +2 -2
  122. package/dist/{parser-2PNV7UI3.js → parser-H2DJEAPG.js} +2 -2
  123. package/dist/{parser-OV2WDSEV.js → parser-ILWAA3QJ.js} +2 -2
  124. package/dist/{parser-FV6RGALQ.js → parser-KMFMNZYI.js} +2 -2
  125. package/dist/{parser-LGUT7KKH.js → parser-MDSVVCJP.js} +2 -2
  126. package/dist/{parser-HPR7G7F6.js → parser-QL4DEPVA.js} +3 -3
  127. package/dist/{parser-BJDQX4KV.js → parser-UEDPLM46.js} +2 -2
  128. package/dist/{parser-E5HFYL7B.js → parser-UL6WN6W5.js} +2 -2
  129. package/dist/{parser-5ZD2NKGU.js → parser-ULSUK36C.js} +2 -2
  130. package/dist/{parser-57YQEEMC.js → parser-UY3K4ROB.js} +1 -1
  131. package/dist/{parser-MYRGCK7Q.js → parser-UYQNNQKT.js} +2 -2
  132. package/dist/{parser-NJ5VEZA3.js → parser-VG747VR6.js} +2 -2
  133. package/dist/{parser-CA5WC5HF.js → parser-VK4PNDX4.js} +2 -2
  134. package/dist/{parser-JFNDS5E5.js → parser-X5FQ36KJ.js} +2 -2
  135. package/dist/{parser-I4HZVIHX.js → parser-XO5IAXMT.js} +2 -2
  136. package/dist/{parser-WFY4ZJUW.js → parser-YVHO2NRM.js} +2 -2
  137. package/dist/{parser-J3BM2AP2.js → parser-YWZGIU3C.js} +2 -2
  138. package/dist/{parser-4B2PIXHI.js → parser-ZFLSULFC.js} +2 -2
  139. package/dist/{parser-RARXAHC7.js → parser-ZR7JAKSW.js} +1 -1
  140. package/dist/{renderer-3QM2DK7I.js → renderer-43IVPARP.js} +3 -3
  141. package/dist/{renderer-GWH5ACJ5.js → renderer-4MEZYGU6.js} +2 -2
  142. package/dist/{renderer-A3PMPUO6.js → renderer-54GXA3UO.js} +5 -5
  143. package/dist/{renderer-W22GX72R.js → renderer-7EAWN7MC.js} +4 -4
  144. package/dist/{renderer-IO3D5E4E.js → renderer-7SEXPBGM.js} +3 -3
  145. package/dist/{renderer-B3CPMS5R.js → renderer-B7B7BQM3.js} +7 -7
  146. package/dist/{renderer-IG72UJHW.js → renderer-I2LYSQBV.js} +3 -3
  147. package/dist/{renderer-OPDSKCQS.js → renderer-J2LOMTBC.js} +3 -3
  148. package/dist/{renderer-TTKTBB4C.js → renderer-JUH6M3XF.js} +6 -6
  149. package/dist/{renderer-COSJM7UG.js → renderer-KY6O5JTX.js} +33 -33
  150. package/dist/{renderer-PLRMST57.js → renderer-LHTDI5RV.js} +4 -4
  151. package/dist/{renderer-3W5T3IU6.js → renderer-LWL3IJOF.js} +3 -3
  152. package/dist/{renderer-SBXCPA3S.js → renderer-NCIDGJ2R.js} +5 -5
  153. package/dist/{renderer-AM4VZSBQ.js → renderer-OPA4JJKX.js} +4 -4
  154. package/dist/{renderer-O5RQHGK2.js → renderer-QMNC7TGN.js} +4 -4
  155. package/dist/{renderer-UVFGW2O6.js → renderer-QQNPJGAP.js} +3 -3
  156. package/dist/{renderer-WQ654YT5.js → renderer-R7RK7FKI.js} +1 -1
  157. package/dist/{renderer-TMQNTUQS.js → renderer-RFP55AW7.js} +10 -7
  158. package/dist/{renderer-FXCVH2M5.js → renderer-S3NFBJCY.js} +10 -7
  159. package/dist/{renderer-OA5D3ZKB.js → renderer-SD4ZHHAR.js} +6 -4
  160. package/dist/{renderer-PSMRAL72.js → renderer-SE7Z5AOL.js} +3 -3
  161. package/dist/{renderer-ON4PTUHJ.js → renderer-T2WUA7MC.js} +5 -5
  162. package/dist/{renderer-KK5BU5K2.js → renderer-TWKEZ3DD.js} +3 -3
  163. package/dist/{renderer-MK47ESCB.js → renderer-U5PD72G7.js} +3 -3
  164. package/dist/{renderer-52CHSV6S.js → renderer-VCTKBUTR.js} +5 -5
  165. package/dist/{renderer-PXGCR7N4.js → renderer-VNZTWATB.js} +3 -3
  166. package/dist/{renderer-4Z7FRQ2A.js → renderer-YDNWK6RI.js} +1 -1
  167. package/dist/{renderer-B4KE3NM4.js → renderer-YDOWBIUB.js} +4 -4
  168. package/dist/{renderer-LD2H7WGP.js → renderer-YQPZ7O2C.js} +1 -1
  169. package/dist/{renderer-6OOJNEQE.js → renderer-ZQ77CM6Y.js} +4 -4
  170. package/dist/{renderer-radial-42LVSG74.js → renderer-radial-TNNEL3YN.js} +4 -4
  171. package/dist/{resolver-XSXE2TRX.js → resolver-6DJLZF6Y.js} +1 -1
  172. package/dist/{state-parser-ROKY5KSI.js → state-parser-NIIVOU2Y.js} +2 -2
  173. package/dist/{state-renderer-MMG23G4W.js → state-renderer-TVLEG32M.js} +11 -7
  174. package/package.json +1 -1
  175. package/dist/chunk-6EK55ART.js +0 -116
  176. package/dist/chunk-HTNLLT34.js +0 -72
  177. /package/dist/{chunk-3FCSOYN4.js → chunk-5P2L5QXE.js} +0 -0
  178. /package/dist/{chunk-HJRP6PXL.js → chunk-BQVTV4LB.js} +0 -0
  179. /package/dist/{chunk-LYRDIVSY.js → chunk-GLCMUTO5.js} +0 -0
@@ -1,7 +1,10 @@
1
+ import {
2
+ searchPlacement
3
+ } from "./chunk-JJUDOR4I.js";
1
4
  import {
2
5
  noteCanvasShift,
3
6
  placeNotes
4
- } from "./chunk-6EK55ART.js";
7
+ } from "./chunk-Q3N7PI3B.js";
5
8
  import {
6
9
  noteBoxSize
7
10
  } from "./chunk-RJNZHFNG.js";
@@ -22,6 +25,7 @@ function computeNodeHeight(shape) {
22
25
  if (shape === "pseudostate") return 24;
23
26
  return shape === "decision" ? 60 : 50;
24
27
  }
28
+ var newDagreGraph = () => new dagre.graphlib.Graph({ compound: true });
25
29
  function layoutGraph(graph, options) {
26
30
  const collapsedChildCounts = options?.collapsedChildCounts;
27
31
  const originalGroups = options?.originalGroups;
@@ -45,33 +49,14 @@ function layoutGraph(graph, options) {
45
49
  if (allNodes.length === 0) {
46
50
  return { nodes: [], edges: [], groups: [], width: 0, height: 0 };
47
51
  }
48
- const g = new dagre.graphlib.Graph({ compound: true });
49
- g.setGraph({
50
- rankdir: graph.direction,
51
- nodesep: 50,
52
- ranksep: 60,
53
- edgesep: 20
54
- });
55
- g.setDefaultEdgeLabel(() => ({}));
56
52
  const nodeDataMap = /* @__PURE__ */ new Map();
57
53
  for (const node of allNodes) {
58
54
  nodeDataMap.set(node.id, node);
59
55
  }
60
- if (graph.groups) {
61
- for (const group of graph.groups) {
62
- g.setNode(group.id, {
63
- label: group.label,
64
- clusterLabelPos: "top"
65
- });
66
- }
67
- }
68
56
  const notesSuppressed = graph.options?.["no-notes"] === "on";
69
57
  const noteByNode = notesSuppressed || !graph.notes ? /* @__PURE__ */ new Map() : resolveNotes(graph.notes, graph.nodes);
70
58
  const noteGeoms = /* @__PURE__ */ new Map();
71
59
  for (const node of allNodes) {
72
- const width = computeNodeWidth(node.label, node.shape);
73
- const height = computeNodeHeight(node.shape);
74
- g.setNode(node.id, { label: node.label, width, height });
75
60
  const note = noteByNode.get(node.id);
76
61
  if (note) {
77
62
  const size = noteBoxSize(note.body);
@@ -84,9 +69,6 @@ function layoutGraph(graph, options) {
84
69
  endLineNumber: note.endLineNumber
85
70
  });
86
71
  }
87
- if (node.group && graph.groups?.some((gr) => gr.id === node.group)) {
88
- g.setParent(node.id, node.group);
89
- }
90
72
  }
91
73
  const edgeDataMap = /* @__PURE__ */ new Map();
92
74
  for (const edge of graph.edges) {
@@ -102,15 +84,55 @@ function layoutGraph(graph, options) {
102
84
  }
103
85
  group.push(edge);
104
86
  }
105
- for (const group of outgoingBySource.values()) {
106
- for (let i = group.length - 1; i >= 0; i--) {
107
- const edge = group[i];
108
- g.setEdge(edge.source, edge.target, {
87
+ const edgeOrder = [];
88
+ for (const group of outgoingBySource.values())
89
+ for (let i = group.length - 1; i >= 0; i--) edgeOrder.push(group[i]);
90
+ const place = (ranker, shuffle) => {
91
+ const ord = shuffle ?? ((a) => a.slice());
92
+ const g2 = newDagreGraph();
93
+ g2.setGraph({
94
+ rankdir: graph.direction,
95
+ ranker,
96
+ nodesep: 50,
97
+ ranksep: 60,
98
+ edgesep: 20
99
+ });
100
+ g2.setDefaultEdgeLabel(() => ({}));
101
+ if (graph.groups) {
102
+ for (const group of graph.groups) {
103
+ g2.setNode(group.id, {
104
+ label: group.label,
105
+ clusterLabelPos: "top"
106
+ });
107
+ }
108
+ }
109
+ for (const node of ord(allNodes)) {
110
+ const width = computeNodeWidth(node.label, node.shape);
111
+ const height = computeNodeHeight(node.shape);
112
+ g2.setNode(node.id, { label: node.label, width, height });
113
+ if (node.group && graph.groups?.some((gr) => gr.id === node.group)) {
114
+ g2.setParent(node.id, node.group);
115
+ }
116
+ }
117
+ for (const edge of ord(edgeOrder)) {
118
+ g2.setEdge(edge.source, edge.target, {
109
119
  label: edge.label ?? ""
110
120
  });
111
121
  }
112
- }
113
- dagre.layout(g);
122
+ dagre.layout(g2);
123
+ return g2;
124
+ };
125
+ const { g, edgePoints } = searchPlacement(graph.direction, place, (lay) => ({
126
+ nodes: allNodes.map((n) => {
127
+ const p = lay.node(n.id);
128
+ return { id: n.id, x: p.x, y: p.y, width: p.width, height: p.height };
129
+ }),
130
+ edges: graph.edges.map((e) => ({
131
+ source: e.source,
132
+ target: e.target,
133
+ points: lay.edge(e.source, e.target)?.points ?? []
134
+ }))
135
+ }));
114
136
  const collapsedGroupIds = collapsedChildCounts ? new Set(collapsedChildCounts.keys()) : /* @__PURE__ */ new Set();
115
137
  const basePositioned = allNodes.map((node) => {
116
138
  const pos = g.node(node.id);
@@ -179,12 +201,12 @@ function layoutGraph(graph, options) {
179
201
  }
180
202
  };
181
203
  });
182
- const layoutEdges = graph.edges.map((edge) => {
204
+ const layoutEdges = graph.edges.map((edge, i) => {
183
205
  const edgeData = g.edge(edge.source, edge.target);
184
206
  return {
185
207
  source: edge.source,
186
208
  target: edge.target,
187
- points: edgeData?.points ?? [],
209
+ points: edgePoints?.[i] ?? edgeData?.points ?? [],
188
210
  ...edge.label !== void 0 && { label: edge.label },
189
211
  lineNumber: edge.lineNumber
190
212
  };
@@ -10,7 +10,7 @@ import {
10
10
  import {
11
11
  injectDefaultTagMetadata,
12
12
  resolveTagColor
13
- } from "./chunk-HX2KJEPD.js";
13
+ } from "./chunk-QKJ6MQXW.js";
14
14
  import {
15
15
  measureText,
16
16
  truncateText
@@ -7,10 +7,10 @@ import {
7
7
  mutedFill,
8
8
  resolveCellColor,
9
9
  resolveColorMode
10
- } from "./chunk-A5EE66RQ.js";
10
+ } from "./chunk-53BJIOLF.js";
11
11
  import {
12
12
  renderIntegratedLegend
13
- } from "./chunk-NJYA4QSN.js";
13
+ } from "./chunk-QVKTAU7P.js";
14
14
  import {
15
15
  getMaxLegendReservedHeight
16
16
  } from "./chunk-NS7L7YKH.js";
@@ -19,7 +19,7 @@ import {
19
19
  } from "./chunk-ICLB27PZ.js";
20
20
  import {
21
21
  tagAttrKey
22
- } from "./chunk-HX2KJEPD.js";
22
+ } from "./chunk-QKJ6MQXW.js";
23
23
  import {
24
24
  LEGEND_GROUP_GAP
25
25
  } from "./chunk-I6GGMCTV.js";
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-BDXC7MDK.js";
6
6
  import {
7
7
  renderIntegratedLegend
8
- } from "./chunk-NJYA4QSN.js";
8
+ } from "./chunk-QVKTAU7P.js";
9
9
  import {
10
10
  FONT_FAMILY
11
11
  } from "./chunk-ICLB27PZ.js";
@@ -13,7 +13,7 @@ import {
13
13
  resolveActiveTagGroup,
14
14
  resolveTagColor,
15
15
  tagAttrKey
16
- } from "./chunk-HX2KJEPD.js";
16
+ } from "./chunk-QKJ6MQXW.js";
17
17
  import {
18
18
  getSeriesColors,
19
19
  mix,
@@ -9,7 +9,7 @@ import {
9
9
  injectDefaultTagMetadata,
10
10
  resolveTagColor,
11
11
  tagAttrKey
12
- } from "./chunk-HX2KJEPD.js";
12
+ } from "./chunk-QKJ6MQXW.js";
13
13
  import {
14
14
  LEGEND_CAPSULE_PAD,
15
15
  LEGEND_DOT_R,
@@ -18,7 +18,7 @@ import {
18
18
  UNTAGGED_TAG_COLOR,
19
19
  resolveTagColor,
20
20
  tagAttrKey
21
- } from "./chunk-HX2KJEPD.js";
21
+ } from "./chunk-QKJ6MQXW.js";
22
22
  import {
23
23
  fillModeFromOptions
24
24
  } from "./chunk-MPJQMMBZ.js";
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  drawCylinderCard,
3
3
  drawQueueCard
4
- } from "./chunk-FDRHBQUG.js";
4
+ } from "./chunk-PUZ63XZM.js";
5
5
  import {
6
6
  CYLINDER_RY,
7
7
  QUEUE_CAP
8
- } from "./chunk-VCHYS3RD.js";
8
+ } from "./chunk-K3BYD3WU.js";
9
9
  import {
10
10
  renderChartTitle
11
11
  } from "./chunk-X6IZP2BD.js";
@@ -18,7 +18,7 @@ import {
18
18
  stripDefaultModifier,
19
19
  tagAttrKey,
20
20
  validateTagGroupNames
21
- } from "./chunk-HX2KJEPD.js";
21
+ } from "./chunk-QKJ6MQXW.js";
22
22
  import {
23
23
  AliasRegistry,
24
24
  C4_REGISTRY,
@@ -434,7 +434,7 @@ function resolveSplits(outbound, diagnostics) {
434
434
  const evenRemainder = undeclared.length > 0 ? remainder / undeclared.length : 0;
435
435
  return outbound.map((e) => ({
436
436
  edge: e,
437
- split: e.split !== null ? e.split : Math.max(0, evenRemainder)
437
+ split: e.split ?? Math.max(0, evenRemainder)
438
438
  }));
439
439
  }
440
440
  function computeInfra(parsed, params = {}) {
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-24YPR5EH.js";
10
10
  import {
11
11
  renderIntegratedLegend
12
- } from "./chunk-NJYA4QSN.js";
12
+ } from "./chunk-QVKTAU7P.js";
13
13
  import {
14
14
  ARROWHEAD_HEIGHT,
15
15
  ARROWHEAD_WIDTH
@@ -13,7 +13,7 @@ import {
13
13
  tagAttrKey,
14
14
  validateTagGroupNames,
15
15
  validateTagValues
16
- } from "./chunk-HX2KJEPD.js";
16
+ } from "./chunk-QKJ6MQXW.js";
17
17
  import {
18
18
  ALL_CHART_TYPES,
19
19
  AliasRegistry,
@@ -100,7 +100,7 @@ function parseSitemap(content, palette) {
100
100
  const pushError = (line, message) => {
101
101
  const diag = makeDgmoError(line, message);
102
102
  result.diagnostics.push(diag);
103
- if (!result.error) result.error = formatDgmoError(diag);
103
+ result.error ??= formatDgmoError(diag);
104
104
  };
105
105
  const pushWarning = (line, message) => {
106
106
  result.diagnostics.push(makeDgmoError(line, message, "warning"));
@@ -9,7 +9,7 @@ import {
9
9
  keepSwimlaneToggleFocus,
10
10
  renderIntegratedLegend,
11
11
  wireSwimlaneToggle
12
- } from "./chunk-NJYA4QSN.js";
12
+ } from "./chunk-QVKTAU7P.js";
13
13
  import {
14
14
  EDGE_DASH,
15
15
  GRID_DASH,
@@ -34,7 +34,7 @@ import {
34
34
  import {
35
35
  resolveTagColor,
36
36
  tagAttrKey
37
- } from "./chunk-HX2KJEPD.js";
37
+ } from "./chunk-QKJ6MQXW.js";
38
38
  import {
39
39
  LEGEND_CAPSULE_PAD,
40
40
  LEGEND_DOT_R,
@@ -87,7 +87,7 @@ function renderEras(g, eras, scale, isVertical, innerWidth, innerHeight, onEnter
87
87
  const start = scale(startVal);
88
88
  const end = scale(endVal);
89
89
  if (!Number.isFinite(start) || !Number.isFinite(end)) return;
90
- const color = era.color || eraColors[i % eraColors.length];
90
+ const color = era.color ?? eraColors[i % eraColors.length];
91
91
  const eraG = g.append("g").attr("class", "tl-era").attr("data-line-number", String(era.lineNumber)).attr("data-era-start", String(startVal)).attr("data-era-end", String(endVal)).style("cursor", "pointer");
92
92
  let labelEl;
93
93
  let displayLabel = era.label;
@@ -133,7 +133,7 @@ function renderEras(g, eras, scale, isVertical, innerWidth, innerHeight, onEnter
133
133
  });
134
134
  }
135
135
  function renderMarkers(g, markers, scale, isVertical, innerWidth, innerHeight, onEnter, onLeave, _hasScale = false, _tooltip = null, palette, reservedLabelY, fillMode, outlineBg) {
136
- const defaultColor = palette?.accent || "#3a9188";
136
+ const defaultColor = palette?.accent ?? "#3a9188";
137
137
  const positions = markers.map((m) => {
138
138
  const v = parseTimelineDate(m.date);
139
139
  return Number.isFinite(v) ? scale(v) : NaN;
@@ -144,7 +144,7 @@ function renderMarkers(g, markers, scale, isVertical, innerWidth, innerHeight, o
144
144
  if (!Number.isFinite(dateVal)) return;
145
145
  const pos = positions[i];
146
146
  if (!Number.isFinite(pos)) return;
147
- const color = marker.color || defaultColor;
147
+ const color = marker.color ?? defaultColor;
148
148
  const lineOpacity = 0.5;
149
149
  const diamondSize = 5;
150
150
  const outlineDiamond = fillMode === "outline" && outlineBg !== void 0;
@@ -906,7 +906,7 @@ function renderTimelineHorizontalTimeSort(container, parsed, palette, isDark, se
906
906
  const y = i * rowH + rowH / 2;
907
907
  const x = xScale(parseTimelineDate(ev.date));
908
908
  const color = eventColor(ev);
909
- const evG = g.append("g").attr("class", "tl-event").attr("data-group", ev.group || "").attr("data-line-number", String(ev.lineNumber)).attr("data-date", String(parseTimelineDate(ev.date))).attr(
909
+ const evG = g.append("g").attr("class", "tl-event").attr("data-group", ev.group ?? "").attr("data-line-number", String(ev.lineNumber)).attr("data-date", String(parseTimelineDate(ev.date))).attr(
910
910
  "data-end-date",
911
911
  ev.endDate ? String(parseTimelineDate(ev.endDate)) : null
912
912
  ).style("cursor", "pointer").on("mouseenter", function(event) {
@@ -948,7 +948,7 @@ function renderTimelineHorizontalTimeSort(container, parsed, palette, isDark, se
948
948
  if (ev.uncertain) {
949
949
  const gradientId = `uncertain-ts-${ev.lineNumber}`;
950
950
  const strokeGradientId = `uncertain-ts-s-${ev.lineNumber}`;
951
- const defs = svg.select("defs").node() || svg.append("defs").node();
951
+ const defs = svg.select("defs").node() ?? svg.append("defs").node();
952
952
  const defsEl = d3Selection.select(defs);
953
953
  defsEl.append("linearGradient").attr("id", gradientId).attr("x1", "0%").attr("y1", "0%").attr("x2", "100%").attr("y2", "0%").selectAll("stop").data([
954
954
  { offset: "0%", opacity: 1 },
@@ -1217,7 +1217,7 @@ function renderTimelineHorizontalGrouped(container, parsed, palette, isDark, set
1217
1217
  if (ev.uncertain) {
1218
1218
  const gradientId = `uncertain-${ev.lineNumber}`;
1219
1219
  const strokeGradientId = `uncertain-s-${ev.lineNumber}`;
1220
- const defs = svg.select("defs").node() || svg.append("defs").node();
1220
+ const defs = svg.select("defs").node() ?? svg.append("defs").node();
1221
1221
  const defsEl = d3Selection.select(defs);
1222
1222
  defsEl.append("linearGradient").attr("id", gradientId).attr("x1", "0%").attr("y1", "0%").attr("x2", "100%").attr("y2", "0%").selectAll("stop").data([
1223
1223
  { offset: "0%", opacity: 1 },
@@ -1419,7 +1419,7 @@ function renderTimelineVertical(container, parsed, palette, isDark, setup, hover
1419
1419
  if (ev.uncertain) {
1420
1420
  const gradientId = `uncertain-vg-${ev.lineNumber}`;
1421
1421
  const strokeGradientId = `uncertain-vg-s-${ev.lineNumber}`;
1422
- const defs = svg.select("defs").node() || svg.append("defs").node();
1422
+ const defs = svg.select("defs").node() ?? svg.append("defs").node();
1423
1423
  const defsEl = d3Selection.select(defs);
1424
1424
  defsEl.append("linearGradient").attr("id", gradientId).attr("x1", "0%").attr("y1", "0%").attr("x2", "0%").attr("y2", "100%").selectAll("stop").data([
1425
1425
  { offset: "0%", opacity: 1 },
@@ -1535,7 +1535,7 @@ function renderTimelineVertical(container, parsed, palette, isDark, setup, hover
1535
1535
  for (const ev of sorted) {
1536
1536
  const y = yScale(parseTimelineDate(ev.date));
1537
1537
  const color = eventColor(ev);
1538
- const evG = g.append("g").attr("class", "tl-event").attr("data-group", ev.group || "").attr("data-line-number", String(ev.lineNumber)).attr("data-date", String(parseTimelineDate(ev.date))).attr(
1538
+ const evG = g.append("g").attr("class", "tl-event").attr("data-group", ev.group ?? "").attr("data-line-number", String(ev.lineNumber)).attr("data-date", String(parseTimelineDate(ev.date))).attr(
1539
1539
  "data-end-date",
1540
1540
  ev.endDate ? String(parseTimelineDate(ev.endDate)) : null
1541
1541
  ).style("cursor", "pointer").on("mouseenter", function(event) {
@@ -1560,7 +1560,7 @@ function renderTimelineVertical(container, parsed, palette, isDark, setup, hover
1560
1560
  if (ev.uncertain) {
1561
1561
  const gradientId = `uncertain-v-${ev.lineNumber}`;
1562
1562
  const strokeGradientId = `uncertain-v-s-${ev.lineNumber}`;
1563
- const defs = svg.select("defs").node() || svg.append("defs").node();
1563
+ const defs = svg.select("defs").node() ?? svg.append("defs").node();
1564
1564
  const defsEl = d3Selection.select(defs);
1565
1565
  defsEl.append("linearGradient").attr("id", gradientId).attr("x1", "0%").attr("y1", "0%").attr("x2", "0%").attr("y2", "100%").selectAll("stop").data([
1566
1566
  { offset: "0%", opacity: 1 },
@@ -7,13 +7,13 @@ import {
7
7
  } from "./chunk-KATED53P.js";
8
8
  import {
9
9
  layoutERDiagram
10
- } from "./chunk-IIOLFAGJ.js";
10
+ } from "./chunk-5DIBB2QG.js";
11
11
  import {
12
12
  ScaleContext
13
13
  } from "./chunk-24YPR5EH.js";
14
14
  import {
15
15
  renderIntegratedLegend
16
- } from "./chunk-NJYA4QSN.js";
16
+ } from "./chunk-QVKTAU7P.js";
17
17
  import {
18
18
  EDGE_LABEL_KNOCKOUT_OPACITY,
19
19
  EDGE_STROKE_WIDTH,
@@ -38,11 +38,11 @@ import {
38
38
  } from "./chunk-ICLB27PZ.js";
39
39
  import {
40
40
  parseERDiagram
41
- } from "./chunk-5TZPIKNV.js";
41
+ } from "./chunk-3SLRZKLB.js";
42
42
  import {
43
43
  resolveTagColor,
44
44
  tagAttrKey
45
- } from "./chunk-HX2KJEPD.js";
45
+ } from "./chunk-QKJ6MQXW.js";
46
46
  import {
47
47
  fillModeFromOptions,
48
48
  legendInlineRequested,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  GRAPH_DX
3
- } from "./chunk-7TF3QOOD.js";
3
+ } from "./chunk-TIVMAITN.js";
4
4
  import {
5
5
  parseInArrowLabel
6
6
  } from "./chunk-N7VMGZCU.js";
@@ -17,7 +17,7 @@ import {
17
17
  stripDefaultModifier,
18
18
  tagAttrKey,
19
19
  validateTagGroupNames
20
- } from "./chunk-HX2KJEPD.js";
20
+ } from "./chunk-QKJ6MQXW.js";
21
21
  import {
22
22
  AliasRegistry,
23
23
  INFRA_BEHAVIOR_KEY_SET,
@@ -206,7 +206,7 @@ function parseInfra(content) {
206
206
  const setError = (line, message) => {
207
207
  const diag = makeDgmoError(line, message);
208
208
  result.diagnostics.push(diag);
209
- if (!result.error) result.error = formatDgmoError(diag);
209
+ result.error ??= formatDgmoError(diag);
210
210
  };
211
211
  const warn = (line, message) => {
212
212
  result.diagnostics.push(makeDgmoError(line, message, "warning"));
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  computeNodeText,
3
3
  layoutMindmap
4
- } from "./chunk-LBRHDWEA.js";
4
+ } from "./chunk-CVZBLHHW.js";
5
5
  import {
6
6
  renderInlineText
7
7
  } from "./chunk-S7W75MIM.js";
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-24YPR5EH.js";
11
11
  import {
12
12
  renderIntegratedLegend
13
- } from "./chunk-NJYA4QSN.js";
13
+ } from "./chunk-QVKTAU7P.js";
14
14
  import {
15
15
  CARD_RADIUS,
16
16
  COLLAPSE_BAR_HEIGHT,
@@ -38,13 +38,13 @@ import {
38
38
  } from "./chunk-ICLB27PZ.js";
39
39
  import {
40
40
  parseMindmap
41
- } from "./chunk-DNMICILX.js";
41
+ } from "./chunk-XQTRGKQ3.js";
42
42
  import {
43
43
  preprocessDescriptionLine
44
44
  } from "./chunk-IYULMRBE.js";
45
45
  import {
46
46
  tagAttrKey
47
- } from "./chunk-HX2KJEPD.js";
47
+ } from "./chunk-QKJ6MQXW.js";
48
48
  import {
49
49
  fillModeFromOptions,
50
50
  legendInlineRequested,
@@ -326,7 +326,7 @@ function renderMindmap(container, parsed, layout, palette, isDark, onClickItem,
326
326
  node.description,
327
327
  node.depth,
328
328
  node.width,
329
- hideDescriptions || collapsed
329
+ !!hideDescriptions || collapsed
330
330
  );
331
331
  const {
332
332
  labelLines,
@@ -635,7 +635,7 @@ function parseExtendedChartFull(content, palette) {
635
635
  return canonical;
636
636
  }
637
637
  const aliased = nameAliasMap.resolve(trimmed);
638
- return aliased !== void 0 ? aliased : trimmed;
638
+ return aliased ?? trimmed;
639
639
  }
640
640
  for (let i = 0; i < lines.length; i++) {
641
641
  const trimmed = lines[i].trim();
@@ -714,10 +714,10 @@ function parseExtendedChartFull(content, palette) {
714
714
  palette
715
715
  ) ?? null : null;
716
716
  if (catColor) {
717
- if (!result.categoryColors) result.categoryColors = {};
717
+ result.categoryColors ??= {};
718
718
  result.categoryColors[catName] = catColor;
719
719
  }
720
- if (!result.categoryLineNumbers) result.categoryLineNumbers = {};
720
+ result.categoryLineNumbers ??= {};
721
721
  result.categoryLineNumbers[catName] = lineNumber;
722
722
  currentCategory = catName;
723
723
  continue;
@@ -743,7 +743,7 @@ function parseExtendedChartFull(content, palette) {
743
743
  lineNumber
744
744
  );
745
745
  if (sourceColor || targetColor) {
746
- if (!result.nodeColors) result.nodeColors = {};
746
+ result.nodeColors ??= {};
747
747
  if (sourceColor) result.nodeColors[source] = sourceColor;
748
748
  if (targetColor) result.nodeColors[target] = targetColor;
749
749
  }
@@ -764,7 +764,7 @@ function parseExtendedChartFull(content, palette) {
764
764
  );
765
765
  continue;
766
766
  }
767
- if (!result.links) result.links = [];
767
+ result.links ??= [];
768
768
  result.links.push({
769
769
  source,
770
770
  target,
@@ -803,7 +803,7 @@ function parseExtendedChartFull(content, palette) {
803
803
  lineNumber
804
804
  );
805
805
  if (targetColor) {
806
- if (!result.nodeColors) result.nodeColors = {};
806
+ result.nodeColors ??= {};
807
807
  result.nodeColors[target] = targetColor;
808
808
  }
809
809
  const childValue = dataRow2.values[0];
@@ -817,7 +817,7 @@ function parseExtendedChartFull(content, palette) {
817
817
  );
818
818
  continue;
819
819
  }
820
- if (!result.links) result.links = [];
820
+ result.links ??= [];
821
821
  result.links.push({
822
822
  source,
823
823
  target,
@@ -850,7 +850,7 @@ function parseExtendedChartFull(content, palette) {
850
850
  lineNumber
851
851
  );
852
852
  if (nodeColor) {
853
- if (!result.nodeColors) result.nodeColors = {};
853
+ result.nodeColors ??= {};
854
854
  result.nodeColors[nodeName] = nodeColor;
855
855
  }
856
856
  sankeyStack.push({ name: nodeName, indent });
@@ -1025,7 +1025,7 @@ function parseExtendedChartFull(content, palette) {
1025
1025
  lineNumber
1026
1026
  );
1027
1027
  const fnValue = trimmed.substring(colonIndex + 1).trim();
1028
- if (!result.functions) result.functions = [];
1028
+ result.functions ??= [];
1029
1029
  result.functions.push({
1030
1030
  name: fnName,
1031
1031
  expression: fnValue,
@@ -1044,7 +1044,7 @@ function parseExtendedChartFull(content, palette) {
1044
1044
  result.diagnostics
1045
1045
  );
1046
1046
  if (scatterData) {
1047
- if (!result.scatterPoints) result.scatterPoints = [];
1047
+ result.scatterPoints ??= [];
1048
1048
  result.scatterPoints.push(scatterData);
1049
1049
  continue;
1050
1050
  }
@@ -1060,7 +1060,7 @@ function parseExtendedChartFull(content, palette) {
1060
1060
  const surplus = surplusValueDiagnostic(dataRow2, expected, lineNumber);
1061
1061
  if (surplus) result.diagnostics.push(surplus);
1062
1062
  }
1063
- if (!result.heatmapRows) result.heatmapRows = [];
1063
+ result.heatmapRows ??= [];
1064
1064
  result.heatmapRows.push({
1065
1065
  label: dataRow2.label,
1066
1066
  values: dataRow2.values,
@@ -1123,9 +1123,7 @@ function parseExtendedChartFull(content, palette) {
1123
1123
  "No functions found. Add functions in format: Name: expression"
1124
1124
  );
1125
1125
  }
1126
- if (!result.xRange) {
1127
- result.xRange = { min: -10, max: 10 };
1128
- }
1126
+ result.xRange ??= { min: -10, max: 10 };
1129
1127
  } else if (result.type === "scatter") {
1130
1128
  if (!result.scatterPoints || result.scatterPoints.length === 0) {
1131
1129
  warn(
@@ -299,7 +299,7 @@ function parseVersionControl(content, palette) {
299
299
  if (existing) {
300
300
  active = name;
301
301
  } else {
302
- makeBranch(name, parent != null ? parent : active, colorToken, ord);
302
+ makeBranch(name, parent ?? active, colorToken, ord);
303
303
  active = name;
304
304
  }
305
305
  continue;
@@ -9,7 +9,7 @@ import {
9
9
  keepSwimlaneToggleFocus,
10
10
  renderIntegratedLegend,
11
11
  wireSwimlaneToggle
12
- } from "./chunk-NJYA4QSN.js";
12
+ } from "./chunk-QVKTAU7P.js";
13
13
  import {
14
14
  EDGE_DASH,
15
15
  GRID_DASH,
@@ -40,7 +40,7 @@ import {
40
40
  resolveActiveTagGroup,
41
41
  resolveTagColor,
42
42
  tagAttrKey
43
- } from "./chunk-HX2KJEPD.js";
43
+ } from "./chunk-QKJ6MQXW.js";
44
44
  import {
45
45
  LEGEND_CAPSULE_PAD,
46
46
  LEGEND_DOT_R,
@@ -534,7 +534,7 @@ function drawGantt(container, resolved, palette, isDark, options, exportDims) {
534
534
  currentActiveGroup,
535
535
  true
536
536
  );
537
- const groupColor = tagColor && tagColor !== UNTAGGED_TAG_COLOR ? tagColor : group.color || palette.textMuted;
537
+ const groupColor = tagColor && tagColor !== UNTAGGED_TAG_COLOR ? tagColor : group.color ?? palette.textMuted;
538
538
  renderLabelBand(
539
539
  svg,
540
540
  sMarginTop + yOffset + sBarH / 2,
@@ -1406,7 +1406,7 @@ function renderErasAndMarkers(g, svg, resolved, xScale, innerHeight, palette, er
1406
1406
  const era = resolved.eras[i];
1407
1407
  if (!era) continue;
1408
1408
  const eraColors = getEraColors(palette);
1409
- const color = era.color || eraColors[i % eraColors.length];
1409
+ const color = era.color ?? eraColors[i % eraColors.length];
1410
1410
  const sx = xScale(parseDateToFractionalYear(era.startDate));
1411
1411
  const ex = xScale(parseDateToFractionalYear(era.endDate));
1412
1412
  if (ex <= sx) continue;
@@ -1469,7 +1469,7 @@ function renderErasAndMarkers(g, svg, resolved, xScale, innerHeight, palette, er
1469
1469
  for (let i = 0; i < resolved.markers.length; i++) {
1470
1470
  const marker = resolved.markers[i];
1471
1471
  if (!marker) continue;
1472
- const color = marker.color || palette.accent || "#3a9188";
1472
+ const color = marker.color ?? (palette.accent || "#3a9188");
1473
1473
  const mx = markerXs[i];
1474
1474
  const markerDate = parseDateStringToDate(marker.date);
1475
1475
  const diamondSize = 5;
@@ -2150,7 +2150,7 @@ function resolveTaskColor(rt, activeTagGroup, resolved, seriesColors, palette) {
2150
2150
  return seriesColors[groupIdx % seriesColors.length];
2151
2151
  }
2152
2152
  }
2153
- return palette.accent || seriesColors[0] || "#4a90d9";
2153
+ return palette.accent || (seriesColors[0] ?? "#4a90d9");
2154
2154
  }
2155
2155
  function renderTimeScaleHorizontal(g, scale, _innerWidth, innerHeight, textColor) {
2156
2156
  const domain = scale.domain();
@@ -8,7 +8,7 @@ import {
8
8
  tagAttrKey,
9
9
  validateTagGroupNames,
10
10
  validateTagValues
11
- } from "./chunk-HX2KJEPD.js";
11
+ } from "./chunk-QKJ6MQXW.js";
12
12
  import {
13
13
  TREEMAP_REGISTRY,
14
14
  extractColor,
@@ -108,7 +108,7 @@ function parseTreemap(content, palette) {
108
108
  const pushError = (line, message, code) => {
109
109
  const diag = makeDgmoError(line, message, "error", code);
110
110
  result.diagnostics.push(diag);
111
- if (!result.error) result.error = formatDgmoError(diag);
111
+ result.error ??= formatDgmoError(diag);
112
112
  };
113
113
  const pushWarning = (line, message, code) => {
114
114
  result.diagnostics.push(makeDgmoError(line, message, "warning", code));