@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
@@ -8,11 +8,11 @@ import {
8
8
  stripDefaultModifier,
9
9
  validateTagGroupNames,
10
10
  validateTagValues
11
- } from "./chunk-HHKO6SKY.js";
11
+ } from "./chunk-CMVZWP32.js";
12
12
  import {
13
13
  parseArrow,
14
14
  parseInArrowLabel
15
- } from "./chunk-FFUN5D66.js";
15
+ } from "./chunk-WF64MW5G.js";
16
16
  import {
17
17
  displayName,
18
18
  normalizeName
@@ -24,10 +24,11 @@ import {
24
24
  extractColor,
25
25
  measureIndent,
26
26
  parseFirstLine,
27
+ peelTrailingCollapsedFlag,
27
28
  splitNameAndMeta,
28
29
  warnUnknownMetaKeys,
29
30
  withTagAliases
30
- } from "./chunk-BRENJ2BQ.js";
31
+ } from "./chunk-YJVA3QUU.js";
31
32
  import {
32
33
  NAME_DIAGNOSTIC_CODES,
33
34
  formatDgmoError,
@@ -35,7 +36,7 @@ import {
35
36
  makeFail,
36
37
  nameMergedMessage,
37
38
  suggest
38
- } from "./chunk-CXK4DZH3.js";
39
+ } from "./chunk-4W2PE66Q.js";
39
40
 
40
41
  // src/sequence/parser.ts
41
42
  var KNOWN_SEQ_OPTIONS = /* @__PURE__ */ new Set(["active-tag"]);
@@ -43,7 +44,8 @@ var KNOWN_SEQ_BOOLEANS = /* @__PURE__ */ new Set([
43
44
  "fill-tint",
44
45
  "fill-solid",
45
46
  "fill-outline",
46
- "no-title"
47
+ "no-title",
48
+ "no-legend"
47
49
  ]);
48
50
  var NO_PREFIX_ONLY_BOOLEANS = /* @__PURE__ */ new Set(["activations"]);
49
51
  var VALID_PARTICIPANT_TYPES = /* @__PURE__ */ new Set([
@@ -358,8 +360,13 @@ function parseSequenceDgmo(content, palette) {
358
360
  const groupName = groupMatch[1].trim();
359
361
  const groupColor = groupMatch[2]?.trim();
360
362
  let groupMeta;
361
- const afterBracket = groupMatch[3]?.trim() || "";
363
+ let afterBracket = groupMatch[3]?.trim() || "";
362
364
  let isCollapsed = false;
365
+ const barePeel = peelTrailingCollapsedFlag(afterBracket);
366
+ if (barePeel.collapsed) {
367
+ isCollapsed = true;
368
+ afterBracket = barePeel.rest;
369
+ }
363
370
  if (afterBracket) {
364
371
  const groupRegistry = withTagAliases(
365
372
  SEQUENCE_REGISTRY,
@@ -1032,4 +1039,4 @@ export {
1032
1039
  parseSequenceDgmo,
1033
1040
  looksLikeSequence
1034
1041
  };
1035
- //# sourceMappingURL=chunk-QJMKPUYK.js.map
1042
+ //# sourceMappingURL=chunk-22OQWBWD.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  MAP_DIRECTIVE_KEY_SET
3
- } from "./chunk-FQ7HTV52.js";
3
+ } from "./chunk-6DCOIN4W.js";
4
4
  import {
5
5
  AUTO_TAG_COLOR_SENTINEL,
6
6
  finalizeAutoTagColors,
@@ -8,10 +8,10 @@ import {
8
8
  stripDefaultModifier,
9
9
  tagAttrKey,
10
10
  validateTagGroupNames
11
- } from "./chunk-HHKO6SKY.js";
11
+ } from "./chunk-CMVZWP32.js";
12
12
  import {
13
13
  parseInArrowLabel
14
- } from "./chunk-FFUN5D66.js";
14
+ } from "./chunk-WF64MW5G.js";
15
15
  import {
16
16
  MAP_REGISTRY,
17
17
  extractColor,
@@ -19,11 +19,11 @@ import {
19
19
  peelRampColors,
20
20
  splitNameAndMeta,
21
21
  withTagAliases
22
- } from "./chunk-BRENJ2BQ.js";
22
+ } from "./chunk-YJVA3QUU.js";
23
23
  import {
24
24
  formatDgmoError,
25
25
  makeDgmoError
26
- } from "./chunk-CXK4DZH3.js";
26
+ } from "./chunk-4W2PE66Q.js";
27
27
 
28
28
  // src/map/parser.ts
29
29
  var COORD_RE = /^[+-]?\d+(?:\.\d+)?\s+[+-]?\d+(?:\.\d+)?$/;
@@ -300,12 +300,14 @@ function parseMap(content, palette) {
300
300
  d.noClusterPois = true;
301
301
  break;
302
302
  // ── Clock channel (BL-122). Activation is the per-POI `clock` flag (see
303
- // handlePoi); `hours`/`days` are the global availability window, stored
304
- // raw and parsed at resolve. ──
303
+ // handlePoi); `hours`/`workweek` are the global availability window,
304
+ // stored raw and parsed at resolve. `days` is the legacy alias for
305
+ // `workweek` (decision #48). ──
305
306
  case "hours":
306
307
  dup(d.clockHours);
307
308
  d.clockHours = value;
308
309
  break;
310
+ case "workweek":
309
311
  case "days":
310
312
  dup(d.clockDays);
311
313
  d.clockDays = value;
@@ -633,4 +635,4 @@ export {
633
635
  looksLikeMap,
634
636
  parseMap
635
637
  };
636
- //# sourceMappingURL=chunk-5NGAO4QK.js.map
638
+ //# sourceMappingURL=chunk-27STWBOK.js.map
@@ -1,25 +1,25 @@
1
1
  import {
2
2
  GANTT_BOOLEAN_SET,
3
3
  GANTT_OPTION_SET
4
- } from "./chunk-FQ7HTV52.js";
4
+ } from "./chunk-6DCOIN4W.js";
5
5
  import {
6
6
  parseDuration,
7
7
  parseOffset,
8
8
  parseOffsetPrefix
9
- } from "./chunk-USZW2HHU.js";
9
+ } from "./chunk-EQW6HOP4.js";
10
10
  import {
11
11
  parseDateToken,
12
12
  toInternal
13
13
  } from "./chunk-DAOFNU6J.js";
14
14
  import {
15
15
  getSeriesColors
16
- } from "./chunk-WBM7ZNDI.js";
16
+ } from "./chunk-JYDMBWRP.js";
17
17
  import {
18
18
  matchTagBlockHeading,
19
19
  stripDefaultModifier,
20
20
  tagAttrKey,
21
21
  validateTagGroupNames
22
- } from "./chunk-HHKO6SKY.js";
22
+ } from "./chunk-CMVZWP32.js";
23
23
  import {
24
24
  normalizeName
25
25
  } from "./chunk-NOTA6TEI.js";
@@ -29,27 +29,28 @@ import {
29
29
  isReservedKey,
30
30
  measureIndent,
31
31
  parseFirstLine,
32
+ peelTrailingCollapsedFlag,
32
33
  splitNameAndMeta,
33
34
  warnUnknownMetaKeys,
34
35
  withTagAliases
35
- } from "./chunk-BRENJ2BQ.js";
36
+ } from "./chunk-YJVA3QUU.js";
36
37
  import {
37
38
  formatDgmoError,
38
39
  makeDgmoError
39
- } from "./chunk-CXK4DZH3.js";
40
+ } from "./chunk-4W2PE66Q.js";
40
41
 
41
42
  // src/gantt/parser.ts
42
43
  var GROUP_RE = /^\[(.+?)\]\s*(.*)$/;
43
44
  var DEPENDENCY_RE = /^(?:-(.+?))?->\s*(.+)$/;
44
45
  var COMMENT_RE = /^\/\//;
45
46
  var WORKWEEK_RE = /^workweek\s+(.+)$/i;
46
- var OFFSET_PREFIX_RE = /^\+(\d+(?:\.\d+)?(?:min|bd|d|w|m|q|y|h|s))\s+(.*)/;
47
- var DURATION_TOKEN_RE = /^(\d+(?:\.\d+)?)(min|bd|d|w|m|q|y|h|s)(\?)?$/;
48
- var LAG_ARROW_RE = /^-(\d+(?:\.\d+)?(?:min|bd|d|w|m|q|y|h|s))->\s*(.*)/;
49
- var LEAD_ARROW_RE = /^--(\d+(?:\.\d+)?(?:min|bd|d|w|m|q|y|h|s))->\s*(.*)/;
47
+ var OFFSET_PREFIX_RE = /^\+(\d+(?:\.\d+)?(?:min|bd|sp|d|w|m|q|y|h|s))\s+(.*)/;
48
+ var DURATION_TOKEN_RE = /^(\d+(?:\.\d+)?)(min|bd|sp|d|w|m|q|y|h|s)(\?)?$/;
49
+ var LAG_ARROW_RE = /^-(\d+(?:\.\d+)?(?:min|bd|sp|d|w|m|q|y|h|s))->\s*(.*)/;
50
+ var LEAD_ARROW_RE = /^--(\d+(?:\.\d+)?(?:min|bd|sp|d|w|m|q|y|h|s))->\s*(.*)/;
50
51
  var BASIC_ARROW_RE = /^->\s*(.*)/;
51
- var ERA_OFFSET_RE = /^era\s+\+(\d+(?:\.\d+)?(?:min|bd|d|w|m|q|y|h|s))\s*(?:->|–>)\s*\+(\d+(?:\.\d+)?(?:min|bd|d|w|m|q|y|h|s))\s+(.+)$/i;
52
- var MARKER_OFFSET_RE = /^marker\s+\+(\d+(?:\.\d+)?(?:min|bd|d|w|m|q|y|h|s))\s+(.+)$/i;
52
+ var ERA_OFFSET_RE = /^era\s+\+(\d+(?:\.\d+)?(?:min|bd|sp|d|w|m|q|y|h|s))\s*(?:->|–>)\s*\+(\d+(?:\.\d+)?(?:min|bd|sp|d|w|m|q|y|h|s))\s+(.+)$/i;
53
+ var MARKER_OFFSET_RE = /^marker\s+\+(\d+(?:\.\d+)?(?:min|bd|sp|d|w|m|q|y|h|s))\s+(.+)$/i;
53
54
  var WEEKDAY_MAP = {
54
55
  mon: "mon",
55
56
  tue: "tue",
@@ -153,7 +154,8 @@ function parseGantt(content, palette) {
153
154
  sprintStart: null,
154
155
  sprintMode: null,
155
156
  fillMode: void 0,
156
- noTitle: false
157
+ noTitle: false,
158
+ noLegend: false
157
159
  },
158
160
  diagnostics,
159
161
  error: null,
@@ -807,6 +809,9 @@ function parseGantt(content, palette) {
807
809
  case "no-title":
808
810
  result.options.noTitle = true;
809
811
  break;
812
+ case "no-legend":
813
+ result.options.noLegend = true;
814
+ break;
810
815
  }
811
816
  continue;
812
817
  }
@@ -833,6 +838,9 @@ function parseGantt(content, palette) {
833
838
  const value = optNoColonMatch[2].trim();
834
839
  result.options.optionLineNumbers[key] = lineNumber;
835
840
  switch (key) {
841
+ // `start-date` is canonical (decision #48, pert parity); bare `start`
842
+ // stays as an undocumented legacy alias.
843
+ case "start-date":
836
844
  case "start":
837
845
  result.options.start = wholeDate(value)?.iso ?? value;
838
846
  break;
@@ -952,7 +960,13 @@ function parseGantt(content, palette) {
952
960
  );
953
961
  continue;
954
962
  }
955
- const afterBrackets = gm[2].trim();
963
+ let afterBrackets = gm[2].trim();
964
+ let collapsed = false;
965
+ const barePeel = peelTrailingCollapsedFlag(afterBrackets);
966
+ if (barePeel.collapsed) {
967
+ collapsed = true;
968
+ afterBrackets = barePeel.rest;
969
+ }
956
970
  let metadata = {};
957
971
  if (afterBrackets) {
958
972
  const groupRegistry = withTagAliases(
@@ -975,7 +989,6 @@ function parseGantt(content, palette) {
975
989
  );
976
990
  metadata = split.meta;
977
991
  }
978
- let collapsed = false;
979
992
  if (metadata["collapsed"]?.toLowerCase() === "true") {
980
993
  collapsed = true;
981
994
  delete metadata["collapsed"];
@@ -1152,7 +1165,8 @@ function parseGantt(content, palette) {
1152
1165
  for (let j = tokens.length - 1; j >= 0; j--) {
1153
1166
  const m = tokens[j].match(DURATION_TOKEN_RE);
1154
1167
  if (m) {
1155
- duration = { amount: parseFloat(m[1]), unit: m[2] };
1168
+ const unit = m[2] === "sp" ? "s" : m[2];
1169
+ duration = { amount: parseFloat(m[1]), unit };
1156
1170
  uncertain = !!m[3];
1157
1171
  name = tokens.slice(0, j).join(" ");
1158
1172
  break;
@@ -1332,4 +1346,4 @@ export {
1332
1346
  GANTT_KNOWN_OPTIONS,
1333
1347
  GANTT_KNOWN_BOOLEANS
1334
1348
  };
1335
- //# sourceMappingURL=chunk-QGATPIPX.js.map
1349
+ //# sourceMappingURL=chunk-2QC4HXCY.js.map
@@ -4,10 +4,10 @@ import {
4
4
  } from "./chunk-6EK55ART.js";
5
5
  import {
6
6
  noteBoxSize
7
- } from "./chunk-TYS6CSS5.js";
7
+ } from "./chunk-UU6LUYUH.js";
8
8
  import {
9
9
  resolveNotes
10
- } from "./chunk-FMDSF3OV.js";
10
+ } from "./chunk-QZAW5SFH.js";
11
11
 
12
12
  // src/graph/layout.ts
13
13
  import dagre from "@dagrejs/dagre";
@@ -146,6 +146,7 @@ function layoutGraph(graph, options) {
146
146
  shape: node.shape,
147
147
  ...node.color !== void 0 && { color: node.color },
148
148
  ...node.group !== void 0 && { group: node.group },
149
+ ...node.metadata !== void 0 && { metadata: node.metadata },
149
150
  lineNumber: node.lineNumber,
150
151
  x: p.x,
151
152
  y: p.y,
@@ -310,4 +311,4 @@ function layoutGraph(graph, options) {
310
311
  export {
311
312
  layoutGraph
312
313
  };
313
- //# sourceMappingURL=chunk-HFMYN6N2.js.map
314
+ //# sourceMappingURL=chunk-3B2GXZCX.js.map
@@ -1,35 +1,35 @@
1
1
  import {
2
2
  renderCollapseBar,
3
3
  renderNodeCard
4
- } from "./chunk-OTOHI4JO.js";
4
+ } from "./chunk-H3HFC3SQ.js";
5
5
  import {
6
6
  CARD_RADIUS,
7
7
  CONTAINER_RADIUS
8
8
  } from "./chunk-3CIOJ5YJ.js";
9
9
  import {
10
10
  renderIntegratedLegend
11
- } from "./chunk-AUIM2NVH.js";
11
+ } from "./chunk-W5KMNC5U.js";
12
12
  import {
13
13
  getMaxLegendReservedHeight
14
- } from "./chunk-YAA6IID3.js";
14
+ } from "./chunk-774C2FF3.js";
15
15
  import {
16
16
  FONT_FAMILY
17
17
  } from "./chunk-6KFWC4CO.js";
18
- import {
19
- measureText,
20
- wrapTextToWidth
21
- } from "./chunk-WCT3NYCV.js";
22
18
  import {
23
19
  contrastText,
24
20
  mix,
25
21
  shapeFill,
26
22
  themeBaseBg
27
- } from "./chunk-WBM7ZNDI.js";
23
+ } from "./chunk-JYDMBWRP.js";
24
+ import {
25
+ measureText,
26
+ wrapTextToWidth
27
+ } from "./chunk-4ASYQ347.js";
28
28
  import {
29
29
  resolveActiveTagGroup,
30
30
  resolveTagColor,
31
31
  tagAttrKey
32
- } from "./chunk-HHKO6SKY.js";
32
+ } from "./chunk-CMVZWP32.js";
33
33
 
34
34
  // src/sketch/renderer.ts
35
35
  import * as d3 from "d3-selection";
@@ -1059,4 +1059,4 @@ export {
1059
1059
  sketchEdgeGeometry,
1060
1060
  renderSketchForExport
1061
1061
  };
1062
- //# sourceMappingURL=chunk-6HQH6JZE.js.map
1062
+ //# sourceMappingURL=chunk-3BEKKRH5.js.map
@@ -10,24 +10,25 @@ import {
10
10
  tagAttrKey,
11
11
  validateTagGroupNames,
12
12
  validateTagValues
13
- } from "./chunk-HHKO6SKY.js";
13
+ } from "./chunk-CMVZWP32.js";
14
14
  import {
15
15
  MINDMAP_REGISTRY,
16
16
  OPTION_NOCOLON_RE,
17
17
  extractColor,
18
18
  measureIndent,
19
19
  parseFirstLine,
20
+ peelTrailingCollapsedFlag,
20
21
  splitNameAndMeta,
21
22
  tryParseSharedOption,
22
23
  warnUnknownMetaKeys,
23
24
  withTagAliases
24
- } from "./chunk-BRENJ2BQ.js";
25
+ } from "./chunk-YJVA3QUU.js";
25
26
  import {
26
27
  formatDgmoError,
27
28
  makeDgmoError,
28
29
  makeFail,
29
30
  suggest
30
- } from "./chunk-CXK4DZH3.js";
31
+ } from "./chunk-4W2PE66Q.js";
31
32
 
32
33
  // src/mindmap/parser.ts
33
34
  var KNOWN_OPTIONS = /* @__PURE__ */ new Set(["active-tag"]);
@@ -241,9 +242,18 @@ function parseMindmap(content, palette) {
241
242
  return result;
242
243
  }
243
244
  function parseNodeLine(trimmed, lineNumber, _palette, counter, aliasMap, diagnostics) {
245
+ let bareCollapsed = false;
246
+ let nodeText = trimmed;
247
+ {
248
+ const barePeel = peelTrailingCollapsedFlag(nodeText);
249
+ if (barePeel.collapsed && barePeel.rest) {
250
+ bareCollapsed = true;
251
+ nodeText = barePeel.rest;
252
+ }
253
+ }
244
254
  const registry = withTagAliases(MINDMAP_REGISTRY, new Set(aliasMap.keys()));
245
255
  const split = splitNameAndMeta(
246
- trimmed,
256
+ nodeText,
247
257
  registry,
248
258
  aliasMap,
249
259
  void 0,
@@ -265,9 +275,9 @@ function parseNodeLine(trimmed, lineNumber, _palette, counter, aliasMap, diagnos
265
275
  if (descVal) description = [descVal];
266
276
  delete metadata["description"];
267
277
  }
268
- let collapsed;
278
+ let collapsed = bareCollapsed ? true : void 0;
269
279
  if ("collapsed" in metadata) {
270
- collapsed = metadata["collapsed"].toLowerCase() === "true";
280
+ collapsed = collapsed || metadata["collapsed"].toLowerCase() === "true";
271
281
  delete metadata["collapsed"];
272
282
  }
273
283
  return {
@@ -313,4 +323,4 @@ function findMetadataParent(indent, indentStack) {
313
323
  export {
314
324
  parseMindmap
315
325
  };
316
- //# sourceMappingURL=chunk-AL672HNE.js.map
326
+ //# sourceMappingURL=chunk-3CZLWOCI.js.map
@@ -11,7 +11,7 @@ import {
11
11
  } from "./chunk-3HDBAXF5.js";
12
12
  import {
13
13
  mix
14
- } from "./chunk-WBM7ZNDI.js";
14
+ } from "./chunk-JYDMBWRP.js";
15
15
 
16
16
  // src/utils/note-box/svg.ts
17
17
  var NOTE_STROKE_WIDTH = 0.6;
@@ -133,4 +133,4 @@ export {
133
133
  NOTE_BADGE_RADIUS,
134
134
  renderNoteBadge
135
135
  };
136
- //# sourceMappingURL=chunk-J7TLCB2Q.js.map
136
+ //# sourceMappingURL=chunk-3IUHKMJI.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  formatDateKey,
3
3
  parseGanttDate
4
- } from "./chunk-USZW2HHU.js";
4
+ } from "./chunk-EQW6HOP4.js";
5
5
 
6
6
  // src/pert/internal.ts
7
7
  var CONFIDENCE_TABLE = {
@@ -97,4 +97,4 @@ export {
97
97
  formatSprintCell,
98
98
  formatSlackValue
99
99
  };
100
- //# sourceMappingURL=chunk-7L4UJOY6.js.map
100
+ //# sourceMappingURL=chunk-3TYUXC7D.js.map
@@ -2,7 +2,7 @@ import {
2
2
  CHAR_WIDTH_RATIO,
3
3
  measureText,
4
4
  truncateText
5
- } from "./chunk-WCT3NYCV.js";
5
+ } from "./chunk-4ASYQ347.js";
6
6
 
7
7
  // src/infra/layout.ts
8
8
  import dagre from "@dagrejs/dagre";
@@ -587,4 +587,4 @@ export {
587
587
  fixEdgeWaypoints,
588
588
  layoutInfra
589
589
  };
590
- //# sourceMappingURL=chunk-Y2ZE3MSG.js.map
590
+ //# sourceMappingURL=chunk-43E26CDA.js.map
@@ -8,17 +8,17 @@ import {
8
8
  import {
9
9
  FONT_FAMILY
10
10
  } from "./chunk-6KFWC4CO.js";
11
- import {
12
- measureText
13
- } from "./chunk-WCT3NYCV.js";
14
11
  import {
15
12
  contrastText,
16
13
  mix,
17
14
  shapeFill
18
- } from "./chunk-WBM7ZNDI.js";
15
+ } from "./chunk-JYDMBWRP.js";
16
+ import {
17
+ measureText
18
+ } from "./chunk-4ASYQ347.js";
19
19
  import {
20
20
  fillModeFromOptions
21
- } from "./chunk-BRENJ2BQ.js";
21
+ } from "./chunk-YJVA3QUU.js";
22
22
 
23
23
  // src/wireframe/renderer.ts
24
24
  import * as d3Selection from "d3-selection";
@@ -554,4 +554,4 @@ function renderModal(parent, node, ctx) {
554
554
  export {
555
555
  renderWireframe
556
556
  };
557
- //# sourceMappingURL=chunk-YTMTPUH4.js.map
557
+ //# sourceMappingURL=chunk-4ASVFYB2.js.map
@@ -88,23 +88,38 @@ var CHAR_W = {
88
88
  };
89
89
  var DEFAULT_W = 0.56;
90
90
  var CHAR_WIDTH_RATIO = DEFAULT_W;
91
- function measureText(text, fontSize) {
92
- let w = 0;
91
+ var MEASURE_CACHE = /* @__PURE__ */ new Map();
92
+ var MEASURE_CACHE_MAX = 1e4;
93
+ function extendWidth(acc, text, fontSize) {
94
+ let w = acc;
93
95
  for (let i = 0; i < text.length; i++) {
94
96
  w += (CHAR_W[text.charAt(i)] ?? DEFAULT_W) * fontSize;
95
97
  }
96
98
  return w;
97
99
  }
100
+ function measureText(text, fontSize) {
101
+ const key = `${fontSize}|${text}`;
102
+ const cached = MEASURE_CACHE.get(key);
103
+ if (cached !== void 0) return cached;
104
+ const w = extendWidth(0, text, fontSize);
105
+ if (MEASURE_CACHE.size >= MEASURE_CACHE_MAX) MEASURE_CACHE.clear();
106
+ MEASURE_CACHE.set(key, w);
107
+ return w;
108
+ }
98
109
  function truncateText(text, fontSize, maxWidth) {
99
110
  if (measureText(text, fontSize) <= maxWidth) return text;
100
111
  const ellipsis = "\u2026";
101
112
  const ellipsisW = measureText(ellipsis, fontSize);
102
113
  if (ellipsisW > maxWidth) return "";
114
+ const prefix = [0];
115
+ for (let i = 0; i < text.length; i++) {
116
+ prefix.push(extendWidth(prefix[i], text.charAt(i), fontSize));
117
+ }
103
118
  let lo = 0;
104
119
  let hi = text.length;
105
120
  while (lo < hi) {
106
121
  const mid = Math.ceil((lo + hi) / 2);
107
- if (measureText(text.slice(0, mid), fontSize) + ellipsisW <= maxWidth) {
122
+ if (prefix[mid] + ellipsisW <= maxWidth) {
108
123
  lo = mid;
109
124
  } else {
110
125
  hi = mid - 1;
@@ -116,15 +131,19 @@ function wrapTextToWidth(text, fontSize, maxWidth, opts) {
116
131
  const words = text.split(/\s+/).filter((w) => w.length > 0);
117
132
  if (words.length === 0) return [""];
118
133
  const hardBreak = opts?.hardBreak ?? false;
134
+ const spaceW = (CHAR_W[" "] ?? DEFAULT_W) * fontSize;
119
135
  const lines = [];
120
136
  let current = "";
137
+ let currentW = 0;
121
138
  const pushWord = (word) => {
122
- const test = current ? `${current} ${word}` : word;
123
- if (measureText(test, fontSize) <= maxWidth || !current) {
124
- current = test;
139
+ const testW = extendWidth(current ? currentW + spaceW : 0, word, fontSize);
140
+ if (testW <= maxWidth || !current) {
141
+ current = current ? `${current} ${word}` : word;
142
+ currentW = testW;
125
143
  } else {
126
144
  lines.push(current);
127
145
  current = word;
146
+ currentW = extendWidth(0, word, fontSize);
128
147
  }
129
148
  };
130
149
  for (const word of words) {
@@ -132,17 +151,23 @@ function wrapTextToWidth(text, fontSize, maxWidth, opts) {
132
151
  if (current) {
133
152
  lines.push(current);
134
153
  current = "";
154
+ currentW = 0;
135
155
  }
136
156
  let chunk = "";
157
+ let chunkW = 0;
137
158
  for (const ch of word) {
138
- if (chunk && measureText(chunk + ch, fontSize) > maxWidth) {
159
+ const candW = extendWidth(chunkW, ch, fontSize);
160
+ if (chunk && candW > maxWidth) {
139
161
  lines.push(chunk);
140
162
  chunk = ch;
163
+ chunkW = extendWidth(0, ch, fontSize);
141
164
  } else {
142
165
  chunk += ch;
166
+ chunkW = candW;
143
167
  }
144
168
  }
145
169
  current = chunk;
170
+ currentW = chunkW;
146
171
  continue;
147
172
  }
148
173
  pushWord(word);
@@ -157,4 +182,4 @@ export {
157
182
  truncateText,
158
183
  wrapTextToWidth
159
184
  };
160
- //# sourceMappingURL=chunk-WCT3NYCV.js.map
185
+ //# sourceMappingURL=chunk-4ASYQ347.js.map
@@ -7,7 +7,7 @@ import {
7
7
  tagAttrKey,
8
8
  validateTagGroupNames,
9
9
  validateTagValues
10
- } from "./chunk-HHKO6SKY.js";
10
+ } from "./chunk-CMVZWP32.js";
11
11
  import {
12
12
  TREEMAP_REGISTRY,
13
13
  extractColor,
@@ -19,14 +19,14 @@ import {
19
19
  stripQuotes,
20
20
  warnUnknownMetaKeys,
21
21
  withTagAliases
22
- } from "./chunk-BRENJ2BQ.js";
22
+ } from "./chunk-YJVA3QUU.js";
23
23
  import {
24
24
  emit,
25
25
  formatDgmoError,
26
26
  makeDgmoError,
27
27
  makeFail,
28
28
  suggest
29
- } from "./chunk-CXK4DZH3.js";
29
+ } from "./chunk-4W2PE66Q.js";
30
30
 
31
31
  // src/treemap/diagnostics.ts
32
32
  var TREEMAP_DX = {
@@ -246,7 +246,7 @@ function parseTreemap(content, palette) {
246
246
  validateTagGroupNames(result.tagGroups, pushWarning);
247
247
  cascadeTagMetadata(result.roots, result.tagGroups);
248
248
  }
249
- result.defaultColorMode = resolveDefaultColorMode(result);
249
+ result.defaultColorMode = resolveDefaultColorMode(result, pushWarning);
250
250
  if (result.roots.length === 0 && !result.error) {
251
251
  const diag = makeDgmoError(1, "No nodes found in treemap");
252
252
  result.diagnostics.push(diag);
@@ -280,10 +280,16 @@ function handleDirective(trimmed, options, result, pushWarning, lineNumber) {
280
280
  result.hasHeat = true;
281
281
  return true;
282
282
  }
283
- const noMatch = trimmed.match(/^no-(values|percent|headers|legend)\s*$/i);
283
+ const activeTagMatch = trimmed.match(/^active-tag\s+(.+)$/i);
284
+ if (activeTagMatch) {
285
+ result.activeTag = activeTagMatch[1].trim();
286
+ result.activeTagLineNumber = lineNumber;
287
+ return true;
288
+ }
289
+ const noMatch = trimmed.match(/^no-(values?|percent|headers|legend)\s*$/i);
284
290
  if (noMatch) {
285
291
  const key = noMatch[1].toLowerCase();
286
- if (key === "values") options.noValues = true;
292
+ if (key === "value" || key === "values") options.noValues = true;
287
293
  else if (key === "percent") options.noPercent = true;
288
294
  else if (key === "headers") options.noHeaders = true;
289
295
  else if (key === "legend") options.noLegend = true;
@@ -302,9 +308,27 @@ function handleDirective(trimmed, options, result, pushWarning, lineNumber) {
302
308
  }
303
309
  return false;
304
310
  }
305
- function resolveDefaultColorMode(result) {
306
- if (result.tagGroups.length > 0) return "tag";
311
+ function resolveDefaultColorMode(result, pushWarning) {
312
+ const at = result.activeTag?.trim();
313
+ if (at) {
314
+ const lv = at.toLowerCase();
315
+ if (lv === "none") return "branch";
316
+ const heatName = result.options.heatLabel;
317
+ const heatHit = heatName !== void 0 ? lv === heatName.toLowerCase() : lv === "value" || lv === "heat";
318
+ if (result.hasHeat && heatHit) return "heat";
319
+ if (result.tagGroups.some((g) => g.name.toLowerCase() === lv)) return "tag";
320
+ const dims = [
321
+ ...result.tagGroups.map((g) => g.name),
322
+ ...result.hasHeat ? [heatName ?? "Value"] : []
323
+ ];
324
+ const hint = dims.length ? ` Available: ${dims.join(", ")}, none.` : " No tag groups or heat are declared.";
325
+ pushWarning(
326
+ result.activeTagLineNumber ?? 0,
327
+ `active-tag "${at}" does not match a declared tag group or the heat label.${hint}`
328
+ );
329
+ }
307
330
  if (result.hasHeat) return "heat";
331
+ if (result.tagGroups.length > 0) return "tag";
308
332
  return "branch";
309
333
  }
310
334
  function parseNodeLine(trimmed, lineNumber, counter, aliasMap, diagnostics) {
@@ -381,4 +405,4 @@ export {
381
405
  TREEMAP_DIAGNOSTICS,
382
406
  parseTreemap
383
407
  };
384
- //# sourceMappingURL=chunk-ZNWAYU6N.js.map
408
+ //# sourceMappingURL=chunk-4K42RUGC.js.map