@diagrammo/dgmo 0.96.0 → 0.97.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (261) hide show
  1. package/dist/advanced.d.ts +172 -8
  2. package/dist/advanced.js +225 -243
  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-MVUNMJKO.js → chunk-2FMOLWX4.js} +71 -57
  12. package/dist/{chunk-2BYFNZVM.js → chunk-2SZILMQT.js} +57 -15
  13. package/dist/{chunk-VLI6AWS3.js → chunk-3C4OXVZJ.js} +2 -2
  14. package/dist/{chunk-OO4GUE4E.js → chunk-3HL6NSSQ.js} +63 -18
  15. package/dist/{chunk-RGFVHYDP.js → chunk-3IUMSK72.js} +2 -2
  16. package/dist/{chunk-LRHPBWOY.js → chunk-44RLIAYC.js} +17 -10
  17. package/dist/{chunk-H7AXCRO7.js → chunk-453IWXZ3.js} +0 -11
  18. package/dist/{chunk-FHX373L5.js → chunk-47INRTZ6.js} +2 -2
  19. package/dist/{chunk-IN7XI6NO.js → chunk-4NMRS6HW.js} +1 -1
  20. package/dist/{chunk-HH3DHNQA.js → chunk-4TK26YHH.js} +2 -2
  21. package/dist/{chunk-5LG526X7.js → chunk-5TGZBHEJ.js} +1 -1
  22. package/dist/{chunk-BD4O4D2A.js → chunk-5WZYJC2P.js} +2 -2
  23. package/dist/{chunk-DPNSDCR3.js → chunk-65JFUANT.js} +1 -1
  24. package/dist/{chunk-EZ6BI5LL.js → chunk-6OUMYNAJ.js} +1 -1
  25. package/dist/{chunk-U6N547QA.js → chunk-6PUBFB6D.js} +24 -3
  26. package/dist/{chunk-5GU6C5WB.js → chunk-6S2H6EKN.js} +3 -3
  27. package/dist/{chunk-OYGJZA24.js → chunk-6SDEXSJY.js} +39 -19
  28. package/dist/{chunk-IKXQ6NVR.js → chunk-6YBZFOTA.js} +13 -13
  29. package/dist/{chunk-4B45SNZH.js → chunk-74XR7Z3I.js} +13 -13
  30. package/dist/{chunk-VNAPEZX2.js → chunk-7ASVGFW3.js} +1 -1
  31. package/dist/{chunk-RTRORHSP.js → chunk-7QKWU7FX.js} +3 -3
  32. package/dist/{chunk-A6YINTY6.js → chunk-7RACGVUY.js} +1 -1
  33. package/dist/{chunk-5G4DOOX2.js → chunk-7TEAFIEJ.js} +9 -5
  34. package/dist/{chunk-UNCCZ3NU.js → chunk-A3V72YIL.js} +14 -1
  35. package/dist/{chunk-VJ7NLYFE.js → chunk-A5LFM62B.js} +3 -3
  36. package/dist/{chunk-P3PSLC2K.js → chunk-AULFF7L2.js} +2 -2
  37. package/dist/{chunk-SCYVGPLI.js → chunk-B7ZH5EQ2.js} +2 -2
  38. package/dist/{chunk-VGAMBOOC.js → chunk-C6ME2L4T.js} +2 -2
  39. package/dist/{chunk-B2YVZ3QU.js → chunk-CGP7RGLJ.js} +1 -1
  40. package/dist/{chunk-67N26CER.js → chunk-CLW45YKE.js} +2 -1
  41. package/dist/{chunk-THTYCJGF.js → chunk-CUOMNKYW.js} +4 -4
  42. package/dist/{chunk-34JOHSVE.js → chunk-CUTEHGXO.js} +2 -2
  43. package/dist/{chunk-NERQSSYD.js → chunk-D67YE4LR.js} +1 -1
  44. package/dist/{chunk-DKCVAQU3.js → chunk-D7KZE2XJ.js} +39 -17
  45. package/dist/{chunk-PGD6CNWO.js → chunk-DFEVFLEG.js} +3 -3
  46. package/dist/{chunk-VVTCUIPN.js → chunk-DKMZ4VMV.js} +1 -1
  47. package/dist/{chunk-H7JVKUA5.js → chunk-DRY4W4W6.js} +36 -15
  48. package/dist/{chunk-IQZSKWE5.js → chunk-E6GHXMH2.js} +8 -8
  49. package/dist/{chunk-I2I2FKAK.js → chunk-EBJLT7PH.js} +1 -1
  50. package/dist/{chunk-GEHK4UD5.js → chunk-EEIGHOJR.js} +92 -23
  51. package/dist/{chunk-FKJWZWNU.js → chunk-EUPUVYWO.js} +1 -1
  52. package/dist/{chunk-3W73ZP6W.js → chunk-F2OAZHOX.js} +3 -3
  53. package/dist/{chunk-IU7XKZA6.js → chunk-FK6HZYGK.js} +4 -14
  54. package/dist/{chunk-2M3K6GD2.js → chunk-FTW2E2YH.js} +6 -6
  55. package/dist/{chunk-5P2L5QXE.js → chunk-FZVCS2XY.js} +4 -2
  56. package/dist/chunk-G24NSISJ.js +69 -0
  57. package/dist/{chunk-5H7SA5ZD.js → chunk-GFQFLLP3.js} +2 -2
  58. package/dist/{chunk-BUVLLK3D.js → chunk-GLLYHYGT.js} +27 -17
  59. package/dist/{chunk-VLC6WNRD.js → chunk-GULGSH2Z.js} +4 -0
  60. package/dist/{chunk-H5NVCOEJ.js → chunk-GXBH7WNN.js} +2 -2
  61. package/dist/{chunk-7UWVHNPM.js → chunk-H242TVAE.js} +9 -9
  62. package/dist/{chunk-M4ZUIW3J.js → chunk-H7DZYHQF.js} +3 -3
  63. package/dist/{chunk-GLCMUTO5.js → chunk-HQNZJMNS.js} +1 -1
  64. package/dist/{chunk-H7RQG4PH.js → chunk-IAM3IDL4.js} +2 -2
  65. package/dist/{chunk-WTPS73RM.js → chunk-II6D6NWX.js} +8 -8
  66. package/dist/{chunk-5ARANBIE.js → chunk-IUFTAFGN.js} +2 -2
  67. package/dist/{chunk-AQRSEQZV.js → chunk-IZEKHIV6.js} +3 -3
  68. package/dist/{chunk-WGNP5ND2.js → chunk-J3YM6RA5.js} +3 -3
  69. package/dist/{chunk-YFIUABSF.js → chunk-J467QBZF.js} +23 -3
  70. package/dist/{chunk-CD7VQCDL.js → chunk-J7JF4QKA.js} +40 -30
  71. package/dist/{chunk-MYHR3PMH.js → chunk-JULBDTNU.js} +7 -7
  72. package/dist/{chunk-EPDBWATV.js → chunk-K7RRXZHS.js} +4 -2
  73. package/dist/{chunk-YVIPJGFG.js → chunk-KMB754DO.js} +33 -6
  74. package/dist/chunk-KNKZGRRB.js +439 -0
  75. package/dist/{chunk-SIABEREK.js → chunk-KTGJQJB3.js} +2 -2
  76. package/dist/{chunk-LGUFJ7Y2.js → chunk-KW3CC7SB.js} +1 -1
  77. package/dist/{chunk-ITDF3MWD.js → chunk-L3K5O3Z5.js} +3 -3
  78. package/dist/chunk-LRTSTDJ6.js +126 -0
  79. package/dist/{chunk-NI4L6HEU.js → chunk-LZATSXAA.js} +1 -1
  80. package/dist/{chunk-RVOSA4RR.js → chunk-MJ725XHD.js} +441 -267
  81. package/dist/{chunk-EPB3UEMD.js → chunk-NBISN6FH.js} +2 -2
  82. package/dist/{chunk-IZFJZCF6.js → chunk-NN5RUHXV.js} +84 -16
  83. package/dist/{chunk-KDWEOT54.js → chunk-NOZMRPXI.js} +96 -153
  84. package/dist/{chunk-EM5SA7NC.js → chunk-NQFZ7LXC.js} +4 -4
  85. package/dist/chunk-NTDWVTEY.js +12 -0
  86. package/dist/{chunk-AUXUNV73.js → chunk-O3HRF25Z.js} +1 -1
  87. package/dist/{chunk-GLL237AP.js → chunk-OSSA5UWA.js} +3 -3
  88. package/dist/{chunk-UOCWYLYT.js → chunk-OZXKW5NA.js} +1 -1
  89. package/dist/{chunk-QEU6VM4O.js → chunk-PLQZJZ2K.js} +1 -1
  90. package/dist/chunk-PRG7NIUU.js +272 -0
  91. package/dist/{chunk-MAYTYF5S.js → chunk-PSNRB75I.js} +3 -3
  92. package/dist/{chunk-B5CEV7IR.js → chunk-PT5VFY3B.js} +38 -14
  93. package/dist/{chunk-KAO7JL4I.js → chunk-PU5X3P3T.js} +6 -5
  94. package/dist/{chunk-B7BSRVNC.js → chunk-PZ5LAAO3.js} +2 -2
  95. package/dist/{chunk-TOHTKLKE.js → chunk-Q5Q5JLRT.js} +1 -1
  96. package/dist/{chunk-TUOZ6AXC.js → chunk-Q6V342WS.js} +16 -4
  97. package/dist/{chunk-ZOKD5F7M.js → chunk-QDPTOIG7.js} +5 -5
  98. package/dist/{chunk-ERT7XDQW.js → chunk-QIITSGI5.js} +1 -1
  99. package/dist/{chunk-K2WXMXI2.js → chunk-QLIZ7SB7.js} +1 -1
  100. package/dist/chunk-QLNLRZ37.js +181 -0
  101. package/dist/{chunk-P6LKX3IQ.js → chunk-QOLRTPGH.js} +6 -6
  102. package/dist/{chunk-FBK32S4D.js → chunk-R4SXMBGF.js} +1 -1
  103. package/dist/chunk-R4U7IIRX.js +178 -0
  104. package/dist/{chunk-DWMQ24JR.js → chunk-RC6PISCK.js} +4 -2
  105. package/dist/{chunk-R5L5E3TC.js → chunk-REKLKGR6.js} +3 -3
  106. package/dist/{chunk-FUYEXLAN.js → chunk-RFGQDIOI.js} +837 -220
  107. package/dist/{chunk-W5MMPPGX.js → chunk-ROFSIFSY.js} +4 -4
  108. package/dist/{chunk-JCC3B2GS.js → chunk-ROH4LYBL.js} +65 -21
  109. package/dist/{chunk-OAZ6BIIB.js → chunk-SNDCXT5R.js} +9 -7
  110. package/dist/{chunk-JRN2CRXJ.js → chunk-TDUBTDXS.js} +1 -1
  111. package/dist/{chunk-GM2SLMQW.js → chunk-TMB4YY3J.js} +34 -4
  112. package/dist/{chunk-ZBOIYC2G.js → chunk-V3ICBS2O.js} +5 -5
  113. package/dist/{chunk-HZX4QZGR.js → chunk-V65EDV6S.js} +3 -3
  114. package/dist/{chunk-67RKJEKF.js → chunk-VKT3BVRO.js} +35 -11
  115. package/dist/{chunk-5BG4OSWJ.js → chunk-VOO65FKC.js} +12 -12
  116. package/dist/{chunk-KQAPFIYF.js → chunk-VQWLASDC.js} +2 -2
  117. package/dist/{chunk-JILEYZ2V.js → chunk-VVL2KKG4.js} +1 -1
  118. package/dist/{chunk-D7DGLJ7N.js → chunk-VVZDBUHA.js} +2 -2
  119. package/dist/{chunk-JBAFAKGX.js → chunk-W46OMHOK.js} +23 -27
  120. package/dist/{chunk-XCKNFFKM.js → chunk-WH6E6SHC.js} +2 -4
  121. package/dist/{chunk-P2GNNEMN.js → chunk-WPYJAHRP.js} +1 -1
  122. package/dist/{chunk-TPCP2UOI.js → chunk-WXGFB2O2.js} +3 -3
  123. package/dist/{chunk-RIK6WUMO.js → chunk-XCYGOCMS.js} +43 -26
  124. package/dist/{chunk-I3ZRIMR7.js → chunk-XEMCNQQW.js} +15 -15
  125. package/dist/{chunk-PWZEJNO6.js → chunk-XMUFXJI2.js} +6 -6
  126. package/dist/{chunk-EMGNCG5C.js → chunk-XZGXVN4T.js} +5 -5
  127. package/dist/{chunk-WLGOIMTI.js → chunk-YCIBBVI2.js} +2 -2
  128. package/dist/{chunk-V2NQV7VL.js → chunk-YFIDR7JH.js} +2 -2
  129. package/dist/{chunk-K2SFH3GJ.js → chunk-YFWIFKRQ.js} +3 -3
  130. package/dist/{chunk-6XLMTAEX.js → chunk-YIHRLY55.js} +33 -6
  131. package/dist/{chunk-CYRB2JTN.js → chunk-YLKPRT6U.js} +1 -1
  132. package/dist/{chunk-KMU65FYM.js → chunk-YSDSFXQD.js} +1 -1
  133. package/dist/{chunk-ZI6WC24V.js → chunk-ZBJV4KNU.js} +1 -1
  134. package/dist/{chunk-TIPNNOZC.js → chunk-ZCKVTZHD.js} +41 -19
  135. package/dist/{chunk-YSGOXZBB.js → chunk-ZMVMGZAJ.js} +1 -1
  136. package/dist/{chunk-CP73WWLN.js → chunk-ZRW4B4KF.js} +48 -14
  137. package/dist/{chunk-O2HNVNKO.js → chunk-ZTKO2RD4.js} +5 -5
  138. package/dist/collapse-6IGH2B24.js +31 -0
  139. package/dist/collapse-GOWNCVHZ.js +7 -0
  140. package/dist/collapse-HNTPLB2Q.js +11 -0
  141. package/dist/collapse-NUM7DPJA.js +10 -0
  142. package/dist/completion-registry.js +27 -4
  143. package/dist/dgmo-router-RSYWR5IS.js +101 -0
  144. package/dist/dimensions-KXAI7U2B.js +21 -0
  145. package/dist/editor.js +882 -215
  146. package/dist/{flowchart-parser-SM5LHF2D.js → flowchart-parser-UI5VZNGJ.js} +5 -5
  147. package/dist/{flowchart-renderer-PPS2GTTD.js → flowchart-renderer-IYWPKPCF.js} +18 -18
  148. package/dist/fold-at-line-DmSAa1eU.d.ts +11 -0
  149. package/dist/highlight.js +883 -216
  150. package/dist/index.d.ts +52 -5
  151. package/dist/index.js +79 -63
  152. package/dist/{layout-AF4KA5B2.js → layout-6VY3DHYD.js} +6 -6
  153. package/dist/{layout-FCFUVCRI.js → layout-7C2QZCEZ.js} +10 -10
  154. package/dist/{layout-2WESJYRE.js → layout-7E7BNOGO.js} +3 -2
  155. package/dist/layout-BSK374N6.js +11 -0
  156. package/dist/{layout-R6G4MEO3.js → layout-FJDBY3WG.js} +5 -5
  157. package/dist/{layout-KELSNWBD.js → layout-G3RVKEC4.js} +10 -10
  158. package/dist/{layout-H2KP5A6M.js → layout-GC5XX2RH.js} +2 -2
  159. package/dist/{layout-LNVIH45F.js → layout-R6ULGQJK.js} +6 -6
  160. package/dist/{layout-PPIVGJXD.js → layout-ROI5KVSO.js} +3 -3
  161. package/dist/{layout-3TSVAGWH.js → layout-SPPS225I.js} +3 -3
  162. package/dist/{layout-HF3PMI4H.js → layout-VTGOYGRC.js} +2 -2
  163. package/dist/{layout-MPSH3YWE.js → layout-WBH5IHYK.js} +10 -10
  164. package/dist/layout-WTHBGTH2.js +15 -0
  165. package/dist/layout-ZCCABSV7.js +15 -0
  166. package/dist/{layout-search-C2TYUH4L.js → layout-search-DSIDKKQO.js} +8 -8
  167. package/dist/{legend-constants-55MFBXYF.js → legend-constants-KF3MKWL2.js} +2 -2
  168. package/dist/{parser-DGLKH4NT.js → parser-3PMYAVFL.js} +2 -2
  169. package/dist/{parser-OHBBDCG4.js → parser-5KVFS4RN.js} +2 -2
  170. package/dist/{parser-UHKROC7Z.js → parser-BA43YPIQ.js} +3 -3
  171. package/dist/{parser-F75WNYMK.js → parser-CFAYEWLF.js} +3 -3
  172. package/dist/{parser-MWINQNQW.js → parser-DRFEX6OX.js} +3 -3
  173. package/dist/{parser-W6NX3AIV.js → parser-DWVBRBB2.js} +3 -3
  174. package/dist/{parser-6WURFLOB.js → parser-E4B7HJT2.js} +3 -3
  175. package/dist/{parser-DRUGM3R6.js → parser-FWQY3HJX.js} +2 -2
  176. package/dist/{parser-GBQY3WOZ.js → parser-GMCXCJSP.js} +3 -3
  177. package/dist/{parser-BPYHIG24.js → parser-IHFHPFL7.js} +3 -3
  178. package/dist/{parser-QWTECQEC.js → parser-IU6425JW.js} +6 -6
  179. package/dist/{parser-ZV756RMP.js → parser-IZYIXDJX.js} +6 -6
  180. package/dist/{parser-TTGZYLYD.js → parser-JQGUTDSX.js} +3 -3
  181. package/dist/{parser-BNRX35NT.js → parser-JRKPOO2Z.js} +3 -3
  182. package/dist/{parser-B7SCN7FG.js → parser-KI2XYB2R.js} +2 -2
  183. package/dist/parser-LDVVBP7S.js +12 -0
  184. package/dist/{parser-L7SI3PW4.js → parser-MAGFK6OK.js} +4 -4
  185. package/dist/{parser-722KLLAQ.js → parser-MH5BDN7X.js} +3 -3
  186. package/dist/{parser-5RUD4A3X.js → parser-MUHFEM4G.js} +3 -3
  187. package/dist/{parser-Y7QXD2UR.js → parser-P375HO7Q.js} +2 -2
  188. package/dist/{parser-LUJX7AXO.js → parser-PYY5BRLQ.js} +2 -2
  189. package/dist/parser-QEMFMVF5.js +12 -0
  190. package/dist/{parser-WIKXZP4X.js → parser-QIPDBT5M.js} +2 -2
  191. package/dist/{parser-2AXU2MHJ.js → parser-RNBDDEGL.js} +3 -3
  192. package/dist/{parser-4GHAYZKZ.js → parser-RSWZGQA7.js} +6 -6
  193. package/dist/{parser-H6HT2WFQ.js → parser-SGX2PVR5.js} +2 -2
  194. package/dist/{parser-ZWWQZ4XZ.js → parser-SJUEFKNM.js} +3 -3
  195. package/dist/{parser-4BOP77CD.js → parser-UMNBPXG2.js} +2 -2
  196. package/dist/{parser-GM5B2EPW.js → parser-WE4VSBBY.js} +3 -3
  197. package/dist/{parser-XEJP37GQ.js → parser-WKEYS7N3.js} +3 -3
  198. package/dist/{parser-DWV2CYBS.js → parser-WPXUUNA2.js} +3 -3
  199. package/dist/{parser-5HQPPVHJ.js → parser-XP3RCOTN.js} +3 -3
  200. package/dist/{parser-F3JJNIFC.js → parser-YV4RBHG7.js} +3 -3
  201. package/dist/{parser-CRJYLOHA.js → parser-YZ3J542U.js} +2 -2
  202. package/dist/{renderer-BYLQ37T2.js → renderer-2V5NVI3V.js} +15 -15
  203. package/dist/renderer-4PKYVOYL.js +39 -0
  204. package/dist/{renderer-ONENGXFQ.js → renderer-66SCERH7.js} +14 -12
  205. package/dist/renderer-6IAXRZLK.js +85 -0
  206. package/dist/{renderer-GKY55M4Z.js → renderer-6O5SV5YE.js} +10 -10
  207. package/dist/{renderer-F7YGMEGQ.js → renderer-7OXMSF4R.js} +4 -4
  208. package/dist/{renderer-6HU44IGJ.js → renderer-A36NL2SS.js} +8 -8
  209. package/dist/{renderer-66NCRXSC.js → renderer-ASPBBACI.js} +13 -11
  210. package/dist/{renderer-5GP7YUS4.js → renderer-BXVTYE27.js} +7 -6
  211. package/dist/renderer-CC6O6GQK.js +18 -0
  212. package/dist/{renderer-VNJOZPSH.js → renderer-CNDB4JTZ.js} +17 -17
  213. package/dist/renderer-COV2DXTM.js +41 -0
  214. package/dist/renderer-DXCATVLO.js +30 -0
  215. package/dist/{renderer-VUXAAGUG.js → renderer-E5E3OJ42.js} +12 -11
  216. package/dist/{renderer-MGF2NNGG.js → renderer-E7LC7HCU.js} +5 -5
  217. package/dist/{renderer-PEJF6R2I.js → renderer-F3JYZERE.js} +4 -4
  218. package/dist/{renderer-CVCCW7UT.js → renderer-FAFSRFGR.js} +9 -9
  219. package/dist/renderer-HIB6LZWZ.js +26 -0
  220. package/dist/renderer-HLDRRFZB.js +28 -0
  221. package/dist/renderer-INQMQPNN.js +22 -0
  222. package/dist/renderer-ITJ67HXO.js +27 -0
  223. package/dist/{renderer-SYRH3B62.js → renderer-JLOKFKOZ.js} +14 -13
  224. package/dist/{renderer-LJPUCG3U.js → renderer-KOPJ76GS.js} +10 -10
  225. package/dist/{renderer-N6PM5CSG.js → renderer-M2467III.js} +14 -13
  226. package/dist/{renderer-MVBAQP3M.js → renderer-MYKL6VG6.js} +6 -6
  227. package/dist/{renderer-YJVQT7QG.js → renderer-S6L3JR6C.js} +11 -11
  228. package/dist/{renderer-NOYLNVTI.js → renderer-SYWVZ4CY.js} +3 -3
  229. package/dist/renderer-TCTZZ5Y6.js +32 -0
  230. package/dist/{renderer-D6EH5UQ6.js → renderer-UIHCYXBY.js} +12 -12
  231. package/dist/{renderer-QZJZIAT3.js → renderer-WIBVOPRC.js} +6 -4
  232. package/dist/{renderer-TS5NHOQD.js → renderer-XMJ6XZGL.js} +12 -11
  233. package/dist/{renderer-2V2XY2V7.js → renderer-ZTHXOBXW.js} +8 -8
  234. package/dist/{renderer-radial-4R7AKETK.js → renderer-radial-FC25BDCZ.js} +8 -8
  235. package/dist/{state-parser-EQBBEKHR.js → state-parser-2PQRH5JE.js} +6 -6
  236. package/dist/state-renderer-YP6HWLJR.js +43 -0
  237. package/dist/{themes-CbJL3w8L.d.ts → themes-DoLdhUXV.d.ts} +1 -1
  238. package/docs/ai-integration.md +4 -3
  239. package/docs/language-reference.md +99 -13
  240. package/gallery/fixtures/swot-relabel.dgmo +19 -0
  241. package/gallery/fixtures/swot-tags.dgmo +16 -0
  242. package/gallery/fixtures/swot.dgmo +13 -0
  243. package/package.json +1 -1
  244. package/dist/chunk-R2K5L4UA.js +0 -49
  245. package/dist/collapse-TCVK3RPO.js +0 -8
  246. package/dist/dgmo-router-EPBQKQW2.js +0 -100
  247. package/dist/dimensions-DBCRBZIU.js +0 -21
  248. package/dist/layout-3J72UULM.js +0 -15
  249. package/dist/layout-IXQNVRBE.js +0 -15
  250. package/dist/layout-VDCJOZSH.js +0 -11
  251. package/dist/parser-HM6FEX5K.js +0 -14
  252. package/dist/renderer-2MCV75JQ.js +0 -41
  253. package/dist/renderer-5AEDVLAA.js +0 -31
  254. package/dist/renderer-7C76HP5W.js +0 -30
  255. package/dist/renderer-7RAMBMTH.js +0 -22
  256. package/dist/renderer-E3334XLT.js +0 -84
  257. package/dist/renderer-LFZKG2GR.js +0 -26
  258. package/dist/renderer-MZIWP55B.js +0 -28
  259. package/dist/renderer-N75E3UVY.js +0 -25
  260. package/dist/renderer-VNUDN6F5.js +0 -39
  261. package/dist/state-renderer-SOGZ2CNN.js +0 -42
@@ -2,10 +2,10 @@ import {
2
2
  getFigure,
3
3
  getPartGeom,
4
4
  resolvePartKey
5
- } from "./chunk-H7AXCRO7.js";
5
+ } from "./chunk-453IWXZ3.js";
6
6
  import {
7
7
  renderIntegratedLegend
8
- } from "./chunk-PGD6CNWO.js";
8
+ } from "./chunk-DFEVFLEG.js";
9
9
  import {
10
10
  FONT_FAMILY
11
11
  } from "./chunk-ICLB27PZ.js";
@@ -13,7 +13,7 @@ import {
13
13
  resolveActiveTagGroup,
14
14
  resolveTagColor,
15
15
  tagAttrKey
16
- } from "./chunk-LGUFJ7Y2.js";
16
+ } from "./chunk-KW3CC7SB.js";
17
17
  import {
18
18
  getSeriesColors,
19
19
  mix,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  measureText,
3
3
  truncateText
4
- } from "./chunk-KAO7JL4I.js";
4
+ } from "./chunk-PU5X3P3T.js";
5
5
  import {
6
6
  mix
7
7
  } from "./chunk-6GXLAKUH.js";
@@ -8,7 +8,7 @@ import {
8
8
  splitNameAndMeta,
9
9
  tryParseSharedOption,
10
10
  warnUnknownMetaKeys
11
- } from "./chunk-FUYEXLAN.js";
11
+ } from "./chunk-RFGQDIOI.js";
12
12
  import {
13
13
  makeDgmoError,
14
14
  makeFail
@@ -0,0 +1,272 @@
1
+ import {
2
+ TITLE_FONT_SIZE,
3
+ TITLE_FONT_WEIGHT
4
+ } from "./chunk-GULGSH2Z.js";
5
+ import {
6
+ renderIntegratedLegend
7
+ } from "./chunk-DFEVFLEG.js";
8
+ import {
9
+ getMaxLegendReservedHeight
10
+ } from "./chunk-VVL2KKG4.js";
11
+ import {
12
+ FONT_FAMILY
13
+ } from "./chunk-ICLB27PZ.js";
14
+ import {
15
+ tagAttrKey
16
+ } from "./chunk-KW3CC7SB.js";
17
+ import {
18
+ legendSuppressed
19
+ } from "./chunk-RFGQDIOI.js";
20
+ import {
21
+ measureText,
22
+ wrapTextToWidth
23
+ } from "./chunk-PU5X3P3T.js";
24
+ import {
25
+ contrastText,
26
+ mix
27
+ } from "./chunk-6GXLAKUH.js";
28
+
29
+ // src/swot/renderer.ts
30
+ import * as d3Selection from "d3-selection";
31
+ var DIAGRAM_PADDING = 20;
32
+ var TITLE_HEIGHT = 30;
33
+ var LEGEND_GAP = 8;
34
+ var PANEL_WIDTH = 300;
35
+ var PANEL_GAP = 12;
36
+ var PANEL_RADIUS = 8;
37
+ var PANEL_PADDING = 12;
38
+ var HEADER_HEIGHT = 34;
39
+ var HEADER_FONT_SIZE = 13;
40
+ var HEADER_LINE_HEIGHT = 16;
41
+ var HEADER_COLOR_PCT = 38;
42
+ var ITEM_FONT_SIZE = 13;
43
+ var ITEM_LINE_HEIGHT = 18;
44
+ var ITEM_GAP = 8;
45
+ var DOT_RADIUS = 3.5;
46
+ var DOT_GAP = 8;
47
+ var DETAIL_FONT_SIZE = 11;
48
+ var DETAIL_LINE_HEIGHT = 15;
49
+ var AXIS_FONT_SIZE = 10.5;
50
+ var AXIS_FONT_WEIGHT = 600;
51
+ var AXIS_LETTER_SPACING = 1.2;
52
+ var AXIS_HEADER_SIZE = 22;
53
+ var AXIS_HEADER_GAP = 6;
54
+ var AXIS_HEADER_RADIUS = 5;
55
+ var AXIS_BAND = AXIS_HEADER_SIZE + AXIS_HEADER_GAP;
56
+ var EMPTY_TEXT = "None listed";
57
+ var ROW_TINT_PCT = 12;
58
+ var TINT_INSET = 5;
59
+ var TINT_PAD_Y = 3;
60
+ var TINT_RADIUS = 4;
61
+ var ITEM_TEXT_WIDTH = PANEL_WIDTH - 2 * PANEL_PADDING - 2 * DOT_RADIUS - DOT_GAP;
62
+ function layoutItem(item) {
63
+ const wrapOpts = { hardBreak: true };
64
+ const titleLines = wrapTextToWidth(
65
+ item.title,
66
+ ITEM_FONT_SIZE,
67
+ ITEM_TEXT_WIDTH,
68
+ wrapOpts
69
+ );
70
+ const detailLines = item.details.flatMap(
71
+ (detail) => wrapTextToWidth(detail, DETAIL_FONT_SIZE, ITEM_TEXT_WIDTH, wrapOpts)
72
+ );
73
+ return {
74
+ item,
75
+ titleLines,
76
+ detailLines,
77
+ height: titleLines.length * ITEM_LINE_HEIGHT + detailLines.length * DETAIL_LINE_HEIGHT
78
+ };
79
+ }
80
+ function layoutPanel(section) {
81
+ const headerLines = wrapTextToWidth(
82
+ section.label,
83
+ HEADER_FONT_SIZE,
84
+ PANEL_WIDTH - 2 * PANEL_PADDING,
85
+ { bold: true, hardBreak: true }
86
+ );
87
+ const headerHeight = HEADER_HEIGHT + (headerLines.length - 1) * HEADER_LINE_HEIGHT;
88
+ const items = section.items.map(layoutItem);
89
+ const body = items.length === 0 ? ITEM_LINE_HEIGHT : items.reduce((sum, item) => sum + item.height, 0) + (items.length - 1) * ITEM_GAP;
90
+ return {
91
+ section,
92
+ headerLines,
93
+ headerHeight,
94
+ items,
95
+ height: headerHeight + 2 * PANEL_PADDING + body
96
+ };
97
+ }
98
+ function itemColor(item, section, parsed, activeTagGroup) {
99
+ if (!activeTagGroup) return section.color;
100
+ const key = tagAttrKey(activeTagGroup);
101
+ const value = item.tags[key];
102
+ if (!value) return section.color;
103
+ const group = parsed.tagGroups.find((g) => tagAttrKey(g.name) === key);
104
+ const entry = group?.entries.find(
105
+ (e) => e.value.toLowerCase() === value.toLowerCase()
106
+ );
107
+ return entry?.color ?? section.color;
108
+ }
109
+ function renderSwot(container, parsed, palette, isDark, options) {
110
+ const activeTagGroup = options?.activeTagGroup ?? null;
111
+ const showAxes = parsed.options["no-axes"] !== "on";
112
+ const tintItems = parsed.options["no-tint-items"] !== "on";
113
+ const showTitle = !!parsed.title && parsed.options["no-title"] !== "on";
114
+ const showLegend = parsed.tagGroups.length > 0 && !legendSuppressed(parsed.options);
115
+ const axisBand = showAxes ? AXIS_BAND : 0;
116
+ const gridWidth = 2 * PANEL_WIDTH + PANEL_GAP;
117
+ const titleWidth = showTitle ? measureText(parsed.title, TITLE_FONT_SIZE, { bold: true }) : 0;
118
+ const width = Math.ceil(
119
+ 2 * DIAGRAM_PADDING + Math.max(axisBand + gridWidth, titleWidth)
120
+ );
121
+ const legendX = DIAGRAM_PADDING + (showTitle ? titleWidth + 16 : 0);
122
+ const legendWidth = Math.max(
123
+ gridWidth / 2,
124
+ width - legendX - DIAGRAM_PADDING
125
+ );
126
+ const legendConfig = {
127
+ groups: parsed.tagGroups,
128
+ position: { placement: "top-center", titleRelation: "inline-with-title" },
129
+ mode: options?.exportMode ? "export" : "preview",
130
+ // Every other group as a pill beside the active capsule, so a click can
131
+ // switch to it — as family and c4 do. Export still shows only the active
132
+ // group (legend-layout drops the rest before consulting this).
133
+ showInactivePills: true
134
+ };
135
+ const legendHeight = showLegend ? getMaxLegendReservedHeight(legendConfig, legendWidth) : 0;
136
+ const legendY = DIAGRAM_PADDING + (TITLE_FONT_SIZE - legendHeight) / 2;
137
+ const headerBottom = Math.max(
138
+ showTitle || showLegend ? DIAGRAM_PADDING + TITLE_HEIGHT : DIAGRAM_PADDING,
139
+ showLegend ? legendY + legendHeight + LEGEND_GAP : 0
140
+ );
141
+ const gridTop = headerBottom + axisBand;
142
+ const gridLeft = DIAGRAM_PADDING + axisBand;
143
+ const panels = parsed.sections.map(layoutPanel);
144
+ const topHeight = Math.max(panels[0].height, panels[1].height);
145
+ const bottomHeight = Math.max(panels[2].height, panels[3].height);
146
+ const height = Math.ceil(
147
+ gridTop + topHeight + PANEL_GAP + bottomHeight + DIAGRAM_PADDING
148
+ );
149
+ container.innerHTML = "";
150
+ const svg = d3Selection.select(container).append("svg").attr("xmlns", "http://www.w3.org/2000/svg").attr("width", width).attr("height", height).attr("viewBox", `0 0 ${width} ${height}`).attr("preserveAspectRatio", "xMidYMin meet").attr("font-family", FONT_FAMILY).style("background", palette.bg);
151
+ const containerWidth = container.getBoundingClientRect().width;
152
+ if (containerWidth > 0 && containerWidth < width) {
153
+ svg.attr("width", "100%").attr("height", null);
154
+ }
155
+ if (showTitle) {
156
+ svg.append("text").attr("class", "chart-title").attr("data-line-number", parsed.titleLineNumber ?? 0).attr("x", DIAGRAM_PADDING).attr("y", DIAGRAM_PADDING + TITLE_FONT_SIZE).attr("font-size", TITLE_FONT_SIZE).attr("font-weight", TITLE_FONT_WEIGHT).attr("fill", palette.text).text(parsed.title);
157
+ }
158
+ if (showLegend) {
159
+ const legendG = svg.append("g").attr("class", "swot-legend").attr("transform", `translate(${legendX},${legendY})`);
160
+ renderIntegratedLegend(legendG, {
161
+ ...legendConfig,
162
+ palette,
163
+ isDark,
164
+ width: legendWidth,
165
+ activeGroup: activeTagGroup
166
+ });
167
+ }
168
+ const columnX = [gridLeft, gridLeft + PANEL_WIDTH + PANEL_GAP];
169
+ const rowY = [gridTop, gridTop + topHeight + PANEL_GAP];
170
+ const rowHeight = [topHeight, bottomHeight];
171
+ const panelFill = isDark ? mix(palette.surface, palette.bg, 50) : mix(palette.surface, palette.bg, 30);
172
+ if (showAxes) {
173
+ const axes = svg.append("g").attr("class", "swot-axes");
174
+ const headerFill = mix(palette.textMuted, panelFill, 12);
175
+ const header = (x, y, w, h, label, rotate, key) => {
176
+ const cell = axes.append("g").attr("class", "swot-axis").attr("data-swot-axis", key);
177
+ cell.append("rect").attr("class", "swot-axis-header").attr("x", x).attr("y", y).attr("width", w).attr("height", h).attr("rx", AXIS_HEADER_RADIUS).attr("fill", headerFill);
178
+ const cx = x + w / 2;
179
+ const cy = y + h / 2;
180
+ const text = cell.append("text").attr("class", "swot-axis-label").attr("x", cx).attr("y", cy).attr("font-size", AXIS_FONT_SIZE).attr("font-weight", AXIS_FONT_WEIGHT).attr("letter-spacing", AXIS_LETTER_SPACING).attr("fill", palette.textMuted).attr("text-anchor", "middle").attr("dominant-baseline", "central").text(label.toUpperCase());
181
+ if (rotate) text.attr("transform", `rotate(-90 ${cx} ${cy})`);
182
+ };
183
+ for (const column of [0, 1]) {
184
+ header(
185
+ columnX[column],
186
+ gridTop - AXIS_BAND,
187
+ PANEL_WIDTH,
188
+ AXIS_HEADER_SIZE,
189
+ parsed.xLabels[column],
190
+ false,
191
+ `col-${column}`
192
+ );
193
+ }
194
+ for (const row of [0, 1]) {
195
+ header(
196
+ gridLeft - AXIS_BAND,
197
+ rowY[row],
198
+ AXIS_HEADER_SIZE,
199
+ rowHeight[row],
200
+ parsed.yLabels[row],
201
+ true,
202
+ `row-${row}`
203
+ );
204
+ }
205
+ }
206
+ panels.forEach((panel, index) => {
207
+ const section = panel.section;
208
+ const column = index % 2;
209
+ const row = index < 2 ? 0 : 1;
210
+ const x = columnX[column];
211
+ const y = rowY[row];
212
+ const g = svg.append("g").attr("class", "swot-panel").attr("data-section", section.key).attr("data-swot-col", column).attr("data-swot-row", row);
213
+ if (section.lineNumber > 0) {
214
+ g.attr("data-line-number", section.lineNumber);
215
+ }
216
+ g.append("rect").attr("x", x).attr("y", y).attr("width", PANEL_WIDTH).attr("height", rowHeight[row]).attr("rx", PANEL_RADIUS).attr("fill", panelFill);
217
+ const bandFill = mix(section.color, panelFill, HEADER_COLOR_PCT);
218
+ const r = PANEL_RADIUS;
219
+ const right = x + PANEL_WIDTH;
220
+ const bottom = y + panel.headerHeight;
221
+ g.append("path").attr("class", "swot-header").attr(
222
+ "d",
223
+ `M${x},${bottom}V${y + r}Q${x},${y} ${x + r},${y}H${right - r}Q${right},${y} ${right},${y + r}V${bottom}Z`
224
+ ).attr("fill", bandFill);
225
+ const labelColor = contrastText(
226
+ bandFill,
227
+ palette.textOnFillLight,
228
+ palette.textOnFillDark
229
+ );
230
+ panel.headerLines.forEach((line, lineIndex) => {
231
+ g.append("text").attr("x", x + PANEL_PADDING).attr("y", y + HEADER_HEIGHT / 2 + lineIndex * HEADER_LINE_HEIGHT).attr("dominant-baseline", "central").attr("font-size", HEADER_FONT_SIZE).attr("font-weight", "bold").attr("fill", labelColor).text(line);
232
+ });
233
+ const dotX = x + PANEL_PADDING + DOT_RADIUS;
234
+ const textX = dotX + DOT_RADIUS + DOT_GAP;
235
+ let cursorY = y + panel.headerHeight + PANEL_PADDING;
236
+ if (panel.items.length === 0) {
237
+ g.append("text").attr("class", "swot-empty").attr("x", x + PANEL_PADDING).attr("y", cursorY + ITEM_LINE_HEIGHT / 2).attr("dominant-baseline", "central").attr("font-size", ITEM_FONT_SIZE).attr("font-style", "italic").attr("fill", palette.textMuted).text(EMPTY_TEXT);
238
+ return;
239
+ }
240
+ for (const itemLayout of panel.items) {
241
+ const item = itemLayout.item;
242
+ const itemG = g.append("g").attr("class", "swot-item").attr("data-line-number", item.lineNumber);
243
+ if (activeTagGroup) {
244
+ const key = tagAttrKey(activeTagGroup);
245
+ const value = item.tags[key];
246
+ if (value) itemG.attr(`data-tag-${key}`, value.toLowerCase());
247
+ }
248
+ const fill = itemColor(item, section, parsed, activeTagGroup);
249
+ const tagged = !!activeTagGroup && !!item.tags[tagAttrKey(activeTagGroup)];
250
+ if (tagged && tintItems) {
251
+ itemG.append("rect").attr("class", "swot-item-tint").attr("x", x + TINT_INSET).attr("y", cursorY - TINT_PAD_Y).attr("width", PANEL_WIDTH - 2 * TINT_INSET).attr(
252
+ "height",
253
+ itemLayout.titleLines.length * ITEM_LINE_HEIGHT + itemLayout.detailLines.length * DETAIL_LINE_HEIGHT + 2 * TINT_PAD_Y
254
+ ).attr("rx", TINT_RADIUS).attr("fill", mix(fill, panelFill, ROW_TINT_PCT));
255
+ }
256
+ itemG.append("circle").attr("cx", dotX).attr("cy", cursorY + ITEM_LINE_HEIGHT / 2).attr("r", DOT_RADIUS).attr("fill", fill);
257
+ for (const line of itemLayout.titleLines) {
258
+ itemG.append("text").attr("x", textX).attr("y", cursorY + ITEM_LINE_HEIGHT / 2).attr("dominant-baseline", "central").attr("font-size", ITEM_FONT_SIZE).attr("fill", palette.text).text(line);
259
+ cursorY += ITEM_LINE_HEIGHT;
260
+ }
261
+ for (const line of itemLayout.detailLines) {
262
+ itemG.append("text").attr("class", "swot-detail").attr("x", textX).attr("y", cursorY + DETAIL_LINE_HEIGHT / 2).attr("dominant-baseline", "central").attr("font-size", DETAIL_FONT_SIZE).attr("fill", palette.textMuted).text(line);
263
+ cursorY += DETAIL_LINE_HEIGHT;
264
+ }
265
+ cursorY += ITEM_GAP;
266
+ }
267
+ });
268
+ }
269
+
270
+ export {
271
+ renderSwot
272
+ };
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  resolveNotes,
6
6
  tryCollectNote
7
- } from "./chunk-HH3DHNQA.js";
7
+ } from "./chunk-4TK26YHH.js";
8
8
  import {
9
9
  displayName,
10
10
  normalizeName
@@ -18,7 +18,7 @@ import {
18
18
  tagAttrKey,
19
19
  validateTagGroupNames,
20
20
  validateTagValues
21
- } from "./chunk-LGUFJ7Y2.js";
21
+ } from "./chunk-KW3CC7SB.js";
22
22
  import {
23
23
  AliasRegistry,
24
24
  ER_REGISTRY,
@@ -32,7 +32,7 @@ import {
32
32
  tryParseSharedOption,
33
33
  warnUnknownMetaKeys,
34
34
  withTagAliases
35
- } from "./chunk-FUYEXLAN.js";
35
+ } from "./chunk-RFGQDIOI.js";
36
36
  import {
37
37
  resolveColorWithDiagnostic
38
38
  } from "./chunk-3J7O3CU6.js";
@@ -1,37 +1,40 @@
1
1
  import {
2
2
  isBlockNode
3
3
  } from "./chunk-XSVWUOUZ.js";
4
+ import {
5
+ renderCollapseBar
6
+ } from "./chunk-LRTSTDJ6.js";
4
7
  import {
5
8
  layoutInlineHeader
6
- } from "./chunk-R5L5E3TC.js";
9
+ } from "./chunk-REKLKGR6.js";
7
10
  import {
8
11
  TITLE_FONT_SIZE,
9
12
  TITLE_FONT_WEIGHT,
10
13
  TITLE_Y
11
- } from "./chunk-VLC6WNRD.js";
14
+ } from "./chunk-GULGSH2Z.js";
12
15
  import {
13
16
  EDGE_DASH
14
- } from "./chunk-XCKNFFKM.js";
17
+ } from "./chunk-WH6E6SHC.js";
15
18
  import {
16
19
  renderIntegratedLegend
17
- } from "./chunk-PGD6CNWO.js";
20
+ } from "./chunk-DFEVFLEG.js";
18
21
  import {
19
22
  getLegendExtent,
20
23
  getMaxLegendReservedHeight
21
- } from "./chunk-JILEYZ2V.js";
24
+ } from "./chunk-VVL2KKG4.js";
22
25
  import {
23
26
  FONT_FAMILY
24
27
  } from "./chunk-ICLB27PZ.js";
25
28
  import {
26
29
  resolveTagColor,
27
30
  tagAttrKey
28
- } from "./chunk-LGUFJ7Y2.js";
31
+ } from "./chunk-KW3CC7SB.js";
29
32
  import {
30
33
  LEGEND_GROUP_GAP
31
- } from "./chunk-UOCWYLYT.js";
34
+ } from "./chunk-OZXKW5NA.js";
32
35
  import {
33
36
  measureText
34
- } from "./chunk-KAO7JL4I.js";
37
+ } from "./chunk-PU5X3P3T.js";
35
38
  import {
36
39
  mix,
37
40
  themeBaseBg
@@ -46,7 +49,6 @@ var BLOCK_PAD = 10;
46
49
  var BLOCK_LEAF_H = 46;
47
50
  var BLOCK_HEADER_H = 28;
48
51
  var BLOCK_COLLAPSED_H = 46;
49
- var BLOCK_BAR_H = 6;
50
52
  var MIN_COL = 104;
51
53
  var MAX_COL = 250;
52
54
  var LABEL_FS = 13;
@@ -322,11 +324,18 @@ function drawItems(g, items, ctx, path = []) {
322
324
  }
323
325
  if (it.type === "collapsed") {
324
326
  const fill2 = color ? fillMode === "solid" ? color : fillMode === "outline" ? themeBaseBg(palette, ctx.isDark) : mix(color, palette.bg, 12) : palette.surface;
325
- const cid = `dgmo-block-clip-${clipCounter++}`;
326
- cell.append("clipPath").attr("id", cid).append("rect").attr("x", it.x).attr("y", it.y).attr("width", it.w).attr("height", it.h).attr("rx", 10);
327
327
  cell.append("rect").attr("x", it.x).attr("y", it.y).attr("width", it.w).attr("height", it.h).attr("rx", 10).attr("fill", fill2).attr("stroke", stroke).attr("stroke-width", 1.5);
328
328
  cell.append("text").attr("x", it.x + it.w / 2).attr("y", it.y + it.h / 2 + 4).attr("text-anchor", "middle").attr("font-size", 12.5).attr("font-weight", "bold").attr("fill", palette.text).text(clipLabel(it.label ?? "", it.w - 24, 12.5));
329
- cell.append("rect").attr("x", it.x).attr("y", it.y + it.h - BLOCK_BAR_H).attr("width", it.w).attr("height", BLOCK_BAR_H).attr("fill", fillMode === "solid" && color ? palette.text : stroke).attr("clip-path", `url(#${cid})`);
329
+ renderCollapseBar(cell, {
330
+ x: it.x,
331
+ y: it.y,
332
+ width: it.w,
333
+ height: it.h,
334
+ rx: 10,
335
+ fill: fillMode === "solid" && color ? palette.text : stroke,
336
+ clipId: `dgmo-block-clip-${clipCounter++}`,
337
+ prefix: "block"
338
+ });
330
339
  bindToggle(cell, it, ctx, it.h);
331
340
  continue;
332
341
  }
@@ -342,7 +351,19 @@ function drawItems(g, items, ctx, path = []) {
342
351
  const headerOpacity = 0.92 - grow * 0.3;
343
352
  const headerY = it.y + Math.round(headerFs * 0.7) + 7;
344
353
  cell.append("text").attr("x", it.x + it.w / 2).attr("y", headerY).attr("text-anchor", "middle").attr("font-size", headerFs).attr("font-weight", "bold").attr("fill", palette.text).attr("opacity", headerOpacity).text(clipLabel(it.label ?? "", it.w - 24, headerFs));
345
- bindToggle(cell, it, ctx, BLOCK_HEADER_H);
354
+ if (bindToggle(cell, it, ctx, BLOCK_HEADER_H)) {
355
+ renderCollapseBar(cell, {
356
+ expanded: true,
357
+ x: it.x,
358
+ y: it.y,
359
+ width: it.w,
360
+ height: it.h,
361
+ rx: 10,
362
+ fill: fillMode === "solid" && color ? palette.text : stroke,
363
+ clipId: `dgmo-block-clip-${clipCounter++}`,
364
+ prefix: "block"
365
+ });
366
+ }
346
367
  if (it.inner) drawItems(g, it.inner, ctx, itemPath);
347
368
  continue;
348
369
  }
@@ -353,10 +374,13 @@ function drawItems(g, items, ctx, path = []) {
353
374
  }
354
375
  }
355
376
  function bindToggle(cell, it, ctx, hitH) {
356
- if (!ctx.onToggle || !it.node || it.lineNumber === void 0) return;
377
+ if (!it.node || it.lineNumber === void 0) return false;
357
378
  const id = it.node.id;
358
379
  const ln = it.lineNumber;
380
+ cell.attr("data-group-toggle", id).attr("role", "button").attr("aria-expanded", String(it.type !== "collapsed")).attr("aria-label", it.label ?? id);
381
+ if (!ctx.onToggle) return true;
359
382
  cell.append("rect").attr("x", it.x).attr("y", it.y).attr("width", it.w).attr("height", hitH).attr("rx", 10).attr("fill", "transparent").style("cursor", "pointer").on("click", () => ctx.onToggle(id, ln));
383
+ return true;
360
384
  }
361
385
  function authoredCollapsedIds(parsed) {
362
386
  const into = /* @__PURE__ */ new Set();
@@ -428,6 +428,7 @@ var INTER_BOLD_W = {
428
428
  var INTER_DEFAULT_W = 0.603;
429
429
 
430
430
  // src/utils/script-metrics.ts
431
+ var ARABIC_W = 0.66;
431
432
  var SCRIPT_W = [
432
433
  // Greek and Greek Extended — Inter has these glyphs, but the generated
433
434
  // table stops at Latin-1, so they arrive here.
@@ -437,11 +438,11 @@ var SCRIPT_W = [
437
438
  [1024, 1327, 0.604],
438
439
  [1424, 1535, 0.499],
439
440
  // Hebrew
440
- [1536, 1791, 0.447],
441
+ [1536, 1791, ARABIC_W],
441
442
  // Arabic
442
- [1872, 1919, 0.447],
443
+ [1872, 1919, ARABIC_W],
443
444
  // Arabic Supplement
444
- [2208, 2303, 0.447],
445
+ [2208, 2303, ARABIC_W],
445
446
  // Arabic Extended-A
446
447
  [2304, 2431, 0.553],
447
448
  // Devanagari
@@ -475,9 +476,9 @@ var SCRIPT_W = [
475
476
  // Hangul syllables, and extended letters B
476
477
  [63744, 64255, 1],
477
478
  // CJK Compatibility Ideographs
478
- [64336, 65023, 0.447],
479
+ [64336, 65023, ARABIC_W],
479
480
  // Arabic Presentation Forms-A
480
- [65136, 65279, 0.447],
481
+ [65136, 65279, ARABIC_W],
481
482
  // Arabic Presentation Forms-B
482
483
  // Full-width forms only. The half-width tail (U+FF61 onward) is half an em
483
484
  // and is left to the default rather than given a wrong full-width ratio.
@@ -4,13 +4,13 @@ import {
4
4
  matchTagBlockHeading,
5
5
  stripDefaultModifier,
6
6
  tagAttrKey
7
- } from "./chunk-LGUFJ7Y2.js";
7
+ } from "./chunk-KW3CC7SB.js";
8
8
  import {
9
9
  FILL_FAMILY_TOKENS,
10
10
  extractColor,
11
11
  measureIndent,
12
12
  parseFirstLine
13
- } from "./chunk-FUYEXLAN.js";
13
+ } from "./chunk-RFGQDIOI.js";
14
14
  import {
15
15
  emit
16
16
  } from "./chunk-BYU54C3S.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  serializeSvg
3
- } from "./chunk-CYRB2JTN.js";
3
+ } from "./chunk-YLKPRT6U.js";
4
4
  import {
5
5
  FONT_FAMILY
6
6
  } from "./chunk-ICLB27PZ.js";
@@ -1,19 +1,22 @@
1
1
  import {
2
2
  ScaleContext
3
3
  } from "./chunk-24YPR5EH.js";
4
+ import {
5
+ renderCollapseBar
6
+ } from "./chunk-LRTSTDJ6.js";
4
7
  import {
5
8
  TITLE_FONT_SIZE,
6
9
  TITLE_FONT_WEIGHT
7
- } from "./chunk-VLC6WNRD.js";
10
+ } from "./chunk-GULGSH2Z.js";
8
11
  import {
9
12
  FONT_FAMILY
10
13
  } from "./chunk-ICLB27PZ.js";
11
14
  import {
12
15
  fillModeFromOptions
13
- } from "./chunk-FUYEXLAN.js";
16
+ } from "./chunk-RFGQDIOI.js";
14
17
  import {
15
18
  measureText
16
- } from "./chunk-KAO7JL4I.js";
19
+ } from "./chunk-PU5X3P3T.js";
17
20
  import {
18
21
  contrastText,
19
22
  mix,
@@ -42,6 +45,7 @@ function getElementSemanticColor(el, palette) {
42
45
  }
43
46
  return null;
44
47
  }
48
+ var wfClipCounter = 0;
45
49
  function renderWireframe(container, parsed, layout, palette, isDark, _onClickItem, exportDims, theme, options) {
46
50
  const opts = options ?? {};
47
51
  const effectiveExportDims = opts.exportDims ?? exportDims;
@@ -57,6 +61,7 @@ function renderWireframe(container, parsed, layout, palette, isDark, _onClickIte
57
61
  } else {
58
62
  svg.attr("width", "100%").style("display", "block");
59
63
  }
64
+ wfClipCounter = 0;
60
65
  const ctx = {
61
66
  palette,
62
67
  isTransparent: effectiveTheme === "transparent",
@@ -176,7 +181,14 @@ function renderGroup(g, node, ctx, depth) {
176
181
  g.append("text").attr("x", 10).attr("y", 18).attr("fill", palette.textMuted).attr("font-size", 11).attr("font-weight", "bold").attr("letter-spacing", "0.5px").text(el.label.toUpperCase());
177
182
  }
178
183
  if (el.states.includes("collapsed")) {
179
- g.append("text").attr("x", node.width - 20).attr("y", 18).attr("fill", palette.textMuted).attr("font-size", 12).attr("opacity", 0.6).text("\u25B6");
184
+ renderCollapseBar(g, {
185
+ width: node.width,
186
+ height: node.height,
187
+ rx: GROUP_CORNER,
188
+ fill: palette.border,
189
+ clipId: `wf-collapse-clip-${wfClipCounter++}`,
190
+ prefix: "wf"
191
+ });
180
192
  return;
181
193
  }
182
194
  if (el.states.includes("scrollable")) {
@@ -3,13 +3,13 @@ import {
3
3
  } from "./chunk-24YPR5EH.js";
4
4
  import {
5
5
  TITLE_FONT_SIZE
6
- } from "./chunk-VLC6WNRD.js";
6
+ } from "./chunk-GULGSH2Z.js";
7
7
  import {
8
8
  renderIntegratedLegend
9
- } from "./chunk-PGD6CNWO.js";
9
+ } from "./chunk-DFEVFLEG.js";
10
10
  import {
11
11
  getMaxLegendReservedHeight
12
- } from "./chunk-JILEYZ2V.js";
12
+ } from "./chunk-VVL2KKG4.js";
13
13
  import {
14
14
  parseInlineMarkdown,
15
15
  safeHref
@@ -20,12 +20,12 @@ import {
20
20
  import {
21
21
  fillModeFromOptions,
22
22
  legendSuppressed
23
- } from "./chunk-FUYEXLAN.js";
23
+ } from "./chunk-RFGQDIOI.js";
24
24
  import {
25
25
  measureText,
26
26
  truncateText,
27
27
  wrapTextToWidth
28
- } from "./chunk-KAO7JL4I.js";
28
+ } from "./chunk-PU5X3P3T.js";
29
29
  import {
30
30
  contrastText,
31
31
  mix,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  acyclicOrient
3
- } from "./chunk-VGAMBOOC.js";
3
+ } from "./chunk-C6ME2L4T.js";
4
4
 
5
5
  // src/swimlane/layout.ts
6
6
  var MARGIN = 30;
@@ -8,7 +8,7 @@ import {
8
8
  splitNameAndMeta,
9
9
  tryParseSharedOption,
10
10
  warnUnknownMetaKeys
11
- } from "./chunk-FUYEXLAN.js";
11
+ } from "./chunk-RFGQDIOI.js";
12
12
  import {
13
13
  RECOGNIZED_COLOR_NAMES,
14
14
  resolveColor