@diagrammo/dgmo 0.89.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 (233) hide show
  1. package/README.md +1 -1
  2. package/dist/advanced.d.ts +589 -15
  3. package/dist/advanced.js +813 -211
  4. package/dist/block.d.ts +11 -2
  5. package/dist/block.js +94 -64
  6. package/dist/{calculator-35YVW4QO.js → calculator-3LZUWOBK.js} +2 -2
  7. package/dist/{chart-meta-Bev5Ebjr.d.ts → chart-meta-B_WTMP0y.d.ts} +1 -1
  8. package/dist/chart-meta.d.ts +2 -2
  9. package/dist/chart-meta.js +18 -17
  10. package/dist/{chart-types-Bf8C5QQW.d.ts → chart-types-V2NcgN5O.d.ts} +4 -0
  11. package/dist/{charts-d3-KEQSUWKP.js → charts-d3-YXD6VGZQ.js} +8 -7
  12. package/dist/{chunk-PMNITNPR.js → chunk-273GB7WK.js} +6 -5
  13. package/dist/{chunk-HAMF4F3P.js → chunk-2A4OFZ2Z.js} +5 -5
  14. package/dist/{chunk-K5XT7NHD.js → chunk-2AM6VA3A.js} +10 -10
  15. package/dist/{chunk-XJ2TBXHA.js → chunk-2UV627GG.js} +9 -9
  16. package/dist/{chunk-7WGCQE2E.js → chunk-2ZVLI6GQ.js} +1 -1
  17. package/dist/{chunk-JVZ7KFAX.js → chunk-37QQXKFV.js} +9 -10
  18. package/dist/{chunk-M2BCY7H3.js → chunk-3LINSNJT.js} +199 -146
  19. package/dist/{chunk-WPL5PFXE.js → chunk-3SLRZKLB.js} +6 -6
  20. package/dist/chunk-3UR4F7FE.js +14 -0
  21. package/dist/{chunk-ZUCXFXLD.js → chunk-3YTAOMMN.js} +2 -2
  22. package/dist/{chunk-NIUO2TNR.js → chunk-4HG4PYHM.js} +197 -203
  23. package/dist/{chunk-BOO24UMJ.js → chunk-4YO7VJTP.js} +1 -1
  24. package/dist/{chunk-HUNDJTTH.js → chunk-53BJIOLF.js} +1 -1
  25. package/dist/{chunk-LR6RRDWN.js → chunk-57L2JPP2.js} +10 -6
  26. package/dist/{chunk-IIOLFAGJ.js → chunk-5DIBB2QG.js} +51 -32
  27. package/dist/{chunk-S2WE7TVK.js → chunk-5MDQMB6A.js} +1 -1
  28. package/dist/{chunk-7Z2VFRP5.js → chunk-5U6DXIMV.js} +47 -24
  29. package/dist/{chunk-QIOYTQDZ.js → chunk-5VPWIC6T.js} +9 -9
  30. package/dist/{chunk-JRUEIRJB.js → chunk-634LDSN6.js} +3 -3
  31. package/dist/{chunk-VEPIAUSK.js → chunk-6BQSDF77.js} +1 -5
  32. package/dist/{chunk-LPYYZCSI.js → chunk-6NO3MNBC.js} +3 -3
  33. package/dist/{chunk-ITSBBQTH.js → chunk-6QEXWMBP.js} +13 -17
  34. package/dist/{chunk-DDPGEGHB.js → chunk-7BBRSOKS.js} +3 -3
  35. package/dist/{chunk-WQ6G6FFM.js → chunk-AR4QVMWG.js} +5 -2
  36. package/dist/{chunk-BB6QKWHZ.js → chunk-B6EUFLRP.js} +10 -10
  37. package/dist/{chunk-C4FRGZGX.js → chunk-CDT33RHG.js} +1 -1
  38. package/dist/{chunk-WP22MHH6.js → chunk-CPGKRI7H.js} +10 -13
  39. package/dist/{chunk-ZNNVI5SR.js → chunk-CU2PZLZP.js} +53 -31
  40. package/dist/{chunk-CUYHST3B.js → chunk-CVZBLHHW.js} +1 -1
  41. package/dist/{chunk-Y7PSAHAY.js → chunk-CXIPV2FY.js} +3 -3
  42. package/dist/{chunk-NRPELUB6.js → chunk-D7DXNQW5.js} +2 -2
  43. package/dist/{chunk-YMFQLWZ2.js → chunk-D7PP35BA.js} +1 -1
  44. package/dist/{chunk-RGWYZR3S.js → chunk-DLX7MEN4.js} +2 -2
  45. package/dist/chunk-EDPDAUBL.js +825 -0
  46. package/dist/{chunk-GSYZZFI5.js → chunk-EP7BT3HU.js} +2 -2
  47. package/dist/{chunk-ICZ7M6IZ.js → chunk-EQJ3U5EW.js} +1 -1
  48. package/dist/{chunk-3C2FWS2J.js → chunk-EWERNTOX.js} +1 -1
  49. package/dist/{chunk-XUCQVKLQ.js → chunk-F2436VRR.js} +4 -4
  50. package/dist/{chunk-UG2XG57E.js → chunk-F26ZPBSF.js} +3 -3
  51. package/dist/{chunk-UWKRPQZO.js → chunk-FJCYK4K3.js} +25 -22
  52. package/dist/{chunk-FKLE6QA3.js → chunk-G22UV5AF.js} +12 -12
  53. package/dist/{chunk-GUTZCRBT.js → chunk-G3EUQMV4.js} +4 -4
  54. package/dist/{chunk-SOPM5PLO.js → chunk-GCDW3WAY.js} +14 -14
  55. package/dist/{chunk-7UDAIP6W.js → chunk-HFG7KQOY.js} +13 -15
  56. package/dist/{chunk-ID2K3IHI.js → chunk-HLE5QGZJ.js} +1 -1
  57. package/dist/{chunk-QFHWYWQL.js → chunk-HLVGZXM5.js} +2 -2
  58. package/dist/{chunk-7C2RAGPT.js → chunk-HSGWR2FL.js} +16 -16
  59. package/dist/{chunk-P3SKSKJI.js → chunk-HWXUQCDY.js} +3 -3
  60. package/dist/{chunk-HTWH2XQL.js → chunk-HYV6GSXM.js} +6 -3
  61. package/dist/{chunk-3RYBTEF5.js → chunk-I74AQRVD.js} +6 -12
  62. package/dist/chunk-IHK3Y2HG.js +781 -0
  63. package/dist/{chunk-7KPHRTND.js → chunk-II4XJETG.js} +1 -1
  64. package/dist/{chunk-RXIKESRI.js → chunk-IMHNZITR.js} +2 -2
  65. package/dist/{chunk-TAP2NZEU.js → chunk-IMKPFW67.js} +13 -13
  66. package/dist/{chunk-FKZ2Y3Q5.js → chunk-IS6WFBX7.js} +3 -3
  67. package/dist/{chunk-47E5UTXE.js → chunk-IUBCDNT2.js} +2 -2
  68. package/dist/{chunk-EXKCRXPO.js → chunk-IWTUXGHN.js} +12 -12
  69. package/dist/{chunk-C7QRRTAW.js → chunk-J2SQNZ6D.js} +2 -2
  70. package/dist/{chunk-DZPHN2WN.js → chunk-JA2S7PHR.js} +14 -14
  71. package/dist/{chunk-DPSMX4EY.js → chunk-JJQWCI35.js} +4 -4
  72. package/dist/chunk-JJUDOR4I.js +110 -0
  73. package/dist/{chunk-LYLNMN77.js → chunk-K3BYD3WU.js} +8 -3
  74. package/dist/{chunk-3AQJNY65.js → chunk-KFXY5IW2.js} +149 -43
  75. package/dist/{chunk-J64NZ6NF.js → chunk-KSZHIAI2.js} +1 -1
  76. package/dist/{chunk-LCJURK7L.js → chunk-LKR4FACF.js} +2 -4
  77. package/dist/{chunk-PIXJL77H.js → chunk-M6J25PAZ.js} +1 -1
  78. package/dist/{chunk-IJ27L3R4.js → chunk-MA42PIGJ.js} +1 -1
  79. package/dist/{chunk-IQ6P3HDE.js → chunk-MI6SJJQU.js} +2 -2
  80. package/dist/{chunk-N4BBSDWI.js → chunk-MJKQ5ZYY.js} +140 -151
  81. package/dist/{chunk-6K7RODXG.js → chunk-MKFQ5E7J.js} +1 -1
  82. package/dist/{chunk-AZ24RI5L.js → chunk-MNL547RV.js} +6 -6
  83. package/dist/{chunk-44GP7PD5.js → chunk-MPJQMMBZ.js} +12 -0
  84. package/dist/{chunk-ECMA6XE2.js → chunk-N254IJM2.js} +13 -13
  85. package/dist/{layout-search-YKUL4VBV.js → chunk-NWPMLX2V.js} +27 -30
  86. package/dist/{chunk-DV2VEJCC.js → chunk-NWSPPGIE.js} +6 -6
  87. package/dist/{chunk-GDJW64XE.js → chunk-OYKNMFUY.js} +1 -1
  88. package/dist/{chunk-B3S76BZO.js → chunk-PSGSFRRE.js} +4 -4
  89. package/dist/{chunk-4AJKOUBO.js → chunk-PUZ63XZM.js} +13 -11
  90. package/dist/{chunk-UQLHKLF4.js → chunk-PZVTFQI2.js} +8 -8
  91. package/dist/{chunk-W7QN5BC5.js → chunk-Q3N7PI3B.js} +180 -7
  92. package/dist/{chunk-L5AFONQU.js → chunk-QKJ6MQXW.js} +2 -4
  93. package/dist/{chunk-7SX4IY6T.js → chunk-QVKTAU7P.js} +1 -1
  94. package/dist/{chunk-SLQT3JP3.js → chunk-R7BSF7Z7.js} +1 -1
  95. package/dist/{chunk-4R6OMKXB.js → chunk-RHXIUUWB.js} +5 -5
  96. package/dist/{chunk-MHAYUS65.js → chunk-RMTOZALT.js} +8 -5
  97. package/dist/{chunk-HSRQDWV7.js → chunk-ROCBGUJN.js} +8 -17
  98. package/dist/{chunk-44FTCIRI.js → chunk-RVTYIGWZ.js} +9 -9
  99. package/dist/{chunk-RU725VCJ.js → chunk-SKF7XLCM.js} +10 -35
  100. package/dist/{chunk-RPKBWJBB.js → chunk-SMTWQ66K.js} +6 -6
  101. package/dist/{chunk-3AX6MCI6.js → chunk-SPQVER4T.js} +2 -2
  102. package/dist/{chunk-CX6OH5WP.js → chunk-SWBHH2UW.js} +4 -4
  103. package/dist/{chunk-WP2RLGDI.js → chunk-TCX5PMEY.js} +1 -1
  104. package/dist/{chunk-7TF3QOOD.js → chunk-TIVMAITN.js} +14 -0
  105. package/dist/{chunk-NSR2CGV6.js → chunk-TLPY4ZBI.js} +611 -437
  106. package/dist/{chunk-WRCAH3UO.js → chunk-TPEYEOXA.js} +15 -15
  107. package/dist/{chunk-FJNXXGTR.js → chunk-UWJP4JSZ.js} +3 -3
  108. package/dist/{chunk-MY6GUH26.js → chunk-V3KHZQPK.js} +3 -3
  109. package/dist/{chunk-66YFDTT6.js → chunk-VGSSAMLA.js} +4 -4
  110. package/dist/{chunk-Q6SQISHT.js → chunk-VMD2CYVP.js} +311 -74
  111. package/dist/{chunk-MFW6P7WH.js → chunk-WNTPJZU7.js} +3 -3
  112. package/dist/{chunk-7W4XLIVH.js → chunk-WTE27AJT.js} +14 -14
  113. package/dist/{chunk-UKJLPA7R.js → chunk-X6IZP2BD.js} +1 -1
  114. package/dist/{chunk-2GM7N5TV.js → chunk-XLAREWBK.js} +9 -9
  115. package/dist/{chunk-AYOVY75O.js → chunk-XLPJJ35N.js} +4 -4
  116. package/dist/{chunk-NGC3IZRY.js → chunk-XQTRGKQ3.js} +4 -4
  117. package/dist/{chunk-WEF6MXFG.js → chunk-YZG37S7L.js} +9 -9
  118. package/dist/{chunk-LFKSHDVI.js → chunk-ZB2Q67NO.js} +14 -13
  119. package/dist/{chunk-JQ57AWDL.js → chunk-ZJ4PYTCK.js} +1 -1
  120. package/dist/completion-registry.d.ts +6 -0
  121. package/dist/completion-registry.js +62 -6
  122. package/dist/{compute-JAP5E2E4.js → compute-2XWFVO7K.js} +1 -1
  123. package/dist/{d3-B6524aaP.d.ts → d3-2S3PrXik.d.ts} +11 -0
  124. package/dist/dgmo-router-YHBMKTXY.js +94 -0
  125. package/dist/{dimensions-7MF7VSGS.js → dimensions-QMGWJQTR.js} +5 -5
  126. package/dist/editor.js +12 -0
  127. package/dist/{flowchart-parser-GG7XBLQH.js → flowchart-parser-BLJ6RA53.js} +4 -4
  128. package/dist/{flowchart-renderer-DZQZRL2F.js → flowchart-renderer-FXRQKXAK.js} +12 -8
  129. package/dist/highlight.js +12 -0
  130. package/dist/index.d.ts +26 -5
  131. package/dist/index.js +84 -57
  132. package/dist/{layout-5VSMZPMG.js → layout-5HCEF7VO.js} +1 -1
  133. package/dist/{layout-6L3BIFEZ.js → layout-6PLSBB5X.js} +3 -3
  134. package/dist/{layout-UIV56NUA.js → layout-B7PQRAMB.js} +1 -1
  135. package/dist/{layout-IGAVGDME.js → layout-CCVCLZ6S.js} +1 -1
  136. package/dist/{layout-PP36LUTA.js → layout-CRUAP7JG.js} +3 -3
  137. package/dist/{layout-Q3RYSODA.js → layout-G42FDCF3.js} +3 -3
  138. package/dist/{layout-EFEZ533S.js → layout-IV4H2FLB.js} +3 -3
  139. package/dist/{layout-4RRC7XU7.js → layout-JTNRSGOS.js} +6 -3
  140. package/dist/{layout-H4K54IW3.js → layout-RBLD5EGX.js} +6 -3
  141. package/dist/{layout-SW3XWYKC.js → layout-ROAVGBUC.js} +1 -1
  142. package/dist/{layout-XUW444O5.js → layout-T2DQ4M77.js} +8 -4
  143. package/dist/{layout-MSSHF45T.js → layout-UPQGIT3N.js} +2 -2
  144. package/dist/{layout-DXVAYF6W.js → layout-VRJ5YFUE.js} +2 -2
  145. package/dist/{layout-ZP7XYVXF.js → layout-YKGQRFDM.js} +2 -4
  146. package/dist/layout-search-L75YOBME.js +42 -0
  147. package/dist/{palettes-WZAIQTEG.js → palettes-WQHELGVQ.js} +2 -1
  148. package/dist/{parser-ZLKYDFI5.js → parser-2XCDVLSN.js} +3 -3
  149. package/dist/{parser-GZ3LVF72.js → parser-3MGA2MTM.js} +2 -2
  150. package/dist/{parser-NOANDFJ4.js → parser-4AR25MAS.js} +2 -2
  151. package/dist/{parser-GCCWMBTU.js → parser-4QNRCGU5.js} +5 -4
  152. package/dist/{parser-LANGKWRG.js → parser-6LMB7BQQ.js} +2 -2
  153. package/dist/{parser-WEVTMBJ5.js → parser-6NSQLPTS.js} +3 -3
  154. package/dist/{parser-KYPP2DX6.js → parser-6X4GGH2R.js} +4 -4
  155. package/dist/parser-AL6YL7KM.js +12 -0
  156. package/dist/{parser-5655XSOR.js → parser-D6YRVV75.js} +3 -3
  157. package/dist/{parser-NGHQQGD2.js → parser-EY3VJWBE.js} +3 -3
  158. package/dist/{parser-TL3JA4RI.js → parser-EYF4ZSZO.js} +3 -3
  159. package/dist/{parser-256EIWB2.js → parser-FDXUQ5TI.js} +2 -2
  160. package/dist/{parser-JOOAVBJI.js → parser-H2DJEAPG.js} +3 -3
  161. package/dist/{parser-AKBVJHMK.js → parser-ILWAA3QJ.js} +3 -3
  162. package/dist/{parser-AN3MGHRL.js → parser-KMFMNZYI.js} +3 -3
  163. package/dist/{parser-IMM2JJX3.js → parser-MDSVVCJP.js} +4 -4
  164. package/dist/{parser-OVQTTTUJ.js → parser-OFTMA36M.js} +2 -2
  165. package/dist/{parser-LGS65QPN.js → parser-Q3UAOLEZ.js} +2 -2
  166. package/dist/{parser-DGF3ZEO6.js → parser-QL4DEPVA.js} +4 -4
  167. package/dist/{parser-XYY5NHP4.js → parser-R6OETHWM.js} +2 -2
  168. package/dist/{parser-GEKPWSSK.js → parser-UEDPLM46.js} +3 -3
  169. package/dist/{parser-KZMALSB2.js → parser-UL6WN6W5.js} +4 -4
  170. package/dist/{parser-J4DVNL4W.js → parser-ULSUK36C.js} +4 -4
  171. package/dist/{parser-KZMJNKDW.js → parser-UY3K4ROB.js} +2 -2
  172. package/dist/{parser-KFYRTGTC.js → parser-UYQNNQKT.js} +4 -4
  173. package/dist/{parser-DHSFIUPU.js → parser-VG747VR6.js} +3 -3
  174. package/dist/{parser-UTXFJG4X.js → parser-VK4PNDX4.js} +3 -3
  175. package/dist/{parser-SA3RAJFS.js → parser-WSONWDFN.js} +2 -2
  176. package/dist/{parser-NPXPJHWN.js → parser-X5FQ36KJ.js} +3 -3
  177. package/dist/{parser-OKB64MMN.js → parser-XO5IAXMT.js} +3 -3
  178. package/dist/{parser-HCGXNHHL.js → parser-YVHO2NRM.js} +3 -3
  179. package/dist/{parser-P4TOQYNN.js → parser-YWZGIU3C.js} +3 -3
  180. package/dist/{parser-337TACHB.js → parser-ZFLSULFC.js} +3 -3
  181. package/dist/{parser-7OEE7QT6.js → parser-ZR7JAKSW.js} +2 -2
  182. package/dist/{renderer-CHQZES6G.js → renderer-3N64GVNM.js} +2 -2
  183. package/dist/{renderer-JR2XNZAH.js → renderer-43IVPARP.js} +5 -5
  184. package/dist/{renderer-J4OS77PK.js → renderer-4MEZYGU6.js} +3 -3
  185. package/dist/{renderer-IR5GGAPB.js → renderer-54GXA3UO.js} +11 -7
  186. package/dist/{renderer-7VQOKAII.js → renderer-7EAWN7MC.js} +6 -6
  187. package/dist/{renderer-QQHQY3GT.js → renderer-7SEXPBGM.js} +5 -5
  188. package/dist/{renderer-P4XCRNCY.js → renderer-B7B7BQM3.js} +9 -9
  189. package/dist/{renderer-7HOSI6JJ.js → renderer-I2LYSQBV.js} +4 -4
  190. package/dist/{renderer-6OQM32X3.js → renderer-IPDCAACY.js} +3 -3
  191. package/dist/{renderer-JRVY7HAD.js → renderer-J2LOMTBC.js} +4 -4
  192. package/dist/renderer-JUH6M3XF.js +46 -0
  193. package/dist/renderer-KY6O5JTX.js +80 -0
  194. package/dist/{renderer-FCXRDYSJ.js → renderer-LHTDI5RV.js} +7 -7
  195. package/dist/{renderer-XHEMXBQM.js → renderer-LWL3IJOF.js} +5 -5
  196. package/dist/{renderer-BLHN3RCY.js → renderer-MRMFYYZT.js} +2 -2
  197. package/dist/{renderer-DBNDLKPE.js → renderer-NCIDGJ2R.js} +7 -7
  198. package/dist/{renderer-3AD4NDF5.js → renderer-OPA4JJKX.js} +6 -6
  199. package/dist/{renderer-XFEZ5UBE.js → renderer-QMNC7TGN.js} +6 -6
  200. package/dist/{renderer-5GZNGZU5.js → renderer-QQNPJGAP.js} +9 -7
  201. package/dist/{renderer-CEIX5JPA.js → renderer-R7OYCJEA.js} +2 -2
  202. package/dist/{renderer-WQ654YT5.js → renderer-R7RK7FKI.js} +1 -1
  203. package/dist/{renderer-4JE5ORRO.js → renderer-RFP55AW7.js} +13 -10
  204. package/dist/{renderer-NAA7D33G.js → renderer-S3NFBJCY.js} +15 -11
  205. package/dist/{renderer-43ESBXVY.js → renderer-SD4ZHHAR.js} +8 -6
  206. package/dist/{renderer-WB75JME5.js → renderer-SE7Z5AOL.js} +6 -6
  207. package/dist/{renderer-YTEZK3GC.js → renderer-T2WUA7MC.js} +7 -7
  208. package/dist/{renderer-VYWCMRWA.js → renderer-TWKEZ3DD.js} +5 -5
  209. package/dist/{renderer-DCJ4AQ3N.js → renderer-U5PD72G7.js} +5 -5
  210. package/dist/{renderer-EAORWLVK.js → renderer-VCTKBUTR.js} +7 -7
  211. package/dist/{renderer-7L7J4DHO.js → renderer-VNZTWATB.js} +7 -6
  212. package/dist/{renderer-2ZQ6DPVD.js → renderer-YDNWK6RI.js} +2 -2
  213. package/dist/{renderer-VGQMJC5K.js → renderer-YDOWBIUB.js} +11 -10
  214. package/dist/{renderer-7MCC6GKH.js → renderer-YQPZ7O2C.js} +2 -2
  215. package/dist/{renderer-ZXQXRNDR.js → renderer-ZQ77CM6Y.js} +6 -6
  216. package/dist/{renderer-radial-NA5DVBG4.js → renderer-radial-TNNEL3YN.js} +5 -5
  217. package/dist/{resolver-XSXE2TRX.js → resolver-6DJLZF6Y.js} +1 -1
  218. package/dist/{state-parser-FE3RF6XY.js → state-parser-NIIVOU2Y.js} +4 -4
  219. package/dist/{state-renderer-4S2C2CHB.js → state-renderer-TVLEG32M.js} +14 -10
  220. package/dist/{themes-CzuBdx1T.d.ts → themes-Cm2YBcT8.d.ts} +38 -2
  221. package/docs/ai-integration.md +4 -3
  222. package/docs/language-reference.md +162 -12
  223. package/gallery/fixtures/sketch.dgmo +2 -2
  224. package/gallery/fixtures/whiteboard.dgmo +18 -0
  225. package/package.json +2 -1
  226. package/dist/chunk-6EK55ART.js +0 -116
  227. package/dist/chunk-HTNLLT34.js +0 -72
  228. package/dist/dgmo-router-7WANZOBD.js +0 -92
  229. package/dist/renderer-TJJGFQGT.js +0 -78
  230. package/dist/{chunk-3FCSOYN4.js → chunk-5P2L5QXE.js} +0 -0
  231. package/dist/{chunk-HJRP6PXL.js → chunk-BQVTV4LB.js} +0 -0
  232. package/dist/{chunk-LYRDIVSY.js → chunk-GLCMUTO5.js} +0 -0
  233. package/dist/{chunk-5LE2CTLS.js → chunk-NTJ5HVV6.js} +3 -3
@@ -18,7 +18,7 @@ import {
18
18
  stripDefaultModifier,
19
19
  tagAttrKey,
20
20
  validateTagGroupNames
21
- } from "./chunk-L5AFONQU.js";
21
+ } from "./chunk-QKJ6MQXW.js";
22
22
  import {
23
23
  AliasRegistry,
24
24
  C4_REGISTRY,
@@ -30,7 +30,7 @@ import {
30
30
  splitNameAndMeta,
31
31
  warnUnknownMetaKeys,
32
32
  withTagAliases
33
- } from "./chunk-44GP7PD5.js";
33
+ } from "./chunk-MPJQMMBZ.js";
34
34
  import {
35
35
  formatDgmoError,
36
36
  makeDgmoError,
@@ -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 = {}) {
@@ -5,7 +5,7 @@ import {
5
5
  splitNameAndMeta,
6
6
  tryParseSharedOption,
7
7
  warnUnknownMetaKeys
8
- } from "./chunk-44GP7PD5.js";
8
+ } from "./chunk-MPJQMMBZ.js";
9
9
  import {
10
10
  RECOGNIZED_COLOR_NAMES,
11
11
  resolveColor
@@ -7,6 +7,9 @@ import {
7
7
  import {
8
8
  ScaleContext
9
9
  } from "./chunk-24YPR5EH.js";
10
+ import {
11
+ renderIntegratedLegend
12
+ } from "./chunk-QVKTAU7P.js";
10
13
  import {
11
14
  ARROWHEAD_HEIGHT,
12
15
  ARROWHEAD_WIDTH
@@ -16,15 +19,12 @@ import {
16
19
  TITLE_FONT_WEIGHT,
17
20
  TITLE_Y
18
21
  } from "./chunk-VLC6WNRD.js";
19
- import {
20
- renderIntegratedLegend
21
- } from "./chunk-7SX4IY6T.js";
22
22
  import {
23
23
  FONT_FAMILY
24
24
  } from "./chunk-ICLB27PZ.js";
25
25
  import {
26
26
  fillModeFromOptions
27
- } from "./chunk-44GP7PD5.js";
27
+ } from "./chunk-MPJQMMBZ.js";
28
28
  import {
29
29
  LEGEND_HEIGHT
30
30
  } from "./chunk-I6GGMCTV.js";
@@ -13,7 +13,7 @@ import {
13
13
  tagAttrKey,
14
14
  validateTagGroupNames,
15
15
  validateTagValues
16
- } from "./chunk-L5AFONQU.js";
16
+ } from "./chunk-QKJ6MQXW.js";
17
17
  import {
18
18
  ALL_CHART_TYPES,
19
19
  AliasRegistry,
@@ -27,7 +27,7 @@ import {
27
27
  tryParseSharedOption,
28
28
  warnUnknownMetaKeys,
29
29
  withTagAliases
30
- } from "./chunk-44GP7PD5.js";
30
+ } from "./chunk-MPJQMMBZ.js";
31
31
  import {
32
32
  formatDgmoError,
33
33
  makeDgmoError,
@@ -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"));
@@ -5,6 +5,11 @@ import {
5
5
  import {
6
6
  ScaleContext
7
7
  } from "./chunk-24YPR5EH.js";
8
+ import {
9
+ keepSwimlaneToggleFocus,
10
+ renderIntegratedLegend,
11
+ wireSwimlaneToggle
12
+ } from "./chunk-QVKTAU7P.js";
8
13
  import {
9
14
  EDGE_DASH,
10
15
  GRID_DASH,
@@ -15,26 +20,21 @@ import {
15
20
  hideTooltip,
16
21
  renderChartTitle,
17
22
  showTooltip
18
- } from "./chunk-UKJLPA7R.js";
19
- import {
20
- keepSwimlaneToggleFocus,
21
- renderIntegratedLegend,
22
- wireSwimlaneToggle
23
- } from "./chunk-7SX4IY6T.js";
23
+ } from "./chunk-X6IZP2BD.js";
24
24
  import {
25
25
  FONT_FAMILY
26
26
  } from "./chunk-ICLB27PZ.js";
27
27
  import {
28
28
  parseTimelineDate
29
- } from "./chunk-GDJW64XE.js";
29
+ } from "./chunk-OYKNMFUY.js";
30
30
  import {
31
31
  DEFAULT_PALETTE_ID,
32
32
  getPalette
33
- } from "./chunk-NIUO2TNR.js";
33
+ } from "./chunk-4HG4PYHM.js";
34
34
  import {
35
35
  resolveTagColor,
36
36
  tagAttrKey
37
- } from "./chunk-L5AFONQU.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;
@@ -356,7 +356,7 @@ function setupTimeline(container, parsed, palette, isDark, exportDims, activeTag
356
356
  if (resolvedSwimlaneTG) {
357
357
  const tagKey = tagAttrKey(resolvedSwimlaneTG);
358
358
  const tagGroup = parsed.timelineTagGroups.find(
359
- (g) => g.name.toLowerCase() === tagKey
359
+ (g) => tagAttrKey(g.name) === tagKey
360
360
  );
361
361
  if (tagGroup) {
362
362
  const buckets = /* @__PURE__ */ new Map();
@@ -625,7 +625,10 @@ function renderTimelineTagLegendOverlay(container, parsed, palette, isDark, setu
625
625
  }, drawLegend2 = function() {
626
626
  mainSvg.selectAll(".tl-tag-legend-group").remove();
627
627
  mainSvg.selectAll(".tl-tag-legend-container").remove();
628
- const effectiveColorKey = (currentActiveGroup ?? currentSwimlaneGroup)?.toLowerCase() ?? null;
628
+ const effectiveSource = currentActiveGroup ?? currentSwimlaneGroup;
629
+ const effectiveColorKey = effectiveSource == null ? null : legendGroups.find(
630
+ (lg) => tagAttrKey(lg.group.name) === tagAttrKey(effectiveSource)
631
+ )?.group.name.toLowerCase() ?? effectiveSource.toLowerCase();
629
632
  const visibleGroups = viewMode ? legendGroups.filter(
630
633
  (lg) => effectiveColorKey != null && lg.group.name.toLowerCase() === effectiveColorKey
631
634
  ) : legendGroups;
@@ -682,7 +685,7 @@ function renderTimelineTagLegendOverlay(container, parsed, palette, isDark, setu
682
685
  const groupKey = tagAttrKey(groupName);
683
686
  groupEl.attr("data-tag-group", groupKey);
684
687
  if (isActive && !viewMode) {
685
- const isSwimActive = currentSwimlaneGroup?.toLowerCase() === groupKey;
688
+ const isSwimActive = currentSwimlaneGroup != null && tagAttrKey(currentSwimlaneGroup) === groupKey;
686
689
  const pillWidth = measureLegendText(groupName, LG_PILL_FONT_SIZE) + LG_PILL_PAD;
687
690
  const pillXOff = LG_CAPSULE_PAD;
688
691
  const iconX = pillXOff + pillWidth + 5;
@@ -700,7 +703,7 @@ function renderTimelineTagLegendOverlay(container, parsed, palette, isDark, setu
700
703
  isSwimActive,
701
704
  !exportDims,
702
705
  () => {
703
- currentSwimlaneGroup = currentSwimlaneGroup === groupKey ? null : groupKey;
706
+ currentSwimlaneGroup = currentSwimlaneGroup != null && tagAttrKey(currentSwimlaneGroup) === groupKey ? null : groupKey;
704
707
  onTagStateChange?.(
705
708
  currentActiveGroup,
706
709
  currentSwimlaneGroup
@@ -903,7 +906,7 @@ function renderTimelineHorizontalTimeSort(container, parsed, palette, isDark, se
903
906
  const y = i * rowH + rowH / 2;
904
907
  const x = xScale(parseTimelineDate(ev.date));
905
908
  const color = eventColor(ev);
906
- 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(
907
910
  "data-end-date",
908
911
  ev.endDate ? String(parseTimelineDate(ev.endDate)) : null
909
912
  ).style("cursor", "pointer").on("mouseenter", function(event) {
@@ -945,7 +948,7 @@ function renderTimelineHorizontalTimeSort(container, parsed, palette, isDark, se
945
948
  if (ev.uncertain) {
946
949
  const gradientId = `uncertain-ts-${ev.lineNumber}`;
947
950
  const strokeGradientId = `uncertain-ts-s-${ev.lineNumber}`;
948
- const defs = svg.select("defs").node() || svg.append("defs").node();
951
+ const defs = svg.select("defs").node() ?? svg.append("defs").node();
949
952
  const defsEl = d3Selection.select(defs);
950
953
  defsEl.append("linearGradient").attr("id", gradientId).attr("x1", "0%").attr("y1", "0%").attr("x2", "100%").attr("y2", "0%").selectAll("stop").data([
951
954
  { offset: "0%", opacity: 1 },
@@ -1214,7 +1217,7 @@ function renderTimelineHorizontalGrouped(container, parsed, palette, isDark, set
1214
1217
  if (ev.uncertain) {
1215
1218
  const gradientId = `uncertain-${ev.lineNumber}`;
1216
1219
  const strokeGradientId = `uncertain-s-${ev.lineNumber}`;
1217
- const defs = svg.select("defs").node() || svg.append("defs").node();
1220
+ const defs = svg.select("defs").node() ?? svg.append("defs").node();
1218
1221
  const defsEl = d3Selection.select(defs);
1219
1222
  defsEl.append("linearGradient").attr("id", gradientId).attr("x1", "0%").attr("y1", "0%").attr("x2", "100%").attr("y2", "0%").selectAll("stop").data([
1220
1223
  { offset: "0%", opacity: 1 },
@@ -1416,7 +1419,7 @@ function renderTimelineVertical(container, parsed, palette, isDark, setup, hover
1416
1419
  if (ev.uncertain) {
1417
1420
  const gradientId = `uncertain-vg-${ev.lineNumber}`;
1418
1421
  const strokeGradientId = `uncertain-vg-s-${ev.lineNumber}`;
1419
- const defs = svg.select("defs").node() || svg.append("defs").node();
1422
+ const defs = svg.select("defs").node() ?? svg.append("defs").node();
1420
1423
  const defsEl = d3Selection.select(defs);
1421
1424
  defsEl.append("linearGradient").attr("id", gradientId).attr("x1", "0%").attr("y1", "0%").attr("x2", "0%").attr("y2", "100%").selectAll("stop").data([
1422
1425
  { offset: "0%", opacity: 1 },
@@ -1532,7 +1535,7 @@ function renderTimelineVertical(container, parsed, palette, isDark, setup, hover
1532
1535
  for (const ev of sorted) {
1533
1536
  const y = yScale(parseTimelineDate(ev.date));
1534
1537
  const color = eventColor(ev);
1535
- 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(
1536
1539
  "data-end-date",
1537
1540
  ev.endDate ? String(parseTimelineDate(ev.endDate)) : null
1538
1541
  ).style("cursor", "pointer").on("mouseenter", function(event) {
@@ -1557,7 +1560,7 @@ function renderTimelineVertical(container, parsed, palette, isDark, setup, hover
1557
1560
  if (ev.uncertain) {
1558
1561
  const gradientId = `uncertain-v-${ev.lineNumber}`;
1559
1562
  const strokeGradientId = `uncertain-v-s-${ev.lineNumber}`;
1560
- const defs = svg.select("defs").node() || svg.append("defs").node();
1563
+ const defs = svg.select("defs").node() ?? svg.append("defs").node();
1561
1564
  const defsEl = d3Selection.select(defs);
1562
1565
  defsEl.append("linearGradient").attr("id", gradientId).attr("x1", "0%").attr("y1", "0%").attr("x2", "0%").attr("y2", "100%").selectAll("stop").data([
1563
1566
  { offset: "0%", opacity: 1 },
@@ -1,6 +1,3 @@
1
- import {
2
- layoutERDiagram
3
- } from "./chunk-IIOLFAGJ.js";
4
1
  import {
5
2
  NOTE_BADGE_RADIUS,
6
3
  noteConnectorPoints,
@@ -8,9 +5,15 @@ import {
8
5
  renderNoteBox,
9
6
  renderNoteConnector
10
7
  } from "./chunk-KATED53P.js";
8
+ import {
9
+ layoutERDiagram
10
+ } from "./chunk-5DIBB2QG.js";
11
11
  import {
12
12
  ScaleContext
13
13
  } from "./chunk-24YPR5EH.js";
14
+ import {
15
+ renderIntegratedLegend
16
+ } from "./chunk-QVKTAU7P.js";
14
17
  import {
15
18
  EDGE_LABEL_KNOCKOUT_OPACITY,
16
19
  EDGE_STROKE_WIDTH,
@@ -22,32 +25,29 @@ import {
22
25
  import {
23
26
  serializeSvg
24
27
  } from "./chunk-OOCVGX4W.js";
28
+ import {
29
+ getLegendExtent
30
+ } from "./chunk-NS7L7YKH.js";
25
31
  import {
26
32
  TITLE_FONT_SIZE,
27
33
  TITLE_FONT_WEIGHT,
28
34
  TITLE_Y
29
35
  } from "./chunk-VLC6WNRD.js";
30
- import {
31
- renderIntegratedLegend
32
- } from "./chunk-7SX4IY6T.js";
33
- import {
34
- getLegendExtent
35
- } from "./chunk-NS7L7YKH.js";
36
36
  import {
37
37
  FONT_FAMILY
38
38
  } from "./chunk-ICLB27PZ.js";
39
39
  import {
40
40
  parseERDiagram
41
- } from "./chunk-WPL5PFXE.js";
41
+ } from "./chunk-3SLRZKLB.js";
42
42
  import {
43
43
  resolveTagColor,
44
44
  tagAttrKey
45
- } from "./chunk-L5AFONQU.js";
45
+ } from "./chunk-QKJ6MQXW.js";
46
46
  import {
47
47
  fillModeFromOptions,
48
48
  legendInlineRequested,
49
49
  legendSuppressed
50
- } from "./chunk-44GP7PD5.js";
50
+ } from "./chunk-MPJQMMBZ.js";
51
51
  import {
52
52
  LEGEND_HEIGHT
53
53
  } from "./chunk-I6GGMCTV.js";
@@ -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-L5AFONQU.js";
20
+ } from "./chunk-QKJ6MQXW.js";
21
21
  import {
22
22
  AliasRegistry,
23
23
  INFRA_BEHAVIOR_KEY_SET,
@@ -31,7 +31,7 @@ import {
31
31
  tryParseSharedOption,
32
32
  warnUnknownMetaKeys,
33
33
  withTagAliases
34
- } from "./chunk-44GP7PD5.js";
34
+ } from "./chunk-MPJQMMBZ.js";
35
35
  import {
36
36
  isRecognizedColorName
37
37
  } from "./chunk-2M4IGSCY.js";
@@ -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,13 +1,16 @@
1
1
  import {
2
2
  computeNodeText,
3
3
  layoutMindmap
4
- } from "./chunk-CUYHST3B.js";
4
+ } from "./chunk-CVZBLHHW.js";
5
5
  import {
6
6
  renderInlineText
7
7
  } from "./chunk-S7W75MIM.js";
8
8
  import {
9
9
  ScaleContext
10
10
  } from "./chunk-24YPR5EH.js";
11
+ import {
12
+ renderIntegratedLegend
13
+ } from "./chunk-QVKTAU7P.js";
11
14
  import {
12
15
  CARD_RADIUS,
13
16
  COLLAPSE_BAR_HEIGHT,
@@ -22,34 +25,31 @@ import {
22
25
  import {
23
26
  layoutInlineHeader
24
27
  } from "./chunk-CNUN5GO6.js";
25
- import {
26
- TITLE_FONT_SIZE,
27
- TITLE_FONT_WEIGHT
28
- } from "./chunk-VLC6WNRD.js";
29
- import {
30
- renderIntegratedLegend
31
- } from "./chunk-7SX4IY6T.js";
32
28
  import {
33
29
  getLegendExtent,
34
30
  getMaxLegendReservedHeight
35
31
  } from "./chunk-NS7L7YKH.js";
32
+ import {
33
+ TITLE_FONT_SIZE,
34
+ TITLE_FONT_WEIGHT
35
+ } from "./chunk-VLC6WNRD.js";
36
36
  import {
37
37
  FONT_FAMILY
38
38
  } from "./chunk-ICLB27PZ.js";
39
39
  import {
40
40
  parseMindmap
41
- } from "./chunk-NGC3IZRY.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-L5AFONQU.js";
47
+ } from "./chunk-QKJ6MQXW.js";
48
48
  import {
49
49
  fillModeFromOptions,
50
50
  legendInlineRequested,
51
51
  legendSuppressed
52
- } from "./chunk-44GP7PD5.js";
52
+ } from "./chunk-MPJQMMBZ.js";
53
53
  import {
54
54
  LEGEND_GROUP_GAP
55
55
  } from "./chunk-I6GGMCTV.js";
@@ -205,7 +205,7 @@ function renderMindmap(container, parsed, layout, palette, isDark, onClickItem,
205
205
  const usedValues = /* @__PURE__ */ new Map();
206
206
  for (const node of renderLayout.nodes) {
207
207
  for (const tg of parsed.tagGroups) {
208
- const key = tg.name.toLowerCase();
208
+ const key = tagAttrKey(tg.name);
209
209
  const val = node.metadata[key];
210
210
  if (val) {
211
211
  if (!usedValues.has(key)) usedValues.set(key, /* @__PURE__ */ new Set());
@@ -235,7 +235,7 @@ function renderMindmap(container, parsed, layout, palette, isDark, onClickItem,
235
235
  const controlsToggles = toggles.length > 0 ? { toggles } : void 0;
236
236
  const legendConfig = {
237
237
  groups: parsed.tagGroups.map((tg) => {
238
- const used = usedValues.get(tg.name.toLowerCase());
238
+ const used = usedValues.get(tagAttrKey(tg.name));
239
239
  return {
240
240
  name: tg.name,
241
241
  ...tg.alias !== void 0 && { alias: tg.alias },
@@ -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,
@@ -13,7 +13,7 @@ import {
13
13
  normalizeNumericToken,
14
14
  parseFirstLine,
15
15
  parseSeriesNames
16
- } from "./chunk-44GP7PD5.js";
16
+ } from "./chunk-MPJQMMBZ.js";
17
17
  import {
18
18
  RECOGNIZED_COLOR_NAMES,
19
19
  resolveColorWithDiagnostic
@@ -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(
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  fillModeFromOptions
3
- } from "./chunk-44GP7PD5.js";
3
+ } from "./chunk-MPJQMMBZ.js";
4
4
  import {
5
5
  measureText,
6
6
  wrapTextToWidth
@@ -2,7 +2,7 @@ import {
2
2
  extractColor,
3
3
  measureIndent,
4
4
  parseFirstLine
5
- } from "./chunk-44GP7PD5.js";
5
+ } from "./chunk-MPJQMMBZ.js";
6
6
  import {
7
7
  emit,
8
8
  formatDgmoError,
@@ -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;
@@ -5,6 +5,11 @@ import {
5
5
  import {
6
6
  ScaleContext
7
7
  } from "./chunk-24YPR5EH.js";
8
+ import {
9
+ keepSwimlaneToggleFocus,
10
+ renderIntegratedLegend,
11
+ wireSwimlaneToggle
12
+ } from "./chunk-QVKTAU7P.js";
8
13
  import {
9
14
  EDGE_DASH,
10
15
  GRID_DASH,
@@ -14,21 +19,16 @@ import {
14
19
  INLINE_HEADER_PAD,
15
20
  layoutInlineHeader
16
21
  } from "./chunk-CNUN5GO6.js";
17
- import {
18
- TITLE_FONT_SIZE,
19
- TITLE_FONT_WEIGHT,
20
- TITLE_Y
21
- } from "./chunk-VLC6WNRD.js";
22
- import {
23
- keepSwimlaneToggleFocus,
24
- renderIntegratedLegend,
25
- wireSwimlaneToggle
26
- } from "./chunk-7SX4IY6T.js";
27
22
  import {
28
23
  controlsGroupCapsuleWidth,
29
24
  getLegendExtent,
30
25
  getMaxLegendReservedHeight
31
26
  } from "./chunk-NS7L7YKH.js";
27
+ import {
28
+ TITLE_FONT_SIZE,
29
+ TITLE_FONT_WEIGHT,
30
+ TITLE_Y
31
+ } from "./chunk-VLC6WNRD.js";
32
32
  import {
33
33
  FONT_FAMILY
34
34
  } from "./chunk-ICLB27PZ.js";
@@ -40,7 +40,7 @@ import {
40
40
  resolveActiveTagGroup,
41
41
  resolveTagColor,
42
42
  tagAttrKey
43
- } from "./chunk-L5AFONQU.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,
@@ -1251,7 +1251,7 @@ function renderTagLegend(svg, chartG, tagGroups, activeGroupName, chartLeftMargi
1251
1251
  const showIcon = !legendViewMode && tagGroups.length > 0;
1252
1252
  const iconReserve = showIcon ? LEGEND_ICON_W : 0;
1253
1253
  const legendGroups = visibleGroups.map((g) => {
1254
- const key = g.name.toLowerCase();
1254
+ const key = tagAttrKey(g.name);
1255
1255
  const entries = filteredEntries.get(key) ?? g.entries;
1256
1256
  return {
1257
1257
  name: g.name,
@@ -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();