@diagrammo/dgmo 0.51.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 (336) hide show
  1. package/.cursorrules +74 -77
  2. package/.github/copilot-instructions.md +74 -77
  3. package/.windsurfrules +74 -77
  4. package/SKILL.md +74 -77
  5. package/dist/advanced.d.ts +109 -246
  6. package/dist/advanced.js +296 -633
  7. package/dist/analyzer-TDN5KJFP.js +15 -0
  8. package/dist/auto.css +14 -6
  9. package/dist/auto.js +141 -129
  10. package/dist/auto.mjs +2062 -937
  11. package/dist/block.css +14 -6
  12. package/dist/block.js +123 -73
  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-RLFVAKEO.js → chunk-22OQWBWD.js} +25 -8
  19. package/dist/{chunk-I2QZFCS2.js → chunk-27STWBOK.js} +10 -8
  20. package/dist/{chunk-5PZT4DQG.js → chunk-2QC4HXCY.js} +41 -21
  21. package/dist/{chunk-HFMYN6N2.js → chunk-3B2GXZCX.js} +4 -3
  22. package/dist/{chunk-F3FYUFUH.js → chunk-3BEKKRH5.js} +18 -17
  23. package/dist/{chunk-2UJSV2VT.js → chunk-3CZLWOCI.js} +17 -7
  24. package/dist/{chunk-JEUJOX5X.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-ZO27FGJS.js → chunk-4ASVFYB2.js} +10 -7
  28. package/dist/{chunk-WCT3NYCV.js → chunk-4ASYQ347.js} +33 -8
  29. package/dist/{chunk-2ILHQOL3.js → chunk-4K42RUGC.js} +41 -13
  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-EXOQP75F.js → chunk-4WGMGKCZ.js} +53 -33
  34. package/dist/{chunk-JED6ZDEE.js → chunk-5HWPEYWB.js} +2 -2
  35. package/dist/{chunk-3YSQZ75W.js → chunk-65V6IRFN.js} +46 -33
  36. package/dist/{chunk-TMACGPW5.js → chunk-6AUZPPAV.js} +4 -4
  37. package/dist/{chunk-6H7O2OPM.js → chunk-6DCOIN4W.js} +36 -6
  38. package/dist/{chunk-GTWKD3QT.js → chunk-6HTRCTAS.js} +7 -6
  39. package/dist/{chunk-VB4UJ3H2.js → chunk-6KY7OCZC.js} +21 -11
  40. package/dist/{chunk-YAA6IID3.js → chunk-774C2FF3.js} +2 -2
  41. package/dist/{chunk-WJ7RW65H.js → chunk-7GUF6SDR.js} +22 -20
  42. package/dist/{chunk-QYTPPDAO.js → chunk-7JDTNFAK.js} +3 -3
  43. package/dist/{chunk-U6EQI3U6.js → chunk-ADYKAKE3.js} +3 -3
  44. package/dist/{chunk-VNSXLA6G.js → chunk-AHXIMHDQ.js} +84 -20
  45. package/dist/chunk-AIMLCDAO.js +404 -0
  46. package/dist/{chunk-6MNGECP2.js → chunk-ALYZ3MAA.js} +4 -4
  47. package/dist/{chunk-5F5ELR3V.js → chunk-AN2DQB3G.js} +151 -20
  48. package/dist/{chunk-IEWG6J7C.js → chunk-AZNXGWDC.js} +91 -36
  49. package/dist/{chunk-4XFBQT5O.js → chunk-B4XS2AF2.js} +3 -3
  50. package/dist/{chunk-CC4YRBWV.js → chunk-BD3WGY4T.js} +18 -8
  51. package/dist/{chunk-RAHVMKBG.js → chunk-BFDVEO5R.js} +2 -2
  52. package/dist/{chunk-332ZR4QU.js → chunk-BR7AYN76.js} +8 -8
  53. package/dist/{chunk-P3NRSSUU.js → chunk-BULHGPHK.js} +3 -3
  54. package/dist/{chunk-PZDBOK2Q.js → chunk-CK2GMDXD.js} +11 -5
  55. package/dist/{chunk-467TVMQL.js → chunk-CMVZWP32.js} +3 -3
  56. package/dist/{chunk-GNSFLJAA.js → chunk-CQFNIIQN.js} +7 -7
  57. package/dist/{chunk-RBDIYLA5.js → chunk-DAOFNU6J.js} +17 -1
  58. package/dist/{chunk-AFIEPDLX.js → chunk-DWUMPMV2.js} +23 -11
  59. package/dist/{chunk-USZW2HHU.js → chunk-EQW6HOP4.js} +4 -3
  60. package/dist/{chunk-6BQFET7X.js → chunk-FFXCKZOU.js} +12 -4
  61. package/dist/{chunk-WRNFDFPU.js → chunk-FGDSTT3F.js} +2 -2
  62. package/dist/{chunk-6NFYEQDX.js → chunk-FLDC7ZAK.js} +34 -7
  63. package/dist/{chunk-IUJODQKX.js → chunk-FT7TPPZ5.js} +25 -23
  64. package/dist/{chunk-IEDMFNU7.js → chunk-FUKNRLIJ.js} +19 -7
  65. package/dist/{chunk-JJXGQIRV.js → chunk-FXCB7H5O.js} +4 -4
  66. package/dist/{chunk-GGHRAITI.js → chunk-GABSL6TH.js} +4 -4
  67. package/dist/{chunk-RXKTSFDL.js → chunk-GAWKIIPO.js} +35 -43
  68. package/dist/{chunk-ZJ3LS7DW.js → chunk-GMAH572Z.js} +6 -6
  69. package/dist/{chunk-TRM2J7ZN.js → chunk-GMIJ35PW.js} +28 -29
  70. package/dist/{chunk-AB7INMR5.js → chunk-GQ644SPD.js} +26 -25
  71. package/dist/{chunk-5QKQSSPO.js → chunk-GRM2A4BG.js} +4 -4
  72. package/dist/{chunk-3ODS2VGL.js → chunk-GWQJKTFS.js} +161 -704
  73. package/dist/{chunk-OTOHI4JO.js → chunk-H3HFC3SQ.js} +2 -2
  74. package/dist/{chunk-JSSX2SX4.js → chunk-HE5J53SZ.js} +4 -4
  75. package/dist/{chunk-2EQMXBBQ.js → chunk-HNBY6CNV.js} +3 -3
  76. package/dist/{chunk-J76PIKAT.js → chunk-HO3RCNF6.js} +3 -3
  77. package/dist/{chunk-OJTXTQA2.js → chunk-HORZ5H2L.js} +38 -31
  78. package/dist/{chunk-MX2EY5Y7.js → chunk-HOXKNRON.js} +2 -2
  79. package/dist/{chunk-E7Y3SYKW.js → chunk-I64ECJX3.js} +18 -8
  80. package/dist/{chunk-JM4LEPY3.js → chunk-IQJCVREL.js} +11 -8
  81. package/dist/{chunk-3JLKYGBQ.js → chunk-J7HI6G3G.js} +9 -6
  82. package/dist/{chunk-Q62FEYK3.js → chunk-JHOAH4TI.js} +3 -3
  83. package/dist/{chunk-OZPBJM5Q.js → chunk-JTMSWEIW.js} +11 -8
  84. package/dist/{chunk-P6T66CCZ.js → chunk-JYDMBWRP.js} +37 -19
  85. package/dist/{chunk-7DF4J4RL.js → chunk-KKHCNSKK.js} +17 -11
  86. package/dist/{chunk-ENRS56GC.js → chunk-KUSAVOWZ.js} +11 -8
  87. package/dist/{chunk-BYJBIALT.js → chunk-LC3FFD43.js} +23 -18
  88. package/dist/{chunk-65WJYYKJ.js → chunk-LHILKFDP.js} +16 -11
  89. package/dist/{chunk-NEQ6GJXB.js → chunk-LQHVDZYC.js} +52 -16
  90. package/dist/{chunk-5WPNFSXP.js → chunk-MA3HJZHB.js} +5 -5
  91. package/dist/{chunk-Z6XJQ6KO.js → chunk-MEQYZZFR.js} +3 -3
  92. package/dist/{chunk-MVN25IF6.js → chunk-NNUMX6WX.js} +42 -12
  93. package/dist/{chunk-7DYOELRK.js → chunk-NNYFQOTK.js} +78 -38
  94. package/dist/{chunk-NNAAJVBU.js → chunk-NR5HCAUD.js} +1 -1
  95. package/dist/{chunk-H6PI3KJT.js → chunk-ODUT5WMC.js} +2 -2
  96. package/dist/{chunk-5PDTIBLV.js → chunk-P3H7QVDH.js} +56 -19
  97. package/dist/{chunk-ND76YJCN.js → chunk-PIXZTCKH.js} +84 -117
  98. package/dist/{chunk-3LV2NCB6.js → chunk-PKNNHU7H.js} +22 -9
  99. package/dist/{chunk-TK2VQQX2.js → chunk-PT4SW76W.js} +20 -18
  100. package/dist/{chunk-AE7II3E3.js → chunk-PV2QO7QL.js} +4 -4
  101. package/dist/{chunk-FTBZV6NE.js → chunk-PYO4TJJ3.js} +34 -26
  102. package/dist/{chunk-QZPEGJOM.js → chunk-Q7AH665U.js} +28 -14
  103. package/dist/{chunk-QHI5XVUJ.js → chunk-QAALSCKI.js} +27 -26
  104. package/dist/{chunk-GD6L76WD.js → chunk-QI3BOLQB.js} +23 -11
  105. package/dist/{chunk-Y6GBQTBK.js → chunk-QWIBT6DS.js} +50 -28
  106. package/dist/{chunk-GU46PPT3.js → chunk-QXGACPS2.js} +5 -5
  107. package/dist/{chunk-FMDSF3OV.js → chunk-QZAW5SFH.js} +2 -2
  108. package/dist/{chunk-YGJZWZTY.js → chunk-R5NH5BZG.js} +12 -9
  109. package/dist/{chunk-U5SI5NIM.js → chunk-RJ5LBZ5U.js} +43 -26
  110. package/dist/{chunk-XHVV4NVW.js → chunk-RT7ACF77.js} +12 -2
  111. package/dist/{chunk-XEQXCIBC.js → chunk-RW5PEJ7D.js} +18 -6
  112. package/dist/{chunk-4VWJ4LW2.js → chunk-SG4PRYO3.js} +61 -49
  113. package/dist/{chunk-RBHWPDBB.js → chunk-SGPFVDUL.js} +18 -7
  114. package/dist/{chunk-KJGG2JKQ.js → chunk-SQCBSFT5.js} +84 -79
  115. package/dist/{chunk-5X6YQA2J.js → chunk-U7NKYLX2.js} +18 -16
  116. package/dist/chunk-U7VO6JAA.js +566 -0
  117. package/dist/{chunk-32XPAAET.js → chunk-UFQJMOVZ.js} +10 -10
  118. package/dist/{chunk-Z72XRXD4.js → chunk-UJRTPOHH.js} +3 -3
  119. package/dist/{chunk-EDA6C7MV.js → chunk-UK6DKJLD.js} +34 -14
  120. package/dist/{chunk-GROLTAWZ.js → chunk-UKP5HWB5.js} +149 -89
  121. package/dist/{chunk-DY7XLRHK.js → chunk-UQRIKAMH.js} +28 -27
  122. package/dist/{chunk-TYS6CSS5.js → chunk-UU6LUYUH.js} +2 -2
  123. package/dist/{chunk-NI3XQBPB.js → chunk-UVDCHR4E.js} +18 -6
  124. package/dist/{chunk-6K2M4VSR.js → chunk-VAO6ANGC.js} +23 -10
  125. package/dist/{chunk-6NYWYNBI.js → chunk-VGNIDAPQ.js} +4 -4
  126. package/dist/{chunk-VL2O2F3W.js → chunk-VHO3YBTB.js} +2 -2
  127. package/dist/{chunk-IUO34HKW.js → chunk-VIRANCNY.js} +36 -32
  128. package/dist/{chunk-4QZ43D7I.js → chunk-VJHBSPGF.js} +12 -14
  129. package/dist/{chunk-BGP54HVR.js → chunk-VKNCC2GX.js} +12 -8
  130. package/dist/{chunk-FC5I2KXV.js → chunk-VRRDUYOK.js} +7 -7
  131. package/dist/{chunk-G3PF3S7P.js → chunk-W2DINCHL.js} +15 -15
  132. package/dist/{chunk-OU7HLO7I.js → chunk-W5KMNC5U.js} +8 -8
  133. package/dist/{chunk-FFUN5D66.js → chunk-WF64MW5G.js} +2 -2
  134. package/dist/{chunk-X7EC3L2H.js → chunk-X3RXGSCZ.js} +48 -30
  135. package/dist/{chunk-KFNWFNAA.js → chunk-XEAQDIMF.js} +7 -6
  136. package/dist/{chunk-AXW3M6OQ.js → chunk-XG4NWFPY.js} +38 -27
  137. package/dist/{chunk-B63YB7X3.js → chunk-XQ4KN6JQ.js} +127 -65
  138. package/dist/{chunk-WBRZJOEC.js → chunk-XY3UDKKH.js} +4 -4
  139. package/dist/{chunk-IE477RQZ.js → chunk-YG2BEIQU.js} +14 -13
  140. package/dist/{chunk-LV4BETUU.js → chunk-YJVA3QUU.js} +55 -5
  141. package/dist/{chunk-5SVOCD5W.js → chunk-YR43LJT5.js} +20 -16
  142. package/dist/{chunk-TLVIHFRO.js → chunk-ZKPPI6BF.js} +2 -2
  143. package/dist/{chunk-WQLMU7VG.js → chunk-ZXUAPTCK.js} +3 -3
  144. package/dist/cli.cjs +158 -155
  145. package/dist/clock.js +25 -23
  146. package/dist/countdown.js +4 -3
  147. package/dist/dgmo-router-B4S23EBH.js +86 -0
  148. package/dist/dimensions-K6PGYYGT.js +22 -0
  149. package/dist/editor.js +36 -6
  150. package/dist/element.js +143 -131
  151. package/dist/element.mjs +2062 -937
  152. package/dist/flowchart-parser-LALR6J6F.js +21 -0
  153. package/dist/{flowchart-renderer-AQSMEMYF.js → flowchart-renderer-DXYB5YRF.js} +14 -14
  154. package/dist/highlight.d.ts +21 -1
  155. package/dist/highlight.js +129 -8
  156. package/dist/index.d.ts +4 -2
  157. package/dist/index.js +80 -75
  158. package/dist/layout-3BVDMKXI.js +15 -0
  159. package/dist/layout-3M5UYJHY.js +14 -0
  160. package/dist/{layout-JDJAEQ3P.js → layout-3V2A4MUE.js} +8 -8
  161. package/dist/layout-4IHCMWZN.js +19 -0
  162. package/dist/layout-5XGYNYVT.js +9 -0
  163. package/dist/layout-AZUPXWSK.js +15 -0
  164. package/dist/{layout-F4WO357A.js → layout-CAAKQX4W.js} +3 -3
  165. package/dist/layout-CB3XWCOI.js +10 -0
  166. package/dist/{layout-OAC4PEAC.js → layout-E6HR6PXH.js} +7 -7
  167. package/dist/{layout-7QXCNOVS.js → layout-HBWT2G23.js} +3 -3
  168. package/dist/layout-KPQWJNAG.js +14 -0
  169. package/dist/layout-OL2XFJXA.js +17 -0
  170. package/dist/layout-WCAIKGZG.js +19 -0
  171. package/dist/layout-WSMPBQ4Q.js +17 -0
  172. package/dist/layout-ZE5DRJWX.js +20 -0
  173. package/dist/{layout-search-55FU6HD3.js → layout-search-34DPZD43.js} +51 -35
  174. package/dist/legend-constants-P5EQWRQQ.js +49 -0
  175. package/dist/{palettes-PRJ2RI6D.js → palettes-FGTNFARW.js} +4 -4
  176. package/dist/{parser-KKTJ6M3Y.js → parser-275KP7JO.js} +8 -8
  177. package/dist/parser-27Z76SN3.js +22 -0
  178. package/dist/parser-3CODK6RG.js +15 -0
  179. package/dist/{parser-EH5VE7ZN.js → parser-3KIGEEJM.js} +6 -6
  180. package/dist/parser-3VSWEKBF.js +15 -0
  181. package/dist/parser-4E4I3GNT.js +13 -0
  182. package/dist/parser-5FGJSQNS.js +12 -0
  183. package/dist/parser-5HQXCNOS.js +12 -0
  184. package/dist/parser-5QPFOB5F.js +12 -0
  185. package/dist/parser-6B6SSZT7.js +11 -0
  186. package/dist/parser-6PPHAXXH.js +14 -0
  187. package/dist/parser-7JHWEWXM.js +13 -0
  188. package/dist/{parser-5PDYJGWA.js → parser-7JVIDLLR.js} +7 -7
  189. package/dist/parser-CKA3QMAG.js +18 -0
  190. package/dist/parser-CRKLXGW7.js +13 -0
  191. package/dist/parser-EXNBDNGY.js +11 -0
  192. package/dist/parser-FF4BMRSB.js +16 -0
  193. package/dist/parser-FOOFEJQU.js +13 -0
  194. package/dist/parser-G26MTBFS.js +11 -0
  195. package/dist/parser-GKP2MHHL.js +11 -0
  196. package/dist/parser-GN2MM5CC.js +11 -0
  197. package/dist/parser-IKWK2ZU3.js +18 -0
  198. package/dist/parser-IVGHXLZP.js +14 -0
  199. package/dist/parser-NNIL3HXU.js +11 -0
  200. package/dist/parser-RNLTBIJ6.js +19 -0
  201. package/dist/parser-UWRX52PC.js +16 -0
  202. package/dist/parser-VOERD6XR.js +14 -0
  203. package/dist/parser-XNKJCMMA.js +13 -0
  204. package/dist/parser-XVPTRWZ4.js +15 -0
  205. package/dist/parser-YSLNDFLV.js +22 -0
  206. package/dist/parser-ZGNXYFPS.js +15 -0
  207. package/dist/parser-ZQDQTB4X.js +20 -0
  208. package/dist/pert.d.ts +4 -2
  209. package/dist/registry-CaSw0PSH.d.ts +350 -0
  210. package/dist/renderer-2C6DJRYN.js +24 -0
  211. package/dist/renderer-5MPN7CXZ.js +19 -0
  212. package/dist/renderer-6EN5XXJZ.js +27 -0
  213. package/dist/renderer-6WRYVM5R.js +24 -0
  214. package/dist/renderer-7NQSTQMQ.js +16 -0
  215. package/dist/renderer-7ZNVOVFG.js +16 -0
  216. package/dist/{renderer-KQB7UGDS.js → renderer-AK2WO4EI.js} +7 -6
  217. package/dist/renderer-COLQFSFV.js +26 -0
  218. package/dist/renderer-CWEFGEIC.js +36 -0
  219. package/dist/renderer-D3BRNOMV.js +29 -0
  220. package/dist/renderer-HIFQVEJA.js +22 -0
  221. package/dist/renderer-JCZG6AYU.js +28 -0
  222. package/dist/{renderer-6RKQPNJI.js → renderer-JTCX6PCG.js} +13 -13
  223. package/dist/renderer-JWGQSTMR.js +37 -0
  224. package/dist/{renderer-3YPZHMOU.js → renderer-K7XLVPH5.js} +6 -6
  225. package/dist/renderer-KARQF3F3.js +22 -0
  226. package/dist/renderer-LVZAHRP6.js +34 -0
  227. package/dist/{renderer-QXGN5H3A.js → renderer-NE5W7CQP.js} +8 -8
  228. package/dist/renderer-QD2SJF2I.js +34 -0
  229. package/dist/renderer-RLMOTXZ6.js +37 -0
  230. package/dist/renderer-SQ54MDSA.js +26 -0
  231. package/dist/{renderer-UV6MI64M.js → renderer-TYHGXAVT.js} +7 -6
  232. package/dist/renderer-UKXW2QPE.js +23 -0
  233. package/dist/renderer-UPF7NRTI.js +28 -0
  234. package/dist/renderer-VMH6L6CP.js +24 -0
  235. package/dist/{renderer-GHPZMFU2.js → renderer-WCWI4I6A.js} +5 -5
  236. package/dist/renderer-WFSUBKUL.js +25 -0
  237. package/dist/renderer-WNFXYYGL.js +21 -0
  238. package/dist/{renderer-RGIYOTKJ.js → renderer-XTXSOK3L.js} +14 -14
  239. package/dist/renderer-YUKPS27O.js +24 -0
  240. package/dist/renderer-YUXGXGSW.js +27 -0
  241. package/dist/renderer-ZBTEX2JK.js +16 -0
  242. package/dist/renderer-radial-WF6VOUOD.js +21 -0
  243. package/dist/{resolver-EMTGNR3D.js → resolver-WFKZYBJ2.js} +4 -4
  244. package/dist/state-parser-L7DHZIQO.js +19 -0
  245. package/dist/state-renderer-TFEUOP4H.js +38 -0
  246. package/dist/{themes-32xj5ZTW.d.ts → themes-tbBkIVsn.d.ts} +2 -349
  247. package/docs/ai-integration.md +74 -77
  248. package/docs/language-reference.md +329 -290
  249. package/fonts/Inter-Bold.woff2 +0 -0
  250. package/fonts/Inter-Regular.woff2 +0 -0
  251. package/gallery/fixtures/boxes-and-lines-diverging.dgmo +1 -2
  252. package/gallery/fixtures/boxes-and-lines.dgmo +1 -1
  253. package/gallery/fixtures/clock.dgmo +1 -1
  254. package/gallery/fixtures/event-line.dgmo +1 -1
  255. package/gallery/fixtures/gantt-full.dgmo +1 -1
  256. package/gallery/fixtures/gantt-sprints.dgmo +9 -9
  257. package/gallery/fixtures/gantt.dgmo +1 -1
  258. package/gallery/fixtures/legacy-syntax-backcompat.dgmo +16 -0
  259. package/gallery/fixtures/state-tags.dgmo +40 -0
  260. package/gallery/fixtures/swimlane.dgmo +1 -1
  261. package/gallery/fixtures/timeline-intraday.dgmo +1 -1
  262. package/package.json +5 -1
  263. package/dist/analyzer-BJ54GIFB.js +0 -15
  264. package/dist/calculator-LDYQCDDY.js +0 -11
  265. package/dist/charts-d3-7E4B4IMW.js +0 -26
  266. package/dist/dgmo-router-Y2VEX46B.js +0 -86
  267. package/dist/dimensions-F7B5C4BJ.js +0 -22
  268. package/dist/flowchart-parser-MY53QWTZ.js +0 -21
  269. package/dist/layout-46366KBT.js +0 -10
  270. package/dist/layout-46N4JJYK.js +0 -17
  271. package/dist/layout-4DIUOX2T.js +0 -14
  272. package/dist/layout-AM2JWW3X.js +0 -15
  273. package/dist/layout-CBCLPMSG.js +0 -15
  274. package/dist/layout-EE6GE46Y.js +0 -17
  275. package/dist/layout-G23F7LDH.js +0 -9
  276. package/dist/layout-HYZPWAK5.js +0 -18
  277. package/dist/layout-MUPRALE5.js +0 -14
  278. package/dist/layout-YVTNOTN4.js +0 -20
  279. package/dist/layout-ZDOSXL5G.js +0 -19
  280. package/dist/parser-2Q2T4C3B.js +0 -22
  281. package/dist/parser-3A42DZ72.js +0 -11
  282. package/dist/parser-4RFTKAQX.js +0 -15
  283. package/dist/parser-57ILIFZ2.js +0 -20
  284. package/dist/parser-5A2UWU6B.js +0 -11
  285. package/dist/parser-6BJEXUFX.js +0 -13
  286. package/dist/parser-6ZKABF5S.js +0 -22
  287. package/dist/parser-AIMHGJRR.js +0 -19
  288. package/dist/parser-AZJ25OKK.js +0 -13
  289. package/dist/parser-B77S5SZM.js +0 -11
  290. package/dist/parser-BEPSWJAD.js +0 -11
  291. package/dist/parser-BKI42XBQ.js +0 -16
  292. package/dist/parser-C3D7MVXY.js +0 -11
  293. package/dist/parser-CDG7CHV5.js +0 -14
  294. package/dist/parser-CZOJ7XQ6.js +0 -15
  295. package/dist/parser-E2RL6JYF.js +0 -18
  296. package/dist/parser-FQ6GZFMR.js +0 -13
  297. package/dist/parser-GKLZKEIK.js +0 -13
  298. package/dist/parser-H6ABKHZZ.js +0 -12
  299. package/dist/parser-I6GGFKOQ.js +0 -12
  300. package/dist/parser-JA7JQ7NF.js +0 -15
  301. package/dist/parser-OK22AC6Y.js +0 -14
  302. package/dist/parser-OK2ILHRT.js +0 -16
  303. package/dist/parser-OUTPNJWC.js +0 -11
  304. package/dist/parser-PORDUX5E.js +0 -15
  305. package/dist/parser-SRVFR7PM.js +0 -13
  306. package/dist/parser-UKFFZCFJ.js +0 -14
  307. package/dist/parser-UMWPLORP.js +0 -18
  308. package/dist/parser-Z4TZV2CB.js +0 -12
  309. package/dist/renderer-2AUFT3E2.js +0 -24
  310. package/dist/renderer-2HTNBIF2.js +0 -34
  311. package/dist/renderer-3K3IB7D5.js +0 -22
  312. package/dist/renderer-3YNIWF5I.js +0 -16
  313. package/dist/renderer-4WR6WMVF.js +0 -26
  314. package/dist/renderer-66MERVQ2.js +0 -24
  315. package/dist/renderer-ARMJBP6C.js +0 -28
  316. package/dist/renderer-CO2DW7S7.js +0 -37
  317. package/dist/renderer-EDJ2O4S5.js +0 -34
  318. package/dist/renderer-F7U3MFCV.js +0 -22
  319. package/dist/renderer-GD2COXVL.js +0 -16
  320. package/dist/renderer-GQIESYEM.js +0 -25
  321. package/dist/renderer-HCKJDFXD.js +0 -37
  322. package/dist/renderer-HYGHO4SJ.js +0 -28
  323. package/dist/renderer-JC3RDUT7.js +0 -23
  324. package/dist/renderer-NKJ24TEA.js +0 -19
  325. package/dist/renderer-OYO67VZK.js +0 -26
  326. package/dist/renderer-QIWVHWZO.js +0 -15
  327. package/dist/renderer-QRWACQRI.js +0 -21
  328. package/dist/renderer-QXPP4TA2.js +0 -27
  329. package/dist/renderer-RHT4MHFU.js +0 -24
  330. package/dist/renderer-RYR3TJ46.js +0 -36
  331. package/dist/renderer-SRKDNDFB.js +0 -27
  332. package/dist/renderer-TGTUABCI.js +0 -24
  333. package/dist/renderer-TXJFKPOG.js +0 -29
  334. package/dist/renderer-radial-FWABAZHB.js +0 -21
  335. package/dist/state-parser-6T6CNMPX.js +0 -18
  336. package/dist/state-renderer-AWZ3ECAX.js +0 -34
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isBlockNode
3
- } from "./chunk-NNAAJVBU.js";
3
+ } from "./chunk-NR5HCAUD.js";
4
4
  import {
5
5
  AUTO_TAG_COLOR_SENTINEL,
6
6
  finalizeAutoTagColors,
@@ -9,22 +9,23 @@ import {
9
9
  tagAttrKey,
10
10
  validateTagGroupNames,
11
11
  validateTagValues
12
- } from "./chunk-467TVMQL.js";
12
+ } from "./chunk-CMVZWP32.js";
13
13
  import {
14
14
  extractColor,
15
+ fillModeFromToken,
15
16
  measureIndent,
16
17
  parseFirstLine
17
- } from "./chunk-LV4BETUU.js";
18
+ } from "./chunk-YJVA3QUU.js";
18
19
  import {
19
20
  formatDgmoError,
20
21
  makeDgmoError,
21
22
  makeFail,
22
23
  suggest
23
- } from "./chunk-CXK4DZH3.js";
24
+ } from "./chunk-4W2PE66Q.js";
24
25
 
25
26
  // src/block/parser.ts
26
27
  function parseBlock(content, palette) {
27
- const options = { noLegend: false, solidFill: false };
28
+ const options = { noLegend: false };
28
29
  const result = {
29
30
  type: "block",
30
31
  title: null,
@@ -132,8 +133,10 @@ function parseBlock(content, palette) {
132
133
  options.noLegend = true;
133
134
  continue;
134
135
  }
135
- if (/^solid-fill\s*$/i.test(trimmed)) {
136
- options.solidFill = true;
136
+ const fm = fillModeFromToken(trimmed);
137
+ if (fm !== null) {
138
+ if (fm === "tint") delete options.fillMode;
139
+ else options.fillMode = fm;
137
140
  continue;
138
141
  }
139
142
  }
@@ -335,4 +338,4 @@ function parseBlockTail(tail, aliasMap) {
335
338
  export {
336
339
  parseBlock
337
340
  };
338
- //# sourceMappingURL=chunk-ENRS56GC.js.map
341
+ //# sourceMappingURL=chunk-KUSAVOWZ.js.map
@@ -4,10 +4,10 @@ import {
4
4
  renderNoteBadge,
5
5
  renderNoteBox,
6
6
  renderNoteConnector
7
- } from "./chunk-JEUJOX5X.js";
7
+ } from "./chunk-3IUHKMJI.js";
8
8
  import {
9
9
  layoutERDiagram
10
- } from "./chunk-6NYWYNBI.js";
10
+ } from "./chunk-VGNIDAPQ.js";
11
11
  import {
12
12
  EDGE_STROKE_WIDTH,
13
13
  NODE_STROKE_WIDTH
@@ -17,7 +17,7 @@ import {
17
17
  } from "./chunk-YYVTBZZC.js";
18
18
  import {
19
19
  renderIntegratedLegend
20
- } from "./chunk-OU7HLO7I.js";
20
+ } from "./chunk-W5KMNC5U.js";
21
21
  import {
22
22
  TITLE_FONT_SIZE,
23
23
  TITLE_FONT_WEIGHT,
@@ -26,24 +26,28 @@ import {
26
26
  import {
27
27
  FONT_FAMILY
28
28
  } from "./chunk-6KFWC4CO.js";
29
- import {
30
- LEGEND_HEIGHT
31
- } from "./chunk-QOOUC2J5.js";
32
- import {
33
- measureText
34
- } from "./chunk-WCT3NYCV.js";
35
29
  import {
36
30
  parseERDiagram
37
- } from "./chunk-332ZR4QU.js";
31
+ } from "./chunk-BR7AYN76.js";
38
32
  import {
39
33
  contrastText,
40
34
  getSeriesColors,
41
35
  shapeFill
42
- } from "./chunk-P6T66CCZ.js";
36
+ } from "./chunk-JYDMBWRP.js";
37
+ import {
38
+ LEGEND_HEIGHT
39
+ } from "./chunk-4RGZFA7H.js";
40
+ import {
41
+ measureText
42
+ } from "./chunk-4ASYQ347.js";
43
43
  import {
44
44
  resolveTagColor,
45
45
  tagAttrKey
46
- } from "./chunk-467TVMQL.js";
46
+ } from "./chunk-CMVZWP32.js";
47
+ import {
48
+ fillModeFromOptions,
49
+ legendSuppressed
50
+ } from "./chunk-YJVA3QUU.js";
47
51
 
48
52
  // src/er/renderer.ts
49
53
  import * as d3Selection from "d3-selection";
@@ -250,8 +254,9 @@ function renderERDiagram(container, parsed, layout, palette, isDark, onClickItem
250
254
  d3Selection.select(container).selectAll(":not([data-d3-tooltip])").remove();
251
255
  const useSemanticColors = parsed.tagGroups.length === 0 && layout.nodes.every((n) => !n.color);
252
256
  const LEGEND_FIXED_GAP = 8;
253
- const hasTagLegend = parsed.tagGroups.length > 0;
254
- const legendReserveH = useSemanticColors ? LEGEND_HEIGHT + LEGEND_FIXED_GAP : hasTagLegend ? LEGEND_HEIGHT + LEGEND_FIXED_GAP : 0;
257
+ const noLegend = legendSuppressed(parsed.options);
258
+ const hasTagLegend = parsed.tagGroups.length > 0 && !noLegend;
259
+ const legendReserveH = !noLegend && (useSemanticColors || hasTagLegend) ? LEGEND_HEIGHT + LEGEND_FIXED_GAP : 0;
255
260
  const showTitle = !!parsed.title && parsed.options["no-title"] !== "on";
256
261
  const titleHeight = showTitle ? 40 : 0;
257
262
  const diagramW = layout.width;
@@ -383,7 +388,7 @@ function renderERDiagram(container, parsed, layout, palette, isDark, onClickItem
383
388
  const w = node.width;
384
389
  const h = node.height;
385
390
  const fill = shapeFill(palette, nodeColor, isDark, {
386
- solid: parsed.options["solid-fill"] === "on"
391
+ mode: fillModeFromOptions(parsed.options)
387
392
  });
388
393
  const stroke = nodeColor;
389
394
  const onFillText = contrastText(
@@ -455,7 +460,7 @@ function renderERDiagram(container, parsed, layout, palette, isDark, onClickItem
455
460
  }
456
461
  }
457
462
  }
458
- if (parsed.tagGroups.length > 0) {
463
+ if (hasTagLegend) {
459
464
  const legendY = sDiagramPadding + titleHeight;
460
465
  const legendG = svg.append("g").attr("class", "er-tag-legend").attr("transform", `translate(0,${legendY})`);
461
466
  renderIntegratedLegend(legendG, {
@@ -468,7 +473,7 @@ function renderERDiagram(container, parsed, layout, palette, isDark, onClickItem
468
473
  });
469
474
  legendG.selectAll("[data-legend-group]").classed("er-legend-group", true);
470
475
  }
471
- if (semanticRoles) {
476
+ if (semanticRoles && !noLegend) {
472
477
  const presentRoles = ROLE_ORDER.filter((role) => {
473
478
  for (const r of semanticRoles.values()) {
474
479
  if (r === role) return true;
@@ -545,4 +550,4 @@ export {
545
550
  renderERDiagram,
546
551
  renderERDiagramForExport
547
552
  };
548
- //# sourceMappingURL=chunk-BYJBIALT.js.map
553
+ //# sourceMappingURL=chunk-LC3FFD43.js.map
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-YYVTBZZC.js";
10
10
  import {
11
11
  renderIntegratedLegend
12
- } from "./chunk-OU7HLO7I.js";
12
+ } from "./chunk-W5KMNC5U.js";
13
13
  import {
14
14
  TITLE_FONT_SIZE,
15
15
  TITLE_FONT_WEIGHT,
@@ -18,20 +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";
31
+ } from "./chunk-4ASYQ347.js";
28
32
  import {
29
- contrastText,
30
- shapeFill
31
- } from "./chunk-P6T66CCZ.js";
33
+ fillModeFromOptions
34
+ } from "./chunk-YJVA3QUU.js";
32
35
  import {
33
36
  resolveColor
34
- } from "./chunk-TLVIHFRO.js";
37
+ } from "./chunk-ZKPPI6BF.js";
35
38
 
36
39
  // src/cycle/renderer.ts
37
40
  import * as d3Selection from "d3-selection";
@@ -678,7 +681,7 @@ var DESC_LINE_HEIGHT2 = 15;
678
681
  var TITLE_AREA_HEIGHT = 50;
679
682
  function renderCycle(container, parsed, palette, isDark, onClickItem, exportDims, viewState, renderOptions) {
680
683
  if (parsed.nodes.length === 0) return;
681
- const solid = parsed.options?.["solid-fill"] === "on";
684
+ const fillMode = fillModeFromOptions(parsed.options ?? {});
682
685
  d3Selection.select(container).selectAll(":not([data-d3-tooltip])").remove();
683
686
  const width = exportDims?.width ?? container.clientWidth;
684
687
  const height = exportDims?.height ?? container.clientHeight;
@@ -815,7 +818,9 @@ function renderCycle(container, parsed, palette, isDark, onClickItem, exportDims
815
818
  const ln = layout.nodes[i];
816
819
  const node = parsed.nodes[i];
817
820
  const solidColor = resolveNodeColor(node.color, palette, defaultNodeColor);
818
- const fillColor = shapeFill(palette, solidColor, isDark, { solid });
821
+ const fillColor = shapeFill(palette, solidColor, isDark, {
822
+ mode: fillMode
823
+ });
819
824
  const textColor = contrastText(
820
825
  fillColor,
821
826
  palette.textOnFillLight,
@@ -859,7 +864,7 @@ function renderCycle(container, parsed, palette, isDark, onClickItem, exportDims
859
864
  const labelText = nodeG.append("text").attr("x", ln.x).attr("y", headerCenterY + scaledNodeFont / 3).attr("text-anchor", "middle").attr("fill", textColor).attr("font-family", FONT_FAMILY).attr("font-size", scaledNodeFont).attr("font-weight", "600");
860
865
  renderInlineText(labelText, node.label, palette, scaledNodeFont);
861
866
  const sepY = ln.y - nodeH / 2 + HEADER_H;
862
- nodeG.append("line").attr("x1", ln.x - nodeW / 2).attr("y1", sepY).attr("x2", ln.x + nodeW / 2).attr("y2", sepY).attr("stroke", solid ? descColor : solidColor).attr("stroke-opacity", 0.3).attr("stroke-width", 1);
867
+ nodeG.append("line").attr("x1", ln.x - nodeW / 2).attr("y1", sepY).attr("x2", ln.x + nodeW / 2).attr("y2", sepY).attr("stroke", fillMode === "solid" ? descColor : solidColor).attr("stroke-opacity", 0.3).attr("stroke-width", 1);
863
868
  const descStartY = sepY + 4 + scaledDescFont;
864
869
  const descPadX = Math.max(8, 12 * layout.scale);
865
870
  const descX = ln.x - nodeW / 2 + descPadX;
@@ -964,4 +969,4 @@ export {
964
969
  renderCycle,
965
970
  renderCycleForExport
966
971
  };
967
- //# sourceMappingURL=chunk-65WJYYKJ.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-467TVMQL.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-NEQ6GJXB.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-467TVMQL.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-LV4BETUU.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-5WPNFSXP.js.map
574
+ //# sourceMappingURL=chunk-MA3HJZHB.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  SKETCH_DIAGNOSTIC_CODES
3
- } from "./chunk-XHVV4NVW.js";
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-Z6XJQ6KO.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-6H7O2OPM.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-467TVMQL.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-LV4BETUU.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-MVN25IF6.js.map
923
+ //# sourceMappingURL=chunk-NNUMX6WX.js.map