@diagrammo/dgmo 0.88.0 → 0.90.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 (230) hide show
  1. package/README.md +5 -3
  2. package/dist/advanced.d.ts +472 -22
  3. package/dist/advanced.js +401 -240
  4. package/dist/{analyzer-R5UBTRO2.js → analyzer-7ZGAZIE6.js} +2 -2
  5. package/dist/block.d.ts +1 -1
  6. package/dist/block.js +95 -72
  7. package/dist/{calculator-35YVW4QO.js → calculator-PX3JHKAS.js} +2 -2
  8. package/dist/{chart-meta-PbgpGwYo.d.ts → chart-meta-B_WTMP0y.d.ts} +1 -1
  9. package/dist/chart-meta.d.ts +2 -2
  10. package/dist/chart-meta.js +22 -21
  11. package/dist/{chart-types-Db_EGf1o.d.ts → chart-types-V2NcgN5O.d.ts} +5 -1
  12. package/dist/{charts-d3-3BZRSZV6.js → charts-d3-QW4ERNUE.js} +13 -12
  13. package/dist/{chunk-O6MMQQLF.js → chunk-2EDJPHXQ.js} +17 -17
  14. package/dist/{chunk-7WGCQE2E.js → chunk-2ZVLI6GQ.js} +1 -1
  15. package/dist/{chunk-JLETTWUJ.js → chunk-3BQCSQQJ.js} +57 -28
  16. package/dist/{chunk-MVCPO6LI.js → chunk-3HBR3YAN.js} +37 -27
  17. package/dist/chunk-3UR4F7FE.js +14 -0
  18. package/dist/{chunk-IDJGV6VM.js → chunk-4HG4PYHM.js} +209 -1
  19. package/dist/{chunk-YMG7JDEY.js → chunk-4IYJOXGS.js} +78 -31
  20. package/dist/{chunk-BOO24UMJ.js → chunk-4YO7VJTP.js} +1 -1
  21. package/dist/{chunk-AAMCXQPP.js → chunk-54YUDXGP.js} +6 -6
  22. package/dist/{chunk-UG2XG57E.js → chunk-5M52RPAS.js} +2 -2
  23. package/dist/{chunk-UNAP6O26.js → chunk-5M6PMV5Z.js} +14 -14
  24. package/dist/{chunk-BMUWF77V.js → chunk-5MDQMB6A.js} +4 -4
  25. package/dist/{chunk-WPL5PFXE.js → chunk-5TZPIKNV.js} +5 -5
  26. package/dist/{chunk-VPASQOR3.js → chunk-62VWZ3SE.js} +6 -5
  27. package/dist/{chunk-N4XHXBDQ.js → chunk-64KSPLU2.js} +6 -5
  28. package/dist/{chunk-VEPIAUSK.js → chunk-6BQSDF77.js} +1 -5
  29. package/dist/{chunk-LNO3ASX5.js → chunk-A5EE66RQ.js} +2 -2
  30. package/dist/{chunk-5KGM44TG.js → chunk-A5PUOHIS.js} +4 -4
  31. package/dist/{chunk-UNNJCSSQ.js → chunk-AAC3XQWV.js} +3 -3
  32. package/dist/{chunk-VJ2KROJ5.js → chunk-AHWA36O7.js} +1 -1
  33. package/dist/{chunk-FKZ2Y3Q5.js → chunk-C4W62JZO.js} +2 -2
  34. package/dist/{chunk-6I5UN4FD.js → chunk-CDT33RHG.js} +4 -4
  35. package/dist/{chunk-3DOQOXXI.js → chunk-CNUN5GO6.js} +1 -1
  36. package/dist/{chunk-NF5YKFRH.js → chunk-COPSI54O.js} +3 -3
  37. package/dist/{chunk-GUTZCRBT.js → chunk-CUY56BK4.js} +2 -2
  38. package/dist/{chunk-HSRQDWV7.js → chunk-CYF2X3CG.js} +2 -11
  39. package/dist/{chunk-NGC3IZRY.js → chunk-DNMICILX.js} +2 -2
  40. package/dist/{chunk-CFBY77QJ.js → chunk-DXPT2HPH.js} +145 -156
  41. package/dist/{chunk-J7Q4VPBJ.js → chunk-EB7AEM2H.js} +28 -22
  42. package/dist/{chunk-MGBV4JEI.js → chunk-EDXGEQW3.js} +1 -1
  43. package/dist/{chunk-H2GEIFUF.js → chunk-EEYQFJVK.js} +154 -48
  44. package/dist/{chunk-FPXMCGS5.js → chunk-EK7JYFCL.js} +2 -2
  45. package/dist/{chunk-3C2FWS2J.js → chunk-EWERNTOX.js} +1 -1
  46. package/dist/{chunk-WZ23JJ7U.js → chunk-FDRHBQUG.js} +26 -24
  47. package/dist/{chunk-FJNXXGTR.js → chunk-FS2LZBHG.js} +2 -2
  48. package/dist/{chunk-ERNCPKD4.js → chunk-G2KHLANR.js} +1 -1
  49. package/dist/{chunk-XVSJYAK7.js → chunk-G5BGW4BX.js} +2 -2
  50. package/dist/{chunk-33FQ6HNV.js → chunk-GQVXYRPC.js} +9 -9
  51. package/dist/{chunk-MHAYUS65.js → chunk-GXP344YZ.js} +3 -3
  52. package/dist/{chunk-NJIGYGZS.js → chunk-GYBKG4Z6.js} +15 -10
  53. package/dist/{chunk-MSXRNVHB.js → chunk-HIVJBESO.js} +311 -72
  54. package/dist/{chunk-UY6TEJJH.js → chunk-HJRP6PXL.js} +1 -1
  55. package/dist/{chunk-DOXBS7F5.js → chunk-HLE5QGZJ.js} +4 -4
  56. package/dist/{chunk-L5AFONQU.js → chunk-HX2KJEPD.js} +1 -1
  57. package/dist/{chunk-LL6D3MES.js → chunk-I6FWHICD.js} +19 -19
  58. package/dist/{chunk-RH2PROYG.js → chunk-I6GGMCTV.js} +4 -2
  59. package/dist/{chunk-3RYBTEF5.js → chunk-I74AQRVD.js} +6 -12
  60. package/dist/{chunk-PLE2432T.js → chunk-ICYPGWOV.js} +3 -3
  61. package/dist/chunk-IHK3Y2HG.js +781 -0
  62. package/dist/{chunk-JD4RHBNX.js → chunk-IMHNZITR.js} +9 -9
  63. package/dist/{chunk-GUYVKGFN.js → chunk-IRVQT4GR.js} +3 -3
  64. package/dist/{chunk-XUDGZJTJ.js → chunk-J3ODKAWN.js} +8 -8
  65. package/dist/{chunk-UMRZPRAN.js → chunk-JRQ4LBQI.js} +20 -20
  66. package/dist/{chunk-MY6GUH26.js → chunk-JX4RCC6B.js} +2 -2
  67. package/dist/{chunk-DSG6GBUQ.js → chunk-K4GUO7FV.js} +8 -8
  68. package/dist/{chunk-HAH5X345.js → chunk-KATED53P.js} +1 -1
  69. package/dist/{chunk-J64NZ6NF.js → chunk-KSZHIAI2.js} +1 -1
  70. package/dist/{chunk-7HWY4QAJ.js → chunk-L24LESXF.js} +1 -0
  71. package/dist/{chunk-UIUXIDBX.js → chunk-LBRHDWEA.js} +5 -5
  72. package/dist/{chunk-GSYZZFI5.js → chunk-LC5LY5V2.js} +2 -2
  73. package/dist/{chunk-P5V63L35.js → chunk-LNQDICFJ.js} +22 -22
  74. package/dist/{chunk-PIXJL77H.js → chunk-M6J25PAZ.js} +1 -1
  75. package/dist/{chunk-RGI64U3A.js → chunk-MIVSVEK4.js} +14 -14
  76. package/dist/{chunk-6K7RODXG.js → chunk-MKFQ5E7J.js} +1 -1
  77. package/dist/{chunk-44GP7PD5.js → chunk-MPJQMMBZ.js} +12 -0
  78. package/dist/{chunk-WQ6G6FFM.js → chunk-NFWRIC2V.js} +1 -1
  79. package/dist/{chunk-LHL6HDUL.js → chunk-NJYA4QSN.js} +84 -12
  80. package/dist/{chunk-RU725VCJ.js → chunk-NMKLX57Y.js} +10 -35
  81. package/dist/{chunk-PPH6ILHL.js → chunk-NP2SE6MQ.js} +4 -4
  82. package/dist/{chunk-FM3WAVB6.js → chunk-NS7L7YKH.js} +1 -1
  83. package/dist/{chunk-HEYGGSNQ.js → chunk-NTJ5HVV6.js} +5 -5
  84. package/dist/{chunk-BAZT6CIF.js → chunk-NUYWNKHH.js} +9 -9
  85. package/dist/{chunk-DV2VEJCC.js → chunk-NWSPPGIE.js} +6 -6
  86. package/dist/{chunk-AYOVY75O.js → chunk-NY56FM55.js} +3 -3
  87. package/dist/{chunk-LD2JSKU3.js → chunk-OOCVGX4W.js} +15 -0
  88. package/dist/{chunk-A4XPI4YN.js → chunk-OSIUWQ3N.js} +29 -2
  89. package/dist/{chunk-LJFXC3IP.js → chunk-OWJVSJLA.js} +17 -17
  90. package/dist/{chunk-GDJW64XE.js → chunk-OYKNMFUY.js} +1 -1
  91. package/dist/{chunk-YK4N6TBN.js → chunk-PIHAUVA4.js} +10 -10
  92. package/dist/{chunk-C7QRRTAW.js → chunk-PNCKZFPE.js} +2 -2
  93. package/dist/{chunk-D4M25W6R.js → chunk-POBNN5DP.js} +6 -6
  94. package/dist/{chunk-N7XRBWXA.js → chunk-PQ5NW3QZ.js} +15 -15
  95. package/dist/{chunk-HTPZDZKQ.js → chunk-PXEUQ7EG.js} +22 -22
  96. package/dist/{chunk-XWYR5T52.js → chunk-QOZ4RVQY.js} +19 -19
  97. package/dist/{chunk-BV6PKJUS.js → chunk-QRIW46LR.js} +8 -8
  98. package/dist/{chunk-LSQGJN5H.js → chunk-R2PTZ6QM.js} +21 -21
  99. package/dist/{chunk-VW52W5F6.js → chunk-RCBHL2B5.js} +229 -159
  100. package/dist/{chunk-66YFDTT6.js → chunk-RJYFHEP4.js} +3 -3
  101. package/dist/{chunk-P3SKSKJI.js → chunk-RNXX2GOQ.js} +2 -2
  102. package/dist/{chunk-BT2WH2XT.js → chunk-RRBV4HIM.js} +3 -3
  103. package/dist/{chunk-WXPBP4IT.js → chunk-RY5RRKYN.js} +14 -14
  104. package/dist/{chunk-NZCSVD4M.js → chunk-S4LLHDGK.js} +8 -8
  105. package/dist/chunk-S7C32S2T.js +825 -0
  106. package/dist/{chunk-QFIXL3OK.js → chunk-SEKNYIMO.js} +1 -1
  107. package/dist/{chunk-JRUEIRJB.js → chunk-SLO22FPS.js} +2 -2
  108. package/dist/{chunk-47E5UTXE.js → chunk-SMEVBJJJ.js} +2 -2
  109. package/dist/{chunk-QFHWYWQL.js → chunk-SVQDLYX7.js} +1 -1
  110. package/dist/{chunk-WP2RLGDI.js → chunk-TCX5PMEY.js} +1 -1
  111. package/dist/{chunk-5LD7SHXO.js → chunk-TQ644YGV.js} +18 -18
  112. package/dist/{chunk-PUVTFUNH.js → chunk-U762HK4D.js} +28 -28
  113. package/dist/{chunk-DAX42XVH.js → chunk-VCHYS3RD.js} +14 -9
  114. package/dist/{chunk-XIFK423U.js → chunk-W7QN5BC5.js} +4 -4
  115. package/dist/{chunk-7UDAIP6W.js → chunk-WHRIN7N3.js} +1 -1
  116. package/dist/{chunk-ZUCXFXLD.js → chunk-X3WYJ5T7.js} +2 -2
  117. package/dist/{chunk-RE6TVIAV.js → chunk-X6IZP2BD.js} +4 -4
  118. package/dist/{chunk-LCJURK7L.js → chunk-Y6GQQ4Y2.js} +1 -1
  119. package/dist/{chunk-HTWH2XQL.js → chunk-YE7D2S75.js} +2 -2
  120. package/dist/{chunk-B7CU2HW5.js → chunk-YKGUSW6D.js} +17 -17
  121. package/dist/{chunk-AQIBKTPG.js → chunk-YWRZG6GN.js} +10 -10
  122. package/dist/{chunk-JQ57AWDL.js → chunk-ZJ4PYTCK.js} +1 -1
  123. package/dist/completion-registry.d.ts +7 -1
  124. package/dist/completion-registry.js +64 -20
  125. package/dist/countdown.js +1 -1
  126. package/dist/{d3-B6524aaP.d.ts → d3-2S3PrXik.d.ts} +11 -0
  127. package/dist/dgmo-router-BJBXSZMV.js +94 -0
  128. package/dist/{dimensions-6QAWEGIR.js → dimensions-AMA2S7RO.js} +7 -7
  129. package/dist/editor.js +12 -0
  130. package/dist/{flowchart-parser-GG7XBLQH.js → flowchart-parser-ADZIFVCH.js} +3 -3
  131. package/dist/{flowchart-renderer-THC6Y7EH.js → flowchart-renderer-CAG6ZNJ6.js} +10 -9
  132. package/dist/highlight.js +12 -0
  133. package/dist/index.d.ts +26 -5
  134. package/dist/index.js +94 -67
  135. package/dist/{layout-P6DTD4RT.js → layout-4RRC7XU7.js} +2 -2
  136. package/dist/{layout-LUQKAGGT.js → layout-6OSF2UGP.js} +5 -5
  137. package/dist/{layout-AM57TGN5.js → layout-C6MKMOBI.js} +3 -3
  138. package/dist/{layout-EHTYSMV4.js → layout-H4K54IW3.js} +2 -2
  139. package/dist/{layout-XUW444O5.js → layout-QS2SESBU.js} +3 -3
  140. package/dist/{layout-5NPBHV5F.js → layout-T2PGKQUQ.js} +4 -4
  141. package/dist/{layout-CUFA7XJD.js → layout-UFB2O4AO.js} +5 -5
  142. package/dist/{layout-MSSHF45T.js → layout-UPQGIT3N.js} +2 -2
  143. package/dist/{layout-QX5T6ZNE.js → layout-VQ2USZJ3.js} +5 -5
  144. package/dist/{layout-SOPAVXIH.js → layout-VRJ5YFUE.js} +3 -3
  145. package/dist/{layout-BOVTLAOT.js → layout-ZP7XYVXF.js} +2 -2
  146. package/dist/{layout-search-VKSBUCDM.js → layout-search-YKUL4VBV.js} +105 -6
  147. package/dist/{legend-constants-ZVO4FLAK.js → legend-constants-HE7FVDJP.js} +4 -2
  148. package/dist/{palettes-BIV54XLS.js → palettes-WQHELGVQ.js} +7 -4
  149. package/dist/{parser-KYPP2DX6.js → parser-223VOHSB.js} +4 -4
  150. package/dist/{parser-JOOAVBJI.js → parser-2PNV7UI3.js} +3 -3
  151. package/dist/{parser-GZ3LVF72.js → parser-3MGA2MTM.js} +2 -2
  152. package/dist/{parser-NOANDFJ4.js → parser-4AR25MAS.js} +2 -2
  153. package/dist/{parser-ACW6C6OY.js → parser-4B2PIXHI.js} +3 -3
  154. package/dist/{parser-KZMJNKDW.js → parser-57YQEEMC.js} +2 -2
  155. package/dist/{parser-J4DVNL4W.js → parser-5ZD2NKGU.js} +4 -4
  156. package/dist/{parser-LANGKWRG.js → parser-6LMB7BQQ.js} +2 -2
  157. package/dist/parser-AL6YL7KM.js +12 -0
  158. package/dist/{parser-5655XSOR.js → parser-B2FWP7ZO.js} +3 -3
  159. package/dist/{parser-GEKPWSSK.js → parser-BJDQX4KV.js} +3 -3
  160. package/dist/{parser-C327BBE3.js → parser-CA5WC5HF.js} +3 -3
  161. package/dist/{parser-KZMALSB2.js → parser-E5HFYL7B.js} +4 -4
  162. package/dist/{parser-WUK6CP5X.js → parser-ESZ5J5IJ.js} +6 -5
  163. package/dist/{parser-256EIWB2.js → parser-FDXUQ5TI.js} +2 -2
  164. package/dist/{parser-AN3MGHRL.js → parser-FV6RGALQ.js} +3 -3
  165. package/dist/{parser-DGF3ZEO6.js → parser-HPR7G7F6.js} +3 -3
  166. package/dist/{parser-OKB64MMN.js → parser-I4HZVIHX.js} +3 -3
  167. package/dist/{parser-JXS4426S.js → parser-J3BM2AP2.js} +4 -4
  168. package/dist/{parser-NPXPJHWN.js → parser-JFNDS5E5.js} +3 -3
  169. package/dist/{parser-PVIWHVGY.js → parser-KFIK3EOO.js} +3 -3
  170. package/dist/{parser-GPW4ZHPQ.js → parser-LGUT7KKH.js} +4 -3
  171. package/dist/{parser-KFYRTGTC.js → parser-MYRGCK7Q.js} +4 -4
  172. package/dist/{parser-ZLKYDFI5.js → parser-NAUUUCI3.js} +3 -3
  173. package/dist/{parser-DHSFIUPU.js → parser-NJ5VEZA3.js} +3 -3
  174. package/dist/{parser-OVQTTTUJ.js → parser-OFTMA36M.js} +2 -2
  175. package/dist/{parser-AKBVJHMK.js → parser-OV2WDSEV.js} +3 -3
  176. package/dist/{parser-LGS65QPN.js → parser-Q3UAOLEZ.js} +2 -2
  177. package/dist/{parser-XYY5NHP4.js → parser-R6OETHWM.js} +2 -2
  178. package/dist/{parser-7OEE7QT6.js → parser-RARXAHC7.js} +2 -2
  179. package/dist/{parser-NGHQQGD2.js → parser-T2RVIRDG.js} +3 -3
  180. package/dist/{parser-WEVTMBJ5.js → parser-W2DWCCLO.js} +3 -3
  181. package/dist/{parser-HCGXNHHL.js → parser-WFY4ZJUW.js} +3 -3
  182. package/dist/{parser-SA3RAJFS.js → parser-WSONWDFN.js} +2 -2
  183. package/dist/{renderer-2OOPQ4CH.js → renderer-3N64GVNM.js} +3 -3
  184. package/dist/{renderer-4BIMRO4X.js → renderer-3QM2DK7I.js} +7 -7
  185. package/dist/{renderer-4NZZ5J2F.js → renderer-3W5T3IU6.js} +8 -8
  186. package/dist/{renderer-RWJ45DWH.js → renderer-4Z7FRQ2A.js} +3 -3
  187. package/dist/{renderer-LODEVN3V.js → renderer-52CHSV6S.js} +13 -13
  188. package/dist/{renderer-X5A5VIRD.js → renderer-6OOJNEQE.js} +10 -10
  189. package/dist/{renderer-YDAVCRTP.js → renderer-A3PMPUO6.js} +15 -11
  190. package/dist/{renderer-NHPKNNBD.js → renderer-AM4VZSBQ.js} +11 -11
  191. package/dist/{renderer-SDUSBCJI.js → renderer-B3CPMS5R.js} +10 -10
  192. package/dist/{renderer-TPOZOAXR.js → renderer-B4KE3NM4.js} +17 -16
  193. package/dist/renderer-COSJM7UG.js +80 -0
  194. package/dist/{renderer-R34GJL7U.js → renderer-FXCVH2M5.js} +16 -15
  195. package/dist/{renderer-QM23SWAM.js → renderer-GWH5ACJ5.js} +4 -4
  196. package/dist/{renderer-222OTVQV.js → renderer-IG72UJHW.js} +5 -5
  197. package/dist/{renderer-A6ACVK4X.js → renderer-IO3D5E4E.js} +7 -7
  198. package/dist/{renderer-RMGN3Q7D.js → renderer-IPDCAACY.js} +5 -5
  199. package/dist/{renderer-XUPLAO4B.js → renderer-KK5BU5K2.js} +8 -8
  200. package/dist/{renderer-DCFQDBGJ.js → renderer-LD2H7WGP.js} +3 -3
  201. package/dist/{renderer-KVAQE7PQ.js → renderer-MK47ESCB.js} +8 -8
  202. package/dist/{renderer-4BHOELCE.js → renderer-MRMFYYZT.js} +3 -3
  203. package/dist/{renderer-6BUUTWVS.js → renderer-O5RQHGK2.js} +9 -9
  204. package/dist/{renderer-2KVQGGTT.js → renderer-OA5D3ZKB.js} +10 -10
  205. package/dist/{renderer-RENDISO5.js → renderer-ON4PTUHJ.js} +14 -14
  206. package/dist/{renderer-JKV2DBYP.js → renderer-OPDSKCQS.js} +7 -7
  207. package/dist/{renderer-XRALFCIN.js → renderer-PLRMST57.js} +10 -10
  208. package/dist/{renderer-WH2HWE5Z.js → renderer-PSMRAL72.js} +11 -11
  209. package/dist/{renderer-RNCYODNF.js → renderer-PXGCR7N4.js} +11 -10
  210. package/dist/{renderer-PQYO2HCE.js → renderer-R7OYCJEA.js} +4 -4
  211. package/dist/{renderer-36JH4OMC.js → renderer-SBXCPA3S.js} +12 -12
  212. package/dist/{renderer-A4LMOBZL.js → renderer-TMQNTUQS.js} +15 -15
  213. package/dist/renderer-TTKTBB4C.js +46 -0
  214. package/dist/{renderer-RAATRF6W.js → renderer-UVFGW2O6.js} +12 -10
  215. package/dist/{renderer-3FF4QVGW.js → renderer-W22GX72R.js} +10 -10
  216. package/dist/{renderer-BICLPGAH.js → renderer-WQ654YT5.js} +2 -2
  217. package/dist/{renderer-radial-XZ5TKUT4.js → renderer-radial-42LVSG74.js} +8 -8
  218. package/dist/{state-parser-FE3RF6XY.js → state-parser-ROKY5KSI.js} +4 -4
  219. package/dist/{state-renderer-5IQ4OJUI.js → state-renderer-MMG23G4W.js} +14 -14
  220. package/dist/{themes-CzuBdx1T.d.ts → themes-Cm2YBcT8.d.ts} +38 -2
  221. package/docs/ai-integration.md +8 -5
  222. package/docs/language-reference.md +163 -13
  223. package/gallery/fixtures/sketch.dgmo +2 -2
  224. package/gallery/fixtures/whiteboard.dgmo +18 -0
  225. package/package.json +2 -1
  226. package/dist/dgmo-router-F2DSURTR.js +0 -92
  227. package/dist/renderer-YIZ7G4HU.js +0 -78
  228. package/dist/{chunk-3TYUXC7D.js → chunk-2SKMEL7V.js} +0 -0
  229. package/dist/{chunk-CLQIXD2C.js → chunk-7Z2VFRP5.js} +3 -3
  230. package/dist/{chunk-2A4DQAXG.js → chunk-IIOLFAGJ.js} +3 -3
@@ -2,6 +2,9 @@ import {
2
2
  layoutBracket
3
3
  } from "./chunk-ABP5BUD6.js";
4
4
  import {
5
+ REGISTRY_BY_ID,
6
+ choosePalette,
7
+ extractPaletteDirective,
5
8
  getRenderCategory,
6
9
  parseArc,
7
10
  parseDgmo,
@@ -11,22 +14,25 @@ import {
11
14
  parseVenn,
12
15
  parseVisualization,
13
16
  parseWordcloud
14
- } from "./chunk-MSXRNVHB.js";
17
+ } from "./chunk-HIVJBESO.js";
15
18
  import {
16
19
  MAP_DX
17
20
  } from "./chunk-EOYPX6SF.js";
21
+ import {
22
+ parseCountdown
23
+ } from "./chunk-ZJ4PYTCK.js";
18
24
  import {
19
25
  parseClock
20
- } from "./chunk-WP2RLGDI.js";
26
+ } from "./chunk-TCX5PMEY.js";
21
27
  import {
22
28
  parseBracket
23
- } from "./chunk-ZUCXFXLD.js";
29
+ } from "./chunk-X3WYJ5T7.js";
24
30
  import {
25
31
  parseBody
26
- } from "./chunk-47E5UTXE.js";
32
+ } from "./chunk-SMEVBJJJ.js";
27
33
  import {
28
34
  renderDataChartD3
29
- } from "./chunk-H2GEIFUF.js";
35
+ } from "./chunk-EEYQFJVK.js";
30
36
  import {
31
37
  computeQuadrantPointLabels
32
38
  } from "./chunk-KMU65FYM.js";
@@ -37,10 +43,10 @@ import {
37
43
  parseHeatmap,
38
44
  parseSankey,
39
45
  parseScatter
40
- } from "./chunk-7UDAIP6W.js";
46
+ } from "./chunk-WHRIN7N3.js";
41
47
  import {
42
48
  renderTimeline
43
- } from "./chunk-JLETTWUJ.js";
49
+ } from "./chunk-3BQCSQQJ.js";
44
50
  import {
45
51
  ScaleContext
46
52
  } from "./chunk-24YPR5EH.js";
@@ -59,134 +65,134 @@ import {
59
65
  renderChartTitle,
60
66
  resolveExportPalette,
61
67
  showTooltip
62
- } from "./chunk-RE6TVIAV.js";
68
+ } from "./chunk-X6IZP2BD.js";
63
69
  import {
64
70
  legendInlineSupported
65
- } from "./chunk-3DOQOXXI.js";
71
+ } from "./chunk-CNUN5GO6.js";
66
72
  import {
67
73
  compactNumber
68
- } from "./chunk-FM3WAVB6.js";
74
+ } from "./chunk-NS7L7YKH.js";
69
75
  import {
70
76
  FONT_FAMILY
71
77
  } from "./chunk-ICLB27PZ.js";
78
+ import {
79
+ parseTechRadar
80
+ } from "./chunk-MKFQ5E7J.js";
72
81
  import {
73
82
  parseCycle
74
- } from "./chunk-WQ6G6FFM.js";
83
+ } from "./chunk-NFWRIC2V.js";
75
84
  import {
76
85
  parseJourneyMap
77
- } from "./chunk-NF5YKFRH.js";
86
+ } from "./chunk-COPSI54O.js";
78
87
  import {
79
88
  parsePyramid
80
- } from "./chunk-PIXJL77H.js";
89
+ } from "./chunk-M6J25PAZ.js";
81
90
  import {
82
91
  parseRing
83
- } from "./chunk-3C2FWS2J.js";
92
+ } from "./chunk-EWERNTOX.js";
84
93
  import {
85
94
  parseTreemap
86
- } from "./chunk-P3SKSKJI.js";
95
+ } from "./chunk-RNXX2GOQ.js";
87
96
  import {
88
97
  parseBlock
89
- } from "./chunk-MY6GUH26.js";
98
+ } from "./chunk-JX4RCC6B.js";
90
99
  import {
91
100
  isBlockNode
92
101
  } from "./chunk-XSVWUOUZ.js";
93
102
  import {
94
103
  parseGoal
95
- } from "./chunk-BOO24UMJ.js";
96
- import {
97
- parseCountdown
98
- } from "./chunk-JQ57AWDL.js";
104
+ } from "./chunk-4YO7VJTP.js";
99
105
  import {
100
106
  parseMap
101
- } from "./chunk-HTWH2XQL.js";
107
+ } from "./chunk-YE7D2S75.js";
102
108
  import {
103
109
  parseBoxesAndLines
104
- } from "./chunk-MHAYUS65.js";
110
+ } from "./chunk-GXP344YZ.js";
105
111
  import {
106
112
  parseSketch
107
- } from "./chunk-RU725VCJ.js";
113
+ } from "./chunk-NMKLX57Y.js";
114
+ import {
115
+ parseWhiteboard
116
+ } from "./chunk-IHK3Y2HG.js";
108
117
  import {
109
118
  parseSwimlane
110
- } from "./chunk-C7QRRTAW.js";
119
+ } from "./chunk-PNCKZFPE.js";
111
120
  import {
112
121
  parseFamily
113
- } from "./chunk-FKZ2Y3Q5.js";
122
+ } from "./chunk-C4W62JZO.js";
114
123
  import {
115
124
  parseMindmap
116
- } from "./chunk-NGC3IZRY.js";
117
- import {
118
- parseTechRadar
119
- } from "./chunk-6K7RODXG.js";
125
+ } from "./chunk-DNMICILX.js";
120
126
  import {
121
127
  parseEventLine
122
- } from "./chunk-66YFDTT6.js";
128
+ } from "./chunk-RJYFHEP4.js";
123
129
  import {
124
130
  parseTimelineDate
125
- } from "./chunk-GDJW64XE.js";
131
+ } from "./chunk-OYKNMFUY.js";
126
132
  import {
127
133
  parseVersionControl
128
- } from "./chunk-QFHWYWQL.js";
134
+ } from "./chunk-SVQDLYX7.js";
129
135
  import {
130
136
  parseKanban
131
- } from "./chunk-GUYVKGFN.js";
137
+ } from "./chunk-IRVQT4GR.js";
132
138
  import {
133
139
  parseC4
134
- } from "./chunk-GSYZZFI5.js";
140
+ } from "./chunk-LC5LY5V2.js";
135
141
  import {
136
142
  parseInfra
137
- } from "./chunk-GUTZCRBT.js";
143
+ } from "./chunk-CUY56BK4.js";
138
144
  import {
139
145
  parseGantt
140
- } from "./chunk-BAZT6CIF.js";
141
- import {
142
- measureText,
143
- wrapTextToWidth
144
- } from "./chunk-KAO7JL4I.js";
146
+ } from "./chunk-NUYWNKHH.js";
145
147
  import {
146
148
  parseRaci
147
- } from "./chunk-3RYBTEF5.js";
149
+ } from "./chunk-I74AQRVD.js";
148
150
  import {
149
151
  parsePert
150
- } from "./chunk-UNNJCSSQ.js";
152
+ } from "./chunk-AAC3XQWV.js";
151
153
  import {
152
154
  parseLiveLink
153
- } from "./chunk-7WGCQE2E.js";
155
+ } from "./chunk-2ZVLI6GQ.js";
156
+ import {
157
+ getPalette
158
+ } from "./chunk-4HG4PYHM.js";
154
159
  import {
155
160
  parseSequenceDgmo
156
- } from "./chunk-VPASQOR3.js";
161
+ } from "./chunk-62VWZ3SE.js";
157
162
  import {
158
163
  parseFlowchart
159
- } from "./chunk-JRUEIRJB.js";
164
+ } from "./chunk-SLO22FPS.js";
160
165
  import {
161
166
  parseState
162
- } from "./chunk-AYOVY75O.js";
167
+ } from "./chunk-NY56FM55.js";
163
168
  import {
164
169
  parseClassDiagram
165
- } from "./chunk-A4XPI4YN.js";
170
+ } from "./chunk-OSIUWQ3N.js";
166
171
  import {
167
172
  parseERDiagram
168
- } from "./chunk-WPL5PFXE.js";
173
+ } from "./chunk-5TZPIKNV.js";
169
174
  import {
170
175
  parseOrg
171
- } from "./chunk-FJNXXGTR.js";
176
+ } from "./chunk-FS2LZBHG.js";
172
177
  import {
173
178
  parseSitemap
174
- } from "./chunk-UG2XG57E.js";
179
+ } from "./chunk-5M52RPAS.js";
175
180
  import {
176
181
  parseWireframe
177
- } from "./chunk-HSRQDWV7.js";
182
+ } from "./chunk-CYF2X3CG.js";
178
183
  import {
179
184
  resolveActiveTagGroup,
180
185
  tagAttrKey
181
- } from "./chunk-L5AFONQU.js";
186
+ } from "./chunk-HX2KJEPD.js";
182
187
  import {
183
- getPalette
184
- } from "./chunk-IDJGV6VM.js";
188
+ measureText,
189
+ wrapTextToWidth
190
+ } from "./chunk-KAO7JL4I.js";
185
191
  import {
186
192
  getSeriesColors,
187
193
  mix,
188
194
  themeBaseBg
189
- } from "./chunk-7HWY4QAJ.js";
195
+ } from "./chunk-L24LESXF.js";
190
196
  import {
191
197
  emit,
192
198
  makeDgmoError
@@ -2022,6 +2028,7 @@ var DIAGRAM_EXPORT_HANDLERS = {
2022
2028
  er: exportEr,
2023
2029
  "boxes-and-lines": exportBoxesAndLines,
2024
2030
  sketch: exportSketch,
2031
+ whiteboard: exportWhiteboard,
2025
2032
  swimlane: exportSwimlane,
2026
2033
  family: exportFamily,
2027
2034
  "version-control": exportVersionControl,
@@ -2076,13 +2083,13 @@ function resolveArcChordOverride(content, detectedType, palette) {
2076
2083
  }
2077
2084
  async function renderForExport(content, theme, palette, viewState, options) {
2078
2085
  const exportMode = options?.exportMode ?? false;
2079
- const { parseDgmoChartType } = await import("./dgmo-router-F2DSURTR.js");
2086
+ const { parseDgmoChartType } = await import("./dgmo-router-BJBXSZMV.js");
2080
2087
  const detectedTypeRaw = parseDgmoChartType(content);
2081
2088
  const override = resolveArcChordOverride(content, detectedTypeRaw, palette);
2082
2089
  const renderContent = override?.content ?? content;
2083
2090
  const detectedType = override?.type ?? detectedTypeRaw;
2084
2091
  if (detectedType !== null) {
2085
- const { supportsD3DataChart, renderDataChartD3: renderDataChartD32 } = await import("./charts-d3-3BZRSZV6.js");
2092
+ const { supportsD3DataChart, renderDataChartD3: renderDataChartD32 } = await import("./charts-d3-QW4ERNUE.js");
2086
2093
  if (supportsD3DataChart(detectedType)) {
2087
2094
  return renderDataChartD32(renderContent, theme, palette, {
2088
2095
  ...options?.width !== void 0 && { width: options.width },
@@ -2115,8 +2122,8 @@ function ctxTagOverride(ctx) {
2115
2122
  }
2116
2123
  async function exportEventLine(ctx) {
2117
2124
  const { content, theme, palette } = ctx;
2118
- const { parseEventLine: parseEventLine2 } = await import("./parser-KFYRTGTC.js");
2119
- const { renderEventLineForExport } = await import("./renderer-TPOZOAXR.js");
2125
+ const { parseEventLine: parseEventLine2 } = await import("./parser-MYRGCK7Q.js");
2126
+ const { renderEventLineForExport } = await import("./renderer-B4KE3NM4.js");
2120
2127
  const effectivePalette = await resolveExportPalette(theme, palette);
2121
2128
  const parsed = parseEventLine2(content, effectivePalette);
2122
2129
  if (parsed.error || parsed.events.length === 0) return "";
@@ -2134,8 +2141,8 @@ async function exportEventLine(ctx) {
2134
2141
  }
2135
2142
  async function exportBody(ctx) {
2136
2143
  const { content, theme, palette } = ctx;
2137
- const { parseBody: parseBody2 } = await import("./parser-AKBVJHMK.js");
2138
- const { renderBodyForExport } = await import("./renderer-JKV2DBYP.js");
2144
+ const { parseBody: parseBody2 } = await import("./parser-OV2WDSEV.js");
2145
+ const { renderBodyForExport } = await import("./renderer-OPDSKCQS.js");
2139
2146
  const effectivePalette = await resolveExportPalette(theme, palette);
2140
2147
  const parsed = parseBody2(content, effectivePalette);
2141
2148
  if (parsed.error) return "";
@@ -2152,8 +2159,8 @@ async function exportBody(ctx) {
2152
2159
  }
2153
2160
  async function exportVersionControl(ctx) {
2154
2161
  const { content, theme, palette } = ctx;
2155
- const { parseVersionControl: parseVersionControl2 } = await import("./parser-KZMJNKDW.js");
2156
- const { renderVersionControlForExport } = await import("./renderer-BICLPGAH.js");
2162
+ const { parseVersionControl: parseVersionControl2 } = await import("./parser-57YQEEMC.js");
2163
+ const { renderVersionControlForExport } = await import("./renderer-WQ654YT5.js");
2157
2164
  const effectivePalette = await resolveExportPalette(theme, palette);
2158
2165
  const parsed = parseVersionControl2(content, effectivePalette);
2159
2166
  if (parsed.error || parsed.nodes.length === 0) return "";
@@ -2177,10 +2184,10 @@ function unionHiddenAttributes(hideOption, ha) {
2177
2184
  }
2178
2185
  async function exportOrg(ctx) {
2179
2186
  const { content, theme, palette, viewState, exportMode } = ctx;
2180
- const { parseOrg: parseOrg2, findOrgNodeIdByName } = await import("./parser-JOOAVBJI.js");
2181
- const { layoutOrg } = await import("./layout-QX5T6ZNE.js");
2187
+ const { parseOrg: parseOrg2, findOrgNodeIdByName } = await import("./parser-2PNV7UI3.js");
2188
+ const { layoutOrg } = await import("./layout-VQ2USZJ3.js");
2182
2189
  const { collapseOrgTree, focusOrgTree, unionCollapsedOrgNodes } = await import("./collapse-JRGPUE67.js");
2183
- const { renderOrg, ancestorTrailReserve } = await import("./renderer-36JH4OMC.js");
2190
+ const { renderOrg, ancestorTrailReserve } = await import("./renderer-SBXCPA3S.js");
2184
2191
  const isDark = ctx.isDark;
2185
2192
  const effectivePalette = await resolveExportPalette(theme, palette);
2186
2193
  const orgParsed = parseOrg2(content, effectivePalette);
@@ -2241,10 +2248,10 @@ async function exportOrg(ctx) {
2241
2248
  }
2242
2249
  async function exportSitemap(ctx) {
2243
2250
  const { content, theme, palette, viewState, exportMode } = ctx;
2244
- const { parseSitemap: parseSitemap2 } = await import("./parser-OKB64MMN.js");
2245
- const { layoutSitemap } = await import("./layout-LUQKAGGT.js");
2251
+ const { parseSitemap: parseSitemap2 } = await import("./parser-I4HZVIHX.js");
2252
+ const { layoutSitemap } = await import("./layout-6OSF2UGP.js");
2246
2253
  const { collapseSitemapTree } = await import("./collapse-ZWUFFCK2.js");
2247
- const { renderSitemap } = await import("./renderer-WH2HWE5Z.js");
2254
+ const { renderSitemap } = await import("./renderer-PSMRAL72.js");
2248
2255
  const isDark = ctx.isDark;
2249
2256
  const effectivePalette = await resolveExportPalette(theme, palette);
2250
2257
  const sitemapParsed = parseSitemap2(content, effectivePalette);
@@ -2272,7 +2279,7 @@ async function exportSitemap(ctx) {
2272
2279
  const {
2273
2280
  LEGEND_HEIGHT: SITEMAP_LEGEND_HEIGHT,
2274
2281
  LEGEND_GROUP_GAP: SITEMAP_LEGEND_GROUP_GAP
2275
- } = await import("./legend-constants-ZVO4FLAK.js");
2282
+ } = await import("./legend-constants-HE7FVDJP.js");
2276
2283
  const suppressedLegendBand = sitemapLayout.legend.length > 0 && effectiveParsed.options["no-legend"] === "on" ? SITEMAP_LEGEND_HEIGHT + SITEMAP_LEGEND_GROUP_GAP : 0;
2277
2284
  const exportWidth = sitemapLayout.width + PADDING * 2;
2278
2285
  const exportHeight = sitemapLayout.height + PADDING * 2 + titleOffset - suppressedLegendBand;
@@ -2293,8 +2300,8 @@ async function exportSitemap(ctx) {
2293
2300
  }
2294
2301
  async function exportKanban(ctx) {
2295
2302
  const { content, theme, palette, viewState, exportMode } = ctx;
2296
- const { parseKanban: parseKanban2 } = await import("./parser-ACW6C6OY.js");
2297
- const { renderKanban } = await import("./renderer-3FF4QVGW.js");
2303
+ const { parseKanban: parseKanban2 } = await import("./parser-4B2PIXHI.js");
2304
+ const { renderKanban } = await import("./renderer-W22GX72R.js");
2298
2305
  const effectivePalette = await resolveExportPalette(theme, palette);
2299
2306
  const kanbanParsed = parseKanban2(content, effectivePalette);
2300
2307
  if (kanbanParsed.error || kanbanParsed.columns.length === 0) return "";
@@ -2325,9 +2332,9 @@ async function exportKanban(ctx) {
2325
2332
  }
2326
2333
  async function exportClass(ctx) {
2327
2334
  const { content, theme, palette, exportMode } = ctx;
2328
- const { parseClassDiagram: parseClassDiagram2 } = await import("./parser-GPW4ZHPQ.js");
2329
- const { layoutClassDiagram } = await import("./layout-P6DTD4RT.js");
2330
- const { renderClassDiagram } = await import("./renderer-A4LMOBZL.js");
2335
+ const { parseClassDiagram: parseClassDiagram2 } = await import("./parser-LGUT7KKH.js");
2336
+ const { layoutClassDiagram } = await import("./layout-4RRC7XU7.js");
2337
+ const { renderClassDiagram } = await import("./renderer-TMQNTUQS.js");
2331
2338
  const effectivePalette = await resolveExportPalette(theme, palette);
2332
2339
  const classParsed = parseClassDiagram2(content, effectivePalette);
2333
2340
  if (classParsed.error || classParsed.classes.length === 0) return "";
@@ -2352,9 +2359,9 @@ async function exportClass(ctx) {
2352
2359
  }
2353
2360
  async function exportEr(ctx) {
2354
2361
  const { content, theme, palette, viewState, exportMode } = ctx;
2355
- const { parseERDiagram: parseERDiagram2 } = await import("./parser-J4DVNL4W.js");
2356
- const { layoutERDiagram } = await import("./layout-EHTYSMV4.js");
2357
- const { renderERDiagram } = await import("./renderer-R34GJL7U.js");
2362
+ const { parseERDiagram: parseERDiagram2 } = await import("./parser-5ZD2NKGU.js");
2363
+ const { layoutERDiagram } = await import("./layout-H4K54IW3.js");
2364
+ const { renderERDiagram } = await import("./renderer-FXCVH2M5.js");
2358
2365
  const effectivePalette = await resolveExportPalette(theme, palette);
2359
2366
  const erParsed = parseERDiagram2(content, effectivePalette);
2360
2367
  if (erParsed.error || erParsed.tables.length === 0) return "";
@@ -2386,14 +2393,14 @@ async function exportEr(ctx) {
2386
2393
  }
2387
2394
  async function exportSketch(ctx) {
2388
2395
  const { content, theme, viewState, exportMode } = ctx;
2389
- const { parseSketch: parseSketch2 } = await import("./parser-KZMALSB2.js");
2396
+ const { parseSketch: parseSketch2 } = await import("./parser-E5HFYL7B.js");
2390
2397
  const effectivePalette = await resolveExportPalette(theme, ctx.palette);
2391
2398
  const parsed = parseSketch2(content, effectivePalette);
2392
2399
  if (parsed.error || parsed.nodes.length === 0 && parsed.boxes.length === 0) {
2393
2400
  return "";
2394
2401
  }
2395
- const { layoutSketch } = await import("./layout-MSSHF45T.js");
2396
- const { renderSketchForExport } = await import("./renderer-RAATRF6W.js");
2402
+ const { layoutSketch } = await import("./layout-UPQGIT3N.js");
2403
+ const { renderSketchForExport } = await import("./renderer-UVFGW2O6.js");
2397
2404
  const collapsedBoxes = viewState?.cg ? new Set(viewState.cg) : void 0;
2398
2405
  const skLayout = layoutSketch(parsed, {
2399
2406
  ...collapsedBoxes !== void 0 && { collapsedBoxes }
@@ -2418,9 +2425,25 @@ async function exportSketch(ctx) {
2418
2425
  );
2419
2426
  return finalizeSvgExport(container, theme, effectivePalette);
2420
2427
  }
2428
+ async function exportWhiteboard(ctx) {
2429
+ const { content, theme } = ctx;
2430
+ const { parseWhiteboard: parseWhiteboard2 } = await import("./parser-AL6YL7KM.js");
2431
+ const effectivePalette = await resolveExportPalette(theme, ctx.palette);
2432
+ const parsed = parseWhiteboard2(content, effectivePalette);
2433
+ if (parsed.error || parsed.elements.length === 0) return "";
2434
+ const { renderWhiteboard } = await import("./renderer-TTKTBB4C.js");
2435
+ const container = createExportContainer(1, 1);
2436
+ const resolveImage = ctx.options?.resolveImage;
2437
+ const showNotes = ctx.options?.showNotes;
2438
+ renderWhiteboard(container, parsed, effectivePalette, ctx.isDark, {
2439
+ ...resolveImage !== void 0 && { resolveImage },
2440
+ ...showNotes !== void 0 && { showNotes }
2441
+ });
2442
+ return finalizeSvgExport(container, theme, effectivePalette);
2443
+ }
2421
2444
  async function exportBoxesAndLines(ctx) {
2422
2445
  const { content, theme, palette, viewState, exportMode } = ctx;
2423
- const { parseBoxesAndLines: parseBoxesAndLines2 } = await import("./parser-KYPP2DX6.js");
2446
+ const { parseBoxesAndLines: parseBoxesAndLines2 } = await import("./parser-223VOHSB.js");
2424
2447
  const effectivePalette = await resolveExportPalette(theme, palette);
2425
2448
  const blParsed = parseBoxesAndLines2(content, effectivePalette);
2426
2449
  if (blParsed.error || blParsed.nodes.length === 0) return "";
@@ -2431,8 +2454,8 @@ async function exportBoxesAndLines(ctx) {
2431
2454
  blHiddenTagValues.set(k, new Set(v));
2432
2455
  }
2433
2456
  }
2434
- const { renderBoxesAndLinesForExport } = await import("./renderer-X5A5VIRD.js");
2435
- const { layoutBoxesAndLines } = await import("./layout-BOVTLAOT.js");
2457
+ const { renderBoxesAndLinesForExport } = await import("./renderer-6OOJNEQE.js");
2458
+ const { layoutBoxesAndLines } = await import("./layout-ZP7XYVXF.js");
2436
2459
  const blLayout = await layoutBoxesAndLines(blParsed);
2437
2460
  const PADDING = 20;
2438
2461
  const titleOffset = blParsed.title ? 40 : 0;
@@ -2461,9 +2484,9 @@ async function exportBoxesAndLines(ctx) {
2461
2484
  }
2462
2485
  async function exportSwimlane(ctx) {
2463
2486
  const { content, theme, palette } = ctx;
2464
- const { parseSwimlane: parseSwimlane2 } = await import("./parser-ZLKYDFI5.js");
2487
+ const { parseSwimlane: parseSwimlane2 } = await import("./parser-NAUUUCI3.js");
2465
2488
  const { layoutSwimlane } = await import("./layout-RANVNAKI.js");
2466
- const { renderSwimlaneForExport } = await import("./renderer-QM23SWAM.js");
2489
+ const { renderSwimlaneForExport } = await import("./renderer-GWH5ACJ5.js");
2467
2490
  const effectivePalette = await resolveExportPalette(theme, palette);
2468
2491
  const swimParsed = parseSwimlane2(content, effectivePalette);
2469
2492
  if (swimParsed.error || swimParsed.nodes.length === 0) return "";
@@ -2493,9 +2516,9 @@ async function exportSwimlane(ctx) {
2493
2516
  }
2494
2517
  async function exportFamily(ctx) {
2495
2518
  const { content, theme, palette } = ctx;
2496
- const { parseFamily: parseFamily2 } = await import("./parser-NPXPJHWN.js");
2519
+ const { parseFamily: parseFamily2 } = await import("./parser-JFNDS5E5.js");
2497
2520
  const { layoutFamily } = await import("./layout-5VSMZPMG.js");
2498
- const { renderFamilyForExport } = await import("./renderer-4NZZ5J2F.js");
2521
+ const { renderFamilyForExport } = await import("./renderer-3W5T3IU6.js");
2499
2522
  const effectivePalette = await resolveExportPalette(theme, palette);
2500
2523
  const parsed = parseFamily2(content, effectivePalette);
2501
2524
  if (parsed.error || parsed.persons.size === 0) return "";
@@ -2525,10 +2548,10 @@ async function exportFamily(ctx) {
2525
2548
  }
2526
2549
  async function exportMindmap(ctx) {
2527
2550
  const { content, theme, palette, viewState, exportMode } = ctx;
2528
- const { parseMindmap: parseMindmap2 } = await import("./parser-NGHQQGD2.js");
2529
- const { layoutMindmap } = await import("./layout-5NPBHV5F.js");
2551
+ const { parseMindmap: parseMindmap2 } = await import("./parser-T2RVIRDG.js");
2552
+ const { layoutMindmap } = await import("./layout-T2PGKQUQ.js");
2530
2553
  const { collapseMindmapTree } = await import("./collapse-SLINJQW6.js");
2531
- const { renderMindmap } = await import("./renderer-LODEVN3V.js");
2554
+ const { renderMindmap } = await import("./renderer-52CHSV6S.js");
2532
2555
  const isDark = ctx.isDark;
2533
2556
  const effectivePalette = await resolveExportPalette(theme, palette);
2534
2557
  const mmParsed = parseMindmap2(content, effectivePalette);
@@ -2578,9 +2601,9 @@ async function exportMindmap(ctx) {
2578
2601
  }
2579
2602
  async function exportWireframe(ctx) {
2580
2603
  const { content, theme, palette } = ctx;
2581
- const { parseWireframe: parseWireframe2 } = await import("./parser-HCGXNHHL.js");
2604
+ const { parseWireframe: parseWireframe2 } = await import("./parser-WFY4ZJUW.js");
2582
2605
  const { layoutWireframe } = await import("./layout-UIV56NUA.js");
2583
- const { renderWireframe } = await import("./renderer-RWJ45DWH.js");
2606
+ const { renderWireframe } = await import("./renderer-4Z7FRQ2A.js");
2584
2607
  const effectivePalette = await resolveExportPalette(theme, palette);
2585
2608
  const wireframeParsed = parseWireframe2(content);
2586
2609
  if (wireframeParsed.error || wireframeParsed.roots.length === 0 && wireframeParsed.modals.length === 0)
@@ -2603,14 +2626,14 @@ async function exportWireframe(ctx) {
2603
2626
  }
2604
2627
  async function exportC4(ctx) {
2605
2628
  const { content, theme, palette, viewState, exportMode } = ctx;
2606
- const { parseC4: parseC42 } = await import("./parser-WEVTMBJ5.js");
2629
+ const { parseC4: parseC42 } = await import("./parser-W2DWCCLO.js");
2607
2630
  const {
2608
2631
  layoutC4Context,
2609
2632
  layoutC4Containers,
2610
2633
  layoutC4Components,
2611
2634
  layoutC4Deployment
2612
- } = await import("./layout-CUFA7XJD.js");
2613
- const { renderC4Context, renderC4Containers } = await import("./renderer-YDAVCRTP.js");
2635
+ } = await import("./layout-UFB2O4AO.js");
2636
+ const { renderC4Context, renderC4Containers } = await import("./renderer-A3PMPUO6.js");
2614
2637
  const effectivePalette = await resolveExportPalette(theme, palette);
2615
2638
  const c4Parsed = parseC42(content, effectivePalette);
2616
2639
  if (c4Parsed.error || c4Parsed.elements.length === 0) return "";
@@ -2644,9 +2667,9 @@ async function exportC4(ctx) {
2644
2667
  }
2645
2668
  async function exportFlowchart(ctx) {
2646
2669
  const { content, theme, palette } = ctx;
2647
- const { parseFlowchart: parseFlowchart2 } = await import("./flowchart-parser-GG7XBLQH.js");
2648
- const { layoutGraph } = await import("./layout-XUW444O5.js");
2649
- const { renderFlowchart } = await import("./flowchart-renderer-THC6Y7EH.js");
2670
+ const { parseFlowchart: parseFlowchart2 } = await import("./flowchart-parser-ADZIFVCH.js");
2671
+ const { layoutGraph } = await import("./layout-QS2SESBU.js");
2672
+ const { renderFlowchart } = await import("./flowchart-renderer-CAG6ZNJ6.js");
2650
2673
  const effectivePalette = await resolveExportPalette(theme, palette);
2651
2674
  const fcParsed = parseFlowchart2(content, effectivePalette);
2652
2675
  if (fcParsed.error || fcParsed.nodes.length === 0) return "";
@@ -2665,10 +2688,10 @@ async function exportFlowchart(ctx) {
2665
2688
  }
2666
2689
  async function exportInfra(ctx) {
2667
2690
  const { content, theme, palette, viewState } = ctx;
2668
- const { parseInfra: parseInfra2 } = await import("./parser-DGF3ZEO6.js");
2691
+ const { parseInfra: parseInfra2 } = await import("./parser-HPR7G7F6.js");
2669
2692
  const { computeInfra } = await import("./compute-JAP5E2E4.js");
2670
2693
  const { layoutInfra } = await import("./layout-SW3XWYKC.js");
2671
- const { renderInfra, computeInfraLegendGroups } = await import("./renderer-SDUSBCJI.js");
2694
+ const { renderInfra, computeInfraLegendGroups } = await import("./renderer-B3CPMS5R.js");
2672
2695
  const effectivePalette = await resolveExportPalette(theme, palette);
2673
2696
  const infraParsed = parseInfra2(content);
2674
2697
  if (infraParsed.error || infraParsed.nodes.length === 0) return "";
@@ -2715,10 +2738,10 @@ async function exportInfra(ctx) {
2715
2738
  }
2716
2739
  async function exportPert(ctx) {
2717
2740
  const { content, theme, palette, viewState } = ctx;
2718
- const { parsePert: parsePert2 } = await import("./parser-JXS4426S.js");
2719
- const { analyzePert } = await import("./analyzer-R5UBTRO2.js");
2720
- const { layoutPert } = await import("./layout-AM57TGN5.js");
2721
- const { renderPert, measurePertAnalysisBlock } = await import("./renderer-RENDISO5.js");
2741
+ const { parsePert: parsePert2 } = await import("./parser-J3BM2AP2.js");
2742
+ const { analyzePert } = await import("./analyzer-7ZGAZIE6.js");
2743
+ const { layoutPert } = await import("./layout-C6MKMOBI.js");
2744
+ const { renderPert, measurePertAnalysisBlock } = await import("./renderer-ON4PTUHJ.js");
2722
2745
  const effectivePalette = await resolveExportPalette(theme, palette);
2723
2746
  const pertParsed = parsePert2(content, { palette: effectivePalette });
2724
2747
  if (pertParsed.error || pertParsed.activities.length === 0) return "";
@@ -2761,9 +2784,9 @@ async function exportPert(ctx) {
2761
2784
  }
2762
2785
  async function exportGantt(ctx) {
2763
2786
  const { content, theme, palette, viewState, exportMode } = ctx;
2764
- const { parseGantt: parseGantt2 } = await import("./parser-WUK6CP5X.js");
2765
- const { calculateSchedule } = await import("./calculator-35YVW4QO.js");
2766
- const { renderGantt } = await import("./renderer-RNCYODNF.js");
2787
+ const { parseGantt: parseGantt2 } = await import("./parser-ESZ5J5IJ.js");
2788
+ const { calculateSchedule } = await import("./calculator-PX3JHKAS.js");
2789
+ const { renderGantt } = await import("./renderer-PXGCR7N4.js");
2767
2790
  const effectivePalette = await resolveExportPalette(theme, palette);
2768
2791
  const ganttParsed = parseGantt2(content, effectivePalette);
2769
2792
  const resolved = calculateSchedule(ganttParsed);
@@ -2804,9 +2827,9 @@ async function exportGantt(ctx) {
2804
2827
  }
2805
2828
  async function exportState(ctx) {
2806
2829
  const { content, theme, palette, viewState } = ctx;
2807
- const { parseState: parseState2 } = await import("./state-parser-FE3RF6XY.js");
2808
- const { layoutGraph } = await import("./layout-XUW444O5.js");
2809
- const { renderState } = await import("./state-renderer-5IQ4OJUI.js");
2830
+ const { parseState: parseState2 } = await import("./state-parser-ROKY5KSI.js");
2831
+ const { layoutGraph } = await import("./layout-QS2SESBU.js");
2832
+ const { renderState } = await import("./state-renderer-MMG23G4W.js");
2810
2833
  const { collapseStateGroups } = await import("./state-collapse-HCGD6IVJ.js");
2811
2834
  const effectivePalette = await resolveExportPalette(theme, palette);
2812
2835
  const stateParsed = parseState2(content, effectivePalette);
@@ -2843,8 +2866,8 @@ async function exportState(ctx) {
2843
2866
  }
2844
2867
  async function exportTechRadar(ctx) {
2845
2868
  const { content, theme, palette, viewState, exportMode } = ctx;
2846
- const { parseTechRadar: parseTechRadar2 } = await import("./parser-NOANDFJ4.js");
2847
- const { renderTechRadarForExport } = await import("./renderer-A6ACVK4X.js");
2869
+ const { parseTechRadar: parseTechRadar2 } = await import("./parser-4AR25MAS.js");
2870
+ const { renderTechRadarForExport } = await import("./renderer-IO3D5E4E.js");
2848
2871
  const effectivePalette = await resolveExportPalette(theme, palette);
2849
2872
  const radarParsed = parseTechRadar2(content);
2850
2873
  if (radarParsed.error || radarParsed.quadrants.length === 0) return "";
@@ -2864,9 +2887,9 @@ async function exportTechRadar(ctx) {
2864
2887
  }
2865
2888
  async function exportJourneyMap(ctx) {
2866
2889
  const { content, theme, palette, exportMode } = ctx;
2867
- const { parseJourneyMap: parseJourneyMap2 } = await import("./parser-C327BBE3.js");
2868
- const { renderJourneyMap } = await import("./renderer-NHPKNNBD.js");
2869
- const { layoutJourneyMap } = await import("./layout-SOPAVXIH.js");
2890
+ const { parseJourneyMap: parseJourneyMap2 } = await import("./parser-CA5WC5HF.js");
2891
+ const { renderJourneyMap } = await import("./renderer-AM4VZSBQ.js");
2892
+ const { layoutJourneyMap } = await import("./layout-VRJ5YFUE.js");
2870
2893
  const effectivePalette = await resolveExportPalette(theme, palette);
2871
2894
  const jmParsed = parseJourneyMap2(content, effectivePalette);
2872
2895
  if (jmParsed.error || jmParsed.phases.length === 0 && jmParsed.steps.length === 0)
@@ -2886,8 +2909,8 @@ async function exportJourneyMap(ctx) {
2886
2909
  }
2887
2910
  async function exportCycle(ctx) {
2888
2911
  const { content, theme, palette, viewState, exportMode } = ctx;
2889
- const { parseCycle: parseCycle2 } = await import("./parser-7OEE7QT6.js");
2890
- const { renderCycleForExport } = await import("./renderer-4BIMRO4X.js");
2912
+ const { parseCycle: parseCycle2 } = await import("./parser-RARXAHC7.js");
2913
+ const { renderCycleForExport } = await import("./renderer-3QM2DK7I.js");
2891
2914
  const effectivePalette = await resolveExportPalette(theme, palette);
2892
2915
  const cycleParsed = parseCycle2(content);
2893
2916
  if (cycleParsed.error || cycleParsed.nodes.length === 0) return "";
@@ -2905,10 +2928,10 @@ async function exportCycle(ctx) {
2905
2928
  }
2906
2929
  async function exportMap(ctx) {
2907
2930
  const { content, theme, palette, options } = ctx;
2908
- const { parseMap: parseMap2 } = await import("./parser-GEKPWSSK.js");
2931
+ const { parseMap: parseMap2 } = await import("./parser-BJDQX4KV.js");
2909
2932
  const { resolveMap } = await import("./resolver-XSXE2TRX.js");
2910
- const { renderMapForExport } = await import("./renderer-XRALFCIN.js");
2911
- const { mapExportDimensions } = await import("./dimensions-6QAWEGIR.js");
2933
+ const { renderMapForExport } = await import("./renderer-PLRMST57.js");
2934
+ const { mapExportDimensions } = await import("./dimensions-AMA2S7RO.js");
2912
2935
  const effectivePalette = await resolveExportPalette(theme, palette);
2913
2936
  const mapParsed = parseMap2(content, effectivePalette);
2914
2937
  const { data: mapData, reason } = await resolveMapDataSource(
@@ -2941,8 +2964,8 @@ async function exportMap(ctx) {
2941
2964
  }
2942
2965
  async function exportPyramid(ctx) {
2943
2966
  const { content, theme, palette } = ctx;
2944
- const { parsePyramid: parsePyramid2 } = await import("./parser-OVQTTTUJ.js");
2945
- const { renderPyramidForExport } = await import("./renderer-4BHOELCE.js");
2967
+ const { parsePyramid: parsePyramid2 } = await import("./parser-OFTMA36M.js");
2968
+ const { renderPyramidForExport } = await import("./renderer-MRMFYYZT.js");
2946
2969
  const effectivePalette = await resolveExportPalette(theme, palette);
2947
2970
  const pyramidParsed = parsePyramid2(content);
2948
2971
  if (pyramidParsed.error || pyramidParsed.layers.length === 0) return "";
@@ -2958,8 +2981,8 @@ async function exportPyramid(ctx) {
2958
2981
  }
2959
2982
  async function exportRing(ctx) {
2960
2983
  const { content, theme, palette } = ctx;
2961
- const { parseRing: parseRing2 } = await import("./parser-GZ3LVF72.js");
2962
- const { renderRingForExport } = await import("./renderer-2OOPQ4CH.js");
2984
+ const { parseRing: parseRing2 } = await import("./parser-3MGA2MTM.js");
2985
+ const { renderRingForExport } = await import("./renderer-3N64GVNM.js");
2963
2986
  const effectivePalette = await resolveExportPalette(theme, palette);
2964
2987
  const ringParsed = parseRing2(content);
2965
2988
  if (ringParsed.error || ringParsed.layers.length === 0) return "";
@@ -2972,14 +2995,14 @@ async function exportRing(ctx) {
2972
2995
  }
2973
2996
  async function exportTreemap(ctx) {
2974
2997
  const { content, theme, palette } = ctx;
2975
- const { parseTreemap: parseTreemap2 } = await import("./parser-AN3MGHRL.js");
2998
+ const { parseTreemap: parseTreemap2 } = await import("./parser-FV6RGALQ.js");
2976
2999
  const effectivePalette = await resolveExportPalette(theme, palette);
2977
3000
  const treemapParsed = parseTreemap2(content, effectivePalette);
2978
3001
  if (treemapParsed.error || treemapParsed.roots.length === 0) return "";
2979
3002
  const container = createExportContainer(ctx.width, ctx.height);
2980
3003
  const dims = { width: ctx.width, height: ctx.height };
2981
3004
  if (treemapParsed.options.radial) {
2982
- const { renderTreemapRadialForExport } = await import("./renderer-radial-XZ5TKUT4.js");
3005
+ const { renderTreemapRadialForExport } = await import("./renderer-radial-42LVSG74.js");
2983
3006
  renderTreemapRadialForExport(
2984
3007
  container,
2985
3008
  treemapParsed,
@@ -2988,7 +3011,7 @@ async function exportTreemap(ctx) {
2988
3011
  dims
2989
3012
  );
2990
3013
  } else {
2991
- const { renderTreemapForExport } = await import("./renderer-6BUUTWVS.js");
3014
+ const { renderTreemapForExport } = await import("./renderer-O5RQHGK2.js");
2992
3015
  renderTreemapForExport(
2993
3016
  container,
2994
3017
  treemapParsed,
@@ -3001,15 +3024,15 @@ async function exportTreemap(ctx) {
3001
3024
  }
3002
3025
  async function exportLiveLink(ctx) {
3003
3026
  const { content, theme, palette } = ctx;
3004
- const { parseLiveLink: parseLiveLink2 } = await import("./parser-XYY5NHP4.js");
3005
- const { renderLiveLinkCard } = await import("./renderer-YIZ7G4HU.js");
3027
+ const { parseLiveLink: parseLiveLink2 } = await import("./parser-R6OETHWM.js");
3028
+ const { renderLiveLinkCard } = await import("./renderer-COSJM7UG.js");
3006
3029
  const effectivePalette = await resolveExportPalette(theme, palette);
3007
3030
  return renderLiveLinkCard(parseLiveLink2(content), effectivePalette, theme);
3008
3031
  }
3009
3032
  async function exportBlock(ctx) {
3010
3033
  const { content, theme, palette } = ctx;
3011
- const { parseBlock: parseBlock2 } = await import("./parser-5655XSOR.js");
3012
- const { renderBlockForExport } = await import("./renderer-KVAQE7PQ.js");
3034
+ const { parseBlock: parseBlock2 } = await import("./parser-B2FWP7ZO.js");
3035
+ const { renderBlockForExport } = await import("./renderer-MK47ESCB.js");
3013
3036
  const effectivePalette = await resolveExportPalette(theme, palette);
3014
3037
  const blockParsed = parseBlock2(content, effectivePalette);
3015
3038
  if (blockParsed.error || blockParsed.top.rows.length === 0) return "";
@@ -3022,8 +3045,8 @@ async function exportBlock(ctx) {
3022
3045
  }
3023
3046
  async function exportGoal(ctx) {
3024
3047
  const { content, theme, palette } = ctx;
3025
- const { parseGoal: parseGoal2 } = await import("./parser-SA3RAJFS.js");
3026
- const { renderGoalForExport } = await import("./renderer-222OTVQV.js");
3048
+ const { parseGoal: parseGoal2 } = await import("./parser-WSONWDFN.js");
3049
+ const { renderGoalForExport } = await import("./renderer-IG72UJHW.js");
3027
3050
  const effectivePalette = await resolveExportPalette(theme, palette);
3028
3051
  const parsed = parseGoal2(content, effectivePalette);
3029
3052
  if (parsed.error) return "";
@@ -3036,8 +3059,8 @@ async function exportGoal(ctx) {
3036
3059
  }
3037
3060
  async function exportCountdown(ctx) {
3038
3061
  const { content, theme, palette } = ctx;
3039
- const { parseCountdown: parseCountdown2 } = await import("./parser-LGS65QPN.js");
3040
- const { renderCountdownForExport } = await import("./renderer-DCFQDBGJ.js");
3062
+ const { parseCountdown: parseCountdown2 } = await import("./parser-Q3UAOLEZ.js");
3063
+ const { renderCountdownForExport } = await import("./renderer-LD2H7WGP.js");
3041
3064
  const effectivePalette = await resolveExportPalette(theme, palette);
3042
3065
  const parsed = parseCountdown2(content, effectivePalette);
3043
3066
  if (parsed.error) return "";
@@ -3050,8 +3073,8 @@ async function exportCountdown(ctx) {
3050
3073
  }
3051
3074
  async function exportClock(ctx) {
3052
3075
  const { content, theme, palette } = ctx;
3053
- const { parseClock: parseClock2 } = await import("./parser-256EIWB2.js");
3054
- const { renderClockForExport } = await import("./renderer-PQYO2HCE.js");
3076
+ const { parseClock: parseClock2 } = await import("./parser-FDXUQ5TI.js");
3077
+ const { renderClockForExport } = await import("./renderer-R7OYCJEA.js");
3055
3078
  const effectivePalette = await resolveExportPalette(theme, palette);
3056
3079
  const parsed = parseClock2(content, effectivePalette);
3057
3080
  if (parsed.error) return "";
@@ -3064,8 +3087,8 @@ async function exportClock(ctx) {
3064
3087
  }
3065
3088
  async function exportBracket(ctx) {
3066
3089
  const { content, theme, palette } = ctx;
3067
- const { parseBracket: parseBracket2 } = await import("./parser-DHSFIUPU.js");
3068
- const { renderBracketForExport, bracketExportDimensions } = await import("./renderer-XUPLAO4B.js");
3090
+ const { parseBracket: parseBracket2 } = await import("./parser-NJ5VEZA3.js");
3091
+ const { renderBracketForExport, bracketExportDimensions } = await import("./renderer-KK5BU5K2.js");
3069
3092
  const effectivePalette = await resolveExportPalette(theme, palette);
3070
3093
  const parsed = parseBracket2(content, effectivePalette);
3071
3094
  if (parsed.error) return "";
@@ -3079,8 +3102,8 @@ async function exportBracket(ctx) {
3079
3102
  }
3080
3103
  async function exportRaci(ctx) {
3081
3104
  const { content, theme, palette } = ctx;
3082
- const { parseRaci: parseRaci2 } = await import("./parser-LANGKWRG.js");
3083
- const { renderRaciForExport } = await import("./renderer-RMGN3Q7D.js");
3105
+ const { parseRaci: parseRaci2 } = await import("./parser-6LMB7BQQ.js");
3106
+ const { renderRaciForExport } = await import("./renderer-IPDCAACY.js");
3084
3107
  const effectivePalette = await resolveExportPalette(theme, palette);
3085
3108
  const raciParsed = parseRaci2(content, effectivePalette);
3086
3109
  if (raciParsed.error) return "";
@@ -3212,8 +3235,8 @@ async function exportVisualization(ctx) {
3212
3235
  const effectivePalette = await resolveExportPalette(theme, palette);
3213
3236
  const isDark = ctx.isDark;
3214
3237
  const container = createExportContainer(ctx.width, ctx.height);
3215
- const { parseSequenceDgmo: parseSequenceDgmo2 } = await import("./parser-PVIWHVGY.js");
3216
- const { renderSequenceDiagram } = await import("./renderer-2KVQGGTT.js");
3238
+ const { parseSequenceDgmo: parseSequenceDgmo2 } = await import("./parser-KFIK3EOO.js");
3239
+ const { renderSequenceDiagram } = await import("./renderer-OA5D3ZKB.js");
3217
3240
  const seqParsed = parseSequenceDgmo2(content, effectivePalette);
3218
3241
  if (seqParsed.error || seqParsed.participants.length === 0) return "";
3219
3242
  const collapsedSections = viewState?.cs ? new Set(viewState.cs) : void 0;
@@ -3809,13 +3832,14 @@ function injectHoverStyles(svg, chartType, opts) {
3809
3832
  }
3810
3833
 
3811
3834
  // src/utils/root-a11y.ts
3812
- function applyRootA11y(svg, chartType) {
3835
+ function applyRootA11y(svg, chartType, title) {
3813
3836
  if (!chartType) return svg;
3814
3837
  const m = svg.match(/<svg\b[^>]*>/);
3815
3838
  if (!m) return svg;
3816
3839
  const rootTag = m[0];
3817
3840
  if (/\brole=/.test(rootTag) || /\baria-label=/.test(rootTag)) return svg;
3818
- const label = `${chartType.charAt(0).toUpperCase()}${chartType.slice(1)} diagram`;
3841
+ const typeLabel = `${chartType.charAt(0).toUpperCase()}${chartType.slice(1)} diagram`;
3842
+ const label = title ? `${title} \u2014 ${typeLabel}` : typeLabel;
3819
3843
  const withA11y = rootTag.replace(
3820
3844
  /^<svg\b/,
3821
3845
  `<svg role="img" aria-label="${escapeAttr(label)}"`
@@ -4068,6 +4092,22 @@ function summarizeSketch(content) {
4068
4092
  const names = parsed.nodes.map((n) => n.label);
4069
4093
  return `Sketch of ${namedCount(names, "shape", "shapes")}, with ${plural(parsed.edges.length, "connection", "connections")}.`;
4070
4094
  }
4095
+ function summarizeWhiteboard(content) {
4096
+ const parsed = parseWhiteboard(content);
4097
+ if (parsed.error) return null;
4098
+ const names = [];
4099
+ let strokes = 0;
4100
+ let images = 0;
4101
+ for (const el of parsed.elements) {
4102
+ if (el.kind === "shape" && el.label)
4103
+ names.push(el.label.replace(/\n+/g, " "));
4104
+ else if ((el.kind === "text" || el.kind === "note") && el.text)
4105
+ names.push(el.text.replace(/\n+/g, " "));
4106
+ else if (el.kind === "ink") strokes++;
4107
+ else if (el.kind === "image") images++;
4108
+ }
4109
+ return `Whiteboard with ${namedCount(names, "labelled item", "labelled items")}, ${plural(strokes, "ink stroke", "ink strokes")} and ${plural(images, "image", "images")}.`;
4110
+ }
4071
4111
  function summarizeSwimlane(content) {
4072
4112
  const parsed = parseSwimlane(content);
4073
4113
  if (parsed.error) return null;
@@ -4501,6 +4541,7 @@ var SUMMARIZERS = {
4501
4541
  pert: summarizePert,
4502
4542
  "boxes-and-lines": summarizeBoxesAndLines,
4503
4543
  sketch: summarizeSketch,
4544
+ whiteboard: summarizeWhiteboard,
4504
4545
  swimlane: summarizeSwimlane,
4505
4546
  family: summarizeFamily,
4506
4547
  "version-control": summarizeVersionControl,
@@ -4546,6 +4587,13 @@ function summarizeDiagram(content, chartType) {
4546
4587
  }
4547
4588
 
4548
4589
  // src/render.ts
4590
+ function diagramTitle(content, chartType) {
4591
+ const parse = chartType ? REGISTRY_BY_ID.get(chartType)?.parse : void 0;
4592
+ if (!parse) return null;
4593
+ const model = parse(content);
4594
+ const title = chartType === "gantt" ? model.options?.title : model.title;
4595
+ return typeof title === "string" && title.trim() ? title.trim() : null;
4596
+ }
4549
4597
  var DOM_GLOBALS = [
4550
4598
  "document",
4551
4599
  "window",
@@ -4563,11 +4611,17 @@ function domState() {
4563
4611
  };
4564
4612
  }
4565
4613
  async function installDom(state) {
4566
- const { JSDOM } = await loadJsdom();
4567
- const dom = new JSDOM("<!DOCTYPE html><html><body></body></html>", {
4568
- url: "http://localhost/"
4569
- });
4570
- const win = dom.window;
4614
+ let win = state.window;
4615
+ if (win) {
4616
+ win.document.head.replaceChildren();
4617
+ win.document.body.replaceChildren();
4618
+ } else {
4619
+ const { JSDOM } = await loadJsdom();
4620
+ win = new JSDOM("<!DOCTYPE html><html><body></body></html>", {
4621
+ url: "http://localhost/"
4622
+ }).window;
4623
+ state.window = win;
4624
+ }
4571
4625
  const values = {
4572
4626
  document: win.document,
4573
4627
  window: win,
@@ -4609,13 +4663,21 @@ async function loadJsdom() {
4609
4663
  spec
4610
4664
  );
4611
4665
  }
4612
- async function render(content, options) {
4613
- const theme = options?.theme ?? "light";
4614
- const paletteName = options?.palette ?? "slate";
4666
+ async function render(source, options) {
4667
+ const directive = extractPaletteDirective(source);
4668
+ const content = directive.content;
4669
+ const chosen = choosePalette(directive, {
4670
+ ...options?.palette !== void 0 && { palette: options.palette },
4671
+ ...options?.paletteOverride !== void 0 && {
4672
+ paletteOverride: options.paletteOverride
4673
+ },
4674
+ ...options?.theme !== void 0 && { theme: options.theme }
4675
+ });
4676
+ const theme = chosen.theme;
4615
4677
  const bakeHover = options?.bakeHover ?? true;
4616
- const paletteColors = getPalette(paletteName)[theme === "dark" ? "dark" : "light"];
4678
+ const paletteColors = (chosen.palette ?? getPalette(chosen.paletteId))[theme === "dark" ? "dark" : "light"];
4617
4679
  const parsed = parseDgmo(content);
4618
- let diagnostics = parsed.diagnostics;
4680
+ let diagnostics = [...directive.diagnostics, ...parsed.diagnostics];
4619
4681
  const acOverride = resolveArcChordOverride(
4620
4682
  content,
4621
4683
  parsed.chartType,
@@ -4670,7 +4732,8 @@ async function render(content, options) {
4670
4732
  const svg2 = applyRootDesc(
4671
4733
  applyRootA11y(
4672
4734
  injectHoverStyles(raw, chartType, { bakeHover }),
4673
- chartType
4735
+ chartType,
4736
+ diagramTitle(content, parsed.chartType)
4674
4737
  ),
4675
4738
  // The AUTHORED source and type: an arc `layout chord` is re-emitted
4676
4739
  // above as internal `chord` content, which no summarizer reads.
@@ -4707,6 +4770,12 @@ async function render(content, options) {
4707
4770
  ...options?.mapData !== void 0 && { mapData: options.mapData },
4708
4771
  ...options?.width !== void 0 && { width: options.width },
4709
4772
  ...options?.height !== void 0 && { height: options.height },
4773
+ ...options?.resolveImage !== void 0 && {
4774
+ resolveImage: options.resolveImage
4775
+ },
4776
+ ...options?.showNotes !== void 0 && {
4777
+ showNotes: options.showNotes
4778
+ },
4710
4779
  onMapResolverDiagnostics: (d) => {
4711
4780
  mapDiag.current = d;
4712
4781
  }
@@ -4715,7 +4784,8 @@ async function render(content, options) {
4715
4784
  svg = applyRootDesc(
4716
4785
  applyRootA11y(
4717
4786
  injectHoverStyles(svg, chartType, { bakeHover }),
4718
- chartType
4787
+ chartType,
4788
+ diagramTitle(content, parsed.chartType)
4719
4789
  ),
4720
4790
  summarizeDiagram(content, parsed.chartType)
4721
4791
  );
@@ -4723,7 +4793,7 @@ async function render(content, options) {
4723
4793
  releaseDom();
4724
4794
  }
4725
4795
  if (chartType === "map" && mapDiag.current) {
4726
- diagnostics = [...mapDiag.current];
4796
+ diagnostics = [...directive.diagnostics, ...mapDiag.current];
4727
4797
  }
4728
4798
  return {
4729
4799
  svg,