@diagrammo/dgmo 0.50.2 → 0.52.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 (257) hide show
  1. package/.cursorrules +15 -19
  2. package/.github/copilot-instructions.md +15 -19
  3. package/.windsurfrules +15 -19
  4. package/SKILL.md +15 -19
  5. package/dist/advanced.d.ts +155 -65
  6. package/dist/advanced.js +231 -189
  7. package/dist/{analyzer-UYKBXAKR.js → analyzer-BJ54GIFB.js} +3 -3
  8. package/dist/auto.css +31 -8
  9. package/dist/auto.d.ts +6 -0
  10. package/dist/auto.js +171 -133
  11. package/dist/auto.mjs +3062 -1478
  12. package/dist/block.css +28 -8
  13. package/dist/block.js +138 -72
  14. package/dist/charts-d3-MXEP6BNP.js +26 -0
  15. package/dist/{chunk-3YPY3OXD.js → chunk-3HF5YEFJ.js} +17 -7
  16. package/dist/{chunk-4MJ7M6YL.js → chunk-3HGU63UY.js} +14 -13
  17. package/dist/chunk-3LK5DNED.js +35 -0
  18. package/dist/{chunk-3Y2DRD7S.js → chunk-3QD7VP3U.js} +9 -4
  19. package/dist/{chunk-6BFZKBGD.js → chunk-3YRPZ7ZZ.js} +2 -2
  20. package/dist/{chunk-WW32K72E.js → chunk-44VCIPHF.js} +25 -21
  21. package/dist/{chunk-TN35C5KM.js → chunk-4AQRFDXL.js} +2 -2
  22. package/dist/{chunk-HHXOONLX.js → chunk-4B5YISOR.js} +38 -1
  23. package/dist/{chunk-PGEGPSCZ.js → chunk-4IHAV6O7.js} +2 -2
  24. package/dist/{chunk-7L3R6I3U.js → chunk-4UNQ6X24.js} +10 -7
  25. package/dist/{chunk-O7NUCTFU.js → chunk-4YFKQ5WT.js} +7 -4
  26. package/dist/{chunk-5WFIYXQ6.js → chunk-5223KXFD.js} +122 -242
  27. package/dist/{chunk-PFHVU7UA.js → chunk-5BHJZH62.js} +3 -3
  28. package/dist/{chunk-QYTPPDAO.js → chunk-5HILBT7X.js} +2 -2
  29. package/dist/{chunk-GKC3HILQ.js → chunk-5NGAO4QK.js} +27 -4
  30. package/dist/{chunk-IAEC4KLA.js → chunk-5QKQSSPO.js} +2 -2
  31. package/dist/{chunk-DSWVNQVS.js → chunk-5RP7JRVP.js} +4 -59
  32. package/dist/{chunk-MCZ5LBZD.js → chunk-5SEVICBT.js} +8 -8
  33. package/dist/{chunk-GBE54KY6.js → chunk-6EJITS44.js} +8 -5
  34. package/dist/{chunk-BBGDM4NQ.js → chunk-6HQH6JZE.js} +35 -16
  35. package/dist/{chunk-66NVRO4K.js → chunk-6LBQ7ELG.js} +17 -18
  36. package/dist/{chunk-4XK3FLFB.js → chunk-6NYWYNBI.js} +3 -3
  37. package/dist/{chunk-VBYSIOOY.js → chunk-75G3Q4DK.js} +3 -3
  38. package/dist/{chunk-3NODSS6A.js → chunk-77FGAVZC.js} +13 -10
  39. package/dist/{chunk-6IAA2QQ2.js → chunk-7BIZCTAX.js} +2 -2
  40. package/dist/{chunk-TWQUYVP3.js → chunk-7DF4J4RL.js} +4 -4
  41. package/dist/{chunk-66RUL3XF.js → chunk-7KINELPI.js} +111 -49
  42. package/dist/{chunk-L3UHP6TD.js → chunk-7L4UJOY6.js} +1 -2
  43. package/dist/{chunk-QJP6PG7F.js → chunk-7QE3XMRK.js} +19 -18
  44. package/dist/{chunk-P7CE7LXL.js → chunk-AAXZDUOV.js} +18 -17
  45. package/dist/{chunk-SXRTRMEE.js → chunk-AL672HNE.js} +3 -3
  46. package/dist/chunk-APKUAJ2L.js +220 -0
  47. package/dist/{chunk-SCHXJTZL.js → chunk-ARGMQ3H4.js} +2 -2
  48. package/dist/{chunk-HEVYAHLW.js → chunk-AUIM2NVH.js} +5 -5
  49. package/dist/{chunk-3LH5CLP4.js → chunk-BKVOYV6I.js} +143 -6
  50. package/dist/{chunk-RZ6YKEUJ.js → chunk-BPIZNB5O.js} +17 -15
  51. package/dist/{chunk-QROYX7TT.js → chunk-BPY242XU.js} +6 -4
  52. package/dist/{chunk-OTAL43EH.js → chunk-BRENJ2BQ.js} +39 -3
  53. package/dist/{chunk-FA6K3FWM.js → chunk-CCNDLW7Z.js} +44 -22
  54. package/dist/{chunk-2KGXHFYK.js → chunk-CIRFIL4M.js} +49 -29
  55. package/dist/chunk-DAOFNU6J.js +283 -0
  56. package/dist/{chunk-QJJZSROI.js → chunk-DYWQFQJP.js} +48 -38
  57. package/dist/{chunk-XEGTMVYY.js → chunk-EMLPOL77.js} +15 -8
  58. package/dist/{chunk-NWED7CYO.js → chunk-FHGVORFO.js} +29 -25
  59. package/dist/{chunk-U2HGPLZS.js → chunk-FQ7HTV52.js} +17 -2
  60. package/dist/{chunk-H73FP42Q.js → chunk-FQMUHRVC.js} +70 -31
  61. package/dist/{chunk-BTUTZMPT.js → chunk-FT3ZYWET.js} +108 -42
  62. package/dist/{chunk-T5SHNNGP.js → chunk-FUPF2UYQ.js} +92 -34
  63. package/dist/{chunk-3XPUDB7B.js → chunk-FY5MSZAP.js} +279 -39
  64. package/dist/{chunk-M5RXSRO2.js → chunk-GCYTI3DE.js} +42 -33
  65. package/dist/{chunk-DN66GPY5.js → chunk-GJFAMOGK.js} +24 -3
  66. package/dist/{chunk-F2L5GCQ4.js → chunk-GU46PPT3.js} +3 -3
  67. package/dist/{chunk-6IUAK7RZ.js → chunk-H6PI3KJT.js} +2 -2
  68. package/dist/{chunk-ONA5KPV3.js → chunk-H7KENAZO.js} +18 -14
  69. package/dist/{chunk-SQLNBA64.js → chunk-HBPDFCQY.js} +3 -3
  70. package/dist/{chunk-SCQ5VPUF.js → chunk-HFMYN6N2.js} +2 -2
  71. package/dist/{chunk-FJUNPCYI.js → chunk-HHKO6SKY.js} +2 -2
  72. package/dist/{chunk-DZXYF2F5.js → chunk-HQQNCY7W.js} +21 -8
  73. package/dist/{chunk-7TV5Y53Y.js → chunk-HWX6ZHF3.js} +3 -3
  74. package/dist/{chunk-3P2DKJCG.js → chunk-ICPJPQ5C.js} +2 -2
  75. package/dist/{chunk-VUJGMJE6.js → chunk-IM6PDDCE.js} +4 -4
  76. package/dist/{chunk-JJUOHGX2.js → chunk-INE5YJBZ.js} +13 -8
  77. package/dist/{chunk-HTMN2Z6U.js → chunk-J6QROYDA.js} +58 -11
  78. package/dist/{chunk-NX4EQS3U.js → chunk-J76PIKAT.js} +2 -2
  79. package/dist/{chunk-SVTI362O.js → chunk-J7KJR3R6.js} +129 -109
  80. package/dist/{chunk-JEUJOX5X.js → chunk-J7TLCB2Q.js} +2 -2
  81. package/dist/{chunk-O7WP4ZD4.js → chunk-JED6ZDEE.js} +2 -2
  82. package/dist/{chunk-J6K7RP6P.js → chunk-JRCOYRRH.js} +19 -7
  83. package/dist/{chunk-7QKLIMRZ.js → chunk-K2I2XOZD.js} +46 -51
  84. package/dist/{chunk-EAMEADTV.js → chunk-K4EOKJA6.js} +96 -24
  85. package/dist/{chunk-5OWVC2A6.js → chunk-KGVZ5VGH.js} +13 -10
  86. package/dist/{chunk-DFTFPYUD.js → chunk-LBMS4AW6.js} +22 -21
  87. package/dist/{chunk-VVW3F3MD.js → chunk-LGT3PZCJ.js} +27 -19
  88. package/dist/{chunk-OMNGQPEZ.js → chunk-LTXOLDUZ.js} +9 -6
  89. package/dist/{chunk-Q4V4XQWV.js → chunk-MUE65OTD.js} +5 -4
  90. package/dist/{chunk-5GJYGP5Z.js → chunk-MUVJ57EP.js} +14 -18
  91. package/dist/{chunk-CLD2OKV7.js → chunk-MX2EY5Y7.js} +2 -2
  92. package/dist/{chunk-OTQKUHRS.js → chunk-NNS4E7CW.js} +6 -4
  93. package/dist/{chunk-NNAAJVBU.js → chunk-NR5HCAUD.js} +1 -1
  94. package/dist/{chunk-KFZYNWWO.js → chunk-ONU3U4GL.js} +4 -4
  95. package/dist/{chunk-YNRDWYZP.js → chunk-OQKP2X3D.js} +170 -51
  96. package/dist/{chunk-AHGF2YYA.js → chunk-OTOHI4JO.js} +2 -2
  97. package/dist/{chunk-EOFPYPAU.js → chunk-P3NRSSUU.js} +51 -11
  98. package/dist/{chunk-QXKWYZNR.js → chunk-PRI2OD4E.js} +10 -3
  99. package/dist/{chunk-U6EQI3U6.js → chunk-QBZYACOG.js} +3 -3
  100. package/dist/{chunk-C2CVAM3U.js → chunk-QGATPIPX.js} +170 -91
  101. package/dist/{chunk-PZFVK3IH.js → chunk-QHXCAEMX.js} +8 -5
  102. package/dist/{chunk-BH3UYK36.js → chunk-QJMKPUYK.js} +15 -5
  103. package/dist/{chunk-HQCHYB5F.js → chunk-QOOUC2J5.js} +2 -2
  104. package/dist/{chunk-Z6XJQ6KO.js → chunk-QVENJMNX.js} +2 -2
  105. package/dist/{chunk-IUMPEA64.js → chunk-QZX5S6R3.js} +4 -4
  106. package/dist/{chunk-I7F2A35O.js → chunk-R3YSD62R.js} +25 -47
  107. package/dist/{chunk-NU3XLTGP.js → chunk-REJAIQ5S.js} +4 -4
  108. package/dist/{chunk-2C56LEML.js → chunk-ROOE4R4Y.js} +8 -5
  109. package/dist/{chunk-XHVV4NVW.js → chunk-RT7ACF77.js} +12 -2
  110. package/dist/{chunk-I2WKW7C7.js → chunk-SMRFPVLQ.js} +3 -3
  111. package/dist/{chunk-VDOOQZUD.js → chunk-SWSIKFEB.js} +4 -4
  112. package/dist/{chunk-HLJVEAOF.js → chunk-T4A4TSTJ.js} +19 -45
  113. package/dist/{chunk-KHEYDLMT.js → chunk-TJVLKNGR.js} +20 -10
  114. package/dist/{chunk-GL5UZ6NY.js → chunk-TPFKKXCB.js} +3 -3
  115. package/dist/{chunk-X6EZPSW6.js → chunk-TTIM6YTT.js} +31 -21
  116. package/dist/{chunk-BCYVE3N5.js → chunk-TYS6CSS5.js} +2 -2
  117. package/dist/{chunk-T4VOVZT5.js → chunk-UBLHQTLV.js} +15 -14
  118. package/dist/{chunk-3LKM6FMW.js → chunk-UNURMIQO.js} +2 -2
  119. package/dist/{chunk-TSA237IM.js → chunk-VILVLS7P.js} +5 -3
  120. package/dist/{chunk-HGN652MU.js → chunk-VL2O2F3W.js} +2 -2
  121. package/dist/{chunk-3XGZF2QJ.js → chunk-VQOCMUWI.js} +39 -28
  122. package/dist/{chunk-P6T66CCZ.js → chunk-WBM7ZNDI.js} +3 -2
  123. package/dist/{chunk-CMCR5WBW.js → chunk-WBRZJOEC.js} +3 -3
  124. package/dist/{chunk-5LWQH6QV.js → chunk-WCT3NYCV.js} +1 -1
  125. package/dist/{chunk-C4GQDB5L.js → chunk-WRNFDFPU.js} +2 -2
  126. package/dist/{chunk-6HJBFVLO.js → chunk-XD6ZYURY.js} +9 -4
  127. package/dist/{chunk-C63UWAKM.js → chunk-Y2ZE3MSG.js} +2 -2
  128. package/dist/{chunk-7UEMZREK.js → chunk-YAA6IID3.js} +2 -2
  129. package/dist/{chunk-F7BFXWNQ.js → chunk-YIBAWQGJ.js} +7 -4
  130. package/dist/{chunk-PH5X4GIP.js → chunk-YTMTPUH4.js} +8 -5
  131. package/dist/{chunk-3UIKSPFB.js → chunk-Z5QVYKR7.js} +11 -3
  132. package/dist/{chunk-KQ57MHRO.js → chunk-ZEF5M5MB.js} +155 -87
  133. package/dist/{chunk-LE4MYMLI.js → chunk-ZJV7GYR4.js} +6 -6
  134. package/dist/{chunk-XJLKLU4D.js → chunk-ZNWAYU6N.js} +11 -7
  135. package/dist/cli.cjs +165 -148
  136. package/dist/clock.js +105 -25
  137. package/dist/countdown.js +208 -82
  138. package/dist/dgmo-router-X7ZGAPIE.js +86 -0
  139. package/dist/dimensions-45H6JQEY.js +22 -0
  140. package/dist/editor.js +17 -2
  141. package/dist/element.d.ts +6 -0
  142. package/dist/element.js +172 -134
  143. package/dist/element.mjs +3026 -1463
  144. package/dist/{flowchart-parser-OE4WHLTF.js → flowchart-parser-UKELHBSB.js} +4 -4
  145. package/dist/{flowchart-renderer-GPCSMTOR.js → flowchart-renderer-MNCDS7MV.js} +10 -10
  146. package/dist/highlight.d.ts +21 -1
  147. package/dist/highlight.js +106 -3
  148. package/dist/index.d.ts +2 -2
  149. package/dist/index.js +59 -57
  150. package/dist/{layout-FWODLIMP.js → layout-2L3WMRYU.js} +6 -6
  151. package/dist/{layout-7SKMFYHL.js → layout-46N4JJYK.js} +5 -5
  152. package/dist/{layout-7H4H46CS.js → layout-7QXCNOVS.js} +3 -3
  153. package/dist/layout-A4XWNVID.js +14 -0
  154. package/dist/{layout-46366KBT.js → layout-A5UHRWVH.js} +3 -3
  155. package/dist/{layout-NXG63LWH.js → layout-AM2JWW3X.js} +4 -4
  156. package/dist/{layout-DC4TVXER.js → layout-EE6GE46Y.js} +5 -5
  157. package/dist/{layout-FGQWRYYW.js → layout-F4WO357A.js} +3 -3
  158. package/dist/layout-G23F7LDH.js +9 -0
  159. package/dist/{layout-QNUQLEHU.js → layout-GM4UGR7B.js} +5 -4
  160. package/dist/{layout-7MZ5NF2N.js → layout-GQQJXNYH.js} +5 -5
  161. package/dist/{layout-5BG6DFCU.js → layout-IIE2S5FK.js} +6 -6
  162. package/dist/{layout-34CLNICW.js → layout-OAC4PEAC.js} +5 -5
  163. package/dist/layout-VMCRX66I.js +14 -0
  164. package/dist/{layout-PUQCB6AN.js → layout-ZDOSXL5G.js} +7 -7
  165. package/dist/{layout-search-QS44PI5R.js → layout-search-55FU6HD3.js} +6 -157
  166. package/dist/map-data/gazetteer.json +1 -1
  167. package/dist/{palettes-PRJ2RI6D.js → palettes-UDLZ2SA4.js} +2 -2
  168. package/dist/{parser-D5VILGN2.js → parser-2ECN6JA2.js} +4 -4
  169. package/dist/{parser-LWKKBNSA.js → parser-4WTIHM5J.js} +3 -3
  170. package/dist/{parser-DFFEDKHH.js → parser-5H2BTSJQ.js} +3 -3
  171. package/dist/{parser-4NO6VZ6S.js → parser-75KVXUNS.js} +4 -4
  172. package/dist/{parser-VKOJM7KS.js → parser-774AC53T.js} +4 -4
  173. package/dist/{parser-IBWNAPY4.js → parser-BE4YCSRU.js} +3 -3
  174. package/dist/{parser-4AI5ZN5F.js → parser-CNGUQUQI.js} +3 -3
  175. package/dist/{parser-36HVKU5U.js → parser-DEUUSQIN.js} +7 -6
  176. package/dist/{parser-H3XEPFPV.js → parser-DQAFLUJB.js} +4 -4
  177. package/dist/{parser-5OXGPNBF.js → parser-EYCKNKQA.js} +5 -5
  178. package/dist/{parser-TGQZJ5OT.js → parser-FXISIU6A.js} +4 -4
  179. package/dist/{parser-JJR52VAT.js → parser-GTB4XC7P.js} +5 -5
  180. package/dist/{parser-AGVYTQXV.js → parser-GVEPAUSD.js} +4 -4
  181. package/dist/{parser-WAV5JRPT.js → parser-HSQGTY4G.js} +4 -4
  182. package/dist/{parser-YS7TOS2K.js → parser-HVKRINUS.js} +3 -3
  183. package/dist/{parser-W4PQUGX3.js → parser-J5MIEYO4.js} +5 -5
  184. package/dist/parser-KMZIXLDZ.js +13 -0
  185. package/dist/{parser-HYRTF3DO.js → parser-LJHXWSXU.js} +3 -3
  186. package/dist/{parser-KCR2WS3V.js → parser-PT3W72G5.js} +4 -4
  187. package/dist/{parser-CVMEDULU.js → parser-SBJQDPHL.js} +4 -4
  188. package/dist/{parser-RZPVAQVX.js → parser-SUWWWCMX.js} +4 -3
  189. package/dist/{parser-TXND652E.js → parser-SXDRNZOA.js} +4 -4
  190. package/dist/parser-UMILOW3M.js +14 -0
  191. package/dist/{parser-RV4M6AS2.js → parser-UP3AZ367.js} +4 -4
  192. package/dist/{parser-IJBMRXMC.js → parser-WHPRV3X5.js} +5 -5
  193. package/dist/{parser-MPCE5JBG.js → parser-WX3UODSJ.js} +4 -4
  194. package/dist/{parser-K3XXLMUW.js → parser-XCIEN3KN.js} +4 -4
  195. package/dist/{parser-AXKBDGNO.js → parser-XIRTUMVN.js} +5 -5
  196. package/dist/{parser-B5FVS7O6.js → parser-YKCGIG45.js} +3 -3
  197. package/dist/{parser-PSA4UBSP.js → parser-YKYMQG3B.js} +4 -4
  198. package/dist/{parser-MTOMTWTD.js → parser-ZGM2OJ6Y.js} +6 -5
  199. package/dist/{parser-CSFUN3CT.js → parser-ZL5QUFVH.js} +5 -4
  200. package/dist/pert.d.ts +2 -2
  201. package/dist/{renderer-PPIHO5FI.js → renderer-3F7OS2AX.js} +14 -13
  202. package/dist/{renderer-SBS3YWU5.js → renderer-4QB4K7Q3.js} +9 -9
  203. package/dist/{renderer-GHPZMFU2.js → renderer-5DAKMIU2.js} +3 -3
  204. package/dist/{renderer-R2WNIC2C.js → renderer-5H4SY7YY.js} +9 -9
  205. package/dist/{renderer-DAXMXIKD.js → renderer-5PIQPFOX.js} +5 -4
  206. package/dist/{renderer-45PSOL3E.js → renderer-6MU37QF5.js} +6 -6
  207. package/dist/renderer-AQVMWJ4M.js +27 -0
  208. package/dist/{renderer-A5VE5BCI.js → renderer-BDDW6K7N.js} +9 -9
  209. package/dist/{renderer-AUW2BE6G.js → renderer-BNB3VIDY.js} +10 -10
  210. package/dist/{renderer-4ITCHBT7.js → renderer-CQY6ATOS.js} +6 -6
  211. package/dist/{renderer-6OKF44KS.js → renderer-CVW75CXL.js} +15 -15
  212. package/dist/{renderer-7RH2SI3B.js → renderer-DT4XRFEP.js} +5 -4
  213. package/dist/{renderer-B5TBNZJE.js → renderer-ERHBSTQT.js} +9 -9
  214. package/dist/{renderer-HVCU2C3Z.js → renderer-HSHHVYWF.js} +5 -4
  215. package/dist/renderer-IDPVUFNB.js +28 -0
  216. package/dist/renderer-ILX6BGKR.js +21 -0
  217. package/dist/renderer-JP663HKG.js +22 -0
  218. package/dist/{renderer-KS7YZJE2.js → renderer-KNFTTOBL.js} +11 -11
  219. package/dist/{renderer-2AZ5HJFK.js → renderer-MVUZBESR.js} +5 -5
  220. package/dist/{renderer-QAOBLRXV.js → renderer-N4EBR2FV.js} +11 -11
  221. package/dist/{renderer-P5ROYQGU.js → renderer-NHO46CT2.js} +4 -4
  222. package/dist/{renderer-NGXZTRK6.js → renderer-NO2QJ5LZ.js} +10 -10
  223. package/dist/{renderer-FPE3J5VZ.js → renderer-OGFV5RXX.js} +12 -12
  224. package/dist/{renderer-ODUUOPVT.js → renderer-PDLESJMS.js} +15 -15
  225. package/dist/renderer-T4MTNINC.js +24 -0
  226. package/dist/renderer-TOUGFGTM.js +24 -0
  227. package/dist/{renderer-BSR2O2H6.js → renderer-U3KPD43Y.js} +14 -13
  228. package/dist/{renderer-JCCHNECZ.js → renderer-X334IJU2.js} +10 -10
  229. package/dist/{renderer-5DSEWF74.js → renderer-Y5OAMOCR.js} +9 -9
  230. package/dist/{renderer-5KVCNMOJ.js → renderer-YONAKAJU.js} +5 -3
  231. package/dist/{renderer-7SD6MSBS.js → renderer-YWMI6Y2U.js} +12 -12
  232. package/dist/{renderer-2QPMJ2DA.js → renderer-ZWIH4WDW.js} +10 -10
  233. package/dist/renderer-radial-7CGZMVMS.js +21 -0
  234. package/dist/{resolver-FHBCO3PL.js → resolver-EMTGNR3D.js} +4 -3
  235. package/dist/{state-parser-3REXRK3R.js → state-parser-BATWAID2.js} +4 -4
  236. package/dist/{state-renderer-XYLNRWXR.js → state-renderer-3FKZJ3LP.js} +10 -10
  237. package/dist/{themes-PdPR1-hC.d.ts → themes-32xj5ZTW.d.ts} +27 -0
  238. package/docs/ai-integration.md +15 -19
  239. package/docs/language-reference.md +106 -21
  240. package/gallery/fixtures/clock.dgmo +3 -3
  241. package/gallery/fixtures/countdown-tz.dgmo +5 -0
  242. package/package.json +1 -1
  243. package/dist/charts-d3-MUW3LTML.js +0 -26
  244. package/dist/dgmo-router-CE2G67FV.js +0 -84
  245. package/dist/dimensions-OTBKC5M6.js +0 -22
  246. package/dist/layout-6RDJHS6E.js +0 -9
  247. package/dist/layout-J36454XU.js +0 -14
  248. package/dist/layout-LD6XTLD6.js +0 -14
  249. package/dist/parser-4WQQQXCG.js +0 -13
  250. package/dist/parser-O4HIUN6G.js +0 -13
  251. package/dist/renderer-CYB4LK3G.js +0 -22
  252. package/dist/renderer-FF24KZCI.js +0 -24
  253. package/dist/renderer-FYSVXL7M.js +0 -28
  254. package/dist/renderer-HDCCZURL.js +0 -24
  255. package/dist/renderer-PSMMZCKH.js +0 -21
  256. package/dist/renderer-UYMQQCJK.js +0 -24
  257. package/dist/renderer-radial-F7X5F2VU.js +0 -21
package/dist/block.css CHANGED
@@ -26,21 +26,25 @@
26
26
  }
27
27
 
28
28
  /* === Toolbar ===
29
- * The diagram is the star: the toolbar is a slim reserved row below the SVG
30
- * (height always in flow — no layout shift) that stays fully transparent
31
- * until the block is hovered or focused, or the source panel is open. It is
32
- * the <summary> of the source <details>, so toggling works without any JS.
29
+ * The diagram is the star: the toolbar is an overlay pinned to the diagram's
30
+ * top-right corner (position:absolute — it reserves no layout space, so the
31
+ * block is exactly as tall as the chart). It stays fully transparent until
32
+ * the block is hovered or focused, or the source panel is open. It is the
33
+ * <summary> of the source <details>, so toggling works without any JS.
33
34
  * No text labels, no disclosure triangle — three wordless icon buttons. */
34
35
  .dgmo-source-wrap {
35
36
  margin: 0;
36
37
  }
37
38
  .dgmo-toolbar {
39
+ position: absolute;
40
+ top: 0.4em;
41
+ right: 0.4em;
42
+ z-index: 2;
38
43
  display: flex;
39
44
  align-items: center;
40
45
  justify-content: flex-end;
41
46
  gap: 0.25em;
42
- min-height: 1.9em;
43
- padding: 0.15em 0;
47
+ padding: 0.15em;
44
48
  opacity: 0;
45
49
  transition: opacity 0.15s ease;
46
50
  cursor: pointer;
@@ -143,6 +147,14 @@
143
147
  overflow: auto;
144
148
  border-radius: 0.5em;
145
149
  box-shadow: 0 12px 48px rgba(0, 0, 0, 0.45);
150
+ /* Opaque surface behind the enlarged diagram so a transparent embed doesn't
151
+ * show the page through it. The client overrides this inline with the block's
152
+ * own palette bg (data-dgmo-bg); this is the fallback for blocks that predate
153
+ * that attribute. */
154
+ background: #fff;
155
+ }
156
+ [data-theme="dark"] .dgmo-lightbox-svg {
157
+ background: #1e1e1e;
146
158
  }
147
159
  .dgmo-lightbox-svg > svg {
148
160
  display: block;
@@ -177,9 +189,10 @@
177
189
  * border so the code visibly belongs to the chart above it. The frame box
178
190
  * (border + padding) is RESERVED at all times — with the border transparent
179
191
  * while closed — so opening the panel only paints the border in. It never
180
- * reflows the diagram or shifts the toolbar: the SVG box and toolbar position
181
- * are identical open vs closed. */
192
+ * reflows the diagram. position:relative anchors the overlay toolbar to
193
+ * this box. */
182
194
  .dgmo:has(> .dgmo-source-wrap) {
195
+ position: relative;
183
196
  border: 1px solid transparent;
184
197
  border-radius: 0.6em;
185
198
  padding: 0.75em 0.75em 0.5em;
@@ -222,6 +235,13 @@
222
235
  font-size: 0.85em;
223
236
  margin: 0.5em 0 0;
224
237
  }
238
+ .dgmo-error-docs {
239
+ display: inline-block;
240
+ margin-top: 0.6em;
241
+ font-size: 0.9em;
242
+ font-weight: 600;
243
+ color: inherit;
244
+ }
225
245
 
226
246
  /* === Source highlight roles ===
227
247
  * Light values mirror LIGHT_ROLE_STYLES; dark overrides mirror
package/dist/block.js CHANGED
@@ -1,92 +1,97 @@
1
1
  import {
2
2
  defaultEmbedBackground,
3
+ docsLink,
3
4
  normalizeSvgForEmbed,
4
5
  renderErrorCard
5
- } from "./chunk-DN66GPY5.js";
6
+ } from "./chunk-GJFAMOGK.js";
6
7
  import {
7
8
  encodeDiagramUrl,
8
9
  render
9
- } from "./chunk-SVTI362O.js";
10
- import "./chunk-66RUL3XF.js";
10
+ } from "./chunk-J7KJR3R6.js";
11
+ import "./chunk-7KINELPI.js";
11
12
  import "./chunk-YRYKTYMQ.js";
12
13
  import "./chunk-YYVTBZZC.js";
13
- import "./chunk-HEVYAHLW.js";
14
- import "./chunk-KQ57MHRO.js";
15
- import "./chunk-Q4V4XQWV.js";
16
- import "./chunk-BTUTZMPT.js";
14
+ import "./chunk-AUIM2NVH.js";
15
+ import "./chunk-ZEF5M5MB.js";
16
+ import "./chunk-MUE65OTD.js";
17
+ import "./chunk-FT3ZYWET.js";
17
18
  import {
18
19
  monthIndex,
19
20
  weekdayIndex
20
- } from "./chunk-YNRDWYZP.js";
21
- import "./chunk-3XPUDB7B.js";
22
- import "./chunk-QXKWYZNR.js";
23
- import "./chunk-PGEGPSCZ.js";
24
- import "./chunk-3UIKSPFB.js";
21
+ } from "./chunk-OQKP2X3D.js";
22
+ import "./chunk-FY5MSZAP.js";
23
+ import "./chunk-APKUAJ2L.js";
24
+ import "./chunk-PRI2OD4E.js";
25
+ import "./chunk-4IHAV6O7.js";
26
+ import "./chunk-Z5QVYKR7.js";
25
27
  import "./chunk-BDXC7MDK.js";
26
- import "./chunk-QJJZSROI.js";
27
- import "./chunk-HGN652MU.js";
28
- import "./chunk-U6EQI3U6.js";
29
- import "./chunk-7UEMZREK.js";
28
+ import "./chunk-DYWQFQJP.js";
29
+ import "./chunk-VL2O2F3W.js";
30
+ import "./chunk-QBZYACOG.js";
31
+ import "./chunk-YAA6IID3.js";
30
32
  import "./chunk-A4GOY3PE.js";
31
33
  import "./chunk-6KFWC4CO.js";
32
- import "./chunk-HQCHYB5F.js";
33
- import "./chunk-5LWQH6QV.js";
34
- import "./chunk-XEGTMVYY.js";
35
- import "./chunk-I2WKW7C7.js";
36
- import "./chunk-TSA237IM.js";
37
- import "./chunk-6IAA2QQ2.js";
38
- import "./chunk-6HJBFVLO.js";
39
- import "./chunk-3P2DKJCG.js";
40
- import "./chunk-3LKM6FMW.js";
41
- import "./chunk-XJLKLU4D.js";
42
- import "./chunk-7L3R6I3U.js";
43
- import "./chunk-NNAAJVBU.js";
44
- import "./chunk-VUJGMJE6.js";
45
- import "./chunk-C2CVAM3U.js";
46
- import "./chunk-GKC3HILQ.js";
34
+ import "./chunk-QOOUC2J5.js";
35
+ import "./chunk-WCT3NYCV.js";
36
+ import "./chunk-EMLPOL77.js";
37
+ import "./chunk-SMRFPVLQ.js";
38
+ import "./chunk-VILVLS7P.js";
39
+ import "./chunk-7BIZCTAX.js";
40
+ import "./chunk-XD6ZYURY.js";
41
+ import "./chunk-ICPJPQ5C.js";
42
+ import "./chunk-UNURMIQO.js";
43
+ import "./chunk-ZNWAYU6N.js";
44
+ import "./chunk-4UNQ6X24.js";
45
+ import "./chunk-NR5HCAUD.js";
46
+ import "./chunk-IM6PDDCE.js";
47
+ import "./chunk-QGATPIPX.js";
48
+ import "./chunk-5NGAO4QK.js";
47
49
  import {
48
50
  REGISTRY_COLON_KEY_TOKENS,
49
51
  REGISTRY_CONTROL_TOKENS,
50
52
  REGISTRY_DIRECTIVE_TOKENS,
51
53
  REGISTRY_MODIFIER_TOKENS,
52
54
  REGISTRY_STATUS_TOKENS
53
- } from "./chunk-U2HGPLZS.js";
54
- import "./chunk-DSWVNQVS.js";
55
- import "./chunk-DZXYF2F5.js";
56
- import "./chunk-XHVV4NVW.js";
57
- import "./chunk-OMNGQPEZ.js";
58
- import "./chunk-VBYSIOOY.js";
55
+ } from "./chunk-FQ7HTV52.js";
56
+ import "./chunk-5RP7JRVP.js";
57
+ import "./chunk-HQQNCY7W.js";
58
+ import "./chunk-RT7ACF77.js";
59
+ import "./chunk-LTXOLDUZ.js";
60
+ import "./chunk-75G3Q4DK.js";
59
61
  import "./chunk-QQJUTGQH.js";
60
- import "./chunk-SXRTRMEE.js";
61
- import "./chunk-NU3XLTGP.js";
62
- import "./chunk-OTQKUHRS.js";
63
- import "./chunk-SQLNBA64.js";
64
- import "./chunk-EAMEADTV.js";
65
- import "./chunk-L3UHP6TD.js";
62
+ import "./chunk-AL672HNE.js";
63
+ import "./chunk-REJAIQ5S.js";
64
+ import "./chunk-NNS4E7CW.js";
65
+ import "./chunk-HBPDFCQY.js";
66
+ import "./chunk-K4EOKJA6.js";
67
+ import "./chunk-7L4UJOY6.js";
66
68
  import "./chunk-USZW2HHU.js";
67
- import "./chunk-HTMN2Z6U.js";
68
- import "./chunk-I7F2A35O.js";
69
- import "./chunk-6BFZKBGD.js";
70
- import "./chunk-3Y2DRD7S.js";
71
- import "./chunk-QROYX7TT.js";
69
+ import "./chunk-J6QROYDA.js";
70
+ import "./chunk-R3YSD62R.js";
71
+ import {
72
+ scanMonthNameDates
73
+ } from "./chunk-DAOFNU6J.js";
74
+ import "./chunk-3YRPZ7ZZ.js";
75
+ import "./chunk-3QD7VP3U.js";
76
+ import "./chunk-BPY242XU.js";
72
77
  import "./chunk-IYULMRBE.js";
73
78
  import {
74
79
  resolvePaletteOrFallback
75
80
  } from "./chunk-R3XI2VC7.js";
76
- import "./chunk-P6T66CCZ.js";
77
- import "./chunk-BH3UYK36.js";
81
+ import "./chunk-WBM7ZNDI.js";
82
+ import "./chunk-QJMKPUYK.js";
78
83
  import "./chunk-C3Z4DX3V.js";
79
- import "./chunk-FJUNPCYI.js";
80
- import "./chunk-GBE54KY6.js";
84
+ import "./chunk-HHKO6SKY.js";
85
+ import "./chunk-6EJITS44.js";
81
86
  import "./chunk-I46X5VUA.js";
82
- import "./chunk-2C56LEML.js";
87
+ import "./chunk-ROOE4R4Y.js";
83
88
  import "./chunk-NXMESY4J.js";
84
- import "./chunk-GL5UZ6NY.js";
85
- import "./chunk-SCHXJTZL.js";
89
+ import "./chunk-TPFKKXCB.js";
90
+ import "./chunk-ARGMQ3H4.js";
86
91
  import "./chunk-FMDSF3OV.js";
87
92
  import "./chunk-FFUN5D66.js";
88
93
  import "./chunk-NOTA6TEI.js";
89
- import "./chunk-OTAL43EH.js";
94
+ import "./chunk-BRENJ2BQ.js";
90
95
  import "./chunk-TLVIHFRO.js";
91
96
  import "./chunk-CXK4DZH3.js";
92
97
  import "./chunk-5WRI5ZAA.js";
@@ -184,7 +189,7 @@ var parser = LRParser.deserialize({
184
189
  maxTerm: 40,
185
190
  skippedNodes: [0],
186
191
  repeatNodeCount: 2,
187
- tokenData: "<v~RzOX#uXY#zYZ$VZp#upq#zqr#urs$[st#uux#uxy%eyz%lz{%s{|%z|}&R}!O&Y!O!P#u!P!Q&i!Q!['Y![!]/{!]!^#u!^!_0S!_!`0Z!`!a0h!a!b0o!b!c#u!c!}0v!}#O3|#O#P#u#P#Q4R#Q#R#u#R#S0v#S#T#u#T#[0v#[#]4Y#]#o0v#o#p#u#p#q<Y#q#r#u#r#s<a#s;'S#u;'S;=`<p<%lO#u~#zOq~~$PQv~XY#zpq#z~$[Ow~~$aUq~OY$sZr$srs%Ys;'S$s;'S;=`%_<%lO$s~$vUOY$sZr$srs%Ys;'S$s;'S;=`%_<%lO$s~%_Oo~~%bP;=`<%l$s~%lOc~q~~%sOd~q~~%zOm~q~~&ROj~q~~&YOi~q~~&aPk~q~!`!a&d~&iOX~~&nPq~!P!Q&q~&vSV~OY&qZ;'S&q;'S;=`'S<%lO&q~'VP;=`<%l&q~'a]^~q~uv(Y|}(_!O!P)[!Q![*{#R#S/g#U#V*V#W#X*]#[#]*]#a#b*j#e#f*]#g#h*]#k#l*]#m#n*]~(_O]~~(bP!Q![(e~(hP!Q![(k~(nP!Q![(q~(vQ^~|}(_!O!P(|~)PP!Q![)S~)XP^~!Q![)S~)_P!Q![)b~)gY^~uv(Y!Q![)b#U#V*V#W#X*]#[#]*]#a#b*j#e#f*]#g#h*]#k#l*]#m#n*]~*YP#W#X*]~*bPZ~!a!b*e~*jOZ~~*oQZ~!a!b*e#]#^*u~*xP#b#c*]~+Q]^~uv(Y|}(_!O!P)[!Q![+y#R#S/g#U#V*V#W#X*]#[#]*]#a#b*j#e#f*]#g#h*]#k#l*]#m#n*]~,O]^~uv(Y|}(_!O!P)[!Q![,w#R#S/g#U#V*V#W#X*]#[#]*]#a#b*j#e#f*]#g#h*]#k#l*]#m#n*]~,|]^~uv(Y}!O-u!O!P)[!Q![.l#R#S/g#U#V*V#W#X*]#[#]*]#a#b*j#e#f*]#g#h*]#k#l*]#m#n*]~-xP!Q![-{~.OP!Q![.R~.WP[~}!O.Z~.^P!Q![.a~.dP!Q![.g~.lO[~~.q[^~uv(Y!O!P)[!Q![.l#R#S/g#U#V*V#W#X*]#[#]*]#a#b*j#e#f*]#g#h*]#k#l*]#m#n*]~/jP!Q![/m~/rR^~!O!P(|!Q![/m#R#S/g~0SOh~q~~0ZOe~q~~0`Pq~!_!`0c~0hO_~~0oOf~q~~0vOn~q~~0}_p~q~qr1|st1|vw1|wx1|{|1|}!O3Q!O!P1|!P!Q1|!Q![1|!_!`1|!a!b1|!b!c1|!c!}1|#R#S1|#T#o1|~2R_p~qr1|st1|vw1|wx1|{|1|}!O3Q!O!P1|!P!Q1|!Q![1|!_!`1|!a!b1|!b!c1|!c!}1|#R#S1|#T#o1|~3T]qr1|st1|vw1|wx1|{|1|!O!P1|!P!Q1|!_!`1|!a!b1|!b!c1|!c!}1|#R#S1|#T#o1|~4ROa~~4YOb~q~~4aap~q~qr1|st1|vw1|wx1|{|1|}!O3Q!O!P1|!P!Q1|!Q![1|!_!`1|!a!b1|!b!c1|!c!}1|#R#S1|#T#h1|#h#i5f#i#o1|~5kap~qr1|st1|vw1|wx1|{|1|}!O3Q!O!P1|!P!Q1|!Q![1|!_!`1|!a!b1|!b!c1|!c!}1|#R#S1|#T#h1|#h#i6p#i#o1|~6uap~qr1|st1|vw1|wx1|{|1|}!O3Q!O!P1|!P!Q1|!Q![1|!_!`1|!a!b1|!b!c1|!c!}1|#R#S1|#T#d1|#d#e7z#e#o1|~8Pbp~qr1|st1|vw1|wx1|{|1|}!O3Q!O!P1|!P!Q1|!Q![1|![!]9X!_!`1|!a!b1|!b!c1|!c!}1|#R#S1|#T#g1|#g#h;R#h#o1|~9[P!P!Q9_~9bP!P!Q9e~9hYOX:WZp:Wqy:Wz|:W}!`:W!a#P:W#Q#p:W#q;'S:W;'S;=`:{<%lO:W~:]Y`~OX:WZp:Wqy:Wz|:W}!`:W!a#P:W#Q#p:W#q;'S:W;'S;=`:{<%lO:W~;OP;=`<%l:W~;W`p~qr1|st1|vw1|wx1|{|1|}!O3Q!O!P1|!P!Q1|!Q![1|![!]9X!_!`1|!a!b1|!b!c1|!c!}1|#R#S1|#T#o1|~<aOg~q~~<hPl~q~!`!a<k~<pOY~~<sP;=`<%l#u",
192
+ tokenData: ">l~RzOX#uXY#zYZ$VZp#upq#zqr#urs$[st#uux#uxy%eyz%lz{%s{|%z|}&R}!O&Y!O!P#u!P!Q&i!Q!['Y![!]1q!]!^#u!^!_1x!_!`2P!`!a2^!a!b2e!b!c#u!c!}2l!}#O5r#O#P#u#P#Q5w#Q#R#u#R#S2l#S#T#u#T#[2l#[#]6O#]#o2l#o#p#u#p#q>O#q#r#u#r#s>V#s;'S#u;'S;=`>f<%lO#u~#zOq~~$PQv~XY#zpq#z~$[Ow~~$aUq~OY$sZr$srs%Ys;'S$s;'S;=`%_<%lO$s~$vUOY$sZr$srs%Ys;'S$s;'S;=`%_<%lO$s~%_Oo~~%bP;=`<%l$s~%lOc~q~~%sOd~q~~%zOm~q~~&ROj~q~~&YOi~q~~&aPk~q~!`!a&d~&iOX~~&nPq~!P!Q&q~&vSV~OY&qZ;'S&q;'S;=`'S<%lO&q~'VP;=`<%l&q~'a_^~q~uv(`|}(e}!O)b!O!P*l!P!Q,]!Q![,v#R#S1]#U#V+g#W#X+m#[#]+m#a#b+z#e#f+m#g#h+m#k#l+m#m#n+m~(eO]~~(hP!Q![(k~(nP!Q![(q~(tP!Q![(w~(|Q^~|}(e!O!P)S~)VP!Q![)Y~)_P^~!Q![)Y~)eP!Q![)h~)mQ[~}!O)s!Q![*d~)vP!Q![)y~)|P!Q![*P~*UP[~!Q![*X~*[P!Q![*_~*dO[~~*iP[~}!O)s~*oP!Q![*r~*wY^~uv(`!Q![*r#U#V+g#W#X+m#[#]+m#a#b+z#e#f+m#g#h+m#k#l+m#m#n+m~+jP#W#X+m~+rPZ~!a!b+u~+zOZ~~,PQZ~!a!b+u#]#^,V~,YP#b#c+m~,`P!Q![,c~,hQ[~!P!Q)s!Q![,n~,sP[~!P!Q)s~,{_^~uv(`|}(e}!O)b!O!P*l!P!Q,]!Q![-z#R#S1]#U#V+g#W#X+m#[#]+m#a#b+z#e#f+m#g#h+m#k#l+m#m#n+m~.P]^~uv(`|}(e!O!P*l!Q![.x#R#S1]#U#V+g#W#X+m#[#]+m#a#b+z#e#f+m#g#h+m#k#l+m#m#n+m~.}]^~uv(`}!O/v!O!P*l!Q![0b#R#S1]#U#V+g#W#X+m#[#]+m#a#b+z#e#f+m#g#h+m#k#l+m#m#n+m~/yP!Q![/|~0PP!Q![0S~0XP[~}!O0[~0_P!Q![*X~0g[^~uv(`!O!P*l!Q![0b#R#S1]#U#V+g#W#X+m#[#]+m#a#b+z#e#f+m#g#h+m#k#l+m#m#n+m~1`P!Q![1c~1hR^~!O!P)S!Q![1c#R#S1]~1xOh~q~~2POe~q~~2UPq~!_!`2X~2^O_~~2eOf~q~~2lOn~q~~2s_p~q~qr3rst3rvw3rwx3r{|3r}!O4v!O!P3r!P!Q3r!Q![3r!_!`3r!a!b3r!b!c3r!c!}3r#R#S3r#T#o3r~3w_p~qr3rst3rvw3rwx3r{|3r}!O4v!O!P3r!P!Q3r!Q![3r!_!`3r!a!b3r!b!c3r!c!}3r#R#S3r#T#o3r~4y]qr3rst3rvw3rwx3r{|3r!O!P3r!P!Q3r!_!`3r!a!b3r!b!c3r!c!}3r#R#S3r#T#o3r~5wOa~~6OOb~q~~6Vap~q~qr3rst3rvw3rwx3r{|3r}!O4v!O!P3r!P!Q3r!Q![3r!_!`3r!a!b3r!b!c3r!c!}3r#R#S3r#T#h3r#h#i7[#i#o3r~7aap~qr3rst3rvw3rwx3r{|3r}!O4v!O!P3r!P!Q3r!Q![3r!_!`3r!a!b3r!b!c3r!c!}3r#R#S3r#T#h3r#h#i8f#i#o3r~8kap~qr3rst3rvw3rwx3r{|3r}!O4v!O!P3r!P!Q3r!Q![3r!_!`3r!a!b3r!b!c3r!c!}3r#R#S3r#T#d3r#d#e9p#e#o3r~9ubp~qr3rst3rvw3rwx3r{|3r}!O4v!O!P3r!P!Q3r!Q![3r![!]:}!_!`3r!a!b3r!b!c3r!c!}3r#R#S3r#T#g3r#g#h<w#h#o3r~;QP!P!Q;T~;WP!P!Q;Z~;^YOX;|Zp;|qy;|z|;|}!`;|!a#P;|#Q#p;|#q;'S;|;'S;=`<q<%lO;|~<RY`~OX;|Zp;|qy;|z|;|}!`;|!a#P;|#Q#p;|#q;'S;|;'S;=`<q<%lO;|~<tP;=`<%l;|~<|`p~qr3rst3rvw3rwx3r{|3r}!O4v!O!P3r!P!Q3r!Q![3r![!]:}!_!`3r!a!b3r!b!c3r!c!}3r#R#S3r#T#o3r~>VOg~q~~>^Pl~q~!`!a>a~>fOY~~>iP;=`<%l#u",
188
193
  tokenizers: [0],
189
194
  topRules: { "Document": [0, 6] },
190
195
  specialized: [{ term: 32, get: (value, stack) => specializeKeyword(value, stack) << 1, external: specializeKeyword }],
@@ -295,6 +300,7 @@ function highlightDgmo(source) {
295
300
  applyLabelOverrides(tokens);
296
301
  applyNoteContent(tokens);
297
302
  applyRecurringLine(tokens);
303
+ applyMonthNameDates(tokens);
298
304
  return tokens;
299
305
  }
300
306
  var ATTRIBUTE_KEYS = /* @__PURE__ */ new Set([
@@ -529,6 +535,40 @@ function applyRecurringLine(tokens) {
529
535
  offset += lineText.length + 1;
530
536
  }
531
537
  }
538
+ var DATE_BEARING_CHARTS = /* @__PURE__ */ new Set([
539
+ "gantt",
540
+ "pert",
541
+ "countdown",
542
+ "timeline",
543
+ "event-line"
544
+ ]);
545
+ function applyMonthNameDates(tokens) {
546
+ const fullText = tokens.map((t) => t.text).join("");
547
+ const lines = fullText.split("\n");
548
+ const firstContent = lines.find((l) => {
549
+ const t = l.trim();
550
+ return t.length > 0 && !t.startsWith("//");
551
+ });
552
+ const chartType = firstContent?.trim().split(/\s+/)[0]?.toLowerCase();
553
+ if (!chartType || !DATE_BEARING_CHARTS.has(chartType)) return;
554
+ let offset = 0;
555
+ for (const lineText of lines) {
556
+ for (const sp of scanMonthNameDates(lineText)) {
557
+ markDateSpan(tokens, offset + sp.start, offset + sp.end);
558
+ }
559
+ offset += lineText.length + 1;
560
+ }
561
+ }
562
+ function markDateSpan(tokens, from, to) {
563
+ let pos = 0;
564
+ for (const token of tokens) {
565
+ const tokenEnd = pos + token.text.length;
566
+ if (tokenEnd > from && pos < to && token.text.trim().length > 0 && (token.role === "default" || token.role === "number")) {
567
+ token.role = "number";
568
+ }
569
+ pos = tokenEnd;
570
+ }
571
+ }
532
572
  var NOTE_HEAD_RE = /^note(\s|$)/i;
533
573
  function applyNoteContent(tokens) {
534
574
  const fullText = tokens.map((t) => t.text).join("");
@@ -611,21 +651,25 @@ var BLOCK_CSS = `
611
651
  }
612
652
 
613
653
  /* === Toolbar ===
614
- * The diagram is the star: the toolbar is a slim reserved row below the SVG
615
- * (height always in flow \u2014 no layout shift) that stays fully transparent
616
- * until the block is hovered or focused, or the source panel is open. It is
617
- * the <summary> of the source <details>, so toggling works without any JS.
654
+ * The diagram is the star: the toolbar is an overlay pinned to the diagram's
655
+ * top-right corner (position:absolute \u2014 it reserves no layout space, so the
656
+ * block is exactly as tall as the chart). It stays fully transparent until
657
+ * the block is hovered or focused, or the source panel is open. It is the
658
+ * <summary> of the source <details>, so toggling works without any JS.
618
659
  * No text labels, no disclosure triangle \u2014 three wordless icon buttons. */
619
660
  .dgmo-source-wrap {
620
661
  margin: 0;
621
662
  }
622
663
  .dgmo-toolbar {
664
+ position: absolute;
665
+ top: 0.4em;
666
+ right: 0.4em;
667
+ z-index: 2;
623
668
  display: flex;
624
669
  align-items: center;
625
670
  justify-content: flex-end;
626
671
  gap: 0.25em;
627
- min-height: 1.9em;
628
- padding: 0.15em 0;
672
+ padding: 0.15em;
629
673
  opacity: 0;
630
674
  transition: opacity 0.15s ease;
631
675
  cursor: pointer;
@@ -728,6 +772,14 @@ var BLOCK_CSS = `
728
772
  overflow: auto;
729
773
  border-radius: 0.5em;
730
774
  box-shadow: 0 12px 48px rgba(0, 0, 0, 0.45);
775
+ /* Opaque surface behind the enlarged diagram so a transparent embed doesn't
776
+ * show the page through it. The client overrides this inline with the block's
777
+ * own palette bg (data-dgmo-bg); this is the fallback for blocks that predate
778
+ * that attribute. */
779
+ background: #fff;
780
+ }
781
+ [data-theme="dark"] .dgmo-lightbox-svg {
782
+ background: #1e1e1e;
731
783
  }
732
784
  .dgmo-lightbox-svg > svg {
733
785
  display: block;
@@ -762,9 +814,10 @@ var BLOCK_CSS = `
762
814
  * border so the code visibly belongs to the chart above it. The frame box
763
815
  * (border + padding) is RESERVED at all times \u2014 with the border transparent
764
816
  * while closed \u2014 so opening the panel only paints the border in. It never
765
- * reflows the diagram or shifts the toolbar: the SVG box and toolbar position
766
- * are identical open vs closed. */
817
+ * reflows the diagram. position:relative anchors the overlay toolbar to
818
+ * this box. */
767
819
  .dgmo:has(> .dgmo-source-wrap) {
820
+ position: relative;
768
821
  border: 1px solid transparent;
769
822
  border-radius: 0.6em;
770
823
  padding: 0.75em 0.75em 0.5em;
@@ -807,6 +860,13 @@ var BLOCK_CSS = `
807
860
  font-size: 0.85em;
808
861
  margin: 0.5em 0 0;
809
862
  }
863
+ .dgmo-error-docs {
864
+ display: inline-block;
865
+ margin-top: 0.6em;
866
+ font-size: 0.9em;
867
+ font-weight: 600;
868
+ color: inherit;
869
+ }
810
870
 
811
871
  /* === Source highlight roles ===
812
872
  * Light values mirror LIGHT_ROLE_STYLES; dark overrides mirror
@@ -986,11 +1046,12 @@ async function renderDgmoBlock(source, options = {}) {
986
1046
  renderTheme("dark")
987
1047
  ]);
988
1048
  const background = opts.background === "auto" ? defaultEmbedBackground(chartType) : opts.background;
989
- svgsHtml = `<div class="${escapeAttr(innerClasses(opts, "dgmo-light"))}">${normalizeSvgForEmbed(light, { background })}</div><div class="${escapeAttr(innerClasses(opts, "dgmo-dark"))}">${normalizeSvgForEmbed(dark, { background })}</div>`;
1049
+ svgsHtml = `<div class="${escapeAttr(innerClasses(opts, "dgmo-light"))}" data-dgmo-bg="${escapeAttr(palette.light.bg)}">${normalizeSvgForEmbed(light, { background })}</div><div class="${escapeAttr(innerClasses(opts, "dgmo-dark"))}" data-dgmo-bg="${escapeAttr(palette.dark.bg)}">${normalizeSvgForEmbed(dark, { background })}</div>`;
990
1050
  } else {
991
1051
  const svg = await renderTheme(opts.colorMode);
992
1052
  const background = opts.background === "auto" ? defaultEmbedBackground(chartType) : opts.background;
993
- svgsHtml = `<div class="${escapeAttr(innerClasses(opts, "dgmo-svg"))}">${normalizeSvgForEmbed(svg, { background })}</div>`;
1053
+ const paletteBg = palette[opts.colorMode === "dark" ? "dark" : "light"].bg;
1054
+ svgsHtml = `<div class="${escapeAttr(innerClasses(opts, "dgmo-svg"))}" data-dgmo-bg="${escapeAttr(paletteBg)}">${normalizeSvgForEmbed(svg, { background })}</div>`;
994
1055
  }
995
1056
  return { html: assembleBlock(trimmed, svgsHtml, opts), diagnostics };
996
1057
  }
@@ -1002,7 +1063,8 @@ function errorBlockHtml(err, source, options = {}) {
1002
1063
  const base = options.className ?? "dgmo";
1003
1064
  const legacy = (options.legacyClassNames ?? []).join(" ");
1004
1065
  const cls = legacy ? `${base} ${legacy} ${base}--error` : `${base} ${base}--error`;
1005
- return `<div class="${escapeAttr(cls)}" role="alert"><strong>dgmo render error:</strong> ${escapeHtml(msg)}<pre>${escapeHtml(source)}</pre></div>`;
1066
+ const docs = docsLink(source);
1067
+ return `<div class="${escapeAttr(cls)}" role="alert"><strong>dgmo render error:</strong> ${escapeHtml(msg)}<pre>${escapeHtml(source)}</pre><a class="${escapeAttr(base)}-error-docs" href="${escapeAttr(docs.url)}" target="_blank" rel="noopener noreferrer">${escapeHtml(docs.label)}</a></div>`;
1006
1068
  }
1007
1069
  function wrapperClasses(opts, variant) {
1008
1070
  const base = `${opts.className} ${opts.className}--${variant}`;
@@ -1018,7 +1080,7 @@ function assembleBlock(source, svgsHtml, opts) {
1018
1080
  const showcase = opts.mode === "showcase";
1019
1081
  const variant = showcase ? "showcase" : "diagram";
1020
1082
  const ariaAttr = opts.title ? ` aria-label="${escapeAttr(opts.title)}"` : "";
1021
- const sourceHtml = showcase ? sourceDisclosure(source, opts) : "";
1083
+ const sourceHtml = sourceDisclosure(source, opts);
1022
1084
  return `<${Wrapper} class="${escapeAttr(wrapperClasses(opts, variant))}"${ariaAttr}>` + svgsHtml + sourceHtml + `</${Wrapper}>`;
1023
1085
  }
1024
1086
  var CODE_ICON = `<svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m10 4.5 4 3.5-4 3.5"/><path d="m6 4.5-4 3.5 4 3.5"/></svg>`;
@@ -1026,8 +1088,7 @@ var COPY_ICON = `<svg width="16" height="16" viewBox="0 0 16 16" fill="none" str
1026
1088
  var EXTERNAL_ICON = `<svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M9.5 2.5h4v4"/><path d="M13.5 2.5 7 9"/><path d="M12.5 9.5v3a1 1 0 0 1-1 1h-8a1 1 0 0 1-1-1v-8a1 1 0 0 1 1-1h3"/></svg>`;
1027
1089
  var EXPAND_ICON = `<svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M9.5 2.5h4v4"/><path d="M6.5 13.5h-4v-4"/><path d="M13.5 2.5 9 7"/><path d="M2.5 13.5 7 9"/></svg>`;
1028
1090
  function sourceDisclosure(source, opts) {
1029
- if (!opts.showSource) return "";
1030
- const toggle = `<span class="dgmo-toggle" title="View DGMO source">${CODE_ICON}</span>`;
1091
+ const toggle = opts.showSource ? `<span class="dgmo-toggle" title="View DGMO source">${CODE_ICON}</span>` : "";
1031
1092
  const expandButton = opts.showExpand ? `<button type="button" class="dgmo-toolbar-btn dgmo-expand" aria-label="View full screen" title="Expand">${EXPAND_ICON}</button>` : "";
1032
1093
  const copyButton = opts.showCopy ? `<button type="button" class="dgmo-toolbar-btn dgmo-copy" aria-label="Copy DGMO source" title="Copy source" data-dgmo-source="${escapeAttr(source)}">${COPY_ICON}</button>` : "";
1033
1094
  let openButton = "";
@@ -1037,8 +1098,13 @@ function sourceDisclosure(source, opts) {
1037
1098
  openButton = `<a href="${escapeAttr(encoded.url)}" target="_blank" rel="noopener noreferrer" class="dgmo-toolbar-btn dgmo-open" aria-label="Open in online editor" title="Open in online editor">${EXTERNAL_ICON}</a>`;
1038
1099
  }
1039
1100
  }
1101
+ const buttons = `${toggle}${expandButton}${copyButton}${openButton}`;
1102
+ if (!buttons) return "";
1103
+ if (!opts.showSource) {
1104
+ return `<div class="dgmo-source-wrap"><div class="dgmo-toolbar">${buttons}</div></div>`;
1105
+ }
1040
1106
  const sourceHtml = highlightedSource(source);
1041
- return `<details class="dgmo-source-wrap"><summary class="dgmo-toolbar" aria-label="View DGMO source">${toggle}${expandButton}${copyButton}${openButton}</summary><div class="dgmo-source-inner">${sourceHtml}</div></details>`;
1107
+ return `<details class="dgmo-source-wrap"><summary class="dgmo-toolbar" aria-label="View DGMO source">${buttons}</summary><div class="dgmo-source-inner">${sourceHtml}</div></details>`;
1042
1108
  }
1043
1109
  function highlightedSource(source) {
1044
1110
  const tokens = highlightDgmo(source);
@@ -0,0 +1,26 @@
1
+ import {
2
+ D3_DATA_CHART_TYPES,
3
+ renderDataChartD3,
4
+ supportsD3DataChart
5
+ } from "./chunk-DYWQFQJP.js";
6
+ import "./chunk-VL2O2F3W.js";
7
+ import "./chunk-QBZYACOG.js";
8
+ import "./chunk-YAA6IID3.js";
9
+ import "./chunk-A4GOY3PE.js";
10
+ import "./chunk-6KFWC4CO.js";
11
+ import "./chunk-QOOUC2J5.js";
12
+ import "./chunk-WCT3NYCV.js";
13
+ import "./chunk-EMLPOL77.js";
14
+ import "./chunk-R3XI2VC7.js";
15
+ import "./chunk-WBM7ZNDI.js";
16
+ import "./chunk-HHKO6SKY.js";
17
+ import "./chunk-BRENJ2BQ.js";
18
+ import "./chunk-TLVIHFRO.js";
19
+ import "./chunk-CXK4DZH3.js";
20
+ import "./chunk-5WRI5ZAA.js";
21
+ export {
22
+ D3_DATA_CHART_TYPES,
23
+ renderDataChartD3,
24
+ supportsD3DataChart
25
+ };
26
+ //# sourceMappingURL=charts-d3-MXEP6BNP.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  compactNumber
3
- } from "./chunk-PFHVU7UA.js";
3
+ } from "./chunk-5BHJZH62.js";
4
4
  import {
5
5
  parseInlineMarkdown
6
6
  } from "./chunk-3HDBAXF5.js";
@@ -15,7 +15,7 @@ import {
15
15
  mix,
16
16
  shapeFill,
17
17
  themeBaseBg
18
- } from "./chunk-P6T66CCZ.js";
18
+ } from "./chunk-WBM7ZNDI.js";
19
19
  import {
20
20
  resolveColor
21
21
  } from "./chunk-TLVIHFRO.js";
@@ -47,7 +47,11 @@ function resolvePaint(parsed, palette, isDark, pctFrac) {
47
47
  const base = parsed.color && resolveColor(parsed.color, palette) || parsed.color || autoColor || getSeriesColors(palette)[0];
48
48
  return {
49
49
  base,
50
- fill: shapeFill(palette, base, isDark, { solid: parsed.options.solidFill }),
50
+ // §1.9 fill family: tint (default) / solid / outline. In outline mode the
51
+ // progress region renders hollow (theme base bg) and the traffic-light /
52
+ // override color moves to the border — advancement still reads from the
53
+ // outlined region's extent against the gray track.
54
+ fill: shapeFill(palette, base, isDark, { mode: parsed.options.fillMode }),
51
55
  track: mix(palette.border, themeBaseBg(palette, isDark), 45),
52
56
  text: palette.text,
53
57
  muted: mix(palette.text, themeBaseBg(palette, isDark), 55)
@@ -177,7 +181,7 @@ function renderBar(svg, parsed, metrics, paint) {
177
181
  g.append("rect").attr("x", x).attr("y", y).attr("width", trackW).attr("height", trackH).attr("rx", r).attr("fill", paint.track);
178
182
  const fillW = trackW * metrics.fillFrac;
179
183
  if (fillW > 0.5) {
180
- g.append("rect").attr("x", x).attr("y", y).attr("width", fillW).attr("height", trackH).attr("rx", r).attr("fill", paint.fill).attr("stroke", paint.base).attr("stroke-width", 2);
184
+ g.append("rect").attr("x", x).attr("y", y).attr("width", fillW).attr("height", trackH).attr("rx", r).attr("fill", paint.fill).attr("stroke", paint.base).attr("stroke-width", parsed.options.fillMode === "outline" ? 1.5 : 2);
181
185
  }
182
186
  if (!parsed.options.noValue) {
183
187
  const valX = Math.max(x + fillW - 16, x + 52);
@@ -222,7 +226,7 @@ function renderThermometer(svg, parsed, metrics, paint) {
222
226
  const yBase = bulbCy - Math.sqrt(mBulb * mBulb - mHalf * mHalf);
223
227
  const yForFrac = (f) => yTop + (1 - f) * (yBase - yTop);
224
228
  const fillTopY = clamp(yForFrac(metrics.fillFrac), yTop, yBase);
225
- g.append("path").attr("d", bodyPath(fillTopY, mHalf, mBulb, false)).attr("fill", paint.fill).attr("stroke", paint.base).attr("stroke-width", 2).attr("stroke-linejoin", "round");
229
+ g.append("path").attr("d", bodyPath(fillTopY, mHalf, mBulb, false)).attr("fill", paint.fill).attr("stroke", paint.base).attr("stroke-width", parsed.options.fillMode === "outline" ? 1.5 : 2).attr("stroke-linejoin", "round");
226
230
  if (parsed.hasTarget) {
227
231
  const edgeX = cx + r;
228
232
  const tickLabelX = edgeX + 14;
@@ -306,7 +310,13 @@ function renderGauge(svg, parsed, metrics, paint) {
306
310
  }
307
311
  g.append("path").attr("d", arcPath(cx, cy, r, 0, 1)).attr("fill", "none").attr("stroke", paint.track).attr("stroke-width", stroke).attr("stroke-linecap", "round");
308
312
  if (metrics.fillFrac > 1e-3) {
309
- g.append("path").attr("d", arcPath(cx, cy, r, 0, metrics.fillFrac)).attr("fill", "none").attr("stroke", paint.fill).attr("stroke-width", stroke).attr("stroke-linecap", "round");
313
+ const valueArc = arcPath(cx, cy, r, 0, metrics.fillFrac);
314
+ if (parsed.options.fillMode === "outline") {
315
+ g.append("path").attr("d", valueArc).attr("fill", "none").attr("stroke", paint.base).attr("stroke-width", stroke).attr("stroke-linecap", "round");
316
+ g.append("path").attr("d", valueArc).attr("fill", "none").attr("stroke", paint.fill).attr("stroke-width", stroke - 3).attr("stroke-linecap", "round");
317
+ } else {
318
+ g.append("path").attr("d", valueArc).attr("fill", "none").attr("stroke", paint.fill).attr("stroke-width", stroke).attr("stroke-linecap", "round");
319
+ }
310
320
  }
311
321
  const a = Math.PI - metrics.fillFrac * Math.PI;
312
322
  const needleLen = r - stroke / 2 - 6;
@@ -351,4 +361,4 @@ export {
351
361
  renderGoal,
352
362
  renderGoalForExport
353
363
  };
354
- //# sourceMappingURL=chunk-3YPY3OXD.js.map
364
+ //# sourceMappingURL=chunk-3HF5YEFJ.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  computeNodeText,
3
3
  layoutMindmap
4
- } from "./chunk-7TV5Y53Y.js";
4
+ } from "./chunk-HWX6ZHF3.js";
5
5
  import {
6
6
  renderInlineText
7
7
  } from "./chunk-3HDBAXF5.js";
@@ -19,10 +19,10 @@ import {
19
19
  } from "./chunk-YYVTBZZC.js";
20
20
  import {
21
21
  renderIntegratedLegend
22
- } from "./chunk-HEVYAHLW.js";
22
+ } from "./chunk-AUIM2NVH.js";
23
23
  import {
24
24
  getMaxLegendReservedHeight
25
- } from "./chunk-7UEMZREK.js";
25
+ } from "./chunk-YAA6IID3.js";
26
26
  import {
27
27
  TITLE_FONT_SIZE,
28
28
  TITLE_FONT_WEIGHT
@@ -32,20 +32,23 @@ import {
32
32
  } from "./chunk-6KFWC4CO.js";
33
33
  import {
34
34
  LEGEND_GROUP_GAP
35
- } from "./chunk-HQCHYB5F.js";
35
+ } from "./chunk-QOOUC2J5.js";
36
36
  import {
37
37
  parseMindmap
38
- } from "./chunk-SXRTRMEE.js";
38
+ } from "./chunk-AL672HNE.js";
39
39
  import {
40
40
  preprocessDescriptionLine
41
41
  } from "./chunk-IYULMRBE.js";
42
42
  import {
43
43
  contrastText,
44
44
  shapeFill
45
- } from "./chunk-P6T66CCZ.js";
45
+ } from "./chunk-WBM7ZNDI.js";
46
46
  import {
47
47
  tagAttrKey
48
- } from "./chunk-FJUNPCYI.js";
48
+ } from "./chunk-HHKO6SKY.js";
49
+ import {
50
+ fillModeFromOptions
51
+ } from "./chunk-BRENJ2BQ.js";
49
52
 
50
53
  // src/mindmap/renderer.ts
51
54
  import * as d3Selection from "d3-selection";
@@ -56,11 +59,9 @@ var LABEL_LINE_HEIGHT = 18;
56
59
  var DESC_LINE_HEIGHT = 14;
57
60
  var NODE_RADIUS = 6;
58
61
  var ROOT_STROKE_WIDTH = 2.5;
59
- function nodeFill(palette, isDark, nodeColor, solid) {
62
+ function nodeFill(palette, isDark, nodeColor, fillMode) {
60
63
  const color = nodeColor ?? palette.primary;
61
- return shapeFill(palette, color, isDark, {
62
- ...solid !== void 0 && { solid }
63
- });
64
+ return shapeFill(palette, color, isDark, { mode: fillMode });
64
65
  }
65
66
  function nodeStroke(palette, nodeColor) {
66
67
  return nodeColor ?? palette.primary;
@@ -258,7 +259,7 @@ function renderMindmap(container, parsed, layout, palette, isDark, onClickItem,
258
259
  palette,
259
260
  isDark,
260
261
  effectiveColor,
261
- parsed.options["solid-fill"] === "on"
262
+ fillModeFromOptions(parsed.options)
262
263
  );
263
264
  const stroke = nodeStroke(palette, effectiveColor);
264
265
  const onFillText = contrastText(
@@ -388,4 +389,4 @@ export {
388
389
  renderMindmap,
389
390
  renderMindmapForExport
390
391
  };
391
- //# sourceMappingURL=chunk-4MJ7M6YL.js.map
392
+ //# sourceMappingURL=chunk-3HGU63UY.js.map
@@ -0,0 +1,35 @@
1
+ import {
2
+ mix
3
+ } from "./chunk-WBM7ZNDI.js";
4
+ import {
5
+ resolveColor
6
+ } from "./chunk-TLVIHFRO.js";
7
+
8
+ // src/clock/swatches.ts
9
+ function buildSwatches(palette, muted) {
10
+ const bg = palette.bg;
11
+ const day = resolveColor("orange", palette) ?? "#d98a1f";
12
+ const night = resolveColor("blue", palette) ?? "#4864b0";
13
+ const ok = resolveColor("green", palette) ?? "#3f9e59";
14
+ const soon = resolveColor("orange", palette) ?? "#c9761a";
15
+ return {
16
+ day,
17
+ night,
18
+ dayTint: mix(day, bg, 14),
19
+ nightTint: mix(night, bg, 14),
20
+ ok,
21
+ soon,
22
+ off: muted,
23
+ okSoft: mix(ok, bg, 14),
24
+ soonSoft: mix(soon, bg, 14),
25
+ offSoft: mix(muted, bg, 16),
26
+ // Sundown indicator: a yellow sun by day, a blue moon by night.
27
+ sunIcon: resolveColor("yellow", palette) ?? "#f4b400",
28
+ moonIcon: night
29
+ };
30
+ }
31
+
32
+ export {
33
+ buildSwatches
34
+ };
35
+ //# sourceMappingURL=chunk-3LK5DNED.js.map