@diagrammo/dgmo 0.95.0 → 0.97.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 (279) hide show
  1. package/README.md +1 -1
  2. package/dist/advanced.d.ts +190 -568
  3. package/dist/advanced.js +259 -470
  4. package/dist/block.d.ts +8 -0
  5. package/dist/block.js +144 -73
  6. package/dist/{calculator-BNH3GSJE.js → calculator-CIGGTURF.js} +2 -2
  7. package/dist/{chart-meta-BbjsRY7o.d.ts → chart-meta-B7niEd52.d.ts} +3 -1
  8. package/dist/chart-meta.d.ts +2 -2
  9. package/dist/chart-meta.js +19 -19
  10. package/dist/{chart-types-Cppnp31G.d.ts → chart-types-Dxtv4XSz.d.ts} +4 -5
  11. package/dist/{charts-d3-SZV2SFTM.js → charts-d3-INWEGMSD.js} +14 -14
  12. package/dist/{chunk-P5XA627W.js → chunk-2FMOLWX4.js} +73 -65
  13. package/dist/{chunk-MLY5ALOV.js → chunk-2SZILMQT.js} +57 -15
  14. package/dist/chunk-35A3J4Z5.js +14 -0
  15. package/dist/{chunk-UXNA2H2V.js → chunk-3C4OXVZJ.js} +2 -2
  16. package/dist/{chunk-IZHGT5HD.js → chunk-3HL6NSSQ.js} +63 -18
  17. package/dist/{chunk-2WQ3YZMN.js → chunk-3IUMSK72.js} +2 -2
  18. package/dist/{chunk-LAXMUSGW.js → chunk-44RLIAYC.js} +17 -10
  19. package/dist/{chunk-H7AXCRO7.js → chunk-453IWXZ3.js} +0 -11
  20. package/dist/{chunk-2I4UQG7W.js → chunk-47INRTZ6.js} +2 -2
  21. package/dist/{chunk-IN7XI6NO.js → chunk-4NMRS6HW.js} +1 -1
  22. package/dist/{chunk-KLBTJEIK.js → chunk-4TK26YHH.js} +2 -2
  23. package/dist/{chunk-CN4RDJDV.js → chunk-5TGZBHEJ.js} +1 -1
  24. package/dist/{chunk-IXHWS2HI.js → chunk-5WZYJC2P.js} +2 -2
  25. package/dist/{chunk-KBDMEOLI.js → chunk-65JFUANT.js} +1 -1
  26. package/dist/{chunk-D3K4U3ZM.js → chunk-6K2W3FH7.js} +8 -5
  27. package/dist/{chunk-NXU4N5WT.js → chunk-6OUMYNAJ.js} +1 -1
  28. package/dist/{chunk-KRPLP5LP.js → chunk-6PUBFB6D.js} +24 -3
  29. package/dist/{chunk-EXHXTMVR.js → chunk-6S2H6EKN.js} +3 -3
  30. package/dist/{chunk-KSZB7TIY.js → chunk-6SDEXSJY.js} +42 -22
  31. package/dist/{chunk-IQN2NGEU.js → chunk-6YBZFOTA.js} +13 -13
  32. package/dist/{chunk-IHN6WDEY.js → chunk-74XR7Z3I.js} +13 -13
  33. package/dist/{chunk-2J2CWWWK.js → chunk-7ASVGFW3.js} +1 -1
  34. package/dist/{chunk-BH2SF4TT.js → chunk-7QKWU7FX.js} +3 -3
  35. package/dist/{chunk-A6YINTY6.js → chunk-7RACGVUY.js} +1 -1
  36. package/dist/{chunk-VB4VMB2I.js → chunk-7TEAFIEJ.js} +9 -5
  37. package/dist/{chunk-UNCCZ3NU.js → chunk-A3V72YIL.js} +14 -1
  38. package/dist/{chunk-BCV2VJTM.js → chunk-A5LFM62B.js} +3 -3
  39. package/dist/{chunk-U6VS3T2M.js → chunk-AULFF7L2.js} +4 -4
  40. package/dist/{chunk-LKZCUFOW.js → chunk-B7ZH5EQ2.js} +2 -2
  41. package/dist/{chunk-VGAMBOOC.js → chunk-C6ME2L4T.js} +2 -2
  42. package/dist/{chunk-3PP746YM.js → chunk-CGP7RGLJ.js} +1 -1
  43. package/dist/{chunk-67N26CER.js → chunk-CLW45YKE.js} +2 -1
  44. package/dist/{chunk-VTESGA5F.js → chunk-CUOMNKYW.js} +4 -4
  45. package/dist/{chunk-CDM6XMOT.js → chunk-CUTEHGXO.js} +2 -2
  46. package/dist/{chunk-NERQSSYD.js → chunk-D67YE4LR.js} +1 -1
  47. package/dist/{chunk-XOMIYMQ3.js → chunk-D7KZE2XJ.js} +39 -17
  48. package/dist/{chunk-NMS5XSLX.js → chunk-DFEVFLEG.js} +3 -3
  49. package/dist/{chunk-EBVVMUAA.js → chunk-DKMZ4VMV.js} +1 -1
  50. package/dist/{chunk-V5D6GDNK.js → chunk-DRY4W4W6.js} +36 -15
  51. package/dist/{chunk-XJQ6Z3FO.js → chunk-E6GHXMH2.js} +8 -8
  52. package/dist/{chunk-KBEWVCK3.js → chunk-EBJLT7PH.js} +1 -1
  53. package/dist/{chunk-TASRGDYP.js → chunk-EEIGHOJR.js} +92 -23
  54. package/dist/{chunk-AQQUJEDN.js → chunk-EUPUVYWO.js} +1 -1
  55. package/dist/{chunk-7IALGIOI.js → chunk-F2OAZHOX.js} +10 -5
  56. package/dist/{chunk-JXGSTBW6.js → chunk-FK6HZYGK.js} +4 -14
  57. package/dist/{chunk-OSSTOSXU.js → chunk-FTW2E2YH.js} +7 -10
  58. package/dist/{chunk-5P2L5QXE.js → chunk-FZVCS2XY.js} +4 -2
  59. package/dist/chunk-G24NSISJ.js +69 -0
  60. package/dist/{chunk-EBIDNRSR.js → chunk-GFQFLLP3.js} +2 -2
  61. package/dist/{chunk-RQTDUZUH.js → chunk-GLLYHYGT.js} +27 -17
  62. package/dist/{chunk-VLC6WNRD.js → chunk-GULGSH2Z.js} +4 -0
  63. package/dist/{chunk-H5NVCOEJ.js → chunk-GXBH7WNN.js} +2 -2
  64. package/dist/{chunk-C6G36F5S.js → chunk-H242TVAE.js} +9 -9
  65. package/dist/{chunk-5XBYLYYI.js → chunk-H7DZYHQF.js} +3 -3
  66. package/dist/{chunk-GLCMUTO5.js → chunk-HQNZJMNS.js} +1 -1
  67. package/dist/{chunk-IY62DXT2.js → chunk-IAM3IDL4.js} +2 -2
  68. package/dist/{chunk-IGJEKO2P.js → chunk-II6D6NWX.js} +8 -8
  69. package/dist/{chunk-AULZD45V.js → chunk-IUFTAFGN.js} +2 -2
  70. package/dist/{chunk-FWVE373X.js → chunk-IZEKHIV6.js} +3 -3
  71. package/dist/{chunk-BQMHJ6OW.js → chunk-J3YM6RA5.js} +22 -14
  72. package/dist/{chunk-R6EGUTIV.js → chunk-J467QBZF.js} +23 -3
  73. package/dist/{chunk-JJ7RGTAU.js → chunk-J7JF4QKA.js} +40 -30
  74. package/dist/{chunk-E7F76M3U.js → chunk-JULBDTNU.js} +61 -9
  75. package/dist/{chunk-EPDBWATV.js → chunk-K7RRXZHS.js} +4 -2
  76. package/dist/{chunk-ZECJ7Q6C.js → chunk-KMB754DO.js} +33 -6
  77. package/dist/chunk-KNKZGRRB.js +439 -0
  78. package/dist/{chunk-XIUGSUE4.js → chunk-KTGJQJB3.js} +6 -2
  79. package/dist/{chunk-4SACN2C5.js → chunk-KW3CC7SB.js} +1 -1
  80. package/dist/{chunk-3GUEYQGL.js → chunk-L3K5O3Z5.js} +3 -3
  81. package/dist/chunk-LRTSTDJ6.js +126 -0
  82. package/dist/{chunk-NBAAIRFP.js → chunk-LZATSXAA.js} +5 -2
  83. package/dist/{chunk-USE6HIOZ.js → chunk-MJ725XHD.js} +1156 -330
  84. package/dist/{chunk-3KVUFHUJ.js → chunk-NBISN6FH.js} +2 -2
  85. package/dist/{chunk-RITTLIDJ.js → chunk-NN5RUHXV.js} +84 -16
  86. package/dist/{chunk-62GLKE6Q.js → chunk-NOZMRPXI.js} +112 -157
  87. package/dist/{chunk-4XYZJTFO.js → chunk-NQFZ7LXC.js} +14 -6
  88. package/dist/chunk-NTDWVTEY.js +12 -0
  89. package/dist/{chunk-BQO24BDM.js → chunk-O3HRF25Z.js} +1 -1
  90. package/dist/{chunk-ZD3QCNB7.js → chunk-OSSA5UWA.js} +3 -3
  91. package/dist/{chunk-UOCWYLYT.js → chunk-OZXKW5NA.js} +1 -1
  92. package/dist/{chunk-NPDVWFAQ.js → chunk-PLQZJZ2K.js} +1 -1
  93. package/dist/chunk-PRG7NIUU.js +272 -0
  94. package/dist/{chunk-S4SJ4LLY.js → chunk-PSNRB75I.js} +3 -3
  95. package/dist/{chunk-QPQWY5RU.js → chunk-PT5VFY3B.js} +38 -14
  96. package/dist/{chunk-KAO7JL4I.js → chunk-PU5X3P3T.js} +6 -5
  97. package/dist/{chunk-J7Q4AB23.js → chunk-PZ5LAAO3.js} +2 -2
  98. package/dist/{chunk-TOHTKLKE.js → chunk-Q5Q5JLRT.js} +1 -1
  99. package/dist/{chunk-Y3SIQN4J.js → chunk-Q6V342WS.js} +17 -5
  100. package/dist/{chunk-RBVFNUAL.js → chunk-QDPTOIG7.js} +5 -5
  101. package/dist/{chunk-ERT7XDQW.js → chunk-QIITSGI5.js} +1 -1
  102. package/dist/{chunk-NM5V5EKY.js → chunk-QLIZ7SB7.js} +1 -1
  103. package/dist/chunk-QLNLRZ37.js +181 -0
  104. package/dist/{chunk-HHVIE45A.js → chunk-QOLRTPGH.js} +6 -6
  105. package/dist/{chunk-2ZW4NBYX.js → chunk-R4SXMBGF.js} +1 -1
  106. package/dist/chunk-R4U7IIRX.js +178 -0
  107. package/dist/{chunk-BRGRIZQB.js → chunk-RC6PISCK.js} +4 -2
  108. package/dist/{chunk-UIEKW4SG.js → chunk-REKLKGR6.js} +3 -4
  109. package/dist/{chunk-TIIZIAGS.js → chunk-RFGQDIOI.js} +843 -233
  110. package/dist/{chunk-FVTYJUXR.js → chunk-ROFSIFSY.js} +4 -4
  111. package/dist/{chunk-VSAKEMDD.js → chunk-ROH4LYBL.js} +71 -21
  112. package/dist/{chunk-4UVCTLRH.js → chunk-SNDCXT5R.js} +9 -7
  113. package/dist/{chunk-R46N5KR4.js → chunk-SQBCNEJB.js} +2 -1
  114. package/dist/{chunk-66JTY4AN.js → chunk-TDUBTDXS.js} +1 -1
  115. package/dist/{chunk-PGSGJLUR.js → chunk-TMB4YY3J.js} +34 -4
  116. package/dist/{chunk-UZ7EZW3B.js → chunk-TO53KK2P.js} +6 -1
  117. package/dist/{chunk-5KKZXA44.js → chunk-V3ICBS2O.js} +7 -5
  118. package/dist/{chunk-GWQRTA5W.js → chunk-V65EDV6S.js} +3 -3
  119. package/dist/{chunk-VF7IKIRS.js → chunk-VKT3BVRO.js} +35 -11
  120. package/dist/{chunk-L5S32VZJ.js → chunk-VOO65FKC.js} +12 -12
  121. package/dist/{chunk-PVWIBKV2.js → chunk-VQWLASDC.js} +2 -2
  122. package/dist/{chunk-JILEYZ2V.js → chunk-VVL2KKG4.js} +1 -1
  123. package/dist/{chunk-GI5R5B3S.js → chunk-VVZDBUHA.js} +2 -2
  124. package/dist/{chunk-PGBTUGDB.js → chunk-W46OMHOK.js} +23 -27
  125. package/dist/{chunk-XCKNFFKM.js → chunk-WH6E6SHC.js} +2 -4
  126. package/dist/{chunk-H6BT45SN.js → chunk-WPYJAHRP.js} +1 -1
  127. package/dist/{chunk-LJGE43SG.js → chunk-WXGFB2O2.js} +3 -3
  128. package/dist/{chunk-YQMIKX54.js → chunk-XCYGOCMS.js} +102 -52
  129. package/dist/{chunk-BTP2BMWN.js → chunk-XEMCNQQW.js} +15 -15
  130. package/dist/{chunk-NVZ7R4EK.js → chunk-XMUFXJI2.js} +6 -6
  131. package/dist/{chunk-AM42TLSZ.js → chunk-XZGXVN4T.js} +5 -5
  132. package/dist/{chunk-5OTA2PUH.js → chunk-YCIBBVI2.js} +2 -2
  133. package/dist/{chunk-V2NQV7VL.js → chunk-YFIDR7JH.js} +2 -2
  134. package/dist/{chunk-USZLHYEQ.js → chunk-YFWIFKRQ.js} +3 -3
  135. package/dist/{chunk-6XLMTAEX.js → chunk-YIHRLY55.js} +33 -6
  136. package/dist/{chunk-CYRB2JTN.js → chunk-YLKPRT6U.js} +1 -1
  137. package/dist/{chunk-KMU65FYM.js → chunk-YSDSFXQD.js} +1 -1
  138. package/dist/{chunk-ZI6WC24V.js → chunk-ZBJV4KNU.js} +1 -1
  139. package/dist/{chunk-4EX4OKGZ.js → chunk-ZCKVTZHD.js} +41 -19
  140. package/dist/{chunk-7PJBJ2DU.js → chunk-ZMVMGZAJ.js} +1 -1
  141. package/dist/{chunk-6EFCOES2.js → chunk-ZRW4B4KF.js} +48 -14
  142. package/dist/{chunk-A2A2I4Z4.js → chunk-ZTKO2RD4.js} +5 -5
  143. package/dist/collapse-6IGH2B24.js +31 -0
  144. package/dist/{collapse-BSPH3BFM.js → collapse-6X5S2S3G.js} +2 -1
  145. package/dist/collapse-GOWNCVHZ.js +7 -0
  146. package/dist/collapse-HNTPLB2Q.js +11 -0
  147. package/dist/collapse-NUM7DPJA.js +10 -0
  148. package/dist/completion-registry.js +28 -39
  149. package/dist/countdown.js +1 -1
  150. package/dist/dgmo-router-RSYWR5IS.js +101 -0
  151. package/dist/dimensions-KXAI7U2B.js +21 -0
  152. package/dist/editor.js +884 -222
  153. package/dist/{flowchart-parser-J3VWIFWB.js → flowchart-parser-UI5VZNGJ.js} +5 -5
  154. package/dist/{flowchart-renderer-FECH5KK5.js → flowchart-renderer-IYWPKPCF.js} +18 -18
  155. package/dist/fold-at-line-DmSAa1eU.d.ts +11 -0
  156. package/dist/highlight.js +886 -224
  157. package/dist/index.d.ts +89 -6
  158. package/dist/index.js +91 -70
  159. package/dist/{layout-TIBRMWHL.js → layout-6VY3DHYD.js} +6 -6
  160. package/dist/{layout-5SZ5A64I.js → layout-7C2QZCEZ.js} +10 -10
  161. package/dist/{layout-2WESJYRE.js → layout-7E7BNOGO.js} +3 -2
  162. package/dist/layout-BSK374N6.js +11 -0
  163. package/dist/{layout-RH3N46HP.js → layout-FJDBY3WG.js} +6 -5
  164. package/dist/{layout-YBMT74MG.js → layout-G3RVKEC4.js} +10 -10
  165. package/dist/{layout-KV27UW25.js → layout-GC5XX2RH.js} +2 -2
  166. package/dist/{layout-JTIRCKAW.js → layout-R6ULGQJK.js} +6 -6
  167. package/dist/{layout-HFBK5UEG.js → layout-ROI5KVSO.js} +3 -3
  168. package/dist/{layout-3TSVAGWH.js → layout-SPPS225I.js} +3 -3
  169. package/dist/{layout-HF3PMI4H.js → layout-VTGOYGRC.js} +2 -2
  170. package/dist/{layout-EWXHEXNS.js → layout-WBH5IHYK.js} +10 -10
  171. package/dist/layout-WTHBGTH2.js +15 -0
  172. package/dist/layout-ZCCABSV7.js +15 -0
  173. package/dist/{layout-search-AWPJWBKT.js → layout-search-DSIDKKQO.js} +8 -8
  174. package/dist/{legend-constants-55MFBXYF.js → legend-constants-KF3MKWL2.js} +2 -2
  175. package/dist/{parser-NUU3DVW4.js → parser-3PMYAVFL.js} +2 -2
  176. package/dist/{parser-KJPPUN4D.js → parser-5KVFS4RN.js} +2 -2
  177. package/dist/{parser-6TDWUKM5.js → parser-BA43YPIQ.js} +3 -3
  178. package/dist/{parser-EFF22GYO.js → parser-CFAYEWLF.js} +3 -3
  179. package/dist/{parser-A3AN76RQ.js → parser-DRFEX6OX.js} +3 -3
  180. package/dist/{parser-H5OODY5N.js → parser-DWVBRBB2.js} +3 -3
  181. package/dist/{parser-BJ7RJNUM.js → parser-E4B7HJT2.js} +3 -3
  182. package/dist/{parser-5UZV32ZI.js → parser-FWQY3HJX.js} +2 -2
  183. package/dist/{parser-RTWPFKXG.js → parser-GMCXCJSP.js} +3 -3
  184. package/dist/{parser-NL73FSFI.js → parser-IHFHPFL7.js} +3 -3
  185. package/dist/{parser-BTSTKY5G.js → parser-IU6425JW.js} +6 -6
  186. package/dist/{parser-ZRIZFDZY.js → parser-IZYIXDJX.js} +6 -6
  187. package/dist/{parser-4TBSWULQ.js → parser-JQGUTDSX.js} +3 -3
  188. package/dist/{parser-TUAEX6ML.js → parser-JRKPOO2Z.js} +3 -3
  189. package/dist/{parser-KMKVFET2.js → parser-KI2XYB2R.js} +2 -2
  190. package/dist/parser-LDVVBP7S.js +12 -0
  191. package/dist/{parser-YG625J5H.js → parser-MAGFK6OK.js} +4 -4
  192. package/dist/{parser-AR2GON37.js → parser-MH5BDN7X.js} +4 -4
  193. package/dist/{parser-EAQPZX2B.js → parser-MUHFEM4G.js} +3 -3
  194. package/dist/{parser-RCIEKN7Y.js → parser-P375HO7Q.js} +2 -2
  195. package/dist/{parser-GMQJISZ6.js → parser-PYY5BRLQ.js} +2 -2
  196. package/dist/parser-QEMFMVF5.js +12 -0
  197. package/dist/{parser-GDLKUBTO.js → parser-QIPDBT5M.js} +2 -2
  198. package/dist/{parser-BT4NI6JY.js → parser-RNBDDEGL.js} +3 -3
  199. package/dist/{parser-MA7L3XND.js → parser-RSWZGQA7.js} +6 -6
  200. package/dist/{parser-K2DI26SC.js → parser-SGX2PVR5.js} +2 -2
  201. package/dist/{parser-KKF6Y5MM.js → parser-SJUEFKNM.js} +4 -3
  202. package/dist/{parser-3QIFY5IN.js → parser-UMNBPXG2.js} +2 -2
  203. package/dist/{parser-F7NDRPMA.js → parser-WE4VSBBY.js} +3 -3
  204. package/dist/{parser-4Y6PODW6.js → parser-WKEYS7N3.js} +3 -3
  205. package/dist/{parser-KLCSFQ3J.js → parser-WPXUUNA2.js} +3 -3
  206. package/dist/{parser-LTRQASGB.js → parser-XP3RCOTN.js} +3 -3
  207. package/dist/{parser-2IKPQVKX.js → parser-YV4RBHG7.js} +3 -3
  208. package/dist/{parser-3LT3ZUUC.js → parser-YZ3J542U.js} +2 -2
  209. package/dist/{redraw-AHW7EUUF.js → redraw-BZ4GI6IC.js} +6 -4
  210. package/dist/{redraw-STZ4WJAI.js → redraw-LEOXS7C6.js} +3 -3
  211. package/dist/{renderer-IGSHD3OT.js → renderer-2V5NVI3V.js} +16 -16
  212. package/dist/renderer-4PKYVOYL.js +39 -0
  213. package/dist/{renderer-IVHD7ENY.js → renderer-66SCERH7.js} +14 -12
  214. package/dist/renderer-6IAXRZLK.js +85 -0
  215. package/dist/{renderer-XCLARXCK.js → renderer-6O5SV5YE.js} +10 -10
  216. package/dist/{renderer-IXBOT6DU.js → renderer-7OXMSF4R.js} +4 -4
  217. package/dist/{renderer-AM7P4LN7.js → renderer-A36NL2SS.js} +8 -8
  218. package/dist/{renderer-ACQQ2JXA.js → renderer-ASPBBACI.js} +13 -11
  219. package/dist/{renderer-W4MUMXJE.js → renderer-BXVTYE27.js} +7 -6
  220. package/dist/renderer-CC6O6GQK.js +18 -0
  221. package/dist/{renderer-Y47EM337.js → renderer-CNDB4JTZ.js} +17 -17
  222. package/dist/renderer-COV2DXTM.js +41 -0
  223. package/dist/renderer-DXCATVLO.js +30 -0
  224. package/dist/{renderer-JYHA6R2D.js → renderer-E5E3OJ42.js} +12 -11
  225. package/dist/{renderer-DAZWHNLI.js → renderer-E7LC7HCU.js} +5 -5
  226. package/dist/{renderer-RUSQJFFC.js → renderer-F3JYZERE.js} +4 -4
  227. package/dist/{renderer-7OGGV327.js → renderer-FAFSRFGR.js} +9 -9
  228. package/dist/renderer-HIB6LZWZ.js +26 -0
  229. package/dist/renderer-HLDRRFZB.js +28 -0
  230. package/dist/renderer-INQMQPNN.js +22 -0
  231. package/dist/renderer-ITJ67HXO.js +27 -0
  232. package/dist/{renderer-UTEEJDGB.js → renderer-JLOKFKOZ.js} +14 -13
  233. package/dist/{renderer-2LYX6NHN.js → renderer-KOPJ76GS.js} +10 -10
  234. package/dist/{renderer-MWZC7TMD.js → renderer-M2467III.js} +14 -13
  235. package/dist/{renderer-HX6ICPDX.js → renderer-MYKL6VG6.js} +6 -6
  236. package/dist/{renderer-BXD5KVSR.js → renderer-S6L3JR6C.js} +11 -11
  237. package/dist/{renderer-NOYLNVTI.js → renderer-SYWVZ4CY.js} +3 -3
  238. package/dist/renderer-TCTZZ5Y6.js +32 -0
  239. package/dist/{renderer-QTPWRRJ7.js → renderer-UIHCYXBY.js} +12 -12
  240. package/dist/{renderer-36446HSH.js → renderer-WIBVOPRC.js} +6 -4
  241. package/dist/{renderer-2QPHDBZY.js → renderer-XMJ6XZGL.js} +12 -11
  242. package/dist/{renderer-TINHO2IO.js → renderer-ZTHXOBXW.js} +8 -8
  243. package/dist/{renderer-radial-WFUX3Z3C.js → renderer-radial-FC25BDCZ.js} +8 -8
  244. package/dist/{state-parser-PMNHLHLE.js → state-parser-2PQRH5JE.js} +6 -6
  245. package/dist/state-renderer-YP6HWLJR.js +43 -0
  246. package/dist/{themes-DzIH3Hjv.d.ts → themes-DoLdhUXV.d.ts} +1 -1
  247. package/docs/ai-integration.md +4 -4
  248. package/docs/language-reference.md +154 -104
  249. package/gallery/fixtures/swot-relabel.dgmo +19 -0
  250. package/gallery/fixtures/swot-tags.dgmo +16 -0
  251. package/gallery/fixtures/swot.dgmo +13 -0
  252. package/gallery/fixtures/whiteboard.dgmo +1 -0
  253. package/package.json +1 -1
  254. package/dist/chunk-6BQSDF77.js +0 -734
  255. package/dist/chunk-NWSPPGIE.js +0 -60
  256. package/dist/chunk-R2K5L4UA.js +0 -49
  257. package/dist/chunk-VBMRZCMQ.js +0 -1465
  258. package/dist/chunk-WZBZXZ6T.js +0 -636
  259. package/dist/collapse-TCVK3RPO.js +0 -8
  260. package/dist/dgmo-router-6YLKM6WU.js +0 -101
  261. package/dist/dimensions-DS6FWLRY.js +0 -21
  262. package/dist/layout-D4L44NRG.js +0 -11
  263. package/dist/layout-MXHR3P35.js +0 -15
  264. package/dist/layout-ND26WVX2.js +0 -15
  265. package/dist/layout-VDCJOZSH.js +0 -11
  266. package/dist/parser-PEZ7RN43.js +0 -14
  267. package/dist/parser-YHDGKPZI.js +0 -14
  268. package/dist/renderer-4VGO27EE.js +0 -41
  269. package/dist/renderer-6BDK47V6.js +0 -30
  270. package/dist/renderer-ISQJ2ELA.js +0 -25
  271. package/dist/renderer-KJ3V5BYP.js +0 -26
  272. package/dist/renderer-O6RP52CQ.js +0 -22
  273. package/dist/renderer-P3WR7TKD.js +0 -39
  274. package/dist/renderer-UGW4N2W5.js +0 -28
  275. package/dist/renderer-WPN2SXGT.js +0 -29
  276. package/dist/renderer-XDX6S7OV.js +0 -30
  277. package/dist/renderer-ZV6KCLCL.js +0 -85
  278. package/dist/state-renderer-JQ5DS66J.js +0 -42
  279. package/gallery/fixtures/sketch.dgmo +0 -22
@@ -94,6 +94,10 @@ var chartTypesData = [
94
94
  id: "kanban",
95
95
  description: "Task board columns"
96
96
  },
97
+ {
98
+ id: "swot",
99
+ description: "SWOT analysis: strengths, weaknesses, opportunities and threats in four fixed panels on helpful/harmful and internal/external axes"
100
+ },
97
101
  {
98
102
  id: "raci",
99
103
  description: "Tasks \xD7 roles responsibility matrix with constraint linting"
@@ -130,14 +134,9 @@ var chartTypesData = [
130
134
  id: "block",
131
135
  description: "Block diagram: an author-controlled grid of rectangular blocks with nested, collapsible containers \u2014 system/hardware/architecture layouts where the 2-D arrangement is the meaning"
132
136
  },
133
- {
134
- id: "sketch",
135
- description: "GUI-first constrained canvas: uniformly-sized shapes placed freely on a snap grid, arrows between them, meaning through tags \u2014 the markup is generated by the canvas editor",
136
- beta: true
137
- },
138
137
  {
139
138
  id: "whiteboard",
140
- description: "Free-form whiteboard on an infinite canvas: rectangles, ellipses, databases, queues, free arrows, text, pasted images and freehand ink at pixel positions \u2014 drawn in the canvas; AI writes shapes, arrows and text, never ink",
139
+ description: "Free-form whiteboard on an infinite canvas: rectangles, ellipses, databases, queues, files, free arrows, text, pasted images and freehand ink at pixel positions \u2014 drawn in the canvas; AI writes shapes, arrows and text, never ink",
141
140
  beta: true
142
141
  },
143
142
  {
@@ -248,6 +247,9 @@ var chartTypes = chartTypesData;
248
247
  var CHART_TYPE_IDS = chartTypesData.map(
249
248
  (c) => c.id
250
249
  );
250
+ var RETIRED_CHART_TYPES = {
251
+ sketch: "whiteboard"
252
+ };
251
253
 
252
254
  // src/directives-registry.ts
253
255
  var DIRECTIVES_REGISTRY = [
@@ -255,9 +257,21 @@ var DIRECTIVES_REGISTRY = [
255
257
  // Accepted in every date-bearing chart (gantt, pert, countdown, timeline,
256
258
  // event-line). Handled inline by each parser's prescan — no parser-Set
257
259
  // membership here — so they only contribute highlighting (DIRECTIVE_KEYWORDS).
258
- { token: "year", category: "directive" },
259
- { token: "date-order", category: "directive" },
260
- { token: "no-current-year", category: "directive" },
260
+ {
261
+ token: "year",
262
+ category: "directive",
263
+ chartTypes: ["countdown", "event-line", "gantt", "pert", "timeline"]
264
+ },
265
+ {
266
+ token: "date-order",
267
+ category: "directive",
268
+ chartTypes: ["countdown", "event-line", "gantt", "pert", "timeline"]
269
+ },
270
+ {
271
+ token: "no-current-year",
272
+ category: "directive",
273
+ chartTypes: ["countdown", "event-line", "gantt", "pert", "timeline"]
274
+ },
261
275
  // ── Infra ────────────────────────────────────────────────
262
276
  // Top-level SLO options that are ALSO accepted as node colon-properties
263
277
  // (dual membership). Highlight bare (kept in DIRECTIVE_KEYWORDS) — their
@@ -265,92 +279,413 @@ var DIRECTIVES_REGISTRY = [
265
279
  {
266
280
  token: "slo-availability",
267
281
  category: "directive",
268
- infra: ["top-level", "behavior"]
282
+ infra: ["top-level", "behavior"],
283
+ chartTypes: ["infra"]
269
284
  },
270
285
  {
271
286
  token: "slo-p90-latency-ms",
272
287
  category: "directive",
273
- infra: ["top-level", "behavior"]
288
+ infra: ["top-level", "behavior"],
289
+ chartTypes: ["infra"]
274
290
  },
275
291
  {
276
292
  token: "slo-warning-margin",
277
293
  category: "directive",
278
- infra: ["top-level", "behavior"]
294
+ infra: ["top-level", "behavior"],
295
+ chartTypes: ["infra"]
279
296
  },
280
297
  // Top-level-only options (space-separated, bare).
281
- { token: "default-latency-ms", category: "directive", infra: ["top-level"] },
282
- { token: "default-uptime", category: "directive", infra: ["top-level"] },
283
- { token: "default-rps", category: "directive", infra: ["top-level"] },
298
+ {
299
+ token: "default-latency-ms",
300
+ category: "directive",
301
+ infra: ["top-level"],
302
+ chartTypes: ["infra"]
303
+ },
304
+ {
305
+ token: "default-uptime",
306
+ category: "directive",
307
+ infra: ["top-level"],
308
+ chartTypes: ["infra"]
309
+ },
310
+ {
311
+ token: "default-rps",
312
+ category: "directive",
313
+ infra: ["top-level"],
314
+ chartTypes: ["infra"]
315
+ },
284
316
  // `active-tag` is shared with gantt + map (see below).
285
317
  // Node behavior colon-keys — highlight as propertyName.
286
- { token: "latency-ms", colonKey: true, infra: ["behavior"] },
287
- { token: "uptime", colonKey: true, infra: ["behavior"] },
288
- { token: "instances", colonKey: true, infra: ["behavior"] },
289
- { token: "max-rps", colonKey: true, infra: ["behavior"] },
290
- { token: "cache-hit", colonKey: true, infra: ["behavior"] },
291
- { token: "firewall-block", colonKey: true, infra: ["behavior"] },
292
- { token: "ratelimit-rps", colonKey: true, infra: ["behavior"] },
293
- { token: "buffer", colonKey: true, infra: ["behavior"] },
294
- { token: "drain-rate", colonKey: true, infra: ["behavior"] },
295
- { token: "retention-hours", colonKey: true, infra: ["behavior"] },
296
- { token: "partitions", colonKey: true, infra: ["behavior"] },
297
- { token: "concurrency", colonKey: true, infra: ["behavior"] },
298
- { token: "duration-ms", colonKey: true, infra: ["behavior"] },
299
- { token: "cold-start-ms", colonKey: true, infra: ["behavior"] },
300
- { token: "cb-error-threshold", colonKey: true, infra: ["behavior"] },
301
- { token: "cb-latency-threshold-ms", colonKey: true, infra: ["behavior"] },
318
+ {
319
+ token: "latency-ms",
320
+ colonKey: true,
321
+ infra: ["behavior"],
322
+ chartTypes: ["infra"]
323
+ },
324
+ {
325
+ token: "uptime",
326
+ colonKey: true,
327
+ infra: ["behavior"],
328
+ chartTypes: ["infra"]
329
+ },
330
+ {
331
+ token: "instances",
332
+ colonKey: true,
333
+ infra: ["behavior"],
334
+ chartTypes: ["infra"]
335
+ },
336
+ {
337
+ token: "max-rps",
338
+ colonKey: true,
339
+ infra: ["behavior"],
340
+ chartTypes: ["infra"]
341
+ },
342
+ {
343
+ token: "cache-hit",
344
+ colonKey: true,
345
+ infra: ["behavior"],
346
+ chartTypes: ["infra"]
347
+ },
348
+ {
349
+ token: "firewall-block",
350
+ colonKey: true,
351
+ infra: ["behavior"],
352
+ chartTypes: ["infra"]
353
+ },
354
+ {
355
+ token: "ratelimit-rps",
356
+ colonKey: true,
357
+ infra: ["behavior"],
358
+ chartTypes: ["infra"]
359
+ },
360
+ {
361
+ token: "buffer",
362
+ colonKey: true,
363
+ infra: ["behavior"],
364
+ chartTypes: ["infra"]
365
+ },
366
+ {
367
+ token: "drain-rate",
368
+ colonKey: true,
369
+ infra: ["behavior"],
370
+ chartTypes: ["infra"]
371
+ },
372
+ {
373
+ token: "retention-hours",
374
+ colonKey: true,
375
+ infra: ["behavior"],
376
+ chartTypes: ["infra"]
377
+ },
378
+ {
379
+ token: "partitions",
380
+ colonKey: true,
381
+ infra: ["behavior"],
382
+ chartTypes: ["infra"]
383
+ },
384
+ {
385
+ token: "concurrency",
386
+ colonKey: true,
387
+ infra: ["behavior"],
388
+ chartTypes: ["infra"]
389
+ },
390
+ {
391
+ token: "duration-ms",
392
+ colonKey: true,
393
+ infra: ["behavior"],
394
+ chartTypes: ["infra"]
395
+ },
396
+ {
397
+ token: "cold-start-ms",
398
+ colonKey: true,
399
+ infra: ["behavior"],
400
+ chartTypes: ["infra"]
401
+ },
402
+ {
403
+ token: "cb-error-threshold",
404
+ colonKey: true,
405
+ infra: ["behavior"],
406
+ chartTypes: ["infra"]
407
+ },
408
+ {
409
+ token: "cb-latency-threshold-ms",
410
+ colonKey: true,
411
+ infra: ["behavior"],
412
+ chartTypes: ["infra"]
413
+ },
302
414
  // Edge-only colon-key.
303
- { token: "rps", colonKey: true, infra: ["edge"] },
415
+ { token: "rps", colonKey: true, infra: ["edge"], chartTypes: ["infra"] },
304
416
  // ── Gantt ────────────────────────────────────────────────
305
- { token: "start", category: "directive", gantt: ["option"] },
417
+ {
418
+ token: "start",
419
+ category: "directive",
420
+ gantt: ["option"],
421
+ chartTypes: ["gantt"]
422
+ },
306
423
  {
307
424
  token: "today-marker",
308
425
  category: "directive",
309
- gantt: ["option", "boolean"]
426
+ gantt: ["option", "boolean"],
427
+ chartTypes: ["gantt"]
310
428
  },
311
429
  {
312
430
  token: "critical-path",
313
431
  category: "directive",
314
- gantt: ["option", "boolean"]
315
- },
316
- { token: "sprint-length", category: "directive", gantt: ["option"] },
317
- { token: "sprint-number", category: "directive", gantt: ["option"] },
318
- { token: "sprint-start", category: "directive", gantt: ["option"] },
319
- { token: "fill-tint", category: "directive", gantt: ["boolean"] },
320
- { token: "fill-solid", category: "directive", gantt: ["boolean"] },
321
- { token: "fill-outline", category: "directive", gantt: ["boolean"] },
432
+ gantt: ["option", "boolean"],
433
+ chartTypes: ["gantt"]
434
+ },
435
+ {
436
+ token: "sprint-length",
437
+ category: "directive",
438
+ gantt: ["option"],
439
+ chartTypes: ["gantt", "pert"]
440
+ },
441
+ {
442
+ token: "sprint-number",
443
+ category: "directive",
444
+ gantt: ["option"],
445
+ chartTypes: ["gantt", "pert"]
446
+ },
447
+ {
448
+ token: "sprint-start",
449
+ category: "directive",
450
+ gantt: ["option"],
451
+ chartTypes: ["gantt", "pert"]
452
+ },
453
+ {
454
+ token: "fill-tint",
455
+ category: "directive",
456
+ gantt: ["boolean"],
457
+ chartTypes: [
458
+ "arc",
459
+ "bar",
460
+ "block",
461
+ "body",
462
+ "boxes-and-lines",
463
+ "bracket",
464
+ "c4",
465
+ "class",
466
+ "clock",
467
+ "countdown",
468
+ "cycle",
469
+ "er",
470
+ "event-line",
471
+ "family",
472
+ "flowchart",
473
+ "funnel",
474
+ "gantt",
475
+ "goal",
476
+ "heatmap",
477
+ "journey-map",
478
+ "kanban",
479
+ "line",
480
+ "mindmap",
481
+ "org",
482
+ "pert",
483
+ "pie",
484
+ "polar-area",
485
+ "pyramid",
486
+ "quadrant",
487
+ "raci",
488
+ "radar",
489
+ "ring",
490
+ "scatter",
491
+ "sequence",
492
+ "sitemap",
493
+ "state",
494
+ "swimlane",
495
+ "timeline",
496
+ "treemap",
497
+ "venn",
498
+ "wireframe"
499
+ ]
500
+ },
501
+ {
502
+ token: "fill-solid",
503
+ category: "directive",
504
+ gantt: ["boolean"],
505
+ chartTypes: [
506
+ "arc",
507
+ "bar",
508
+ "block",
509
+ "body",
510
+ "boxes-and-lines",
511
+ "bracket",
512
+ "c4",
513
+ "class",
514
+ "clock",
515
+ "countdown",
516
+ "cycle",
517
+ "er",
518
+ "event-line",
519
+ "family",
520
+ "flowchart",
521
+ "funnel",
522
+ "gantt",
523
+ "goal",
524
+ "heatmap",
525
+ "journey-map",
526
+ "kanban",
527
+ "line",
528
+ "mindmap",
529
+ "org",
530
+ "pert",
531
+ "pie",
532
+ "polar-area",
533
+ "pyramid",
534
+ "quadrant",
535
+ "raci",
536
+ "radar",
537
+ "ring",
538
+ "scatter",
539
+ "sequence",
540
+ "sitemap",
541
+ "state",
542
+ "swimlane",
543
+ "timeline",
544
+ "treemap",
545
+ "venn",
546
+ "wireframe"
547
+ ]
548
+ },
549
+ {
550
+ token: "fill-outline",
551
+ category: "directive",
552
+ gantt: ["boolean"],
553
+ chartTypes: [
554
+ "arc",
555
+ "bar",
556
+ "block",
557
+ "body",
558
+ "boxes-and-lines",
559
+ "bracket",
560
+ "c4",
561
+ "class",
562
+ "clock",
563
+ "countdown",
564
+ "cycle",
565
+ "er",
566
+ "event-line",
567
+ "family",
568
+ "flowchart",
569
+ "funnel",
570
+ "gantt",
571
+ "goal",
572
+ "heatmap",
573
+ "journey-map",
574
+ "kanban",
575
+ "line",
576
+ "mindmap",
577
+ "org",
578
+ "pert",
579
+ "pie",
580
+ "polar-area",
581
+ "pyramid",
582
+ "quadrant",
583
+ "raci",
584
+ "radar",
585
+ "ring",
586
+ "scatter",
587
+ "sequence",
588
+ "sitemap",
589
+ "state",
590
+ "swimlane",
591
+ "timeline",
592
+ "treemap",
593
+ "venn",
594
+ "wireframe"
595
+ ]
596
+ },
322
597
  // `chart` is a wireframe element keyword (CONTROL); gantt also accepts it as
323
598
  // an option. Highlight family is control.
324
- { token: "chart", category: "control", gantt: ["option"] },
599
+ {
600
+ token: "chart",
601
+ category: "control",
602
+ gantt: ["option"],
603
+ chartTypes: ["gantt", "wireframe"]
604
+ },
325
605
  // `dependencies` is ON by default → almost never written bare (authors write
326
606
  // `no-dependencies`, which DOES highlight). Bare word collides with prose and
327
- // the specializer is context-free, so it stays plain. Present for parser
328
- // Set derivation only.
329
- { token: "dependencies", noHighlight: true, gantt: ["option", "boolean"] },
607
+ // it would colour in every gantt task name, so it stays plain. Present for
608
+ // parser Set derivation only.
609
+ {
610
+ token: "dependencies",
611
+ noHighlight: true,
612
+ gantt: ["option", "boolean"],
613
+ chartTypes: ["gantt"]
614
+ },
330
615
  // ── Map ──────────────────────────────────────────────────
331
616
  // Per-element value→channel ramps (decision #20): the directive names the
332
617
  // visual channel — `region-heat` (colour), `poi-size` (marker area),
333
618
  // `flow-width` (stroke). The per-element key mirrors it (`heat:`/`size:`/`width:`).
334
- { token: "region-heat", category: "directive", map: true },
335
- { token: "poi-size", category: "directive", map: true },
336
- { token: "flow-width", category: "directive", map: true },
337
- { token: "locale", category: "directive", map: true },
338
- { token: "caption", category: "directive", map: true },
339
- { token: "no-coastline", category: "directive", map: true },
340
- { token: "no-relief", category: "directive", map: true },
341
- { token: "no-context-labels", category: "directive", map: true },
342
- { token: "no-region-labels", category: "directive", map: true },
343
- { token: "no-region-heat-value", category: "directive", map: true },
344
- { token: "no-poi-labels", category: "directive", map: true },
345
- { token: "no-colorize", category: "directive", map: true },
346
- { token: "no-cities", category: "directive", map: true },
347
- { token: "no-cluster-pois", category: "directive", map: true },
619
+ {
620
+ token: "region-heat",
621
+ category: "directive",
622
+ map: true,
623
+ chartTypes: ["map"]
624
+ },
625
+ { token: "poi-size", category: "directive", map: true, chartTypes: ["map"] },
626
+ {
627
+ token: "flow-width",
628
+ category: "directive",
629
+ map: true,
630
+ chartTypes: ["map"]
631
+ },
632
+ { token: "locale", category: "directive", map: true, chartTypes: ["map"] },
633
+ { token: "caption", category: "directive", map: true, chartTypes: ["map"] },
634
+ {
635
+ token: "no-coastline",
636
+ category: "directive",
637
+ map: true,
638
+ chartTypes: ["map"]
639
+ },
640
+ { token: "no-relief", category: "directive", map: true, chartTypes: ["map"] },
641
+ {
642
+ token: "no-context-labels",
643
+ category: "directive",
644
+ map: true,
645
+ chartTypes: ["map"]
646
+ },
647
+ {
648
+ token: "no-region-labels",
649
+ category: "directive",
650
+ map: true,
651
+ chartTypes: ["map"]
652
+ },
653
+ {
654
+ token: "no-region-heat-value",
655
+ category: "directive",
656
+ map: true,
657
+ chartTypes: ["map"]
658
+ },
659
+ {
660
+ token: "no-poi-labels",
661
+ category: "directive",
662
+ map: true,
663
+ chartTypes: ["map"]
664
+ },
665
+ {
666
+ token: "no-colorize",
667
+ category: "directive",
668
+ map: true,
669
+ chartTypes: ["map"]
670
+ },
671
+ { token: "no-cities", category: "directive", map: true, chartTypes: ["map"] },
672
+ {
673
+ token: "no-cluster-pois",
674
+ category: "directive",
675
+ map: true,
676
+ chartTypes: ["map"]
677
+ },
348
678
  // ── Clock channel (BL-122): live local-time cards on POIs flagged `clock` ──
349
679
  // Activation is the per-POI `clock` flag (peeled in the map parser, not a
350
680
  // directive). `hours 9-17` / `days mon-fri` are the global availability
351
681
  // window (reused verbatim from the clock chart type).
352
- { token: "hours", category: "directive", map: true },
353
- { token: "days", category: "directive", map: true },
682
+ {
683
+ token: "hours",
684
+ category: "directive",
685
+ map: true,
686
+ chartTypes: ["clock", "map"]
687
+ },
688
+ { token: "days", category: "directive", map: true, chartTypes: ["map"] },
354
689
  // ── Shared across types ──────────────────────────────────
355
690
  // `active-tag`: infra top-level option + gantt option + map directive.
356
691
  // Treemap also accepts it (§24C.6, decision #48) — validated inline in its
@@ -361,24 +696,74 @@ var DIRECTIVES_REGISTRY = [
361
696
  category: "directive",
362
697
  infra: ["top-level"],
363
698
  gantt: ["option"],
364
- map: true
699
+ map: true,
700
+ chartTypes: [
701
+ "body",
702
+ "boxes-and-lines",
703
+ "c4",
704
+ "er",
705
+ "event-line",
706
+ "family",
707
+ "gantt",
708
+ "infra",
709
+ "journey-map",
710
+ "kanban",
711
+ "map",
712
+ "mindmap",
713
+ "org",
714
+ "pert",
715
+ "sequence",
716
+ "sitemap",
717
+ "state",
718
+ "swimlane",
719
+ "timeline",
720
+ "treemap",
721
+ "wireframe"
722
+ ]
365
723
  },
366
724
  // `title`: gantt option. (The data-chart `title` directive was removed in
367
725
  // decision #48 — it now raises E_TITLE_DIRECTIVE; the token stays here for
368
726
  // gantt.)
369
- { token: "title", category: "directive", gantt: ["option"] },
727
+ {
728
+ token: "title",
729
+ category: "directive",
730
+ gantt: ["option"],
731
+ chartTypes: ["gantt"]
732
+ },
370
733
  // `sort`: gantt option (also general, hand-listed).
371
- { token: "sort", category: "directive", gantt: ["option"] },
734
+ {
735
+ token: "sort",
736
+ category: "directive",
737
+ gantt: ["option"],
738
+ chartTypes: "all"
739
+ },
372
740
  // `lane-by <group>`: swimlane axis (view-state). NB not `swimlane` — that's a
373
741
  // chart type. Kanban reads it via its own KNOWN_OPTIONS; gantt via the switch.
374
- { token: "lane-by", category: "directive", gantt: ["option"] },
742
+ {
743
+ token: "lane-by",
744
+ category: "directive",
745
+ gantt: ["option"],
746
+ chartTypes: "all"
747
+ },
375
748
  // `no-title`: gantt boolean + map directive (also general, hand-listed).
376
- { token: "no-title", category: "directive", gantt: ["boolean"], map: true },
749
+ {
750
+ token: "no-title",
751
+ category: "directive",
752
+ gantt: ["boolean"],
753
+ map: true,
754
+ chartTypes: "all"
755
+ },
377
756
  // `no-legend`: universal (decision #48) — every chart that renders a legend
378
757
  // accepts it, and charts without one take it as a harmless no-op. Parsed for
379
758
  // most types via GLOBAL_BOOLEANS in utils/parsing; gantt derives its boolean
380
759
  // Set from here, and map from `map: true`.
381
- { token: "no-legend", category: "directive", gantt: ["boolean"], map: true },
760
+ {
761
+ token: "no-legend",
762
+ category: "directive",
763
+ gantt: ["boolean"],
764
+ map: true,
765
+ chartTypes: "all"
766
+ },
382
767
  // `legend-inline`: universal §1.9 boolean (decision #50) — the top-center-
383
768
  // legend data charts (bar/line/radar/scatter/function) render the title and
384
769
  // legend on one line; every other chart accepts it as a harmless no-op.
@@ -386,7 +771,8 @@ var DIRECTIVES_REGISTRY = [
386
771
  token: "legend-inline",
387
772
  category: "directive",
388
773
  gantt: ["boolean"],
389
- map: true
774
+ map: true,
775
+ chartTypes: "all"
390
776
  },
391
777
  // ══════════════════════════════════════════════════════════
392
778
  // Highlight-only vocab (no extractable parser Set).
@@ -396,40 +782,69 @@ var DIRECTIVES_REGISTRY = [
396
782
  // simply their single declaration site for highlighting. Grouped by chart
397
783
  // type. Categories route to the specializer-read sets in keywords.ts.
398
784
  // ── Gantt (extras beyond the option/boolean Sets) ────────
399
- { token: "era", category: "directive" },
400
- { token: "marker", category: "directive" },
401
- { token: "holiday", category: "directive" },
785
+ {
786
+ token: "era",
787
+ category: "directive",
788
+ chartTypes: [
789
+ "bar",
790
+ "gantt",
791
+ "line",
792
+ "pie",
793
+ "polar-area",
794
+ "radar",
795
+ "timeline"
796
+ ]
797
+ },
798
+ { token: "marker", category: "directive", chartTypes: ["gantt", "timeline"] },
799
+ { token: "holiday", category: "directive", chartTypes: ["gantt"] },
402
800
  // `workweek` is also the canonical weekday-window directive on clock and map
403
801
  // clock-cards (decision #48; `days` stays as the legacy alias).
404
- { token: "workweek", category: "directive", map: true },
405
- { token: "no-dependencies", category: "directive" },
802
+ {
803
+ token: "workweek",
804
+ category: "directive",
805
+ map: true,
806
+ chartTypes: ["clock", "gantt", "map"]
807
+ },
808
+ { token: "no-dependencies", category: "directive", chartTypes: ["gantt"] },
406
809
  // ── Tech-radar ───────────────────────────────────────────
407
- { token: "rings", category: "directive" },
810
+ { token: "rings", category: "directive", chartTypes: ["tech-radar"] },
408
811
  // Blip listing is default-on everywhere (decision #48): `no-blip-legend`
409
812
  // suppresses it; `show-blip-legend` stays as the parse-accepted legacy no-op.
410
- { token: "no-blip-legend", category: "directive" },
411
- { token: "show-blip-legend", category: "directive" },
412
- { token: "trend", category: "directive" },
813
+ {
814
+ token: "no-blip-legend",
815
+ category: "directive",
816
+ chartTypes: ["tech-radar"]
817
+ },
818
+ {
819
+ token: "show-blip-legend",
820
+ category: "directive",
821
+ chartTypes: ["tech-radar"]
822
+ },
823
+ { token: "trend", category: "directive", chartTypes: ["tech-radar"] },
413
824
  // ── Tags / shared directives ─────────────────────────────
414
- { token: "tags", category: "directive" },
415
- { token: "import", category: "directive" },
416
- { token: "hide", category: "directive" },
825
+ { token: "tags", category: "directive", chartTypes: "all" },
826
+ { token: "import", category: "directive", chartTypes: "all" },
827
+ {
828
+ token: "hide",
829
+ category: "directive",
830
+ chartTypes: ["boxes-and-lines", "kanban", "org"]
831
+ },
417
832
  // `focus <name>`: org subtree drill-down (view-state, source-backed) — the
418
833
  // export re-roots to that person/team with the ancestor breadcrumb trail.
419
834
  // Org reads it via its own KNOWN_OPTIONS; registered here for highlighting.
420
- { token: "focus", category: "directive" },
421
- { token: "direction", category: "directive" },
835
+ { token: "focus", category: "directive", chartTypes: ["org"] },
836
+ { token: "direction", category: "directive", chartTypes: "all" },
422
837
  // ── Clock ────────────────────────────────────────────────
423
838
  // The board's flat directives — highlight-only (the parser validates them
424
839
  // inline, no extractable Set). `no-title` + `direction` are already listed
425
840
  // above (shared). Values (analog is a bare flag; color-by's
426
841
  // place|work|daylight|time|none) highlight as plain tokens.
427
- { token: "analog", category: "directive" },
428
- { token: "hours", category: "directive" },
429
- { token: "days", category: "directive" },
430
- { token: "no-sun", category: "directive" },
431
- { token: "time-24", category: "directive" },
432
- { token: "color-by", category: "directive" },
842
+ { token: "analog", category: "directive", chartTypes: ["clock"] },
843
+ { token: "hours", category: "directive", chartTypes: ["clock"] },
844
+ { token: "days", category: "directive", chartTypes: ["clock"] },
845
+ { token: "no-sun", category: "directive", chartTypes: ["clock"] },
846
+ { token: "time-24", category: "directive", chartTypes: ["clock"] },
847
+ { token: "color-by", category: "directive", chartTypes: ["clock"] },
433
848
  // ── Boxes-and-lines ──────────────────────────────────────
434
849
  // `heat <Label> [low] [high]` is the value→colour ramp directive, but `heat`
435
850
  // is NOT registered as a directive keyword: it is dual-use with the `heat:`
@@ -439,72 +854,186 @@ var DIRECTIVES_REGISTRY = [
439
854
  // as a property in both positions — exactly the treemap `heat` precedent.
440
855
  // Box values render by default since decision #48; `show-values` stays as
441
856
  // the parse-accepted legacy no-op (suppress with the shared `no-value`).
442
- { token: "show-values", category: "directive" },
857
+ {
858
+ token: "show-values",
859
+ category: "directive",
860
+ chartTypes: ["boxes-and-lines"]
861
+ },
443
862
  // Treemap's legacy plural spelling of the same suppression (decision #48
444
863
  // made the shared singular `no-value` canonical). Registered so a legacy
445
864
  // document still highlights it as a directive rather than plain text.
446
- { token: "no-values", category: "directive" },
865
+ { token: "no-values", category: "directive", chartTypes: ["treemap"] },
447
866
  // ── Swimlane ─────────────────────────────────────────────
448
- { token: "lane", category: "directive" },
867
+ { token: "lane", category: "directive", chartTypes: ["swimlane"] },
449
868
  // ── ER ───────────────────────────────────────────────────
450
- { token: "notation", category: "directive" },
869
+ { token: "notation", category: "directive", chartTypes: ["er"] },
451
870
  // ── Class ────────────────────────────────────────────────
452
- { token: "extends", category: "directive" },
453
- { token: "implements", category: "directive" },
454
- { token: "abstract", category: "directive" },
455
- { token: "interface", category: "directive" },
456
- { token: "enum", category: "directive" },
871
+ { token: "extends", category: "directive", chartTypes: ["class"] },
872
+ { token: "implements", category: "directive", chartTypes: ["class"] },
873
+ { token: "abstract", category: "directive", chartTypes: ["class"] },
874
+ { token: "interface", category: "directive", chartTypes: ["class"] },
875
+ { token: "enum", category: "directive", chartTypes: ["class"] },
457
876
  // ── C4 ───────────────────────────────────────────────────
458
- { token: "containers", category: "directive" },
459
- { token: "components", category: "directive" },
460
- { token: "deployment", category: "directive" },
461
- { token: "technology", category: "directive" },
877
+ { token: "containers", category: "directive", chartTypes: ["c4"] },
878
+ { token: "components", category: "directive", chartTypes: ["c4"] },
879
+ { token: "deployment", category: "directive", chartTypes: ["c4"] },
880
+ { token: "technology", category: "directive", chartTypes: ["c4"] },
462
881
  // ── Infra (directives beyond the option/behavior Sets) ───
463
- { token: "sub-node-label", category: "directive" },
464
- { token: "show-sub-node-count", category: "directive" },
465
- { token: "animate", category: "directive" },
882
+ { token: "sub-node-label", category: "directive", chartTypes: ["org"] },
883
+ { token: "show-sub-node-count", category: "directive", chartTypes: ["org"] },
884
+ { token: "animate", category: "directive", chartTypes: ["infra"] },
466
885
  // ── Sequence ─────────────────────────────────────────────
467
- { token: "activations", category: "directive" },
468
- { token: "no-activations", category: "directive" },
469
- { token: "autonumber", category: "directive" },
886
+ { token: "activations", category: "directive", chartTypes: ["sequence"] },
887
+ { token: "no-activations", category: "directive", chartTypes: ["sequence"] },
888
+ { token: "autonumber", category: "directive", chartTypes: ["sequence"] },
470
889
  // ── Map element leaders (not in DIRECTIVE_SET) ───────────
471
- { token: "poi", category: "directive" },
472
- { token: "route", category: "directive" },
890
+ { token: "poi", category: "directive", chartTypes: ["map"] },
891
+ { token: "route", category: "directive", chartTypes: ["map"] },
473
892
  // ── Data charts ──────────────────────────────────────────
474
- { token: "stacked", category: "directive" },
475
- { token: "no-name", category: "directive" },
476
- { token: "no-value", category: "directive" },
477
- { token: "no-percent", category: "directive" },
478
- { token: "series", category: "directive" },
479
- { token: "orientation", category: "directive" },
480
- { token: "x-label", category: "directive" },
481
- { token: "y-label", category: "directive" },
482
- { token: "size-label", category: "directive" },
483
- { token: "columns", category: "directive" },
484
- { token: "rows", category: "directive" },
485
- { token: "labels", category: "directive" },
486
- { token: "rotate", category: "directive" },
487
- { token: "scale", category: "directive" },
488
- { token: "values", category: "directive" },
489
- { token: "orientation-horizontal", category: "directive" },
893
+ { token: "stacked", category: "directive", chartTypes: "all" },
894
+ {
895
+ token: "no-name",
896
+ category: "directive",
897
+ chartTypes: ["funnel", "pie", "polar-area", "scatter"]
898
+ },
899
+ {
900
+ token: "no-value",
901
+ category: "directive",
902
+ chartTypes: [
903
+ "bar",
904
+ "boxes-and-lines",
905
+ "funnel",
906
+ "goal",
907
+ "heatmap",
908
+ "line",
909
+ "pie",
910
+ "polar-area",
911
+ "radar",
912
+ "treemap"
913
+ ]
914
+ },
915
+ {
916
+ token: "no-percent",
917
+ category: "directive",
918
+ chartTypes: ["funnel", "goal", "pie", "polar-area", "treemap"]
919
+ },
920
+ {
921
+ token: "series",
922
+ category: "directive",
923
+ chartTypes: [
924
+ "bar",
925
+ "function",
926
+ "funnel",
927
+ "heatmap",
928
+ "line",
929
+ "pie",
930
+ "polar-area",
931
+ "radar",
932
+ "sankey",
933
+ "scatter"
934
+ ]
935
+ },
936
+ { token: "orientation", category: "directive", chartTypes: "all" },
937
+ {
938
+ token: "x-label",
939
+ category: "directive",
940
+ chartTypes: ["bar", "function", "line", "quadrant", "scatter"]
941
+ },
942
+ {
943
+ token: "y-label",
944
+ category: "directive",
945
+ chartTypes: ["bar", "function", "line", "quadrant", "scatter"]
946
+ },
947
+ { token: "size-label", category: "directive", chartTypes: ["scatter"] },
948
+ { token: "columns", category: "directive", chartTypes: ["block", "heatmap"] },
949
+ { token: "rows", category: "directive", chartTypes: "all" },
950
+ { token: "labels", category: "directive", chartTypes: "all" },
951
+ { token: "rotate", category: "directive", chartTypes: ["wordcloud"] },
952
+ { token: "scale", category: "directive", chartTypes: "all" },
953
+ {
954
+ token: "values",
955
+ category: "directive",
956
+ chartTypes: ["pert", "tech-radar"]
957
+ },
958
+ {
959
+ token: "orientation-horizontal",
960
+ category: "directive",
961
+ chartTypes: ["bar"]
962
+ },
490
963
  // ── Slope ────────────────────────────────────────────────
491
- { token: "period", category: "directive" },
964
+ { token: "period", category: "directive", chartTypes: "all" },
492
965
  // ── Quadrant ─────────────────────────────────────────────
493
- { token: "x-axis", category: "directive" },
494
- { token: "y-axis", category: "directive" },
495
- { token: "top-right", category: "directive" },
496
- { token: "top-left", category: "directive" },
497
- { token: "bottom-right", category: "directive" },
498
- { token: "bottom-left", category: "directive" },
966
+ { token: "x-axis", category: "directive", chartTypes: "all" },
967
+ { token: "y-axis", category: "directive", chartTypes: "all" },
968
+ {
969
+ token: "top-right",
970
+ category: "directive",
971
+ chartTypes: ["quadrant", "tech-radar"]
972
+ },
973
+ {
974
+ token: "top-left",
975
+ category: "directive",
976
+ chartTypes: ["quadrant", "tech-radar"]
977
+ },
978
+ {
979
+ token: "bottom-right",
980
+ category: "directive",
981
+ chartTypes: ["quadrant", "tech-radar"]
982
+ },
983
+ {
984
+ token: "bottom-left",
985
+ category: "directive",
986
+ chartTypes: ["quadrant", "tech-radar"]
987
+ },
499
988
  // ── Layout (cross-chart) ─────────────────────────────────
500
- { token: "direction-tb", category: "directive" },
501
- { token: "direction-lr", category: "directive" },
502
- { token: "orientation-vertical", category: "directive" },
989
+ {
990
+ token: "direction-tb",
991
+ category: "directive",
992
+ chartTypes: [
993
+ "boxes-and-lines",
994
+ "c4",
995
+ "clock",
996
+ "flowchart",
997
+ "infra",
998
+ "org",
999
+ "pert",
1000
+ "sitemap",
1001
+ "state",
1002
+ "swimlane",
1003
+ "version-control"
1004
+ ]
1005
+ },
1006
+ {
1007
+ token: "direction-lr",
1008
+ category: "directive",
1009
+ chartTypes: [
1010
+ "boxes-and-lines",
1011
+ "c4",
1012
+ "clock",
1013
+ "flowchart",
1014
+ "infra",
1015
+ "org",
1016
+ "pert",
1017
+ "sitemap",
1018
+ "state",
1019
+ "swimlane",
1020
+ "version-control"
1021
+ ]
1022
+ },
1023
+ { token: "orientation-vertical", category: "directive", chartTypes: "all" },
503
1024
  // ── Pyramid ──────────────────────────────────────────────
504
- { token: "inverted", category: "directive" },
1025
+ { token: "inverted", category: "directive", chartTypes: ["pyramid"] },
505
1026
  // ── Color / notes (cross-chart) ──────────────────────────
506
- { token: "color", category: "directive" },
507
- { token: "no-notes", category: "directive" },
1027
+ {
1028
+ token: "color",
1029
+ category: "directive",
1030
+ chartTypes: "all"
1031
+ },
1032
+ {
1033
+ token: "no-notes",
1034
+ category: "directive",
1035
+ chartTypes: ["flowchart", "goal", "state", "whiteboard"]
1036
+ },
508
1037
  // ── Emphasis family (§1.11, decision #49) ────────────────
509
1038
  // `highlight <Name>…` / `dim <Name>…` — the figure/ground axis, orthogonal
510
1039
  // to color (§1.5) and to the chart-wide `fill-*` family (§1.9). Both are
@@ -517,122 +1046,180 @@ var DIRECTIVES_REGISTRY = [
517
1046
  // tokens are registered together so the whole family lights up at once.
518
1047
  //
519
1048
  // Supported on `sankey` and `family` today; every further chart type is a
520
- // separate decision. Registering them globally is correct regardless: the
521
- // Lezer specializer is context-free (it cannot know the chart type), and the
522
- // same is already true of every other chart-scoped token here.
523
- { token: "highlight", category: "directive" },
524
- { token: "dim", category: "directive" },
1049
+ // separate decision, made by adding it to `chartTypes` below (#1734).
1050
+ {
1051
+ token: "highlight",
1052
+ category: "directive",
1053
+ chartTypes: ["family", "sankey"]
1054
+ },
1055
+ { token: "dim", category: "directive", chartTypes: ["family", "sankey"] },
525
1056
  // ── RACI ─────────────────────────────────────────────────
526
- { token: "roles", category: "directive" },
1057
+ { token: "roles", category: "directive", chartTypes: ["raci"] },
527
1058
  // ── Cycle ────────────────────────────────────────────────
528
- { token: "direction-counterclockwise", category: "directive" },
529
- { token: "circle-nodes", category: "directive" },
1059
+ {
1060
+ token: "direction-counterclockwise",
1061
+ category: "directive",
1062
+ chartTypes: ["cycle"]
1063
+ },
1064
+ { token: "circle-nodes", category: "directive", chartTypes: ["cycle"] },
530
1065
  // ── Journey-map ──────────────────────────────────────────
531
- { token: "persona", category: "directive" },
1066
+ { token: "persona", category: "directive", chartTypes: ["journey-map"] },
532
1067
  // ── Function ─────────────────────────────────────────────
533
- { token: "x", category: "directive" },
534
- { token: "fill", category: "directive" },
1068
+ { token: "x", category: "directive", chartTypes: ["function"] },
1069
+ {
1070
+ token: "fill",
1071
+ category: "directive",
1072
+ chartTypes: ["function", "line", "whiteboard"]
1073
+ },
535
1074
  // ── Wordcloud ────────────────────────────────────────────
536
- { token: "max", category: "directive" },
537
- { token: "size", category: "directive" },
1075
+ { token: "max", category: "directive", chartTypes: ["wordcloud"] },
1076
+ {
1077
+ token: "size",
1078
+ category: "directive",
1079
+ chartTypes: ["whiteboard", "wordcloud"]
1080
+ },
538
1081
  // ── Arc ──────────────────────────────────────────────────
539
- { token: "order", category: "directive" },
1082
+ { token: "order", category: "directive", chartTypes: ["arc"] },
540
1083
  // ── PERT ─────────────────────────────────────────────────
541
- { token: "time-unit", category: "directive" },
542
- { token: "default-confidence", category: "directive" },
543
- { token: "node-detail", category: "directive" },
544
- { token: "trials", category: "directive" },
545
- { token: "seed", category: "directive" },
546
- { token: "scrubber-trials", category: "directive" },
1084
+ { token: "time-unit", category: "directive", chartTypes: ["pert"] },
1085
+ { token: "default-confidence", category: "directive", chartTypes: ["pert"] },
1086
+ { token: "node-detail", category: "directive", chartTypes: ["pert"] },
1087
+ { token: "trials", category: "directive", chartTypes: ["pert"] },
1088
+ { token: "seed", category: "directive", chartTypes: ["bracket", "pert"] },
1089
+ { token: "scrubber-trials", category: "directive", chartTypes: ["pert"] },
547
1090
  // `start-date` is also gantt's canonical project-start option (decision #48;
548
1091
  // bare `start` above stays as the legacy alias).
549
- { token: "start-date", category: "directive", gantt: ["option"] },
550
- { token: "end-date", category: "directive" },
1092
+ {
1093
+ token: "start-date",
1094
+ category: "directive",
1095
+ gantt: ["option"],
1096
+ chartTypes: ["gantt", "pert"]
1097
+ },
1098
+ { token: "end-date", category: "directive", chartTypes: ["pert"] },
551
1099
  // ── Goal ─────────────────────────────────────────────────
552
1100
  // Mode flags, value-key leaders, and opt-outs. `now`/`target` collide with
553
1101
  // label prose ("start now", "on target"), but the arrow-label demotion pass
554
1102
  // (see highlight-api LABEL_WORD_NODES) treats any keyword-bearing label as
555
1103
  // text and demotes them, so they highlight only as line leaders.
556
- { token: "thermometer", category: "directive" },
557
- { token: "gauge", category: "directive" },
558
- { token: "now", category: "directive" },
559
- { token: "target", category: "directive" },
560
- { token: "no-note", category: "directive" },
561
- { token: "no-auto-color", category: "directive" },
1104
+ { token: "thermometer", category: "directive", chartTypes: ["goal"] },
1105
+ { token: "gauge", category: "directive", chartTypes: ["goal"] },
1106
+ {
1107
+ token: "now",
1108
+ category: "directive",
1109
+ chartTypes: ["event-line", "goal", "pert"]
1110
+ },
1111
+ { token: "target", category: "directive", chartTypes: ["countdown", "goal"] },
1112
+ { token: "no-note", category: "directive", chartTypes: ["goal"] },
1113
+ { token: "no-auto-color", category: "directive", chartTypes: ["goal"] },
562
1114
  // ── Control-flow + wireframe element keywords (CONTROL) ──
563
- { token: "if", category: "control" },
564
- { token: "else", category: "control" },
565
- { token: "loop", category: "control" },
566
- { token: "parallel", category: "control" },
567
- { token: "note", category: "control" },
568
- { token: "nav", category: "control" },
569
- { token: "tabs", category: "control" },
570
- { token: "table", category: "control" },
571
- { token: "image", category: "control" },
572
- { token: "modal", category: "control" },
573
- { token: "skeleton", category: "control" },
574
- { token: "alert", category: "control" },
575
- { token: "progress", category: "control" },
576
- { token: "mobile", category: "control" },
1115
+ { token: "if", category: "control", chartTypes: ["sequence"] },
1116
+ { token: "else", category: "control", chartTypes: ["sequence"] },
1117
+ { token: "loop", category: "control", chartTypes: ["sequence"] },
1118
+ { token: "parallel", category: "control", chartTypes: ["gantt", "sequence"] },
1119
+ {
1120
+ token: "note",
1121
+ category: "control",
1122
+ chartTypes: [
1123
+ "boxes-and-lines",
1124
+ "class",
1125
+ "countdown",
1126
+ "er",
1127
+ "flowchart",
1128
+ "goal",
1129
+ "sequence",
1130
+ "state",
1131
+ "swimlane",
1132
+ "version-control",
1133
+ "whiteboard"
1134
+ ]
1135
+ },
1136
+ { token: "nav", category: "control", chartTypes: ["wireframe"] },
1137
+ { token: "tabs", category: "control", chartTypes: ["wireframe"] },
1138
+ { token: "table", category: "control", chartTypes: ["wireframe"] },
1139
+ {
1140
+ token: "image",
1141
+ category: "control",
1142
+ chartTypes: ["whiteboard", "wireframe"]
1143
+ },
1144
+ { token: "modal", category: "control", chartTypes: ["wireframe"] },
1145
+ { token: "skeleton", category: "control", chartTypes: ["wireframe"] },
1146
+ { token: "alert", category: "control", chartTypes: ["wireframe"] },
1147
+ {
1148
+ token: "progress",
1149
+ category: "control",
1150
+ chartTypes: ["gantt", "wireframe"]
1151
+ },
1152
+ { token: "mobile", category: "control", chartTypes: ["wireframe"] },
577
1153
  // Whiteboard element leaders (§39). `image` is shared with wireframe above
578
1154
  // and `text` stays an ER modifier; `database` / `queue` are left plain
579
- // because sketch and sequence use them as values, not line leaders.
580
- { token: "rectangle", category: "control" },
581
- { token: "ellipse", category: "control" },
582
- { token: "arrow", category: "control" },
583
- { token: "ink", category: "control" },
1155
+ // because sequence uses them as values, not line leaders.
1156
+ { token: "rectangle", category: "control", chartTypes: ["whiteboard"] },
1157
+ { token: "ellipse", category: "control", chartTypes: ["whiteboard"] },
1158
+ { token: "arrow", category: "control", chartTypes: ["whiteboard"] },
1159
+ { token: "ink", category: "control", chartTypes: ["whiteboard"] },
1160
+ // ── SWOT section keywords (CONTROL) ──────────────────────
1161
+ { token: "strengths", category: "control", chartTypes: ["swot"] },
1162
+ { token: "weaknesses", category: "control", chartTypes: ["swot"] },
1163
+ { token: "opportunities", category: "control", chartTypes: ["swot"] },
1164
+ { token: "threats", category: "control", chartTypes: ["swot"] },
1165
+ { token: "no-axes", category: "directive", chartTypes: ["swot"] },
1166
+ { token: "no-tint-items", category: "directive", chartTypes: ["swot"] },
584
1167
  // ── Kanban status keywords (STATUS) ──────────────────────
585
- { token: "na", category: "status" },
586
- { token: "todo", category: "status" },
587
- { token: "wip", category: "status" },
588
- { token: "done", category: "status" },
589
- { token: "blocked", category: "status" },
590
- { token: "in-progress", category: "status" },
591
- { token: "backlog", category: "status" },
592
- { token: "ready", category: "status" },
1168
+ { token: "na", category: "status", chartTypes: ["kanban"] },
1169
+ { token: "todo", category: "status", chartTypes: ["kanban"] },
1170
+ { token: "wip", category: "status", chartTypes: ["kanban"] },
1171
+ { token: "done", category: "status", chartTypes: ["kanban"] },
1172
+ { token: "blocked", category: "status", chartTypes: ["kanban"] },
1173
+ { token: "in-progress", category: "status", chartTypes: ["kanban"] },
1174
+ { token: "backlog", category: "status", chartTypes: ["kanban"] },
1175
+ { token: "ready", category: "status", chartTypes: ["kanban"] },
593
1176
  // ── Modifiers + ER column types/modifiers (MODIFIER) ─────
594
1177
  // `collapsed` is the bare trailing group-line flag made canonical by
595
1178
  // decision #48 (`[Fulfillment] collapsed`). It is deliberately a bare
596
1179
  // MODIFIER rather than a colon key: the legacy `collapsed: true` form still
597
1180
  // parses and still highlights (as `modifier` instead of `propertyName`),
598
1181
  // whereas leaving it colon-only left the canonical bare form as plain text.
599
- { token: "collapsed", category: "modifier" },
600
- { token: "as", category: "modifier" },
601
- { token: "alias", category: "modifier" },
602
- { token: "aka", category: "modifier" },
603
- { token: "position", category: "modifier" },
604
- { token: "default", category: "modifier" },
605
- { token: "pk", category: "modifier" },
606
- { token: "fk", category: "modifier" },
607
- { token: "nullable", category: "modifier" },
608
- { token: "unique", category: "modifier" },
609
- { token: "int", category: "modifier" },
610
- { token: "varchar", category: "modifier" },
611
- { token: "text", category: "modifier" },
612
- { token: "boolean", category: "modifier" },
613
- { token: "date", category: "modifier" },
614
- { token: "timestamp", category: "modifier" },
615
- { token: "float", category: "modifier" },
616
- { token: "decimal", category: "modifier" },
1182
+ { token: "collapsed", category: "modifier", chartTypes: "all" },
1183
+ { token: "as", category: "modifier", chartTypes: "all" },
1184
+ { token: "alias", category: "modifier", chartTypes: "all" },
1185
+ { token: "aka", category: "modifier", chartTypes: "all" },
1186
+ { token: "position", category: "modifier", chartTypes: "all" },
1187
+ { token: "default", category: "modifier", chartTypes: "all" },
1188
+ { token: "pk", category: "modifier", chartTypes: ["er"] },
1189
+ { token: "fk", category: "modifier", chartTypes: ["er"] },
1190
+ { token: "nullable", category: "modifier", chartTypes: ["er"] },
1191
+ { token: "unique", category: "modifier", chartTypes: ["er"] },
1192
+ { token: "int", category: "modifier", chartTypes: ["class", "er"] },
1193
+ { token: "varchar", category: "modifier", chartTypes: ["class", "er"] },
1194
+ {
1195
+ token: "text",
1196
+ category: "modifier",
1197
+ chartTypes: ["class", "er", "whiteboard"]
1198
+ },
1199
+ { token: "boolean", category: "modifier", chartTypes: ["class", "er"] },
1200
+ { token: "date", category: "modifier", chartTypes: ["class", "er"] },
1201
+ { token: "timestamp", category: "modifier", chartTypes: ["class", "er"] },
1202
+ { token: "float", category: "modifier", chartTypes: ["class", "er"] },
1203
+ { token: "decimal", category: "modifier", chartTypes: ["class", "er"] },
617
1204
  // ── Bracket ──────────────────────────────────────────────
618
1205
  // `beats` / `vs` are the infix match keywords; the rest are line directives.
619
1206
  // (`seed` and `no-legend` already appear above — shared, not re-listed.)
620
- { token: "beats", category: "control" },
621
- { token: "vs", category: "control" },
622
- { token: "rounds", category: "directive" },
623
- { token: "accent", category: "directive" },
624
- { token: "no-round", category: "modifier" },
625
- { token: "no-rounds", category: "modifier" },
626
- { token: "single-elim", category: "modifier" },
627
- { token: "double-elim", category: "modifier" },
628
- { token: "seeded", category: "modifier" },
1207
+ { token: "beats", category: "control", chartTypes: ["bracket"] },
1208
+ { token: "vs", category: "control", chartTypes: ["bracket"] },
1209
+ { token: "rounds", category: "directive", chartTypes: ["bracket"] },
1210
+ { token: "accent", category: "directive", chartTypes: "all" },
1211
+ { token: "no-round", category: "modifier", chartTypes: ["bracket"] },
1212
+ { token: "no-rounds", category: "modifier", chartTypes: ["bracket"] },
1213
+ { token: "single-elim", category: "modifier", chartTypes: ["bracket"] },
1214
+ { token: "double-elim", category: "modifier", chartTypes: ["bracket"] },
1215
+ { token: "seeded", category: "modifier", chartTypes: ["bracket"] },
629
1216
  // ── Live link (§38) ──────────────────────────────────────
630
1217
  // The pointer type's one directive. Registered so it highlights and
631
1218
  // autocompletes like `palette` does — §38 justifies the shape by calling it
632
1219
  // "the ordinary DGMO directive shape", and an unregistered `url` would make
633
1220
  // that sentence false in the editor: `editor/tokens.ts` specializes only
634
1221
  // against the keyword registries, so it would render as plain identifier text.
635
- { token: "url", category: "directive" }
1222
+ { token: "url", category: "directive", chartTypes: ["live-link"] }
636
1223
  ];
637
1224
  function tokensWhere(pred) {
638
1225
  const out = /* @__PURE__ */ new Set();
@@ -668,6 +1255,21 @@ var REGISTRY_STATUS_TOKENS = tokensWhere(
668
1255
  var REGISTRY_MODIFIER_TOKENS = tokensWhere(
669
1256
  (e) => e.category === "modifier" && !e.colonKey && !e.noHighlight
670
1257
  );
1258
+ var REGISTRY_TOKEN_CHART_TYPES = (() => {
1259
+ const out = /* @__PURE__ */ new Map();
1260
+ for (const e of DIRECTIVES_REGISTRY) {
1261
+ const prev = out.get(e.token);
1262
+ if (prev === "all") continue;
1263
+ if (e.chartTypes === "all") {
1264
+ out.set(e.token, "all");
1265
+ continue;
1266
+ }
1267
+ const set = prev ?? /* @__PURE__ */ new Set();
1268
+ for (const t of e.chartTypes) set.add(t);
1269
+ out.set(e.token, set);
1270
+ }
1271
+ return out;
1272
+ })();
671
1273
  var REGISTRY_COLON_KEY_TOKENS = tokensWhere((e) => !!e.colonKey);
672
1274
  var REGISTRY_NON_HIGHLIGHT_TOKENS = tokensWhere(
673
1275
  (e) => !!e.noHighlight
@@ -757,10 +1359,13 @@ var KANBAN_REGISTRY = staticRegistry([
757
1359
  "collapsed"
758
1360
  // `[Column] collapsed: true` view-state marker
759
1361
  ]);
1362
+ var SWOT_REGISTRY = staticRegistry([]);
760
1363
  var SITEMAP_REGISTRY = staticRegistry([
761
1364
  "color",
762
1365
  "description",
763
- "status"
1366
+ "status",
1367
+ "collapsed"
1368
+ // page / `[Container]` view-state marker (#1741)
764
1369
  ]);
765
1370
  var GANTT_REGISTRY = staticRegistry([
766
1371
  "color",
@@ -781,18 +1386,17 @@ var PERT_REGISTRY = staticRegistry([
781
1386
  var BOXES_AND_LINES_REGISTRY = staticRegistry([
782
1387
  "color",
783
1388
  "description",
784
- "heat"
785
- ]);
786
- var STATE_REGISTRY = staticRegistry([]);
787
- var SKETCH_REGISTRY = staticRegistry([
788
- "shape",
789
- "at",
1389
+ "heat",
790
1390
  "collapsed"
1391
+ // `[Group] collapsed: true` view-state marker (#1741)
791
1392
  ]);
1393
+ var STATE_REGISTRY = staticRegistry([]);
792
1394
  var TIMELINE_REGISTRY = staticRegistry([
793
1395
  "color",
794
1396
  "description",
795
- "duration"
1397
+ "duration",
1398
+ "collapsed"
1399
+ // `[Lane] collapsed: true` view-state marker (#1741)
796
1400
  ]);
797
1401
  var MINDMAP_REGISTRY = staticRegistry([
798
1402
  "color",
@@ -819,7 +1423,9 @@ var JOURNEY_MAP_REGISTRY = staticRegistry([
819
1423
  "emotion",
820
1424
  "pain",
821
1425
  "opportunity",
822
- "thought"
1426
+ "thought",
1427
+ "collapsed"
1428
+ // `[Phase] collapsed: true` view-state marker (#1741)
823
1429
  ]);
824
1430
  var PYRAMID_REGISTRY = staticRegistry([
825
1431
  "color",
@@ -832,7 +1438,9 @@ var RING_REGISTRY = staticRegistry([
832
1438
  var TREEMAP_REGISTRY = staticRegistry(["heat"]);
833
1439
  var RACI_REGISTRY = staticRegistry([
834
1440
  "color",
835
- "description"
1441
+ "description",
1442
+ "collapsed"
1443
+ // `[Phase] collapsed: true` view-state marker (#1741)
836
1444
  ]);
837
1445
  var FAMILY_PERSON_REGISTRY = staticRegistry([
838
1446
  "sex",
@@ -1595,6 +2203,7 @@ function warnUnknownMetaKeys(meta, registry, warn, nameToScan) {
1595
2203
  export {
1596
2204
  chartTypes,
1597
2205
  CHART_TYPE_IDS,
2206
+ RETIRED_CHART_TYPES,
1598
2207
  INFRA_TOP_LEVEL_OPTION_SET,
1599
2208
  INFRA_BEHAVIOR_KEY_SET,
1600
2209
  INFRA_EDGE_ONLY_KEY_SET,
@@ -1605,6 +2214,7 @@ export {
1605
2214
  REGISTRY_CONTROL_TOKENS,
1606
2215
  REGISTRY_STATUS_TOKENS,
1607
2216
  REGISTRY_MODIFIER_TOKENS,
2217
+ REGISTRY_TOKEN_CHART_TYPES,
1608
2218
  REGISTRY_COLON_KEY_TOKENS,
1609
2219
  withTagAliases,
1610
2220
  isReservedKey,
@@ -1616,12 +2226,12 @@ export {
1616
2226
  ER_REGISTRY,
1617
2227
  EVENT_LINE_REGISTRY,
1618
2228
  KANBAN_REGISTRY,
2229
+ SWOT_REGISTRY,
1619
2230
  SITEMAP_REGISTRY,
1620
2231
  GANTT_REGISTRY,
1621
2232
  PERT_REGISTRY,
1622
2233
  BOXES_AND_LINES_REGISTRY,
1623
2234
  STATE_REGISTRY,
1624
- SKETCH_REGISTRY,
1625
2235
  TIMELINE_REGISTRY,
1626
2236
  MINDMAP_REGISTRY,
1627
2237
  TECH_RADAR_REGISTRY,