@diagrammo/dgmo 0.52.0 → 0.53.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (329) hide show
  1. package/.cursorrules +59 -58
  2. package/.github/copilot-instructions.md +59 -58
  3. package/.windsurfrules +59 -58
  4. package/SKILL.md +59 -58
  5. package/dist/advanced.d.ts +65 -230
  6. package/dist/advanced.js +278 -611
  7. package/dist/analyzer-TDN5KJFP.js +15 -0
  8. package/dist/auto.css +14 -6
  9. package/dist/auto.js +142 -132
  10. package/dist/auto.mjs +1117 -452
  11. package/dist/block.css +14 -6
  12. package/dist/block.js +85 -72
  13. package/dist/calculator-VBIT6GQF.js +11 -0
  14. package/dist/chart-meta-CPNVUZ5J.d.ts +232 -0
  15. package/dist/chart-meta.d.ts +2 -0
  16. package/dist/chart-meta.js +105 -0
  17. package/dist/charts-d3-DH2XA45I.js +26 -0
  18. package/dist/{chunk-QJMKPUYK.js → chunk-22OQWBWD.js} +14 -7
  19. package/dist/{chunk-5NGAO4QK.js → chunk-27STWBOK.js} +10 -8
  20. package/dist/{chunk-QGATPIPX.js → chunk-2QC4HXCY.js} +31 -17
  21. package/dist/{chunk-HFMYN6N2.js → chunk-3B2GXZCX.js} +4 -3
  22. package/dist/{chunk-6HQH6JZE.js → chunk-3BEKKRH5.js} +10 -10
  23. package/dist/{chunk-AL672HNE.js → chunk-3CZLWOCI.js} +17 -7
  24. package/dist/{chunk-J7TLCB2Q.js → chunk-3IUHKMJI.js} +2 -2
  25. package/dist/{chunk-7L4UJOY6.js → chunk-3TYUXC7D.js} +2 -2
  26. package/dist/{chunk-Y2ZE3MSG.js → chunk-43E26CDA.js} +2 -2
  27. package/dist/{chunk-YTMTPUH4.js → chunk-4ASVFYB2.js} +6 -6
  28. package/dist/{chunk-WCT3NYCV.js → chunk-4ASYQ347.js} +33 -8
  29. package/dist/{chunk-ZNWAYU6N.js → chunk-4K42RUGC.js} +33 -9
  30. package/dist/{chunk-I5IGB56C.js → chunk-4QV26TEG.js} +41 -1
  31. package/dist/{chunk-QOOUC2J5.js → chunk-4RGZFA7H.js} +2 -2
  32. package/dist/{chunk-CXK4DZH3.js → chunk-4W2PE66Q.js} +12 -2
  33. package/dist/{chunk-CIRFIL4M.js → chunk-4WGMGKCZ.js} +13 -13
  34. package/dist/{chunk-JED6ZDEE.js → chunk-5HWPEYWB.js} +2 -2
  35. package/dist/{chunk-VQOCMUWI.js → chunk-65V6IRFN.js} +16 -14
  36. package/dist/{chunk-R3YSD62R.js → chunk-6AUZPPAV.js} +3 -3
  37. package/dist/{chunk-FQ7HTV52.js → chunk-6DCOIN4W.js} +33 -5
  38. package/dist/{chunk-MUE65OTD.js → chunk-6HTRCTAS.js} +4 -4
  39. package/dist/{chunk-TJVLKNGR.js → chunk-6KY7OCZC.js} +5 -5
  40. package/dist/{chunk-YAA6IID3.js → chunk-774C2FF3.js} +2 -2
  41. package/dist/{chunk-UBLHQTLV.js → chunk-7GUF6SDR.js} +15 -14
  42. package/dist/{chunk-5HILBT7X.js → chunk-7JDTNFAK.js} +3 -3
  43. package/dist/{chunk-QBZYACOG.js → chunk-ADYKAKE3.js} +3 -3
  44. package/dist/{chunk-H7KENAZO.js → chunk-AHXIMHDQ.js} +74 -14
  45. package/dist/chunk-AIMLCDAO.js +404 -0
  46. package/dist/{chunk-4IHAV6O7.js → chunk-ALYZ3MAA.js} +4 -4
  47. package/dist/{chunk-ROOE4R4Y.js → chunk-AN2DQB3G.js} +146 -18
  48. package/dist/{chunk-GCYTI3DE.js → chunk-AZNXGWDC.js} +56 -10
  49. package/dist/{chunk-3LK5DNED.js → chunk-B4XS2AF2.js} +3 -3
  50. package/dist/{chunk-3HF5YEFJ.js → chunk-BD3WGY4T.js} +4 -4
  51. package/dist/{chunk-4AQRFDXL.js → chunk-BFDVEO5R.js} +2 -2
  52. package/dist/{chunk-REJAIQ5S.js → chunk-BR7AYN76.js} +8 -8
  53. package/dist/{chunk-P3NRSSUU.js → chunk-BULHGPHK.js} +3 -3
  54. package/dist/{chunk-VILVLS7P.js → chunk-CK2GMDXD.js} +8 -4
  55. package/dist/{chunk-HHKO6SKY.js → chunk-CMVZWP32.js} +3 -3
  56. package/dist/{chunk-GJFAMOGK.js → chunk-CQFNIIQN.js} +7 -7
  57. package/dist/{chunk-FT3ZYWET.js → chunk-DWUMPMV2.js} +11 -10
  58. package/dist/{chunk-USZW2HHU.js → chunk-EQW6HOP4.js} +4 -3
  59. package/dist/{chunk-Z5QVYKR7.js → chunk-FFXCKZOU.js} +4 -4
  60. package/dist/{chunk-WRNFDFPU.js → chunk-FGDSTT3F.js} +2 -2
  61. package/dist/{chunk-FY5MSZAP.js → chunk-FLDC7ZAK.js} +21 -6
  62. package/dist/{chunk-AAXZDUOV.js → chunk-FT7TPPZ5.js} +17 -16
  63. package/dist/{chunk-3QD7VP3U.js → chunk-FUKNRLIJ.js} +14 -7
  64. package/dist/{chunk-3YRPZ7ZZ.js → chunk-FXCB7H5O.js} +4 -4
  65. package/dist/{chunk-SMRFPVLQ.js → chunk-GABSL6TH.js} +4 -4
  66. package/dist/{chunk-BKVOYV6I.js → chunk-GAWKIIPO.js} +17 -17
  67. package/dist/{chunk-HWX6ZHF3.js → chunk-GMAH572Z.js} +6 -6
  68. package/dist/{chunk-MUVJ57EP.js → chunk-GMIJ35PW.js} +23 -20
  69. package/dist/{chunk-7QE3XMRK.js → chunk-GQ644SPD.js} +18 -18
  70. package/dist/{chunk-5QKQSSPO.js → chunk-GRM2A4BG.js} +4 -4
  71. package/dist/{chunk-J7KJR3R6.js → chunk-GWQJKTFS.js} +133 -696
  72. package/dist/{chunk-OTOHI4JO.js → chunk-H3HFC3SQ.js} +2 -2
  73. package/dist/{chunk-SWSIKFEB.js → chunk-HE5J53SZ.js} +4 -4
  74. package/dist/{chunk-7BIZCTAX.js → chunk-HNBY6CNV.js} +3 -3
  75. package/dist/{chunk-J76PIKAT.js → chunk-HO3RCNF6.js} +3 -3
  76. package/dist/{chunk-44VCIPHF.js → chunk-HORZ5H2L.js} +26 -23
  77. package/dist/{chunk-MX2EY5Y7.js → chunk-HOXKNRON.js} +2 -2
  78. package/dist/{chunk-LTXOLDUZ.js → chunk-I64ECJX3.js} +12 -5
  79. package/dist/{chunk-4YFKQ5WT.js → chunk-IQJCVREL.js} +8 -8
  80. package/dist/{chunk-YIBAWQGJ.js → chunk-J7HI6G3G.js} +7 -7
  81. package/dist/{chunk-ICPJPQ5C.js → chunk-JHOAH4TI.js} +3 -3
  82. package/dist/{chunk-6EJITS44.js → chunk-JTMSWEIW.js} +6 -6
  83. package/dist/{chunk-WBM7ZNDI.js → chunk-JYDMBWRP.js} +35 -18
  84. package/dist/{chunk-7DF4J4RL.js → chunk-KKHCNSKK.js} +17 -11
  85. package/dist/{chunk-4UNQ6X24.js → chunk-KUSAVOWZ.js} +4 -4
  86. package/dist/{chunk-77FGAVZC.js → chunk-LC3FFD43.js} +21 -19
  87. package/dist/{chunk-INE5YJBZ.js → chunk-LHILKFDP.js} +10 -10
  88. package/dist/{chunk-ONU3U4GL.js → chunk-LQHVDZYC.js} +52 -16
  89. package/dist/{chunk-75G3Q4DK.js → chunk-MA3HJZHB.js} +5 -5
  90. package/dist/{chunk-QVENJMNX.js → chunk-MEQYZZFR.js} +2 -2
  91. package/dist/{chunk-IM6PDDCE.js → chunk-NNUMX6WX.js} +42 -12
  92. package/dist/{chunk-FQMUHRVC.js → chunk-NNYFQOTK.js} +14 -13
  93. package/dist/{chunk-H6PI3KJT.js → chunk-ODUT5WMC.js} +2 -2
  94. package/dist/{chunk-K4EOKJA6.js → chunk-P3H7QVDH.js} +42 -15
  95. package/dist/{chunk-FUPF2UYQ.js → chunk-PIXZTCKH.js} +51 -108
  96. package/dist/{chunk-BPY242XU.js → chunk-PKNNHU7H.js} +19 -8
  97. package/dist/{chunk-BPIZNB5O.js → chunk-PT4SW76W.js} +11 -11
  98. package/dist/{chunk-UNURMIQO.js → chunk-PV2QO7QL.js} +4 -4
  99. package/dist/{chunk-LGT3PZCJ.js → chunk-PYO4TJJ3.js} +17 -17
  100. package/dist/{chunk-EMLPOL77.js → chunk-Q7AH665U.js} +15 -8
  101. package/dist/{chunk-LBMS4AW6.js → chunk-QAALSCKI.js} +14 -14
  102. package/dist/{chunk-JRCOYRRH.js → chunk-QI3BOLQB.js} +8 -8
  103. package/dist/{chunk-CCNDLW7Z.js → chunk-QWIBT6DS.js} +13 -13
  104. package/dist/{chunk-GU46PPT3.js → chunk-QXGACPS2.js} +5 -5
  105. package/dist/{chunk-FMDSF3OV.js → chunk-QZAW5SFH.js} +2 -2
  106. package/dist/{chunk-QHXCAEMX.js → chunk-R5NH5BZG.js} +8 -8
  107. package/dist/{chunk-5223KXFD.js → chunk-RJ5LBZ5U.js} +7 -7
  108. package/dist/{chunk-PRI2OD4E.js → chunk-RW5PEJ7D.js} +11 -6
  109. package/dist/{chunk-DYWQFQJP.js → chunk-SG4PRYO3.js} +22 -20
  110. package/dist/{chunk-NNS4E7CW.js → chunk-SGPFVDUL.js} +15 -6
  111. package/dist/{chunk-ZEF5M5MB.js → chunk-SQCBSFT5.js} +72 -74
  112. package/dist/{chunk-3HGU63UY.js → chunk-U7NKYLX2.js} +14 -13
  113. package/dist/chunk-U7VO6JAA.js +566 -0
  114. package/dist/{chunk-ZJV7GYR4.js → chunk-UFQJMOVZ.js} +10 -10
  115. package/dist/{chunk-Z72XRXD4.js → chunk-UJRTPOHH.js} +3 -3
  116. package/dist/{chunk-J6QROYDA.js → chunk-UK6DKJLD.js} +26 -10
  117. package/dist/{chunk-QZX5S6R3.js → chunk-UKP5HWB5.js} +149 -89
  118. package/dist/{chunk-T4A4TSTJ.js → chunk-UQRIKAMH.js} +21 -19
  119. package/dist/{chunk-TYS6CSS5.js → chunk-UU6LUYUH.js} +2 -2
  120. package/dist/{chunk-5BHJZH62.js → chunk-UVDCHR4E.js} +18 -6
  121. package/dist/{chunk-HQQNCY7W.js → chunk-VAO6ANGC.js} +5 -5
  122. package/dist/{chunk-6NYWYNBI.js → chunk-VGNIDAPQ.js} +4 -4
  123. package/dist/{chunk-VL2O2F3W.js → chunk-VHO3YBTB.js} +2 -2
  124. package/dist/{chunk-FHGVORFO.js → chunk-VIRANCNY.js} +14 -14
  125. package/dist/{chunk-XD6ZYURY.js → chunk-VJHBSPGF.js} +7 -14
  126. package/dist/{chunk-5RP7JRVP.js → chunk-VKNCC2GX.js} +12 -8
  127. package/dist/{chunk-TPFKKXCB.js → chunk-VRRDUYOK.js} +7 -7
  128. package/dist/{chunk-K2I2XOZD.js → chunk-W2DINCHL.js} +11 -11
  129. package/dist/{chunk-AUIM2NVH.js → chunk-W5KMNC5U.js} +8 -8
  130. package/dist/{chunk-FFUN5D66.js → chunk-WF64MW5G.js} +2 -2
  131. package/dist/{chunk-6LBQ7ELG.js → chunk-X3RXGSCZ.js} +40 -21
  132. package/dist/{chunk-HBPDFCQY.js → chunk-XEAQDIMF.js} +7 -6
  133. package/dist/{chunk-TTIM6YTT.js → chunk-XG4NWFPY.js} +17 -16
  134. package/dist/{chunk-7KINELPI.js → chunk-XQ4KN6JQ.js} +23 -23
  135. package/dist/{chunk-WBRZJOEC.js → chunk-XY3UDKKH.js} +4 -4
  136. package/dist/{chunk-5SEVICBT.js → chunk-YG2BEIQU.js} +14 -13
  137. package/dist/{chunk-BRENJ2BQ.js → chunk-YJVA3QUU.js} +24 -4
  138. package/dist/{chunk-KGVZ5VGH.js → chunk-YR43LJT5.js} +16 -15
  139. package/dist/{chunk-TLVIHFRO.js → chunk-ZKPPI6BF.js} +2 -2
  140. package/dist/{chunk-ARGMQ3H4.js → chunk-ZXUAPTCK.js} +3 -3
  141. package/dist/cli.cjs +156 -154
  142. package/dist/clock.js +9 -1
  143. package/dist/countdown.js +4 -3
  144. package/dist/dgmo-router-B4S23EBH.js +86 -0
  145. package/dist/dimensions-K6PGYYGT.js +22 -0
  146. package/dist/editor.js +33 -5
  147. package/dist/element.js +142 -132
  148. package/dist/element.mjs +1117 -452
  149. package/dist/flowchart-parser-LALR6J6F.js +21 -0
  150. package/dist/{flowchart-renderer-MNCDS7MV.js → flowchart-renderer-DXYB5YRF.js} +14 -14
  151. package/dist/highlight.js +37 -6
  152. package/dist/index.d.ts +4 -2
  153. package/dist/index.js +78 -73
  154. package/dist/layout-3BVDMKXI.js +15 -0
  155. package/dist/layout-3M5UYJHY.js +14 -0
  156. package/dist/{layout-2L3WMRYU.js → layout-3V2A4MUE.js} +8 -8
  157. package/dist/layout-4IHCMWZN.js +19 -0
  158. package/dist/layout-5XGYNYVT.js +9 -0
  159. package/dist/layout-AZUPXWSK.js +15 -0
  160. package/dist/{layout-F4WO357A.js → layout-CAAKQX4W.js} +3 -3
  161. package/dist/{layout-A5UHRWVH.js → layout-CB3XWCOI.js} +3 -3
  162. package/dist/{layout-OAC4PEAC.js → layout-E6HR6PXH.js} +7 -7
  163. package/dist/{layout-7QXCNOVS.js → layout-HBWT2G23.js} +3 -3
  164. package/dist/layout-KPQWJNAG.js +14 -0
  165. package/dist/layout-OL2XFJXA.js +17 -0
  166. package/dist/layout-WCAIKGZG.js +19 -0
  167. package/dist/layout-WSMPBQ4Q.js +17 -0
  168. package/dist/layout-ZE5DRJWX.js +20 -0
  169. package/dist/{layout-search-55FU6HD3.js → layout-search-34DPZD43.js} +51 -35
  170. package/dist/legend-constants-P5EQWRQQ.js +49 -0
  171. package/dist/{palettes-UDLZ2SA4.js → palettes-FGTNFARW.js} +4 -4
  172. package/dist/{parser-EYCKNKQA.js → parser-275KP7JO.js} +8 -8
  173. package/dist/parser-27Z76SN3.js +22 -0
  174. package/dist/parser-3CODK6RG.js +15 -0
  175. package/dist/{parser-YKYMQG3B.js → parser-3KIGEEJM.js} +6 -6
  176. package/dist/parser-3VSWEKBF.js +15 -0
  177. package/dist/parser-4E4I3GNT.js +13 -0
  178. package/dist/parser-5FGJSQNS.js +12 -0
  179. package/dist/parser-5HQXCNOS.js +12 -0
  180. package/dist/parser-5QPFOB5F.js +12 -0
  181. package/dist/parser-6B6SSZT7.js +11 -0
  182. package/dist/parser-6PPHAXXH.js +14 -0
  183. package/dist/parser-7JHWEWXM.js +13 -0
  184. package/dist/{parser-DQAFLUJB.js → parser-7JVIDLLR.js} +7 -7
  185. package/dist/parser-CKA3QMAG.js +18 -0
  186. package/dist/parser-CRKLXGW7.js +13 -0
  187. package/dist/parser-EXNBDNGY.js +11 -0
  188. package/dist/parser-FF4BMRSB.js +16 -0
  189. package/dist/parser-FOOFEJQU.js +13 -0
  190. package/dist/parser-G26MTBFS.js +11 -0
  191. package/dist/parser-GKP2MHHL.js +11 -0
  192. package/dist/parser-GN2MM5CC.js +11 -0
  193. package/dist/parser-IKWK2ZU3.js +18 -0
  194. package/dist/parser-IVGHXLZP.js +14 -0
  195. package/dist/parser-NNIL3HXU.js +11 -0
  196. package/dist/parser-RNLTBIJ6.js +19 -0
  197. package/dist/parser-UWRX52PC.js +16 -0
  198. package/dist/parser-VOERD6XR.js +14 -0
  199. package/dist/parser-XNKJCMMA.js +13 -0
  200. package/dist/parser-XVPTRWZ4.js +15 -0
  201. package/dist/parser-YSLNDFLV.js +22 -0
  202. package/dist/{parser-ZL5QUFVH.js → parser-ZGNXYFPS.js} +5 -5
  203. package/dist/parser-ZQDQTB4X.js +20 -0
  204. package/dist/pert.d.ts +2 -0
  205. package/dist/registry-CaSw0PSH.d.ts +350 -0
  206. package/dist/renderer-2C6DJRYN.js +24 -0
  207. package/dist/renderer-5MPN7CXZ.js +19 -0
  208. package/dist/renderer-6EN5XXJZ.js +27 -0
  209. package/dist/renderer-6WRYVM5R.js +24 -0
  210. package/dist/renderer-7NQSTQMQ.js +16 -0
  211. package/dist/renderer-7ZNVOVFG.js +16 -0
  212. package/dist/{renderer-DT4XRFEP.js → renderer-AK2WO4EI.js} +7 -7
  213. package/dist/renderer-COLQFSFV.js +26 -0
  214. package/dist/{renderer-3F7OS2AX.js → renderer-CWEFGEIC.js} +15 -15
  215. package/dist/renderer-D3BRNOMV.js +29 -0
  216. package/dist/renderer-HIFQVEJA.js +22 -0
  217. package/dist/renderer-JCZG6AYU.js +28 -0
  218. package/dist/{renderer-ZWIH4WDW.js → renderer-JTCX6PCG.js} +13 -13
  219. package/dist/renderer-JWGQSTMR.js +37 -0
  220. package/dist/{renderer-NHO46CT2.js → renderer-K7XLVPH5.js} +6 -6
  221. package/dist/renderer-KARQF3F3.js +22 -0
  222. package/dist/renderer-LVZAHRP6.js +34 -0
  223. package/dist/{renderer-CQY6ATOS.js → renderer-NE5W7CQP.js} +8 -8
  224. package/dist/renderer-QD2SJF2I.js +34 -0
  225. package/dist/renderer-RLMOTXZ6.js +37 -0
  226. package/dist/renderer-SQ54MDSA.js +26 -0
  227. package/dist/{renderer-HSHHVYWF.js → renderer-TYHGXAVT.js} +7 -7
  228. package/dist/renderer-UKXW2QPE.js +23 -0
  229. package/dist/renderer-UPF7NRTI.js +28 -0
  230. package/dist/renderer-VMH6L6CP.js +24 -0
  231. package/dist/{renderer-5DAKMIU2.js → renderer-WCWI4I6A.js} +5 -5
  232. package/dist/renderer-WFSUBKUL.js +25 -0
  233. package/dist/renderer-WNFXYYGL.js +21 -0
  234. package/dist/{renderer-KNFTTOBL.js → renderer-XTXSOK3L.js} +14 -14
  235. package/dist/renderer-YUKPS27O.js +24 -0
  236. package/dist/renderer-YUXGXGSW.js +27 -0
  237. package/dist/renderer-ZBTEX2JK.js +16 -0
  238. package/dist/renderer-radial-WF6VOUOD.js +21 -0
  239. package/dist/{resolver-EMTGNR3D.js → resolver-WFKZYBJ2.js} +4 -4
  240. package/dist/state-parser-L7DHZIQO.js +19 -0
  241. package/dist/state-renderer-TFEUOP4H.js +38 -0
  242. package/dist/{themes-32xj5ZTW.d.ts → themes-tbBkIVsn.d.ts} +2 -349
  243. package/docs/ai-integration.md +59 -58
  244. package/docs/language-reference.md +323 -286
  245. package/fonts/Inter-Bold.woff2 +0 -0
  246. package/fonts/Inter-Regular.woff2 +0 -0
  247. package/gallery/fixtures/boxes-and-lines-diverging.dgmo +1 -2
  248. package/gallery/fixtures/boxes-and-lines.dgmo +1 -1
  249. package/gallery/fixtures/clock.dgmo +1 -1
  250. package/gallery/fixtures/event-line.dgmo +1 -1
  251. package/gallery/fixtures/gantt-full.dgmo +1 -1
  252. package/gallery/fixtures/gantt-sprints.dgmo +9 -9
  253. package/gallery/fixtures/gantt.dgmo +1 -1
  254. package/gallery/fixtures/legacy-syntax-backcompat.dgmo +16 -0
  255. package/gallery/fixtures/state-tags.dgmo +40 -0
  256. package/gallery/fixtures/swimlane.dgmo +1 -1
  257. package/gallery/fixtures/timeline-intraday.dgmo +1 -1
  258. package/package.json +5 -1
  259. package/dist/analyzer-BJ54GIFB.js +0 -15
  260. package/dist/calculator-LDYQCDDY.js +0 -11
  261. package/dist/charts-d3-MXEP6BNP.js +0 -26
  262. package/dist/dgmo-router-X7ZGAPIE.js +0 -86
  263. package/dist/dimensions-45H6JQEY.js +0 -22
  264. package/dist/flowchart-parser-UKELHBSB.js +0 -21
  265. package/dist/layout-46N4JJYK.js +0 -17
  266. package/dist/layout-A4XWNVID.js +0 -14
  267. package/dist/layout-AM2JWW3X.js +0 -15
  268. package/dist/layout-EE6GE46Y.js +0 -17
  269. package/dist/layout-G23F7LDH.js +0 -9
  270. package/dist/layout-GM4UGR7B.js +0 -19
  271. package/dist/layout-GQQJXNYH.js +0 -15
  272. package/dist/layout-IIE2S5FK.js +0 -20
  273. package/dist/layout-VMCRX66I.js +0 -14
  274. package/dist/layout-ZDOSXL5G.js +0 -19
  275. package/dist/parser-2ECN6JA2.js +0 -16
  276. package/dist/parser-4WTIHM5J.js +0 -11
  277. package/dist/parser-5H2BTSJQ.js +0 -11
  278. package/dist/parser-75KVXUNS.js +0 -16
  279. package/dist/parser-774AC53T.js +0 -13
  280. package/dist/parser-BE4YCSRU.js +0 -11
  281. package/dist/parser-CNGUQUQI.js +0 -11
  282. package/dist/parser-DEUUSQIN.js +0 -22
  283. package/dist/parser-FXISIU6A.js +0 -14
  284. package/dist/parser-GTB4XC7P.js +0 -18
  285. package/dist/parser-GVEPAUSD.js +0 -12
  286. package/dist/parser-HSQGTY4G.js +0 -19
  287. package/dist/parser-HVKRINUS.js +0 -11
  288. package/dist/parser-J5MIEYO4.js +0 -15
  289. package/dist/parser-KMZIXLDZ.js +0 -13
  290. package/dist/parser-LJHXWSXU.js +0 -14
  291. package/dist/parser-PT3W72G5.js +0 -15
  292. package/dist/parser-SBJQDPHL.js +0 -15
  293. package/dist/parser-SUWWWCMX.js +0 -12
  294. package/dist/parser-SXDRNZOA.js +0 -13
  295. package/dist/parser-UMILOW3M.js +0 -14
  296. package/dist/parser-UP3AZ367.js +0 -13
  297. package/dist/parser-WHPRV3X5.js +0 -20
  298. package/dist/parser-WX3UODSJ.js +0 -12
  299. package/dist/parser-XCIEN3KN.js +0 -13
  300. package/dist/parser-XIRTUMVN.js +0 -18
  301. package/dist/parser-YKCGIG45.js +0 -11
  302. package/dist/parser-ZGM2OJ6Y.js +0 -22
  303. package/dist/renderer-4QB4K7Q3.js +0 -24
  304. package/dist/renderer-5H4SY7YY.js +0 -22
  305. package/dist/renderer-5PIQPFOX.js +0 -16
  306. package/dist/renderer-6MU37QF5.js +0 -19
  307. package/dist/renderer-AQVMWJ4M.js +0 -27
  308. package/dist/renderer-BDDW6K7N.js +0 -24
  309. package/dist/renderer-BNB3VIDY.js +0 -26
  310. package/dist/renderer-CVW75CXL.js +0 -37
  311. package/dist/renderer-ERHBSTQT.js +0 -25
  312. package/dist/renderer-IDPVUFNB.js +0 -28
  313. package/dist/renderer-ILX6BGKR.js +0 -21
  314. package/dist/renderer-JP663HKG.js +0 -22
  315. package/dist/renderer-MVUZBESR.js +0 -16
  316. package/dist/renderer-N4EBR2FV.js +0 -28
  317. package/dist/renderer-NO2QJ5LZ.js +0 -27
  318. package/dist/renderer-OGFV5RXX.js +0 -34
  319. package/dist/renderer-PDLESJMS.js +0 -37
  320. package/dist/renderer-T4MTNINC.js +0 -24
  321. package/dist/renderer-TOUGFGTM.js +0 -24
  322. package/dist/renderer-U3KPD43Y.js +0 -34
  323. package/dist/renderer-X334IJU2.js +0 -26
  324. package/dist/renderer-Y5OAMOCR.js +0 -23
  325. package/dist/renderer-YONAKAJU.js +0 -16
  326. package/dist/renderer-YWMI6Y2U.js +0 -29
  327. package/dist/renderer-radial-7CGZMVMS.js +0 -21
  328. package/dist/state-parser-BATWAID2.js +0 -18
  329. package/dist/state-renderer-3FKZJ3LP.js +0 -34
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-YYVTBZZC.js";
10
10
  import {
11
11
  renderIntegratedLegend
12
- } from "./chunk-AUIM2NVH.js";
12
+ } from "./chunk-W5KMNC5U.js";
13
13
  import {
14
14
  TITLE_FONT_SIZE,
15
15
  TITLE_FONT_WEIGHT,
@@ -18,23 +18,23 @@ import {
18
18
  import {
19
19
  FONT_FAMILY
20
20
  } from "./chunk-6KFWC4CO.js";
21
+ import {
22
+ contrastText,
23
+ shapeFill
24
+ } from "./chunk-JYDMBWRP.js";
21
25
  import {
22
26
  LEGEND_HEIGHT
23
- } from "./chunk-QOOUC2J5.js";
27
+ } from "./chunk-4RGZFA7H.js";
24
28
  import {
25
29
  measureText,
26
30
  wrapTextToWidth
27
- } from "./chunk-WCT3NYCV.js";
28
- import {
29
- contrastText,
30
- shapeFill
31
- } from "./chunk-WBM7ZNDI.js";
31
+ } from "./chunk-4ASYQ347.js";
32
32
  import {
33
33
  fillModeFromOptions
34
- } from "./chunk-BRENJ2BQ.js";
34
+ } from "./chunk-YJVA3QUU.js";
35
35
  import {
36
36
  resolveColor
37
- } from "./chunk-TLVIHFRO.js";
37
+ } from "./chunk-ZKPPI6BF.js";
38
38
 
39
39
  // src/cycle/renderer.ts
40
40
  import * as d3Selection from "d3-selection";
@@ -969,4 +969,4 @@ export {
969
969
  renderCycle,
970
970
  renderCycleForExport
971
971
  };
972
- //# sourceMappingURL=chunk-INE5YJBZ.js.map
972
+ //# sourceMappingURL=chunk-LHILKFDP.js.map
@@ -8,14 +8,17 @@ import {
8
8
  LEGEND_PILL_FONT_SIZE,
9
9
  LEGEND_PILL_PAD,
10
10
  measureLegendText
11
- } from "./chunk-QOOUC2J5.js";
11
+ } from "./chunk-4RGZFA7H.js";
12
12
  import {
13
13
  measureText,
14
14
  wrapTextToWidth
15
- } from "./chunk-WCT3NYCV.js";
15
+ } from "./chunk-4ASYQ347.js";
16
16
  import {
17
17
  tagAttrKey
18
- } from "./chunk-HHKO6SKY.js";
18
+ } from "./chunk-CMVZWP32.js";
19
+ import {
20
+ legendSuppressed
21
+ } from "./chunk-YJVA3QUU.js";
19
22
 
20
23
  // src/c4/layout.ts
21
24
  import dagre from "@dagrejs/dagre";
@@ -37,6 +40,23 @@ var MARGIN = 40;
37
40
  var BOUNDARY_PAD = 40;
38
41
  var GROUP_BOUNDARY_PAD = 24;
39
42
  var EDGE_NODE_COLLISION_WEIGHT = 5e3;
43
+ function transposeGraph(g) {
44
+ for (const name of g.nodes()) {
45
+ const pos = gNode(g, name);
46
+ if (!pos) continue;
47
+ [pos.x, pos.y] = [pos.y, pos.x];
48
+ [pos.width, pos.height] = [pos.height, pos.width];
49
+ }
50
+ }
51
+ function reduceCrossingsForDirection(g, direction, edgeList, nodeGroupMap) {
52
+ if (direction === "LR") {
53
+ transposeGraph(g);
54
+ reduceCrossings(g, edgeList, nodeGroupMap);
55
+ transposeGraph(g);
56
+ return;
57
+ }
58
+ reduceCrossings(g, edgeList, nodeGroupMap);
59
+ }
40
60
  function computeEdgePenalty(edgeList, nodePositions, degrees, nodeGeometry) {
41
61
  let penalty = 0;
42
62
  for (const edge of edgeList) {
@@ -467,9 +487,10 @@ function layoutC4Context(parsed, activeTagGroup) {
467
487
  }
468
488
  const contextRels = rollUpContextRelationships(parsed);
469
489
  const spacing = computeAdaptiveSpacing(contextRels);
490
+ const direction = parsed.direction;
470
491
  const g = new dagre.graphlib.Graph();
471
492
  g.setGraph({
472
- rankdir: "TB",
493
+ rankdir: direction,
473
494
  nodesep: spacing.nodesep,
474
495
  ranksep: spacing.ranksep,
475
496
  edgesep: spacing.edgesep
@@ -489,8 +510,9 @@ function layoutC4Context(parsed, activeTagGroup) {
489
510
  }
490
511
  }
491
512
  dagre.layout(g);
492
- reduceCrossings(
513
+ reduceCrossingsForDirection(
493
514
  g,
515
+ direction,
494
516
  validRels.map((r) => ({ source: r.sourceName, target: r.targetName }))
495
517
  );
496
518
  const nodes = contextElements.map(
@@ -570,7 +592,9 @@ function layoutC4Context(parsed, activeTagGroup) {
570
592
  }
571
593
  let totalWidth = nodes.length > 0 ? maxX - minX + MARGIN * 2 : 0;
572
594
  let totalHeight = nodes.length > 0 ? maxY - minY + MARGIN * 2 : 0;
573
- const legendGroups = computeLegendGroups(parsed.tagGroups);
595
+ const legendGroups = computeLegendGroups(
596
+ legendSuppressed(parsed.options) ? [] : parsed.tagGroups
597
+ );
574
598
  if (legendGroups.length > 0) {
575
599
  const legendY = totalHeight + MARGIN;
576
600
  let legendX = MARGIN;
@@ -666,6 +690,7 @@ function layoutC4Containers(parsed, systemName, activeTagGroup) {
666
690
  }
667
691
  }
668
692
  const hasGroups = elementToGroup.size > 0;
693
+ const direction = parsed.direction;
669
694
  const g = hasGroups ? new dagre.graphlib.Graph({ compound: true }) : new dagre.graphlib.Graph();
670
695
  g.setDefaultEdgeLabel(() => ({}));
671
696
  if (hasGroups) {
@@ -734,7 +759,7 @@ function layoutC4Containers(parsed, systemName, activeTagGroup) {
734
759
  }
735
760
  const spacing = computeAdaptiveSpacing(containerRels);
736
761
  g.setGraph({
737
- rankdir: "TB",
762
+ rankdir: direction,
738
763
  nodesep: spacing.nodesep,
739
764
  ranksep: spacing.ranksep,
740
765
  edgesep: spacing.edgesep
@@ -746,8 +771,9 @@ function layoutC4Containers(parsed, systemName, activeTagGroup) {
746
771
  }
747
772
  dagre.layout(g);
748
773
  const nodeGroupMap = hasGroups ? new Map([...elementToGroup.entries()].map(([k, v]) => [k, v.name])) : void 0;
749
- reduceCrossings(
774
+ reduceCrossingsForDirection(
750
775
  g,
776
+ direction,
751
777
  containerRels.filter(
752
778
  (r) => nameToElement.has(r.sourceName) && nameToElement.has(r.targetName)
753
779
  ).map((r) => ({ source: r.sourceName, target: r.targetName })),
@@ -925,7 +951,9 @@ function layoutC4Containers(parsed, systemName, activeTagGroup) {
925
951
  }
926
952
  let totalWidth = maxX - minX + MARGIN * 2;
927
953
  let totalHeight = maxY - minY + MARGIN * 2;
928
- const legendGroups = computeLegendGroups(parsed.tagGroups);
954
+ const legendGroups = computeLegendGroups(
955
+ legendSuppressed(parsed.options) ? [] : parsed.tagGroups
956
+ );
929
957
  if (legendGroups.length > 0) {
930
958
  const legendY = totalHeight + MARGIN;
931
959
  let legendX = MARGIN;
@@ -1073,6 +1101,7 @@ function layoutC4Components(parsed, systemName, containerName, activeTagGroup) {
1073
1101
  }
1074
1102
  }
1075
1103
  const hasGroups = elementToGroup.size > 0;
1104
+ const direction = parsed.direction;
1076
1105
  const g = hasGroups ? new dagre.graphlib.Graph({ compound: true }) : new dagre.graphlib.Graph();
1077
1106
  g.setDefaultEdgeLabel(() => ({}));
1078
1107
  if (hasGroups) {
@@ -1147,7 +1176,7 @@ function layoutC4Components(parsed, systemName, containerName, activeTagGroup) {
1147
1176
  }
1148
1177
  const spacing = computeAdaptiveSpacing(componentRels);
1149
1178
  g.setGraph({
1150
- rankdir: "TB",
1179
+ rankdir: direction,
1151
1180
  nodesep: spacing.nodesep,
1152
1181
  ranksep: spacing.ranksep,
1153
1182
  edgesep: spacing.edgesep
@@ -1159,8 +1188,9 @@ function layoutC4Components(parsed, systemName, containerName, activeTagGroup) {
1159
1188
  }
1160
1189
  dagre.layout(g);
1161
1190
  const nodeGroupMap = hasGroups ? new Map([...elementToGroup.entries()].map(([k, v]) => [k, v.name])) : void 0;
1162
- reduceCrossings(
1191
+ reduceCrossingsForDirection(
1163
1192
  g,
1193
+ direction,
1164
1194
  componentRels.filter(
1165
1195
  (r) => nameToElement.has(r.sourceName) && nameToElement.has(r.targetName)
1166
1196
  ).map((r) => ({ source: r.sourceName, target: r.targetName })),
@@ -1340,7 +1370,9 @@ function layoutC4Components(parsed, systemName, containerName, activeTagGroup) {
1340
1370
  }
1341
1371
  let totalWidth = maxX - minX + MARGIN * 2;
1342
1372
  let totalHeight = maxY - minY + MARGIN * 2;
1343
- const legendGroups = computeLegendGroups(parsed.tagGroups);
1373
+ const legendGroups = computeLegendGroups(
1374
+ legendSuppressed(parsed.options) ? [] : parsed.tagGroups
1375
+ );
1344
1376
  if (legendGroups.length > 0) {
1345
1377
  const legendY = totalHeight + MARGIN;
1346
1378
  let legendX = MARGIN;
@@ -1449,6 +1481,7 @@ function layoutC4Deployment(parsed, activeTagGroup) {
1449
1481
  for (const r of refEntries) {
1450
1482
  nameToElement.set(r.element.name, r.element);
1451
1483
  }
1484
+ const direction = parsed.direction;
1452
1485
  const g = new dagre.graphlib.Graph({ compound: true });
1453
1486
  g.setDefaultEdgeLabel(() => ({}));
1454
1487
  for (const [infraId] of infraIds) {
@@ -1483,7 +1516,7 @@ function layoutC4Deployment(parsed, activeTagGroup) {
1483
1516
  }
1484
1517
  const spacing = computeAdaptiveSpacing(deployRels);
1485
1518
  g.setGraph({
1486
- rankdir: "TB",
1519
+ rankdir: direction,
1487
1520
  nodesep: spacing.nodesep,
1488
1521
  ranksep: spacing.ranksep,
1489
1522
  edgesep: spacing.edgesep
@@ -1496,8 +1529,9 @@ function layoutC4Deployment(parsed, activeTagGroup) {
1496
1529
  dagre.layout(g);
1497
1530
  const nodeInfraMap = /* @__PURE__ */ new Map();
1498
1531
  for (const r of refEntries) nodeInfraMap.set(r.element.name, r.infraId);
1499
- reduceCrossings(
1532
+ reduceCrossingsForDirection(
1500
1533
  g,
1534
+ direction,
1501
1535
  deployRels.filter(
1502
1536
  (r) => nameToElement.has(r.sourceName) && nameToElement.has(r.targetName)
1503
1537
  ).map((r) => ({ source: r.sourceName, target: r.targetName })),
@@ -1649,7 +1683,9 @@ function layoutC4Deployment(parsed, activeTagGroup) {
1649
1683
  }
1650
1684
  let totalWidth = maxX - minX + MARGIN * 2;
1651
1685
  let totalHeight = maxY - minY + MARGIN * 2;
1652
- const legendGroups = computeLegendGroups(parsed.tagGroups);
1686
+ const legendGroups = computeLegendGroups(
1687
+ legendSuppressed(parsed.options) ? [] : parsed.tagGroups
1688
+ );
1653
1689
  if (legendGroups.length > 0) {
1654
1690
  const legendY = totalHeight + MARGIN;
1655
1691
  let legendX = MARGIN;
@@ -1682,4 +1718,4 @@ export {
1682
1718
  layoutC4Components,
1683
1719
  layoutC4Deployment
1684
1720
  };
1685
- //# sourceMappingURL=chunk-ONU3U4GL.js.map
1721
+ //# sourceMappingURL=chunk-LQHVDZYC.js.map
@@ -7,7 +7,7 @@ import {
7
7
  matchTagBlockHeading,
8
8
  stripDefaultModifier,
9
9
  tagAttrKey
10
- } from "./chunk-HHKO6SKY.js";
10
+ } from "./chunk-CMVZWP32.js";
11
11
  import {
12
12
  displayName,
13
13
  normalizeName
@@ -26,14 +26,14 @@ import {
26
26
  tokenizeQuoteAware,
27
27
  tryParseSharedOption,
28
28
  withTagAliases
29
- } from "./chunk-BRENJ2BQ.js";
29
+ } from "./chunk-YJVA3QUU.js";
30
30
  import {
31
31
  nord,
32
32
  resolveColor
33
- } from "./chunk-TLVIHFRO.js";
33
+ } from "./chunk-ZKPPI6BF.js";
34
34
  import {
35
35
  emit
36
- } from "./chunk-CXK4DZH3.js";
36
+ } from "./chunk-4W2PE66Q.js";
37
37
 
38
38
  // src/family/diagnostics.ts
39
39
  var FAMILY_DX = {
@@ -571,4 +571,4 @@ export {
571
571
  FAMILY_DIAGNOSTICS,
572
572
  parseFamily
573
573
  };
574
- //# sourceMappingURL=chunk-75G3Q4DK.js.map
574
+ //# sourceMappingURL=chunk-MA3HJZHB.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-RT7ACF77.js";
4
4
  import {
5
5
  makeDgmoError
6
- } from "./chunk-CXK4DZH3.js";
6
+ } from "./chunk-4W2PE66Q.js";
7
7
 
8
8
  // src/sketch/geometry.ts
9
9
  var SKETCH_PHI = (1 + Math.sqrt(5)) / 2;
@@ -449,4 +449,4 @@ export {
449
449
  collapseSketch,
450
450
  layoutSketch
451
451
  };
452
- //# sourceMappingURL=chunk-QVENJMNX.js.map
452
+ //# sourceMappingURL=chunk-MEQYZZFR.js.map
@@ -2,7 +2,7 @@ import {
2
2
  INFRA_BEHAVIOR_KEY_SET,
3
3
  INFRA_EDGE_ONLY_KEY_SET,
4
4
  INFRA_TOP_LEVEL_OPTION_SET
5
- } from "./chunk-FQ7HTV52.js";
5
+ } from "./chunk-6DCOIN4W.js";
6
6
  import {
7
7
  tryStripDescriptionKeyword
8
8
  } from "./chunk-IYULMRBE.js";
@@ -11,13 +11,13 @@ import {
11
11
  stripDefaultModifier,
12
12
  tagAttrKey,
13
13
  validateTagGroupNames
14
- } from "./chunk-HHKO6SKY.js";
14
+ } from "./chunk-CMVZWP32.js";
15
15
  import {
16
16
  GRAPH_DX
17
17
  } from "./chunk-I46X5VUA.js";
18
18
  import {
19
19
  parseInArrowLabel
20
- } from "./chunk-FFUN5D66.js";
20
+ } from "./chunk-WF64MW5G.js";
21
21
  import {
22
22
  displayName,
23
23
  normalizeName
@@ -30,10 +30,10 @@ import {
30
30
  tryParseSharedOption,
31
31
  warnUnknownMetaKeys,
32
32
  withTagAliases
33
- } from "./chunk-BRENJ2BQ.js";
33
+ } from "./chunk-YJVA3QUU.js";
34
34
  import {
35
35
  isRecognizedColorName
36
- } from "./chunk-TLVIHFRO.js";
36
+ } from "./chunk-ZKPPI6BF.js";
37
37
  import {
38
38
  NAME_DIAGNOSTIC_CODES,
39
39
  emit,
@@ -41,7 +41,7 @@ import {
41
41
  makeDgmoError,
42
42
  nameMergedMessage,
43
43
  suggest
44
- } from "./chunk-CXK4DZH3.js";
44
+ } from "./chunk-4W2PE66Q.js";
45
45
 
46
46
  // src/infra/types.ts
47
47
  var INFRA_BEHAVIOR_KEYS = INFRA_BEHAVIOR_KEY_SET;
@@ -53,7 +53,7 @@ var SIMPLE_CONNECTION_RE = /^->\s*(.+?)\s*$/;
53
53
  var ASYNC_CONNECTION_RE = /^~(?:([^~].*?))?~>\s*(.+?)\s*$/;
54
54
  var ASYNC_SIMPLE_CONNECTION_RE = /^~>\s*(.+?)\s*$/;
55
55
  var DEPRECATED_FANOUT_RE = /\bx(\d+)\s*$/;
56
- var GROUP_RE = /^\[([^\]]+)\]\s*(?:as\s+([A-Za-z][A-Za-z0-9_]{0,11})\s*)?((?:\|.*)|(?:[a-zA-Z_]\w*\s*:.*))?$/;
56
+ var GROUP_RE = /^\[([^\]]+)\]\s*(?:as\s+([A-Za-z][A-Za-z0-9_]{0,11})\s*)?(?:(collapsed)(?!\s*:)\s*)?((?:\|.*)|(?:[a-zA-Z_]\w*\s*:.*))?$/;
57
57
  var TAG_VALUE_RE = /^(\w[\w\s]+?)\s*$/;
58
58
  var COMPONENT_RE = /^(?:"(?<qname>[^"]+)"|(?<uname>[a-zA-Z_][\w -]*?))(?:\s+as\s+(?<alias>[A-Za-z][A-Za-z0-9_]{0,11}))?\s*(?<meta>(?:\|.*)|(?:[a-zA-Z_]\w*\s*:.*))?$/;
59
59
  var PIPE_META_RE = /[|,]\s*(\w+)\s*:\s*([^|,]+)/g;
@@ -269,8 +269,9 @@ function parseInfra(content) {
269
269
  continue;
270
270
  }
271
271
  }
272
- if (/^direction-tb$/i.test(trimmed)) {
273
- result.direction = "TB";
272
+ const dirBool = trimmed.match(/^direction-(lr|tb)$/i);
273
+ if (dirBool) {
274
+ result.direction = dirBool[1].toUpperCase();
274
275
  continue;
275
276
  }
276
277
  if (trimmed === "animate" || trimmed === "no-animate") {
@@ -309,8 +310,15 @@ function parseInfra(content) {
309
310
  const groupAlias = groupMatch[2];
310
311
  const gId = groupId(gLabel);
311
312
  if (groupAlias) nameAliasMap.set(groupAlias, gId);
312
- const groupMeta = groupMatch[3] ? extractPipeMetadata(groupMatch[3]).tags : void 0;
313
+ let groupCollapsed = groupMatch[3] !== void 0;
314
+ const groupMeta = groupMatch[4] ? extractPipeMetadata(groupMatch[4]).tags : void 0;
313
315
  if (groupMeta) {
316
+ if (groupMeta["collapsed"] !== void 0) {
317
+ if (groupMeta["collapsed"].toLowerCase() === "true") {
318
+ groupCollapsed = true;
319
+ }
320
+ delete groupMeta["collapsed"];
321
+ }
314
322
  warnUnknownMetaKeys(
315
323
  groupMeta,
316
324
  withTagAliases(INFRA_REGISTRY, tagAliasSet),
@@ -322,6 +330,7 @@ function parseInfra(content) {
322
330
  id: gId,
323
331
  label: gLabel,
324
332
  ...hasMeta && { metadata: groupMeta },
333
+ ...groupCollapsed && { collapsed: true },
325
334
  lineNumber
326
335
  };
327
336
  currentGroup = newGroup;
@@ -413,6 +422,25 @@ function parseInfra(content) {
413
422
  continue;
414
423
  }
415
424
  }
425
+ const spacePropMatch = trimmed.match(
426
+ /^(instances|collapsed)\s+(\S+)\s*$/
427
+ );
428
+ if (spacePropMatch) {
429
+ const key = spacePropMatch[1];
430
+ const val = spacePropMatch[2];
431
+ if (key === "instances" && RANGE_RE.test(val)) {
432
+ currentGroup.instances = val;
433
+ continue;
434
+ }
435
+ if (key === "instances" && /^\d+$/.test(val)) {
436
+ currentGroup.instances = parseInt(val, 10);
437
+ continue;
438
+ }
439
+ if (key === "collapsed" && /^(true|false)$/i.test(val)) {
440
+ currentGroup.collapsed = val.toLowerCase() === "true";
441
+ continue;
442
+ }
443
+ }
416
444
  const compMatch = trimmed.match(COMPONENT_RE);
417
445
  if (compMatch) {
418
446
  finishCurrentTagGroup();
@@ -840,7 +868,9 @@ function extractSymbols(docText) {
840
868
  if (!indented) {
841
869
  const firstLine = parseFirstLine(line);
842
870
  if (firstLine) continue;
843
- if (/^(?:direction-tb|animate|no-animate|slo-|default-)/i.test(line))
871
+ if (/^(?:direction-tb|direction-lr|animate|no-animate|slo-|default-)/i.test(
872
+ line
873
+ ))
844
874
  continue;
845
875
  if (/^[a-z-]+\s*:/i.test(line)) continue;
846
876
  inMetadata = false;
@@ -890,4 +920,4 @@ export {
890
920
  parseInfra,
891
921
  extractSymbols
892
922
  };
893
- //# sourceMappingURL=chunk-IM6PDDCE.js.map
923
+ //# sourceMappingURL=chunk-NNUMX6WX.js.map
@@ -4,10 +4,6 @@ import {
4
4
  import {
5
5
  ScaleContext
6
6
  } from "./chunk-YYVTBZZC.js";
7
- import {
8
- VARIANTS,
9
- allTasks
10
- } from "./chunk-4IHAV6O7.js";
11
7
  import {
12
8
  TITLE_FONT_SIZE,
13
9
  TITLE_FONT_WEIGHT,
@@ -17,18 +13,23 @@ import {
17
13
  FONT_FAMILY
18
14
  } from "./chunk-6KFWC4CO.js";
19
15
  import {
20
- measureText,
21
- truncateText,
22
- wrapTextToWidth
23
- } from "./chunk-WCT3NYCV.js";
16
+ VARIANTS,
17
+ allTasks
18
+ } from "./chunk-ALYZ3MAA.js";
24
19
  import {
25
20
  contrastText,
26
21
  mix,
27
22
  themeBaseBg
28
- } from "./chunk-WBM7ZNDI.js";
23
+ } from "./chunk-JYDMBWRP.js";
24
+ import {
25
+ measureText,
26
+ truncateText,
27
+ wrapTextToWidth
28
+ } from "./chunk-4ASYQ347.js";
29
29
  import {
30
- fillModeFromOptions
31
- } from "./chunk-BRENJ2BQ.js";
30
+ fillModeFromOptions,
31
+ legendSuppressed
32
+ } from "./chunk-YJVA3QUU.js";
32
33
 
33
34
  // src/raci/renderer.ts
34
35
  import * as d3Selection from "d3-selection";
@@ -152,7 +153,7 @@ function renderRaci(container, parsed, palette, isDark, handlers, exportDims) {
152
153
  const opts = typeof handlers === "function" ? { onClickLine: handlers } : handlers ?? {};
153
154
  const onClickLine = opts.onClickLine;
154
155
  const onMarkerDragStart = opts.onMarkerDragStart;
155
- const hideLegend = opts.hideLegend ?? false;
156
+ const hideLegend = (opts.hideLegend ?? false) || legendSuppressed(parsed.options);
156
157
  const collapsedPhases = opts.collapsedPhases ?? /* @__PURE__ */ new Set();
157
158
  const hideTitle = (opts.hideTitle ?? false) || parsed.options["no-title"] === "on";
158
159
  d3Selection.select(container).selectAll(":not([data-d3-tooltip])").remove();
@@ -786,4 +787,4 @@ export {
786
787
  renderRaci,
787
788
  renderRaciForExport
788
789
  };
789
- //# sourceMappingURL=chunk-FQMUHRVC.js.map
790
+ //# sourceMappingURL=chunk-NNYFQOTK.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  measureText
3
- } from "./chunk-WCT3NYCV.js";
3
+ } from "./chunk-4ASYQ347.js";
4
4
 
5
5
  // src/wireframe/layout.ts
6
6
  var DESKTOP_WIDTH = 1200;
@@ -302,4 +302,4 @@ function computeFieldAlignX(children) {
302
302
  export {
303
303
  layoutWireframe
304
304
  };
305
- //# sourceMappingURL=chunk-H6PI3KJT.js.map
305
+ //# sourceMappingURL=chunk-ODUT5WMC.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  formatLocalISODate
3
- } from "./chunk-7L4UJOY6.js";
3
+ } from "./chunk-3TYUXC7D.js";
4
4
  import {
5
5
  parseDuration
6
- } from "./chunk-USZW2HHU.js";
6
+ } from "./chunk-EQW6HOP4.js";
7
7
  import {
8
8
  parseDateToken,
9
9
  toInternal
@@ -17,7 +17,7 @@ import {
17
17
  tagAttrKey,
18
18
  validateTagGroupNames,
19
19
  validateTagValues
20
- } from "./chunk-HHKO6SKY.js";
20
+ } from "./chunk-CMVZWP32.js";
21
21
  import {
22
22
  normalizeName
23
23
  } from "./chunk-NOTA6TEI.js";
@@ -25,15 +25,16 @@ import {
25
25
  PERT_REGISTRY,
26
26
  extractColor,
27
27
  measureIndent,
28
+ peelTrailingCollapsedFlag,
28
29
  splitNameAndMeta,
29
30
  warnUnknownMetaKeys,
30
31
  withTagAliases
31
- } from "./chunk-BRENJ2BQ.js";
32
+ } from "./chunk-YJVA3QUU.js";
32
33
  import {
33
34
  emit,
34
35
  makeDgmoError,
35
36
  suggest
36
- } from "./chunk-CXK4DZH3.js";
37
+ } from "./chunk-4W2PE66Q.js";
37
38
 
38
39
  // src/pert/diagnostics.ts
39
40
  var PERT_DX = {
@@ -129,7 +130,11 @@ var PERT_DIAGNOSTICS = Object.values(PERT_DX);
129
130
  var DIRECTIVE_KEYS = /* @__PURE__ */ new Set([
130
131
  "time-unit",
131
132
  "default-confidence",
133
+ // Canonical booleans (§1.9, last one wins); key+value `direction LR|TB`
134
+ // accepted legacy.
132
135
  "direction",
136
+ "direction-lr",
137
+ "direction-tb",
133
138
  "node-detail",
134
139
  "no-analysis",
135
140
  "trials",
@@ -138,6 +143,7 @@ var DIRECTIVE_KEYS = /* @__PURE__ */ new Set([
138
143
  "start-date",
139
144
  "end-date",
140
145
  "no-title",
146
+ "no-legend",
141
147
  "fill-tint",
142
148
  "fill-solid",
143
149
  "fill-outline",
@@ -175,7 +181,7 @@ var NEAR_DIRECTIVE_HINTS = [
175
181
  {
176
182
  stem: "time",
177
183
  canonical: "time-unit",
178
- matches: /^(d|w|m|q|y|h|min|bd|s)$/i
184
+ matches: /^(d|w|m|q|y|h|min|bd|sp|s)$/i
179
185
  }
180
186
  ];
181
187
  var GROUP_HEADER_RE = /^\[([^\]]+)\]\s*(.*)$/;
@@ -197,7 +203,8 @@ function parseEdgeLabel(label, defaultUnit) {
197
203
  if (numRaw) {
198
204
  const amount = parseFloat(numRaw);
199
205
  if (amount !== 0) {
200
- const unit = unitRaw ? unitRaw.toLowerCase() : defaultUnit;
206
+ const unitLow = unitRaw?.toLowerCase();
207
+ const unit = unitLow ? unitLow === "sp" ? "s" : unitLow : defaultUnit;
201
208
  if (!isValidDurationUnit(unit)) return null;
202
209
  lag = { amount, unit };
203
210
  }
@@ -219,7 +226,7 @@ function isValidDurationUnit(u) {
219
226
  return VALID_DURATION_UNITS.has(u);
220
227
  }
221
228
  var ALIAS_SUFFIX_RE = /\s+as\s+([A-Za-z][A-Za-z0-9_]{0,11})\s*$/;
222
- var ESTIMATE_TOKEN_RE = /^(\d+(?:\.\d+)?)(min|bd|d|w|m|q|y|h|s)?$/;
229
+ var ESTIMATE_TOKEN_RE = /^(\d+(?:\.\d+)?)(min|bd|sp|d|w|m|q|y|h|s)?$/;
223
230
  var DEFAULT_OPTIONS = {
224
231
  timeUnit: "d",
225
232
  direction: "LR",
@@ -324,7 +331,7 @@ function parseEstimateToken(token, defaultUnit) {
324
331
  if (!m) return null;
325
332
  const amount = parseFloat(m[1]);
326
333
  if (!Number.isFinite(amount)) return null;
327
- const unit = m[2] ?? defaultUnit;
334
+ const unit = (m[2] === "sp" ? "s" : m[2]) ?? defaultUnit;
328
335
  if (unit === "s") {
329
336
  return { amount, unit: defaultUnit };
330
337
  }
@@ -540,7 +547,13 @@ function parsePert(content, parseOpts = {}) {
540
547
  contentStarted = true;
541
548
  currentTagGroup = null;
542
549
  const name = groupMatch[1].trim();
543
- const tail = (groupMatch[2] ?? "").trim();
550
+ let tail = (groupMatch[2] ?? "").trim();
551
+ let bareCollapsed = false;
552
+ const barePeel = peelTrailingCollapsedFlag(tail);
553
+ if (barePeel.collapsed) {
554
+ bareCollapsed = true;
555
+ tail = barePeel.rest;
556
+ }
544
557
  const meta = tail ? parsePipeMetadata(tail, metaAliasMap) : {};
545
558
  const id = `[${normalizeName(name)}]`;
546
559
  const tags = {};
@@ -551,7 +564,7 @@ function parsePert(content, parseOpts = {}) {
551
564
  id,
552
565
  name,
553
566
  activityIds: [],
554
- collapsed: meta["collapsed"] === "true",
567
+ collapsed: bareCollapsed || meta["collapsed"] === "true",
555
568
  lineNumber,
556
569
  ...Object.keys(tags).length > 0 && { tags }
557
570
  });
@@ -955,6 +968,7 @@ function applyDirective(key, value, lineNumber, options, error, warn, dateCfg) {
955
968
  case "no-current-year":
956
969
  return;
957
970
  case "time-unit": {
971
+ const normalized = value === "sp" ? "s" : value;
958
972
  const valid = [
959
973
  "min",
960
974
  "h",
@@ -966,14 +980,15 @@ function applyDirective(key, value, lineNumber, options, error, warn, dateCfg) {
966
980
  "y",
967
981
  "s"
968
982
  ];
969
- if (!valid.includes(value)) {
983
+ if (!valid.includes(normalized)) {
984
+ const shown = valid.map((u) => u === "s" ? "sp" : u);
970
985
  error(
971
986
  lineNumber,
972
- `Unknown time-unit '${value}'. Expected one of ${valid.join(", ")}.`
987
+ `Unknown time-unit '${value}'. Expected one of ${shown.join(", ")}.`
973
988
  );
974
989
  return;
975
990
  }
976
- options.timeUnit = value;
991
+ options.timeUnit = normalized;
977
992
  return;
978
993
  }
979
994
  case "default-confidence": {
@@ -984,6 +999,10 @@ function applyDirective(key, value, lineNumber, options, error, warn, dateCfg) {
984
999
  options.noTitle = true;
985
1000
  return;
986
1001
  }
1002
+ case "no-legend": {
1003
+ options.noLegend = true;
1004
+ return;
1005
+ }
987
1006
  case "fill-solid": {
988
1007
  options.fillMode = "solid";
989
1008
  return;
@@ -1061,6 +1080,14 @@ function applyDirective(key, value, lineNumber, options, error, warn, dateCfg) {
1061
1080
  options.direction = upper;
1062
1081
  return;
1063
1082
  }
1083
+ case "direction-lr": {
1084
+ options.direction = "LR";
1085
+ return;
1086
+ }
1087
+ case "direction-tb": {
1088
+ options.direction = "TB";
1089
+ return;
1090
+ }
1064
1091
  case "node-detail": {
1065
1092
  if (value !== "compact" && value !== "full") {
1066
1093
  error(
@@ -1224,4 +1251,4 @@ export {
1224
1251
  extractPertSymbols,
1225
1252
  looksLikePert
1226
1253
  };
1227
- //# sourceMappingURL=chunk-K4EOKJA6.js.map
1254
+ //# sourceMappingURL=chunk-P3H7QVDH.js.map