@diagrammo/dgmo 0.96.0 → 0.98.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 (264) hide show
  1. package/dist/advanced.d.ts +178 -8
  2. package/dist/advanced.js +232 -246
  3. package/dist/block.d.ts +8 -0
  4. package/dist/block.js +138 -66
  5. package/dist/{calculator-GIB7POFX.js → calculator-CIGGTURF.js} +2 -2
  6. package/dist/{chart-meta-uImk4eTn.d.ts → chart-meta-B7niEd52.d.ts} +3 -1
  7. package/dist/chart-meta.d.ts +2 -2
  8. package/dist/chart-meta.js +19 -19
  9. package/dist/{chart-types-CBVYiLqy.d.ts → chart-types-Dxtv4XSz.d.ts} +3 -0
  10. package/dist/{charts-d3-IRP5VANE.js → charts-d3-INWEGMSD.js} +14 -14
  11. package/dist/{chunk-VLI6AWS3.js → chunk-3C4OXVZJ.js} +2 -2
  12. package/dist/{chunk-I3ZRIMR7.js → chunk-3EDV56HL.js} +15 -15
  13. package/dist/{chunk-OO4GUE4E.js → chunk-3F74NDUY.js} +63 -18
  14. package/dist/{chunk-RGFVHYDP.js → chunk-3IUMSK72.js} +2 -2
  15. package/dist/chunk-42AZPI2W.js +150 -0
  16. package/dist/{chunk-H7AXCRO7.js → chunk-453IWXZ3.js} +0 -11
  17. package/dist/{chunk-FHX373L5.js → chunk-47INRTZ6.js} +2 -2
  18. package/dist/{chunk-IN7XI6NO.js → chunk-4NMRS6HW.js} +1 -1
  19. package/dist/{chunk-JBAFAKGX.js → chunk-4PZP6URA.js} +41 -51
  20. package/dist/{chunk-5LG526X7.js → chunk-5TGZBHEJ.js} +1 -1
  21. package/dist/{chunk-BD4O4D2A.js → chunk-5WZYJC2P.js} +2 -2
  22. package/dist/{chunk-DPNSDCR3.js → chunk-65JFUANT.js} +1 -1
  23. package/dist/{chunk-EZ6BI5LL.js → chunk-6OUMYNAJ.js} +1 -1
  24. package/dist/{chunk-U6N547QA.js → chunk-6PUBFB6D.js} +24 -3
  25. package/dist/{chunk-IKXQ6NVR.js → chunk-6Q46GMKH.js} +21 -58
  26. package/dist/{chunk-DKCVAQU3.js → chunk-6YRTBI2F.js} +53 -75
  27. package/dist/{chunk-RTRORHSP.js → chunk-7QKWU7FX.js} +3 -3
  28. package/dist/{chunk-A6YINTY6.js → chunk-7RACGVUY.js} +1 -1
  29. package/dist/{chunk-H7RQG4PH.js → chunk-A3N4UHHL.js} +2 -2
  30. package/dist/{chunk-UNCCZ3NU.js → chunk-A3V72YIL.js} +14 -1
  31. package/dist/chunk-AHUBG6GR.js +188 -0
  32. package/dist/{chunk-P3PSLC2K.js → chunk-AULFF7L2.js} +2 -2
  33. package/dist/{chunk-SCYVGPLI.js → chunk-B7ZH5EQ2.js} +2 -2
  34. package/dist/{chunk-TUOZ6AXC.js → chunk-BTFB7W5Z.js} +16 -4
  35. package/dist/{chunk-THTYCJGF.js → chunk-BWVJTYTJ.js} +4 -4
  36. package/dist/{chunk-VGAMBOOC.js → chunk-C6ME2L4T.js} +2 -2
  37. package/dist/{chunk-H7JVKUA5.js → chunk-CES7REQM.js} +44 -60
  38. package/dist/{chunk-B2YVZ3QU.js → chunk-CGP7RGLJ.js} +1 -1
  39. package/dist/{chunk-34JOHSVE.js → chunk-CUTEHGXO.js} +2 -2
  40. package/dist/{chunk-NERQSSYD.js → chunk-D67YE4LR.js} +1 -1
  41. package/dist/{chunk-TPCP2UOI.js → chunk-D6XR22KO.js} +3 -3
  42. package/dist/{chunk-OAZ6BIIB.js → chunk-D7FHY6DO.js} +9 -7
  43. package/dist/{chunk-67N26CER.js → chunk-DA2GIHAY.js} +38 -5
  44. package/dist/{chunk-PGD6CNWO.js → chunk-DFEVFLEG.js} +3 -3
  45. package/dist/{chunk-VVTCUIPN.js → chunk-DKMZ4VMV.js} +1 -1
  46. package/dist/{chunk-VJ7NLYFE.js → chunk-DYI73PFY.js} +3 -3
  47. package/dist/{chunk-IQZSKWE5.js → chunk-E6GHXMH2.js} +8 -8
  48. package/dist/{chunk-I2I2FKAK.js → chunk-EBJLT7PH.js} +1 -1
  49. package/dist/{chunk-K2SFH3GJ.js → chunk-ENXENGW5.js} +3 -3
  50. package/dist/{chunk-FKJWZWNU.js → chunk-EUPUVYWO.js} +1 -1
  51. package/dist/{chunk-26EVL454.js → chunk-F4DGHT3F.js} +20 -0
  52. package/dist/{chunk-WLGOIMTI.js → chunk-FDVUD3PR.js} +4 -4
  53. package/dist/{chunk-IU7XKZA6.js → chunk-FK6HZYGK.js} +4 -14
  54. package/dist/{chunk-67RKJEKF.js → chunk-FTRW6YGU.js} +35 -11
  55. package/dist/{chunk-2M3K6GD2.js → chunk-FTW2E2YH.js} +6 -6
  56. package/dist/{chunk-5P2L5QXE.js → chunk-FZVCS2XY.js} +4 -2
  57. package/dist/chunk-G24NSISJ.js +69 -0
  58. package/dist/{chunk-4B45SNZH.js → chunk-G36XKXWT.js} +17 -15
  59. package/dist/{chunk-5H7SA5ZD.js → chunk-GFQFLLP3.js} +2 -2
  60. package/dist/{chunk-MAYTYF5S.js → chunk-GMJBBFKC.js} +3 -3
  61. package/dist/{chunk-5BG4OSWJ.js → chunk-GNQYARON.js} +20 -57
  62. package/dist/{chunk-RVOSA4RR.js → chunk-GNWCMWTO.js} +441 -267
  63. package/dist/{chunk-VLC6WNRD.js → chunk-GULGSH2Z.js} +4 -0
  64. package/dist/{chunk-H5NVCOEJ.js → chunk-GXBH7WNN.js} +2 -2
  65. package/dist/{chunk-7UWVHNPM.js → chunk-H242TVAE.js} +9 -9
  66. package/dist/{chunk-CD7VQCDL.js → chunk-H7XXQSYA.js} +63 -53
  67. package/dist/{chunk-GLCMUTO5.js → chunk-HQNZJMNS.js} +1 -1
  68. package/dist/{chunk-WTPS73RM.js → chunk-II6D6NWX.js} +8 -8
  69. package/dist/{chunk-3W73ZP6W.js → chunk-IMBFWXHF.js} +3 -3
  70. package/dist/{chunk-5ARANBIE.js → chunk-IUFTAFGN.js} +2 -2
  71. package/dist/{chunk-AQRSEQZV.js → chunk-IZEKHIV6.js} +3 -3
  72. package/dist/{chunk-WGNP5ND2.js → chunk-J3YM6RA5.js} +3 -3
  73. package/dist/{chunk-YFIUABSF.js → chunk-J467QBZF.js} +23 -3
  74. package/dist/{chunk-EPDBWATV.js → chunk-K7RRXZHS.js} +4 -2
  75. package/dist/{chunk-TIPNNOZC.js → chunk-KKJG3LBY.js} +41 -19
  76. package/dist/{chunk-YVIPJGFG.js → chunk-KMB754DO.js} +33 -6
  77. package/dist/chunk-KNKZGRRB.js +439 -0
  78. package/dist/{chunk-SIABEREK.js → chunk-KTGJQJB3.js} +2 -2
  79. package/dist/{chunk-LGUFJ7Y2.js → chunk-KW3CC7SB.js} +1 -1
  80. package/dist/{chunk-ITDF3MWD.js → chunk-L3K5O3Z5.js} +3 -3
  81. package/dist/{chunk-NI4L6HEU.js → chunk-LZATSXAA.js} +1 -1
  82. package/dist/{chunk-EPB3UEMD.js → chunk-NBISN6FH.js} +2 -2
  83. package/dist/{chunk-VNAPEZX2.js → chunk-NHN6GBG7.js} +1 -1
  84. package/dist/{chunk-EM5SA7NC.js → chunk-NQFZ7LXC.js} +4 -4
  85. package/dist/chunk-NTDWVTEY.js +12 -0
  86. package/dist/{chunk-ZBOIYC2G.js → chunk-NXOIH5JK.js} +8 -13
  87. package/dist/{chunk-AUXUNV73.js → chunk-O3HRF25Z.js} +1 -1
  88. package/dist/{chunk-KDWEOT54.js → chunk-O5APWRZN.js} +192 -230
  89. package/dist/{chunk-GLL237AP.js → chunk-OSSA5UWA.js} +3 -3
  90. package/dist/{chunk-UOCWYLYT.js → chunk-OZXKW5NA.js} +1 -1
  91. package/dist/{chunk-QEU6VM4O.js → chunk-PLQZJZ2K.js} +1 -1
  92. package/dist/chunk-PRG7NIUU.js +272 -0
  93. package/dist/{chunk-CP73WWLN.js → chunk-PRYAVMU6.js} +48 -14
  94. package/dist/{chunk-KAO7JL4I.js → chunk-PU5X3P3T.js} +6 -5
  95. package/dist/{chunk-B7BSRVNC.js → chunk-PZ5LAAO3.js} +2 -2
  96. package/dist/{chunk-TOHTKLKE.js → chunk-Q5Q5JLRT.js} +1 -1
  97. package/dist/{chunk-MVUNMJKO.js → chunk-Q6OKTHYL.js} +71 -57
  98. package/dist/{chunk-ZOKD5F7M.js → chunk-QDPTOIG7.js} +5 -5
  99. package/dist/{chunk-2BYFNZVM.js → chunk-QGSQ2LMB.js} +57 -15
  100. package/dist/{chunk-ERT7XDQW.js → chunk-QIITSGI5.js} +1 -1
  101. package/dist/{chunk-K2WXMXI2.js → chunk-QLIZ7SB7.js} +1 -1
  102. package/dist/{chunk-P6LKX3IQ.js → chunk-QOLRTPGH.js} +6 -6
  103. package/dist/{chunk-FBK32S4D.js → chunk-R4SXMBGF.js} +1 -1
  104. package/dist/chunk-R4U7IIRX.js +178 -0
  105. package/dist/{chunk-DWMQ24JR.js → chunk-RC6PISCK.js} +4 -2
  106. package/dist/{chunk-R5L5E3TC.js → chunk-REKLKGR6.js} +3 -3
  107. package/dist/{chunk-FUYEXLAN.js → chunk-RFGQDIOI.js} +837 -220
  108. package/dist/{chunk-W5MMPPGX.js → chunk-ROFSIFSY.js} +4 -4
  109. package/dist/{chunk-JCC3B2GS.js → chunk-ROH4LYBL.js} +65 -21
  110. package/dist/{chunk-MYHR3PMH.js → chunk-S5VZLZUQ.js} +7 -7
  111. package/dist/{chunk-JRN2CRXJ.js → chunk-TDUBTDXS.js} +1 -1
  112. package/dist/{chunk-IZFJZCF6.js → chunk-TGQQD2KC.js} +84 -16
  113. package/dist/{chunk-GM2SLMQW.js → chunk-TMB4YY3J.js} +34 -4
  114. package/dist/{chunk-HH3DHNQA.js → chunk-UWWQECLC.js} +2 -2
  115. package/dist/{chunk-HZX4QZGR.js → chunk-V65EDV6S.js} +3 -3
  116. package/dist/{chunk-OYGJZA24.js → chunk-VHVQT4EW.js} +39 -19
  117. package/dist/{chunk-KQAPFIYF.js → chunk-VQWLASDC.js} +2 -2
  118. package/dist/chunk-VTGGPBLW.js +14 -0
  119. package/dist/{chunk-LRHPBWOY.js → chunk-VUBCCY65.js} +32 -69
  120. package/dist/{chunk-JILEYZ2V.js → chunk-VVL2KKG4.js} +1 -1
  121. package/dist/{chunk-D7DGLJ7N.js → chunk-VVZDBUHA.js} +2 -2
  122. package/dist/{chunk-B5CEV7IR.js → chunk-VYEIMHL5.js} +38 -14
  123. package/dist/{chunk-XCKNFFKM.js → chunk-WH6E6SHC.js} +2 -4
  124. package/dist/{chunk-P2GNNEMN.js → chunk-WPYJAHRP.js} +1 -1
  125. package/dist/{chunk-RIK6WUMO.js → chunk-XCYGOCMS.js} +43 -26
  126. package/dist/{chunk-PWZEJNO6.js → chunk-XMUFXJI2.js} +6 -6
  127. package/dist/{chunk-5G4DOOX2.js → chunk-XPOEE2RW.js} +9 -5
  128. package/dist/{chunk-EMGNCG5C.js → chunk-XZGXVN4T.js} +5 -5
  129. package/dist/{chunk-BUVLLK3D.js → chunk-Y24QPREP.js} +27 -17
  130. package/dist/{chunk-GEHK4UD5.js → chunk-YCIOLYWL.js} +92 -23
  131. package/dist/{chunk-V2NQV7VL.js → chunk-YFIDR7JH.js} +2 -2
  132. package/dist/{chunk-6XLMTAEX.js → chunk-YIHRLY55.js} +33 -6
  133. package/dist/{chunk-CYRB2JTN.js → chunk-YLKPRT6U.js} +1 -1
  134. package/dist/{chunk-KMU65FYM.js → chunk-YSDSFXQD.js} +1 -1
  135. package/dist/{chunk-M4ZUIW3J.js → chunk-Z6V73LD6.js} +3 -3
  136. package/dist/{chunk-ZI6WC24V.js → chunk-ZBJV4KNU.js} +1 -1
  137. package/dist/{chunk-YSGOXZBB.js → chunk-ZMVMGZAJ.js} +1 -1
  138. package/dist/{chunk-O2HNVNKO.js → chunk-ZTKO2RD4.js} +5 -5
  139. package/dist/{chunk-5GU6C5WB.js → chunk-ZXPSNBZC.js} +3 -3
  140. package/dist/collapse-6IGH2B24.js +31 -0
  141. package/dist/collapse-GOWNCVHZ.js +7 -0
  142. package/dist/collapse-HNTPLB2Q.js +11 -0
  143. package/dist/collapse-NUM7DPJA.js +10 -0
  144. package/dist/completion-registry.js +27 -4
  145. package/dist/dgmo-router-RXV7BNPN.js +101 -0
  146. package/dist/dimensions-KXAI7U2B.js +21 -0
  147. package/dist/editor.js +882 -215
  148. package/dist/{flowchart-parser-SM5LHF2D.js → flowchart-parser-JAZRKKKJ.js} +5 -5
  149. package/dist/flowchart-renderer-JED3RESY.js +40 -0
  150. package/dist/fold-at-line-DmSAa1eU.d.ts +11 -0
  151. package/dist/highlight.js +883 -216
  152. package/dist/index.d.ts +52 -5
  153. package/dist/index.js +79 -63
  154. package/dist/{layout-LNVIH45F.js → layout-6QXAC2WA.js} +7 -6
  155. package/dist/{layout-2WESJYRE.js → layout-7E7BNOGO.js} +3 -2
  156. package/dist/layout-BSK374N6.js +11 -0
  157. package/dist/{layout-FCFUVCRI.js → layout-DJOZCSAP.js} +10 -10
  158. package/dist/{layout-R6G4MEO3.js → layout-FJDBY3WG.js} +5 -5
  159. package/dist/{layout-H2KP5A6M.js → layout-GC5XX2RH.js} +2 -2
  160. package/dist/{layout-KELSNWBD.js → layout-LCHMEGTV.js} +10 -10
  161. package/dist/{layout-PPIVGJXD.js → layout-ROI5KVSO.js} +3 -3
  162. package/dist/{layout-3TSVAGWH.js → layout-SPPS225I.js} +3 -3
  163. package/dist/{layout-AF4KA5B2.js → layout-VHBM32OD.js} +6 -6
  164. package/dist/{layout-HF3PMI4H.js → layout-VTGOYGRC.js} +2 -2
  165. package/dist/layout-WTHBGTH2.js +15 -0
  166. package/dist/layout-ZCCABSV7.js +15 -0
  167. package/dist/{layout-MPSH3YWE.js → layout-ZDMJL4KO.js} +10 -10
  168. package/dist/{layout-search-C2TYUH4L.js → layout-search-UZYZE4PR.js} +8 -8
  169. package/dist/{legend-constants-55MFBXYF.js → legend-constants-KF3MKWL2.js} +2 -2
  170. package/dist/{parser-6WURFLOB.js → parser-3KMY23A2.js} +3 -3
  171. package/dist/{parser-DGLKH4NT.js → parser-3PMYAVFL.js} +2 -2
  172. package/dist/{parser-OHBBDCG4.js → parser-5KVFS4RN.js} +2 -2
  173. package/dist/{parser-QWTECQEC.js → parser-ASXY2CPV.js} +6 -6
  174. package/dist/{parser-UHKROC7Z.js → parser-BA43YPIQ.js} +3 -3
  175. package/dist/{parser-F75WNYMK.js → parser-CFAYEWLF.js} +3 -3
  176. package/dist/{parser-MWINQNQW.js → parser-DRFEX6OX.js} +3 -3
  177. package/dist/{parser-W6NX3AIV.js → parser-DWVBRBB2.js} +3 -3
  178. package/dist/{parser-DRUGM3R6.js → parser-FWQY3HJX.js} +2 -2
  179. package/dist/{parser-4GHAYZKZ.js → parser-GBB5MYAN.js} +6 -6
  180. package/dist/{parser-GBQY3WOZ.js → parser-GMCXCJSP.js} +3 -3
  181. package/dist/{parser-BPYHIG24.js → parser-IHFHPFL7.js} +3 -3
  182. package/dist/{parser-TTGZYLYD.js → parser-JQGUTDSX.js} +3 -3
  183. package/dist/{parser-BNRX35NT.js → parser-JRKPOO2Z.js} +3 -3
  184. package/dist/{parser-B7SCN7FG.js → parser-KI2XYB2R.js} +2 -2
  185. package/dist/parser-LDVVBP7S.js +12 -0
  186. package/dist/{parser-L7SI3PW4.js → parser-MAGFK6OK.js} +4 -4
  187. package/dist/{parser-722KLLAQ.js → parser-MH5BDN7X.js} +3 -3
  188. package/dist/{parser-5RUD4A3X.js → parser-MUHFEM4G.js} +3 -3
  189. package/dist/{parser-Y7QXD2UR.js → parser-P375HO7Q.js} +2 -2
  190. package/dist/{parser-LUJX7AXO.js → parser-PYY5BRLQ.js} +2 -2
  191. package/dist/parser-QEMFMVF5.js +12 -0
  192. package/dist/{parser-WIKXZP4X.js → parser-QIPDBT5M.js} +2 -2
  193. package/dist/{parser-2AXU2MHJ.js → parser-RNBDDEGL.js} +3 -3
  194. package/dist/{parser-H6HT2WFQ.js → parser-SGX2PVR5.js} +2 -2
  195. package/dist/{parser-ZWWQZ4XZ.js → parser-SJUEFKNM.js} +3 -3
  196. package/dist/{parser-4BOP77CD.js → parser-UMNBPXG2.js} +2 -2
  197. package/dist/{parser-GM5B2EPW.js → parser-WE4VSBBY.js} +3 -3
  198. package/dist/{parser-XEJP37GQ.js → parser-WKEYS7N3.js} +3 -3
  199. package/dist/{parser-DWV2CYBS.js → parser-WPXUUNA2.js} +3 -3
  200. package/dist/{parser-5HQPPVHJ.js → parser-XP3RCOTN.js} +3 -3
  201. package/dist/{parser-F3JJNIFC.js → parser-YV4RBHG7.js} +3 -3
  202. package/dist/{parser-CRJYLOHA.js → parser-YZ3J542U.js} +2 -2
  203. package/dist/{parser-ZV756RMP.js → parser-ZSBMGGTD.js} +6 -6
  204. package/dist/renderer-37LMEGLD.js +26 -0
  205. package/dist/{renderer-TS5NHOQD.js → renderer-3EIZRVO3.js} +12 -11
  206. package/dist/renderer-4LK2RFHD.js +28 -0
  207. package/dist/{renderer-BYLQ37T2.js → renderer-4WD4ZIEH.js} +16 -15
  208. package/dist/renderer-67PNYODC.js +32 -0
  209. package/dist/{renderer-GKY55M4Z.js → renderer-6O5SV5YE.js} +10 -10
  210. package/dist/{renderer-VNJOZPSH.js → renderer-6VBL2DWH.js} +17 -17
  211. package/dist/{renderer-F7YGMEGQ.js → renderer-7OXMSF4R.js} +4 -4
  212. package/dist/{renderer-6HU44IGJ.js → renderer-A36NL2SS.js} +8 -8
  213. package/dist/renderer-CC6O6GQK.js +18 -0
  214. package/dist/renderer-CUEMI3PI.js +85 -0
  215. package/dist/{renderer-QZJZIAT3.js → renderer-D6BEC6LI.js} +6 -4
  216. package/dist/{renderer-5GP7YUS4.js → renderer-DT2PP7NJ.js} +7 -6
  217. package/dist/{renderer-MGF2NNGG.js → renderer-E7LC7HCU.js} +5 -5
  218. package/dist/{renderer-PEJF6R2I.js → renderer-F3JYZERE.js} +4 -4
  219. package/dist/{renderer-CVCCW7UT.js → renderer-FAFSRFGR.js} +9 -9
  220. package/dist/renderer-GHYW6Y3A.js +27 -0
  221. package/dist/{renderer-VUXAAGUG.js → renderer-HRUKL4T6.js} +12 -11
  222. package/dist/renderer-INQMQPNN.js +22 -0
  223. package/dist/{renderer-LJPUCG3U.js → renderer-KOPJ76GS.js} +10 -10
  224. package/dist/renderer-KVC7Z4T2.js +39 -0
  225. package/dist/{renderer-MVBAQP3M.js → renderer-MYKL6VG6.js} +6 -6
  226. package/dist/{renderer-D6EH5UQ6.js → renderer-QVUPRQ4L.js} +13 -12
  227. package/dist/{renderer-SYRH3B62.js → renderer-RBAMFLZQ.js} +14 -13
  228. package/dist/{renderer-YJVQT7QG.js → renderer-S6L3JR6C.js} +11 -11
  229. package/dist/{renderer-ONENGXFQ.js → renderer-SGRZKIMS.js} +14 -12
  230. package/dist/{renderer-NOYLNVTI.js → renderer-SYWVZ4CY.js} +3 -3
  231. package/dist/{renderer-66NCRXSC.js → renderer-TJPBVNVG.js} +14 -11
  232. package/dist/renderer-WK2BPXND.js +41 -0
  233. package/dist/renderer-ZG7WOBBN.js +30 -0
  234. package/dist/{renderer-N6PM5CSG.js → renderer-ZRPL5COW.js} +14 -13
  235. package/dist/{renderer-2V2XY2V7.js → renderer-ZTHXOBXW.js} +8 -8
  236. package/dist/{renderer-radial-4R7AKETK.js → renderer-radial-FC25BDCZ.js} +8 -8
  237. package/dist/{state-parser-EQBBEKHR.js → state-parser-LSFAJFMV.js} +6 -6
  238. package/dist/state-renderer-QTDBFB4F.js +43 -0
  239. package/dist/{themes-CbJL3w8L.d.ts → themes-DoLdhUXV.d.ts} +1 -1
  240. package/docs/ai-integration.md +4 -3
  241. package/docs/language-reference.md +100 -14
  242. package/gallery/fixtures/swot-relabel.dgmo +19 -0
  243. package/gallery/fixtures/swot-tags.dgmo +16 -0
  244. package/gallery/fixtures/swot.dgmo +13 -0
  245. package/package.json +1 -1
  246. package/dist/chunk-R2K5L4UA.js +0 -49
  247. package/dist/collapse-TCVK3RPO.js +0 -8
  248. package/dist/dgmo-router-EPBQKQW2.js +0 -100
  249. package/dist/dimensions-DBCRBZIU.js +0 -21
  250. package/dist/flowchart-renderer-PPS2GTTD.js +0 -40
  251. package/dist/layout-3J72UULM.js +0 -15
  252. package/dist/layout-IXQNVRBE.js +0 -15
  253. package/dist/layout-VDCJOZSH.js +0 -11
  254. package/dist/parser-HM6FEX5K.js +0 -14
  255. package/dist/renderer-2MCV75JQ.js +0 -41
  256. package/dist/renderer-5AEDVLAA.js +0 -31
  257. package/dist/renderer-7C76HP5W.js +0 -30
  258. package/dist/renderer-7RAMBMTH.js +0 -22
  259. package/dist/renderer-E3334XLT.js +0 -84
  260. package/dist/renderer-LFZKG2GR.js +0 -26
  261. package/dist/renderer-MZIWP55B.js +0 -28
  262. package/dist/renderer-N75E3UVY.js +0 -25
  263. package/dist/renderer-VNUDN6F5.js +0 -39
  264. package/dist/state-renderer-SOGZ2CNN.js +0 -42
@@ -5,12 +5,12 @@ import {
5
5
  TITLE_FONT_SIZE,
6
6
  TITLE_FONT_WEIGHT,
7
7
  TITLE_Y
8
- } from "./chunk-VLC6WNRD.js";
8
+ } from "./chunk-GULGSH2Z.js";
9
9
  import {
10
10
  ARROWHEAD_HEIGHT,
11
11
  ARROWHEAD_WIDTH,
12
12
  EDGE_DASH
13
- } from "./chunk-XCKNFFKM.js";
13
+ } from "./chunk-WH6E6SHC.js";
14
14
  import {
15
15
  FONT_FAMILY
16
16
  } from "./chunk-ICLB27PZ.js";
@@ -18,10 +18,10 @@ import {
18
18
  UNTAGGED_TAG_COLOR,
19
19
  resolveTagColor,
20
20
  tagAttrKey
21
- } from "./chunk-LGUFJ7Y2.js";
21
+ } from "./chunk-KW3CC7SB.js";
22
22
  import {
23
23
  fillModeFromOptions
24
- } from "./chunk-FUYEXLAN.js";
24
+ } from "./chunk-RFGQDIOI.js";
25
25
  import {
26
26
  contrastText,
27
27
  mix,
@@ -21,7 +21,7 @@ import {
21
21
  tagAttrKey,
22
22
  validateTagGroupNames,
23
23
  validateTagValues
24
- } from "./chunk-LGUFJ7Y2.js";
24
+ } from "./chunk-KW3CC7SB.js";
25
25
  import {
26
26
  AliasRegistry,
27
27
  FILL_FAMILY_TOKENS,
@@ -35,7 +35,7 @@ import {
35
35
  splitNameAndMeta,
36
36
  warnUnknownMetaKeys,
37
37
  withTagAliases
38
- } from "./chunk-FUYEXLAN.js";
38
+ } from "./chunk-RFGQDIOI.js";
39
39
  import {
40
40
  NAME_DIAGNOSTIC_CODES,
41
41
  formatDgmoError,
@@ -97,6 +97,31 @@ var SECTION_PATTERN = /^==\s+(.+?)(?:\s*==)?\s*$/;
97
97
  var ARROW_PATTERN = /\S+\s*(?:<-\S+-|<~\S+~|-\S+->|~\S+~>|->|~>|<-|<~)\s*\S+/;
98
98
  var NOTE_BARE = /^note\s+(.+)$/i;
99
99
  var NOTE_MULTI = /^note(?:\s+(right|left)(?:\s+(?:of\s+)?(.+?))?)?\s*$/i;
100
+ function peelNoteHeadMarker(trimmed) {
101
+ const bare = peelTrailingCollapsedFlag(trimmed);
102
+ if (bare.collapsed && bare.rest !== "") {
103
+ return { head: bare.rest, collapsed: true };
104
+ }
105
+ const { meta } = splitNameAndMeta(trimmed, SEQUENCE_REGISTRY);
106
+ const keys = Object.keys(meta);
107
+ if (keys.length !== 1 || keys[0] !== "collapsed") return null;
108
+ const at = trimmed.lastIndexOf("collapsed:");
109
+ if (at <= 0) return null;
110
+ const head = trimmed.slice(0, at).trimEnd().replace(/,\s*$/, "");
111
+ if (head === "") return null;
112
+ return { head, collapsed: meta["collapsed"]?.toLowerCase() === "true" };
113
+ }
114
+ function peelSectionMarker(trimmed) {
115
+ const meta = /^(.*?)(?:\s*,)?\s+collapsed:\s*(\S+)\s*$/.exec(trimmed);
116
+ if (meta && SECTION_PATTERN.test(meta[1])) {
117
+ return { line: meta[1], collapsed: meta[2].toLowerCase() === "true" };
118
+ }
119
+ const bare = peelTrailingCollapsedFlag(trimmed);
120
+ if (bare.collapsed && SECTION_PATTERN.test(bare.rest)) {
121
+ return { line: bare.rest, collapsed: true };
122
+ }
123
+ return null;
124
+ }
100
125
  function parseNoteLine(trimmed, participants, participantIds, sortedParticipantsCache, lastMsgFrom) {
101
126
  const lower = trimmed.toLowerCase();
102
127
  if (!lower.startsWith("note")) return null;
@@ -550,7 +575,8 @@ function parseSequenceDgmo(content, palette) {
550
575
  if (currentTagGroup) {
551
576
  currentTagGroup = null;
552
577
  }
553
- const sectionMatch = trimmed.match(SECTION_PATTERN);
578
+ const sectionPeel = trimmed.startsWith("==") ? peelSectionMarker(trimmed) : null;
579
+ const sectionMatch = (sectionPeel?.line ?? trimmed).match(SECTION_PATTERN);
554
580
  if (sectionMatch) {
555
581
  const sectionIndent = measureIndent(raw);
556
582
  while (blockStack.length > 0) {
@@ -574,7 +600,8 @@ function parseSequenceDgmo(content, palette) {
574
600
  kind: "section",
575
601
  // Capture group 1 guaranteed present after successful match.
576
602
  label: colorMatch ? colorMatch[1].trim() : labelRaw,
577
- lineNumber
603
+ lineNumber,
604
+ ...sectionPeel?.collapsed && { collapsed: true }
578
605
  };
579
606
  result.sections.push(section);
580
607
  currentContainer().push(section);
@@ -709,7 +736,8 @@ function parseSequenceDgmo(content, palette) {
709
736
  alias: bareAlias
710
737
  } = splitPipe(trimmed, lineNumber);
711
738
  const inGroup = activeGroup() !== null && measureIndent(raw) > 0;
712
- if (/^\S+$/.test(bareCore) && !ARROW_PATTERN.test(bareCore) && (inGroup || !bodyStarted || bareMeta)) {
739
+ const isNoteHead = /^note$/i.test(bareCore) && bareMeta?.["collapsed"] !== void 0;
740
+ if (!isNoteHead && /^\S+$/.test(bareCore) && !ARROW_PATTERN.test(bareCore) && (inGroup || !bodyStarted || bareMeta)) {
713
741
  contentStarted = true;
714
742
  const id = bareCore;
715
743
  if (bareAlias !== void 0)
@@ -729,8 +757,7 @@ function parseSequenceDgmo(content, palette) {
729
757
  const top = blockStack[blockStack.length - 1];
730
758
  if (indent > top.indent) break;
731
759
  if (indent === top.indent && (top.block.type === "if" || top.block.type === "parallel")) {
732
- const lower = trimmed.toLowerCase();
733
- if (lower === "else" || lower.startsWith("else if ")) break;
760
+ if (/^else(\s+\S.*)?$/i.test(trimmed)) break;
734
761
  }
735
762
  blockStack.pop();
736
763
  }
@@ -881,7 +908,11 @@ function parseSequenceDgmo(content, palette) {
881
908
  blockStack.push({ block, indent, inElse: false });
882
909
  continue;
883
910
  }
884
- const elseIfMatch = trimmed.match(/^else\s+if\s+(.+)$/i);
911
+ if (/^else\s+if$/i.test(trimmed)) {
912
+ pushError(lineNumber, "'else if' needs a condition.");
913
+ continue;
914
+ }
915
+ const elseIfMatch = trimmed.match(/^else\s+(if\s+)?(.+)$/i);
885
916
  if (elseIfMatch) {
886
917
  if (blockStack.length > 0 && // In-bounds by the length check above.
887
918
  blockStack[blockStack.length - 1].indent === indent) {
@@ -895,8 +926,8 @@ function parseSequenceDgmo(content, palette) {
895
926
  }
896
927
  if (top.block.type === "if") {
897
928
  const branch = {
898
- // Capture group 1 guaranteed present after successful match.
899
- label: elseIfMatch[1].trim(),
929
+ // Capture group 2 guaranteed present after successful match.
930
+ label: elseIfMatch[2].trim(),
900
931
  children: [],
901
932
  lineNumber
902
933
  };
@@ -906,6 +937,11 @@ function parseSequenceDgmo(content, palette) {
906
937
  top.activeElseIfBranch = branch;
907
938
  top.inElse = false;
908
939
  }
940
+ } else if (!elseIfMatch[1]) {
941
+ pushError(
942
+ lineNumber,
943
+ `'${trimmed}' has no matching 'if' at this indent.`
944
+ );
909
945
  }
910
946
  continue;
911
947
  }
@@ -938,18 +974,25 @@ function parseSequenceDgmo(content, palette) {
938
974
  );
939
975
  continue;
940
976
  }
941
- const elseLabelMatch = trimmed.match(/^else\s+(.+)$/i);
942
- if (elseLabelMatch) {
943
- const tail = elseLabelMatch[1].trim();
944
- pushError(
945
- lineNumber,
946
- `'else' does not take a label. Did you mean 'else if ${tail}'?`
947
- );
948
- continue;
949
- }
950
977
  {
978
+ let noteLine = trimmed;
979
+ let noteCollapsed = false;
980
+ const bodyRaw = lines[i + 1];
981
+ if (/^note(\s|$)/i.test(trimmed) && bodyRaw !== void 0 && bodyRaw.trim() !== "" && measureIndent(bodyRaw) > indent) {
982
+ const peeled = peelNoteHeadMarker(trimmed);
983
+ if (peeled && parseNoteLine(
984
+ peeled.head,
985
+ result.participants,
986
+ participantIds,
987
+ getSortedParticipants(),
988
+ lastMsgFrom
989
+ )?.kind === "multi-head") {
990
+ noteLine = peeled.head;
991
+ noteCollapsed = peeled.collapsed;
992
+ }
993
+ }
951
994
  const noteParsed = parseNoteLine(
952
- trimmed,
995
+ noteLine,
953
996
  result.participants,
954
997
  participantIds,
955
998
  getSortedParticipants(),
@@ -987,8 +1030,9 @@ function parseSequenceDgmo(content, palette) {
987
1030
  position: noteParsed.position,
988
1031
  participantId: noteParsed.participantId,
989
1032
  lineNumber,
990
- endLineNumber: i + 1
1033
+ endLineNumber: i + 1,
991
1034
  // i has advanced past the body lines (1-based)
1035
+ ...noteCollapsed && { collapsed: true }
992
1036
  };
993
1037
  bodyStarted = true;
994
1038
  currentContainer().push(note);
@@ -1,35 +1,35 @@
1
1
  import {
2
2
  drawCylinderCard,
3
3
  drawQueueCard
4
- } from "./chunk-4B45SNZH.js";
4
+ } from "./chunk-G36XKXWT.js";
5
5
  import {
6
6
  CYLINDER_RY,
7
7
  FILE_WAVE,
8
8
  QUEUE_CAP
9
- } from "./chunk-ZBOIYC2G.js";
9
+ } from "./chunk-VTGGPBLW.js";
10
10
  import {
11
11
  WHITEBOARD_COLORS,
12
12
  WHITEBOARD_NOTE_COLOR
13
13
  } from "./chunk-SQBCNEJB.js";
14
14
  import {
15
15
  renderChartTitle
16
- } from "./chunk-6XLMTAEX.js";
16
+ } from "./chunk-YIHRLY55.js";
17
17
  import {
18
18
  TITLE_FONT_SIZE
19
- } from "./chunk-VLC6WNRD.js";
19
+ } from "./chunk-GULGSH2Z.js";
20
20
  import {
21
21
  renderIntegratedLegend
22
- } from "./chunk-PGD6CNWO.js";
22
+ } from "./chunk-DFEVFLEG.js";
23
23
  import {
24
24
  getMaxLegendReservedHeight
25
- } from "./chunk-JILEYZ2V.js";
25
+ } from "./chunk-VVL2KKG4.js";
26
26
  import {
27
27
  FONT_FAMILY
28
28
  } from "./chunk-ICLB27PZ.js";
29
29
  import {
30
30
  measureText,
31
31
  wrapTextToWidth
32
- } from "./chunk-KAO7JL4I.js";
32
+ } from "./chunk-PU5X3P3T.js";
33
33
  import {
34
34
  contrastText,
35
35
  mix,
@@ -8,7 +8,7 @@ import {
8
8
  } from "./chunk-NOTA6TEI.js";
9
9
  import {
10
10
  peelQuotedName
11
- } from "./chunk-FUYEXLAN.js";
11
+ } from "./chunk-RFGQDIOI.js";
12
12
  import {
13
13
  makeDgmoError
14
14
  } from "./chunk-BYU54C3S.js";
@@ -1,28 +1,32 @@
1
1
  import {
2
2
  parseKanban
3
- } from "./chunk-SCYVGPLI.js";
3
+ } from "./chunk-B7ZH5EQ2.js";
4
4
  import {
5
5
  serializeSvg
6
- } from "./chunk-CYRB2JTN.js";
6
+ } from "./chunk-YLKPRT6U.js";
7
7
  import {
8
8
  ScaleContext
9
9
  } from "./chunk-24YPR5EH.js";
10
+ import {
11
+ renderCollapseBar
12
+ } from "./chunk-42AZPI2W.js";
10
13
  import {
11
14
  TITLE_FONT_SIZE,
12
15
  TITLE_FONT_WEIGHT
13
- } from "./chunk-VLC6WNRD.js";
16
+ } from "./chunk-GULGSH2Z.js";
14
17
  import {
15
18
  CARD_RADIUS
16
- } from "./chunk-XCKNFFKM.js";
19
+ } from "./chunk-WH6E6SHC.js";
17
20
  import {
18
21
  keepSwimlaneToggleFocus,
19
22
  renderIntegratedLegend,
20
23
  wireSwimlaneToggle
21
- } from "./chunk-PGD6CNWO.js";
24
+ } from "./chunk-DFEVFLEG.js";
22
25
  import {
23
26
  getMaxLegendReservedHeight
24
- } from "./chunk-JILEYZ2V.js";
27
+ } from "./chunk-VVL2KKG4.js";
25
28
  import {
29
+ parseInlineMarkdown,
26
30
  renderInlineText
27
31
  } from "./chunk-QKPOIJBT.js";
28
32
  import {
@@ -30,18 +34,19 @@ import {
30
34
  } from "./chunk-ICLB27PZ.js";
31
35
  import {
32
36
  tagAttrKey
33
- } from "./chunk-LGUFJ7Y2.js";
37
+ } from "./chunk-KW3CC7SB.js";
34
38
  import {
35
39
  fillModeFromOptions,
36
40
  legendSuppressed
37
- } from "./chunk-FUYEXLAN.js";
41
+ } from "./chunk-RFGQDIOI.js";
38
42
  import {
39
43
  LEGEND_HEIGHT,
40
44
  measureLegendText
41
- } from "./chunk-UOCWYLYT.js";
45
+ } from "./chunk-OZXKW5NA.js";
42
46
  import {
43
- measureText
44
- } from "./chunk-KAO7JL4I.js";
47
+ measureText,
48
+ truncateText
49
+ } from "./chunk-PU5X3P3T.js";
45
50
  import {
46
51
  contrastText,
47
52
  mix,
@@ -154,6 +159,7 @@ var COLUMN_GAP = 16;
154
159
  var COLUMN_HEADER_HEIGHT = 36;
155
160
  var COLUMN_PADDING = 12;
156
161
  var COLUMN_MIN_WIDTH = 200;
162
+ var CARD_TITLE_MAX_WIDTH = COLUMN_MIN_WIDTH * 2;
157
163
  var CARD_HEADER_HEIGHT = 24;
158
164
  var CARD_META_LINE_HEIGHT = 14;
159
165
  var CARD_SEPARATOR_GAP = 4;
@@ -253,7 +259,27 @@ function collapsedChips(cards, group) {
253
259
  function collapsedLaneLabel(laneName, total) {
254
260
  return `${laneName} (${total})`;
255
261
  }
256
- function computeLayout(parsed, _palette, collapsedColumns, hiddenMetaGroups, sDiagramPadding = DIAGRAM_PADDING, sTitleHeight = TITLE_HEIGHT, sCardTitleFontSize = CARD_TITLE_FONT_SIZE, sColumnHeaderFontSize = COLUMN_HEADER_FONT_SIZE, sColumnHeaderHeight = COLUMN_HEADER_HEIGHT, sColumnPadding = COLUMN_PADDING, sCardPaddingX = CARD_PADDING_X, sCardPaddingY = CARD_PADDING_Y, sCardSeparatorGap = CARD_SEPARATOR_GAP, sCardMetaLineHeight = CARD_META_LINE_HEIGHT, sCardHeaderHeight = CARD_HEADER_HEIGHT, sCardMetaFontSize = CARD_META_FONT_SIZE, sCardGap = CARD_GAP, sColumnMinWidth = COLUMN_MIN_WIDTH, sColumnGap = COLUMN_GAP, sCollapsedColumnWidth = COLLAPSED_COLUMN_WIDTH, activeTagGroup = null, sCollapsedChipHeight = COLLAPSED_CHIP_HEIGHT, sCollapsedChipGap = COLLAPSED_CHIP_GAP, sCollapsedNameGap = COLLAPSED_NAME_GAP) {
262
+ var RTL_START = /^[\P{L}]*[\u0590-\u08ff\ufb1d-\ufdff\ufe70-\ufeff]/u;
263
+ function renderCardTitle(titleEl, title, palette, fontSize, maxWidth) {
264
+ if (measureText(title, fontSize) > maxWidth) {
265
+ const plain = parseInlineMarkdown(title).map((span) => span.text).join("");
266
+ const shown = truncateText(plain, fontSize, maxWidth);
267
+ if (shown !== plain) {
268
+ if (RTL_START.test(plain)) {
269
+ const x = Number(titleEl.attr("x"));
270
+ const ellipsisEl = titleEl.clone(false).text("\u2026");
271
+ ellipsisEl.attr("x", x);
272
+ titleEl.attr("x", x + measureText("\u2026", fontSize)).text(shown.slice(0, -1));
273
+ } else {
274
+ titleEl.text(shown);
275
+ }
276
+ titleEl.append("title").text(plain);
277
+ return;
278
+ }
279
+ }
280
+ renderInlineText(titleEl, title, palette, fontSize);
281
+ }
282
+ function computeLayout(parsed, _palette, collapsedColumns, hiddenMetaGroups, sDiagramPadding = DIAGRAM_PADDING, sTitleHeight = TITLE_HEIGHT, sCardTitleFontSize = CARD_TITLE_FONT_SIZE, sColumnHeaderFontSize = COLUMN_HEADER_FONT_SIZE, sColumnHeaderHeight = COLUMN_HEADER_HEIGHT, sColumnPadding = COLUMN_PADDING, sCardPaddingX = CARD_PADDING_X, sCardPaddingY = CARD_PADDING_Y, sCardSeparatorGap = CARD_SEPARATOR_GAP, sCardMetaLineHeight = CARD_META_LINE_HEIGHT, sCardHeaderHeight = CARD_HEADER_HEIGHT, sCardMetaFontSize = CARD_META_FONT_SIZE, sCardGap = CARD_GAP, sColumnMinWidth = COLUMN_MIN_WIDTH, sColumnGap = COLUMN_GAP, sCollapsedColumnWidth = COLLAPSED_COLUMN_WIDTH, activeTagGroup = null, sCollapsedChipHeight = COLLAPSED_CHIP_HEIGHT, sCollapsedChipGap = COLLAPSED_CHIP_GAP, sCollapsedNameGap = COLLAPSED_NAME_GAP, sCardTitleMaxWidth = CARD_TITLE_MAX_WIDTH) {
257
283
  const showTitle = !!parsed.title && parsed.options["no-title"] !== "on";
258
284
  const headerHeight = showTitle ? sTitleHeight + 8 : 0;
259
285
  const startY = sDiagramPadding + headerHeight;
@@ -279,7 +305,10 @@ function computeLayout(parsed, _palette, collapsedColumns, hiddenMetaGroups, sDi
279
305
  const cardLayouts = [];
280
306
  let cardY = sColumnHeaderHeight + sColumnPadding;
281
307
  for (const card of col.cards) {
282
- const titleWidth = measureText(card.title, sCardTitleFontSize);
308
+ const titleWidth = Math.min(
309
+ measureText(card.title, sCardTitleFontSize),
310
+ sCardTitleMaxWidth
311
+ );
283
312
  maxCardTextWidth = Math.max(
284
313
  maxCardTextWidth,
285
314
  titleWidth + sCardPaddingX * 2
@@ -443,7 +472,10 @@ function drawKanban(container, parsed, palette, isDark, options) {
443
472
  activeTagGroup,
444
473
  sCollapsedChipHeight,
445
474
  sCollapsedChipGap,
446
- sCollapsedNameGap
475
+ sCollapsedNameGap,
476
+ // Reserved at the size the title is DRAWN at, which a shrunken screen layout
477
+ // does not shrink as far as its boxes, so the cap holds the same characters.
478
+ CARD_TITLE_MAX_WIDTH * (sCardTitleFontSize / CARD_TITLE_FONT_SIZE)
447
479
  );
448
480
  const width = exportDims?.width ?? layout.totalWidth;
449
481
  const height = exportDims?.height ?? layout.totalHeight;
@@ -561,6 +593,7 @@ function drawKanban(container, parsed, palette, isDark, options) {
561
593
  const col = colLayout.column;
562
594
  const isColCollapsed = collapsedColumns?.has(col.id) ?? false;
563
595
  const g = svg.append("g").attr("class", "kanban-column").attr("data-column-id", col.id).attr("data-line-number", col.lineNumber);
596
+ g.attr("data-group-toggle", col.id).attr("role", "button").attr("aria-expanded", String(!isColCollapsed)).attr("aria-label", col.name);
564
597
  const thisColBg = defaultColBg;
565
598
  const colColor = resolveColumnTagColor(col, parsed.tagGroups, activeTagGroup ?? null) ?? col.color;
566
599
  const thisColHeaderBg = colColor ? shapeFill(palette, colColor, isDark, { mode: fillMode }) : defaultColHeaderBg;
@@ -577,6 +610,17 @@ function drawKanban(container, parsed, palette, isDark, options) {
577
610
  g.append("rect").attr("x", colLayout.x).attr("y", colLayout.y).attr("width", sCollapsedColumnWidth).attr("height", sColumnHeaderHeight).attr("rx", sColumnHeaderRadius).attr("fill", thisColHeaderBg);
578
611
  g.append("text").attr("x", colLayout.x + sCollapsedColumnWidth / 2).attr("y", colLayout.y + sColumnHeaderHeight / 2).attr("dominant-baseline", "central").attr("font-size", sWipFontSize).attr("font-weight", "bold").attr("fill", col.color ? onHeaderText : palette.textMuted).attr("text-anchor", "middle").text(String(col.cards.length));
579
612
  g.append("text").attr("x", colLayout.x + sCollapsedColumnWidth / 2).attr("y", colLayout.y + sColumnHeaderHeight + sColumnPadding).attr("font-size", sCardTitleFontSize).attr("font-weight", "bold").attr("fill", palette.text).attr("text-anchor", "middle").attr("writing-mode", "tb").text(col.name);
613
+ renderCollapseBar(g, {
614
+ x: colLayout.x,
615
+ y: colLayout.y,
616
+ width: sCollapsedColumnWidth,
617
+ height: colLayout.height,
618
+ rx: sColumnRadius,
619
+ fill: colColor ?? wellStroke,
620
+ clipId: `kanban-col-clip-${col.id.replace(/[^A-Za-z0-9_-]/g, "_")}`,
621
+ prefix: "kanban",
622
+ scale: ctx
623
+ });
580
624
  const chips = collapsedChips(col.cards, activeGroup);
581
625
  if (chips.length > 0) {
582
626
  const chipX = colLayout.x + sCollapsedChipInset;
@@ -640,6 +684,18 @@ function drawKanban(container, parsed, palette, isDark, options) {
640
684
  wipExceeded ? palette.colors.red : col.color ? onHeaderText : palette.textMuted
641
685
  ).attr("font-weight", wipExceeded ? "bold" : "normal").text(badgeText);
642
686
  }
687
+ renderCollapseBar(g, {
688
+ expanded: true,
689
+ x: colLayout.x,
690
+ y: colLayout.y,
691
+ width: colLayout.width,
692
+ height: colLayout.height,
693
+ rx: sColumnRadius,
694
+ fill: colColor ?? wellStroke,
695
+ clipId: `kanban-col-clip-${col.id.replace(/[^A-Za-z0-9_-]/g, "_")}`,
696
+ prefix: "kanban",
697
+ scale: ctx
698
+ });
643
699
  for (const cardLayout of colLayout.cardLayouts) {
644
700
  const card = cardLayout.card;
645
701
  const resolvedColor = resolveCardTagColor(
@@ -681,7 +737,13 @@ function drawKanban(container, parsed, palette, isDark, options) {
681
737
  const cy = colLayout.y + cardLayout.y;
682
738
  cg.append("rect").attr("x", cx).attr("y", cy).attr("width", cardLayout.width).attr("height", cardLayout.height).attr("rx", sCardRadius).attr("fill", cardFill).attr("stroke", cardStroke).attr("stroke-width", sCardStrokeWidth);
683
739
  const titleEl = cg.append("text").attr("x", cx + sCardPaddingX).attr("y", cy + sCardPaddingY + sCardTitleFontSize).attr("font-size", sCardTitleFontSize).attr("font-weight", "normal").attr("fill", onCardText);
684
- renderInlineText(titleEl, card.title, palette, sCardTitleFontSize);
740
+ renderCardTitle(
741
+ titleEl,
742
+ card.title,
743
+ palette,
744
+ sCardTitleFontSize,
745
+ cardLayout.width - sCardPaddingX * 2
746
+ );
685
747
  if (hasMeta) {
686
748
  const separatorY = cy + sCardHeaderHeight;
687
749
  cg.append("line").attr("x1", cx).attr("y1", separatorY).attr("x2", cx + cardLayout.width).attr("y2", separatorY).attr("stroke", fillMode === "solid" ? onCardText : cardStroke).attr("stroke-opacity", 0.3).attr("stroke-width", 1);
@@ -1147,7 +1209,13 @@ function renderSwimlaneCard(parent, cardLayout, tagGroups, activeTagGroup, palet
1147
1209
  const cy = cardLayout.y;
1148
1210
  cg.append("rect").attr("x", cx).attr("y", cy).attr("width", cardLayout.width).attr("height", cardLayout.height).attr("rx", sCardRadius).attr("fill", cardFill).attr("stroke", cardStroke).attr("stroke-width", sCardStrokeWidth);
1149
1211
  const titleEl = cg.append("text").attr("x", cx + sCardPaddingX).attr("y", cy + sCardPaddingY + sCardTitleFontSize).attr("font-size", sCardTitleFontSize).attr("font-weight", "normal").attr("fill", onCardText);
1150
- renderInlineText(titleEl, card.title, palette, sCardTitleFontSize);
1212
+ renderCardTitle(
1213
+ titleEl,
1214
+ card.title,
1215
+ palette,
1216
+ sCardTitleFontSize,
1217
+ cardLayout.width - sCardPaddingX * 2
1218
+ );
1151
1219
  if (hasMeta) {
1152
1220
  const separatorY = cy + sCardHeaderHeight;
1153
1221
  cg.append("line").attr("x1", cx).attr("y1", separatorY).attr("x2", cx + cardLayout.width).attr("y2", separatorY).attr("stroke", cardStroke).attr("stroke-opacity", 0.3).attr("stroke-width", 1);
@@ -12,18 +12,19 @@ import {
12
12
  stripDefaultModifier,
13
13
  tagAttrKey,
14
14
  validateTagGroupNames
15
- } from "./chunk-LGUFJ7Y2.js";
15
+ } from "./chunk-KW3CC7SB.js";
16
16
  import {
17
17
  JOURNEY_MAP_REGISTRY,
18
18
  OPTION_NOCOLON_RE,
19
19
  extractColor,
20
20
  measureIndent,
21
21
  parseFirstLine,
22
+ peelTrailingCollapsedFlag,
22
23
  peelTrailingColorName,
23
24
  splitNameAndMeta,
24
25
  warnUnknownMetaKeys,
25
26
  withTagAliases
26
- } from "./chunk-FUYEXLAN.js";
27
+ } from "./chunk-RFGQDIOI.js";
27
28
  import {
28
29
  resolveColorWithDiagnostic
29
30
  } from "./chunk-3J7O3CU6.js";
@@ -35,7 +36,7 @@ import {
35
36
  } from "./chunk-BYU54C3S.js";
36
37
 
37
38
  // src/journey-map/parser.ts
38
- var PHASE_RE = /^\[(.+?)\]$/;
39
+ var PHASE_RE = /^\[(.+?)\](?:[ \t]+(.*))?$/;
39
40
  var ANNOTATION_RE = /^(pain|opportunity|thought)\s*:\s*(.+)$/i;
40
41
  var KNOWN_OPTIONS = /* @__PURE__ */ new Set(["active-tag"]);
41
42
  var KNOWN_BOOLEANS = /* @__PURE__ */ new Set([
@@ -235,13 +236,42 @@ function parseJourneyMap(content, palette) {
235
236
  currentStep.endLineNumber = lineNumber - 1;
236
237
  }
237
238
  currentStep = null;
239
+ let collapsed = false;
240
+ let tail = (phaseMatch[2] ?? "").trim();
241
+ const barePeel = peelTrailingCollapsedFlag(tail);
242
+ if (barePeel.collapsed) {
243
+ collapsed = true;
244
+ tail = barePeel.rest.trim();
245
+ }
246
+ if (tail) {
247
+ const split = splitNameAndMeta(
248
+ `_ ${tail}`,
249
+ JOURNEY_MAP_REGISTRY,
250
+ /* @__PURE__ */ new Map(),
251
+ void 0,
252
+ result.diagnostics,
253
+ lineNumber
254
+ );
255
+ const meta = { ...split.meta };
256
+ if ("collapsed" in meta) {
257
+ collapsed = meta["collapsed"].trim().toLowerCase() === "true";
258
+ delete meta["collapsed"];
259
+ }
260
+ if (split.name !== "_" || Object.keys(meta).length > 0) {
261
+ warn(
262
+ lineNumber,
263
+ `Unexpected text after phase header "[${phaseMatch[1].trim()}]" \u2014 only \`collapsed\` may follow it.`
264
+ );
265
+ }
266
+ }
238
267
  phaseCounter++;
239
268
  currentPhase = {
240
269
  id: `phase-${phaseCounter}`,
241
270
  // Capture group 1 present by regex shape.
242
271
  name: phaseMatch[1].trim(),
243
272
  steps: [],
244
- lineNumber
273
+ lineNumber,
274
+ ...collapsed && { collapsed: true }
245
275
  };
246
276
  result.phases.push(currentPhase);
247
277
  continue;
@@ -5,11 +5,11 @@ import {
5
5
  NOTE_GAP,
6
6
  noteBoxSize,
7
7
  noteConnectorPoints
8
- } from "./chunk-67N26CER.js";
8
+ } from "./chunk-DA2GIHAY.js";
9
9
  import {
10
10
  extractColor,
11
11
  measureIndent
12
- } from "./chunk-FUYEXLAN.js";
12
+ } from "./chunk-RFGQDIOI.js";
13
13
  import {
14
14
  makeDgmoError,
15
15
  suggest
@@ -5,7 +5,7 @@ import {
5
5
  TITLE_FONT_SIZE,
6
6
  TITLE_FONT_WEIGHT,
7
7
  TITLE_Y
8
- } from "./chunk-VLC6WNRD.js";
8
+ } from "./chunk-GULGSH2Z.js";
9
9
  import {
10
10
  wrapDescriptionLines
11
11
  } from "./chunk-7WEYXYLC.js";
@@ -17,11 +17,11 @@ import {
17
17
  } from "./chunk-ICLB27PZ.js";
18
18
  import {
19
19
  fillModeFromOptions
20
- } from "./chunk-FUYEXLAN.js";
20
+ } from "./chunk-RFGQDIOI.js";
21
21
  import {
22
22
  CHAR_WIDTH_RATIO,
23
23
  measureText
24
- } from "./chunk-KAO7JL4I.js";
24
+ } from "./chunk-PU5X3P3T.js";
25
25
  import {
26
26
  contrastText,
27
27
  getSeriesColors,