@diagrammo/dgmo 0.72.0 → 0.73.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 (272) hide show
  1. package/dist/advanced.d.ts +20 -11
  2. package/dist/advanced.js +115 -116
  3. package/dist/{analyzer-HQUXKZ5J.js → analyzer-KQWXVQOI.js} +3 -3
  4. package/dist/block.d.ts +2 -2
  5. package/dist/block.js +63 -75
  6. package/dist/calculator-2Z5DUTOB.js +13 -0
  7. package/dist/{chart-meta-6JaOudSs.d.ts → chart-meta-lP8Rl19E.d.ts} +4 -3
  8. package/dist/chart-meta.d.ts +3 -3
  9. package/dist/chart-meta.js +49 -49
  10. package/dist/{charts-d3-6IHGTXBR.js → charts-d3-S6JPQQFZ.js} +12 -12
  11. package/dist/{chunk-7BHM774H.js → chunk-25LXU4OQ.js} +8 -8
  12. package/dist/{chunk-7SEQPFBX.js → chunk-2AC2KTVM.js} +33 -28
  13. package/dist/{chunk-NUF7YTHA.js → chunk-2M2UC5EU.js} +3 -3
  14. package/dist/{chunk-CGLBK5Q4.js → chunk-2PU5XWLA.js} +2 -2
  15. package/dist/{chunk-MWWRIOEN.js → chunk-2TFWQM3E.js} +3 -3
  16. package/dist/{chunk-FLXDMH7B.js → chunk-3ATHNEOQ.js} +30 -24
  17. package/dist/{chunk-FFD6A3B2.js → chunk-3AXUJ5PT.js} +16 -10
  18. package/dist/{chunk-PKTRDOBI.js → chunk-3OKBXV3I.js} +3 -3
  19. package/dist/{chunk-2VBJCTSG.js → chunk-3X3UD7PN.js} +5 -5
  20. package/dist/{chunk-DPGI742S.js → chunk-4FKEI4MF.js} +4 -4
  21. package/dist/{chunk-WPXHTYET.js → chunk-4K5H6LON.js} +4 -4
  22. package/dist/{chunk-LTGOPJUV.js → chunk-4NYJEK4R.js} +3 -3
  23. package/dist/{chunk-MTPKBSTR.js → chunk-4SXHMFFP.js} +2 -2
  24. package/dist/{chunk-VE7PPEU3.js → chunk-54SJUHNY.js} +8 -8
  25. package/dist/{chunk-BYSRXYRW.js → chunk-5EI23VVR.js} +6 -6
  26. package/dist/{chunk-OLMWTJVU.js → chunk-5SI6T5A5.js} +1 -1
  27. package/dist/{chunk-UJXCDF4E.js → chunk-5VMUVJO4.js} +2 -2
  28. package/dist/{chunk-ZGVVPILJ.js → chunk-6DYZ2JM6.js} +2 -2
  29. package/dist/{chunk-ELIGVSLE.js → chunk-6G2GJGUC.js} +12 -6
  30. package/dist/{chunk-E36Q5ABQ.js → chunk-6LGPL4LP.js} +7 -7
  31. package/dist/{chunk-KJWIU5AM.js → chunk-7GYSVN4Z.js} +3 -3
  32. package/dist/{chunk-YTFA4VTW.js → chunk-7S5WQXI3.js} +3 -3
  33. package/dist/{chunk-MKNWMFZU.js → chunk-7VMUKH2Z.js} +31 -27
  34. package/dist/{chunk-VLXYWPPE.js → chunk-A34AXXBO.js} +7 -7
  35. package/dist/{chunk-N5247W2W.js → chunk-ABH626W7.js} +14 -9
  36. package/dist/{chunk-GCTKJDLY.js → chunk-AG3Z47VY.js} +10 -10
  37. package/dist/{chunk-T7W5LM4N.js → chunk-AMYMV4JZ.js} +5 -5
  38. package/dist/{chunk-KOVRFBGR.js → chunk-ARM4G2HJ.js} +16 -11
  39. package/dist/{chunk-UF3EALKC.js → chunk-B5CIHVBP.js} +10 -10
  40. package/dist/{chunk-MC2H32SM.js → chunk-BVNTXVYJ.js} +4 -4
  41. package/dist/{chunk-DZ34UUXC.js → chunk-CLKRRKV6.js} +11 -11
  42. package/dist/{chunk-UY77QQWU.js → chunk-CVGTEAIO.js} +11 -7
  43. package/dist/{chunk-IXVK7XCN.js → chunk-D5ZZOTE6.js} +2 -2
  44. package/dist/{chunk-WMHHNK44.js → chunk-DGPFFRLS.js} +2 -2
  45. package/dist/{chunk-EETUTZ5C.js → chunk-DTYZAXEH.js} +2 -2
  46. package/dist/{chunk-MUVASOBD.js → chunk-DZC2OCK3.js} +10 -10
  47. package/dist/{chunk-REBTZP3W.js → chunk-E27E4ZFN.js} +6 -6
  48. package/dist/{chunk-BSI5EOAX.js → chunk-E3BJVEMZ.js} +7 -11
  49. package/dist/{chunk-7NK42OIB.js → chunk-E6PNTYRK.js} +2 -2
  50. package/dist/{chunk-3SNE4CLI.js → chunk-EPJHJF3J.js} +7 -7
  51. package/dist/{chunk-HBVKOYZD.js → chunk-FGXBIOVK.js} +3 -3
  52. package/dist/{chunk-U4NFAWQW.js → chunk-FQDH6AL3.js} +9 -9
  53. package/dist/{chunk-XIZCHGP7.js → chunk-FQFQGPWA.js} +9 -9
  54. package/dist/{chunk-IKHV5IJB.js → chunk-GE5RO4BS.js} +2 -2
  55. package/dist/{chunk-KWRW6BLG.js → chunk-GLREDNBA.js} +2 -2
  56. package/dist/{chunk-UKOOGXRF.js → chunk-H454ZVAS.js} +8 -8
  57. package/dist/{chunk-VMXV2CL5.js → chunk-HQ34V2XV.js} +5 -5
  58. package/dist/{chunk-YG35ZCNW.js → chunk-I4YT5KL6.js} +36 -32
  59. package/dist/{chunk-QAJFIXJE.js → chunk-IDEJ3J4J.js} +28 -28
  60. package/dist/{chunk-TF7CFAZ5.js → chunk-IEZYF5CN.js} +4 -4
  61. package/dist/{chunk-RRX4Z4TH.js → chunk-IHOFUR74.js} +2 -2
  62. package/dist/{chunk-3HN32MEK.js → chunk-INOSOL3J.js} +4 -4
  63. package/dist/{chunk-6OAKQTXQ.js → chunk-ITAFWUSB.js} +3 -3
  64. package/dist/{chunk-MX3BYU7V.js → chunk-JLSGQMRA.js} +3 -3
  65. package/dist/{chunk-P6RPHRX7.js → chunk-JPVRJS74.js} +6 -6
  66. package/dist/{chunk-6DGMS2WJ.js → chunk-K3O2CZTD.js} +6 -6
  67. package/dist/{chunk-66VHK7PP.js → chunk-K7P4SCB3.js} +9 -9
  68. package/dist/{chunk-UTVKOGFF.js → chunk-KCHCOXAL.js} +94 -40
  69. package/dist/{chunk-VGLSKDDI.js → chunk-KI2L4DWM.js} +3 -3
  70. package/dist/{chunk-AEYRSPVV.js → chunk-KUDYLU3M.js} +3 -3
  71. package/dist/{chunk-QITH5XOX.js → chunk-KZKRK57S.js} +11 -11
  72. package/dist/{chunk-4VUFJ7UA.js → chunk-LGASNVZE.js} +6 -6
  73. package/dist/{chunk-ET4R3AU5.js → chunk-LM3HY3VG.js} +2 -2
  74. package/dist/{chunk-RJI6MHHK.js → chunk-LMJKHQ4W.js} +6 -6
  75. package/dist/{chunk-ZJJWON5O.js → chunk-MK55PZVB.js} +268 -3
  76. package/dist/{chunk-RTTELOOP.js → chunk-MS5574I7.js} +3 -3
  77. package/dist/{chunk-I55PVEIX.js → chunk-MSVQ2YCY.js} +2 -2
  78. package/dist/{chunk-WEC3JPTN.js → chunk-MZMK474U.js} +8 -8
  79. package/dist/{chunk-NTBHGUXY.js → chunk-NE7JHZCQ.js} +4 -4
  80. package/dist/{chunk-JIWDWOYA.js → chunk-NQJ7DDUT.js} +4 -4
  81. package/dist/{chunk-6S53NO3M.js → chunk-O7ZKDUDX.js} +5 -5
  82. package/dist/{chunk-PBV2C3BW.js → chunk-OMQ5V5NH.js} +24 -20
  83. package/dist/{chunk-W27BULCB.js → chunk-OR3OX32W.js} +9 -9
  84. package/dist/{chunk-MFSTE3YG.js → chunk-OYK45NY5.js} +26 -18
  85. package/dist/{chunk-DHKVHP3Y.js → chunk-PFZDLHHG.js} +9 -9
  86. package/dist/{chunk-HKL66CKW.js → chunk-PJHYUVD3.js} +9 -9
  87. package/dist/{chunk-K6MQJ5IV.js → chunk-Q446PFCV.js} +3 -3
  88. package/dist/{chunk-IW6N2JJL.js → chunk-Q74GP3GK.js} +2 -2
  89. package/dist/{chunk-L3XB446I.js → chunk-QFHPGDR5.js} +2 -2
  90. package/dist/{chunk-QPG55HGH.js → chunk-RJUMXXKR.js} +5 -5
  91. package/dist/{chunk-SPA7DCB3.js → chunk-RN3PAL4E.js} +3 -3
  92. package/dist/{chunk-WRWUZ2C4.js → chunk-RXSAE6F5.js} +4 -4
  93. package/dist/{chunk-W7SZKJR6.js → chunk-RYHZFP7Y.js} +4 -4
  94. package/dist/{chunk-WF2HDQPG.js → chunk-S6OXNZBM.js} +3 -3
  95. package/dist/{chunk-UNM2PX5D.js → chunk-SNZFXGSE.js} +4 -4
  96. package/dist/{chunk-LSHROB27.js → chunk-T4L4LKXO.js} +5 -5
  97. package/dist/{chunk-FTPNAYL2.js → chunk-TJS3J5B3.js} +4 -4
  98. package/dist/{chunk-7TSBM4BV.js → chunk-TP42IN23.js} +5 -5
  99. package/dist/{chunk-7RAWNJI5.js → chunk-TTVHS3D5.js} +98 -98
  100. package/dist/{chunk-6PA32CUB.js → chunk-TXWW4UZM.js} +4 -4
  101. package/dist/{chunk-GK4AU57A.js → chunk-V7E3RZLQ.js} +5 -5
  102. package/dist/{chunk-NNMNHE3J.js → chunk-VQEW7XMN.js} +3 -3
  103. package/dist/{chunk-YYBQ55V2.js → chunk-VWIXRNY2.js} +4 -4
  104. package/dist/{chunk-YH5KJIO5.js → chunk-W242EWZZ.js} +8 -8
  105. package/dist/{chunk-2OTYNNHS.js → chunk-WDKLODC3.js} +10 -10
  106. package/dist/{chunk-OQKP2X3D.js → chunk-WFA6IULY.js} +57 -3
  107. package/dist/{chunk-HWNF22ZZ.js → chunk-WPEHUSUQ.js} +5 -5
  108. package/dist/{chunk-NJKUTY4M.js → chunk-WTMP6VZ6.js} +5 -5
  109. package/dist/{chunk-N34OTOGH.js → chunk-X6LVGU4W.js} +3 -3
  110. package/dist/{chunk-7U3NDE7T.js → chunk-X6LXZJPT.js} +7 -7
  111. package/dist/{chunk-UCGEBFUC.js → chunk-XGBUCXU7.js} +4 -4
  112. package/dist/{chunk-NEC7R2CB.js → chunk-XL2C26LV.js} +3 -3
  113. package/dist/{chunk-EXNKNJ65.js → chunk-XOGQY4EC.js} +2 -2
  114. package/dist/{chunk-UNTFANSM.js → chunk-XOOYMOIW.js} +15 -10
  115. package/dist/{chunk-DEVZWCD5.js → chunk-XUCHK3OJ.js} +21 -12
  116. package/dist/{chunk-O4OVVK6J.js → chunk-XVJWAE2F.js} +7 -7
  117. package/dist/{chunk-PZVYUQJA.js → chunk-YDA46XHI.js} +4 -4
  118. package/dist/{chunk-HZQCKXPB.js → chunk-YGKYQ7LA.js} +42 -42
  119. package/dist/{chunk-6CLC26GU.js → chunk-YJMWEZOB.js} +2 -2
  120. package/dist/{chunk-QX53GOI7.js → chunk-YT5ICQ4R.js} +2 -2
  121. package/dist/{chunk-376ATV2Q.js → chunk-ZIJXK3U5.js} +5 -5
  122. package/dist/{chunk-5DYDPP7K.js → chunk-ZQ5SROS2.js} +115 -240
  123. package/dist/completion-registry.js +24 -21
  124. package/dist/countdown.js +26 -6
  125. package/dist/{d3-Bfhj-XBX.d.ts → d3--y67plmW.d.ts} +1 -1
  126. package/dist/dgmo-router-AE6FUBV3.js +89 -0
  127. package/dist/{dgmo-router-Lya7cs3R.d.ts → dgmo-router-CY5j16Pl.d.ts} +1 -1
  128. package/dist/dimensions-PRZSDFWR.js +22 -0
  129. package/dist/flowchart-parser-HR25V5AH.js +21 -0
  130. package/dist/{flowchart-renderer-JMGOCLTQ.js → flowchart-renderer-FY63GDRH.js} +12 -12
  131. package/dist/highlight.js +6 -18
  132. package/dist/index.d.ts +7 -7
  133. package/dist/index.js +60 -58
  134. package/dist/{layout-AWPST2S3.js → layout-43A4YMAH.js} +7 -7
  135. package/dist/layout-4URV4OXF.js +15 -0
  136. package/dist/{layout-RD7GDM4I.js → layout-B5GQVXXY.js} +4 -4
  137. package/dist/layout-BWHNERBW.js +15 -0
  138. package/dist/{layout-5RUQ5FBZ.js → layout-DAYQ46PS.js} +3 -3
  139. package/dist/{layout-LVMWK4QY.js → layout-KQUSB45X.js} +4 -4
  140. package/dist/{layout-2DVT24YY.js → layout-O4PR46GN.js} +6 -6
  141. package/dist/layout-PKGNLY6P.js +15 -0
  142. package/dist/{layout-WIMQIHBU.js → layout-ROORJQ4X.js} +4 -4
  143. package/dist/{layout-BGXLVSXL.js → layout-U5OVRUOK.js} +8 -8
  144. package/dist/{layout-search-C44CJQOB.js → layout-search-UOKEMER5.js} +4 -4
  145. package/dist/{legend-constants-FP5MFDD4.js → legend-constants-PLN2YHGM.js} +5 -5
  146. package/dist/{palettes-WQZ2TPVZ.js → palettes-54YSI3IX.js} +4 -4
  147. package/dist/parser-23MYMNF6.js +14 -0
  148. package/dist/parser-2FNHLEBN.js +12 -0
  149. package/dist/{parser-XM6JC3UK.js → parser-2FZ4BDEW.js} +6 -6
  150. package/dist/parser-3JDQL7QF.js +15 -0
  151. package/dist/parser-5CAGM3ED.js +16 -0
  152. package/dist/parser-5RY6ID5M.js +18 -0
  153. package/dist/parser-6YBYIFS2.js +13 -0
  154. package/dist/parser-A665TNOV.js +20 -0
  155. package/dist/parser-AN4SUBQ6.js +11 -0
  156. package/dist/parser-BC2TAVB3.js +11 -0
  157. package/dist/parser-BCQBK2XB.js +12 -0
  158. package/dist/parser-BTTFGJGI.js +12 -0
  159. package/dist/parser-CAAFD3HB.js +19 -0
  160. package/dist/parser-COBTDQPC.js +11 -0
  161. package/dist/parser-DBOJKLDF.js +14 -0
  162. package/dist/{parser-TJ3SP2MJ.js → parser-DIQ2E5MR.js} +7 -7
  163. package/dist/parser-EDXD6ZGJ.js +13 -0
  164. package/dist/parser-GPZYL6ZE.js +11 -0
  165. package/dist/parser-MDYNA6JL.js +17 -0
  166. package/dist/parser-PCALQIW2.js +17 -0
  167. package/dist/parser-PDPZ2I6C.js +13 -0
  168. package/dist/parser-SQFNO6XG.js +15 -0
  169. package/dist/{parser-ZIEEBJMU.js → parser-SQMOEVG4.js} +7 -7
  170. package/dist/parser-TATBFGQ2.js +15 -0
  171. package/dist/{parser-EX3AGFT5.js → parser-VJEHPDOO.js} +6 -6
  172. package/dist/{parser-O7GTECFP.js → parser-VQX2LVUJ.js} +5 -5
  173. package/dist/{parser-CDMP3UVH.js → parser-W2LEO5QM.js} +7 -7
  174. package/dist/parser-W3QZBUOF.js +13 -0
  175. package/dist/parser-WQCSMLUI.js +15 -0
  176. package/dist/parser-X5RGCC3C.js +11 -0
  177. package/dist/parser-XGUJ7SMG.js +13 -0
  178. package/dist/parser-XS7DL63K.js +16 -0
  179. package/dist/parser-XTSWP4N3.js +11 -0
  180. package/dist/pert.d.ts +10 -0
  181. package/dist/{renderer-ZRHTC24Q.js → renderer-2DIH3YW6.js} +11 -11
  182. package/dist/{renderer-IH5C7NQT.js → renderer-2E2Z5N66.js} +6 -6
  183. package/dist/renderer-4HGNWJRC.js +25 -0
  184. package/dist/renderer-6U6YW4HX.js +26 -0
  185. package/dist/{renderer-IZFO3G22.js → renderer-AKZECRNK.js} +17 -17
  186. package/dist/{renderer-2T2RAFWX.js → renderer-BUMIZJIY.js} +14 -14
  187. package/dist/renderer-BY5AAKV7.js +25 -0
  188. package/dist/renderer-DU6D3S6K.js +27 -0
  189. package/dist/{renderer-UPTO25OX.js → renderer-EAQNSDTC.js} +12 -12
  190. package/dist/{renderer-FAD65M5Z.js → renderer-EP4GRCDX.js} +6 -6
  191. package/dist/{renderer-WLA3NQCC.js → renderer-GQUJVPVA.js} +13 -13
  192. package/dist/{renderer-W7JC2CTQ.js → renderer-HZCYBOAB.js} +6 -6
  193. package/dist/renderer-IMZKZ6TV.js +23 -0
  194. package/dist/renderer-J2N5YBFP.js +16 -0
  195. package/dist/renderer-KJNTNI22.js +26 -0
  196. package/dist/renderer-LKZZID6J.js +76 -0
  197. package/dist/renderer-MCWAHNQG.js +22 -0
  198. package/dist/renderer-MJCSBYAR.js +25 -0
  199. package/dist/{renderer-CB44E262.js → renderer-NXOSBZPO.js} +13 -13
  200. package/dist/renderer-ODDULMVE.js +20 -0
  201. package/dist/renderer-OTHBTGBN.js +16 -0
  202. package/dist/{renderer-VP4DPLDY.js → renderer-R7Q72DM4.js} +6 -6
  203. package/dist/renderer-S42JPAZO.js +24 -0
  204. package/dist/{renderer-QZRM6H4S.js → renderer-SCIHPARI.js} +5 -5
  205. package/dist/{renderer-K73COK5L.js → renderer-SW5YUK6H.js} +8 -8
  206. package/dist/{renderer-VEN6AIWW.js → renderer-TBWE67FB.js} +12 -12
  207. package/dist/{renderer-ACGZ5KJG.js → renderer-V7476J5G.js} +17 -17
  208. package/dist/renderer-VG4C23TY.js +21 -0
  209. package/dist/{renderer-E42I44WZ.js → renderer-WG6CUDWI.js} +13 -13
  210. package/dist/{renderer-2MEPYGAP.js → renderer-XL54ZE4H.js} +13 -13
  211. package/dist/{renderer-Y4VC3VH4.js → renderer-XNLRQWM6.js} +13 -13
  212. package/dist/{renderer-CL4X5S3T.js → renderer-YIJYYZZE.js} +12 -12
  213. package/dist/{renderer-Y3D36RIT.js → renderer-YX6S3U4L.js} +11 -11
  214. package/dist/renderer-radial-ZZAAPDSY.js +21 -0
  215. package/dist/{resolver-B3TXWNWF.js → resolver-H5E6V7LJ.js} +3 -3
  216. package/dist/state-parser-4DJ67MNV.js +19 -0
  217. package/dist/{state-renderer-FJ2GT4MU.js → state-renderer-IABX3URA.js} +17 -17
  218. package/dist/{tag-groups-NUA2F1I5.d.ts → tag-groups-DrHT2tEc.d.ts} +10 -0
  219. package/dist/{themes-Dem5xalq.d.ts → themes-GWhsabnx.d.ts} +2 -2
  220. package/docs/language-reference.md +49 -11
  221. package/gallery/fixtures/countdown.dgmo +1 -1
  222. package/package.json +1 -1
  223. package/dist/calculator-4CNL2GKU.js +0 -13
  224. package/dist/dgmo-router-O55I5UXN.js +0 -89
  225. package/dist/dimensions-EFEBIRS6.js +0 -22
  226. package/dist/flowchart-parser-LZF2GW2P.js +0 -21
  227. package/dist/layout-4D5JRUHX.js +0 -15
  228. package/dist/layout-VMDNULKS.js +0 -15
  229. package/dist/layout-VVTXA3W2.js +0 -15
  230. package/dist/parser-2CXA7K5C.js +0 -13
  231. package/dist/parser-4E2TVMOK.js +0 -13
  232. package/dist/parser-52AZJ3BA.js +0 -17
  233. package/dist/parser-52BOCAVQ.js +0 -15
  234. package/dist/parser-5IPCYVXY.js +0 -12
  235. package/dist/parser-6BF5TJQH.js +0 -16
  236. package/dist/parser-6VZISXFY.js +0 -11
  237. package/dist/parser-6Y5BMNNJ.js +0 -14
  238. package/dist/parser-7HUZBXKW.js +0 -11
  239. package/dist/parser-AEJ73QJS.js +0 -11
  240. package/dist/parser-AWNEAGMJ.js +0 -12
  241. package/dist/parser-C2QRTZPJ.js +0 -13
  242. package/dist/parser-CBSYFN6U.js +0 -11
  243. package/dist/parser-CNKHKQKZ.js +0 -17
  244. package/dist/parser-GK3JWVHY.js +0 -18
  245. package/dist/parser-GZKR6BFA.js +0 -14
  246. package/dist/parser-K26KDCZN.js +0 -11
  247. package/dist/parser-LTJ5AKY4.js +0 -16
  248. package/dist/parser-NIGB4EYX.js +0 -12
  249. package/dist/parser-OHWDJGCP.js +0 -15
  250. package/dist/parser-QCVEWLCO.js +0 -15
  251. package/dist/parser-SUAOF72Y.js +0 -13
  252. package/dist/parser-W2HXBHNC.js +0 -11
  253. package/dist/parser-WF4R7225.js +0 -15
  254. package/dist/parser-XRZQ7SC7.js +0 -13
  255. package/dist/parser-YRJAGBV7.js +0 -19
  256. package/dist/parser-Z3LN7P6G.js +0 -20
  257. package/dist/renderer-4DFEFP4X.js +0 -26
  258. package/dist/renderer-52KYFTNZ.js +0 -16
  259. package/dist/renderer-B4Q6LUW2.js +0 -24
  260. package/dist/renderer-E3UQ24DE.js +0 -25
  261. package/dist/renderer-H5QR3LC3.js +0 -16
  262. package/dist/renderer-JHWGW4Q7.js +0 -25
  263. package/dist/renderer-KQIJV5WD.js +0 -19
  264. package/dist/renderer-MZ4N2SVV.js +0 -25
  265. package/dist/renderer-QMSFXMAL.js +0 -21
  266. package/dist/renderer-VOXE7V6L.js +0 -27
  267. package/dist/renderer-WBG576LB.js +0 -26
  268. package/dist/renderer-XR4SVKNE.js +0 -22
  269. package/dist/renderer-YROML2KW.js +0 -76
  270. package/dist/renderer-YXYEP46H.js +0 -23
  271. package/dist/renderer-radial-KZ3W4WXI.js +0 -21
  272. package/dist/state-parser-HJNCGIFT.js +0 -19
@@ -3,13 +3,14 @@ import {
3
3
  invalidColorDiagnostic,
4
4
  resolveColor,
5
5
  resolveColorWithDiagnostic
6
- } from "./chunk-EXNKNJ65.js";
6
+ } from "./chunk-XOGQY4EC.js";
7
7
  import {
8
8
  METADATA_DIAGNOSTIC_CODES,
9
+ emit,
9
10
  emptyMetadataValueMessage,
10
11
  makeDgmoError,
11
12
  suggest
12
- } from "./chunk-OLMWTJVU.js";
13
+ } from "./chunk-5SI6T5A5.js";
13
14
 
14
15
  // src/directives-registry.ts
15
16
  var DIRECTIVES_REGISTRY = [
@@ -834,6 +835,265 @@ var FAMILY_PERSON_REGISTRY = staticRegistry([
834
835
  ]);
835
836
  var FAMILY_UNION_REGISTRY = staticRegistry(["m"]);
836
837
 
838
+ // src/alias-diagnostics.ts
839
+ var ALIAS_INVALID_FORMAT_DX = {
840
+ code: "E_ALIAS_INVALID_FORMAT",
841
+ severity: "error",
842
+ chartType: null,
843
+ title: "Malformed alias",
844
+ message: (p) => `Alias '${String(p.alias ?? "pm-cluster")}' must match [A-Za-z][A-Za-z0-9_]{0,11} (letter start, letters/digits/underscore, max 12 chars).`,
845
+ hint: "Shorten the alias or drop the hyphen \u2014 a malformed one is not peeled off, so the whole `Name as \u2026` string becomes the name.",
846
+ example: "org\nAlice as thirteencharss\n Bob as b\n"
847
+ };
848
+ var ALIAS_RESERVED_KEYWORD_DX = {
849
+ code: "E_ALIAS_RESERVED_KEYWORD",
850
+ severity: "error",
851
+ chartType: null,
852
+ title: "Alias is a reserved keyword",
853
+ message: (p) => `'${String(p.alias ?? "tag")}' is a reserved keyword and cannot be used as an alias.`,
854
+ hint: "Grammar keywords (`as`, `is`, `tag`, `alias`, `aka`) and chart-type names are reserved. Articles are not \u2014 `Alice as a` is fine.",
855
+ example: "org\nAlice as tag\n Bob as b\n"
856
+ };
857
+ var ALIAS_COLLISION_DX = {
858
+ code: "E_ALIAS_COLLISION",
859
+ severity: "error",
860
+ chartType: null,
861
+ title: "Alias already bound",
862
+ message: (p) => `Alias '${String(p.alias ?? "a")}' is already bound to '${String(p.previousCanonical ?? "Alice")}' (line ${String(p.previousLine ?? 2)}). Cannot rebind to '${String(p.canonical ?? "Bob")}'.`,
863
+ hint: "One alias literal has exactly one binding per source \u2014 choose a different alias.",
864
+ example: "org\nAlice as a\n Bob as a\n"
865
+ };
866
+ var ALIAS_REBINDING_DX = {
867
+ code: "E_ALIAS_REBINDING",
868
+ severity: "error",
869
+ chartType: null,
870
+ title: "Name aliased twice",
871
+ message: (p) => `'${String(p.canonical ?? "Alice")}' is already aliased as '${String(p.previousAlias ?? p.alias ?? "a")}' (line ${String(p.previousLine ?? 2)}). Cannot also alias as '${String(p.alias ?? "al")}'.`,
872
+ hint: "Keep one alias per name and use it everywhere.",
873
+ example: "org\nAlice as a\n Alice as al\n"
874
+ };
875
+ var ALIAS_SHADOWS_NAME_DX = {
876
+ code: "E_ALIAS_SHADOWS_NAME",
877
+ severity: "error",
878
+ chartType: null,
879
+ title: "Alias shadows a name",
880
+ message: (p) => `Alias '${String(p.alias ?? "Bob")}' would shadow an existing canonical name. Choose a different alias.`,
881
+ hint: "A token that is both a name and an alias reads as two things at every later use.",
882
+ example: "org\nAlice as Bob\n Bob as b\n"
883
+ };
884
+ var ALIAS_OF_ALIAS_DX = {
885
+ code: "E_ALIAS_OF_ALIAS",
886
+ severity: "error",
887
+ chartType: null,
888
+ title: "Alias of an alias",
889
+ message: (p) => `'${String(p.canonical ?? "a")}' is itself an alias for '${String(p.target ?? "Alice")}'. Cannot alias an alias \u2014 alias the canonical instead.`,
890
+ hint: "Write the canonical name on the left of `as`.",
891
+ example: "org\nAlice as a\n a as b\n"
892
+ };
893
+ var ALIAS_BEFORE_DECL_DX = {
894
+ code: "E_ALIAS_BEFORE_DECL",
895
+ severity: "error",
896
+ chartType: null,
897
+ title: "Alias used before declaration",
898
+ message: (p) => `Alias '${String(p.alias ?? "b")}' used before declaration. Declare '${String(p.canonical ?? "Bob")} as ${String(p.alias ?? "b")}' on or above this line.`,
899
+ hint: "DGMO is single-pass \u2014 move the declaration above its first use.",
900
+ example: "boxes-and-lines\n[A]\n b\n[B] as b\n"
901
+ };
902
+ var ALIAS_AFTER_CANONICAL_DX = {
903
+ code: "E_ALIAS_AFTER_CANONICAL",
904
+ severity: "error",
905
+ chartType: null,
906
+ title: "Alias declared after the name was used",
907
+ message: (p) => `'${String(p.canonical ?? "Alice")}' was already used as a canonical name (line ${String(p.firstLine ?? 2)}). Aliases must be declared on or before first use.`,
908
+ hint: "Declare the alias where the name first appears.",
909
+ example: "sequence\nAlice is an actor\nBob is a database\nAlice as a\n"
910
+ };
911
+ var ALIAS_DIAGNOSTICS = [
912
+ ALIAS_INVALID_FORMAT_DX,
913
+ ALIAS_RESERVED_KEYWORD_DX,
914
+ ALIAS_COLLISION_DX,
915
+ ALIAS_REBINDING_DX,
916
+ ALIAS_SHADOWS_NAME_DX,
917
+ ALIAS_OF_ALIAS_DX,
918
+ ALIAS_BEFORE_DECL_DX,
919
+ ALIAS_AFTER_CANONICAL_DX
920
+ ];
921
+
922
+ // src/utils/alias-registry.ts
923
+ var ALIAS_TOKEN_RE = /^[A-Za-z][A-Za-z0-9_]{0,11}$/;
924
+ var ALIAS_ATTEMPT_RE = /\s+as\s+(\S+)\s*$/;
925
+ var RESERVED_ALIAS_TOKENS = /* @__PURE__ */ new Set([
926
+ "as",
927
+ "is",
928
+ "tag",
929
+ "alias",
930
+ "aka",
931
+ ...CHART_TYPE_IDS
932
+ ]);
933
+ function checkAliasSyntax(nameRegion, alias, line) {
934
+ if (alias !== void 0) {
935
+ return RESERVED_ALIAS_TOKENS.has(alias) ? [emit(ALIAS_RESERVED_KEYWORD_DX, line, { alias })] : [];
936
+ }
937
+ const attempt = ALIAS_ATTEMPT_RE.exec(nameRegion);
938
+ if (!attempt) return [];
939
+ const token = attempt[1];
940
+ if (ALIAS_TOKEN_RE.test(token)) return [];
941
+ return [emit(ALIAS_INVALID_FORMAT_DX, line, { alias: token })];
942
+ }
943
+ function foldName(name) {
944
+ return name.trim().toLowerCase();
945
+ }
946
+ var AliasRegistry = class {
947
+ declarations = [];
948
+ references = [];
949
+ /** Folded canonical name → the first line it was seen on as a canonical. */
950
+ canonicals = /* @__PURE__ */ new Map();
951
+ bindings = /* @__PURE__ */ new Map();
952
+ /**
953
+ * The line the parser is currently reading. Several parsers resolve
954
+ * references inside a closure that has no line in scope — `resolveNameRef`,
955
+ * `resolveAliasName`, `resolveSlot` — and threading one through every call
956
+ * site would be a far larger edit than the rule is worth. A parser sets this
957
+ * once per line in its main loop instead.
958
+ *
959
+ * A resolution that happens in a POST-pass therefore attributes its
960
+ * references to the last line read. That direction is deliberate: it can
961
+ * only make the strict-ordering rule miss an out-of-order reference, never
962
+ * invent one, because a reference dated after every declaration is in order
963
+ * by definition.
964
+ */
965
+ currentLine = 0;
966
+ /** Tell the registry which line is being read (see {@link currentLine}). */
967
+ at(line) {
968
+ this.currentLine = line;
969
+ }
970
+ /** Record `<canonical> as <alias>` at `line`. */
971
+ declare(alias, canonical, line = this.currentLine) {
972
+ this.declarations.push({ alias, canonical, line });
973
+ if (!this.bindings.has(alias)) this.bindings.set(alias, canonical);
974
+ }
975
+ /** Record that `name` appeared as a canonical name (not as an alias). */
976
+ noteCanonical(name, line = this.currentLine) {
977
+ const key = foldName(name);
978
+ if (key === "") return;
979
+ if (!this.canonicals.has(key)) this.canonicals.set(key, line);
980
+ }
981
+ /**
982
+ * Resolve a token that may be an alias, recording the reference so the
983
+ * ordering rule can be decided later. Returns `undefined` when the token
984
+ * is not a declared alias, so callers keep their existing fallback.
985
+ */
986
+ resolve(token, line = this.currentLine) {
987
+ const key = token.trim();
988
+ if (key !== "") this.references.push({ token: key, line });
989
+ return this.bindings.get(key);
990
+ }
991
+ /** True when `token` is bound in this parse — a lookup with no reference recorded. */
992
+ has(token) {
993
+ return this.bindings.has(token.trim());
994
+ }
995
+ /**
996
+ * The canonical bound to `token`, WITHOUT recording a reference. For code
997
+ * asking a question about the namespace ("is this label the thing that
998
+ * alias points at?") rather than reading a name — recording those would
999
+ * date references to lines that never referred to anything.
1000
+ */
1001
+ lookup(token) {
1002
+ return this.bindings.get(token.trim());
1003
+ }
1004
+ /**
1005
+ * Decide the six namespace rules over everything recorded, in source
1006
+ * order. Safe to call once; a parser calls it as it returns.
1007
+ */
1008
+ finish() {
1009
+ const out = [];
1010
+ const owner = /* @__PURE__ */ new Map();
1011
+ const aliasedAsCanonical = /* @__PURE__ */ new Set();
1012
+ const reported = /* @__PURE__ */ new Set();
1013
+ const aliasedCanonical = /* @__PURE__ */ new Map();
1014
+ for (const decl of this.declarations) {
1015
+ const { alias, canonical, line } = decl;
1016
+ const previous = owner.get(alias);
1017
+ if (previous) {
1018
+ reported.add(decl);
1019
+ out.push(
1020
+ emit(
1021
+ previous.canonical === canonical ? ALIAS_REBINDING_DX : ALIAS_COLLISION_DX,
1022
+ line,
1023
+ {
1024
+ alias,
1025
+ canonical,
1026
+ previousCanonical: previous.canonical,
1027
+ previousLine: previous.line
1028
+ }
1029
+ )
1030
+ );
1031
+ continue;
1032
+ }
1033
+ owner.set(alias, decl);
1034
+ const aliasedTarget = owner.get(canonical);
1035
+ if (aliasedTarget && aliasedTarget !== decl && aliasedTarget.alias === canonical) {
1036
+ aliasedAsCanonical.add(foldName(canonical));
1037
+ out.push(
1038
+ emit(ALIAS_OF_ALIAS_DX, line, {
1039
+ alias,
1040
+ canonical,
1041
+ target: aliasedTarget.canonical
1042
+ })
1043
+ );
1044
+ }
1045
+ const already = aliasedCanonical.get(canonical);
1046
+ if (already) {
1047
+ reported.add(decl);
1048
+ out.push(
1049
+ emit(ALIAS_REBINDING_DX, line, {
1050
+ alias,
1051
+ canonical,
1052
+ previousAlias: already.alias,
1053
+ previousLine: already.line
1054
+ })
1055
+ );
1056
+ } else {
1057
+ aliasedCanonical.set(canonical, decl);
1058
+ }
1059
+ }
1060
+ for (const decl of owner.values()) {
1061
+ const selfBound = foldName(decl.alias) === foldName(decl.canonical);
1062
+ const shadowed = selfBound ? void 0 : this.canonicals.get(foldName(decl.alias));
1063
+ if (shadowed !== void 0 && !aliasedAsCanonical.has(foldName(decl.alias))) {
1064
+ out.push(
1065
+ emit(ALIAS_SHADOWS_NAME_DX, decl.line, {
1066
+ alias: decl.alias,
1067
+ nameLine: shadowed
1068
+ })
1069
+ );
1070
+ }
1071
+ const firstUse = this.canonicals.get(foldName(decl.canonical));
1072
+ if (firstUse !== void 0 && firstUse < decl.line && !reported.has(decl)) {
1073
+ out.push(
1074
+ emit(ALIAS_AFTER_CANONICAL_DX, decl.line, {
1075
+ canonical: decl.canonical,
1076
+ firstLine: firstUse
1077
+ })
1078
+ );
1079
+ }
1080
+ }
1081
+ for (const ref of this.references) {
1082
+ const decl = owner.get(ref.token);
1083
+ if (decl && ref.line < decl.line) {
1084
+ out.push(
1085
+ emit(ALIAS_BEFORE_DECL_DX, ref.line, {
1086
+ alias: ref.token,
1087
+ canonical: decl.canonical,
1088
+ declLine: decl.line
1089
+ })
1090
+ );
1091
+ }
1092
+ }
1093
+ return out.sort((a, b) => a.line - b.line);
1094
+ }
1095
+ };
1096
+
837
1097
  // src/utils/parsing.ts
838
1098
  var RECOGNIZED_COLOR_SET = new Set(
839
1099
  RECOGNIZED_COLOR_NAMES
@@ -1282,6 +1542,9 @@ function splitNameAndMeta(line, registry, aliasMap = /* @__PURE__ */ new Map(),
1282
1542
  alias = aliasMatch[1];
1283
1543
  postColorName = postColorName.substring(0, aliasMatch.index).trimEnd();
1284
1544
  }
1545
+ if (diagnostics && lineNumber !== void 0) {
1546
+ diagnostics.push(...checkAliasSyntax(postColorName, alias, lineNumber));
1547
+ }
1285
1548
  }
1286
1549
  const meta = metaRegion.length > 0 ? parseMetadataRegion(metaRegion, aliasMap, diagnostics, lineNumber) : {};
1287
1550
  void palette;
@@ -1357,6 +1620,8 @@ export {
1357
1620
  RACI_REGISTRY,
1358
1621
  FAMILY_PERSON_REGISTRY,
1359
1622
  FAMILY_UNION_REGISTRY,
1623
+ ALIAS_DIAGNOSTICS,
1624
+ AliasRegistry,
1360
1625
  ALL_CHART_TYPES,
1361
1626
  measureIndent,
1362
1627
  extractColor,
@@ -1384,4 +1649,4 @@ export {
1384
1649
  splitNameAndMeta,
1385
1650
  warnUnknownMetaKeys
1386
1651
  };
1387
- //# sourceMappingURL=chunk-ZJJWON5O.js.map
1652
+ //# sourceMappingURL=chunk-MK55PZVB.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  mix
3
- } from "./chunk-KWRW6BLG.js";
3
+ } from "./chunk-GLREDNBA.js";
4
4
  import {
5
5
  resolveColor
6
- } from "./chunk-EXNKNJ65.js";
6
+ } from "./chunk-XOGQY4EC.js";
7
7
 
8
8
  // src/clock/swatches.ts
9
9
  function buildSwatches(palette, muted) {
@@ -32,4 +32,4 @@ function buildSwatches(palette, muted) {
32
32
  export {
33
33
  buildSwatches
34
34
  };
35
- //# sourceMappingURL=chunk-RTTELOOP.js.map
35
+ //# sourceMappingURL=chunk-MS5574I7.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  emit
3
- } from "./chunk-OLMWTJVU.js";
3
+ } from "./chunk-5SI6T5A5.js";
4
4
 
5
5
  // src/raci/diagnostics.ts
6
6
  var RACI_DX = {
@@ -481,4 +481,4 @@ export {
481
481
  RACI_WARNING_CODES,
482
482
  VARIANTS
483
483
  };
484
- //# sourceMappingURL=chunk-I55PVEIX.js.map
484
+ //# sourceMappingURL=chunk-MSVQ2YCY.js.map
@@ -6,10 +6,10 @@ import {
6
6
  formatPct,
7
7
  resolveCellColor,
8
8
  resolveColorMode
9
- } from "./chunk-3HN32MEK.js";
9
+ } from "./chunk-INOSOL3J.js";
10
10
  import {
11
11
  layoutInlineHeader
12
- } from "./chunk-6CLC26GU.js";
12
+ } from "./chunk-YJMWEZOB.js";
13
13
  import {
14
14
  TITLE_FONT_SIZE,
15
15
  TITLE_FONT_WEIGHT,
@@ -17,29 +17,29 @@ import {
17
17
  } from "./chunk-A4GOY3PE.js";
18
18
  import {
19
19
  renderIntegratedLegend
20
- } from "./chunk-6S53NO3M.js";
20
+ } from "./chunk-O7ZKDUDX.js";
21
21
  import {
22
22
  getLegendExtent,
23
23
  getMaxLegendReservedHeight
24
- } from "./chunk-MTPKBSTR.js";
24
+ } from "./chunk-4SXHMFFP.js";
25
25
  import {
26
26
  FONT_FAMILY
27
27
  } from "./chunk-UTCPNJND.js";
28
28
  import {
29
29
  LEGEND_GROUP_GAP
30
- } from "./chunk-QX53GOI7.js";
30
+ } from "./chunk-YT5ICQ4R.js";
31
31
  import {
32
32
  measureText
33
33
  } from "./chunk-MTGGOCND.js";
34
34
  import {
35
35
  tagAttrKey
36
- } from "./chunk-DPGI742S.js";
36
+ } from "./chunk-4FKEI4MF.js";
37
37
  import {
38
38
  contrastText,
39
39
  getSeriesColors,
40
40
  mix,
41
41
  themeBaseBg
42
- } from "./chunk-KWRW6BLG.js";
42
+ } from "./chunk-GLREDNBA.js";
43
43
 
44
44
  // src/treemap/renderer.ts
45
45
  import * as d3Selection from "d3-selection";
@@ -439,4 +439,4 @@ export {
439
439
  renderTreemapForExport,
440
440
  renderTreemap
441
441
  };
442
- //# sourceMappingURL=chunk-WEC3JPTN.js.map
442
+ //# sourceMappingURL=chunk-MZMK474U.js.map
@@ -21,7 +21,7 @@ import {
21
21
  tagAttrKey,
22
22
  validateTagGroupNames,
23
23
  validateTagValues
24
- } from "./chunk-DPGI742S.js";
24
+ } from "./chunk-4FKEI4MF.js";
25
25
  import {
26
26
  PERT_REGISTRY,
27
27
  extractColor,
@@ -31,12 +31,12 @@ import {
31
31
  splitNameAndMeta,
32
32
  warnUnknownMetaKeys,
33
33
  withTagAliases
34
- } from "./chunk-ZJJWON5O.js";
34
+ } from "./chunk-MK55PZVB.js";
35
35
  import {
36
36
  emit,
37
37
  makeDgmoError,
38
38
  suggest
39
- } from "./chunk-OLMWTJVU.js";
39
+ } from "./chunk-5SI6T5A5.js";
40
40
 
41
41
  // src/pert/diagnostics.ts
42
42
  var PERT_DX = {
@@ -1268,4 +1268,4 @@ export {
1268
1268
  extractPertSymbols,
1269
1269
  looksLikePert
1270
1270
  };
1271
- //# sourceMappingURL=chunk-NTBHGUXY.js.map
1271
+ //# sourceMappingURL=chunk-NE7JHZCQ.js.map
@@ -9,19 +9,19 @@ import {
9
9
  tagAttrKey,
10
10
  validateTagGroupNames,
11
11
  validateTagValues
12
- } from "./chunk-DPGI742S.js";
12
+ } from "./chunk-4FKEI4MF.js";
13
13
  import {
14
14
  extractColor,
15
15
  fillModeFromToken,
16
16
  measureIndent,
17
17
  parseFirstLine
18
- } from "./chunk-ZJJWON5O.js";
18
+ } from "./chunk-MK55PZVB.js";
19
19
  import {
20
20
  formatDgmoError,
21
21
  makeDgmoError,
22
22
  makeFail,
23
23
  suggest
24
- } from "./chunk-OLMWTJVU.js";
24
+ } from "./chunk-5SI6T5A5.js";
25
25
 
26
26
  // src/block/parser.ts
27
27
  function parseBlock(content, palette) {
@@ -342,4 +342,4 @@ function parseBlockTail(tail, aliasMap) {
342
342
  export {
343
343
  parseBlock
344
344
  };
345
- //# sourceMappingURL=chunk-JIWDWOYA.js.map
345
+ //# sourceMappingURL=chunk-NQJ7DDUT.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  computeLegendLayout
3
- } from "./chunk-MTPKBSTR.js";
3
+ } from "./chunk-4SXHMFFP.js";
4
4
  import {
5
5
  FONT_FAMILY
6
6
  } from "./chunk-UTCPNJND.js";
@@ -15,13 +15,13 @@ import {
15
15
  LEGEND_TOGGLE_OFF_OPACITY,
16
16
  legendChromeColors,
17
17
  measureLegendText
18
- } from "./chunk-QX53GOI7.js";
18
+ } from "./chunk-YT5ICQ4R.js";
19
19
  import {
20
20
  tagAttrKey
21
- } from "./chunk-DPGI742S.js";
21
+ } from "./chunk-4FKEI4MF.js";
22
22
  import {
23
23
  valueRampStops
24
- } from "./chunk-KWRW6BLG.js";
24
+ } from "./chunk-GLREDNBA.js";
25
25
 
26
26
  // src/utils/legend-d3.ts
27
27
  function centerText(sel) {
@@ -294,4 +294,4 @@ export {
294
294
  renderLegendD3,
295
295
  renderIntegratedLegend
296
296
  };
297
- //# sourceMappingURL=chunk-6S53NO3M.js.map
297
+ //# sourceMappingURL=chunk-O7ZKDUDX.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  tryCollectNote
3
- } from "./chunk-MX3BYU7V.js";
3
+ } from "./chunk-JLSGQMRA.js";
4
4
  import {
5
5
  resolveNotes
6
- } from "./chunk-7NK42OIB.js";
6
+ } from "./chunk-E6PNTYRK.js";
7
7
  import {
8
8
  parseInArrowLabel
9
- } from "./chunk-RRX4Z4TH.js";
9
+ } from "./chunk-IHOFUR74.js";
10
10
  import {
11
11
  normalizeName
12
12
  } from "./chunk-NOTA6TEI.js";
@@ -20,8 +20,9 @@ import {
20
20
  tagAttrKey,
21
21
  validateTagGroupNames,
22
22
  validateTagValues
23
- } from "./chunk-DPGI742S.js";
23
+ } from "./chunk-4FKEI4MF.js";
24
24
  import {
25
+ AliasRegistry,
25
26
  BOXES_AND_LINES_REGISTRY,
26
27
  OPTION_NOCOLON_RE,
27
28
  extractColor,
@@ -32,11 +33,11 @@ import {
32
33
  tryParseSharedOption,
33
34
  warnUnknownMetaKeys,
34
35
  withTagAliases
35
- } from "./chunk-ZJJWON5O.js";
36
+ } from "./chunk-MK55PZVB.js";
36
37
  import {
37
38
  makeDgmoError,
38
39
  suggest
39
- } from "./chunk-OLMWTJVU.js";
40
+ } from "./chunk-5SI6T5A5.js";
40
41
 
41
42
  // src/boxes-and-lines/parser.ts
42
43
  var MAX_GROUP_DEPTH = 2;
@@ -120,7 +121,7 @@ function parseBoxesAndLines(content, palette) {
120
121
  let activeTagOptionLine = 0;
121
122
  let currentTagGroup = null;
122
123
  const metaAliasMap = /* @__PURE__ */ new Map();
123
- const nameAliasMap = /* @__PURE__ */ new Map();
124
+ const nameAliasMap = new AliasRegistry();
124
125
  function peelAlias(label) {
125
126
  const trimmed = label.trim();
126
127
  const m = trimmed.match(/^(.*?)\s+as\s+([A-Za-z][A-Za-z0-9_]{0,11})\s*$/);
@@ -414,7 +415,8 @@ function parseBoxesAndLines(content, palette) {
414
415
  const groupPeeled = peelAlias(groupMatch[1]);
415
416
  const label = groupPeeled.label;
416
417
  if (groupPeeled.alias)
417
- nameAliasMap.set(groupPeeled.alias, groupId(label));
418
+ nameAliasMap.declare(groupPeeled.alias, groupId(label), lineNum);
419
+ nameAliasMap.noteCanonical(groupId(label), lineNum);
418
420
  const currentDepth = groupStack.length + 1;
419
421
  if (currentDepth > MAX_GROUP_DEPTH) {
420
422
  result.diagnostics.push(
@@ -602,6 +604,7 @@ function parseBoxesAndLines(content, palette) {
602
604
  "W_ACTIVE_TAG_NO_MATCH"
603
605
  );
604
606
  }
607
+ result.diagnostics.push(...nameAliasMap.finish());
605
608
  return result;
606
609
  }
607
610
  function parseNodeLine(trimmed, lineNum, metaAliasMap, diagnostics, nameAliasMap) {
@@ -647,8 +650,9 @@ function parseNodeLine(trimmed, lineNum, metaAliasMap, diagnostics, nameAliasMap
647
650
  delete metadata["heat"];
648
651
  }
649
652
  if (split.alias) {
650
- nameAliasMap?.set(normalizeName(split.alias), label);
653
+ nameAliasMap?.declare(normalizeName(split.alias), label, lineNum);
651
654
  }
655
+ nameAliasMap?.noteCanonical(label, lineNum);
652
656
  if (!label) return null;
653
657
  return {
654
658
  label,
@@ -670,11 +674,11 @@ function splitTargetAndMeta(rest, metaAliasMap) {
670
674
  }
671
675
  return { target, metadata: split.meta };
672
676
  }
673
- function resolveEndpoint(name, nameAliasMap) {
677
+ function resolveEndpoint(name, lineNum, nameAliasMap) {
674
678
  const m = name.match(/^\[(.+)\]$/);
675
679
  if (m) return groupId(m[1].trim());
676
680
  if (nameAliasMap) {
677
- const aliased = nameAliasMap.get(name.trim());
681
+ const aliased = nameAliasMap.resolve(name, lineNum);
678
682
  if (aliased !== void 0) return aliased;
679
683
  }
680
684
  return peelQuotedName(name);
@@ -687,7 +691,7 @@ function parseEdgeLine(trimmed, lineNum, metaAliasMap, diagnostics, nameAliasMap
687
691
  const biLabeledMatch = trimmed.match(/^(.+?)\s*<-(.+)->\s*(.+)$/);
688
692
  if (biLabeledMatch) {
689
693
  const rawSource2 = biLabeledMatch[1].trim();
690
- const source2 = resolveEndpoint(rawSource2, nameAliasMap);
694
+ const source2 = resolveEndpoint(rawSource2, lineNum, nameAliasMap);
691
695
  const labelResult = parseInArrowLabel(biLabeledMatch[2], lineNum);
692
696
  diagnostics.push(...labelResult.diagnostics);
693
697
  const label = labelResult.label;
@@ -719,7 +723,7 @@ function parseEdgeLine(trimmed, lineNum, metaAliasMap, diagnostics, nameAliasMap
719
723
  }
720
724
  return {
721
725
  source: source2,
722
- target: resolveEndpoint(rest2, nameAliasMap),
726
+ target: resolveEndpoint(rest2, lineNum, nameAliasMap),
723
727
  ...label !== void 0 && { label },
724
728
  bidirectional: true,
725
729
  lineNumber: lineNum,
@@ -729,7 +733,7 @@ function parseEdgeLine(trimmed, lineNum, metaAliasMap, diagnostics, nameAliasMap
729
733
  const biIdx = trimmed.indexOf("<->");
730
734
  if (biIdx >= 0) {
731
735
  const rawSource2 = trimmed.slice(0, biIdx).trim();
732
- const source2 = resolveEndpoint(rawSource2, nameAliasMap);
736
+ const source2 = resolveEndpoint(rawSource2, lineNum, nameAliasMap);
733
737
  let rest2 = trimmed.slice(biIdx + 3).trim();
734
738
  const { target: plainTarget2, metadata: metadata2 } = splitTargetAndMeta(
735
739
  rest2,
@@ -758,7 +762,7 @@ function parseEdgeLine(trimmed, lineNum, metaAliasMap, diagnostics, nameAliasMap
758
762
  }
759
763
  return {
760
764
  source: source2,
761
- target: resolveEndpoint(rest2, nameAliasMap),
765
+ target: resolveEndpoint(rest2, lineNum, nameAliasMap),
762
766
  bidirectional: true,
763
767
  lineNumber: lineNum,
764
768
  metadata: metadata2
@@ -767,7 +771,7 @@ function parseEdgeLine(trimmed, lineNum, metaAliasMap, diagnostics, nameAliasMap
767
771
  const labeledMatch = trimmed.match(/^(.+?)\s+-(.+?)->\s*(.+)$/);
768
772
  if (labeledMatch) {
769
773
  const rawSource2 = labeledMatch[1].trim();
770
- const source2 = resolveEndpoint(rawSource2, nameAliasMap);
774
+ const source2 = resolveEndpoint(rawSource2, lineNum, nameAliasMap);
771
775
  const labelResult = parseInArrowLabel(labeledMatch[2], lineNum);
772
776
  diagnostics.push(...labelResult.diagnostics);
773
777
  const label = labelResult.label;
@@ -800,7 +804,7 @@ function parseEdgeLine(trimmed, lineNum, metaAliasMap, diagnostics, nameAliasMap
800
804
  }
801
805
  return {
802
806
  source: source2,
803
- target: resolveEndpoint(rest2, nameAliasMap),
807
+ target: resolveEndpoint(rest2, lineNum, nameAliasMap),
804
808
  label,
805
809
  bidirectional: false,
806
810
  lineNumber: lineNum,
@@ -811,7 +815,7 @@ function parseEdgeLine(trimmed, lineNum, metaAliasMap, diagnostics, nameAliasMap
811
815
  const arrowIdx = trimmed.indexOf("->");
812
816
  if (arrowIdx < 0) return null;
813
817
  const rawSource = trimmed.slice(0, arrowIdx).trim();
814
- const source = resolveEndpoint(rawSource, nameAliasMap);
818
+ const source = resolveEndpoint(rawSource, lineNum, nameAliasMap);
815
819
  let rest = trimmed.slice(arrowIdx + 2).trim();
816
820
  if (!source || !rest) {
817
821
  diagnostics.push(
@@ -844,7 +848,7 @@ function parseEdgeLine(trimmed, lineNum, metaAliasMap, diagnostics, nameAliasMap
844
848
  }
845
849
  return {
846
850
  source,
847
- target: resolveEndpoint(rest, nameAliasMap),
851
+ target: resolveEndpoint(rest, lineNum, nameAliasMap),
848
852
  bidirectional: false,
849
853
  lineNumber: lineNum,
850
854
  metadata
@@ -855,4 +859,4 @@ export {
855
859
  looksLikeBoxesAndLines,
856
860
  parseBoxesAndLines
857
861
  };
858
- //# sourceMappingURL=chunk-PBV2C3BW.js.map
862
+ //# sourceMappingURL=chunk-OMQ5V5NH.js.map