@diagrammo/dgmo 0.94.0 → 0.96.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 (220) hide show
  1. package/README.md +1 -1
  2. package/dist/advanced.d.ts +97 -570
  3. package/dist/advanced.js +176 -352
  4. package/dist/block.d.ts +6 -0
  5. package/dist/block.js +59 -57
  6. package/dist/{calculator-BNH3GSJE.js → calculator-GIB7POFX.js} +2 -2
  7. package/dist/{chart-meta-BbjsRY7o.d.ts → chart-meta-uImk4eTn.d.ts} +1 -1
  8. package/dist/chart-meta.d.ts +2 -2
  9. package/dist/chart-meta.js +16 -16
  10. package/dist/{chart-types-Cppnp31G.d.ts → chart-types-CBVYiLqy.d.ts} +1 -5
  11. package/dist/{charts-d3-SZV2SFTM.js → charts-d3-IRP5VANE.js} +5 -5
  12. package/dist/{chunk-MLY5ALOV.js → chunk-2BYFNZVM.js} +2 -2
  13. package/dist/{chunk-OSSTOSXU.js → chunk-2M3K6GD2.js} +3 -6
  14. package/dist/{chunk-CDM6XMOT.js → chunk-34JOHSVE.js} +2 -2
  15. package/dist/chunk-35A3J4Z5.js +14 -0
  16. package/dist/{chunk-HI6R27YA.js → chunk-3W73ZP6W.js} +9 -4
  17. package/dist/{chunk-IHN6WDEY.js → chunk-4B45SNZH.js} +5 -5
  18. package/dist/{chunk-AULZD45V.js → chunk-5ARANBIE.js} +2 -2
  19. package/dist/{chunk-DDIOWNHS.js → chunk-5BG4OSWJ.js} +6 -6
  20. package/dist/{chunk-6JCTW74W.js → chunk-5G4DOOX2.js} +1 -1
  21. package/dist/{chunk-JT2BG7LM.js → chunk-5GU6C5WB.js} +3 -3
  22. package/dist/{chunk-EBIDNRSR.js → chunk-5H7SA5ZD.js} +1 -1
  23. package/dist/{chunk-CN4RDJDV.js → chunk-5LG526X7.js} +1 -1
  24. package/dist/{chunk-VDY2GR6U.js → chunk-67N26CER.js} +2 -2
  25. package/dist/{chunk-G3HZ4PGE.js → chunk-67RKJEKF.js} +6 -6
  26. package/dist/{chunk-D3K4U3ZM.js → chunk-6K2W3FH7.js} +8 -5
  27. package/dist/{chunk-C6G36F5S.js → chunk-7UWVHNPM.js} +4 -4
  28. package/dist/{chunk-FWVE373X.js → chunk-AQRSEQZV.js} +1 -1
  29. package/dist/{chunk-BQO24BDM.js → chunk-AUXUNV73.js} +1 -1
  30. package/dist/{chunk-3PP746YM.js → chunk-B2YVZ3QU.js} +1 -1
  31. package/dist/{chunk-QPQWY5RU.js → chunk-B5CEV7IR.js} +3 -3
  32. package/dist/{chunk-J7Q4AB23.js → chunk-B7BSRVNC.js} +2 -2
  33. package/dist/{chunk-IXHWS2HI.js → chunk-BD4O4D2A.js} +2 -2
  34. package/dist/{chunk-4TEPDQHJ.js → chunk-BUVLLK3D.js} +7 -7
  35. package/dist/{chunk-B25IWGDH.js → chunk-CD7VQCDL.js} +8 -8
  36. package/dist/{chunk-I37S3EZE.js → chunk-CP73WWLN.js} +371 -286
  37. package/dist/{chunk-GI5R5B3S.js → chunk-D7DGLJ7N.js} +2 -2
  38. package/dist/{chunk-3TWBMU7K.js → chunk-DKCVAQU3.js} +9 -9
  39. package/dist/{chunk-KBDMEOLI.js → chunk-DPNSDCR3.js} +1 -1
  40. package/dist/{chunk-BRGRIZQB.js → chunk-DWMQ24JR.js} +2 -2
  41. package/dist/{chunk-4XYZJTFO.js → chunk-EM5SA7NC.js} +11 -3
  42. package/dist/{chunk-AM42TLSZ.js → chunk-EMGNCG5C.js} +1 -1
  43. package/dist/{chunk-3KVUFHUJ.js → chunk-EPB3UEMD.js} +2 -2
  44. package/dist/{chunk-NXU4N5WT.js → chunk-EZ6BI5LL.js} +1 -1
  45. package/dist/{chunk-2ZW4NBYX.js → chunk-FBK32S4D.js} +1 -1
  46. package/dist/{chunk-2I4UQG7W.js → chunk-FHX373L5.js} +1 -1
  47. package/dist/{chunk-AQQUJEDN.js → chunk-FKJWZWNU.js} +1 -1
  48. package/dist/{chunk-TIIZIAGS.js → chunk-FUYEXLAN.js} +6 -13
  49. package/dist/{chunk-TASRGDYP.js → chunk-GEHK4UD5.js} +3 -3
  50. package/dist/{chunk-ZD3QCNB7.js → chunk-GLL237AP.js} +2 -2
  51. package/dist/{chunk-PGSGJLUR.js → chunk-GM2SLMQW.js} +2 -2
  52. package/dist/{chunk-NOQB4KMV.js → chunk-H7JVKUA5.js} +5 -5
  53. package/dist/{chunk-DNM3XZCK.js → chunk-H7RQG4PH.js} +2 -2
  54. package/dist/{chunk-7SXV7NUS.js → chunk-HH3DHNQA.js} +2 -2
  55. package/dist/{chunk-GWQRTA5W.js → chunk-HZX4QZGR.js} +1 -1
  56. package/dist/{chunk-KBEWVCK3.js → chunk-I2I2FKAK.js} +1 -1
  57. package/dist/{chunk-2HSHWPTO.js → chunk-I3ZRIMR7.js} +10 -10
  58. package/dist/{chunk-7IOZ6JE4.js → chunk-IKXQ6NVR.js} +7 -7
  59. package/dist/{chunk-XJQ6Z3FO.js → chunk-IQZSKWE5.js} +3 -3
  60. package/dist/{chunk-3GUEYQGL.js → chunk-ITDF3MWD.js} +3 -3
  61. package/dist/{chunk-JXGSTBW6.js → chunk-IU7XKZA6.js} +2 -2
  62. package/dist/{chunk-RITTLIDJ.js → chunk-IZFJZCF6.js} +4 -4
  63. package/dist/{chunk-DRQSB72S.js → chunk-JBAFAKGX.js} +7 -7
  64. package/dist/{chunk-VSAKEMDD.js → chunk-JCC3B2GS.js} +8 -2
  65. package/dist/{chunk-66JTY4AN.js → chunk-JRN2CRXJ.js} +1 -1
  66. package/dist/{chunk-2FDQEQID.js → chunk-K2SFH3GJ.js} +2 -2
  67. package/dist/{chunk-NM5V5EKY.js → chunk-K2WXMXI2.js} +1 -1
  68. package/dist/{chunk-XKCRKD2B.js → chunk-KDWEOT54.js} +24 -12
  69. package/dist/{chunk-PVWIBKV2.js → chunk-KQAPFIYF.js} +2 -2
  70. package/dist/{chunk-4SACN2C5.js → chunk-LGUFJ7Y2.js} +1 -1
  71. package/dist/{chunk-AYUSD4Z6.js → chunk-LRHPBWOY.js} +5 -5
  72. package/dist/{chunk-DLJJOCIT.js → chunk-M4ZUIW3J.js} +3 -3
  73. package/dist/{chunk-CIHHTS5B.js → chunk-MAYTYF5S.js} +3 -3
  74. package/dist/{chunk-5ZUZZDW5.js → chunk-MVUNMJKO.js} +46 -52
  75. package/dist/{chunk-KBHT5XEY.js → chunk-MYHR3PMH.js} +194 -35
  76. package/dist/{chunk-NBAAIRFP.js → chunk-NI4L6HEU.js} +4 -1
  77. package/dist/{chunk-A2A2I4Z4.js → chunk-O2HNVNKO.js} +2 -2
  78. package/dist/{chunk-2XMTZ5JR.js → chunk-OAZ6BIIB.js} +3 -3
  79. package/dist/{chunk-IZHGT5HD.js → chunk-OO4GUE4E.js} +3 -3
  80. package/dist/{chunk-KSZB7TIY.js → chunk-OYGJZA24.js} +8 -8
  81. package/dist/{chunk-H6BT45SN.js → chunk-P2GNNEMN.js} +1 -1
  82. package/dist/{chunk-5HAYT43L.js → chunk-P3PSLC2K.js} +22 -6
  83. package/dist/{chunk-HHVIE45A.js → chunk-P6LKX3IQ.js} +4 -4
  84. package/dist/{chunk-NMS5XSLX.js → chunk-PGD6CNWO.js} +1 -1
  85. package/dist/{chunk-NVZ7R4EK.js → chunk-PWZEJNO6.js} +3 -3
  86. package/dist/{chunk-NPDVWFAQ.js → chunk-QEU6VM4O.js} +1 -1
  87. package/dist/{chunk-UIEKW4SG.js → chunk-R5L5E3TC.js} +0 -1
  88. package/dist/{chunk-2WQ3YZMN.js → chunk-RGFVHYDP.js} +2 -2
  89. package/dist/{chunk-YQMIKX54.js → chunk-RIK6WUMO.js} +62 -29
  90. package/dist/{chunk-BH2SF4TT.js → chunk-RTRORHSP.js} +1 -1
  91. package/dist/{chunk-4SP6OUO7.js → chunk-RVOSA4RR.js} +845 -193
  92. package/dist/{chunk-LKZCUFOW.js → chunk-SCYVGPLI.js} +2 -2
  93. package/dist/{chunk-XIUGSUE4.js → chunk-SIABEREK.js} +6 -2
  94. package/dist/{chunk-P7TRFL4P.js → chunk-SQBCNEJB.js} +4 -1
  95. package/dist/{chunk-3ZP3QC47.js → chunk-THTYCJGF.js} +2 -2
  96. package/dist/{chunk-4EX4OKGZ.js → chunk-TIPNNOZC.js} +5 -5
  97. package/dist/{chunk-UZ7EZW3B.js → chunk-TO53KK2P.js} +6 -1
  98. package/dist/{chunk-2MS623GW.js → chunk-TPCP2UOI.js} +3 -3
  99. package/dist/{chunk-Y3SIQN4J.js → chunk-TUOZ6AXC.js} +2 -2
  100. package/dist/{chunk-KRPLP5LP.js → chunk-U6N547QA.js} +1 -1
  101. package/dist/{chunk-RESEJSCV.js → chunk-VJ7NLYFE.js} +2 -2
  102. package/dist/{chunk-UXNA2H2V.js → chunk-VLI6AWS3.js} +2 -2
  103. package/dist/{chunk-TDAGJJPZ.js → chunk-VNAPEZX2.js} +1 -1
  104. package/dist/{chunk-EBVVMUAA.js → chunk-VVTCUIPN.js} +1 -1
  105. package/dist/{chunk-FVTYJUXR.js → chunk-W5MMPPGX.js} +2 -2
  106. package/dist/{chunk-BQMHJ6OW.js → chunk-WGNP5ND2.js} +20 -12
  107. package/dist/{chunk-5OTA2PUH.js → chunk-WLGOIMTI.js} +2 -2
  108. package/dist/{chunk-IGJEKO2P.js → chunk-WTPS73RM.js} +4 -4
  109. package/dist/{chunk-R6EGUTIV.js → chunk-YFIUABSF.js} +2 -2
  110. package/dist/{chunk-7PJBJ2DU.js → chunk-YSGOXZBB.js} +1 -1
  111. package/dist/{chunk-ZECJ7Q6C.js → chunk-YVIPJGFG.js} +2 -2
  112. package/dist/{chunk-5KKZXA44.js → chunk-ZBOIYC2G.js} +4 -2
  113. package/dist/{chunk-RBVFNUAL.js → chunk-ZOKD5F7M.js} +2 -2
  114. package/dist/{collapse-BSPH3BFM.js → collapse-6X5S2S3G.js} +2 -1
  115. package/dist/completion-registry.js +6 -37
  116. package/dist/copy-image.d.ts +34 -0
  117. package/dist/copy-image.js +96 -0
  118. package/dist/countdown.js +1 -1
  119. package/dist/dgmo-router-EPBQKQW2.js +100 -0
  120. package/dist/{dimensions-DS6FWLRY.js → dimensions-DBCRBZIU.js} +4 -4
  121. package/dist/editor.js +2 -7
  122. package/dist/{flowchart-parser-NZXASOZG.js → flowchart-parser-SM5LHF2D.js} +4 -4
  123. package/dist/{flowchart-renderer-PTCRIANF.js → flowchart-renderer-PPS2GTTD.js} +10 -10
  124. package/dist/highlight.js +3 -8
  125. package/dist/index.d.ts +42 -6
  126. package/dist/index.js +62 -57
  127. package/dist/{layout-MXHR3P35.js → layout-3J72UULM.js} +3 -3
  128. package/dist/{layout-U3AH6M7J.js → layout-AF4KA5B2.js} +4 -4
  129. package/dist/{layout-IT4ZTV6C.js → layout-FCFUVCRI.js} +7 -7
  130. package/dist/{layout-KV27UW25.js → layout-H2KP5A6M.js} +1 -1
  131. package/dist/{layout-ND26WVX2.js → layout-IXQNVRBE.js} +3 -3
  132. package/dist/{layout-ISSBWBH7.js → layout-KELSNWBD.js} +7 -7
  133. package/dist/{layout-JTIRCKAW.js → layout-LNVIH45F.js} +3 -3
  134. package/dist/{layout-VC3MXRB4.js → layout-MPSH3YWE.js} +7 -7
  135. package/dist/{layout-HFBK5UEG.js → layout-PPIVGJXD.js} +2 -2
  136. package/dist/{layout-RH3N46HP.js → layout-R6G4MEO3.js} +4 -3
  137. package/dist/{layout-search-BBX2BMEF.js → layout-search-C2TYUH4L.js} +5 -5
  138. package/dist/{parser-BT4NI6JY.js → parser-2AXU2MHJ.js} +3 -3
  139. package/dist/{parser-3QIFY5IN.js → parser-4BOP77CD.js} +2 -2
  140. package/dist/{parser-TAYRTCPR.js → parser-4GHAYZKZ.js} +5 -5
  141. package/dist/{parser-LTRQASGB.js → parser-5HQPPVHJ.js} +3 -3
  142. package/dist/{parser-EAQPZX2B.js → parser-5RUD4A3X.js} +3 -3
  143. package/dist/{parser-BJ7RJNUM.js → parser-6WURFLOB.js} +3 -3
  144. package/dist/{parser-R3LPEQIT.js → parser-722KLLAQ.js} +4 -4
  145. package/dist/{parser-KMKVFET2.js → parser-B7SCN7FG.js} +2 -2
  146. package/dist/{parser-TUAEX6ML.js → parser-BNRX35NT.js} +3 -3
  147. package/dist/{parser-NL73FSFI.js → parser-BPYHIG24.js} +3 -3
  148. package/dist/{parser-3LT3ZUUC.js → parser-CRJYLOHA.js} +2 -2
  149. package/dist/{parser-NUU3DVW4.js → parser-DGLKH4NT.js} +2 -2
  150. package/dist/{parser-5UZV32ZI.js → parser-DRUGM3R6.js} +2 -2
  151. package/dist/{parser-KLCSFQ3J.js → parser-DWV2CYBS.js} +3 -3
  152. package/dist/{parser-2IKPQVKX.js → parser-F3JJNIFC.js} +3 -3
  153. package/dist/{parser-EFF22GYO.js → parser-F75WNYMK.js} +3 -3
  154. package/dist/{parser-RTWPFKXG.js → parser-GBQY3WOZ.js} +3 -3
  155. package/dist/{parser-F7NDRPMA.js → parser-GM5B2EPW.js} +3 -3
  156. package/dist/{parser-K2DI26SC.js → parser-H6HT2WFQ.js} +2 -2
  157. package/dist/{parser-PEZ7RN43.js → parser-HM6FEX5K.js} +3 -3
  158. package/dist/{parser-YG625J5H.js → parser-L7SI3PW4.js} +4 -4
  159. package/dist/{parser-GMQJISZ6.js → parser-LUJX7AXO.js} +2 -2
  160. package/dist/{parser-A3AN76RQ.js → parser-MWINQNQW.js} +3 -3
  161. package/dist/{parser-KJPPUN4D.js → parser-OHBBDCG4.js} +2 -2
  162. package/dist/{parser-4RFY7D52.js → parser-QWTECQEC.js} +5 -5
  163. package/dist/{parser-4TBSWULQ.js → parser-TTGZYLYD.js} +3 -3
  164. package/dist/{parser-6TDWUKM5.js → parser-UHKROC7Z.js} +3 -3
  165. package/dist/{parser-H5OODY5N.js → parser-W6NX3AIV.js} +3 -3
  166. package/dist/{parser-GDLKUBTO.js → parser-WIKXZP4X.js} +2 -2
  167. package/dist/{parser-4Y6PODW6.js → parser-XEJP37GQ.js} +3 -3
  168. package/dist/{parser-RCIEKN7Y.js → parser-Y7QXD2UR.js} +2 -2
  169. package/dist/{parser-7QKQ4P4P.js → parser-ZV756RMP.js} +5 -5
  170. package/dist/{parser-KKF6Y5MM.js → parser-ZWWQZ4XZ.js} +4 -3
  171. package/dist/{redraw-AHW7EUUF.js → redraw-BZ4GI6IC.js} +6 -4
  172. package/dist/{redraw-STZ4WJAI.js → redraw-LEOXS7C6.js} +3 -3
  173. package/dist/{renderer-J3GPDK73.js → renderer-2MCV75JQ.js} +12 -12
  174. package/dist/{renderer-TINHO2IO.js → renderer-2V2XY2V7.js} +4 -4
  175. package/dist/{renderer-PHLCYVSN.js → renderer-5AEDVLAA.js} +8 -7
  176. package/dist/{renderer-W4MUMXJE.js → renderer-5GP7YUS4.js} +3 -3
  177. package/dist/{renderer-FMTLSOCX.js → renderer-66NCRXSC.js} +6 -6
  178. package/dist/{renderer-AM7P4LN7.js → renderer-6HU44IGJ.js} +4 -4
  179. package/dist/{renderer-JJ4QW3SK.js → renderer-7C76HP5W.js} +6 -6
  180. package/dist/{renderer-O6RP52CQ.js → renderer-7RAMBMTH.js} +6 -6
  181. package/dist/{renderer-M5DUMITP.js → renderer-BYLQ37T2.js} +8 -8
  182. package/dist/{renderer-7OGGV327.js → renderer-CVCCW7UT.js} +4 -4
  183. package/dist/{renderer-QTPWRRJ7.js → renderer-D6EH5UQ6.js} +6 -6
  184. package/dist/renderer-E3334XLT.js +84 -0
  185. package/dist/{renderer-IXBOT6DU.js → renderer-F7YGMEGQ.js} +2 -2
  186. package/dist/{renderer-XCLARXCK.js → renderer-GKY55M4Z.js} +5 -5
  187. package/dist/{renderer-KJ3V5BYP.js → renderer-LFZKG2GR.js} +5 -5
  188. package/dist/{renderer-2LYX6NHN.js → renderer-LJPUCG3U.js} +5 -5
  189. package/dist/{renderer-DAZWHNLI.js → renderer-MGF2NNGG.js} +3 -3
  190. package/dist/{renderer-HX6ICPDX.js → renderer-MVBAQP3M.js} +4 -4
  191. package/dist/{renderer-XOWDERU2.js → renderer-MZIWP55B.js} +5 -5
  192. package/dist/{renderer-MWZC7TMD.js → renderer-N6PM5CSG.js} +7 -7
  193. package/dist/{renderer-ISQJ2ELA.js → renderer-N75E3UVY.js} +5 -5
  194. package/dist/{renderer-53B523PM.js → renderer-ONENGXFQ.js} +7 -7
  195. package/dist/{renderer-RUSQJFFC.js → renderer-PEJF6R2I.js} +2 -2
  196. package/dist/{renderer-36446HSH.js → renderer-QZJZIAT3.js} +2 -2
  197. package/dist/{renderer-UTEEJDGB.js → renderer-SYRH3B62.js} +6 -6
  198. package/dist/{renderer-LNP23NSM.js → renderer-TS5NHOQD.js} +6 -6
  199. package/dist/{renderer-J7ZSTJUE.js → renderer-VNJOZPSH.js} +7 -7
  200. package/dist/{renderer-OUDHH5MV.js → renderer-VNUDN6F5.js} +12 -12
  201. package/dist/{renderer-JYHA6R2D.js → renderer-VUXAAGUG.js} +5 -5
  202. package/dist/{renderer-BXD5KVSR.js → renderer-YJVQT7QG.js} +6 -6
  203. package/dist/{renderer-radial-WFUX3Z3C.js → renderer-radial-4R7AKETK.js} +5 -5
  204. package/dist/{state-parser-KPVW5CRI.js → state-parser-EQBBEKHR.js} +5 -5
  205. package/dist/{state-renderer-ZVEI265C.js → state-renderer-SOGZ2CNN.js} +12 -12
  206. package/dist/{themes-DzIH3Hjv.d.ts → themes-CbJL3w8L.d.ts} +1 -1
  207. package/docs/ai-integration.md +5 -6
  208. package/docs/language-reference.md +69 -105
  209. package/gallery/fixtures/whiteboard.dgmo +1 -0
  210. package/package.json +5 -1
  211. package/dist/chunk-6BQSDF77.js +0 -734
  212. package/dist/chunk-NWSPPGIE.js +0 -60
  213. package/dist/chunk-VBMRZCMQ.js +0 -1465
  214. package/dist/chunk-WZBZXZ6T.js +0 -636
  215. package/dist/dgmo-router-E5O7RJSW.js +0 -101
  216. package/dist/layout-D4L44NRG.js +0 -11
  217. package/dist/parser-YHDGKPZI.js +0 -14
  218. package/dist/renderer-4SE7R22T.js +0 -85
  219. package/dist/renderer-WPN2SXGT.js +0 -29
  220. package/gallery/fixtures/sketch.dgmo +0 -22
@@ -9,7 +9,7 @@ import {
9
9
  stripDefaultModifier,
10
10
  tagAttrKey,
11
11
  validateTagGroupNames
12
- } from "./chunk-4SACN2C5.js";
12
+ } from "./chunk-LGUFJ7Y2.js";
13
13
  import {
14
14
  AliasRegistry,
15
15
  KANBAN_REGISTRY,
@@ -22,7 +22,7 @@ import {
22
22
  splitNameAndMeta,
23
23
  warnUnknownMetaKeys,
24
24
  withTagAliases
25
- } from "./chunk-TIIZIAGS.js";
25
+ } from "./chunk-FUYEXLAN.js";
26
26
  import {
27
27
  resolveColorWithDiagnostic
28
28
  } from "./chunk-3J7O3CU6.js";
@@ -1,3 +1,6 @@
1
+ import {
2
+ markTitleRoot
3
+ } from "./chunk-35A3J4Z5.js";
1
4
  import {
2
5
  tryStripDescriptionKeyword
3
6
  } from "./chunk-IYULMRBE.js";
@@ -11,7 +14,7 @@ import {
11
14
  tagAttrKey,
12
15
  validateTagGroupNames,
13
16
  validateTagValues
14
- } from "./chunk-4SACN2C5.js";
17
+ } from "./chunk-LGUFJ7Y2.js";
15
18
  import {
16
19
  MINDMAP_REGISTRY,
17
20
  OPTION_NOCOLON_RE,
@@ -23,7 +26,7 @@ import {
23
26
  tryParseSharedOption,
24
27
  warnUnknownMetaKeys,
25
28
  withTagAliases
26
- } from "./chunk-TIIZIAGS.js";
29
+ } from "./chunk-FUYEXLAN.js";
27
30
  import {
28
31
  formatDgmoError,
29
32
  makeDgmoError,
@@ -99,6 +102,7 @@ function parseMindmap(content, palette) {
99
102
  parentId: null,
100
103
  lineNumber
101
104
  };
105
+ markTitleRoot(titleRoot);
102
106
  result.roots.push(titleRoot);
103
107
  indentStack.push({ node: titleRoot, indent: -1 });
104
108
  }
@@ -15,7 +15,8 @@ var WHITEBOARD_SHAPE_KINDS = [
15
15
  "rectangle",
16
16
  "ellipse",
17
17
  "database",
18
- "queue"
18
+ "queue",
19
+ "file"
19
20
  ];
20
21
  var WHITEBOARD_ELEMENT_KEYWORDS = [
21
22
  ...WHITEBOARD_SHAPE_KINDS,
@@ -28,6 +29,7 @@ var WHITEBOARD_ELEMENT_KEYWORDS = [
28
29
  ];
29
30
  var WHITEBOARD_STROKE_STYLES = ["solid", "dashed"];
30
31
  var WHITEBOARD_FILLS = ["tint", "solid", "outline"];
32
+ var WHITEBOARD_LABEL_POSITIONS = ["top", "middle"];
31
33
  var WHITEBOARD_HEADS = ["end", "both"];
32
34
  var WHITEBOARD_NOTE_WIDTH = 160;
33
35
  var WHITEBOARD_NOTE_HEIGHT = 99;
@@ -45,6 +47,7 @@ export {
45
47
  WHITEBOARD_ELEMENT_KEYWORDS,
46
48
  WHITEBOARD_STROKE_STYLES,
47
49
  WHITEBOARD_FILLS,
50
+ WHITEBOARD_LABEL_POSITIONS,
48
51
  WHITEBOARD_HEADS,
49
52
  WHITEBOARD_NOTE_WIDTH,
50
53
  WHITEBOARD_NOTE_HEIGHT,
@@ -10,7 +10,7 @@ import {
10
10
  buildPlacedNotes,
11
11
  noteCanvasShift,
12
12
  resolveNotes
13
- } from "./chunk-7SXV7NUS.js";
13
+ } from "./chunk-HH3DHNQA.js";
14
14
  import {
15
15
  measureText,
16
16
  wrapTextToWidth
@@ -105,7 +105,7 @@ function computeNodeSize(node, reserveValueRow) {
105
105
  return { width: w, height: Math.max(NODE_HEIGHT, totalHeight) };
106
106
  }
107
107
  async function layoutBoxesAndLines(parsed, collapseInfo, layoutOptions) {
108
- const { layoutBoxesAndLinesSearch } = await import("./layout-search-BBX2BMEF.js");
108
+ const { layoutBoxesAndLinesSearch } = await import("./layout-search-C2TYUH4L.js");
109
109
  const searchOpts = {
110
110
  ...layoutOptions?.hideDescriptions !== void 0 && {
111
111
  hideDescriptions: layoutOptions.hideDescriptions
@@ -16,13 +16,13 @@ import {
16
16
  } from "./chunk-IN7XI6NO.js";
17
17
  import {
18
18
  parseInfra
19
- } from "./chunk-UXNA2H2V.js";
19
+ } from "./chunk-VLI6AWS3.js";
20
20
  import {
21
21
  ScaleContext
22
22
  } from "./chunk-24YPR5EH.js";
23
23
  import {
24
24
  layoutInlineHeader
25
- } from "./chunk-UIEKW4SG.js";
25
+ } from "./chunk-R5L5E3TC.js";
26
26
  import {
27
27
  TITLE_FONT_SIZE,
28
28
  TITLE_FONT_WEIGHT,
@@ -41,7 +41,7 @@ import {
41
41
  } from "./chunk-XCKNFFKM.js";
42
42
  import {
43
43
  renderIntegratedLegend
44
- } from "./chunk-NMS5XSLX.js";
44
+ } from "./chunk-PGD6CNWO.js";
45
45
  import {
46
46
  getLegendExtent,
47
47
  getMaxLegendReservedHeight
@@ -57,11 +57,11 @@ import {
57
57
  } from "./chunk-ICLB27PZ.js";
58
58
  import {
59
59
  tagAttrKey
60
- } from "./chunk-4SACN2C5.js";
60
+ } from "./chunk-LGUFJ7Y2.js";
61
61
  import {
62
62
  legendInlineRequested,
63
63
  legendSuppressed
64
- } from "./chunk-TIIZIAGS.js";
64
+ } from "./chunk-FUYEXLAN.js";
65
65
  import {
66
66
  LEGEND_CAPSULE_PAD,
67
67
  LEGEND_DOT_R,
@@ -1,10 +1,14 @@
1
1
  import {
2
2
  collapseTree
3
3
  } from "./chunk-BS7SV7C3.js";
4
+ import {
5
+ isTitleRoot,
6
+ markTitleRoot
7
+ } from "./chunk-35A3J4Z5.js";
4
8
 
5
9
  // src/mindmap/collapse.ts
6
10
  function cloneNode(node) {
7
- return {
11
+ const clone = {
8
12
  id: node.id,
9
13
  label: node.label,
10
14
  ...node.description !== void 0 && {
@@ -17,6 +21,7 @@ function cloneNode(node) {
17
21
  ...node.color !== void 0 && { color: node.color },
18
22
  ...node.collapsed !== void 0 && { collapsed: node.collapsed }
19
23
  };
24
+ return isTitleRoot(node) ? markTitleRoot(clone) : clone;
20
25
  }
21
26
  var MINDMAP_SHAPE = {
22
27
  getId: (node) => node.id,
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  resolveNotes,
6
6
  tryCollectNote
7
- } from "./chunk-7SXV7NUS.js";
7
+ } from "./chunk-HH3DHNQA.js";
8
8
  import {
9
9
  displayName,
10
10
  normalizeName
@@ -17,7 +17,7 @@ import {
17
17
  tagAttrKey,
18
18
  validateTagGroupNames,
19
19
  validateTagValues
20
- } from "./chunk-4SACN2C5.js";
20
+ } from "./chunk-LGUFJ7Y2.js";
21
21
  import {
22
22
  ALL_CHART_TYPES,
23
23
  FILL_FAMILY_TOKENS,
@@ -30,7 +30,7 @@ import {
30
30
  parseMetadataRegion,
31
31
  tryParseSharedOption,
32
32
  withTagAliases
33
- } from "./chunk-TIIZIAGS.js";
33
+ } from "./chunk-FUYEXLAN.js";
34
34
  import {
35
35
  resolveColorWithDiagnostic
36
36
  } from "./chunk-3J7O3CU6.js";
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-ICLB27PZ.js";
11
11
  import {
12
12
  fillModeFromOptions
13
- } from "./chunk-TIIZIAGS.js";
13
+ } from "./chunk-FUYEXLAN.js";
14
14
  import {
15
15
  measureText
16
16
  } from "./chunk-KAO7JL4I.js";
@@ -55,7 +55,7 @@ function renderWireframe(container, parsed, layout, palette, isDark, _onClickIte
55
55
  if (isExport) {
56
56
  svg.attr("width", width).attr("height", height);
57
57
  } else {
58
- svg.attr("width", "100%").attr("height", "auto").style("display", "block");
58
+ svg.attr("width", "100%").style("display", "block");
59
59
  }
60
60
  const ctx = {
61
61
  palette,
@@ -19,7 +19,7 @@ import {
19
19
  splitNameAndMeta,
20
20
  tryParseSharedOption,
21
21
  warnUnknownMetaKeys
22
- } from "./chunk-TIIZIAGS.js";
22
+ } from "./chunk-FUYEXLAN.js";
23
23
  import {
24
24
  resolveColorWithDiagnostic
25
25
  } from "./chunk-3J7O3CU6.js";
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  searchPlacement
3
- } from "./chunk-TDAGJJPZ.js";
3
+ } from "./chunk-VNAPEZX2.js";
4
4
  import {
5
5
  buildPlacedNotes,
6
6
  noteCanvasShift,
7
7
  resolveNotes
8
- } from "./chunk-7SXV7NUS.js";
8
+ } from "./chunk-HH3DHNQA.js";
9
9
  import {
10
10
  measureText
11
11
  } from "./chunk-KAO7JL4I.js";
@@ -17,7 +17,7 @@ import {
17
17
  stripDefaultModifier,
18
18
  tagAttrKey,
19
19
  validateTagGroupNames
20
- } from "./chunk-4SACN2C5.js";
20
+ } from "./chunk-LGUFJ7Y2.js";
21
21
  import {
22
22
  AliasRegistry,
23
23
  INFRA_BEHAVIOR_KEY_SET,
@@ -31,7 +31,7 @@ import {
31
31
  tryParseSharedOption,
32
32
  warnUnknownMetaKeys,
33
33
  withTagAliases
34
- } from "./chunk-TIIZIAGS.js";
34
+ } from "./chunk-FUYEXLAN.js";
35
35
  import {
36
36
  isRecognizedColorName
37
37
  } from "./chunk-3J7O3CU6.js";
@@ -4,7 +4,7 @@ import {
4
4
  countSplineCrossings,
5
5
  deroutePierces,
6
6
  searchBudget
7
- } from "./chunk-6JCTW74W.js";
7
+ } from "./chunk-5G4DOOX2.js";
8
8
 
9
9
  // src/utils/placement-search.ts
10
10
  var SEARCH_RANKERS = ["tight-tree", "longest-path"];
@@ -5,7 +5,7 @@ import {
5
5
  parseFirstLine,
6
6
  splitNameAndMeta,
7
7
  warnUnknownMetaKeys
8
- } from "./chunk-TIIZIAGS.js";
8
+ } from "./chunk-FUYEXLAN.js";
9
9
  import {
10
10
  makeDgmoError,
11
11
  makeFail,
@@ -18,10 +18,10 @@ import {
18
18
  UNTAGGED_TAG_COLOR,
19
19
  resolveTagColor,
20
20
  tagAttrKey
21
- } from "./chunk-4SACN2C5.js";
21
+ } from "./chunk-LGUFJ7Y2.js";
22
22
  import {
23
23
  fillModeFromOptions
24
- } from "./chunk-TIIZIAGS.js";
24
+ } from "./chunk-FUYEXLAN.js";
25
25
  import {
26
26
  contrastText,
27
27
  mix,
@@ -1,3 +1,6 @@
1
+ import {
2
+ isTitleRoot
3
+ } from "./chunk-35A3J4Z5.js";
1
4
  import {
2
5
  ScaleContext
3
6
  } from "./chunk-24YPR5EH.js";
@@ -10,7 +13,7 @@ import {
10
13
  import {
11
14
  injectDefaultTagMetadata,
12
15
  resolveTagColor
13
- } from "./chunk-4SACN2C5.js";
16
+ } from "./chunk-LGUFJ7Y2.js";
14
17
  import {
15
18
  measureText,
16
19
  truncateText
@@ -188,17 +191,14 @@ function layoutMindmap(parsed, _palette, options) {
188
191
  collectAll(roots);
189
192
  injectDefaultTagMetadata(allNodes, parsed.tagGroups);
190
193
  const tagGroups = parsed.tagGroups;
191
- if (roots.length === 1) {
192
- return layoutSingleRoot(
193
- roots[0],
194
- hiddenCounts,
195
- hideDescriptions,
196
- tagGroups,
197
- activeTagGroup,
198
- sc
199
- );
200
- }
201
- return layoutMultiRoot(
194
+ const result = roots.length === 1 ? layoutSingleRoot(
195
+ roots[0],
196
+ hiddenCounts,
197
+ hideDescriptions,
198
+ tagGroups,
199
+ activeTagGroup,
200
+ sc
201
+ ) : layoutMultiRoot(
202
202
  roots,
203
203
  parsed,
204
204
  hiddenCounts,
@@ -207,6 +207,14 @@ function layoutMindmap(parsed, _palette, options) {
207
207
  activeTagGroup,
208
208
  sc
209
209
  );
210
+ const titleRootId = roots.find(isTitleRoot)?.id;
211
+ if (titleRootId === void 0) return result;
212
+ return {
213
+ ...result,
214
+ nodes: result.nodes.map(
215
+ (n) => n.id === titleRootId ? { ...n, hasChildren: false } : n
216
+ )
217
+ };
210
218
  }
211
219
  function layoutSingleRoot(root, hiddenCounts, hideDescriptions, tagGroups = [], activeTagGroup = null, sc) {
212
220
  const positioned = [];
@@ -11,7 +11,7 @@ import {
11
11
  tagAttrKey,
12
12
  validateTagGroupNames,
13
13
  validateTagValues
14
- } from "./chunk-4SACN2C5.js";
14
+ } from "./chunk-LGUFJ7Y2.js";
15
15
  import {
16
16
  AliasRegistry,
17
17
  OPTION_NOCOLON_RE,
@@ -23,7 +23,7 @@ import {
23
23
  splitNameAndMeta,
24
24
  warnUnknownMetaKeys,
25
25
  withTagAliases
26
- } from "./chunk-TIIZIAGS.js";
26
+ } from "./chunk-FUYEXLAN.js";
27
27
  import {
28
28
  formatDgmoError,
29
29
  makeDgmoError,
@@ -7,10 +7,10 @@ import {
7
7
  mutedFill,
8
8
  resolveCellColor,
9
9
  resolveColorMode
10
- } from "./chunk-CN4RDJDV.js";
10
+ } from "./chunk-5LG526X7.js";
11
11
  import {
12
12
  layoutInlineHeader
13
- } from "./chunk-UIEKW4SG.js";
13
+ } from "./chunk-R5L5E3TC.js";
14
14
  import {
15
15
  TITLE_FONT_SIZE,
16
16
  TITLE_FONT_WEIGHT,
@@ -18,7 +18,7 @@ import {
18
18
  } from "./chunk-VLC6WNRD.js";
19
19
  import {
20
20
  renderIntegratedLegend
21
- } from "./chunk-NMS5XSLX.js";
21
+ } from "./chunk-PGD6CNWO.js";
22
22
  import {
23
23
  getLegendExtent,
24
24
  getMaxLegendReservedHeight
@@ -28,7 +28,7 @@ import {
28
28
  } from "./chunk-ICLB27PZ.js";
29
29
  import {
30
30
  tagAttrKey
31
- } from "./chunk-4SACN2C5.js";
31
+ } from "./chunk-LGUFJ7Y2.js";
32
32
  import {
33
33
  LEGEND_GROUP_GAP
34
34
  } from "./chunk-UOCWYLYT.js";
@@ -11,7 +11,7 @@ import {
11
11
  matchTagBlockHeading,
12
12
  stripDefaultModifier,
13
13
  tagAttrKey
14
- } from "./chunk-4SACN2C5.js";
14
+ } from "./chunk-LGUFJ7Y2.js";
15
15
  import {
16
16
  FAMILY_PERSON_REGISTRY,
17
17
  FAMILY_UNION_REGISTRY,
@@ -26,7 +26,7 @@ import {
26
26
  tokenizeQuoteAware,
27
27
  tryParseSharedOption,
28
28
  withTagAliases
29
- } from "./chunk-TIIZIAGS.js";
29
+ } from "./chunk-FUYEXLAN.js";
30
30
  import {
31
31
  nord,
32
32
  resolveColor
@@ -5,7 +5,7 @@ import {
5
5
  normalizeNumericToken,
6
6
  parseFirstLine,
7
7
  tryParseSharedOption
8
- } from "./chunk-TIIZIAGS.js";
8
+ } from "./chunk-FUYEXLAN.js";
9
9
  import {
10
10
  makeDgmoError,
11
11
  makeFail
@@ -13,7 +13,7 @@ import {
13
13
  tagAttrKey,
14
14
  validateTagGroupNames,
15
15
  validateTagValues
16
- } from "./chunk-4SACN2C5.js";
16
+ } from "./chunk-LGUFJ7Y2.js";
17
17
  import {
18
18
  ALL_CHART_TYPES,
19
19
  AliasRegistry,
@@ -27,7 +27,7 @@ import {
27
27
  tryParseSharedOption,
28
28
  warnUnknownMetaKeys,
29
29
  withTagAliases
30
- } from "./chunk-TIIZIAGS.js";
30
+ } from "./chunk-FUYEXLAN.js";
31
31
  import {
32
32
  formatDgmoError,
33
33
  makeDgmoError,
@@ -5,10 +5,10 @@ import {
5
5
  import {
6
6
  UNTAGGED_TAG_COLOR,
7
7
  tagAttrKey
8
- } from "./chunk-4SACN2C5.js";
8
+ } from "./chunk-LGUFJ7Y2.js";
9
9
  import {
10
10
  legendSuppressed
11
- } from "./chunk-TIIZIAGS.js";
11
+ } from "./chunk-FUYEXLAN.js";
12
12
  import {
13
13
  LEGEND_CAPSULE_PAD,
14
14
  LEGEND_DOT_R,
@@ -28,6 +28,7 @@ import {
28
28
  // src/shape-caps.ts
29
29
  var CYLINDER_RY = 8;
30
30
  var QUEUE_CAP = 16;
31
+ var FILE_WAVE = 10;
31
32
 
32
33
  // src/c4/layout.ts
33
34
  import dagre from "@dagrejs/dagre";
@@ -1737,6 +1738,7 @@ function layoutC4Deployment(parsed, activeTagGroup) {
1737
1738
  export {
1738
1739
  CYLINDER_RY,
1739
1740
  QUEUE_CAP,
1741
+ FILE_WAVE,
1740
1742
  rollUpContextRelationships,
1741
1743
  collectCardMetadata,
1742
1744
  computeC4NodeDimensions,
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-VLC6WNRD.js";
7
7
  import {
8
8
  renderIntegratedLegend
9
- } from "./chunk-NMS5XSLX.js";
9
+ } from "./chunk-PGD6CNWO.js";
10
10
  import {
11
11
  getMaxLegendReservedHeight
12
12
  } from "./chunk-JILEYZ2V.js";
@@ -20,7 +20,7 @@ import {
20
20
  import {
21
21
  fillModeFromOptions,
22
22
  legendSuppressed
23
- } from "./chunk-TIIZIAGS.js";
23
+ } from "./chunk-FUYEXLAN.js";
24
24
  import {
25
25
  measureText,
26
26
  truncateText,
@@ -1,7 +1,8 @@
1
1
  import {
2
2
  collapseMindmapTree
3
- } from "./chunk-UZ7EZW3B.js";
3
+ } from "./chunk-TO53KK2P.js";
4
4
  import "./chunk-BS7SV7C3.js";
5
+ import "./chunk-35A3J4Z5.js";
5
6
  import "./chunk-YLJ4XMA6.js";
6
7
  export {
7
8
  collapseMindmapTree
@@ -1,18 +1,18 @@
1
1
  import {
2
2
  GROUP_ONLY_METADATA,
3
3
  STATE_KEYWORDS
4
- } from "./chunk-GI5R5B3S.js";
4
+ } from "./chunk-D7DGLJ7N.js";
5
5
  import {
6
6
  ALL_MARKERS
7
7
  } from "./chunk-4WW3SGMH.js";
8
8
  import {
9
9
  BUILT_IN_PALETTE_IDS
10
10
  } from "./chunk-3UR4F7FE.js";
11
- import "./chunk-4SACN2C5.js";
11
+ import "./chunk-LGUFJ7Y2.js";
12
12
  import {
13
13
  ALL_CHART_TYPES,
14
14
  chartTypes
15
- } from "./chunk-TIIZIAGS.js";
15
+ } from "./chunk-FUYEXLAN.js";
16
16
  import "./chunk-3J7O3CU6.js";
17
17
  import "./chunk-BYU54C3S.js";
18
18
  import "./chunk-YLJ4XMA6.js";
@@ -730,17 +730,6 @@ var COMPLETION_REGISTRY = /* @__PURE__ */ new Map([
730
730
  seeded: { description: "Force seeded mode (full skeleton from day 0)" }
731
731
  })
732
732
  ],
733
- [
734
- "sketch",
735
- // GUI-first canvas: shapes carry their own metadata (shape:/at:); the only
736
- // directives are legend/fill/description toggles.
737
- withGlobals({
738
- "no-legend": { description: "Hide the tag legend" },
739
- "no-descriptions": {
740
- description: "Hide card metadata rows \u2014 the name fills each card"
741
- }
742
- })
743
- ],
744
733
  [
745
734
  "whiteboard",
746
735
  // Canvas-authored free placement: every line is an element; the only
@@ -815,7 +804,6 @@ var COMPLETION_REGISTRY = /* @__PURE__ */ new Map([
815
804
  ]
816
805
  ]);
817
806
  var FILL_FAMILY_CAPABLE = /* @__PURE__ */ new Set([
818
- "sketch",
819
807
  "flowchart",
820
808
  "state",
821
809
  "sequence",
@@ -898,7 +886,6 @@ var STRUCTURAL_KEYWORDS = /* @__PURE__ */ new Map([
898
886
  ["mindmap", ["tag"]],
899
887
  ["treemap", ["tag"]],
900
888
  ["block", ["tag"]],
901
- ["sketch", ["tag"]],
902
889
  [
903
890
  "whiteboard",
904
891
  [
@@ -906,6 +893,7 @@ var STRUCTURAL_KEYWORDS = /* @__PURE__ */ new Map([
906
893
  "ellipse",
907
894
  "database",
908
895
  "queue",
896
+ "file",
909
897
  "note",
910
898
  "arrow",
911
899
  "line",
@@ -989,15 +977,6 @@ var REFERENCE_GRAMMAR = /* @__PURE__ */ new Map([
989
977
  "boxes-and-lines",
990
978
  { hasReferenceGrammar: true, referenceOperators: ["->", "<->"] }
991
979
  ],
992
- // Sketch edges reference aliases / unambiguous labels (spec §31.4);
993
- // includes the net-new headless forms.
994
- [
995
- "sketch",
996
- {
997
- hasReferenceGrammar: true,
998
- referenceOperators: ["->", "<->", "~>", "<~>", "--", "~~"]
999
- }
1000
- ],
1001
980
  // Venn references prior sets via the `+` intersection operator (not an arrow).
1002
981
  ["venn", { hasReferenceGrammar: true, referenceOperators: ["+"] }],
1003
982
  // Family unions reference a prior/again-named person via the `+` couple operator.
@@ -1041,19 +1020,9 @@ var PIPE_METADATA = /* @__PURE__ */ new Map([
1041
1020
  },
1042
1021
  fill: {
1043
1022
  description: "Shape fill: `solid` or `outline` (a pale tint is the default)"
1044
- }
1045
- }
1046
- }
1047
- ],
1048
- [
1049
- "sketch",
1050
- {
1051
- node: {
1052
- at: {
1053
- description: "Half-slot position `at: C R` (integers; omit to flow-place)"
1054
1023
  },
1055
- collapsed: {
1056
- description: "Bare flag on a [Box] line \u2014 start folded"
1024
+ label: {
1025
+ description: "Shape label position: `top` or `middle` (automatic: top on a rectangle holding shapes)"
1057
1026
  }
1058
1027
  }
1059
1028
  }
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Copy-as-image for the embed toolbar's `.dgmo-copy-image` button — its own
3
+ * zero-import entry (`@diagrammo/dgmo/copy-image`) so every client surface
4
+ * (the auto script, remark-dgmo's `bindDgmo`, the Obsidian plugin) shares ONE
5
+ * rasterizer instead of mirroring it the way copy-source is mirrored.
6
+ *
7
+ * Copies the diagram as it is currently shown — the visible `.dgmo-light` /
8
+ * `.dgmo-dark` half of a dual render, or the single `.dgmo-svg` — as a PNG at
9
+ * `COPY_IMAGE_SCALE`, filled with the wrapper's `data-dgmo-bg` so a transparent
10
+ * embed doesn't paste as dark text on nothing.
11
+ *
12
+ * 🔴 `navigator.clipboard.write` must be CALLED inside the click, before any
13
+ * await: Safari drops the user activation across an await and then refuses the
14
+ * write. Hence the Blob goes in as a Promise and the PNG is drawn inside
15
+ * the ClipboardItem.
16
+ *
17
+ * Fonts: an SVG drawn through `<img>` cannot load web fonts. dgmo draws text in
18
+ * a system font stack, so labels still match; a host font injected by page CSS
19
+ * would not survive.
20
+ */
21
+ /**
22
+ * True when this browser can put a PNG on the clipboard. Hide the button if not.
23
+ * Pass the block's own window for a pop-out (Obsidian): the write is refused
24
+ * unless it goes through the window whose document has focus.
25
+ */
26
+ declare function canCopyDiagramImage(view?: Window | null): boolean;
27
+ /**
28
+ * Copy the diagram in the `.dgmo` block containing `fromButton` to the
29
+ * clipboard as a PNG. Resolves false on any failure (no SVG, a tainted canvas
30
+ * from an external `<image>`, a refused clipboard) — never throws.
31
+ */
32
+ declare function copyDiagramImage(fromButton: Element): Promise<boolean>;
33
+
34
+ export { canCopyDiagramImage, copyDiagramImage };