@diagrammo/dgmo 0.89.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 (208) hide show
  1. package/README.md +1 -1
  2. package/dist/advanced.d.ts +435 -15
  3. package/dist/advanced.js +356 -197
  4. package/dist/block.d.ts +1 -1
  5. package/dist/block.js +86 -63
  6. package/dist/{calculator-35YVW4QO.js → calculator-PX3JHKAS.js} +2 -2
  7. package/dist/{chart-meta-Bev5Ebjr.d.ts → chart-meta-B_WTMP0y.d.ts} +1 -1
  8. package/dist/chart-meta.d.ts +2 -2
  9. package/dist/chart-meta.js +17 -16
  10. package/dist/{chart-types-Bf8C5QQW.d.ts → chart-types-V2NcgN5O.d.ts} +4 -0
  11. package/dist/{charts-d3-KEQSUWKP.js → charts-d3-QW4ERNUE.js} +8 -7
  12. package/dist/{chunk-ECMA6XE2.js → chunk-2EDJPHXQ.js} +9 -9
  13. package/dist/{chunk-7WGCQE2E.js → chunk-2ZVLI6GQ.js} +1 -1
  14. package/dist/{chunk-UWKRPQZO.js → chunk-3BQCSQQJ.js} +16 -13
  15. package/dist/{chunk-7C2RAGPT.js → chunk-3HBR3YAN.js} +12 -12
  16. package/dist/chunk-3UR4F7FE.js +14 -0
  17. package/dist/{chunk-NIUO2TNR.js → chunk-4HG4PYHM.js} +197 -203
  18. package/dist/{chunk-NSR2CGV6.js → chunk-4IYJOXGS.js} +10 -10
  19. package/dist/{chunk-BOO24UMJ.js → chunk-4YO7VJTP.js} +1 -1
  20. package/dist/{chunk-YMFQLWZ2.js → chunk-54YUDXGP.js} +1 -1
  21. package/dist/{chunk-UG2XG57E.js → chunk-5M52RPAS.js} +2 -2
  22. package/dist/{chunk-QIOYTQDZ.js → chunk-5M6PMV5Z.js} +9 -9
  23. package/dist/{chunk-S2WE7TVK.js → chunk-5MDQMB6A.js} +1 -1
  24. package/dist/{chunk-WPL5PFXE.js → chunk-5TZPIKNV.js} +5 -5
  25. package/dist/{chunk-LFKSHDVI.js → chunk-62VWZ3SE.js} +5 -4
  26. package/dist/{chunk-PMNITNPR.js → chunk-64KSPLU2.js} +2 -1
  27. package/dist/{chunk-VEPIAUSK.js → chunk-6BQSDF77.js} +1 -5
  28. package/dist/{chunk-HUNDJTTH.js → chunk-A5EE66RQ.js} +1 -1
  29. package/dist/{chunk-JVZ7KFAX.js → chunk-AAC3XQWV.js} +2 -2
  30. package/dist/{chunk-7KPHRTND.js → chunk-AHWA36O7.js} +1 -1
  31. package/dist/{chunk-FKZ2Y3Q5.js → chunk-C4W62JZO.js} +2 -2
  32. package/dist/{chunk-C4FRGZGX.js → chunk-CDT33RHG.js} +1 -1
  33. package/dist/{chunk-B3S76BZO.js → chunk-COPSI54O.js} +3 -3
  34. package/dist/{chunk-GUTZCRBT.js → chunk-CUY56BK4.js} +2 -2
  35. package/dist/{chunk-HSRQDWV7.js → chunk-CYF2X3CG.js} +2 -11
  36. package/dist/{chunk-NGC3IZRY.js → chunk-DNMICILX.js} +2 -2
  37. package/dist/{chunk-N4BBSDWI.js → chunk-DXPT2HPH.js} +140 -151
  38. package/dist/{chunk-TAP2NZEU.js → chunk-EB7AEM2H.js} +13 -13
  39. package/dist/{chunk-3AQJNY65.js → chunk-EEYQFJVK.js} +149 -43
  40. package/dist/{chunk-SLQT3JP3.js → chunk-EK7JYFCL.js} +1 -1
  41. package/dist/{chunk-3C2FWS2J.js → chunk-EWERNTOX.js} +1 -1
  42. package/dist/{chunk-4AJKOUBO.js → chunk-FDRHBQUG.js} +17 -15
  43. package/dist/{chunk-FJNXXGTR.js → chunk-FS2LZBHG.js} +2 -2
  44. package/dist/{chunk-LPYYZCSI.js → chunk-G5BGW4BX.js} +1 -1
  45. package/dist/{chunk-IQ6P3HDE.js → chunk-GQVXYRPC.js} +2 -2
  46. package/dist/{chunk-MHAYUS65.js → chunk-GXP344YZ.js} +3 -3
  47. package/dist/{chunk-HAMF4F3P.js → chunk-GYBKG4Z6.js} +5 -5
  48. package/dist/{chunk-Q6SQISHT.js → chunk-HIVJBESO.js} +306 -68
  49. package/dist/{chunk-ID2K3IHI.js → chunk-HLE5QGZJ.js} +1 -1
  50. package/dist/{chunk-L5AFONQU.js → chunk-HX2KJEPD.js} +1 -1
  51. package/dist/{chunk-SOPM5PLO.js → chunk-I6FWHICD.js} +13 -13
  52. package/dist/{chunk-3RYBTEF5.js → chunk-I74AQRVD.js} +6 -12
  53. package/dist/{chunk-NRPELUB6.js → chunk-ICYPGWOV.js} +2 -2
  54. package/dist/chunk-IHK3Y2HG.js +781 -0
  55. package/dist/{chunk-RXIKESRI.js → chunk-IMHNZITR.js} +2 -2
  56. package/dist/{chunk-DPSMX4EY.js → chunk-IRVQT4GR.js} +3 -3
  57. package/dist/{chunk-AZ24RI5L.js → chunk-J3ODKAWN.js} +2 -2
  58. package/dist/{chunk-BB6QKWHZ.js → chunk-JRQ4LBQI.js} +10 -10
  59. package/dist/{chunk-MY6GUH26.js → chunk-JX4RCC6B.js} +2 -2
  60. package/dist/{chunk-XUCQVKLQ.js → chunk-K4GUO7FV.js} +4 -4
  61. package/dist/{chunk-J64NZ6NF.js → chunk-KSZHIAI2.js} +1 -1
  62. package/dist/{chunk-CUYHST3B.js → chunk-LBRHDWEA.js} +1 -1
  63. package/dist/{chunk-GSYZZFI5.js → chunk-LC5LY5V2.js} +2 -2
  64. package/dist/{chunk-WP22MHH6.js → chunk-LNQDICFJ.js} +9 -9
  65. package/dist/{chunk-PIXJL77H.js → chunk-M6J25PAZ.js} +1 -1
  66. package/dist/{chunk-UQLHKLF4.js → chunk-MIVSVEK4.js} +8 -8
  67. package/dist/{chunk-6K7RODXG.js → chunk-MKFQ5E7J.js} +1 -1
  68. package/dist/{chunk-44GP7PD5.js → chunk-MPJQMMBZ.js} +12 -0
  69. package/dist/{chunk-WQ6G6FFM.js → chunk-NFWRIC2V.js} +1 -1
  70. package/dist/{chunk-7SX4IY6T.js → chunk-NJYA4QSN.js} +1 -1
  71. package/dist/{chunk-RU725VCJ.js → chunk-NMKLX57Y.js} +10 -35
  72. package/dist/{chunk-RPKBWJBB.js → chunk-NP2SE6MQ.js} +1 -1
  73. package/dist/{chunk-ITSBBQTH.js → chunk-NUYWNKHH.js} +2 -2
  74. package/dist/{chunk-DV2VEJCC.js → chunk-NWSPPGIE.js} +6 -6
  75. package/dist/{chunk-AYOVY75O.js → chunk-NY56FM55.js} +3 -3
  76. package/dist/{chunk-MFW6P7WH.js → chunk-OSIUWQ3N.js} +3 -3
  77. package/dist/{chunk-2GM7N5TV.js → chunk-OWJVSJLA.js} +9 -9
  78. package/dist/{chunk-GDJW64XE.js → chunk-OYKNMFUY.js} +1 -1
  79. package/dist/{chunk-4R6OMKXB.js → chunk-PIHAUVA4.js} +5 -5
  80. package/dist/{chunk-C7QRRTAW.js → chunk-PNCKZFPE.js} +2 -2
  81. package/dist/{chunk-DDPGEGHB.js → chunk-POBNN5DP.js} +2 -2
  82. package/dist/{chunk-XJ2TBXHA.js → chunk-PQ5NW3QZ.js} +8 -8
  83. package/dist/{chunk-FKLE6QA3.js → chunk-PXEUQ7EG.js} +12 -12
  84. package/dist/{chunk-WEF6MXFG.js → chunk-QOZ4RVQY.js} +8 -8
  85. package/dist/{chunk-LR6RRDWN.js → chunk-QRIW46LR.js} +5 -5
  86. package/dist/{chunk-7W4XLIVH.js → chunk-R2PTZ6QM.js} +10 -10
  87. package/dist/{chunk-M2BCY7H3.js → chunk-RCBHL2B5.js} +189 -136
  88. package/dist/{chunk-66YFDTT6.js → chunk-RJYFHEP4.js} +3 -3
  89. package/dist/{chunk-P3SKSKJI.js → chunk-RNXX2GOQ.js} +2 -2
  90. package/dist/{chunk-RGWYZR3S.js → chunk-RRBV4HIM.js} +2 -2
  91. package/dist/{chunk-44FTCIRI.js → chunk-RY5RRKYN.js} +8 -8
  92. package/dist/{chunk-Y7PSAHAY.js → chunk-S4LLHDGK.js} +3 -3
  93. package/dist/chunk-S7C32S2T.js +825 -0
  94. package/dist/{chunk-JRUEIRJB.js → chunk-SLO22FPS.js} +2 -2
  95. package/dist/{chunk-47E5UTXE.js → chunk-SMEVBJJJ.js} +2 -2
  96. package/dist/{chunk-QFHWYWQL.js → chunk-SVQDLYX7.js} +1 -1
  97. package/dist/{chunk-WP2RLGDI.js → chunk-TCX5PMEY.js} +1 -1
  98. package/dist/{chunk-EXKCRXPO.js → chunk-TQ644YGV.js} +12 -12
  99. package/dist/{chunk-WRCAH3UO.js → chunk-U762HK4D.js} +15 -15
  100. package/dist/{chunk-LYLNMN77.js → chunk-VCHYS3RD.js} +8 -3
  101. package/dist/{chunk-7UDAIP6W.js → chunk-WHRIN7N3.js} +1 -1
  102. package/dist/{chunk-ZUCXFXLD.js → chunk-X3WYJ5T7.js} +2 -2
  103. package/dist/{chunk-UKJLPA7R.js → chunk-X6IZP2BD.js} +1 -1
  104. package/dist/{chunk-LCJURK7L.js → chunk-Y6GQQ4Y2.js} +1 -1
  105. package/dist/{chunk-HTWH2XQL.js → chunk-YE7D2S75.js} +2 -2
  106. package/dist/{chunk-DZPHN2WN.js → chunk-YKGUSW6D.js} +10 -10
  107. package/dist/{chunk-K5XT7NHD.js → chunk-YWRZG6GN.js} +10 -10
  108. package/dist/{chunk-JQ57AWDL.js → chunk-ZJ4PYTCK.js} +1 -1
  109. package/dist/completion-registry.d.ts +6 -0
  110. package/dist/completion-registry.js +62 -6
  111. package/dist/{d3-B6524aaP.d.ts → d3-2S3PrXik.d.ts} +11 -0
  112. package/dist/dgmo-router-BJBXSZMV.js +94 -0
  113. package/dist/{dimensions-7MF7VSGS.js → dimensions-AMA2S7RO.js} +5 -5
  114. package/dist/editor.js +12 -0
  115. package/dist/{flowchart-parser-GG7XBLQH.js → flowchart-parser-ADZIFVCH.js} +3 -3
  116. package/dist/{flowchart-renderer-DZQZRL2F.js → flowchart-renderer-CAG6ZNJ6.js} +5 -5
  117. package/dist/highlight.js +12 -0
  118. package/dist/index.d.ts +26 -5
  119. package/dist/index.js +83 -56
  120. package/dist/{layout-EFEZ533S.js → layout-6OSF2UGP.js} +3 -3
  121. package/dist/{layout-IGAVGDME.js → layout-C6MKMOBI.js} +1 -1
  122. package/dist/{layout-XUW444O5.js → layout-QS2SESBU.js} +2 -2
  123. package/dist/{layout-PP36LUTA.js → layout-T2PGKQUQ.js} +3 -3
  124. package/dist/{layout-Q3RYSODA.js → layout-UFB2O4AO.js} +3 -3
  125. package/dist/{layout-MSSHF45T.js → layout-UPQGIT3N.js} +2 -2
  126. package/dist/{layout-6L3BIFEZ.js → layout-VQ2USZJ3.js} +3 -3
  127. package/dist/{layout-DXVAYF6W.js → layout-VRJ5YFUE.js} +2 -2
  128. package/dist/{palettes-WZAIQTEG.js → palettes-WQHELGVQ.js} +2 -1
  129. package/dist/{parser-KYPP2DX6.js → parser-223VOHSB.js} +4 -4
  130. package/dist/{parser-JOOAVBJI.js → parser-2PNV7UI3.js} +3 -3
  131. package/dist/{parser-GZ3LVF72.js → parser-3MGA2MTM.js} +2 -2
  132. package/dist/{parser-NOANDFJ4.js → parser-4AR25MAS.js} +2 -2
  133. package/dist/{parser-337TACHB.js → parser-4B2PIXHI.js} +3 -3
  134. package/dist/{parser-KZMJNKDW.js → parser-57YQEEMC.js} +2 -2
  135. package/dist/{parser-J4DVNL4W.js → parser-5ZD2NKGU.js} +4 -4
  136. package/dist/{parser-LANGKWRG.js → parser-6LMB7BQQ.js} +2 -2
  137. package/dist/parser-AL6YL7KM.js +12 -0
  138. package/dist/{parser-5655XSOR.js → parser-B2FWP7ZO.js} +3 -3
  139. package/dist/{parser-GEKPWSSK.js → parser-BJDQX4KV.js} +3 -3
  140. package/dist/{parser-UTXFJG4X.js → parser-CA5WC5HF.js} +3 -3
  141. package/dist/{parser-KZMALSB2.js → parser-E5HFYL7B.js} +4 -4
  142. package/dist/{parser-GCCWMBTU.js → parser-ESZ5J5IJ.js} +5 -4
  143. package/dist/{parser-256EIWB2.js → parser-FDXUQ5TI.js} +2 -2
  144. package/dist/{parser-AN3MGHRL.js → parser-FV6RGALQ.js} +3 -3
  145. package/dist/{parser-DGF3ZEO6.js → parser-HPR7G7F6.js} +3 -3
  146. package/dist/{parser-OKB64MMN.js → parser-I4HZVIHX.js} +3 -3
  147. package/dist/{parser-P4TOQYNN.js → parser-J3BM2AP2.js} +3 -3
  148. package/dist/{parser-NPXPJHWN.js → parser-JFNDS5E5.js} +3 -3
  149. package/dist/{parser-TL3JA4RI.js → parser-KFIK3EOO.js} +3 -3
  150. package/dist/{parser-IMM2JJX3.js → parser-LGUT7KKH.js} +4 -4
  151. package/dist/{parser-KFYRTGTC.js → parser-MYRGCK7Q.js} +4 -4
  152. package/dist/{parser-ZLKYDFI5.js → parser-NAUUUCI3.js} +3 -3
  153. package/dist/{parser-DHSFIUPU.js → parser-NJ5VEZA3.js} +3 -3
  154. package/dist/{parser-OVQTTTUJ.js → parser-OFTMA36M.js} +2 -2
  155. package/dist/{parser-AKBVJHMK.js → parser-OV2WDSEV.js} +3 -3
  156. package/dist/{parser-LGS65QPN.js → parser-Q3UAOLEZ.js} +2 -2
  157. package/dist/{parser-XYY5NHP4.js → parser-R6OETHWM.js} +2 -2
  158. package/dist/{parser-7OEE7QT6.js → parser-RARXAHC7.js} +2 -2
  159. package/dist/{parser-NGHQQGD2.js → parser-T2RVIRDG.js} +3 -3
  160. package/dist/{parser-WEVTMBJ5.js → parser-W2DWCCLO.js} +3 -3
  161. package/dist/{parser-HCGXNHHL.js → parser-WFY4ZJUW.js} +3 -3
  162. package/dist/{parser-SA3RAJFS.js → parser-WSONWDFN.js} +2 -2
  163. package/dist/{renderer-CHQZES6G.js → renderer-3N64GVNM.js} +2 -2
  164. package/dist/{renderer-JR2XNZAH.js → renderer-3QM2DK7I.js} +5 -5
  165. package/dist/{renderer-XHEMXBQM.js → renderer-3W5T3IU6.js} +5 -5
  166. package/dist/{renderer-2ZQ6DPVD.js → renderer-4Z7FRQ2A.js} +2 -2
  167. package/dist/{renderer-EAORWLVK.js → renderer-52CHSV6S.js} +7 -7
  168. package/dist/{renderer-ZXQXRNDR.js → renderer-6OOJNEQE.js} +6 -6
  169. package/dist/{renderer-IR5GGAPB.js → renderer-A3PMPUO6.js} +11 -7
  170. package/dist/{renderer-3AD4NDF5.js → renderer-AM4VZSBQ.js} +6 -6
  171. package/dist/{renderer-P4XCRNCY.js → renderer-B3CPMS5R.js} +6 -6
  172. package/dist/{renderer-VGQMJC5K.js → renderer-B4KE3NM4.js} +11 -10
  173. package/dist/renderer-COSJM7UG.js +80 -0
  174. package/dist/{renderer-NAA7D33G.js → renderer-FXCVH2M5.js} +10 -9
  175. package/dist/{renderer-J4OS77PK.js → renderer-GWH5ACJ5.js} +3 -3
  176. package/dist/{renderer-7HOSI6JJ.js → renderer-IG72UJHW.js} +4 -4
  177. package/dist/{renderer-QQHQY3GT.js → renderer-IO3D5E4E.js} +5 -5
  178. package/dist/{renderer-6OQM32X3.js → renderer-IPDCAACY.js} +3 -3
  179. package/dist/{renderer-VYWCMRWA.js → renderer-KK5BU5K2.js} +5 -5
  180. package/dist/{renderer-7MCC6GKH.js → renderer-LD2H7WGP.js} +2 -2
  181. package/dist/{renderer-DCJ4AQ3N.js → renderer-MK47ESCB.js} +5 -5
  182. package/dist/{renderer-BLHN3RCY.js → renderer-MRMFYYZT.js} +2 -2
  183. package/dist/{renderer-XFEZ5UBE.js → renderer-O5RQHGK2.js} +6 -6
  184. package/dist/{renderer-43ESBXVY.js → renderer-OA5D3ZKB.js} +6 -6
  185. package/dist/{renderer-YTEZK3GC.js → renderer-ON4PTUHJ.js} +7 -7
  186. package/dist/{renderer-JRVY7HAD.js → renderer-OPDSKCQS.js} +4 -4
  187. package/dist/{renderer-FCXRDYSJ.js → renderer-PLRMST57.js} +7 -7
  188. package/dist/{renderer-WB75JME5.js → renderer-PSMRAL72.js} +6 -6
  189. package/dist/{renderer-7L7J4DHO.js → renderer-PXGCR7N4.js} +7 -6
  190. package/dist/{renderer-CEIX5JPA.js → renderer-R7OYCJEA.js} +2 -2
  191. package/dist/{renderer-DBNDLKPE.js → renderer-SBXCPA3S.js} +7 -7
  192. package/dist/{renderer-4JE5ORRO.js → renderer-TMQNTUQS.js} +7 -7
  193. package/dist/renderer-TTKTBB4C.js +46 -0
  194. package/dist/{renderer-5GZNGZU5.js → renderer-UVFGW2O6.js} +9 -7
  195. package/dist/{renderer-7VQOKAII.js → renderer-W22GX72R.js} +6 -6
  196. package/dist/{renderer-radial-NA5DVBG4.js → renderer-radial-42LVSG74.js} +5 -5
  197. package/dist/{state-parser-FE3RF6XY.js → state-parser-ROKY5KSI.js} +4 -4
  198. package/dist/{state-renderer-4S2C2CHB.js → state-renderer-MMG23G4W.js} +8 -8
  199. package/dist/{themes-CzuBdx1T.d.ts → themes-Cm2YBcT8.d.ts} +38 -2
  200. package/docs/ai-integration.md +4 -3
  201. package/docs/language-reference.md +162 -12
  202. package/gallery/fixtures/sketch.dgmo +2 -2
  203. package/gallery/fixtures/whiteboard.dgmo +18 -0
  204. package/package.json +2 -1
  205. package/dist/dgmo-router-7WANZOBD.js +0 -92
  206. package/dist/renderer-TJJGFQGT.js +0 -78
  207. package/dist/{chunk-CX6OH5WP.js → chunk-A5PUOHIS.js} +3 -3
  208. package/dist/{chunk-5LE2CTLS.js → chunk-NTJ5HVV6.js} +3 -3
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-7TF3QOOD.js";
4
4
  import {
5
5
  tryCollectNote
6
- } from "./chunk-J64NZ6NF.js";
6
+ } from "./chunk-KSZHIAI2.js";
7
7
  import {
8
8
  resolveNotes
9
9
  } from "./chunk-O753JUEZ.js";
@@ -21,7 +21,7 @@ import {
21
21
  measureIndent,
22
22
  parseFirstLine,
23
23
  tryParseSharedOption
24
- } from "./chunk-44GP7PD5.js";
24
+ } from "./chunk-MPJQMMBZ.js";
25
25
  import {
26
26
  NAME_DIAGNOSTIC_CODES,
27
27
  emit,
@@ -9,13 +9,13 @@ import {
9
9
  matchTagBlockHeading,
10
10
  stripDefaultModifier,
11
11
  tagAttrKey
12
- } from "./chunk-L5AFONQU.js";
12
+ } from "./chunk-HX2KJEPD.js";
13
13
  import {
14
14
  extractColor,
15
15
  fillModeFromToken,
16
16
  measureIndent,
17
17
  parseFirstLine
18
- } from "./chunk-44GP7PD5.js";
18
+ } from "./chunk-MPJQMMBZ.js";
19
19
  import {
20
20
  emit
21
21
  } from "./chunk-BYU54C3S.js";
@@ -2,7 +2,7 @@ import {
2
2
  extractColor,
3
3
  measureIndent,
4
4
  parseFirstLine
5
- } from "./chunk-44GP7PD5.js";
5
+ } from "./chunk-MPJQMMBZ.js";
6
6
  import {
7
7
  emit,
8
8
  formatDgmoError,
@@ -7,7 +7,7 @@ import {
7
7
  extractColor,
8
8
  fillModeFromToken,
9
9
  parseFirstLine
10
- } from "./chunk-44GP7PD5.js";
10
+ } from "./chunk-MPJQMMBZ.js";
11
11
  import {
12
12
  makeDgmoError,
13
13
  makeFail
@@ -1,15 +1,18 @@
1
1
  import {
2
2
  wrapDescriptionLines
3
3
  } from "./chunk-NPWVOFB3.js";
4
- import {
5
- renderNodeCard
6
- } from "./chunk-R2K5L4UA.js";
7
4
  import {
8
5
  renderInlineText
9
6
  } from "./chunk-S7W75MIM.js";
7
+ import {
8
+ renderNodeCard
9
+ } from "./chunk-R2K5L4UA.js";
10
10
  import {
11
11
  formatDateLabel
12
- } from "./chunk-UWKRPQZO.js";
12
+ } from "./chunk-3BQCSQQJ.js";
13
+ import {
14
+ renderIntegratedLegend
15
+ } from "./chunk-NJYA4QSN.js";
13
16
  import {
14
17
  CARD_RADIUS,
15
18
  HAIRLINE_DASH,
@@ -21,28 +24,25 @@ import {
21
24
  import {
22
25
  layoutInlineHeader
23
26
  } from "./chunk-CNUN5GO6.js";
27
+ import {
28
+ getLegendExtent
29
+ } from "./chunk-NS7L7YKH.js";
24
30
  import {
25
31
  TITLE_FONT_SIZE,
26
32
  TITLE_FONT_WEIGHT,
27
33
  TITLE_Y
28
34
  } from "./chunk-VLC6WNRD.js";
29
- import {
30
- renderIntegratedLegend
31
- } from "./chunk-7SX4IY6T.js";
32
- import {
33
- getLegendExtent
34
- } from "./chunk-NS7L7YKH.js";
35
35
  import {
36
36
  FONT_FAMILY
37
37
  } from "./chunk-ICLB27PZ.js";
38
38
  import {
39
39
  parseTimelineDate
40
- } from "./chunk-GDJW64XE.js";
40
+ } from "./chunk-OYKNMFUY.js";
41
41
  import {
42
42
  UNTAGGED_TAG_COLOR,
43
43
  resolveActiveTagGroup,
44
44
  resolveTagColor
45
- } from "./chunk-L5AFONQU.js";
45
+ } from "./chunk-HX2KJEPD.js";
46
46
  import {
47
47
  CHAR_WIDTH_RATIO,
48
48
  wrapTextToWidth
@@ -1,12 +1,15 @@
1
- import {
2
- renderNodeCard
3
- } from "./chunk-R2K5L4UA.js";
4
1
  import {
5
2
  renderInlineText
6
3
  } from "./chunk-S7W75MIM.js";
4
+ import {
5
+ renderNodeCard
6
+ } from "./chunk-R2K5L4UA.js";
7
7
  import {
8
8
  ScaleContext
9
9
  } from "./chunk-24YPR5EH.js";
10
+ import {
11
+ renderIntegratedLegend
12
+ } from "./chunk-NJYA4QSN.js";
10
13
  import {
11
14
  ARROWHEAD_HEIGHT,
12
15
  ARROWHEAD_WIDTH,
@@ -32,17 +35,14 @@ import {
32
35
  import {
33
36
  serializeSvg
34
37
  } from "./chunk-OOCVGX4W.js";
35
- import {
36
- TITLE_FONT_SIZE,
37
- TITLE_FONT_WEIGHT
38
- } from "./chunk-VLC6WNRD.js";
39
- import {
40
- renderIntegratedLegend
41
- } from "./chunk-7SX4IY6T.js";
42
38
  import {
43
39
  getLegendExtent,
44
40
  getMaxLegendReservedHeight
45
41
  } from "./chunk-NS7L7YKH.js";
42
+ import {
43
+ TITLE_FONT_SIZE,
44
+ TITLE_FONT_WEIGHT
45
+ } from "./chunk-VLC6WNRD.js";
46
46
  import {
47
47
  FONT_FAMILY
48
48
  } from "./chunk-ICLB27PZ.js";
@@ -51,12 +51,12 @@ import {
51
51
  } from "./chunk-IYULMRBE.js";
52
52
  import {
53
53
  tagAttrKey
54
- } from "./chunk-L5AFONQU.js";
54
+ } from "./chunk-HX2KJEPD.js";
55
55
  import {
56
56
  fillModeFromOptions,
57
57
  legendInlineRequested,
58
58
  legendSuppressed
59
- } from "./chunk-44GP7PD5.js";
59
+ } from "./chunk-MPJQMMBZ.js";
60
60
  import {
61
61
  EYE_CLOSED_PATH,
62
62
  EYE_OPEN_PATH,
@@ -456,9 +456,9 @@ function renderLegend(parent, legendGroups, palette, isDark, activeTagGroup, fix
456
456
  }
457
457
  }
458
458
  async function renderSitemapForExport(content, theme, palette) {
459
- const { parseSitemap } = await import("./parser-OKB64MMN.js");
460
- const { layoutSitemap } = await import("./layout-EFEZ533S.js");
461
- const { getPalette, DEFAULT_PALETTE_ID } = await import("./palettes-WZAIQTEG.js");
459
+ const { parseSitemap } = await import("./parser-I4HZVIHX.js");
460
+ const { layoutSitemap } = await import("./layout-6OSF2UGP.js");
461
+ const { getPalette, DEFAULT_PALETTE_ID } = await import("./palettes-WQHELGVQ.js");
462
462
  const isDark = theme === "dark";
463
463
  const defaultCfg = getPalette(DEFAULT_PALETTE_ID);
464
464
  const effectivePalette = palette ?? (isDark ? defaultCfg.dark : defaultCfg.light);
@@ -5,10 +5,10 @@ import {
5
5
  import {
6
6
  UNTAGGED_TAG_COLOR,
7
7
  tagAttrKey
8
- } from "./chunk-L5AFONQU.js";
8
+ } from "./chunk-HX2KJEPD.js";
9
9
  import {
10
10
  legendSuppressed
11
- } from "./chunk-44GP7PD5.js";
11
+ } from "./chunk-MPJQMMBZ.js";
12
12
  import {
13
13
  LEGEND_CAPSULE_PAD,
14
14
  LEGEND_DOT_R,
@@ -25,6 +25,10 @@ import {
25
25
  wrapTextToWidth
26
26
  } from "./chunk-KAO7JL4I.js";
27
27
 
28
+ // src/shape-caps.ts
29
+ var CYLINDER_RY = 8;
30
+ var QUEUE_CAP = 16;
31
+
28
32
  // src/c4/layout.ts
29
33
  import dagre from "@dagrejs/dagre";
30
34
  var gNode = (g, name) => g.node(name);
@@ -402,7 +406,6 @@ function collectCardMetadata(metadata) {
402
406
  return entries;
403
407
  }
404
408
  var CLOUD_BUMP = 7;
405
- var QUEUE_CAP = 16;
406
409
  function computeC4NodeDimensions(el, options) {
407
410
  const nameWidth = measureText(el.name, NAME_FONT_SIZE) + CARD_H_PAD * 2;
408
411
  let width = Math.max(MIN_NODE_WIDTH, Math.min(MAX_NODE_WIDTH, nameWidth));
@@ -1732,6 +1735,8 @@ function layoutC4Deployment(parsed, activeTagGroup) {
1732
1735
  }
1733
1736
 
1734
1737
  export {
1738
+ CYLINDER_RY,
1739
+ QUEUE_CAP,
1735
1740
  rollUpContextRelationships,
1736
1741
  collectCardMetadata,
1737
1742
  computeC4NodeDimensions,
@@ -13,7 +13,7 @@ import {
13
13
  normalizeNumericToken,
14
14
  parseFirstLine,
15
15
  parseSeriesNames
16
- } from "./chunk-44GP7PD5.js";
16
+ } from "./chunk-MPJQMMBZ.js";
17
17
  import {
18
18
  RECOGNIZED_COLOR_NAMES,
19
19
  resolveColorWithDiagnostic
@@ -8,14 +8,14 @@ import {
8
8
  resolveActiveTagGroup,
9
9
  stripDefaultModifier,
10
10
  tagAttrKey
11
- } from "./chunk-L5AFONQU.js";
11
+ } from "./chunk-HX2KJEPD.js";
12
12
  import {
13
13
  extractColor,
14
14
  fillModeFromToken,
15
15
  measureIndent,
16
16
  parseFirstLine,
17
17
  splitNameAndMeta
18
- } from "./chunk-44GP7PD5.js";
18
+ } from "./chunk-MPJQMMBZ.js";
19
19
  import {
20
20
  makeDgmoError,
21
21
  makeFail
@@ -93,7 +93,7 @@ var EXPORT_WIDTH = 1200;
93
93
  var EXPORT_HEIGHT = 800;
94
94
  async function resolveExportPalette(theme, palette) {
95
95
  if (palette) return palette;
96
- const { getPalette, DEFAULT_PALETTE_ID } = await import("./palettes-WZAIQTEG.js");
96
+ const { getPalette, DEFAULT_PALETTE_ID } = await import("./palettes-WQHELGVQ.js");
97
97
  const cfg = getPalette(DEFAULT_PALETTE_ID);
98
98
  return theme === "dark" ? cfg.dark : cfg.light;
99
99
  }
@@ -8,7 +8,7 @@ import {
8
8
  } from "./chunk-NOTA6TEI.js";
9
9
  import {
10
10
  peelQuotedName
11
- } from "./chunk-44GP7PD5.js";
11
+ } from "./chunk-MPJQMMBZ.js";
12
12
  import {
13
13
  makeDgmoError
14
14
  } from "./chunk-BYU54C3S.js";
@@ -9,7 +9,7 @@ import {
9
9
  stripDefaultModifier,
10
10
  tagAttrKey,
11
11
  validateTagGroupNames
12
- } from "./chunk-L5AFONQU.js";
12
+ } from "./chunk-HX2KJEPD.js";
13
13
  import {
14
14
  MAP_DIRECTIVE_KEY_SET,
15
15
  MAP_REGISTRY,
@@ -18,7 +18,7 @@ import {
18
18
  peelRampColors,
19
19
  splitNameAndMeta,
20
20
  withTagAliases
21
- } from "./chunk-44GP7PD5.js";
21
+ } from "./chunk-MPJQMMBZ.js";
22
22
  import {
23
23
  NEGATIVE_VALUE_DX,
24
24
  emit,
@@ -21,6 +21,9 @@ import {
21
21
  import {
22
22
  ScaleContext
23
23
  } from "./chunk-24YPR5EH.js";
24
+ import {
25
+ renderIntegratedLegend
26
+ } from "./chunk-NJYA4QSN.js";
24
27
  import {
25
28
  ARROWHEAD_HEIGHT,
26
29
  ARROWHEAD_WIDTH,
@@ -34,35 +37,32 @@ import {
34
37
  import {
35
38
  serializeSvg
36
39
  } from "./chunk-OOCVGX4W.js";
40
+ import {
41
+ getLegendExtent,
42
+ getMaxLegendReservedHeight
43
+ } from "./chunk-NS7L7YKH.js";
37
44
  import {
38
45
  TITLE_FONT_SIZE,
39
46
  TITLE_FONT_WEIGHT,
40
47
  TITLE_Y
41
48
  } from "./chunk-VLC6WNRD.js";
42
- import {
43
- renderIntegratedLegend
44
- } from "./chunk-7SX4IY6T.js";
45
- import {
46
- getLegendExtent,
47
- getMaxLegendReservedHeight
48
- } from "./chunk-NS7L7YKH.js";
49
49
  import {
50
50
  FONT_FAMILY
51
51
  } from "./chunk-ICLB27PZ.js";
52
52
  import {
53
53
  parseState
54
- } from "./chunk-AYOVY75O.js";
54
+ } from "./chunk-NY56FM55.js";
55
55
  import {
56
56
  resolveActiveTagGroup,
57
57
  resolveGroupTagColor,
58
58
  resolveTagColor,
59
59
  tagAttrKey
60
- } from "./chunk-L5AFONQU.js";
60
+ } from "./chunk-HX2KJEPD.js";
61
61
  import {
62
62
  fillModeFromOptions,
63
63
  legendInlineRequested,
64
64
  legendSuppressed
65
- } from "./chunk-44GP7PD5.js";
65
+ } from "./chunk-MPJQMMBZ.js";
66
66
  import {
67
67
  measureText
68
68
  } from "./chunk-KAO7JL4I.js";
@@ -1,33 +1,33 @@
1
1
  import {
2
2
  looksLikePert
3
- } from "./chunk-JVZ7KFAX.js";
3
+ } from "./chunk-AAC3XQWV.js";
4
4
  import {
5
5
  isLiveLinkLine
6
- } from "./chunk-7WGCQE2E.js";
6
+ } from "./chunk-2ZVLI6GQ.js";
7
7
  import {
8
8
  looksLikeSequence
9
- } from "./chunk-LFKSHDVI.js";
9
+ } from "./chunk-62VWZ3SE.js";
10
10
  import {
11
11
  looksLikeFlowchart
12
- } from "./chunk-JRUEIRJB.js";
12
+ } from "./chunk-SLO22FPS.js";
13
13
  import {
14
14
  looksLikeState
15
- } from "./chunk-AYOVY75O.js";
15
+ } from "./chunk-NY56FM55.js";
16
16
  import {
17
17
  looksLikeClassDiagram
18
- } from "./chunk-MFW6P7WH.js";
18
+ } from "./chunk-OSIUWQ3N.js";
19
19
  import {
20
20
  looksLikeERDiagram
21
- } from "./chunk-WPL5PFXE.js";
21
+ } from "./chunk-5TZPIKNV.js";
22
22
  import {
23
23
  looksLikeOrg
24
- } from "./chunk-FJNXXGTR.js";
24
+ } from "./chunk-FS2LZBHG.js";
25
25
  import {
26
26
  looksLikeSitemap
27
- } from "./chunk-UG2XG57E.js";
27
+ } from "./chunk-5M52RPAS.js";
28
28
  import {
29
29
  parseFirstLine
30
- } from "./chunk-44GP7PD5.js";
30
+ } from "./chunk-MPJQMMBZ.js";
31
31
 
32
32
  // src/chart-type-detect.ts
33
33
  var GANTT_DURATION_RE = /^\d+(?:\.\d+)?(?:min|bd|sp|d|w|m|q|y|h)(?:\?)?\s+/;
@@ -16,7 +16,7 @@ import {
16
16
  fillModeFromToken,
17
17
  measureIndent,
18
18
  parseFirstLine
19
- } from "./chunk-44GP7PD5.js";
19
+ } from "./chunk-MPJQMMBZ.js";
20
20
  import {
21
21
  makeDgmoError,
22
22
  makeFail
@@ -20,6 +20,12 @@
20
20
  interface DirectiveValueSpec {
21
21
  description: string;
22
22
  values?: string[];
23
+ /**
24
+ * Offer this directive only once the word typed so far starts with this
25
+ * prefix — for a directive almost nobody needs, which must not crowd every
26
+ * empty line's list. Absent: offered on any line, as before.
27
+ */
28
+ minPrefix?: string;
23
29
  }
24
30
  /** Specification for a chart type's directives. */
25
31
  interface DirectiveSpec {
@@ -1,15 +1,18 @@
1
1
  import {
2
2
  GROUP_ONLY_METADATA,
3
3
  STATE_KEYWORDS
4
- } from "./chunk-HSRQDWV7.js";
4
+ } from "./chunk-CYF2X3CG.js";
5
5
  import {
6
6
  ALL_MARKERS
7
7
  } from "./chunk-4WW3SGMH.js";
8
- import "./chunk-L5AFONQU.js";
8
+ import {
9
+ BUILT_IN_PALETTE_IDS
10
+ } from "./chunk-3UR4F7FE.js";
11
+ import "./chunk-HX2KJEPD.js";
9
12
  import {
10
13
  ALL_CHART_TYPES,
11
14
  chartTypes
12
- } from "./chunk-44GP7PD5.js";
15
+ } from "./chunk-MPJQMMBZ.js";
13
16
  import "./chunk-2M4IGSCY.js";
14
17
  import "./chunk-BYU54C3S.js";
15
18
  import "./chunk-5WRI5ZAA.js";
@@ -27,6 +30,11 @@ var BETA_CHART_TYPE_IDS = new Set(
27
30
 
28
31
  // src/completion-registry.ts
29
32
  var GLOBAL_DIRECTIVES = {
33
+ palette: {
34
+ description: "Draw this diagram in a built-in palette, optionally pinned to light or dark",
35
+ values: [...BUILT_IN_PALETTE_IDS].sort(),
36
+ minPrefix: "pal"
37
+ },
30
38
  "no-title": {
31
39
  description: "Hide the diagram title"
32
40
  },
@@ -733,6 +741,14 @@ var COMPLETION_REGISTRY = /* @__PURE__ */ new Map([
733
741
  }
734
742
  })
735
743
  ],
744
+ [
745
+ "whiteboard",
746
+ // Canvas-authored free placement: every line is an element; the only
747
+ // directives are the universal set plus `no-notes`, the two that act.
748
+ withGlobals({
749
+ "no-notes": { description: "Hide every sticky note" }
750
+ })
751
+ ],
736
752
  [
737
753
  "map",
738
754
  // Geographic map directives (§24B.2/.7). Cosmetics are ON by default — the
@@ -883,6 +899,21 @@ var STRUCTURAL_KEYWORDS = /* @__PURE__ */ new Map([
883
899
  ["treemap", ["tag"]],
884
900
  ["block", ["tag"]],
885
901
  ["sketch", ["tag"]],
902
+ [
903
+ "whiteboard",
904
+ [
905
+ "rectangle",
906
+ "ellipse",
907
+ "database",
908
+ "queue",
909
+ "note",
910
+ "arrow",
911
+ "line",
912
+ "text",
913
+ "image",
914
+ "ink"
915
+ ]
916
+ ],
886
917
  ["boxes-and-lines", ["tag"]],
887
918
  ["state", ["note", "tag"]],
888
919
  ["swimlane", ["lane", "tag"]],
@@ -985,12 +1016,37 @@ var WIREFRAME_GROUP_ONLY_FLAGS = [
985
1016
  ];
986
1017
  var PIPE_METADATA = /* @__PURE__ */ new Map([
987
1018
  [
988
- "sketch",
1019
+ "whiteboard",
989
1020
  {
990
1021
  node: {
991
- shape: {
992
- description: "Morph from the default rectangle: database, queue, person, document, note"
1022
+ at: {
1023
+ description: "Top-left corner `at: X Y` in canvas px (integers, negative allowed)"
993
1024
  },
1025
+ size: { description: "Width and height `size: W H` in px" },
1026
+ color: {
1027
+ description: "ink (default; yellow on a note), red, green, blue, teal, purple, orange, yellow, cyan or gray"
1028
+ },
1029
+ from: { description: "Arrow tail `from: X Y` in canvas px" },
1030
+ to: { description: "Arrow head `to: X Y` in canvas px" },
1031
+ style: {
1032
+ description: "Arrow or line stroke: `dashed` (solid is the default)"
1033
+ },
1034
+ heads: {
1035
+ description: "Arrow heads: `both` adds one at `from:`"
1036
+ },
1037
+ bend: {
1038
+ description: "Arrow or line curve: whole px off the straight middle, + bends right"
1039
+ },
1040
+ fill: {
1041
+ description: "Shape fill: `solid` or `outline` (a pale tint is the default)"
1042
+ }
1043
+ }
1044
+ }
1045
+ ],
1046
+ [
1047
+ "sketch",
1048
+ {
1049
+ node: {
994
1050
  at: {
995
1051
  description: "Half-slot position `at: C R` (integers; omit to flow-place)"
996
1052
  },
@@ -490,6 +490,17 @@ type RenderForExportOptions = {
490
490
  */
491
491
  width?: number;
492
492
  height?: number;
493
+ /**
494
+ * Whiteboard images: turn a ref (relative path or https URL) into an href.
495
+ * Supplied → its answer is final, `undefined` draws the placeholder box.
496
+ * Omitted → https refs pass through and the rest are placeholders.
497
+ */
498
+ resolveImage?: (ref: string) => string | undefined;
499
+ /**
500
+ * Whiteboard sticky notes: `true` draws them and `false` hides them,
501
+ * whatever the board's `no-notes` says. Omitted → the directive decides.
502
+ */
503
+ showNotes?: boolean;
493
504
  };
494
505
  declare function renderForExport(content: string, theme: 'light' | 'dark' | 'transparent', palette?: PaletteColors, viewState?: CompactViewState, options?: RenderForExportOptions): Promise<string>;
495
506
 
@@ -0,0 +1,94 @@
1
+ import {
2
+ CHART_TYPE_DESCRIPTIONS,
3
+ chartTypeParsers,
4
+ getAllChartTypes,
5
+ getRenderCategory,
6
+ isExtendedChartType,
7
+ knownChartTypeIds,
8
+ parseDgmo
9
+ } from "./chunk-HIVJBESO.js";
10
+ import "./chunk-EOYPX6SF.js";
11
+ import "./chunk-ZJ4PYTCK.js";
12
+ import "./chunk-WFA6IULY.js";
13
+ import "./chunk-3DPOIW3W.js";
14
+ import "./chunk-TCX5PMEY.js";
15
+ import "./chunk-A2RUBBVT.js";
16
+ import "./chunk-X3WYJ5T7.js";
17
+ import "./chunk-SMEVBJJJ.js";
18
+ import "./chunk-BDXC7MDK.js";
19
+ import "./chunk-WHRIN7N3.js";
20
+ import "./chunk-2CW5ZTNH.js";
21
+ import "./chunk-MKFQ5E7J.js";
22
+ import "./chunk-NFWRIC2V.js";
23
+ import "./chunk-COPSI54O.js";
24
+ import "./chunk-M6J25PAZ.js";
25
+ import "./chunk-EWERNTOX.js";
26
+ import "./chunk-RNXX2GOQ.js";
27
+ import "./chunk-JX4RCC6B.js";
28
+ import "./chunk-XSVWUOUZ.js";
29
+ import "./chunk-4YO7VJTP.js";
30
+ import "./chunk-YE7D2S75.js";
31
+ import "./chunk-GXP344YZ.js";
32
+ import "./chunk-NMKLX57Y.js";
33
+ import "./chunk-NWSPPGIE.js";
34
+ import "./chunk-IHK3Y2HG.js";
35
+ import "./chunk-PNCKZFPE.js";
36
+ import "./chunk-C4W62JZO.js";
37
+ import "./chunk-QQJUTGQH.js";
38
+ import "./chunk-DNMICILX.js";
39
+ import "./chunk-RJYFHEP4.js";
40
+ import "./chunk-OYKNMFUY.js";
41
+ import "./chunk-SVQDLYX7.js";
42
+ import "./chunk-IRVQT4GR.js";
43
+ import "./chunk-LC5LY5V2.js";
44
+ import "./chunk-CUY56BK4.js";
45
+ import "./chunk-NUYWNKHH.js";
46
+ import {
47
+ looksLikeC4,
48
+ looksLikeGantt,
49
+ parseDgmoChartType
50
+ } from "./chunk-YWRZG6GN.js";
51
+ import "./chunk-I74AQRVD.js";
52
+ import "./chunk-AAC3XQWV.js";
53
+ import "./chunk-2SKMEL7V.js";
54
+ import "./chunk-2ZVLI6GQ.js";
55
+ import "./chunk-EQW6HOP4.js";
56
+ import "./chunk-DAOFNU6J.js";
57
+ import "./chunk-4HG4PYHM.js";
58
+ import "./chunk-62VWZ3SE.js";
59
+ import "./chunk-C3Z4DX3V.js";
60
+ import "./chunk-SLO22FPS.js";
61
+ import "./chunk-7TF3QOOD.js";
62
+ import "./chunk-NY56FM55.js";
63
+ import "./chunk-NXMESY4J.js";
64
+ import "./chunk-OSIUWQ3N.js";
65
+ import "./chunk-5TZPIKNV.js";
66
+ import "./chunk-KSZHIAI2.js";
67
+ import "./chunk-O753JUEZ.js";
68
+ import "./chunk-N7VMGZCU.js";
69
+ import "./chunk-FS2LZBHG.js";
70
+ import "./chunk-5M52RPAS.js";
71
+ import "./chunk-IYULMRBE.js";
72
+ import "./chunk-NOTA6TEI.js";
73
+ import "./chunk-CYF2X3CG.js";
74
+ import "./chunk-4WW3SGMH.js";
75
+ import "./chunk-3UR4F7FE.js";
76
+ import "./chunk-HX2KJEPD.js";
77
+ import "./chunk-MPJQMMBZ.js";
78
+ import "./chunk-5NU7NII2.js";
79
+ import "./chunk-L24LESXF.js";
80
+ import "./chunk-2M4IGSCY.js";
81
+ import "./chunk-BYU54C3S.js";
82
+ import "./chunk-5WRI5ZAA.js";
83
+ export {
84
+ CHART_TYPE_DESCRIPTIONS,
85
+ chartTypeParsers,
86
+ getAllChartTypes,
87
+ getRenderCategory,
88
+ isExtendedChartType,
89
+ knownChartTypeIds,
90
+ looksLikeC4,
91
+ looksLikeGantt,
92
+ parseDgmo,
93
+ parseDgmoChartType
94
+ };
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  mapContentAspect,
3
3
  mapExportDimensions
4
- } from "./chunk-7KPHRTND.js";
5
- import "./chunk-LR6RRDWN.js";
4
+ } from "./chunk-AHWA36O7.js";
5
+ import "./chunk-QRIW46LR.js";
6
6
  import "./chunk-4QV26TEG.js";
7
7
  import "./chunk-KMU65FYM.js";
8
- import "./chunk-VLC6WNRD.js";
9
8
  import "./chunk-NS7L7YKH.js";
10
- import "./chunk-L5AFONQU.js";
11
- import "./chunk-44GP7PD5.js";
9
+ import "./chunk-VLC6WNRD.js";
10
+ import "./chunk-HX2KJEPD.js";
11
+ import "./chunk-MPJQMMBZ.js";
12
12
  import "./chunk-I6GGMCTV.js";
13
13
  import "./chunk-KAO7JL4I.js";
14
14
  import "./chunk-L24LESXF.js";
package/dist/editor.js CHANGED
@@ -336,6 +336,13 @@ var DIRECTIVES_REGISTRY = [
336
336
  { token: "alert", category: "control" },
337
337
  { token: "progress", category: "control" },
338
338
  { token: "mobile", category: "control" },
339
+ // Whiteboard element leaders (§39). `image` is shared with wireframe above
340
+ // and `text` stays an ER modifier; `database` / `queue` are left plain
341
+ // because sketch and sequence use them as values, not line leaders.
342
+ { token: "rectangle", category: "control" },
343
+ { token: "ellipse", category: "control" },
344
+ { token: "arrow", category: "control" },
345
+ { token: "ink", category: "control" },
339
346
  // ── Kanban status keywords (STATUS) ──────────────────────
340
347
  { token: "na", category: "status" },
341
348
  { token: "todo", category: "status" },
@@ -551,6 +558,11 @@ var chartTypesData = [
551
558
  description: "GUI-first constrained canvas: uniformly-sized shapes placed freely on a snap grid, arrows between them, meaning through tags \u2014 the markup is generated by the canvas editor",
552
559
  beta: true
553
560
  },
561
+ {
562
+ id: "whiteboard",
563
+ description: "Free-form whiteboard on an infinite canvas: rectangles, ellipses, databases, queues, free arrows, text, pasted images and freehand ink at pixel positions \u2014 drawn in the canvas; AI writes shapes, arrows and text, never ink",
564
+ beta: true
565
+ },
554
566
  {
555
567
  id: "goal",
556
568
  description: "Single progress-toward-a-target value (now vs target) as a progress bar, thermometer, or gauge \u2014 KPIs, fundraising, quotas, completion"