@diagrammo/dgmo 0.52.0 → 0.53.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 (329) hide show
  1. package/.cursorrules +59 -58
  2. package/.github/copilot-instructions.md +59 -58
  3. package/.windsurfrules +59 -58
  4. package/SKILL.md +59 -58
  5. package/dist/advanced.d.ts +65 -230
  6. package/dist/advanced.js +278 -611
  7. package/dist/analyzer-TDN5KJFP.js +15 -0
  8. package/dist/auto.css +14 -6
  9. package/dist/auto.js +142 -132
  10. package/dist/auto.mjs +1117 -452
  11. package/dist/block.css +14 -6
  12. package/dist/block.js +85 -72
  13. package/dist/calculator-VBIT6GQF.js +11 -0
  14. package/dist/chart-meta-CPNVUZ5J.d.ts +232 -0
  15. package/dist/chart-meta.d.ts +2 -0
  16. package/dist/chart-meta.js +105 -0
  17. package/dist/charts-d3-DH2XA45I.js +26 -0
  18. package/dist/{chunk-QJMKPUYK.js → chunk-22OQWBWD.js} +14 -7
  19. package/dist/{chunk-5NGAO4QK.js → chunk-27STWBOK.js} +10 -8
  20. package/dist/{chunk-QGATPIPX.js → chunk-2QC4HXCY.js} +31 -17
  21. package/dist/{chunk-HFMYN6N2.js → chunk-3B2GXZCX.js} +4 -3
  22. package/dist/{chunk-6HQH6JZE.js → chunk-3BEKKRH5.js} +10 -10
  23. package/dist/{chunk-AL672HNE.js → chunk-3CZLWOCI.js} +17 -7
  24. package/dist/{chunk-J7TLCB2Q.js → chunk-3IUHKMJI.js} +2 -2
  25. package/dist/{chunk-7L4UJOY6.js → chunk-3TYUXC7D.js} +2 -2
  26. package/dist/{chunk-Y2ZE3MSG.js → chunk-43E26CDA.js} +2 -2
  27. package/dist/{chunk-YTMTPUH4.js → chunk-4ASVFYB2.js} +6 -6
  28. package/dist/{chunk-WCT3NYCV.js → chunk-4ASYQ347.js} +33 -8
  29. package/dist/{chunk-ZNWAYU6N.js → chunk-4K42RUGC.js} +33 -9
  30. package/dist/{chunk-I5IGB56C.js → chunk-4QV26TEG.js} +41 -1
  31. package/dist/{chunk-QOOUC2J5.js → chunk-4RGZFA7H.js} +2 -2
  32. package/dist/{chunk-CXK4DZH3.js → chunk-4W2PE66Q.js} +12 -2
  33. package/dist/{chunk-CIRFIL4M.js → chunk-4WGMGKCZ.js} +13 -13
  34. package/dist/{chunk-JED6ZDEE.js → chunk-5HWPEYWB.js} +2 -2
  35. package/dist/{chunk-VQOCMUWI.js → chunk-65V6IRFN.js} +16 -14
  36. package/dist/{chunk-R3YSD62R.js → chunk-6AUZPPAV.js} +3 -3
  37. package/dist/{chunk-FQ7HTV52.js → chunk-6DCOIN4W.js} +33 -5
  38. package/dist/{chunk-MUE65OTD.js → chunk-6HTRCTAS.js} +4 -4
  39. package/dist/{chunk-TJVLKNGR.js → chunk-6KY7OCZC.js} +5 -5
  40. package/dist/{chunk-YAA6IID3.js → chunk-774C2FF3.js} +2 -2
  41. package/dist/{chunk-UBLHQTLV.js → chunk-7GUF6SDR.js} +15 -14
  42. package/dist/{chunk-5HILBT7X.js → chunk-7JDTNFAK.js} +3 -3
  43. package/dist/{chunk-QBZYACOG.js → chunk-ADYKAKE3.js} +3 -3
  44. package/dist/{chunk-H7KENAZO.js → chunk-AHXIMHDQ.js} +74 -14
  45. package/dist/chunk-AIMLCDAO.js +404 -0
  46. package/dist/{chunk-4IHAV6O7.js → chunk-ALYZ3MAA.js} +4 -4
  47. package/dist/{chunk-ROOE4R4Y.js → chunk-AN2DQB3G.js} +146 -18
  48. package/dist/{chunk-GCYTI3DE.js → chunk-AZNXGWDC.js} +56 -10
  49. package/dist/{chunk-3LK5DNED.js → chunk-B4XS2AF2.js} +3 -3
  50. package/dist/{chunk-3HF5YEFJ.js → chunk-BD3WGY4T.js} +4 -4
  51. package/dist/{chunk-4AQRFDXL.js → chunk-BFDVEO5R.js} +2 -2
  52. package/dist/{chunk-REJAIQ5S.js → chunk-BR7AYN76.js} +8 -8
  53. package/dist/{chunk-P3NRSSUU.js → chunk-BULHGPHK.js} +3 -3
  54. package/dist/{chunk-VILVLS7P.js → chunk-CK2GMDXD.js} +8 -4
  55. package/dist/{chunk-HHKO6SKY.js → chunk-CMVZWP32.js} +3 -3
  56. package/dist/{chunk-GJFAMOGK.js → chunk-CQFNIIQN.js} +7 -7
  57. package/dist/{chunk-FT3ZYWET.js → chunk-DWUMPMV2.js} +11 -10
  58. package/dist/{chunk-USZW2HHU.js → chunk-EQW6HOP4.js} +4 -3
  59. package/dist/{chunk-Z5QVYKR7.js → chunk-FFXCKZOU.js} +4 -4
  60. package/dist/{chunk-WRNFDFPU.js → chunk-FGDSTT3F.js} +2 -2
  61. package/dist/{chunk-FY5MSZAP.js → chunk-FLDC7ZAK.js} +21 -6
  62. package/dist/{chunk-AAXZDUOV.js → chunk-FT7TPPZ5.js} +17 -16
  63. package/dist/{chunk-3QD7VP3U.js → chunk-FUKNRLIJ.js} +14 -7
  64. package/dist/{chunk-3YRPZ7ZZ.js → chunk-FXCB7H5O.js} +4 -4
  65. package/dist/{chunk-SMRFPVLQ.js → chunk-GABSL6TH.js} +4 -4
  66. package/dist/{chunk-BKVOYV6I.js → chunk-GAWKIIPO.js} +17 -17
  67. package/dist/{chunk-HWX6ZHF3.js → chunk-GMAH572Z.js} +6 -6
  68. package/dist/{chunk-MUVJ57EP.js → chunk-GMIJ35PW.js} +23 -20
  69. package/dist/{chunk-7QE3XMRK.js → chunk-GQ644SPD.js} +18 -18
  70. package/dist/{chunk-5QKQSSPO.js → chunk-GRM2A4BG.js} +4 -4
  71. package/dist/{chunk-J7KJR3R6.js → chunk-GWQJKTFS.js} +133 -696
  72. package/dist/{chunk-OTOHI4JO.js → chunk-H3HFC3SQ.js} +2 -2
  73. package/dist/{chunk-SWSIKFEB.js → chunk-HE5J53SZ.js} +4 -4
  74. package/dist/{chunk-7BIZCTAX.js → chunk-HNBY6CNV.js} +3 -3
  75. package/dist/{chunk-J76PIKAT.js → chunk-HO3RCNF6.js} +3 -3
  76. package/dist/{chunk-44VCIPHF.js → chunk-HORZ5H2L.js} +26 -23
  77. package/dist/{chunk-MX2EY5Y7.js → chunk-HOXKNRON.js} +2 -2
  78. package/dist/{chunk-LTXOLDUZ.js → chunk-I64ECJX3.js} +12 -5
  79. package/dist/{chunk-4YFKQ5WT.js → chunk-IQJCVREL.js} +8 -8
  80. package/dist/{chunk-YIBAWQGJ.js → chunk-J7HI6G3G.js} +7 -7
  81. package/dist/{chunk-ICPJPQ5C.js → chunk-JHOAH4TI.js} +3 -3
  82. package/dist/{chunk-6EJITS44.js → chunk-JTMSWEIW.js} +6 -6
  83. package/dist/{chunk-WBM7ZNDI.js → chunk-JYDMBWRP.js} +35 -18
  84. package/dist/{chunk-7DF4J4RL.js → chunk-KKHCNSKK.js} +17 -11
  85. package/dist/{chunk-4UNQ6X24.js → chunk-KUSAVOWZ.js} +4 -4
  86. package/dist/{chunk-77FGAVZC.js → chunk-LC3FFD43.js} +21 -19
  87. package/dist/{chunk-INE5YJBZ.js → chunk-LHILKFDP.js} +10 -10
  88. package/dist/{chunk-ONU3U4GL.js → chunk-LQHVDZYC.js} +52 -16
  89. package/dist/{chunk-75G3Q4DK.js → chunk-MA3HJZHB.js} +5 -5
  90. package/dist/{chunk-QVENJMNX.js → chunk-MEQYZZFR.js} +2 -2
  91. package/dist/{chunk-IM6PDDCE.js → chunk-NNUMX6WX.js} +42 -12
  92. package/dist/{chunk-FQMUHRVC.js → chunk-NNYFQOTK.js} +14 -13
  93. package/dist/{chunk-H6PI3KJT.js → chunk-ODUT5WMC.js} +2 -2
  94. package/dist/{chunk-K4EOKJA6.js → chunk-P3H7QVDH.js} +42 -15
  95. package/dist/{chunk-FUPF2UYQ.js → chunk-PIXZTCKH.js} +51 -108
  96. package/dist/{chunk-BPY242XU.js → chunk-PKNNHU7H.js} +19 -8
  97. package/dist/{chunk-BPIZNB5O.js → chunk-PT4SW76W.js} +11 -11
  98. package/dist/{chunk-UNURMIQO.js → chunk-PV2QO7QL.js} +4 -4
  99. package/dist/{chunk-LGT3PZCJ.js → chunk-PYO4TJJ3.js} +17 -17
  100. package/dist/{chunk-EMLPOL77.js → chunk-Q7AH665U.js} +15 -8
  101. package/dist/{chunk-LBMS4AW6.js → chunk-QAALSCKI.js} +14 -14
  102. package/dist/{chunk-JRCOYRRH.js → chunk-QI3BOLQB.js} +8 -8
  103. package/dist/{chunk-CCNDLW7Z.js → chunk-QWIBT6DS.js} +13 -13
  104. package/dist/{chunk-GU46PPT3.js → chunk-QXGACPS2.js} +5 -5
  105. package/dist/{chunk-FMDSF3OV.js → chunk-QZAW5SFH.js} +2 -2
  106. package/dist/{chunk-QHXCAEMX.js → chunk-R5NH5BZG.js} +8 -8
  107. package/dist/{chunk-5223KXFD.js → chunk-RJ5LBZ5U.js} +7 -7
  108. package/dist/{chunk-PRI2OD4E.js → chunk-RW5PEJ7D.js} +11 -6
  109. package/dist/{chunk-DYWQFQJP.js → chunk-SG4PRYO3.js} +22 -20
  110. package/dist/{chunk-NNS4E7CW.js → chunk-SGPFVDUL.js} +15 -6
  111. package/dist/{chunk-ZEF5M5MB.js → chunk-SQCBSFT5.js} +72 -74
  112. package/dist/{chunk-3HGU63UY.js → chunk-U7NKYLX2.js} +14 -13
  113. package/dist/chunk-U7VO6JAA.js +566 -0
  114. package/dist/{chunk-ZJV7GYR4.js → chunk-UFQJMOVZ.js} +10 -10
  115. package/dist/{chunk-Z72XRXD4.js → chunk-UJRTPOHH.js} +3 -3
  116. package/dist/{chunk-J6QROYDA.js → chunk-UK6DKJLD.js} +26 -10
  117. package/dist/{chunk-QZX5S6R3.js → chunk-UKP5HWB5.js} +149 -89
  118. package/dist/{chunk-T4A4TSTJ.js → chunk-UQRIKAMH.js} +21 -19
  119. package/dist/{chunk-TYS6CSS5.js → chunk-UU6LUYUH.js} +2 -2
  120. package/dist/{chunk-5BHJZH62.js → chunk-UVDCHR4E.js} +18 -6
  121. package/dist/{chunk-HQQNCY7W.js → chunk-VAO6ANGC.js} +5 -5
  122. package/dist/{chunk-6NYWYNBI.js → chunk-VGNIDAPQ.js} +4 -4
  123. package/dist/{chunk-VL2O2F3W.js → chunk-VHO3YBTB.js} +2 -2
  124. package/dist/{chunk-FHGVORFO.js → chunk-VIRANCNY.js} +14 -14
  125. package/dist/{chunk-XD6ZYURY.js → chunk-VJHBSPGF.js} +7 -14
  126. package/dist/{chunk-5RP7JRVP.js → chunk-VKNCC2GX.js} +12 -8
  127. package/dist/{chunk-TPFKKXCB.js → chunk-VRRDUYOK.js} +7 -7
  128. package/dist/{chunk-K2I2XOZD.js → chunk-W2DINCHL.js} +11 -11
  129. package/dist/{chunk-AUIM2NVH.js → chunk-W5KMNC5U.js} +8 -8
  130. package/dist/{chunk-FFUN5D66.js → chunk-WF64MW5G.js} +2 -2
  131. package/dist/{chunk-6LBQ7ELG.js → chunk-X3RXGSCZ.js} +40 -21
  132. package/dist/{chunk-HBPDFCQY.js → chunk-XEAQDIMF.js} +7 -6
  133. package/dist/{chunk-TTIM6YTT.js → chunk-XG4NWFPY.js} +17 -16
  134. package/dist/{chunk-7KINELPI.js → chunk-XQ4KN6JQ.js} +23 -23
  135. package/dist/{chunk-WBRZJOEC.js → chunk-XY3UDKKH.js} +4 -4
  136. package/dist/{chunk-5SEVICBT.js → chunk-YG2BEIQU.js} +14 -13
  137. package/dist/{chunk-BRENJ2BQ.js → chunk-YJVA3QUU.js} +24 -4
  138. package/dist/{chunk-KGVZ5VGH.js → chunk-YR43LJT5.js} +16 -15
  139. package/dist/{chunk-TLVIHFRO.js → chunk-ZKPPI6BF.js} +2 -2
  140. package/dist/{chunk-ARGMQ3H4.js → chunk-ZXUAPTCK.js} +3 -3
  141. package/dist/cli.cjs +156 -154
  142. package/dist/clock.js +9 -1
  143. package/dist/countdown.js +4 -3
  144. package/dist/dgmo-router-B4S23EBH.js +86 -0
  145. package/dist/dimensions-K6PGYYGT.js +22 -0
  146. package/dist/editor.js +33 -5
  147. package/dist/element.js +142 -132
  148. package/dist/element.mjs +1117 -452
  149. package/dist/flowchart-parser-LALR6J6F.js +21 -0
  150. package/dist/{flowchart-renderer-MNCDS7MV.js → flowchart-renderer-DXYB5YRF.js} +14 -14
  151. package/dist/highlight.js +37 -6
  152. package/dist/index.d.ts +4 -2
  153. package/dist/index.js +78 -73
  154. package/dist/layout-3BVDMKXI.js +15 -0
  155. package/dist/layout-3M5UYJHY.js +14 -0
  156. package/dist/{layout-2L3WMRYU.js → layout-3V2A4MUE.js} +8 -8
  157. package/dist/layout-4IHCMWZN.js +19 -0
  158. package/dist/layout-5XGYNYVT.js +9 -0
  159. package/dist/layout-AZUPXWSK.js +15 -0
  160. package/dist/{layout-F4WO357A.js → layout-CAAKQX4W.js} +3 -3
  161. package/dist/{layout-A5UHRWVH.js → layout-CB3XWCOI.js} +3 -3
  162. package/dist/{layout-OAC4PEAC.js → layout-E6HR6PXH.js} +7 -7
  163. package/dist/{layout-7QXCNOVS.js → layout-HBWT2G23.js} +3 -3
  164. package/dist/layout-KPQWJNAG.js +14 -0
  165. package/dist/layout-OL2XFJXA.js +17 -0
  166. package/dist/layout-WCAIKGZG.js +19 -0
  167. package/dist/layout-WSMPBQ4Q.js +17 -0
  168. package/dist/layout-ZE5DRJWX.js +20 -0
  169. package/dist/{layout-search-55FU6HD3.js → layout-search-34DPZD43.js} +51 -35
  170. package/dist/legend-constants-P5EQWRQQ.js +49 -0
  171. package/dist/{palettes-UDLZ2SA4.js → palettes-FGTNFARW.js} +4 -4
  172. package/dist/{parser-EYCKNKQA.js → parser-275KP7JO.js} +8 -8
  173. package/dist/parser-27Z76SN3.js +22 -0
  174. package/dist/parser-3CODK6RG.js +15 -0
  175. package/dist/{parser-YKYMQG3B.js → parser-3KIGEEJM.js} +6 -6
  176. package/dist/parser-3VSWEKBF.js +15 -0
  177. package/dist/parser-4E4I3GNT.js +13 -0
  178. package/dist/parser-5FGJSQNS.js +12 -0
  179. package/dist/parser-5HQXCNOS.js +12 -0
  180. package/dist/parser-5QPFOB5F.js +12 -0
  181. package/dist/parser-6B6SSZT7.js +11 -0
  182. package/dist/parser-6PPHAXXH.js +14 -0
  183. package/dist/parser-7JHWEWXM.js +13 -0
  184. package/dist/{parser-DQAFLUJB.js → parser-7JVIDLLR.js} +7 -7
  185. package/dist/parser-CKA3QMAG.js +18 -0
  186. package/dist/parser-CRKLXGW7.js +13 -0
  187. package/dist/parser-EXNBDNGY.js +11 -0
  188. package/dist/parser-FF4BMRSB.js +16 -0
  189. package/dist/parser-FOOFEJQU.js +13 -0
  190. package/dist/parser-G26MTBFS.js +11 -0
  191. package/dist/parser-GKP2MHHL.js +11 -0
  192. package/dist/parser-GN2MM5CC.js +11 -0
  193. package/dist/parser-IKWK2ZU3.js +18 -0
  194. package/dist/parser-IVGHXLZP.js +14 -0
  195. package/dist/parser-NNIL3HXU.js +11 -0
  196. package/dist/parser-RNLTBIJ6.js +19 -0
  197. package/dist/parser-UWRX52PC.js +16 -0
  198. package/dist/parser-VOERD6XR.js +14 -0
  199. package/dist/parser-XNKJCMMA.js +13 -0
  200. package/dist/parser-XVPTRWZ4.js +15 -0
  201. package/dist/parser-YSLNDFLV.js +22 -0
  202. package/dist/{parser-ZL5QUFVH.js → parser-ZGNXYFPS.js} +5 -5
  203. package/dist/parser-ZQDQTB4X.js +20 -0
  204. package/dist/pert.d.ts +2 -0
  205. package/dist/registry-CaSw0PSH.d.ts +350 -0
  206. package/dist/renderer-2C6DJRYN.js +24 -0
  207. package/dist/renderer-5MPN7CXZ.js +19 -0
  208. package/dist/renderer-6EN5XXJZ.js +27 -0
  209. package/dist/renderer-6WRYVM5R.js +24 -0
  210. package/dist/renderer-7NQSTQMQ.js +16 -0
  211. package/dist/renderer-7ZNVOVFG.js +16 -0
  212. package/dist/{renderer-DT4XRFEP.js → renderer-AK2WO4EI.js} +7 -7
  213. package/dist/renderer-COLQFSFV.js +26 -0
  214. package/dist/{renderer-3F7OS2AX.js → renderer-CWEFGEIC.js} +15 -15
  215. package/dist/renderer-D3BRNOMV.js +29 -0
  216. package/dist/renderer-HIFQVEJA.js +22 -0
  217. package/dist/renderer-JCZG6AYU.js +28 -0
  218. package/dist/{renderer-ZWIH4WDW.js → renderer-JTCX6PCG.js} +13 -13
  219. package/dist/renderer-JWGQSTMR.js +37 -0
  220. package/dist/{renderer-NHO46CT2.js → renderer-K7XLVPH5.js} +6 -6
  221. package/dist/renderer-KARQF3F3.js +22 -0
  222. package/dist/renderer-LVZAHRP6.js +34 -0
  223. package/dist/{renderer-CQY6ATOS.js → renderer-NE5W7CQP.js} +8 -8
  224. package/dist/renderer-QD2SJF2I.js +34 -0
  225. package/dist/renderer-RLMOTXZ6.js +37 -0
  226. package/dist/renderer-SQ54MDSA.js +26 -0
  227. package/dist/{renderer-HSHHVYWF.js → renderer-TYHGXAVT.js} +7 -7
  228. package/dist/renderer-UKXW2QPE.js +23 -0
  229. package/dist/renderer-UPF7NRTI.js +28 -0
  230. package/dist/renderer-VMH6L6CP.js +24 -0
  231. package/dist/{renderer-5DAKMIU2.js → renderer-WCWI4I6A.js} +5 -5
  232. package/dist/renderer-WFSUBKUL.js +25 -0
  233. package/dist/renderer-WNFXYYGL.js +21 -0
  234. package/dist/{renderer-KNFTTOBL.js → renderer-XTXSOK3L.js} +14 -14
  235. package/dist/renderer-YUKPS27O.js +24 -0
  236. package/dist/renderer-YUXGXGSW.js +27 -0
  237. package/dist/renderer-ZBTEX2JK.js +16 -0
  238. package/dist/renderer-radial-WF6VOUOD.js +21 -0
  239. package/dist/{resolver-EMTGNR3D.js → resolver-WFKZYBJ2.js} +4 -4
  240. package/dist/state-parser-L7DHZIQO.js +19 -0
  241. package/dist/state-renderer-TFEUOP4H.js +38 -0
  242. package/dist/{themes-32xj5ZTW.d.ts → themes-tbBkIVsn.d.ts} +2 -349
  243. package/docs/ai-integration.md +59 -58
  244. package/docs/language-reference.md +323 -286
  245. package/fonts/Inter-Bold.woff2 +0 -0
  246. package/fonts/Inter-Regular.woff2 +0 -0
  247. package/gallery/fixtures/boxes-and-lines-diverging.dgmo +1 -2
  248. package/gallery/fixtures/boxes-and-lines.dgmo +1 -1
  249. package/gallery/fixtures/clock.dgmo +1 -1
  250. package/gallery/fixtures/event-line.dgmo +1 -1
  251. package/gallery/fixtures/gantt-full.dgmo +1 -1
  252. package/gallery/fixtures/gantt-sprints.dgmo +9 -9
  253. package/gallery/fixtures/gantt.dgmo +1 -1
  254. package/gallery/fixtures/legacy-syntax-backcompat.dgmo +16 -0
  255. package/gallery/fixtures/state-tags.dgmo +40 -0
  256. package/gallery/fixtures/swimlane.dgmo +1 -1
  257. package/gallery/fixtures/timeline-intraday.dgmo +1 -1
  258. package/package.json +5 -1
  259. package/dist/analyzer-BJ54GIFB.js +0 -15
  260. package/dist/calculator-LDYQCDDY.js +0 -11
  261. package/dist/charts-d3-MXEP6BNP.js +0 -26
  262. package/dist/dgmo-router-X7ZGAPIE.js +0 -86
  263. package/dist/dimensions-45H6JQEY.js +0 -22
  264. package/dist/flowchart-parser-UKELHBSB.js +0 -21
  265. package/dist/layout-46N4JJYK.js +0 -17
  266. package/dist/layout-A4XWNVID.js +0 -14
  267. package/dist/layout-AM2JWW3X.js +0 -15
  268. package/dist/layout-EE6GE46Y.js +0 -17
  269. package/dist/layout-G23F7LDH.js +0 -9
  270. package/dist/layout-GM4UGR7B.js +0 -19
  271. package/dist/layout-GQQJXNYH.js +0 -15
  272. package/dist/layout-IIE2S5FK.js +0 -20
  273. package/dist/layout-VMCRX66I.js +0 -14
  274. package/dist/layout-ZDOSXL5G.js +0 -19
  275. package/dist/parser-2ECN6JA2.js +0 -16
  276. package/dist/parser-4WTIHM5J.js +0 -11
  277. package/dist/parser-5H2BTSJQ.js +0 -11
  278. package/dist/parser-75KVXUNS.js +0 -16
  279. package/dist/parser-774AC53T.js +0 -13
  280. package/dist/parser-BE4YCSRU.js +0 -11
  281. package/dist/parser-CNGUQUQI.js +0 -11
  282. package/dist/parser-DEUUSQIN.js +0 -22
  283. package/dist/parser-FXISIU6A.js +0 -14
  284. package/dist/parser-GTB4XC7P.js +0 -18
  285. package/dist/parser-GVEPAUSD.js +0 -12
  286. package/dist/parser-HSQGTY4G.js +0 -19
  287. package/dist/parser-HVKRINUS.js +0 -11
  288. package/dist/parser-J5MIEYO4.js +0 -15
  289. package/dist/parser-KMZIXLDZ.js +0 -13
  290. package/dist/parser-LJHXWSXU.js +0 -14
  291. package/dist/parser-PT3W72G5.js +0 -15
  292. package/dist/parser-SBJQDPHL.js +0 -15
  293. package/dist/parser-SUWWWCMX.js +0 -12
  294. package/dist/parser-SXDRNZOA.js +0 -13
  295. package/dist/parser-UMILOW3M.js +0 -14
  296. package/dist/parser-UP3AZ367.js +0 -13
  297. package/dist/parser-WHPRV3X5.js +0 -20
  298. package/dist/parser-WX3UODSJ.js +0 -12
  299. package/dist/parser-XCIEN3KN.js +0 -13
  300. package/dist/parser-XIRTUMVN.js +0 -18
  301. package/dist/parser-YKCGIG45.js +0 -11
  302. package/dist/parser-ZGM2OJ6Y.js +0 -22
  303. package/dist/renderer-4QB4K7Q3.js +0 -24
  304. package/dist/renderer-5H4SY7YY.js +0 -22
  305. package/dist/renderer-5PIQPFOX.js +0 -16
  306. package/dist/renderer-6MU37QF5.js +0 -19
  307. package/dist/renderer-AQVMWJ4M.js +0 -27
  308. package/dist/renderer-BDDW6K7N.js +0 -24
  309. package/dist/renderer-BNB3VIDY.js +0 -26
  310. package/dist/renderer-CVW75CXL.js +0 -37
  311. package/dist/renderer-ERHBSTQT.js +0 -25
  312. package/dist/renderer-IDPVUFNB.js +0 -28
  313. package/dist/renderer-ILX6BGKR.js +0 -21
  314. package/dist/renderer-JP663HKG.js +0 -22
  315. package/dist/renderer-MVUZBESR.js +0 -16
  316. package/dist/renderer-N4EBR2FV.js +0 -28
  317. package/dist/renderer-NO2QJ5LZ.js +0 -27
  318. package/dist/renderer-OGFV5RXX.js +0 -34
  319. package/dist/renderer-PDLESJMS.js +0 -37
  320. package/dist/renderer-T4MTNINC.js +0 -24
  321. package/dist/renderer-TOUGFGTM.js +0 -24
  322. package/dist/renderer-U3KPD43Y.js +0 -34
  323. package/dist/renderer-X334IJU2.js +0 -26
  324. package/dist/renderer-Y5OAMOCR.js +0 -23
  325. package/dist/renderer-YONAKAJU.js +0 -16
  326. package/dist/renderer-YWMI6Y2U.js +0 -29
  327. package/dist/renderer-radial-7CGZMVMS.js +0 -21
  328. package/dist/state-parser-BATWAID2.js +0 -18
  329. package/dist/state-renderer-3FKZJ3LP.js +0 -34
@@ -1,12 +1,21 @@
1
+ import {
2
+ AUTO_TAG_COLOR_SENTINEL,
3
+ finalizeAutoTagColors,
4
+ matchTagBlockHeading,
5
+ stripDefaultModifier,
6
+ tagAttrKey,
7
+ validateTagGroupNames,
8
+ validateTagValues
9
+ } from "./chunk-CMVZWP32.js";
1
10
  import {
2
11
  tryCollectNote
3
- } from "./chunk-ARGMQ3H4.js";
12
+ } from "./chunk-ZXUAPTCK.js";
4
13
  import {
5
14
  resolveNotes
6
- } from "./chunk-FMDSF3OV.js";
15
+ } from "./chunk-QZAW5SFH.js";
7
16
  import {
8
17
  parseInArrowLabel
9
- } from "./chunk-FFUN5D66.js";
18
+ } from "./chunk-WF64MW5G.js";
10
19
  import {
11
20
  displayName,
12
21
  normalizeName
@@ -15,25 +24,30 @@ import {
15
24
  ALL_CHART_TYPES,
16
25
  FILL_FAMILY_TOKENS,
17
26
  OPTION_NOCOLON_RE,
27
+ STATE_REGISTRY,
28
+ cutUnionMetadata,
29
+ extractColor,
18
30
  measureIndent,
19
31
  parseFirstLine,
20
- tryParseSharedOption
21
- } from "./chunk-BRENJ2BQ.js";
32
+ parseMetadataRegion,
33
+ tryParseSharedOption,
34
+ withTagAliases
35
+ } from "./chunk-YJVA3QUU.js";
22
36
  import {
23
37
  resolveColorWithDiagnostic
24
- } from "./chunk-TLVIHFRO.js";
38
+ } from "./chunk-ZKPPI6BF.js";
25
39
  import {
26
40
  NAME_DIAGNOSTIC_CODES,
27
41
  formatDgmoError,
28
42
  makeDgmoError,
29
43
  nameMergedMessage,
30
44
  suggest
31
- } from "./chunk-CXK4DZH3.js";
45
+ } from "./chunk-4W2PE66Q.js";
32
46
 
33
47
  // src/graph/state-parser.ts
34
48
  var PSEUDOSTATE_ID = "pseudostate:[*]";
35
49
  var PSEUDOSTATE_LABEL = "[*]";
36
- var GROUP_BRACKET_RE = /^\[([^\]]+)\](?:\s+(red|orange|yellow|green|blue|purple|teal|cyan|gray|black|white))?(?:,?\s+collapsed:\s*(\S+))?\s*$/;
50
+ var GROUP_BRACKET_RE = /^\[([^\]]+)\](?:\s+(red|orange|yellow|green|blue|purple|teal|cyan|gray|black|white))?(?:,?\s+(collapsed)(?::\s*(\S+))?)?\s*$/;
37
51
  function splitArrows(line) {
38
52
  const segments = [];
39
53
  const arrowPositions = [];
@@ -126,6 +140,7 @@ function parseState(content, palette) {
126
140
  direction: "LR",
127
141
  nodes: [],
128
142
  edges: [],
143
+ tagGroups: [],
129
144
  options,
130
145
  diagnostics: [],
131
146
  error: null
@@ -144,6 +159,22 @@ function parseState(content, palette) {
144
159
  const groups = [];
145
160
  let contentStarted = false;
146
161
  let firstLineParsed = false;
162
+ const tagGroups = result.tagGroups;
163
+ let currentTagGroup = null;
164
+ const metaAliasMap = /* @__PURE__ */ new Map();
165
+ let registry = STATE_REGISTRY;
166
+ const refreshRegistry = () => {
167
+ registry = withTagAliases(STATE_REGISTRY, new Set(metaAliasMap.keys()));
168
+ };
169
+ function peelStateMeta(text) {
170
+ if (metaAliasMap.size === 0) return { text, meta: {} };
171
+ const cut = cutUnionMetadata(text, registry);
172
+ if (cut === -1) return { text, meta: {} };
173
+ return {
174
+ text: text.substring(0, cut).trimEnd(),
175
+ meta: parseMetadataRegion(text.substring(cut), metaAliasMap)
176
+ };
177
+ }
147
178
  const nameAliasMap = /* @__PURE__ */ new Map();
148
179
  function peelAlias(seg) {
149
180
  const trimmed = seg.trim();
@@ -151,10 +182,13 @@ function parseState(content, palette) {
151
182
  if (!m) return { seg: trimmed };
152
183
  return { seg: m[1].trim(), alias: m[2] };
153
184
  }
154
- function getOrCreateNode(ref, lineNumber) {
185
+ function getOrCreateNode(ref, lineNumber, meta) {
155
186
  const key = ref.id;
156
187
  const existing = nodeMap.get(key);
157
188
  if (existing) {
189
+ if (meta && Object.keys(meta).length > 0) {
190
+ existing.metadata = { ...existing.metadata ?? {}, ...meta };
191
+ }
158
192
  const incomingDisplay = displayName(ref.label);
159
193
  const existingDisplay = displayName(existing.label);
160
194
  if (incomingDisplay !== existingDisplay) {
@@ -180,7 +214,8 @@ function parseState(content, palette) {
180
214
  shape: ref.shape,
181
215
  lineNumber,
182
216
  ...ref.color && { color: ref.color },
183
- ...currentGroup && { group: currentGroup.id }
217
+ ...currentGroup && { group: currentGroup.id },
218
+ ...meta && Object.keys(meta).length > 0 && { metadata: { ...meta } }
184
219
  };
185
220
  nodeMap.set(key, node);
186
221
  result.nodes.push(node);
@@ -202,7 +237,10 @@ function parseState(content, palette) {
202
237
  const trimmed = raw.trim();
203
238
  const lineNumber = i + 1;
204
239
  const indent = measureIndent(raw);
205
- if (!trimmed) continue;
240
+ if (!trimmed) {
241
+ currentTagGroup = null;
242
+ continue;
243
+ }
206
244
  if (trimmed.startsWith("//")) continue;
207
245
  if (!firstLineParsed && !contentStarted) {
208
246
  const firstLineResult = parseFirstLine(trimmed);
@@ -222,6 +260,53 @@ function parseState(content, palette) {
222
260
  continue;
223
261
  }
224
262
  }
263
+ if (!contentStarted) {
264
+ const tagBlockMatch = matchTagBlockHeading(trimmed);
265
+ if (tagBlockMatch) {
266
+ currentTagGroup = {
267
+ name: tagBlockMatch.name,
268
+ ...tagBlockMatch.alias !== void 0 && {
269
+ alias: tagBlockMatch.alias
270
+ },
271
+ entries: [],
272
+ lineNumber
273
+ };
274
+ if (tagBlockMatch.alias) {
275
+ metaAliasMap.set(
276
+ normalizeName(tagBlockMatch.alias),
277
+ tagAttrKey(tagBlockMatch.name)
278
+ );
279
+ }
280
+ metaAliasMap.set(
281
+ normalizeName(tagBlockMatch.name),
282
+ tagAttrKey(tagBlockMatch.name)
283
+ );
284
+ refreshRegistry();
285
+ tagGroups.push(currentTagGroup);
286
+ continue;
287
+ }
288
+ if (currentTagGroup && indent > 0) {
289
+ const { text: cleanEntry, isDefault } = stripDefaultModifier(trimmed);
290
+ const { label, color } = extractColor(
291
+ cleanEntry,
292
+ palette,
293
+ result.diagnostics,
294
+ lineNumber
295
+ );
296
+ if (isDefault || currentTagGroup.entries.length === 0) {
297
+ currentTagGroup.defaultValue = label;
298
+ }
299
+ currentTagGroup.entries.push({
300
+ value: label,
301
+ // Bare value → sentinel; finalizeAutoTagColors assigns a
302
+ // deterministic palette color after the parse.
303
+ color: color ?? AUTO_TAG_COLOR_SENTINEL,
304
+ lineNumber
305
+ });
306
+ continue;
307
+ }
308
+ currentTagGroup = null;
309
+ }
225
310
  const noteResult = tryCollectNote(
226
311
  lines,
227
312
  i,
@@ -244,7 +329,7 @@ function parseState(content, palette) {
244
329
  result.diagnostics,
245
330
  palette
246
331
  ) : void 0;
247
- const groupCollapsed = groupMatch[3]?.toLowerCase() === "true";
332
+ const groupCollapsed = groupMatch[3] !== void 0 && (groupMatch[4] === void 0 || groupMatch[4].toLowerCase() === "true");
248
333
  currentGroup = {
249
334
  id: `group:${groupLabel.toLowerCase()}`,
250
335
  label: groupLabel,
@@ -258,8 +343,9 @@ function parseState(content, palette) {
258
343
  continue;
259
344
  }
260
345
  if (!contentStarted) {
261
- if (/^direction-tb$/i.test(trimmed)) {
262
- result.direction = "TB";
346
+ const dirBool = trimmed.match(/^direction-(lr|tb)$/i);
347
+ if (dirBool) {
348
+ result.direction = dirBool[1].toUpperCase();
263
349
  continue;
264
350
  }
265
351
  if (FILL_FAMILY_TOKENS.has(trimmed.toLowerCase())) {
@@ -278,7 +364,8 @@ function parseState(content, palette) {
278
364
  continue;
279
365
  }
280
366
  const optMatch = trimmed.match(OPTION_NOCOLON_RE);
281
- if (optMatch && !trimmed.includes("->")) {
367
+ const carriesTagMeta = metaAliasMap.size > 0 && cutUnionMetadata(trimmed, registry) !== -1;
368
+ if (optMatch && !trimmed.includes("->") && !carriesTagMeta) {
282
369
  const key = optMatch[1].toLowerCase();
283
370
  const value = optMatch[2].trim();
284
371
  if (key === "no-color") {
@@ -314,10 +401,11 @@ function parseState(content, palette) {
314
401
  ) : null;
315
402
  const segments = splitArrows(trimmed);
316
403
  if (segments.length === 1) {
317
- const peeled = peelAlias(segments[0]);
404
+ const withMeta = peelStateMeta(segments[0]);
405
+ const peeled = peelAlias(withMeta.text);
318
406
  const ref = parseStateNodeRef(peeled.seg);
319
407
  if (ref) {
320
- const node = getOrCreateNode(ref, lineNumber);
408
+ const node = getOrCreateNode(ref, lineNumber, withMeta.meta);
321
409
  if (peeled.alias) nameAliasMap.set(peeled.alias, node.id);
322
410
  node.lineNumber = lineNumber;
323
411
  indentStack.push({ nodeId: node.id, indent });
@@ -374,6 +462,46 @@ function parseState(content, palette) {
374
462
  indentStack.push({ nodeId: lastNodeId, indent });
375
463
  }
376
464
  }
465
+ if (tagGroups.length > 0) {
466
+ finalizeAutoTagColors(tagGroups, palette);
467
+ const defaults = [];
468
+ for (const group of tagGroups) {
469
+ if (group.defaultValue) {
470
+ defaults.push({
471
+ key: tagAttrKey(group.name),
472
+ value: group.defaultValue
473
+ });
474
+ }
475
+ }
476
+ const taggable = result.nodes.filter(
477
+ (n) => n.shape !== "pseudostate"
478
+ );
479
+ for (const node of taggable) {
480
+ const meta = { ...node.metadata ?? {} };
481
+ for (const { key, value } of defaults) {
482
+ if (!(key in meta)) meta[key] = value;
483
+ }
484
+ node.metadata = meta;
485
+ }
486
+ validateTagValues(
487
+ taggable.map((n) => ({
488
+ metadata: n.metadata ?? {},
489
+ lineNumber: n.lineNumber
490
+ })),
491
+ tagGroups,
492
+ (line, message) => result.diagnostics.push(makeDgmoError(line, message, "warning")),
493
+ suggest
494
+ );
495
+ validateTagGroupNames(
496
+ tagGroups,
497
+ (line, message) => result.diagnostics.push(makeDgmoError(line, message, "warning")),
498
+ (line, message) => {
499
+ const diag = makeDgmoError(line, message);
500
+ result.diagnostics.push(diag);
501
+ if (!result.error) result.error = formatDgmoError(diag);
502
+ }
503
+ );
504
+ }
377
505
  if (groups.length > 0) result.groups = groups;
378
506
  if (notes.length > 0) {
379
507
  result.notes = notes;
@@ -415,4 +543,4 @@ export {
415
543
  parseState,
416
544
  looksLikeState
417
545
  };
418
- //# sourceMappingURL=chunk-ROOE4R4Y.js.map
546
+ //# sourceMappingURL=chunk-AN2DQB3G.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-PDKUANDZ.js";
5
5
  import {
6
6
  layoutGraph
7
- } from "./chunk-HFMYN6N2.js";
7
+ } from "./chunk-3B2GXZCX.js";
8
8
  import {
9
9
  appendArrowheadMarkers
10
10
  } from "./chunk-LP7EC4MI.js";
@@ -14,7 +14,7 @@ import {
14
14
  renderNoteBadge,
15
15
  renderNoteBox,
16
16
  renderNoteConnector
17
- } from "./chunk-J7TLCB2Q.js";
17
+ } from "./chunk-3IUHKMJI.js";
18
18
  import {
19
19
  EDGE_STROKE_WIDTH,
20
20
  NODE_STROKE_WIDTH
@@ -30,19 +30,19 @@ import {
30
30
  import {
31
31
  FONT_FAMILY
32
32
  } from "./chunk-6KFWC4CO.js";
33
- import {
34
- measureText
35
- } from "./chunk-WCT3NYCV.js";
36
33
  import {
37
34
  contrastText,
38
35
  shapeFill
39
- } from "./chunk-WBM7ZNDI.js";
36
+ } from "./chunk-JYDMBWRP.js";
37
+ import {
38
+ measureText
39
+ } from "./chunk-4ASYQ347.js";
40
40
  import {
41
41
  parseFlowchart
42
- } from "./chunk-6EJITS44.js";
42
+ } from "./chunk-JTMSWEIW.js";
43
43
  import {
44
44
  fillModeFromOptions
45
- } from "./chunk-BRENJ2BQ.js";
45
+ } from "./chunk-YJVA3QUU.js";
46
46
 
47
47
  // src/graph/flowchart-renderer.ts
48
48
  import * as d3Selection from "d3-selection";
@@ -55,6 +55,14 @@ var ARROWHEAD_H = 7;
55
55
  var IO_SKEW = 15;
56
56
  var SUBROUTINE_INSET = 8;
57
57
  var DOC_WAVE_HEIGHT = 10;
58
+ function clipPointToDiamond(cx, cy, halfW, halfH, towardX, towardY) {
59
+ const dx = towardX - cx;
60
+ const dy = towardY - cy;
61
+ const denom = Math.abs(dx) / halfW + Math.abs(dy) / halfH;
62
+ if (denom === 0) return { x: cx, y: cy };
63
+ const s = 1 / denom;
64
+ return { x: cx + dx * s, y: cy + dy * s };
65
+ }
58
66
  function shapeDefaultColor(shape, palette, isEndTerminal, colorOff) {
59
67
  if (colorOff) return palette.textMuted;
60
68
  switch (shape) {
@@ -392,13 +400,51 @@ function renderFlowchart(container, graph, layout, palette, isDark, onClickItem,
392
400
  }
393
401
  const labelPosMap = /* @__PURE__ */ new Map();
394
402
  for (const lp of labelPositions) labelPosMap.set(lp.edgeIdx, lp);
403
+ const nodeGeom = /* @__PURE__ */ new Map();
404
+ for (const n of layout.nodes) {
405
+ nodeGeom.set(n.id, {
406
+ x: n.x,
407
+ y: n.y,
408
+ halfW: n.width / 2,
409
+ halfH: n.height / 2,
410
+ shape: n.shape
411
+ });
412
+ }
395
413
  for (let ei = 0; ei < layout.edges.length; ei++) {
396
414
  const edge = layout.edges[ei];
397
415
  if (edge.points.length < 2) continue;
398
416
  const edgeG = contentG.append("g").attr("class", "fc-edge-group").attr("data-line-number", String(edge.lineNumber)).attr("data-source", edge.source).attr("data-target", edge.target);
399
417
  const edgeColor = palette.textMuted;
400
418
  const markerId = "fc-arrow";
401
- const pathD = edgeSplinePath(edge.points);
419
+ let drawPoints = edge.points;
420
+ const src = nodeGeom.get(edge.source);
421
+ const tgt = nodeGeom.get(edge.target);
422
+ if (src?.shape === "decision" || tgt?.shape === "decision") {
423
+ const pts = edge.points.map((p) => ({ x: p.x, y: p.y }));
424
+ const last = pts.length - 1;
425
+ if (tgt?.shape === "decision") {
426
+ pts[last] = clipPointToDiamond(
427
+ tgt.x,
428
+ tgt.y,
429
+ tgt.halfW,
430
+ tgt.halfH,
431
+ pts[last - 1].x,
432
+ pts[last - 1].y
433
+ );
434
+ }
435
+ if (src?.shape === "decision") {
436
+ pts[0] = clipPointToDiamond(
437
+ src.x,
438
+ src.y,
439
+ src.halfW,
440
+ src.halfH,
441
+ pts[1].x,
442
+ pts[1].y
443
+ );
444
+ }
445
+ drawPoints = pts;
446
+ }
447
+ const pathD = edgeSplinePath(drawPoints);
402
448
  if (pathD) {
403
449
  edgeG.append("path").attr("d", pathD).attr("fill", "none").attr("stroke", edgeColor).attr("stroke-width", sEdgeStrokeWidth).attr("marker-end", `url(#${markerId})`).attr("class", "fc-edge");
404
450
  }
@@ -536,4 +582,4 @@ export {
536
582
  renderFlowchart,
537
583
  renderFlowchartForExport
538
584
  };
539
- //# sourceMappingURL=chunk-GCYTI3DE.js.map
585
+ //# sourceMappingURL=chunk-AZNXGWDC.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  mix
3
- } from "./chunk-WBM7ZNDI.js";
3
+ } from "./chunk-JYDMBWRP.js";
4
4
  import {
5
5
  resolveColor
6
- } from "./chunk-TLVIHFRO.js";
6
+ } from "./chunk-ZKPPI6BF.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-3LK5DNED.js.map
35
+ //# sourceMappingURL=chunk-B4XS2AF2.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  compactNumber
3
- } from "./chunk-5BHJZH62.js";
3
+ } from "./chunk-UVDCHR4E.js";
4
4
  import {
5
5
  parseInlineMarkdown
6
6
  } from "./chunk-3HDBAXF5.js";
@@ -15,10 +15,10 @@ import {
15
15
  mix,
16
16
  shapeFill,
17
17
  themeBaseBg
18
- } from "./chunk-WBM7ZNDI.js";
18
+ } from "./chunk-JYDMBWRP.js";
19
19
  import {
20
20
  resolveColor
21
- } from "./chunk-TLVIHFRO.js";
21
+ } from "./chunk-ZKPPI6BF.js";
22
22
 
23
23
  // src/goal/renderer.ts
24
24
  import * as d3Selection from "d3-selection";
@@ -361,4 +361,4 @@ export {
361
361
  renderGoal,
362
362
  renderGoalForExport
363
363
  };
364
- //# sourceMappingURL=chunk-3HF5YEFJ.js.map
364
+ //# sourceMappingURL=chunk-BD3WGY4T.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  buildMapProjection
3
- } from "./chunk-ZJV7GYR4.js";
3
+ } from "./chunk-UFQJMOVZ.js";
4
4
  import {
5
5
  TITLE_FONT_SIZE,
6
6
  TITLE_Y
@@ -51,4 +51,4 @@ export {
51
51
  mapContentAspect,
52
52
  mapExportDimensions
53
53
  };
54
- //# sourceMappingURL=chunk-4AQRFDXL.js.map
54
+ //# sourceMappingURL=chunk-BFDVEO5R.js.map
@@ -6,16 +6,16 @@ import {
6
6
  tagAttrKey,
7
7
  validateTagGroupNames,
8
8
  validateTagValues
9
- } from "./chunk-HHKO6SKY.js";
9
+ } from "./chunk-CMVZWP32.js";
10
10
  import {
11
11
  tryCollectNote
12
- } from "./chunk-ARGMQ3H4.js";
12
+ } from "./chunk-ZXUAPTCK.js";
13
13
  import {
14
14
  resolveNotes
15
- } from "./chunk-FMDSF3OV.js";
15
+ } from "./chunk-QZAW5SFH.js";
16
16
  import {
17
17
  validateLabelCharacters
18
- } from "./chunk-FFUN5D66.js";
18
+ } from "./chunk-WF64MW5G.js";
19
19
  import {
20
20
  displayName,
21
21
  normalizeName
@@ -32,17 +32,17 @@ import {
32
32
  tryParseSharedOption,
33
33
  warnUnknownMetaKeys,
34
34
  withTagAliases
35
- } from "./chunk-BRENJ2BQ.js";
35
+ } from "./chunk-YJVA3QUU.js";
36
36
  import {
37
37
  resolveColorWithDiagnostic
38
- } from "./chunk-TLVIHFRO.js";
38
+ } from "./chunk-ZKPPI6BF.js";
39
39
  import {
40
40
  NAME_DIAGNOSTIC_CODES,
41
41
  formatDgmoError,
42
42
  makeDgmoError,
43
43
  nameMergedMessage,
44
44
  suggest
45
- } from "./chunk-CXK4DZH3.js";
45
+ } from "./chunk-4W2PE66Q.js";
46
46
 
47
47
  // src/er/parser.ts
48
48
  function tableId(name) {
@@ -521,4 +521,4 @@ export {
521
521
  looksLikeERDiagram,
522
522
  extractSymbols
523
523
  };
524
- //# sourceMappingURL=chunk-REJAIQ5S.js.map
524
+ //# sourceMappingURL=chunk-BR7AYN76.js.map
@@ -6,7 +6,7 @@ import {
6
6
  fold,
7
7
  regionAt,
8
8
  unionExtent
9
- } from "./chunk-I5IGB56C.js";
9
+ } from "./chunk-4QV26TEG.js";
10
10
  import {
11
11
  MAP_DX
12
12
  } from "./chunk-4B5YISOR.js";
@@ -19,7 +19,7 @@ import {
19
19
  emit,
20
20
  formatDgmoError,
21
21
  suggest
22
- } from "./chunk-CXK4DZH3.js";
22
+ } from "./chunk-4W2PE66Q.js";
23
23
 
24
24
  // src/map/resolver.ts
25
25
  var WORLD_SPAN = 90;
@@ -775,4 +775,4 @@ export {
775
775
  isSubNationalUsExtent,
776
776
  resolveMap
777
777
  };
778
- //# sourceMappingURL=chunk-P3NRSSUU.js.map
778
+ //# sourceMappingURL=chunk-BULHGPHK.js.map
@@ -5,12 +5,12 @@ import {
5
5
  parseFirstLine,
6
6
  splitNameAndMeta,
7
7
  warnUnknownMetaKeys
8
- } from "./chunk-BRENJ2BQ.js";
8
+ } from "./chunk-YJVA3QUU.js";
9
9
  import {
10
10
  makeDgmoError,
11
11
  makeFail,
12
12
  suggest
13
- } from "./chunk-CXK4DZH3.js";
13
+ } from "./chunk-4W2PE66Q.js";
14
14
 
15
15
  // src/tech-radar/parser.ts
16
16
  var VALID_POSITIONS = [
@@ -28,11 +28,15 @@ var POSITION_ORDER = [
28
28
  ];
29
29
  var KNOWN_OPTIONS = /* @__PURE__ */ new Set([]);
30
30
  var KNOWN_BOOLEANS = /* @__PURE__ */ new Set([
31
+ // Blip listing is default-on (decision #48): `no-blip-legend` suppresses it;
32
+ // `show-blip-legend` is the parse-accepted legacy no-op.
33
+ "no-blip-legend",
31
34
  "show-blip-legend",
32
35
  "fill-tint",
33
36
  "fill-solid",
34
37
  "fill-outline",
35
- "no-title"
38
+ "no-title",
39
+ "no-legend"
36
40
  ]);
37
41
  function parseTechRadar(content) {
38
42
  const result = {
@@ -334,4 +338,4 @@ function assignGlobalNumbers(result) {
334
338
  export {
335
339
  parseTechRadar
336
340
  };
337
- //# sourceMappingURL=chunk-VILVLS7P.js.map
341
+ //# sourceMappingURL=chunk-CK2GMDXD.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  stripQuotes,
3
3
  tokenizeQuoteAware
4
- } from "./chunk-BRENJ2BQ.js";
4
+ } from "./chunk-YJVA3QUU.js";
5
5
  import {
6
6
  CATEGORICAL_COLOR_ORDER,
7
7
  RECOGNIZED_COLOR_NAMES,
8
8
  resolveColor
9
- } from "./chunk-TLVIHFRO.js";
9
+ } from "./chunk-ZKPPI6BF.js";
10
10
 
11
11
  // src/utils/tag-groups.ts
12
12
  function tagAttrKey(name) {
@@ -250,4 +250,4 @@ export {
250
250
  resolveActiveTagGroup,
251
251
  matchTagBlockHeading
252
252
  };
253
- //# sourceMappingURL=chunk-HHKO6SKY.js.map
253
+ //# sourceMappingURL=chunk-CMVZWP32.js.map
@@ -1,16 +1,16 @@
1
+ import {
2
+ FONT_FAMILY
3
+ } from "./chunk-6KFWC4CO.js";
1
4
  import {
2
5
  encodeDiagramUrl
3
- } from "./chunk-J7KJR3R6.js";
6
+ } from "./chunk-U7VO6JAA.js";
4
7
  import {
5
8
  parseDgmoChartType
6
- } from "./chunk-ZEF5M5MB.js";
7
- import {
8
- FONT_FAMILY
9
- } from "./chunk-6KFWC4CO.js";
9
+ } from "./chunk-SQCBSFT5.js";
10
10
  import {
11
11
  measureText,
12
12
  truncateText
13
- } from "./chunk-WCT3NYCV.js";
13
+ } from "./chunk-4ASYQ347.js";
14
14
 
15
15
  // src/error-card.ts
16
16
  var DOCS_BASE = "https://diagrammo.app/docs";
@@ -428,4 +428,4 @@ export {
428
428
  defaultEmbedBackground,
429
429
  getEmbedSvgViewBox
430
430
  };
431
- //# sourceMappingURL=chunk-GJFAMOGK.js.map
431
+ //# sourceMappingURL=chunk-CQFNIIQN.js.map
@@ -12,11 +12,11 @@ import {
12
12
  fillModeFromToken,
13
13
  measureIndent,
14
14
  parseFirstLine
15
- } from "./chunk-BRENJ2BQ.js";
15
+ } from "./chunk-YJVA3QUU.js";
16
16
  import {
17
17
  makeDgmoError,
18
18
  makeFail
19
- } from "./chunk-CXK4DZH3.js";
19
+ } from "./chunk-4W2PE66Q.js";
20
20
 
21
21
  // src/countdown/parser.ts
22
22
  var TIME_24H_RE = /^(\d{1,2}):(\d{2})$/;
@@ -52,19 +52,20 @@ function parse24h(tok) {
52
52
  return { hour, minute };
53
53
  }
54
54
  function parseAt(rest, lineNum, softError) {
55
- const t = parse24h(rest.trim());
55
+ const tok = rest.trim();
56
+ const t = parse24h(tok);
56
57
  if (t) return t;
57
- const fixed = ampmTo24h(rest.trim());
58
- softError(
59
- lineNum,
60
- fixed ? `"at ${rest}": use 24h time (${fixed}).` : `"at" needs a 24h time like 18:00 (got "${rest}").`
61
- );
58
+ const fixed = ampmTo24h(tok);
59
+ if (fixed) return parse24h(fixed);
60
+ softError(lineNum, `"at" needs a time like 18:00 or 6:30pm (got "${rest}").`);
62
61
  return null;
63
62
  }
64
63
  function ampmTo24h(tok) {
65
64
  const m = tok.match(AMPM_RE);
66
65
  if (!m) return null;
67
- let hour = Number(m[1]) % 12;
66
+ const h = Number(m[1]);
67
+ if (h < 1 || h > 12) return null;
68
+ let hour = h % 12;
68
69
  if (/pm/i.test(m[3])) hour += 12;
69
70
  return `${String(hour).padStart(2, "0")}:${m[2] ?? "00"}`;
70
71
  }
@@ -545,4 +546,4 @@ export {
545
546
  targetToMs2 as targetToMs,
546
547
  parseCountdown
547
548
  };
548
- //# sourceMappingURL=chunk-FT3ZYWET.js.map
549
+ //# sourceMappingURL=chunk-DWUMPMV2.js.map
@@ -128,9 +128,10 @@ function addGanttDuration(startDate, duration, holidays, holidaySet, direction =
128
128
  }
129
129
  }
130
130
  function parseDuration(s) {
131
- const match = s.trim().match(/^(\d+(?:\.\d+)?)(min|bd|d|w|m|q|y|h|s)$/);
131
+ const match = s.trim().match(/^(\d+(?:\.\d+)?)(min|bd|sp|d|w|m|q|y|h|s)$/);
132
132
  if (!match) return null;
133
- return { amount: parseFloat(match[1]), unit: match[2] };
133
+ const unit = match[2] === "sp" ? "s" : match[2];
134
+ return { amount: parseFloat(match[1]), unit };
134
135
  }
135
136
  function parseOffset(value) {
136
137
  const trimmed = value.trim();
@@ -194,4 +195,4 @@ export {
194
195
  parseOffsetPrefix,
195
196
  parseGanttDate
196
197
  };
197
- //# sourceMappingURL=chunk-USZW2HHU.js.map
198
+ //# sourceMappingURL=chunk-EQW6HOP4.js.map