@diagrammo/dgmo 0.48.2 → 0.50.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 (244) hide show
  1. package/.cursorrules +12 -3
  2. package/.github/copilot-instructions.md +12 -3
  3. package/.windsurfrules +12 -3
  4. package/SKILL.md +12 -3
  5. package/dist/advanced.d.ts +851 -1
  6. package/dist/advanced.js +601 -177
  7. package/dist/auto.css +63 -0
  8. package/dist/auto.js +220 -110
  9. package/dist/auto.mjs +45920 -33167
  10. package/dist/block.css +63 -0
  11. package/dist/block.d.ts +13 -5
  12. package/dist/block.js +239 -62
  13. package/dist/{charts-d3-QOZHKTCT.js → charts-d3-DKUD7MQE.js} +9 -8
  14. package/dist/{chunk-3MQQNXPD.js → chunk-2C56LEML.js} +3 -3
  15. package/dist/{chunk-L66GEFB6.js → chunk-2JJ2KNPI.js} +4 -4
  16. package/dist/{chunk-6SM5NJQH.js → chunk-2QYTMIRR.js} +4 -4
  17. package/dist/{chunk-RJE5JTVK.js → chunk-3G6TMNVF.js} +7 -7
  18. package/dist/{chunk-MO5YHHMQ.js → chunk-3LKM6FMW.js} +2 -2
  19. package/dist/{chunk-76OWZ3BA.js → chunk-3P2DKJCG.js} +2 -2
  20. package/dist/chunk-3TDRHT4J.js +1043 -0
  21. package/dist/chunk-3XPUDB7B.js +420 -0
  22. package/dist/{chunk-2LACINWN.js → chunk-3ZPC476N.js} +7 -7
  23. package/dist/{chunk-G2H74XJZ.js → chunk-4BMJQFNK.js} +8 -8
  24. package/dist/{chunk-THXCFRTU.js → chunk-4S723I74.js} +9 -9
  25. package/dist/{chunk-6NYWYNBI.js → chunk-4XK3FLFB.js} +3 -3
  26. package/dist/chunk-5JSWBPZZ.js +607 -0
  27. package/dist/{chunk-WCT3NYCV.js → chunk-5LWQH6QV.js} +1 -1
  28. package/dist/{chunk-7DTWEFUE.js → chunk-5Z736BSU.js} +8 -8
  29. package/dist/{chunk-ERLBPDGU.js → chunk-6BFZKBGD.js} +2 -2
  30. package/dist/{chunk-6HO5ZTXK.js → chunk-6IAA2QQ2.js} +2 -2
  31. package/dist/{chunk-H6PI3KJT.js → chunk-6IUAK7RZ.js} +2 -2
  32. package/dist/{chunk-RTLBSQ3G.js → chunk-6M5PJFQG.js} +3 -3
  33. package/dist/{chunk-Z5CGSFJB.js → chunk-6X4AKWLF.js} +4 -4
  34. package/dist/{chunk-OJR3MQYV.js → chunk-6ZT4U37Q.js} +291 -52
  35. package/dist/{chunk-5QXL4NYS.js → chunk-7G2ER4CY.js} +10 -5
  36. package/dist/chunk-7PQYTZMA.js +681 -0
  37. package/dist/{chunk-OURHMODR.js → chunk-7RB5Q6MB.js} +11 -11
  38. package/dist/{chunk-YAA6IID3.js → chunk-7UEMZREK.js} +2 -2
  39. package/dist/{chunk-AN2MOO5T.js → chunk-A3WQVFBS.js} +3 -3
  40. package/dist/{chunk-VOKGH627.js → chunk-AHGF2YYA.js} +13 -3
  41. package/dist/{chunk-CI2G3OEB.js → chunk-ASS5YYIZ.js} +12 -12
  42. package/dist/{chunk-TYS6CSS5.js → chunk-BCYVE3N5.js} +2 -2
  43. package/dist/chunk-BDXC7MDK.js +2395 -0
  44. package/dist/chunk-BTUTZMPT.js +482 -0
  45. package/dist/{chunk-YGJTDXVR.js → chunk-C4GQDB5L.js} +2 -2
  46. package/dist/{chunk-Y2ZE3MSG.js → chunk-C63UWAKM.js} +2 -2
  47. package/dist/{chunk-725LDASD.js → chunk-CLD2OKV7.js} +2 -2
  48. package/dist/{chunk-WBRZJOEC.js → chunk-CMCR5WBW.js} +3 -3
  49. package/dist/{chunk-IZMRON6C.js → chunk-CVV36CWI.js} +2 -2
  50. package/dist/chunk-DMJJ3CEQ.js +254 -0
  51. package/dist/{chunk-MZSBFAPJ.js → chunk-EJTKV7CY.js} +9 -9
  52. package/dist/{chunk-FITOLXSX.js → chunk-EOFPYPAU.js} +26 -2
  53. package/dist/{chunk-X5LCYCL5.js → chunk-ER5SCQWQ.js} +5 -5
  54. package/dist/{chunk-4OHACBGX.js → chunk-F2L5GCQ4.js} +2 -2
  55. package/dist/{chunk-FCIIHT24.js → chunk-F5UDBSJY.js} +7 -7
  56. package/dist/{chunk-3JLKYGBQ.js → chunk-F7BFXWNQ.js} +2 -2
  57. package/dist/{chunk-FANX6UJR.js → chunk-FAL7NOK3.js} +11 -11
  58. package/dist/{chunk-BUPDIHML.js → chunk-FB2WHOEQ.js} +4 -4
  59. package/dist/chunk-FL4IOQ37.js +379 -0
  60. package/dist/{chunk-LIOHW36Z.js → chunk-GBE54KY6.js} +6 -5
  61. package/dist/{chunk-RUNNI6VE.js → chunk-GL5UZ6NY.js} +3 -3
  62. package/dist/{chunk-4GRI7MEB.js → chunk-GPWHQ5FJ.js} +6 -6
  63. package/dist/chunk-GROQGHCT.js +960 -0
  64. package/dist/{chunk-SGZYXELT.js → chunk-H73FP42Q.js} +9 -6
  65. package/dist/{chunk-PBAHEPLQ.js → chunk-HGN652MU.js} +7 -6
  66. package/dist/{chunk-3SMGIJDD.js → chunk-HHXOONLX.js} +13 -1
  67. package/dist/{chunk-QOOUC2J5.js → chunk-HQCHYB5F.js} +2 -2
  68. package/dist/{chunk-AELOBFW5.js → chunk-I4IFRCUB.js} +3 -3
  69. package/dist/{chunk-GMR5MFHJ.js → chunk-I7F2A35O.js} +2 -2
  70. package/dist/{chunk-T2OE3YQB.js → chunk-IA3FJYWR.js} +3 -3
  71. package/dist/chunk-IAEC4KLA.js +492 -0
  72. package/dist/chunk-IVKC4GID.js +32 -0
  73. package/dist/{chunk-HSH73DP6.js → chunk-JFYIP7XU.js} +139 -39
  74. package/dist/{chunk-CKNVO24D.js → chunk-JZNMXEIV.js} +2 -2
  75. package/dist/chunk-KJXIHOVL.js +940 -0
  76. package/dist/chunk-L2ZTFHAY.js +331 -0
  77. package/dist/{chunk-B7JUCQUA.js → chunk-M5RXSRO2.js} +4 -4
  78. package/dist/{chunk-ULOEATBZ.js → chunk-NFFIKVNO.js} +106 -29
  79. package/dist/{chunk-PZMETGLY.js → chunk-NISQC5KW.js} +358 -122
  80. package/dist/chunk-O4VUFXIH.js +574 -0
  81. package/dist/{chunk-RVMRZAPB.js → chunk-O76UD6VJ.js} +3 -3
  82. package/dist/{chunk-JM4LEPY3.js → chunk-O7NUCTFU.js} +2 -2
  83. package/dist/{chunk-JED6ZDEE.js → chunk-O7WP4ZD4.js} +2 -2
  84. package/dist/{chunk-EVCVDTXE.js → chunk-OHQEMBLI.js} +3 -3
  85. package/dist/{chunk-ZBWMSD5N.js → chunk-ONA5KPV3.js} +4 -4
  86. package/dist/{chunk-Y3J7VR52.js → chunk-OTAL43EH.js} +34 -2
  87. package/dist/{chunk-WCSOJFU3.js → chunk-OTP5KVLO.js} +3 -3
  88. package/dist/{chunk-RYEGFMUO.js → chunk-PGEGPSCZ.js} +2 -2
  89. package/dist/{chunk-ZO27FGJS.js → chunk-PH5X4GIP.js} +2 -2
  90. package/dist/{chunk-ZJEL4H2R.js → chunk-PJUGRJHJ.js} +9 -9
  91. package/dist/{chunk-ZGR7ULFJ.js → chunk-PLZI6KPM.js} +26 -14
  92. package/dist/{chunk-3R5POCTZ.js → chunk-PMN3Q7RJ.js} +6 -6
  93. package/dist/{chunk-YGJZWZTY.js → chunk-PZFVK3IH.js} +2 -2
  94. package/dist/chunk-Q4V4XQWV.js +158 -0
  95. package/dist/chunk-QDFNCATJ.js +325 -0
  96. package/dist/{chunk-QEBUY5NY.js → chunk-QFQ35BTO.js} +4 -4
  97. package/dist/chunk-QQJUTGQH.js +135 -0
  98. package/dist/{chunk-PWIHZ6NJ.js → chunk-QUJGFNFN.js} +4 -4
  99. package/dist/{chunk-J5FIXQRT.js → chunk-R56LASIN.js} +4 -4
  100. package/dist/{chunk-SRTU6HMQ.js → chunk-RV26LTUU.js} +8 -8
  101. package/dist/chunk-RV6A2B5S.js +354 -0
  102. package/dist/{chunk-EB6FPQUP.js → chunk-S5GRONXL.js} +3 -3
  103. package/dist/{chunk-5MLYVTYM.js → chunk-SCHXJTZL.js} +2 -2
  104. package/dist/{chunk-T3UBLACL.js → chunk-SCQ5VPUF.js} +19 -5
  105. package/dist/{chunk-PBHE5UG6.js → chunk-SGFZZAUO.js} +46 -12
  106. package/dist/{chunk-BUVJFRPY.js → chunk-SU2VBK4L.js} +4 -4
  107. package/dist/{chunk-SML67VPV.js → chunk-T4BRO3Z6.js} +3 -3
  108. package/dist/{chunk-NURGB5Z4.js → chunk-TSA237IM.js} +2 -2
  109. package/dist/chunk-TWCLK2GA.js +273 -0
  110. package/dist/{chunk-IJZFN3HM.js → chunk-TWQUYVP3.js} +4 -4
  111. package/dist/{chunk-DKEPS5LH.js → chunk-U2HGPLZS.js} +36 -2
  112. package/dist/{chunk-B65G5DNL.js → chunk-URSQLCTR.js} +3 -3
  113. package/dist/{chunk-ILKORZ3H.js → chunk-UUS2GIJZ.js} +7 -7
  114. package/dist/{chunk-XAKEUMEJ.js → chunk-UXOSVCLJ.js} +4 -4
  115. package/dist/{chunk-QLCCJEJI.js → chunk-WCUHAQKB.js} +2 -2
  116. package/dist/{chunk-WVAJFAIA.js → chunk-WWN566I7.js} +257 -101
  117. package/dist/{chunk-IPWPWM6R.js → chunk-X2NMFTG3.js} +111 -10
  118. package/dist/{chunk-UWN33VNX.js → chunk-XCLHOZAM.js} +10 -10
  119. package/dist/{chunk-P235SVAH.js → chunk-XDXNDSKO.js} +2 -2
  120. package/dist/chunk-XHVV4NVW.js +51 -0
  121. package/dist/{chunk-33LCUH4H.js → chunk-XMVQ5F4M.js} +4 -4
  122. package/dist/{chunk-MITI6NOL.js → chunk-YA7D2N2O.js} +11 -11
  123. package/dist/{chunk-7JEGTRLD.js → chunk-YB3FW24O.js} +3 -3
  124. package/dist/chunk-YNRDWYZP.js +295 -0
  125. package/dist/{chunk-44CM72SQ.js → chunk-YZLMKW4T.js} +3 -3
  126. package/dist/chunk-Z6XJQ6KO.js +452 -0
  127. package/dist/cli.cjs +179 -133
  128. package/dist/clock.d.ts +10 -0
  129. package/dist/clock.js +235 -0
  130. package/dist/countdown.d.ts +12 -0
  131. package/dist/countdown.js +450 -0
  132. package/dist/dgmo-router-QOMFCOOV.js +84 -0
  133. package/dist/dimensions-P5FSX2QN.js +22 -0
  134. package/dist/editor.js +43 -2
  135. package/dist/element.js +220 -110
  136. package/dist/element.mjs +45920 -33167
  137. package/dist/{flowchart-parser-ZNSKIBVR.js → flowchart-parser-OE4WHLTF.js} +4 -4
  138. package/dist/{flowchart-renderer-SNDSII4D.js → flowchart-renderer-GPCSMTOR.js} +8 -8
  139. package/dist/highlight.d.ts +17 -1
  140. package/dist/highlight.js +163 -6
  141. package/dist/index.d.ts +5 -1
  142. package/dist/index.js +199 -233
  143. package/dist/{layout-HRBZPFCN.js → layout-34CLNICW.js} +5 -5
  144. package/dist/layout-46366KBT.js +10 -0
  145. package/dist/{layout-HWDSRX5E.js → layout-5BG6DFCU.js} +6 -6
  146. package/dist/layout-6RDJHS6E.js +9 -0
  147. package/dist/{layout-7QXCNOVS.js → layout-7H4H46CS.js} +3 -3
  148. package/dist/{layout-46N4JJYK.js → layout-7SKMFYHL.js} +5 -5
  149. package/dist/{layout-EE6GE46Y.js → layout-DC4TVXER.js} +5 -5
  150. package/dist/layout-FGQWRYYW.js +14 -0
  151. package/dist/{layout-S2QBYSK2.js → layout-NXG63LWH.js} +3 -3
  152. package/dist/{layout-N76NR4ZO.js → layout-PUQCB6AN.js} +7 -7
  153. package/dist/{layout-HYZPWAK5.js → layout-QNUQLEHU.js} +3 -3
  154. package/dist/{layout-UM5F4DJB.js → layout-T3OZU5QW.js} +5 -5
  155. package/dist/layout-TJIWF7EM.js +14 -0
  156. package/dist/layout-VYELEAW7.js +14 -0
  157. package/dist/{layout-5RA6QWR6.js → layout-WZHNDT2O.js} +6 -6
  158. package/dist/{layout-search-OYV77HHS.js → layout-search-QS44PI5R.js} +6 -6
  159. package/dist/{parser-6BTRLKRZ.js → parser-45DENHFZ.js} +4 -4
  160. package/dist/{parser-TFZFBVWN.js → parser-4AI5ZN5F.js} +3 -3
  161. package/dist/{parser-XDVELHRK.js → parser-4P36TUVD.js} +4 -4
  162. package/dist/{parser-ZSDPZYQP.js → parser-5AURY4A6.js} +4 -4
  163. package/dist/{parser-N5O4IHUN.js → parser-A2BEFMGK.js} +4 -4
  164. package/dist/parser-B5FVS7O6.js +11 -0
  165. package/dist/{parser-NGU3ETO6.js → parser-C2HF2C2E.js} +4 -4
  166. package/dist/parser-CSFUN3CT.js +14 -0
  167. package/dist/{parser-TRTHDFPP.js → parser-D3QT6GWN.js} +5 -5
  168. package/dist/parser-D5637H5H.js +15 -0
  169. package/dist/{parser-VQP2UJ6W.js → parser-DFFEDKHH.js} +3 -3
  170. package/dist/parser-DOKMZXVZ.js +13 -0
  171. package/dist/parser-FMPCVFRK.js +15 -0
  172. package/dist/{parser-Y6WTBU76.js → parser-HYRTF3DO.js} +3 -3
  173. package/dist/{parser-I6KXEYFK.js → parser-I2UIJKVQ.js} +4 -4
  174. package/dist/{parser-O5J4VBII.js → parser-IBWNAPY4.js} +3 -3
  175. package/dist/{parser-PQ3POX45.js → parser-KUQWRPIT.js} +4 -4
  176. package/dist/{parser-2MFP2H2E.js → parser-LWKKBNSA.js} +3 -3
  177. package/dist/{parser-OV7NOBW6.js → parser-O4QFCUW7.js} +5 -5
  178. package/dist/{parser-IXSZZQHY.js → parser-PGMQDD4G.js} +4 -4
  179. package/dist/{parser-3STE62GB.js → parser-Q4QKCIWQ.js} +4 -4
  180. package/dist/parser-QTOB4KFL.js +14 -0
  181. package/dist/{parser-2EWECDSA.js → parser-QYYM4QVW.js} +4 -4
  182. package/dist/{parser-4OGOBJJ4.js → parser-RZMQP7MM.js} +4 -4
  183. package/dist/parser-RZPVAQVX.js +11 -0
  184. package/dist/parser-SOUJOEYI.js +13 -0
  185. package/dist/{parser-4FL2CMDG.js → parser-UQE5OWZI.js} +5 -5
  186. package/dist/{parser-NRAI6O25.js → parser-WAV5JRPT.js} +4 -4
  187. package/dist/{parser-KNSQSKQO.js → parser-YLKYBRIT.js} +5 -5
  188. package/dist/{parser-XKRP7QKP.js → parser-YS7TOS2K.js} +3 -3
  189. package/dist/{parser-AQETEVRW.js → parser-ZSOWUBML.js} +5 -5
  190. package/dist/{parser-CFZD5IBL.js → parser-ZTBATMLX.js} +4 -4
  191. package/dist/{renderer-VACVQYML.js → renderer-35HSIDMZ.js} +8 -8
  192. package/dist/{renderer-5MYBMBYO.js → renderer-4ITCHBT7.js} +5 -5
  193. package/dist/{renderer-CLJHQPBJ.js → renderer-67NPCBIS.js} +11 -11
  194. package/dist/{renderer-5NDVNDAZ.js → renderer-6GHYK7DX.js} +9 -9
  195. package/dist/{renderer-Z7I3W2PP.js → renderer-6RNGHC5Z.js} +8 -8
  196. package/dist/renderer-72LGR2YF.js +14 -0
  197. package/dist/{renderer-KQB7UGDS.js → renderer-7RH2SI3B.js} +3 -3
  198. package/dist/renderer-7SWMIFMM.js +21 -0
  199. package/dist/renderer-BBCEFILK.js +24 -0
  200. package/dist/{renderer-JGBKUCZD.js → renderer-BSW7SRIZ.js} +4 -4
  201. package/dist/{renderer-BYCNMBF7.js → renderer-BY533UWU.js} +11 -11
  202. package/dist/{renderer-6W5462RB.js → renderer-BZSBPTZJ.js} +9 -9
  203. package/dist/{renderer-7MVLWWQD.js → renderer-CXUC4KAD.js} +9 -9
  204. package/dist/{renderer-QIWVHWZO.js → renderer-DAXMXIKD.js} +3 -3
  205. package/dist/renderer-FZUKFUNZ.js +23 -0
  206. package/dist/renderer-G2NLGNKF.js +17 -0
  207. package/dist/renderer-GO3FE3RA.js +24 -0
  208. package/dist/{renderer-ZGNTUWC4.js → renderer-HPGR6USK.js} +8 -8
  209. package/dist/{renderer-UV6MI64M.js → renderer-HVCU2C3Z.js} +3 -3
  210. package/dist/renderer-ICJN2SA2.js +24 -0
  211. package/dist/{renderer-AWWAF6XD.js → renderer-INEXO7B6.js} +10 -10
  212. package/dist/{renderer-YY2OSF6E.js → renderer-KDYCFRBX.js} +8 -8
  213. package/dist/renderer-KY4KQBTF.js +19 -0
  214. package/dist/{renderer-B2OMQIQG.js → renderer-LBN65V45.js} +13 -13
  215. package/dist/{renderer-N43WR5GV.js → renderer-MGBWOCXG.js} +10 -10
  216. package/dist/{renderer-PGX2TKVS.js → renderer-O4JKUGKO.js} +8 -8
  217. package/dist/{renderer-4JHRUBE6.js → renderer-OOGFODWP.js} +10 -10
  218. package/dist/{renderer-6EEZHMH4.js → renderer-Q6ZKPLS6.js} +9 -9
  219. package/dist/{renderer-RPOA5YPZ.js → renderer-SZQ326M5.js} +12 -12
  220. package/dist/{renderer-ZRNG54CW.js → renderer-TKG6LS4U.js} +11 -11
  221. package/dist/{renderer-W4M6QLIJ.js → renderer-TQMZGDAX.js} +13 -13
  222. package/dist/renderer-radial-JELMHQ24.js +21 -0
  223. package/dist/{resolver-NOAA7ID7.js → resolver-FHBCO3PL.js} +3 -3
  224. package/dist/{state-parser-Z2V23ATR.js → state-parser-3REXRK3R.js} +4 -4
  225. package/dist/{state-renderer-B4DQBM6M.js → state-renderer-XYLNRWXR.js} +8 -8
  226. package/docs/ai-integration.md +12 -3
  227. package/docs/language-reference.md +429 -24
  228. package/gallery/fixtures/body.dgmo +17 -0
  229. package/gallery/fixtures/bracket.dgmo +30 -0
  230. package/gallery/fixtures/clock.dgmo +8 -0
  231. package/gallery/fixtures/countdown.dgmo +3 -0
  232. package/gallery/fixtures/family.dgmo +23 -0
  233. package/gallery/fixtures/goal.dgmo +4 -0
  234. package/gallery/fixtures/sketch.dgmo +22 -0
  235. package/package.json +12 -4
  236. package/dist/chunk-ODZVHU3R.js +0 -153
  237. package/dist/dgmo-router-X35VLZLM.js +0 -73
  238. package/dist/dimensions-J3FHIMJ6.js +0 -22
  239. package/dist/layout-5T6RH5M6.js +0 -14
  240. package/dist/layout-G23F7LDH.js +0 -9
  241. package/dist/layout-OB3RI63S.js +0 -14
  242. package/dist/parser-JAL2HD4I.js +0 -13
  243. package/dist/renderer-SMIBCRVB.js +0 -24
  244. package/dist/renderer-radial-C32GPJQ7.js +0 -21
@@ -1,12 +1,26 @@
1
1
  import {
2
- computeQuadrantPointLabels
3
- } from "./chunk-PBAHEPLQ.js";
2
+ renderTimeline
3
+ } from "./chunk-XCLHOZAM.js";
4
+ import {
5
+ ScaleContext
6
+ } from "./chunk-YYVTBZZC.js";
7
+ import {
8
+ getRenderCategory,
9
+ parseArc,
10
+ parseDgmo,
11
+ parseQuadrant,
12
+ parseSlope,
13
+ parseTimeline,
14
+ parseVenn,
15
+ parseVisualization,
16
+ parseWordcloud
17
+ } from "./chunk-JFYIP7XU.js";
4
18
  import {
5
19
  renderDataChartD3
6
- } from "./chunk-OJR3MQYV.js";
20
+ } from "./chunk-6ZT4U37Q.js";
7
21
  import {
8
- renderTimeline
9
- } from "./chunk-UWN33VNX.js";
22
+ computeQuadrantPointLabels
23
+ } from "./chunk-HGN652MU.js";
10
24
  import {
11
25
  EXPORT_HEIGHT,
12
26
  EXPORT_WIDTH,
@@ -19,27 +33,13 @@ import {
19
33
  resolveExportPalette,
20
34
  showTooltip
21
35
  } from "./chunk-U6EQI3U6.js";
22
- import {
23
- ScaleContext
24
- } from "./chunk-YYVTBZZC.js";
25
36
  import {
26
37
  FONT_FAMILY
27
38
  } from "./chunk-6KFWC4CO.js";
28
39
  import {
29
40
  measureText,
30
41
  wrapTextToWidth
31
- } from "./chunk-WCT3NYCV.js";
32
- import {
33
- getRenderCategory,
34
- parseArc,
35
- parseDgmo,
36
- parseQuadrant,
37
- parseSlope,
38
- parseTimeline,
39
- parseVenn,
40
- parseVisualization,
41
- parseWordcloud
42
- } from "./chunk-HSH73DP6.js";
42
+ } from "./chunk-5LWQH6QV.js";
43
43
  import {
44
44
  getPalette
45
45
  } from "./chunk-R3XI2VC7.js";
@@ -51,7 +51,7 @@ import {
51
51
  import {
52
52
  resolveActiveTagGroup,
53
53
  tagAttrKey
54
- } from "./chunk-QLCCJEJI.js";
54
+ } from "./chunk-WCUHAQKB.js";
55
55
  import {
56
56
  __commonJS,
57
57
  __toESM
@@ -808,8 +808,6 @@ var ARC_GROUP_LABEL_FONT = 12;
808
808
  var ARC_BAND_HALF_W = 60;
809
809
  var ARC_BAND_HALF_H = 40;
810
810
  var ARC_BAND_RADIUS = 4;
811
- var ARC_BAND_LABEL_X_OFFSET = 6;
812
- var ARC_BAND_LABEL_Y_OFFSET = 14;
813
811
  var ARC_BAND_LABEL_BOTTOM_OFFSET = 4;
814
812
  var ARC_NODE_LABEL_X_OFFSET = 14;
815
813
  var ARC_NODE_LABEL_Y_OFFSET = 20;
@@ -838,8 +836,6 @@ function renderArcDiagram(container, parsed, palette, _isDark, onClickItem, expo
838
836
  const sBandHalfW = ctx.aesthetic(ARC_BAND_HALF_W);
839
837
  const sBandHalfH = ctx.aesthetic(ARC_BAND_HALF_H);
840
838
  const sBandRadius = ctx.structural(ARC_BAND_RADIUS);
841
- const sBandLabelXOffset = ctx.structural(ARC_BAND_LABEL_X_OFFSET);
842
- const sBandLabelYOffset = ctx.structural(ARC_BAND_LABEL_Y_OFFSET);
843
839
  const sBandLabelBottomOffset = ctx.structural(ARC_BAND_LABEL_BOTTOM_OFFSET);
844
840
  const sNodeLabelXOffset = ctx.structural(ARC_NODE_LABEL_X_OFFSET);
845
841
  const sNodeLabelYOffset = ctx.structural(ARC_NODE_LABEL_Y_OFFSET);
@@ -947,21 +943,40 @@ function renderArcDiagram(container, parsed, palette, _isDark, onClickItem, expo
947
943
  el.attr("fill-opacity", el.attr("data-group") === groupName ? 1 : 0.2);
948
944
  });
949
945
  }
946
+ const groupOfNode = /* @__PURE__ */ new Map();
947
+ const groupColorByName = /* @__PURE__ */ new Map();
948
+ for (const grp of arcNodeGroups) {
949
+ if (grp.color) groupColorByName.set(grp.name, grp.color);
950
+ for (const n of grp.nodes)
951
+ if (nodes.includes(n) && !groupOfNode.has(n))
952
+ groupOfNode.set(n, grp.name);
953
+ }
954
+ const groupColorOfLink = (l) => {
955
+ const g2 = groupOfNode.get(l.source) ?? groupOfNode.get(l.target);
956
+ return g2 ? groupColorByName.get(g2) : void 0;
957
+ };
950
958
  if (isVertical) {
951
959
  const yScale = d3Scale2.scalePoint().domain(nodes).range([0, innerHeight]).padding(0.5);
952
960
  const baseX = innerWidth / 2;
953
961
  if (arcNodeGroups.length > 0) {
954
962
  const bandPad = (yScale.step?.() ?? 20) * 0.4;
963
+ const vWidestLabelPx = Math.max(...nodes.map((n) => n.length)) * sNodeLabelFont * 0.6;
964
+ const vNameColW = sGroupLabelFont * 3;
965
+ const innerLeft = baseX - Math.max(sBandHalfW, sNodeLabelXOffset + vWidestLabelPx + 4);
966
+ const bandLeft = innerLeft - vNameColW;
967
+ const bandRight = baseX + sBandHalfW;
955
968
  for (const group of arcNodeGroups) {
956
969
  const groupNodes = group.nodes.filter((n) => nodes.includes(n));
957
970
  if (groupNodes.length === 0) continue;
958
971
  const positions = groupNodes.map((n) => yScale(n));
959
972
  const minY = Math.min(...positions) - bandPad;
960
973
  const maxY = Math.max(...positions) + bandPad;
961
- g.append("rect").attr("class", "arc-group-band").attr("data-group", group.name).attr("data-line-number", String(group.lineNumber)).attr("x", baseX - sBandHalfW).attr("y", minY).attr("width", sBandHalfW * 2).attr("height", maxY - minY).attr("rx", sBandRadius).attr("fill", textColor).attr("fill-opacity", 0.06).style("cursor", "pointer").on("mouseenter", () => handleGroupEnter(group.name)).on("mouseleave", handleMouseLeave).on("click", () => {
974
+ const midYBand = (minY + maxY) / 2;
975
+ g.append("rect").attr("class", "arc-group-band").attr("data-group", group.name).attr("data-line-number", String(group.lineNumber)).attr("x", bandLeft).attr("y", minY).attr("width", bandRight - bandLeft).attr("height", maxY - minY).attr("rx", sBandRadius).attr("fill", group.color ?? textColor).attr("fill-opacity", group.color ? 0.15 : 0.06).style("cursor", "pointer").on("mouseenter", () => handleGroupEnter(group.name)).on("mouseleave", handleMouseLeave).on("click", () => {
962
976
  if (onClickItem) onClickItem(group.lineNumber);
963
977
  });
964
- g.append("text").attr("class", "arc-group-label").attr("data-group", group.name).attr("data-line-number", String(group.lineNumber)).attr("x", baseX - sBandHalfW + sBandLabelXOffset).attr("y", minY + sBandLabelYOffset).attr("fill", textColor).attr("font-size", `${sGroupLabelFont}px`).attr("font-weight", "600").attr("fill-opacity", 0.5).style("cursor", onClickItem ? "pointer" : "default").text(group.name).on("mouseenter", () => handleGroupEnter(group.name)).on("mouseleave", handleMouseLeave).on("click", () => {
978
+ const nameX = bandLeft + vNameColW / 2;
979
+ g.append("text").attr("class", "arc-group-label").attr("data-group", group.name).attr("data-line-number", String(group.lineNumber)).attr("x", nameX).attr("y", midYBand).attr("text-anchor", "middle").attr("transform", `rotate(-90 ${nameX} ${midYBand})`).attr("fill", textColor).attr("font-size", `${sGroupLabelFont}px`).attr("font-weight", "600").attr("fill-opacity", 0.6).style("cursor", onClickItem ? "pointer" : "default").text(group.name).on("mouseenter", () => handleGroupEnter(group.name)).on("mouseleave", handleMouseLeave).on("click", () => {
965
980
  if (onClickItem) onClickItem(group.lineNumber);
966
981
  });
967
982
  }
@@ -973,7 +988,7 @@ function renderArcDiagram(container, parsed, palette, _isDark, onClickItem, expo
973
988
  const midY = (y1 + y2) / 2;
974
989
  const distance = Math.abs(y2 - y1);
975
990
  const controlX = baseX + distance * 0.4;
976
- const color = link.color ?? colors[idx % colors.length];
991
+ const color = link.color ?? groupColorOfLink(link) ?? colors[idx % colors.length];
977
992
  g.append("path").attr("class", "arc-link").attr("data-source", link.source).attr("data-target", link.target).attr("data-line-number", String(link.lineNumber)).attr("d", `M ${baseX},${y1} Q ${controlX},${midY} ${baseX},${y2}`).attr("fill", "none").attr("stroke", color).attr("stroke-width", strokeScale(link.value)).attr("stroke-opacity", 0.7).style("cursor", onClickItem ? "pointer" : "default").on("click", () => {
978
993
  if (onClickItem && link.lineNumber) onClickItem(link.lineNumber);
979
994
  });
@@ -996,51 +1011,103 @@ function renderArcDiagram(container, parsed, palette, _isDark, onClickItem, expo
996
1011
  }
997
1012
  } else {
998
1013
  const xScale = d3Scale2.scalePoint().domain(nodes).range([0, innerWidth]).padding(0.5);
1014
+ const arcStep = xScale.step();
1015
+ const widestLabelChars = Math.max(...nodes.map((n) => n.length));
1016
+ const labelWidthPx = widestLabelChars * sNodeLabelFont * 0.6;
1017
+ const rotateLabels = labelWidthPx > arcStep * 0.9;
1018
+ const labelPivotGap = sNodeRadius + 4;
1019
+ const rotatedLabelDrop = labelWidthPx * 0.71;
1020
+ const hasGroups = arcNodeGroups.length > 0;
1021
+ const xPos = /* @__PURE__ */ new Map();
1022
+ let bandStepPx = arcStep;
1023
+ if (hasGroups) {
1024
+ let boundaryCount = 0;
1025
+ let prevG = null;
1026
+ for (const n of nodes) {
1027
+ const gn = groupOfNode.get(n) ?? `\0solo:${n}`;
1028
+ if (prevG !== null && gn !== prevG) boundaryCount++;
1029
+ prevG = gn;
1030
+ }
1031
+ const withinAdj = nodes.length - 1 - boundaryCount;
1032
+ const groupGapPx = rotateLabels ? rotatedLabelDrop + sNodeRadius * 2 + 12 : arcStep * 0.9;
1033
+ const leftInset = rotateLabels ? rotatedLabelDrop + sNodeRadius : arcStep * 0.5;
1034
+ const rightInset = rotateLabels ? sNodeRadius + 2 : arcStep * 0.5;
1035
+ const avail = innerWidth - leftInset - rightInset;
1036
+ let stepPx = withinAdj > 0 ? (avail - boundaryCount * groupGapPx) / withinAdj : avail;
1037
+ if (!isFinite(stepPx) || stepPx < sNodeRadius * 2)
1038
+ stepPx = Math.max(sNodeRadius * 2, arcStep * 0.5);
1039
+ bandStepPx = stepPx;
1040
+ let cx = leftInset;
1041
+ prevG = null;
1042
+ for (const n of nodes) {
1043
+ const gn = groupOfNode.get(n) ?? `\0solo:${n}`;
1044
+ if (prevG !== null) cx += gn !== prevG ? groupGapPx : stepPx;
1045
+ xPos.set(n, cx);
1046
+ prevG = gn;
1047
+ }
1048
+ } else {
1049
+ for (const n of nodes) xPos.set(n, xScale(n));
1050
+ }
1051
+ const posX = (n) => xPos.get(n);
1052
+ const nodeLabelDepth = rotateLabels ? labelPivotGap + rotatedLabelDrop : sNodeLabelYOffset + sNodeLabelFont;
1053
+ const groupNameGap = sGroupLabelFont + sBandLabelBottomOffset;
1054
+ const belowExtent = hasGroups ? nodeLabelDepth + groupNameGap + sGroupLabelFont * 0.25 : Math.max(sBandHalfH, nodeLabelDepth);
999
1055
  let baseY = innerHeight / 2;
1000
1056
  if (exportDims) {
1001
1057
  let maxDist = 0;
1002
1058
  for (const l of links) {
1003
- const a = xScale(l.source);
1004
- const b = xScale(l.target);
1059
+ const a = posX(l.source);
1060
+ const b = posX(l.target);
1005
1061
  if (a != null && b != null)
1006
1062
  maxDist = Math.max(maxDist, Math.abs(b - a));
1007
1063
  }
1008
1064
  const above = maxDist * 0.2 + sNodeRadius;
1009
- const below = Math.max(sBandHalfH, sNodeLabelYOffset + sNodeLabelFont);
1065
+ const below = belowExtent;
1010
1066
  baseY = above;
1011
1067
  const tightHeight = margin.top + above + below + margin.bottom;
1012
1068
  svg.attr("height", tightHeight).attr("viewBox", `0 0 ${width} ${tightHeight}`);
1013
1069
  }
1014
- if (arcNodeGroups.length > 0) {
1015
- const bandPad = (xScale.step?.() ?? 20) * 0.4;
1070
+ if (hasGroups) {
1071
+ const bandTopY = baseY - sBandHalfH;
1072
+ const bandBottomY = baseY + belowExtent;
1016
1073
  for (const group of arcNodeGroups) {
1017
1074
  const groupNodes = group.nodes.filter((n) => nodes.includes(n));
1018
1075
  if (groupNodes.length === 0) continue;
1019
- const positions = groupNodes.map((n) => xScale(n));
1020
- const minX = Math.min(...positions) - bandPad;
1021
- const maxX = Math.max(...positions) + bandPad;
1022
- g.append("rect").attr("class", "arc-group-band").attr("data-group", group.name).attr("data-line-number", String(group.lineNumber)).attr("x", minX).attr("y", baseY - sBandHalfH).attr("width", maxX - minX).attr("height", sBandHalfH * 2).attr("rx", sBandRadius).attr("fill", textColor).attr("fill-opacity", 0.06).style("cursor", "pointer").on("mouseenter", () => handleGroupEnter(group.name)).on("mouseleave", handleMouseLeave).on("click", () => {
1076
+ const positions = groupNodes.map((n) => posX(n));
1077
+ const minP = Math.min(...positions);
1078
+ const maxP = Math.max(...positions);
1079
+ const sidePad = rotateLabels ? sNodeRadius + 4 : bandStepPx * 0.4;
1080
+ const leftNode = groupNodes.reduce(
1081
+ (a, b) => posX(a) < posX(b) ? a : b
1082
+ );
1083
+ const ownOverhang = leftNode.length * sNodeLabelFont * 0.6 * 0.71;
1084
+ const bandLeft = rotateLabels ? minP - ownOverhang - sidePad : minP - sidePad;
1085
+ const bandRight = maxP + sidePad;
1086
+ const bandFill = group.color ?? textColor;
1087
+ const bandFillOpacity = group.color ? 0.15 : 0.06;
1088
+ const nameY = baseY + nodeLabelDepth + sGroupLabelFont;
1089
+ g.append("rect").attr("class", "arc-group-band").attr("data-group", group.name).attr("data-line-number", String(group.lineNumber)).attr("x", bandLeft).attr("y", bandTopY).attr("width", bandRight - bandLeft).attr("height", bandBottomY - bandTopY).attr("rx", sBandRadius).attr("fill", bandFill).attr("fill-opacity", bandFillOpacity).style("cursor", "pointer").on("mouseenter", () => handleGroupEnter(group.name)).on("mouseleave", handleMouseLeave).on("click", () => {
1023
1090
  if (onClickItem) onClickItem(group.lineNumber);
1024
1091
  });
1025
- g.append("text").attr("class", "arc-group-label").attr("data-group", group.name).attr("data-line-number", String(group.lineNumber)).attr("x", (minX + maxX) / 2).attr("y", baseY + sBandHalfH - sBandLabelBottomOffset).attr("text-anchor", "middle").attr("fill", textColor).attr("font-size", `${sGroupLabelFont}px`).attr("font-weight", "600").attr("fill-opacity", 0.5).style("cursor", onClickItem ? "pointer" : "default").text(group.name).on("mouseenter", () => handleGroupEnter(group.name)).on("mouseleave", handleMouseLeave).on("click", () => {
1092
+ g.append("text").attr("class", "arc-group-label").attr("data-group", group.name).attr("data-line-number", String(group.lineNumber)).attr("x", (minP + maxP) / 2).attr("y", nameY).attr("text-anchor", "middle").attr("fill", textColor).attr("font-size", `${sGroupLabelFont}px`).attr("font-weight", "600").attr("fill-opacity", 0.6).style("cursor", onClickItem ? "pointer" : "default").text(group.name).on("mouseenter", () => handleGroupEnter(group.name)).on("mouseleave", handleMouseLeave).on("click", () => {
1026
1093
  if (onClickItem) onClickItem(group.lineNumber);
1027
1094
  });
1028
1095
  }
1029
1096
  }
1030
1097
  g.append("line").attr("x1", 0).attr("y1", baseY).attr("x2", innerWidth).attr("y2", baseY).attr("stroke", mutedColor).attr("stroke-width", sBaselineStrokeWidth).attr("stroke-dasharray", sBaselineDash);
1031
1098
  links.forEach((link, idx) => {
1032
- const x1 = xScale(link.source);
1033
- const x2 = xScale(link.target);
1099
+ const x1 = posX(link.source);
1100
+ const x2 = posX(link.target);
1034
1101
  const midX = (x1 + x2) / 2;
1035
1102
  const distance = Math.abs(x2 - x1);
1036
1103
  const controlY = baseY - distance * 0.4;
1037
- const color = link.color ?? colors[idx % colors.length];
1104
+ const color = link.color ?? groupColorOfLink(link) ?? colors[idx % colors.length];
1038
1105
  g.append("path").attr("class", "arc-link").attr("data-source", link.source).attr("data-target", link.target).attr("data-line-number", String(link.lineNumber)).attr("d", `M ${x1},${baseY} Q ${midX},${controlY} ${x2},${baseY}`).attr("fill", "none").attr("stroke", color).attr("stroke-width", strokeScale(link.value)).attr("stroke-opacity", 0.7).style("cursor", onClickItem ? "pointer" : "default").on("click", () => {
1039
1106
  if (onClickItem && link.lineNumber) onClickItem(link.lineNumber);
1040
1107
  });
1041
1108
  });
1042
1109
  for (const node of nodes) {
1043
- const x = xScale(node);
1110
+ const x = posX(node);
1044
1111
  const nodeColor = nodeColorMap.get(node) ?? textColor;
1045
1112
  const nodeLink = links.find(
1046
1113
  (l) => l.source === node || l.target === node
@@ -1053,7 +1120,11 @@ function renderArcDiagram(container, parsed, palette, _isDark, onClickItem, expo
1053
1120
  onClickItem(nodeLink.lineNumber);
1054
1121
  });
1055
1122
  nodeG.append("circle").attr("cx", x).attr("cy", baseY).attr("r", sNodeRadius).attr("fill", nodeColor).attr("stroke", bgColor).attr("stroke-width", sNodeStrokeWidth);
1056
- nodeG.append("text").attr("x", x).attr("y", baseY + sNodeLabelYOffset).attr("text-anchor", "middle").attr("fill", textColor).attr("font-size", `${sNodeLabelFont}px`).text(node);
1123
+ const labelY = rotateLabels ? baseY + labelPivotGap : baseY + sNodeLabelYOffset;
1124
+ const nodeLabel = nodeG.append("text").attr("x", x).attr("y", labelY).attr("text-anchor", rotateLabels ? "end" : "middle").attr("fill", textColor).attr("font-size", `${sNodeLabelFont}px`).text(node);
1125
+ if (rotateLabels) {
1126
+ nodeLabel.attr("transform", `rotate(-45 ${x} ${labelY})`);
1127
+ }
1057
1128
  }
1058
1129
  }
1059
1130
  }
@@ -2241,7 +2312,9 @@ var DIAGRAM_EXPORT_HANDLERS = {
2241
2312
  class: exportClass,
2242
2313
  er: exportEr,
2243
2314
  "boxes-and-lines": exportBoxesAndLines,
2315
+ sketch: exportSketch,
2244
2316
  swimlane: exportSwimlane,
2317
+ family: exportFamily,
2245
2318
  "version-control": exportVersionControl,
2246
2319
  mindmap: exportMindmap,
2247
2320
  wireframe: exportWireframe,
@@ -2259,7 +2332,12 @@ var DIAGRAM_EXPORT_HANDLERS = {
2259
2332
  ring: exportRing,
2260
2333
  treemap: exportTreemap,
2261
2334
  block: exportBlock,
2335
+ goal: exportGoal,
2336
+ countdown: exportCountdown,
2337
+ clock: exportClock,
2338
+ bracket: exportBracket,
2262
2339
  raci: exportRaci,
2340
+ body: exportBody,
2263
2341
  // D3 visualizations — own handler per type (Story 109.2). Only `sequence`
2264
2342
  // still falls through to exportVisualization (no chart-type of its own).
2265
2343
  slope: exportSlope,
@@ -2285,13 +2363,13 @@ function resolveArcChordOverride(content, detectedType, palette) {
2285
2363
  }
2286
2364
  async function renderForExport(content, theme, palette, viewState, options) {
2287
2365
  const exportMode = options?.exportMode ?? false;
2288
- const { parseDgmoChartType } = await import("./dgmo-router-X35VLZLM.js");
2366
+ const { parseDgmoChartType } = await import("./dgmo-router-QOMFCOOV.js");
2289
2367
  const detectedTypeRaw = parseDgmoChartType(content);
2290
2368
  const override = resolveArcChordOverride(content, detectedTypeRaw, palette);
2291
2369
  const renderContent = override?.content ?? content;
2292
2370
  const detectedType = override?.type ?? detectedTypeRaw;
2293
2371
  if (detectedType !== null) {
2294
- const { supportsD3DataChart, renderDataChartD3: renderDataChartD32 } = await import("./charts-d3-QOZHKTCT.js");
2372
+ const { supportsD3DataChart, renderDataChartD3: renderDataChartD32 } = await import("./charts-d3-DKUD7MQE.js");
2295
2373
  if (supportsD3DataChart(detectedType)) {
2296
2374
  return renderDataChartD32(renderContent, theme, palette);
2297
2375
  }
@@ -2313,8 +2391,8 @@ function ctxTagOverride(ctx) {
2313
2391
  }
2314
2392
  async function exportEventLine(ctx) {
2315
2393
  const { content, theme, palette } = ctx;
2316
- const { parseEventLine } = await import("./parser-JAL2HD4I.js");
2317
- const { renderEventLineForExport } = await import("./renderer-RPOA5YPZ.js");
2394
+ const { parseEventLine } = await import("./parser-DOKMZXVZ.js");
2395
+ const { renderEventLineForExport } = await import("./renderer-SZQ326M5.js");
2318
2396
  const effectivePalette = await resolveExportPalette(theme, palette);
2319
2397
  const parsed = parseEventLine(content, effectivePalette);
2320
2398
  if (parsed.error || parsed.events.length === 0) return "";
@@ -2329,9 +2407,27 @@ async function exportEventLine(ctx) {
2329
2407
  );
2330
2408
  return finalizeSvgExport(container, theme, effectivePalette);
2331
2409
  }
2410
+ async function exportBody(ctx) {
2411
+ const { content, theme, palette } = ctx;
2412
+ const { parseBody } = await import("./parser-FMPCVFRK.js");
2413
+ const { renderBodyForExport } = await import("./renderer-7SWMIFMM.js");
2414
+ const effectivePalette = await resolveExportPalette(theme, palette);
2415
+ const parsed = parseBody(content, effectivePalette);
2416
+ if (parsed.error) return "";
2417
+ const container = createExportContainer(EXPORT_WIDTH, EXPORT_HEIGHT);
2418
+ renderBodyForExport(
2419
+ container,
2420
+ parsed,
2421
+ effectivePalette,
2422
+ ctx.isDark,
2423
+ { width: EXPORT_WIDTH, height: EXPORT_HEIGHT },
2424
+ ctxTagOverride(ctx)
2425
+ );
2426
+ return finalizeSvgExport(container, theme, effectivePalette);
2427
+ }
2332
2428
  async function exportVersionControl(ctx) {
2333
2429
  const { content, theme, palette } = ctx;
2334
- const { parseVersionControl } = await import("./parser-TFZFBVWN.js");
2430
+ const { parseVersionControl } = await import("./parser-4AI5ZN5F.js");
2335
2431
  const { renderVersionControlForExport } = await import("./renderer-GHPZMFU2.js");
2336
2432
  const effectivePalette = await resolveExportPalette(theme, palette);
2337
2433
  const parsed = parseVersionControl(content, effectivePalette);
@@ -2356,10 +2452,10 @@ function unionHiddenAttributes(hideOption, ha) {
2356
2452
  }
2357
2453
  async function exportOrg(ctx) {
2358
2454
  const { content, theme, palette, viewState, exportMode } = ctx;
2359
- const { parseOrg } = await import("./parser-6BTRLKRZ.js");
2360
- const { layoutOrg } = await import("./layout-OB3RI63S.js");
2455
+ const { parseOrg } = await import("./parser-45DENHFZ.js");
2456
+ const { layoutOrg } = await import("./layout-VYELEAW7.js");
2361
2457
  const { collapseOrgTree } = await import("./collapse-CLPJD2RL.js");
2362
- const { renderOrg } = await import("./renderer-ZRNG54CW.js");
2458
+ const { renderOrg } = await import("./renderer-TKG6LS4U.js");
2363
2459
  const isDark = ctx.isDark;
2364
2460
  const effectivePalette = await resolveExportPalette(theme, palette);
2365
2461
  const orgParsed = parseOrg(content, effectivePalette);
@@ -2405,10 +2501,10 @@ async function exportOrg(ctx) {
2405
2501
  }
2406
2502
  async function exportSitemap(ctx) {
2407
2503
  const { content, theme, palette, viewState, exportMode } = ctx;
2408
- const { parseSitemap } = await import("./parser-NGU3ETO6.js");
2409
- const { layoutSitemap } = await import("./layout-5T6RH5M6.js");
2504
+ const { parseSitemap } = await import("./parser-C2HF2C2E.js");
2505
+ const { layoutSitemap } = await import("./layout-TJIWF7EM.js");
2410
2506
  const { collapseSitemapTree } = await import("./collapse-ZWUFFCK2.js");
2411
- const { renderSitemap } = await import("./renderer-5NDVNDAZ.js");
2507
+ const { renderSitemap } = await import("./renderer-6GHYK7DX.js");
2412
2508
  const isDark = ctx.isDark;
2413
2509
  const effectivePalette = await resolveExportPalette(theme, palette);
2414
2510
  const sitemapParsed = parseSitemap(content, effectivePalette);
@@ -2452,8 +2548,8 @@ async function exportSitemap(ctx) {
2452
2548
  }
2453
2549
  async function exportKanban(ctx) {
2454
2550
  const { content, theme, palette, viewState, exportMode } = ctx;
2455
- const { parseKanban } = await import("./parser-XDVELHRK.js");
2456
- const { renderKanban } = await import("./renderer-6EEZHMH4.js");
2551
+ const { parseKanban } = await import("./parser-4P36TUVD.js");
2552
+ const { renderKanban } = await import("./renderer-Q6ZKPLS6.js");
2457
2553
  const effectivePalette = await resolveExportPalette(theme, palette);
2458
2554
  const kanbanParsed = parseKanban(content, effectivePalette);
2459
2555
  if (kanbanParsed.error || kanbanParsed.columns.length === 0) return "";
@@ -2484,9 +2580,9 @@ async function exportKanban(ctx) {
2484
2580
  }
2485
2581
  async function exportClass(ctx) {
2486
2582
  const { content, theme, palette, exportMode } = ctx;
2487
- const { parseClassDiagram } = await import("./parser-NRAI6O25.js");
2488
- const { layoutClassDiagram } = await import("./layout-46N4JJYK.js");
2489
- const { renderClassDiagram } = await import("./renderer-B2OMQIQG.js");
2583
+ const { parseClassDiagram } = await import("./parser-WAV5JRPT.js");
2584
+ const { layoutClassDiagram } = await import("./layout-7SKMFYHL.js");
2585
+ const { renderClassDiagram } = await import("./renderer-LBN65V45.js");
2490
2586
  const effectivePalette = await resolveExportPalette(theme, palette);
2491
2587
  const classParsed = parseClassDiagram(content, effectivePalette);
2492
2588
  if (classParsed.error || classParsed.classes.length === 0) return "";
@@ -2511,9 +2607,9 @@ async function exportClass(ctx) {
2511
2607
  }
2512
2608
  async function exportEr(ctx) {
2513
2609
  const { content, theme, palette, viewState, exportMode } = ctx;
2514
- const { parseERDiagram } = await import("./parser-KNSQSKQO.js");
2515
- const { layoutERDiagram } = await import("./layout-EE6GE46Y.js");
2516
- const { renderERDiagram } = await import("./renderer-W4M6QLIJ.js");
2610
+ const { parseERDiagram } = await import("./parser-YLKYBRIT.js");
2611
+ const { layoutERDiagram } = await import("./layout-DC4TVXER.js");
2612
+ const { renderERDiagram } = await import("./renderer-TQMZGDAX.js");
2517
2613
  const effectivePalette = await resolveExportPalette(theme, palette);
2518
2614
  const erParsed = parseERDiagram(content, effectivePalette);
2519
2615
  if (erParsed.error || erParsed.tables.length === 0) return "";
@@ -2543,9 +2639,43 @@ async function exportEr(ctx) {
2543
2639
  );
2544
2640
  return finalizeSvgExport(container, theme, effectivePalette);
2545
2641
  }
2642
+ async function exportSketch(ctx) {
2643
+ const { content, theme, viewState, exportMode } = ctx;
2644
+ const { parseSketch } = await import("./parser-D5637H5H.js");
2645
+ const effectivePalette = await resolveExportPalette(theme, ctx.palette);
2646
+ const parsed = parseSketch(content, effectivePalette);
2647
+ if (parsed.error || parsed.nodes.length === 0 && parsed.boxes.length === 0) {
2648
+ return "";
2649
+ }
2650
+ const { layoutSketch } = await import("./layout-46366KBT.js");
2651
+ const { renderSketchForExport } = await import("./renderer-GO3FE3RA.js");
2652
+ const collapsedBoxes = viewState?.cg ? new Set(viewState.cg) : void 0;
2653
+ const skLayout = layoutSketch(parsed, {
2654
+ ...collapsedBoxes !== void 0 && { collapsedBoxes }
2655
+ });
2656
+ const PADDING = 20;
2657
+ const titleOffset = parsed.title ? 40 : 0;
2658
+ const exportWidth = skLayout.width + PADDING * 2;
2659
+ const exportHeight = skLayout.height + PADDING * 2 + titleOffset;
2660
+ const container = createExportContainer(exportWidth, exportHeight);
2661
+ const skTagOverride = ctxTagOverride(ctx);
2662
+ renderSketchForExport(
2663
+ container,
2664
+ parsed,
2665
+ skLayout,
2666
+ effectivePalette,
2667
+ ctx.isDark,
2668
+ {
2669
+ ...skTagOverride !== void 0 && { activeTagGroup: skTagOverride },
2670
+ ...exportMode !== void 0 && { exportMode },
2671
+ ...viewState?.hd !== void 0 && { hideDescriptions: viewState.hd }
2672
+ }
2673
+ );
2674
+ return finalizeSvgExport(container, theme, effectivePalette);
2675
+ }
2546
2676
  async function exportBoxesAndLines(ctx) {
2547
2677
  const { content, theme, palette, viewState, exportMode } = ctx;
2548
- const { parseBoxesAndLines } = await import("./parser-TRTHDFPP.js");
2678
+ const { parseBoxesAndLines } = await import("./parser-D3QT6GWN.js");
2549
2679
  const effectivePalette = await resolveExportPalette(theme, palette);
2550
2680
  const blParsed = parseBoxesAndLines(content, effectivePalette);
2551
2681
  if (blParsed.error || blParsed.nodes.length === 0) return "";
@@ -2556,8 +2686,8 @@ async function exportBoxesAndLines(ctx) {
2556
2686
  blHiddenTagValues.set(k, new Set(v));
2557
2687
  }
2558
2688
  }
2559
- const { renderBoxesAndLinesForExport } = await import("./renderer-YY2OSF6E.js");
2560
- const { layoutBoxesAndLines } = await import("./layout-HRBZPFCN.js");
2689
+ const { renderBoxesAndLinesForExport } = await import("./renderer-KDYCFRBX.js");
2690
+ const { layoutBoxesAndLines } = await import("./layout-34CLNICW.js");
2561
2691
  const blLayout = await layoutBoxesAndLines(blParsed);
2562
2692
  const PADDING = 20;
2563
2693
  const titleOffset = blParsed.title ? 40 : 0;
@@ -2586,9 +2716,9 @@ async function exportBoxesAndLines(ctx) {
2586
2716
  }
2587
2717
  async function exportSwimlane(ctx) {
2588
2718
  const { content, theme, palette } = ctx;
2589
- const { parseSwimlane } = await import("./parser-ZSDPZYQP.js");
2590
- const { layoutSwimlane } = await import("./layout-N76NR4ZO.js");
2591
- const { renderSwimlaneForExport } = await import("./renderer-JGBKUCZD.js");
2719
+ const { parseSwimlane } = await import("./parser-5AURY4A6.js");
2720
+ const { layoutSwimlane } = await import("./layout-PUQCB6AN.js");
2721
+ const { renderSwimlaneForExport } = await import("./renderer-BSW7SRIZ.js");
2592
2722
  const effectivePalette = await resolveExportPalette(theme, palette);
2593
2723
  const swimParsed = parseSwimlane(content, effectivePalette);
2594
2724
  if (swimParsed.error || swimParsed.nodes.length === 0) return "";
@@ -2616,12 +2746,44 @@ async function exportSwimlane(ctx) {
2616
2746
  );
2617
2747
  return finalizeSvgExport(container, theme, effectivePalette);
2618
2748
  }
2749
+ async function exportFamily(ctx) {
2750
+ const { content, theme, palette } = ctx;
2751
+ const { parseFamily } = await import("./parser-QTOB4KFL.js");
2752
+ const { layoutFamily } = await import("./layout-FGQWRYYW.js");
2753
+ const { renderFamilyForExport } = await import("./renderer-FZUKFUNZ.js");
2754
+ const effectivePalette = await resolveExportPalette(theme, palette);
2755
+ const parsed = parseFamily(content, effectivePalette);
2756
+ if (parsed.error || parsed.persons.size === 0) return "";
2757
+ const layout = layoutFamily(parsed);
2758
+ const PADDING = 20;
2759
+ const titleOffset = parsed.title ? 40 : 0;
2760
+ const exportWidth = layout.width + PADDING * 2;
2761
+ const exportHeight = layout.height + PADDING * 2 + titleOffset;
2762
+ const container = createExportContainer(exportWidth, exportHeight);
2763
+ renderFamilyForExport(
2764
+ container,
2765
+ parsed,
2766
+ layout,
2767
+ effectivePalette,
2768
+ ctx.isDark,
2769
+ {
2770
+ exportDims: { width: exportWidth, height: exportHeight },
2771
+ activeTagGroup: resolveActiveTagGroup(
2772
+ parsed.tagGroups,
2773
+ parsed.options["active-tag"],
2774
+ ctxTagOverride(ctx)
2775
+ ),
2776
+ exportMode: ctx.exportMode
2777
+ }
2778
+ );
2779
+ return finalizeSvgExport(container, theme, effectivePalette);
2780
+ }
2619
2781
  async function exportMindmap(ctx) {
2620
2782
  const { content, theme, palette, viewState, exportMode } = ctx;
2621
- const { parseMindmap } = await import("./parser-N5O4IHUN.js");
2622
- const { layoutMindmap } = await import("./layout-UM5F4DJB.js");
2783
+ const { parseMindmap } = await import("./parser-A2BEFMGK.js");
2784
+ const { layoutMindmap } = await import("./layout-T3OZU5QW.js");
2623
2785
  const { collapseMindmapTree } = await import("./collapse-SLINJQW6.js");
2624
- const { renderMindmap } = await import("./renderer-N43WR5GV.js");
2786
+ const { renderMindmap } = await import("./renderer-MGBWOCXG.js");
2625
2787
  const isDark = ctx.isDark;
2626
2788
  const effectivePalette = await resolveExportPalette(theme, palette);
2627
2789
  const mmParsed = parseMindmap(content, effectivePalette);
@@ -2671,9 +2833,9 @@ async function exportMindmap(ctx) {
2671
2833
  }
2672
2834
  async function exportWireframe(ctx) {
2673
2835
  const { content, theme, palette } = ctx;
2674
- const { parseWireframe } = await import("./parser-IXSZZQHY.js");
2675
- const { layoutWireframe } = await import("./layout-G23F7LDH.js");
2676
- const { renderWireframe } = await import("./renderer-QIWVHWZO.js");
2836
+ const { parseWireframe } = await import("./parser-PGMQDD4G.js");
2837
+ const { layoutWireframe } = await import("./layout-6RDJHS6E.js");
2838
+ const { renderWireframe } = await import("./renderer-DAXMXIKD.js");
2677
2839
  const effectivePalette = await resolveExportPalette(theme, palette);
2678
2840
  const wireframeParsed = parseWireframe(content);
2679
2841
  if (wireframeParsed.error || wireframeParsed.roots.length === 0 && wireframeParsed.modals.length === 0)
@@ -2696,14 +2858,14 @@ async function exportWireframe(ctx) {
2696
2858
  }
2697
2859
  async function exportC4(ctx) {
2698
2860
  const { content, theme, palette, viewState, exportMode } = ctx;
2699
- const { parseC4 } = await import("./parser-2EWECDSA.js");
2861
+ const { parseC4 } = await import("./parser-QYYM4QVW.js");
2700
2862
  const {
2701
2863
  layoutC4Context,
2702
2864
  layoutC4Containers,
2703
2865
  layoutC4Components,
2704
2866
  layoutC4Deployment
2705
- } = await import("./layout-5RA6QWR6.js");
2706
- const { renderC4Context, renderC4Containers } = await import("./renderer-4JHRUBE6.js");
2867
+ } = await import("./layout-WZHNDT2O.js");
2868
+ const { renderC4Context, renderC4Containers } = await import("./renderer-OOGFODWP.js");
2707
2869
  const effectivePalette = await resolveExportPalette(theme, palette);
2708
2870
  const c4Parsed = parseC4(content, effectivePalette);
2709
2871
  if (c4Parsed.error || c4Parsed.elements.length === 0) return "";
@@ -2737,9 +2899,9 @@ async function exportC4(ctx) {
2737
2899
  }
2738
2900
  async function exportFlowchart(ctx) {
2739
2901
  const { content, theme, palette } = ctx;
2740
- const { parseFlowchart } = await import("./flowchart-parser-ZNSKIBVR.js");
2741
- const { layoutGraph } = await import("./layout-HWDSRX5E.js");
2742
- const { renderFlowchart } = await import("./flowchart-renderer-SNDSII4D.js");
2902
+ const { parseFlowchart } = await import("./flowchart-parser-OE4WHLTF.js");
2903
+ const { layoutGraph } = await import("./layout-5BG6DFCU.js");
2904
+ const { renderFlowchart } = await import("./flowchart-renderer-GPCSMTOR.js");
2743
2905
  const effectivePalette = await resolveExportPalette(theme, palette);
2744
2906
  const fcParsed = parseFlowchart(content, effectivePalette);
2745
2907
  if (fcParsed.error || fcParsed.nodes.length === 0) return "";
@@ -2758,10 +2920,10 @@ async function exportFlowchart(ctx) {
2758
2920
  }
2759
2921
  async function exportInfra(ctx) {
2760
2922
  const { content, theme, palette, viewState } = ctx;
2761
- const { parseInfra } = await import("./parser-OV7NOBW6.js");
2923
+ const { parseInfra } = await import("./parser-O4QFCUW7.js");
2762
2924
  const { computeInfra } = await import("./compute-G55RG53N.js");
2763
- const { layoutInfra } = await import("./layout-7QXCNOVS.js");
2764
- const { renderInfra, computeInfraLegendGroups } = await import("./renderer-BYCNMBF7.js");
2925
+ const { layoutInfra } = await import("./layout-7H4H46CS.js");
2926
+ const { renderInfra, computeInfraLegendGroups } = await import("./renderer-BY533UWU.js");
2765
2927
  const effectivePalette = await resolveExportPalette(theme, palette);
2766
2928
  const infraParsed = parseInfra(content);
2767
2929
  if (infraParsed.error || infraParsed.nodes.length === 0) return "";
@@ -2808,10 +2970,10 @@ async function exportInfra(ctx) {
2808
2970
  }
2809
2971
  async function exportPert(ctx) {
2810
2972
  const { content, theme, palette, viewState } = ctx;
2811
- const { parsePert } = await import("./parser-3STE62GB.js");
2973
+ const { parsePert } = await import("./parser-Q4QKCIWQ.js");
2812
2974
  const { analyzePert } = await import("./analyzer-UYKBXAKR.js");
2813
- const { layoutPert } = await import("./layout-S2QBYSK2.js");
2814
- const { renderPert, measurePertAnalysisBlock } = await import("./renderer-AWWAF6XD.js");
2975
+ const { layoutPert } = await import("./layout-NXG63LWH.js");
2976
+ const { renderPert, measurePertAnalysisBlock } = await import("./renderer-INEXO7B6.js");
2815
2977
  const effectivePalette = await resolveExportPalette(theme, palette);
2816
2978
  const pertParsed = parsePert(content, { palette: effectivePalette });
2817
2979
  if (pertParsed.error || pertParsed.activities.length === 0) return "";
@@ -2849,9 +3011,9 @@ async function exportPert(ctx) {
2849
3011
  }
2850
3012
  async function exportGantt(ctx) {
2851
3013
  const { content, theme, palette, viewState, exportMode } = ctx;
2852
- const { parseGantt } = await import("./parser-AQETEVRW.js");
3014
+ const { parseGantt } = await import("./parser-ZSOWUBML.js");
2853
3015
  const { calculateSchedule } = await import("./calculator-LDYQCDDY.js");
2854
- const { renderGantt } = await import("./renderer-VACVQYML.js");
3016
+ const { renderGantt } = await import("./renderer-35HSIDMZ.js");
2855
3017
  const effectivePalette = await resolveExportPalette(theme, palette);
2856
3018
  const ganttParsed = parseGantt(content, effectivePalette);
2857
3019
  const resolved = calculateSchedule(ganttParsed);
@@ -2892,9 +3054,9 @@ async function exportGantt(ctx) {
2892
3054
  }
2893
3055
  async function exportState(ctx) {
2894
3056
  const { content, theme, palette, viewState } = ctx;
2895
- const { parseState } = await import("./state-parser-Z2V23ATR.js");
2896
- const { layoutGraph } = await import("./layout-HWDSRX5E.js");
2897
- const { renderState } = await import("./state-renderer-B4DQBM6M.js");
3057
+ const { parseState } = await import("./state-parser-3REXRK3R.js");
3058
+ const { layoutGraph } = await import("./layout-5BG6DFCU.js");
3059
+ const { renderState } = await import("./state-renderer-XYLNRWXR.js");
2898
3060
  const { collapseStateGroups } = await import("./state-collapse-HCGD6IVJ.js");
2899
3061
  const effectivePalette = await resolveExportPalette(theme, palette);
2900
3062
  const stateParsed = parseState(content, effectivePalette);
@@ -2931,8 +3093,8 @@ async function exportState(ctx) {
2931
3093
  }
2932
3094
  async function exportTechRadar(ctx) {
2933
3095
  const { content, theme, palette, viewState, exportMode } = ctx;
2934
- const { parseTechRadar } = await import("./parser-2MFP2H2E.js");
2935
- const { renderTechRadarForExport } = await import("./renderer-ZGNTUWC4.js");
3096
+ const { parseTechRadar } = await import("./parser-LWKKBNSA.js");
3097
+ const { renderTechRadarForExport } = await import("./renderer-HPGR6USK.js");
2936
3098
  const effectivePalette = await resolveExportPalette(theme, palette);
2937
3099
  const radarParsed = parseTechRadar(content);
2938
3100
  if (radarParsed.error || radarParsed.quadrants.length === 0) return "";
@@ -2952,9 +3114,9 @@ async function exportTechRadar(ctx) {
2952
3114
  }
2953
3115
  async function exportJourneyMap(ctx) {
2954
3116
  const { content, theme, palette, exportMode } = ctx;
2955
- const { parseJourneyMap } = await import("./parser-I6KXEYFK.js");
2956
- const { renderJourneyMap } = await import("./renderer-CLJHQPBJ.js");
2957
- const { layoutJourneyMap } = await import("./layout-HYZPWAK5.js");
3117
+ const { parseJourneyMap } = await import("./parser-I2UIJKVQ.js");
3118
+ const { renderJourneyMap } = await import("./renderer-67NPCBIS.js");
3119
+ const { layoutJourneyMap } = await import("./layout-QNUQLEHU.js");
2958
3120
  const effectivePalette = await resolveExportPalette(theme, palette);
2959
3121
  const jmParsed = parseJourneyMap(content, effectivePalette);
2960
3122
  if (jmParsed.error || jmParsed.phases.length === 0 && jmParsed.steps.length === 0)
@@ -2974,8 +3136,8 @@ async function exportJourneyMap(ctx) {
2974
3136
  }
2975
3137
  async function exportCycle(ctx) {
2976
3138
  const { content, theme, palette, viewState, exportMode } = ctx;
2977
- const { parseCycle } = await import("./parser-VQP2UJ6W.js");
2978
- const { renderCycleForExport } = await import("./renderer-Z7I3W2PP.js");
3139
+ const { parseCycle } = await import("./parser-DFFEDKHH.js");
3140
+ const { renderCycleForExport } = await import("./renderer-6RNGHC5Z.js");
2979
3141
  const effectivePalette = await resolveExportPalette(theme, palette);
2980
3142
  const cycleParsed = parseCycle(content);
2981
3143
  if (cycleParsed.error || cycleParsed.nodes.length === 0) return "";
@@ -2993,10 +3155,10 @@ async function exportCycle(ctx) {
2993
3155
  }
2994
3156
  async function exportMap(ctx) {
2995
3157
  const { content, theme, palette, options } = ctx;
2996
- const { parseMap } = await import("./parser-4FL2CMDG.js");
2997
- const { resolveMap } = await import("./resolver-NOAA7ID7.js");
2998
- const { renderMapForExport } = await import("./renderer-SMIBCRVB.js");
2999
- const { mapExportDimensions } = await import("./dimensions-J3FHIMJ6.js");
3158
+ const { parseMap } = await import("./parser-UQE5OWZI.js");
3159
+ const { resolveMap } = await import("./resolver-FHBCO3PL.js");
3160
+ const { renderMapForExport } = await import("./renderer-BBCEFILK.js");
3161
+ const { mapExportDimensions } = await import("./dimensions-P5FSX2QN.js");
3000
3162
  const effectivePalette = await resolveExportPalette(theme, palette);
3001
3163
  const mapParsed = parseMap(content, effectivePalette);
3002
3164
  let mapData = options?.mapData;
@@ -3028,8 +3190,8 @@ async function exportMap(ctx) {
3028
3190
  }
3029
3191
  async function exportPyramid(ctx) {
3030
3192
  const { content, theme, palette } = ctx;
3031
- const { parsePyramid } = await import("./parser-XKRP7QKP.js");
3032
- const { renderPyramidForExport } = await import("./renderer-KQB7UGDS.js");
3193
+ const { parsePyramid } = await import("./parser-YS7TOS2K.js");
3194
+ const { renderPyramidForExport } = await import("./renderer-7RH2SI3B.js");
3033
3195
  const effectivePalette = await resolveExportPalette(theme, palette);
3034
3196
  const pyramidParsed = parsePyramid(content);
3035
3197
  if (pyramidParsed.error || pyramidParsed.layers.length === 0) return "";
@@ -3045,8 +3207,8 @@ async function exportPyramid(ctx) {
3045
3207
  }
3046
3208
  async function exportRing(ctx) {
3047
3209
  const { content, theme, palette } = ctx;
3048
- const { parseRing } = await import("./parser-O5J4VBII.js");
3049
- const { renderRingForExport } = await import("./renderer-UV6MI64M.js");
3210
+ const { parseRing } = await import("./parser-IBWNAPY4.js");
3211
+ const { renderRingForExport } = await import("./renderer-HVCU2C3Z.js");
3050
3212
  const effectivePalette = await resolveExportPalette(theme, palette);
3051
3213
  const ringParsed = parseRing(content);
3052
3214
  if (ringParsed.error || ringParsed.layers.length === 0) return "";
@@ -3059,14 +3221,14 @@ async function exportRing(ctx) {
3059
3221
  }
3060
3222
  async function exportTreemap(ctx) {
3061
3223
  const { content, theme, palette } = ctx;
3062
- const { parseTreemap } = await import("./parser-CFZD5IBL.js");
3224
+ const { parseTreemap } = await import("./parser-ZTBATMLX.js");
3063
3225
  const effectivePalette = await resolveExportPalette(theme, palette);
3064
3226
  const treemapParsed = parseTreemap(content, effectivePalette);
3065
3227
  if (treemapParsed.error || treemapParsed.roots.length === 0) return "";
3066
3228
  const container = createExportContainer(EXPORT_WIDTH, EXPORT_HEIGHT);
3067
3229
  const dims = { width: EXPORT_WIDTH, height: EXPORT_HEIGHT };
3068
3230
  if (treemapParsed.options.radial) {
3069
- const { renderTreemapRadialForExport } = await import("./renderer-radial-C32GPJQ7.js");
3231
+ const { renderTreemapRadialForExport } = await import("./renderer-radial-JELMHQ24.js");
3070
3232
  renderTreemapRadialForExport(
3071
3233
  container,
3072
3234
  treemapParsed,
@@ -3075,7 +3237,7 @@ async function exportTreemap(ctx) {
3075
3237
  dims
3076
3238
  );
3077
3239
  } else {
3078
- const { renderTreemapForExport } = await import("./renderer-7MVLWWQD.js");
3240
+ const { renderTreemapForExport } = await import("./renderer-CXUC4KAD.js");
3079
3241
  renderTreemapForExport(
3080
3242
  container,
3081
3243
  treemapParsed,
@@ -3088,8 +3250,8 @@ async function exportTreemap(ctx) {
3088
3250
  }
3089
3251
  async function exportBlock(ctx) {
3090
3252
  const { content, theme, palette } = ctx;
3091
- const { parseBlock } = await import("./parser-4OGOBJJ4.js");
3092
- const { renderBlockForExport } = await import("./renderer-PGX2TKVS.js");
3253
+ const { parseBlock } = await import("./parser-RZMQP7MM.js");
3254
+ const { renderBlockForExport } = await import("./renderer-O4JKUGKO.js");
3093
3255
  const effectivePalette = await resolveExportPalette(theme, palette);
3094
3256
  const blockParsed = parseBlock(content, effectivePalette);
3095
3257
  if (blockParsed.error || blockParsed.top.rows.length === 0) return "";
@@ -3100,10 +3262,67 @@ async function exportBlock(ctx) {
3100
3262
  });
3101
3263
  return finalizeSvgExport(container, theme, effectivePalette);
3102
3264
  }
3265
+ async function exportGoal(ctx) {
3266
+ const { content, theme, palette } = ctx;
3267
+ const { parseGoal } = await import("./parser-B5FVS7O6.js");
3268
+ const { renderGoalForExport } = await import("./renderer-KY4KQBTF.js");
3269
+ const effectivePalette = await resolveExportPalette(theme, palette);
3270
+ const parsed = parseGoal(content, effectivePalette);
3271
+ if (parsed.error) return "";
3272
+ const container = createExportContainer(EXPORT_WIDTH, EXPORT_HEIGHT);
3273
+ renderGoalForExport(container, parsed, effectivePalette, ctx.isDark, {
3274
+ width: EXPORT_WIDTH,
3275
+ height: EXPORT_HEIGHT
3276
+ });
3277
+ return finalizeSvgExport(container, theme, effectivePalette);
3278
+ }
3279
+ async function exportCountdown(ctx) {
3280
+ const { content, theme, palette } = ctx;
3281
+ const { parseCountdown } = await import("./parser-CSFUN3CT.js");
3282
+ const { renderCountdownForExport } = await import("./renderer-G2NLGNKF.js");
3283
+ const effectivePalette = await resolveExportPalette(theme, palette);
3284
+ const parsed = parseCountdown(content, effectivePalette);
3285
+ if (parsed.error) return "";
3286
+ const container = createExportContainer(EXPORT_WIDTH, EXPORT_HEIGHT);
3287
+ renderCountdownForExport(container, parsed, effectivePalette, ctx.isDark, {
3288
+ width: EXPORT_WIDTH,
3289
+ height: EXPORT_HEIGHT
3290
+ });
3291
+ return finalizeSvgExport(container, theme, effectivePalette);
3292
+ }
3293
+ async function exportClock(ctx) {
3294
+ const { content, theme, palette } = ctx;
3295
+ const { parseClock } = await import("./parser-RZPVAQVX.js");
3296
+ const { renderClockForExport } = await import("./renderer-72LGR2YF.js");
3297
+ const effectivePalette = await resolveExportPalette(theme, palette);
3298
+ const parsed = parseClock(content, effectivePalette);
3299
+ if (parsed.error) return "";
3300
+ const container = createExportContainer(EXPORT_WIDTH, EXPORT_HEIGHT);
3301
+ renderClockForExport(container, parsed, effectivePalette, ctx.isDark, {
3302
+ width: EXPORT_WIDTH,
3303
+ height: EXPORT_HEIGHT
3304
+ });
3305
+ return finalizeSvgExport(container, theme, effectivePalette);
3306
+ }
3307
+ async function exportBracket(ctx) {
3308
+ const { content, theme, palette } = ctx;
3309
+ const { parseBracket } = await import("./parser-SOUJOEYI.js");
3310
+ const { renderBracketForExport, bracketExportDimensions } = await import("./renderer-ICJN2SA2.js");
3311
+ const effectivePalette = await resolveExportPalette(theme, palette);
3312
+ const parsed = parseBracket(content, effectivePalette);
3313
+ if (parsed.error) return "";
3314
+ const { width, height } = bracketExportDimensions(parsed, effectivePalette);
3315
+ const container = createExportContainer(width, height);
3316
+ renderBracketForExport(container, parsed, effectivePalette, ctx.isDark, {
3317
+ width,
3318
+ height
3319
+ });
3320
+ return finalizeSvgExport(container, theme, effectivePalette);
3321
+ }
3103
3322
  async function exportRaci(ctx) {
3104
3323
  const { content, theme, palette } = ctx;
3105
- const { parseRaci } = await import("./parser-Y6WTBU76.js");
3106
- const { renderRaciForExport } = await import("./renderer-5MYBMBYO.js");
3324
+ const { parseRaci } = await import("./parser-HYRTF3DO.js");
3325
+ const { renderRaciForExport } = await import("./renderer-4ITCHBT7.js");
3107
3326
  const effectivePalette = await resolveExportPalette(theme, palette);
3108
3327
  const raciParsed = parseRaci(content, effectivePalette);
3109
3328
  if (raciParsed.error) return "";
@@ -3235,8 +3454,8 @@ async function exportVisualization(ctx) {
3235
3454
  const effectivePalette = await resolveExportPalette(theme, palette);
3236
3455
  const isDark = ctx.isDark;
3237
3456
  const container = createExportContainer(EXPORT_WIDTH, EXPORT_HEIGHT);
3238
- const { parseSequenceDgmo } = await import("./parser-PQ3POX45.js");
3239
- const { renderSequenceDiagram } = await import("./renderer-6W5462RB.js");
3457
+ const { parseSequenceDgmo } = await import("./parser-KUQWRPIT.js");
3458
+ const { renderSequenceDiagram } = await import("./renderer-BZSBPTZJ.js");
3240
3459
  const seqParsed = parseSequenceDgmo(content, effectivePalette);
3241
3460
  if (seqParsed.error || seqParsed.participants.length === 0) return "";
3242
3461
  const collapsedSections = viewState?.cs ? new Set(viewState.cs) : void 0;
@@ -3272,6 +3491,7 @@ function escCssString(value) {
3272
3491
  if (ch === '"') out += '\\"';
3273
3492
  else if (ch === "\\") out += "\\\\";
3274
3493
  else if (ch === "<") out += "\\3c ";
3494
+ else if (ch === "&") out += "\\26 ";
3275
3495
  else if (code < 32 || code === 127)
3276
3496
  out += "\\" + code.toString(16) + " ";
3277
3497
  else out += ch;
@@ -3483,6 +3703,12 @@ var HOVER_SPECS = {
3483
3703
  groupAttrMode: "tag-active",
3484
3704
  legend: true
3485
3705
  },
3706
+ body: {
3707
+ markSelector: ".dgmo-body-part",
3708
+ strategy: "enumerated",
3709
+ groupAttrMode: "tag-active",
3710
+ legend: true
3711
+ },
3486
3712
  // ── Connection graph-family — edge endpoint attrs baked in the renderers ──
3487
3713
  // Hover a node → dim edges not incident to it. Node id ↔ edge from/to.
3488
3714
  flowchart: {
@@ -3512,6 +3738,15 @@ var HOVER_SPECS = {
3512
3738
  fromAttr: "data-from",
3513
3739
  toAttr: "data-to"
3514
3740
  },
3741
+ sketch: {
3742
+ markSelector: ".sk-node",
3743
+ strategy: "connection",
3744
+ hoverSelector: ".sk-node",
3745
+ hoverAttr: "data-node-id",
3746
+ edgeSelector: ".sk-edge-group",
3747
+ fromAttr: "data-from",
3748
+ toAttr: "data-to"
3749
+ },
3515
3750
  infra: {
3516
3751
  markSelector: ".infra-node",
3517
3752
  strategy: "connection",
@@ -3606,10 +3841,11 @@ var HOVER_SPECS = {
3606
3841
  emphasis: "dim",
3607
3842
  selfEmphasis: false
3608
3843
  },
3609
- // line: each series is a `g.dgmo-series` wrapping its line + data dots. The
3610
- // dots are hittable, so a structural rule dims other series when a point is
3611
- // hovered — no fat hit-path needed. (The plot-area hit overlay sits BEHIND
3612
- // the series, so dot hover still lands; verified in the browser e2e.)
3844
+ // line: each series is a `g.dgmo-series` wrapping its line + data dots + an
3845
+ // invisible fat hit corridor (`.dgmo-series-hit`, renderer-baked) — without
3846
+ // the corridor only the 2.5px stroke and 4px dots were hittable, so the
3847
+ // baked hover read as dead in embeds. Hovering anywhere along a line puts
3848
+ // its group into `:hover` and the other series dim.
3613
3849
  line: {
3614
3850
  markSelector: "g.dgmo-series",
3615
3851
  strategy: "structural",
@@ -3841,8 +4077,8 @@ async function render(content, options) {
3841
4077
  try {
3842
4078
  const [{ parseMap }, { resolveMap }, { loadMapData }] = await Promise.all(
3843
4079
  [
3844
- import("./parser-4FL2CMDG.js"),
3845
- import("./resolver-NOAA7ID7.js"),
4080
+ import("./parser-UQE5OWZI.js"),
4081
+ import("./resolver-FHBCO3PL.js"),
3846
4082
  import("./load-data-EHDDZ5ZS.js")
3847
4083
  ]
3848
4084
  );
@@ -3965,4 +4201,4 @@ export {
3965
4201
  encodeDiagramUrl,
3966
4202
  decodeDiagramUrl
3967
4203
  };
3968
- //# sourceMappingURL=chunk-PZMETGLY.js.map
4204
+ //# sourceMappingURL=chunk-NISQC5KW.js.map