@diagrammo/dgmo 0.51.0 → 0.53.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 (336) hide show
  1. package/.cursorrules +74 -77
  2. package/.github/copilot-instructions.md +74 -77
  3. package/.windsurfrules +74 -77
  4. package/SKILL.md +74 -77
  5. package/dist/advanced.d.ts +109 -246
  6. package/dist/advanced.js +296 -633
  7. package/dist/analyzer-TDN5KJFP.js +15 -0
  8. package/dist/auto.css +14 -6
  9. package/dist/auto.js +141 -129
  10. package/dist/auto.mjs +2062 -937
  11. package/dist/block.css +14 -6
  12. package/dist/block.js +123 -73
  13. package/dist/calculator-VBIT6GQF.js +11 -0
  14. package/dist/chart-meta-CPNVUZ5J.d.ts +232 -0
  15. package/dist/chart-meta.d.ts +2 -0
  16. package/dist/chart-meta.js +105 -0
  17. package/dist/charts-d3-DH2XA45I.js +26 -0
  18. package/dist/{chunk-RLFVAKEO.js → chunk-22OQWBWD.js} +25 -8
  19. package/dist/{chunk-I2QZFCS2.js → chunk-27STWBOK.js} +10 -8
  20. package/dist/{chunk-5PZT4DQG.js → chunk-2QC4HXCY.js} +41 -21
  21. package/dist/{chunk-HFMYN6N2.js → chunk-3B2GXZCX.js} +4 -3
  22. package/dist/{chunk-F3FYUFUH.js → chunk-3BEKKRH5.js} +18 -17
  23. package/dist/{chunk-2UJSV2VT.js → chunk-3CZLWOCI.js} +17 -7
  24. package/dist/{chunk-JEUJOX5X.js → chunk-3IUHKMJI.js} +2 -2
  25. package/dist/{chunk-7L4UJOY6.js → chunk-3TYUXC7D.js} +2 -2
  26. package/dist/{chunk-Y2ZE3MSG.js → chunk-43E26CDA.js} +2 -2
  27. package/dist/{chunk-ZO27FGJS.js → chunk-4ASVFYB2.js} +10 -7
  28. package/dist/{chunk-WCT3NYCV.js → chunk-4ASYQ347.js} +33 -8
  29. package/dist/{chunk-2ILHQOL3.js → chunk-4K42RUGC.js} +41 -13
  30. package/dist/{chunk-I5IGB56C.js → chunk-4QV26TEG.js} +41 -1
  31. package/dist/{chunk-QOOUC2J5.js → chunk-4RGZFA7H.js} +2 -2
  32. package/dist/{chunk-CXK4DZH3.js → chunk-4W2PE66Q.js} +12 -2
  33. package/dist/{chunk-EXOQP75F.js → chunk-4WGMGKCZ.js} +53 -33
  34. package/dist/{chunk-JED6ZDEE.js → chunk-5HWPEYWB.js} +2 -2
  35. package/dist/{chunk-3YSQZ75W.js → chunk-65V6IRFN.js} +46 -33
  36. package/dist/{chunk-TMACGPW5.js → chunk-6AUZPPAV.js} +4 -4
  37. package/dist/{chunk-6H7O2OPM.js → chunk-6DCOIN4W.js} +36 -6
  38. package/dist/{chunk-GTWKD3QT.js → chunk-6HTRCTAS.js} +7 -6
  39. package/dist/{chunk-VB4UJ3H2.js → chunk-6KY7OCZC.js} +21 -11
  40. package/dist/{chunk-YAA6IID3.js → chunk-774C2FF3.js} +2 -2
  41. package/dist/{chunk-WJ7RW65H.js → chunk-7GUF6SDR.js} +22 -20
  42. package/dist/{chunk-QYTPPDAO.js → chunk-7JDTNFAK.js} +3 -3
  43. package/dist/{chunk-U6EQI3U6.js → chunk-ADYKAKE3.js} +3 -3
  44. package/dist/{chunk-VNSXLA6G.js → chunk-AHXIMHDQ.js} +84 -20
  45. package/dist/chunk-AIMLCDAO.js +404 -0
  46. package/dist/{chunk-6MNGECP2.js → chunk-ALYZ3MAA.js} +4 -4
  47. package/dist/{chunk-5F5ELR3V.js → chunk-AN2DQB3G.js} +151 -20
  48. package/dist/{chunk-IEWG6J7C.js → chunk-AZNXGWDC.js} +91 -36
  49. package/dist/{chunk-4XFBQT5O.js → chunk-B4XS2AF2.js} +3 -3
  50. package/dist/{chunk-CC4YRBWV.js → chunk-BD3WGY4T.js} +18 -8
  51. package/dist/{chunk-RAHVMKBG.js → chunk-BFDVEO5R.js} +2 -2
  52. package/dist/{chunk-332ZR4QU.js → chunk-BR7AYN76.js} +8 -8
  53. package/dist/{chunk-P3NRSSUU.js → chunk-BULHGPHK.js} +3 -3
  54. package/dist/{chunk-PZDBOK2Q.js → chunk-CK2GMDXD.js} +11 -5
  55. package/dist/{chunk-467TVMQL.js → chunk-CMVZWP32.js} +3 -3
  56. package/dist/{chunk-GNSFLJAA.js → chunk-CQFNIIQN.js} +7 -7
  57. package/dist/{chunk-RBDIYLA5.js → chunk-DAOFNU6J.js} +17 -1
  58. package/dist/{chunk-AFIEPDLX.js → chunk-DWUMPMV2.js} +23 -11
  59. package/dist/{chunk-USZW2HHU.js → chunk-EQW6HOP4.js} +4 -3
  60. package/dist/{chunk-6BQFET7X.js → chunk-FFXCKZOU.js} +12 -4
  61. package/dist/{chunk-WRNFDFPU.js → chunk-FGDSTT3F.js} +2 -2
  62. package/dist/{chunk-6NFYEQDX.js → chunk-FLDC7ZAK.js} +34 -7
  63. package/dist/{chunk-IUJODQKX.js → chunk-FT7TPPZ5.js} +25 -23
  64. package/dist/{chunk-IEDMFNU7.js → chunk-FUKNRLIJ.js} +19 -7
  65. package/dist/{chunk-JJXGQIRV.js → chunk-FXCB7H5O.js} +4 -4
  66. package/dist/{chunk-GGHRAITI.js → chunk-GABSL6TH.js} +4 -4
  67. package/dist/{chunk-RXKTSFDL.js → chunk-GAWKIIPO.js} +35 -43
  68. package/dist/{chunk-ZJ3LS7DW.js → chunk-GMAH572Z.js} +6 -6
  69. package/dist/{chunk-TRM2J7ZN.js → chunk-GMIJ35PW.js} +28 -29
  70. package/dist/{chunk-AB7INMR5.js → chunk-GQ644SPD.js} +26 -25
  71. package/dist/{chunk-5QKQSSPO.js → chunk-GRM2A4BG.js} +4 -4
  72. package/dist/{chunk-3ODS2VGL.js → chunk-GWQJKTFS.js} +161 -704
  73. package/dist/{chunk-OTOHI4JO.js → chunk-H3HFC3SQ.js} +2 -2
  74. package/dist/{chunk-JSSX2SX4.js → chunk-HE5J53SZ.js} +4 -4
  75. package/dist/{chunk-2EQMXBBQ.js → chunk-HNBY6CNV.js} +3 -3
  76. package/dist/{chunk-J76PIKAT.js → chunk-HO3RCNF6.js} +3 -3
  77. package/dist/{chunk-OJTXTQA2.js → chunk-HORZ5H2L.js} +38 -31
  78. package/dist/{chunk-MX2EY5Y7.js → chunk-HOXKNRON.js} +2 -2
  79. package/dist/{chunk-E7Y3SYKW.js → chunk-I64ECJX3.js} +18 -8
  80. package/dist/{chunk-JM4LEPY3.js → chunk-IQJCVREL.js} +11 -8
  81. package/dist/{chunk-3JLKYGBQ.js → chunk-J7HI6G3G.js} +9 -6
  82. package/dist/{chunk-Q62FEYK3.js → chunk-JHOAH4TI.js} +3 -3
  83. package/dist/{chunk-OZPBJM5Q.js → chunk-JTMSWEIW.js} +11 -8
  84. package/dist/{chunk-P6T66CCZ.js → chunk-JYDMBWRP.js} +37 -19
  85. package/dist/{chunk-7DF4J4RL.js → chunk-KKHCNSKK.js} +17 -11
  86. package/dist/{chunk-ENRS56GC.js → chunk-KUSAVOWZ.js} +11 -8
  87. package/dist/{chunk-BYJBIALT.js → chunk-LC3FFD43.js} +23 -18
  88. package/dist/{chunk-65WJYYKJ.js → chunk-LHILKFDP.js} +16 -11
  89. package/dist/{chunk-NEQ6GJXB.js → chunk-LQHVDZYC.js} +52 -16
  90. package/dist/{chunk-5WPNFSXP.js → chunk-MA3HJZHB.js} +5 -5
  91. package/dist/{chunk-Z6XJQ6KO.js → chunk-MEQYZZFR.js} +3 -3
  92. package/dist/{chunk-MVN25IF6.js → chunk-NNUMX6WX.js} +42 -12
  93. package/dist/{chunk-7DYOELRK.js → chunk-NNYFQOTK.js} +78 -38
  94. package/dist/{chunk-NNAAJVBU.js → chunk-NR5HCAUD.js} +1 -1
  95. package/dist/{chunk-H6PI3KJT.js → chunk-ODUT5WMC.js} +2 -2
  96. package/dist/{chunk-5PDTIBLV.js → chunk-P3H7QVDH.js} +56 -19
  97. package/dist/{chunk-ND76YJCN.js → chunk-PIXZTCKH.js} +84 -117
  98. package/dist/{chunk-3LV2NCB6.js → chunk-PKNNHU7H.js} +22 -9
  99. package/dist/{chunk-TK2VQQX2.js → chunk-PT4SW76W.js} +20 -18
  100. package/dist/{chunk-AE7II3E3.js → chunk-PV2QO7QL.js} +4 -4
  101. package/dist/{chunk-FTBZV6NE.js → chunk-PYO4TJJ3.js} +34 -26
  102. package/dist/{chunk-QZPEGJOM.js → chunk-Q7AH665U.js} +28 -14
  103. package/dist/{chunk-QHI5XVUJ.js → chunk-QAALSCKI.js} +27 -26
  104. package/dist/{chunk-GD6L76WD.js → chunk-QI3BOLQB.js} +23 -11
  105. package/dist/{chunk-Y6GBQTBK.js → chunk-QWIBT6DS.js} +50 -28
  106. package/dist/{chunk-GU46PPT3.js → chunk-QXGACPS2.js} +5 -5
  107. package/dist/{chunk-FMDSF3OV.js → chunk-QZAW5SFH.js} +2 -2
  108. package/dist/{chunk-YGJZWZTY.js → chunk-R5NH5BZG.js} +12 -9
  109. package/dist/{chunk-U5SI5NIM.js → chunk-RJ5LBZ5U.js} +43 -26
  110. package/dist/{chunk-XHVV4NVW.js → chunk-RT7ACF77.js} +12 -2
  111. package/dist/{chunk-XEQXCIBC.js → chunk-RW5PEJ7D.js} +18 -6
  112. package/dist/{chunk-4VWJ4LW2.js → chunk-SG4PRYO3.js} +61 -49
  113. package/dist/{chunk-RBHWPDBB.js → chunk-SGPFVDUL.js} +18 -7
  114. package/dist/{chunk-KJGG2JKQ.js → chunk-SQCBSFT5.js} +84 -79
  115. package/dist/{chunk-5X6YQA2J.js → chunk-U7NKYLX2.js} +18 -16
  116. package/dist/chunk-U7VO6JAA.js +566 -0
  117. package/dist/{chunk-32XPAAET.js → chunk-UFQJMOVZ.js} +10 -10
  118. package/dist/{chunk-Z72XRXD4.js → chunk-UJRTPOHH.js} +3 -3
  119. package/dist/{chunk-EDA6C7MV.js → chunk-UK6DKJLD.js} +34 -14
  120. package/dist/{chunk-GROLTAWZ.js → chunk-UKP5HWB5.js} +149 -89
  121. package/dist/{chunk-DY7XLRHK.js → chunk-UQRIKAMH.js} +28 -27
  122. package/dist/{chunk-TYS6CSS5.js → chunk-UU6LUYUH.js} +2 -2
  123. package/dist/{chunk-NI3XQBPB.js → chunk-UVDCHR4E.js} +18 -6
  124. package/dist/{chunk-6K2M4VSR.js → chunk-VAO6ANGC.js} +23 -10
  125. package/dist/{chunk-6NYWYNBI.js → chunk-VGNIDAPQ.js} +4 -4
  126. package/dist/{chunk-VL2O2F3W.js → chunk-VHO3YBTB.js} +2 -2
  127. package/dist/{chunk-IUO34HKW.js → chunk-VIRANCNY.js} +36 -32
  128. package/dist/{chunk-4QZ43D7I.js → chunk-VJHBSPGF.js} +12 -14
  129. package/dist/{chunk-BGP54HVR.js → chunk-VKNCC2GX.js} +12 -8
  130. package/dist/{chunk-FC5I2KXV.js → chunk-VRRDUYOK.js} +7 -7
  131. package/dist/{chunk-G3PF3S7P.js → chunk-W2DINCHL.js} +15 -15
  132. package/dist/{chunk-OU7HLO7I.js → chunk-W5KMNC5U.js} +8 -8
  133. package/dist/{chunk-FFUN5D66.js → chunk-WF64MW5G.js} +2 -2
  134. package/dist/{chunk-X7EC3L2H.js → chunk-X3RXGSCZ.js} +48 -30
  135. package/dist/{chunk-KFNWFNAA.js → chunk-XEAQDIMF.js} +7 -6
  136. package/dist/{chunk-AXW3M6OQ.js → chunk-XG4NWFPY.js} +38 -27
  137. package/dist/{chunk-B63YB7X3.js → chunk-XQ4KN6JQ.js} +127 -65
  138. package/dist/{chunk-WBRZJOEC.js → chunk-XY3UDKKH.js} +4 -4
  139. package/dist/{chunk-IE477RQZ.js → chunk-YG2BEIQU.js} +14 -13
  140. package/dist/{chunk-LV4BETUU.js → chunk-YJVA3QUU.js} +55 -5
  141. package/dist/{chunk-5SVOCD5W.js → chunk-YR43LJT5.js} +20 -16
  142. package/dist/{chunk-TLVIHFRO.js → chunk-ZKPPI6BF.js} +2 -2
  143. package/dist/{chunk-WQLMU7VG.js → chunk-ZXUAPTCK.js} +3 -3
  144. package/dist/cli.cjs +158 -155
  145. package/dist/clock.js +25 -23
  146. package/dist/countdown.js +4 -3
  147. package/dist/dgmo-router-B4S23EBH.js +86 -0
  148. package/dist/dimensions-K6PGYYGT.js +22 -0
  149. package/dist/editor.js +36 -6
  150. package/dist/element.js +143 -131
  151. package/dist/element.mjs +2062 -937
  152. package/dist/flowchart-parser-LALR6J6F.js +21 -0
  153. package/dist/{flowchart-renderer-AQSMEMYF.js → flowchart-renderer-DXYB5YRF.js} +14 -14
  154. package/dist/highlight.d.ts +21 -1
  155. package/dist/highlight.js +129 -8
  156. package/dist/index.d.ts +4 -2
  157. package/dist/index.js +80 -75
  158. package/dist/layout-3BVDMKXI.js +15 -0
  159. package/dist/layout-3M5UYJHY.js +14 -0
  160. package/dist/{layout-JDJAEQ3P.js → layout-3V2A4MUE.js} +8 -8
  161. package/dist/layout-4IHCMWZN.js +19 -0
  162. package/dist/layout-5XGYNYVT.js +9 -0
  163. package/dist/layout-AZUPXWSK.js +15 -0
  164. package/dist/{layout-F4WO357A.js → layout-CAAKQX4W.js} +3 -3
  165. package/dist/layout-CB3XWCOI.js +10 -0
  166. package/dist/{layout-OAC4PEAC.js → layout-E6HR6PXH.js} +7 -7
  167. package/dist/{layout-7QXCNOVS.js → layout-HBWT2G23.js} +3 -3
  168. package/dist/layout-KPQWJNAG.js +14 -0
  169. package/dist/layout-OL2XFJXA.js +17 -0
  170. package/dist/layout-WCAIKGZG.js +19 -0
  171. package/dist/layout-WSMPBQ4Q.js +17 -0
  172. package/dist/layout-ZE5DRJWX.js +20 -0
  173. package/dist/{layout-search-55FU6HD3.js → layout-search-34DPZD43.js} +51 -35
  174. package/dist/legend-constants-P5EQWRQQ.js +49 -0
  175. package/dist/{palettes-PRJ2RI6D.js → palettes-FGTNFARW.js} +4 -4
  176. package/dist/{parser-KKTJ6M3Y.js → parser-275KP7JO.js} +8 -8
  177. package/dist/parser-27Z76SN3.js +22 -0
  178. package/dist/parser-3CODK6RG.js +15 -0
  179. package/dist/{parser-EH5VE7ZN.js → parser-3KIGEEJM.js} +6 -6
  180. package/dist/parser-3VSWEKBF.js +15 -0
  181. package/dist/parser-4E4I3GNT.js +13 -0
  182. package/dist/parser-5FGJSQNS.js +12 -0
  183. package/dist/parser-5HQXCNOS.js +12 -0
  184. package/dist/parser-5QPFOB5F.js +12 -0
  185. package/dist/parser-6B6SSZT7.js +11 -0
  186. package/dist/parser-6PPHAXXH.js +14 -0
  187. package/dist/parser-7JHWEWXM.js +13 -0
  188. package/dist/{parser-5PDYJGWA.js → parser-7JVIDLLR.js} +7 -7
  189. package/dist/parser-CKA3QMAG.js +18 -0
  190. package/dist/parser-CRKLXGW7.js +13 -0
  191. package/dist/parser-EXNBDNGY.js +11 -0
  192. package/dist/parser-FF4BMRSB.js +16 -0
  193. package/dist/parser-FOOFEJQU.js +13 -0
  194. package/dist/parser-G26MTBFS.js +11 -0
  195. package/dist/parser-GKP2MHHL.js +11 -0
  196. package/dist/parser-GN2MM5CC.js +11 -0
  197. package/dist/parser-IKWK2ZU3.js +18 -0
  198. package/dist/parser-IVGHXLZP.js +14 -0
  199. package/dist/parser-NNIL3HXU.js +11 -0
  200. package/dist/parser-RNLTBIJ6.js +19 -0
  201. package/dist/parser-UWRX52PC.js +16 -0
  202. package/dist/parser-VOERD6XR.js +14 -0
  203. package/dist/parser-XNKJCMMA.js +13 -0
  204. package/dist/parser-XVPTRWZ4.js +15 -0
  205. package/dist/parser-YSLNDFLV.js +22 -0
  206. package/dist/parser-ZGNXYFPS.js +15 -0
  207. package/dist/parser-ZQDQTB4X.js +20 -0
  208. package/dist/pert.d.ts +4 -2
  209. package/dist/registry-CaSw0PSH.d.ts +350 -0
  210. package/dist/renderer-2C6DJRYN.js +24 -0
  211. package/dist/renderer-5MPN7CXZ.js +19 -0
  212. package/dist/renderer-6EN5XXJZ.js +27 -0
  213. package/dist/renderer-6WRYVM5R.js +24 -0
  214. package/dist/renderer-7NQSTQMQ.js +16 -0
  215. package/dist/renderer-7ZNVOVFG.js +16 -0
  216. package/dist/{renderer-KQB7UGDS.js → renderer-AK2WO4EI.js} +7 -6
  217. package/dist/renderer-COLQFSFV.js +26 -0
  218. package/dist/renderer-CWEFGEIC.js +36 -0
  219. package/dist/renderer-D3BRNOMV.js +29 -0
  220. package/dist/renderer-HIFQVEJA.js +22 -0
  221. package/dist/renderer-JCZG6AYU.js +28 -0
  222. package/dist/{renderer-6RKQPNJI.js → renderer-JTCX6PCG.js} +13 -13
  223. package/dist/renderer-JWGQSTMR.js +37 -0
  224. package/dist/{renderer-3YPZHMOU.js → renderer-K7XLVPH5.js} +6 -6
  225. package/dist/renderer-KARQF3F3.js +22 -0
  226. package/dist/renderer-LVZAHRP6.js +34 -0
  227. package/dist/{renderer-QXGN5H3A.js → renderer-NE5W7CQP.js} +8 -8
  228. package/dist/renderer-QD2SJF2I.js +34 -0
  229. package/dist/renderer-RLMOTXZ6.js +37 -0
  230. package/dist/renderer-SQ54MDSA.js +26 -0
  231. package/dist/{renderer-UV6MI64M.js → renderer-TYHGXAVT.js} +7 -6
  232. package/dist/renderer-UKXW2QPE.js +23 -0
  233. package/dist/renderer-UPF7NRTI.js +28 -0
  234. package/dist/renderer-VMH6L6CP.js +24 -0
  235. package/dist/{renderer-GHPZMFU2.js → renderer-WCWI4I6A.js} +5 -5
  236. package/dist/renderer-WFSUBKUL.js +25 -0
  237. package/dist/renderer-WNFXYYGL.js +21 -0
  238. package/dist/{renderer-RGIYOTKJ.js → renderer-XTXSOK3L.js} +14 -14
  239. package/dist/renderer-YUKPS27O.js +24 -0
  240. package/dist/renderer-YUXGXGSW.js +27 -0
  241. package/dist/renderer-ZBTEX2JK.js +16 -0
  242. package/dist/renderer-radial-WF6VOUOD.js +21 -0
  243. package/dist/{resolver-EMTGNR3D.js → resolver-WFKZYBJ2.js} +4 -4
  244. package/dist/state-parser-L7DHZIQO.js +19 -0
  245. package/dist/state-renderer-TFEUOP4H.js +38 -0
  246. package/dist/{themes-32xj5ZTW.d.ts → themes-tbBkIVsn.d.ts} +2 -349
  247. package/docs/ai-integration.md +74 -77
  248. package/docs/language-reference.md +329 -290
  249. package/fonts/Inter-Bold.woff2 +0 -0
  250. package/fonts/Inter-Regular.woff2 +0 -0
  251. package/gallery/fixtures/boxes-and-lines-diverging.dgmo +1 -2
  252. package/gallery/fixtures/boxes-and-lines.dgmo +1 -1
  253. package/gallery/fixtures/clock.dgmo +1 -1
  254. package/gallery/fixtures/event-line.dgmo +1 -1
  255. package/gallery/fixtures/gantt-full.dgmo +1 -1
  256. package/gallery/fixtures/gantt-sprints.dgmo +9 -9
  257. package/gallery/fixtures/gantt.dgmo +1 -1
  258. package/gallery/fixtures/legacy-syntax-backcompat.dgmo +16 -0
  259. package/gallery/fixtures/state-tags.dgmo +40 -0
  260. package/gallery/fixtures/swimlane.dgmo +1 -1
  261. package/gallery/fixtures/timeline-intraday.dgmo +1 -1
  262. package/package.json +5 -1
  263. package/dist/analyzer-BJ54GIFB.js +0 -15
  264. package/dist/calculator-LDYQCDDY.js +0 -11
  265. package/dist/charts-d3-7E4B4IMW.js +0 -26
  266. package/dist/dgmo-router-Y2VEX46B.js +0 -86
  267. package/dist/dimensions-F7B5C4BJ.js +0 -22
  268. package/dist/flowchart-parser-MY53QWTZ.js +0 -21
  269. package/dist/layout-46366KBT.js +0 -10
  270. package/dist/layout-46N4JJYK.js +0 -17
  271. package/dist/layout-4DIUOX2T.js +0 -14
  272. package/dist/layout-AM2JWW3X.js +0 -15
  273. package/dist/layout-CBCLPMSG.js +0 -15
  274. package/dist/layout-EE6GE46Y.js +0 -17
  275. package/dist/layout-G23F7LDH.js +0 -9
  276. package/dist/layout-HYZPWAK5.js +0 -18
  277. package/dist/layout-MUPRALE5.js +0 -14
  278. package/dist/layout-YVTNOTN4.js +0 -20
  279. package/dist/layout-ZDOSXL5G.js +0 -19
  280. package/dist/parser-2Q2T4C3B.js +0 -22
  281. package/dist/parser-3A42DZ72.js +0 -11
  282. package/dist/parser-4RFTKAQX.js +0 -15
  283. package/dist/parser-57ILIFZ2.js +0 -20
  284. package/dist/parser-5A2UWU6B.js +0 -11
  285. package/dist/parser-6BJEXUFX.js +0 -13
  286. package/dist/parser-6ZKABF5S.js +0 -22
  287. package/dist/parser-AIMHGJRR.js +0 -19
  288. package/dist/parser-AZJ25OKK.js +0 -13
  289. package/dist/parser-B77S5SZM.js +0 -11
  290. package/dist/parser-BEPSWJAD.js +0 -11
  291. package/dist/parser-BKI42XBQ.js +0 -16
  292. package/dist/parser-C3D7MVXY.js +0 -11
  293. package/dist/parser-CDG7CHV5.js +0 -14
  294. package/dist/parser-CZOJ7XQ6.js +0 -15
  295. package/dist/parser-E2RL6JYF.js +0 -18
  296. package/dist/parser-FQ6GZFMR.js +0 -13
  297. package/dist/parser-GKLZKEIK.js +0 -13
  298. package/dist/parser-H6ABKHZZ.js +0 -12
  299. package/dist/parser-I6GGFKOQ.js +0 -12
  300. package/dist/parser-JA7JQ7NF.js +0 -15
  301. package/dist/parser-OK22AC6Y.js +0 -14
  302. package/dist/parser-OK2ILHRT.js +0 -16
  303. package/dist/parser-OUTPNJWC.js +0 -11
  304. package/dist/parser-PORDUX5E.js +0 -15
  305. package/dist/parser-SRVFR7PM.js +0 -13
  306. package/dist/parser-UKFFZCFJ.js +0 -14
  307. package/dist/parser-UMWPLORP.js +0 -18
  308. package/dist/parser-Z4TZV2CB.js +0 -12
  309. package/dist/renderer-2AUFT3E2.js +0 -24
  310. package/dist/renderer-2HTNBIF2.js +0 -34
  311. package/dist/renderer-3K3IB7D5.js +0 -22
  312. package/dist/renderer-3YNIWF5I.js +0 -16
  313. package/dist/renderer-4WR6WMVF.js +0 -26
  314. package/dist/renderer-66MERVQ2.js +0 -24
  315. package/dist/renderer-ARMJBP6C.js +0 -28
  316. package/dist/renderer-CO2DW7S7.js +0 -37
  317. package/dist/renderer-EDJ2O4S5.js +0 -34
  318. package/dist/renderer-F7U3MFCV.js +0 -22
  319. package/dist/renderer-GD2COXVL.js +0 -16
  320. package/dist/renderer-GQIESYEM.js +0 -25
  321. package/dist/renderer-HCKJDFXD.js +0 -37
  322. package/dist/renderer-HYGHO4SJ.js +0 -28
  323. package/dist/renderer-JC3RDUT7.js +0 -23
  324. package/dist/renderer-NKJ24TEA.js +0 -19
  325. package/dist/renderer-OYO67VZK.js +0 -26
  326. package/dist/renderer-QIWVHWZO.js +0 -15
  327. package/dist/renderer-QRWACQRI.js +0 -21
  328. package/dist/renderer-QXPP4TA2.js +0 -27
  329. package/dist/renderer-RHT4MHFU.js +0 -24
  330. package/dist/renderer-RYR3TJ46.js +0 -36
  331. package/dist/renderer-SRKDNDFB.js +0 -27
  332. package/dist/renderer-TGTUABCI.js +0 -24
  333. package/dist/renderer-TXJFKPOG.js +0 -29
  334. package/dist/renderer-radial-FWABAZHB.js +0 -21
  335. package/dist/state-parser-6T6CNMPX.js +0 -18
  336. package/dist/state-renderer-AWZ3ECAX.js +0 -34
package/dist/block.css CHANGED
@@ -27,17 +27,25 @@
27
27
 
28
28
  /* === Toolbar ===
29
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.
34
- * No text labels, no disclosure triangle — three wordless icon buttons. */
30
+ * bottom-right corner (position:absolute — it reserves no layout space, so the
31
+ * block is exactly as tall as the chart). Bottom-right (not top-right) so it
32
+ * never collides with a host's own top-right chart chrome — e.g. Obsidian's
33
+ * code-block copy button. It stays fully transparent until the block is
34
+ * hovered or focused, or the source panel is open. It is the <summary> of the
35
+ * source <details>, so toggling works without any JS. No text labels, no
36
+ * disclosure triangle — three wordless icon buttons.
37
+ *
38
+ * Anchored to .dgmo-source-wrap (position:relative below), whose top edge is
39
+ * always the diagram's bottom edge — bottom:calc(100% + gap) therefore keeps
40
+ * the toolbar at the diagram's bottom-right whether the source panel is open or
41
+ * closed (a figure-anchored bottom would drift down below the open code). */
35
42
  .dgmo-source-wrap {
36
43
  margin: 0;
44
+ position: relative;
37
45
  }
38
46
  .dgmo-toolbar {
39
47
  position: absolute;
40
- top: 0.4em;
48
+ bottom: calc(100% + 0.4em);
41
49
  right: 0.4em;
42
50
  z-index: 2;
43
51
  display: flex;
package/dist/block.js CHANGED
@@ -3,95 +3,99 @@ import {
3
3
  docsLink,
4
4
  normalizeSvgForEmbed,
5
5
  renderErrorCard
6
- } from "./chunk-GNSFLJAA.js";
6
+ } from "./chunk-CQFNIIQN.js";
7
7
  import {
8
- encodeDiagramUrl,
9
8
  render
10
- } from "./chunk-3ODS2VGL.js";
11
- import "./chunk-B63YB7X3.js";
9
+ } from "./chunk-GWQJKTFS.js";
10
+ import "./chunk-SG4PRYO3.js";
11
+ import "./chunk-VHO3YBTB.js";
12
+ import "./chunk-XQ4KN6JQ.js";
12
13
  import "./chunk-YRYKTYMQ.js";
14
+ import "./chunk-ADYKAKE3.js";
13
15
  import "./chunk-YYVTBZZC.js";
14
- import "./chunk-OU7HLO7I.js";
15
- import "./chunk-KJGG2JKQ.js";
16
- import "./chunk-GTWKD3QT.js";
17
- import "./chunk-AFIEPDLX.js";
16
+ import "./chunk-W5KMNC5U.js";
17
+ import "./chunk-774C2FF3.js";
18
+ import "./chunk-A4GOY3PE.js";
19
+ import "./chunk-6KFWC4CO.js";
20
+ import {
21
+ encodeDiagramUrl
22
+ } from "./chunk-U7VO6JAA.js";
23
+ import "./chunk-SQCBSFT5.js";
24
+ import "./chunk-Q7AH665U.js";
25
+ import "./chunk-4K42RUGC.js";
26
+ import "./chunk-KUSAVOWZ.js";
27
+ import "./chunk-NR5HCAUD.js";
28
+ import "./chunk-6HTRCTAS.js";
29
+ import "./chunk-DWUMPMV2.js";
18
30
  import {
19
31
  monthIndex,
20
32
  weekdayIndex
21
33
  } from "./chunk-OQKP2X3D.js";
22
- import "./chunk-6NFYEQDX.js";
34
+ import "./chunk-FLDC7ZAK.js";
23
35
  import "./chunk-APKUAJ2L.js";
24
- import "./chunk-XEQXCIBC.js";
25
- import "./chunk-6MNGECP2.js";
26
- import "./chunk-6BQFET7X.js";
36
+ import "./chunk-RW5PEJ7D.js";
37
+ import "./chunk-ALYZ3MAA.js";
38
+ import "./chunk-FFXCKZOU.js";
27
39
  import "./chunk-BDXC7MDK.js";
28
- import "./chunk-4VWJ4LW2.js";
29
- import "./chunk-VL2O2F3W.js";
30
- import "./chunk-U6EQI3U6.js";
31
- import "./chunk-YAA6IID3.js";
32
- import "./chunk-A4GOY3PE.js";
33
- import "./chunk-6KFWC4CO.js";
34
- import "./chunk-QOOUC2J5.js";
35
- import "./chunk-WCT3NYCV.js";
36
- import "./chunk-QZPEGJOM.js";
37
- import "./chunk-GGHRAITI.js";
38
- import "./chunk-PZDBOK2Q.js";
39
- import "./chunk-2EQMXBBQ.js";
40
- import "./chunk-4QZ43D7I.js";
41
- import "./chunk-Q62FEYK3.js";
42
- import "./chunk-AE7II3E3.js";
43
- import "./chunk-2ILHQOL3.js";
44
- import "./chunk-ENRS56GC.js";
45
- import "./chunk-NNAAJVBU.js";
46
- import "./chunk-MVN25IF6.js";
47
- import "./chunk-5PZT4DQG.js";
48
- import "./chunk-I2QZFCS2.js";
40
+ import "./chunk-MA3HJZHB.js";
41
+ import "./chunk-QQJUTGQH.js";
42
+ import "./chunk-3CZLWOCI.js";
43
+ import "./chunk-GABSL6TH.js";
44
+ import "./chunk-CK2GMDXD.js";
45
+ import "./chunk-HNBY6CNV.js";
46
+ import "./chunk-VJHBSPGF.js";
47
+ import "./chunk-JHOAH4TI.js";
48
+ import "./chunk-PV2QO7QL.js";
49
+ import "./chunk-FUKNRLIJ.js";
50
+ import "./chunk-PKNNHU7H.js";
51
+ import "./chunk-NNUMX6WX.js";
52
+ import "./chunk-2QC4HXCY.js";
53
+ import "./chunk-27STWBOK.js";
49
54
  import {
50
55
  REGISTRY_COLON_KEY_TOKENS,
51
56
  REGISTRY_CONTROL_TOKENS,
52
57
  REGISTRY_DIRECTIVE_TOKENS,
53
58
  REGISTRY_MODIFIER_TOKENS,
54
59
  REGISTRY_STATUS_TOKENS
55
- } from "./chunk-6H7O2OPM.js";
56
- import "./chunk-BGP54HVR.js";
57
- import "./chunk-6K2M4VSR.js";
58
- import "./chunk-XHVV4NVW.js";
59
- import "./chunk-E7Y3SYKW.js";
60
- import "./chunk-5WPNFSXP.js";
61
- import "./chunk-QQJUTGQH.js";
62
- import "./chunk-2UJSV2VT.js";
63
- import "./chunk-332ZR4QU.js";
64
- import "./chunk-RBHWPDBB.js";
65
- import "./chunk-KFNWFNAA.js";
66
- import "./chunk-5PDTIBLV.js";
67
- import "./chunk-7L4UJOY6.js";
68
- import "./chunk-USZW2HHU.js";
69
- import "./chunk-EDA6C7MV.js";
70
- import "./chunk-TMACGPW5.js";
71
- import "./chunk-RBDIYLA5.js";
72
- import "./chunk-JJXGQIRV.js";
73
- import "./chunk-IEDMFNU7.js";
74
- import "./chunk-3LV2NCB6.js";
60
+ } from "./chunk-6DCOIN4W.js";
61
+ import "./chunk-VKNCC2GX.js";
62
+ import "./chunk-VAO6ANGC.js";
63
+ import "./chunk-RT7ACF77.js";
64
+ import "./chunk-I64ECJX3.js";
65
+ import "./chunk-AN2DQB3G.js";
66
+ import "./chunk-VRRDUYOK.js";
67
+ import "./chunk-BR7AYN76.js";
68
+ import "./chunk-SGPFVDUL.js";
69
+ import "./chunk-XEAQDIMF.js";
75
70
  import "./chunk-IYULMRBE.js";
71
+ import "./chunk-P3H7QVDH.js";
72
+ import "./chunk-3TYUXC7D.js";
73
+ import "./chunk-EQW6HOP4.js";
74
+ import "./chunk-UK6DKJLD.js";
75
+ import "./chunk-6AUZPPAV.js";
76
+ import {
77
+ scanMonthNameDates
78
+ } from "./chunk-DAOFNU6J.js";
79
+ import "./chunk-FXCB7H5O.js";
76
80
  import {
77
81
  resolvePaletteOrFallback
78
82
  } from "./chunk-R3XI2VC7.js";
79
- import "./chunk-P6T66CCZ.js";
80
- import "./chunk-RLFVAKEO.js";
83
+ import "./chunk-JYDMBWRP.js";
84
+ import "./chunk-4RGZFA7H.js";
85
+ import "./chunk-4ASYQ347.js";
86
+ import "./chunk-22OQWBWD.js";
81
87
  import "./chunk-C3Z4DX3V.js";
82
- import "./chunk-467TVMQL.js";
83
- import "./chunk-OZPBJM5Q.js";
88
+ import "./chunk-CMVZWP32.js";
89
+ import "./chunk-JTMSWEIW.js";
84
90
  import "./chunk-I46X5VUA.js";
85
- import "./chunk-5F5ELR3V.js";
86
91
  import "./chunk-NXMESY4J.js";
87
- import "./chunk-FC5I2KXV.js";
88
- import "./chunk-WQLMU7VG.js";
89
- import "./chunk-FMDSF3OV.js";
90
- import "./chunk-FFUN5D66.js";
92
+ import "./chunk-ZXUAPTCK.js";
93
+ import "./chunk-QZAW5SFH.js";
94
+ import "./chunk-WF64MW5G.js";
91
95
  import "./chunk-NOTA6TEI.js";
92
- import "./chunk-LV4BETUU.js";
93
- import "./chunk-TLVIHFRO.js";
94
- import "./chunk-CXK4DZH3.js";
96
+ import "./chunk-YJVA3QUU.js";
97
+ import "./chunk-ZKPPI6BF.js";
98
+ import "./chunk-4W2PE66Q.js";
95
99
  import "./chunk-5WRI5ZAA.js";
96
100
 
97
101
  // src/editor/dgmo.grammar.js
@@ -187,7 +191,7 @@ var parser = LRParser.deserialize({
187
191
  maxTerm: 40,
188
192
  skippedNodes: [0],
189
193
  repeatNodeCount: 2,
190
- tokenData: "={~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!_!`1`!`!a1m!a!b1t!b!c#u!c!}1{!}#O5R#O#P#u#P#Q5W#Q#R#u#R#S1{#S#T#u#T#[1{#[#]5_#]#o1{#o#p#u#p#q=_#q#r#u#r#s=f#s;'S#u;'S;=`=u<%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(]|}(b!O!P)_!P!Q+O!Q![,Y#R#S0l#U#V*Y#W#X*`#[#]*`#a#b*m#e#f*`#g#h*`#k#l*`#m#n*`~(bO]~~(eP!Q![(h~(kP!Q![(n~(qP!Q![(t~(yQ^~|}(b!O!P)P~)SP!Q![)V~)[P^~!Q![)V~)bP!Q![)e~)jY^~uv(]!Q![)e#U#V*Y#W#X*`#[#]*`#a#b*m#e#f*`#g#h*`#k#l*`#m#n*`~*]P#W#X*`~*ePZ~!a!b*h~*mOZ~~*rQZ~!a!b*h#]#^*x~*{P#b#c*`~+RP!Q![+U~+ZQ[~!P!Q+a!Q![,Q~+dP!Q![+g~+jP!Q![+m~+rP[~!Q![+u~+xP!Q![+{~,QO[~~,VP[~!P!Q+a~,_^^~uv(]|}(b!O!P)_!P!Q+O!Q![-Z#R#S0l#U#V*Y#W#X*`#[#]*`#a#b*m#e#f*`#g#h*`#k#l*`#m#n*`~-`]^~uv(]|}(b!O!P)_!Q![.X#R#S0l#U#V*Y#W#X*`#[#]*`#a#b*m#e#f*`#g#h*`#k#l*`#m#n*`~.^]^~uv(]}!O/V!O!P)_!Q![/q#R#S0l#U#V*Y#W#X*`#[#]*`#a#b*m#e#f*`#g#h*`#k#l*`#m#n*`~/YP!Q![/]~/`P!Q![/c~/hP[~}!O/k~/nP!Q![+u~/v[^~uv(]!O!P)_!Q![/q#R#S0l#U#V*Y#W#X*`#[#]*`#a#b*m#e#f*`#g#h*`#k#l*`#m#n*`~0oP!Q![0r~0wR^~!O!P)P!Q![0r#R#S0l~1XOh~q~~1`Oe~q~~1ePq~!_!`1h~1mO_~~1tOf~q~~1{On~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~~5_Ob~q~~5fap~q~qr3Rst3Rvw3Rwx3R{|3R}!O4V!O!P3R!P!Q3R!Q![3R!_!`3R!a!b3R!b!c3R!c!}3R#R#S3R#T#h3R#h#i6k#i#o3R~6pap~qr3Rst3Rvw3Rwx3R{|3R}!O4V!O!P3R!P!Q3R!Q![3R!_!`3R!a!b3R!b!c3R!c!}3R#R#S3R#T#h3R#h#i7u#i#o3R~7zap~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~:aP!P!Q:d~:gP!P!Q:j~:mYOX;]Zp;]qy;]z|;]}!`;]!a#P;]#Q#p;]#q;'S;];'S;=`<Q<%lO;]~;bY`~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~=fOg~q~~=mPl~q~!`!a=p~=uOY~~=xP;=`<%l#u",
194
+ tokenData: ">w~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![!]1|!]!^#u!^!_2T!_!`2[!`!a2i!a!b2p!b!c#u!c!}2w!}#O5}#O#P#u#P#Q6S#Q#R#u#R#S2w#S#T#u#T#[2w#[#]6Z#]#o2w#o#p#u#p#q>Z#q#r#u#r#s>b#s;'S#u;'S;=`>q<%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,h!Q![-R#R#S1h#U#V+g#W#X+m#[#]+m#a#b+z#e#f+m#g#h,]#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,]#k#l+m#m#n+m~+jP#W#X+m~+rPZ~!a!b+u~+zOZ~~,PQZ~!a!b+u#]#^,V~,YP#b#c+m~,bQZ~!a!b+u#d#e+m~,kP!Q![,n~,sQ[~!P!Q)s!Q![,y~-OP[~!P!Q)s~-W_^~uv(`|}(e}!O)b!O!P*l!P!Q,h!Q![.V#R#S1h#U#V+g#W#X+m#[#]+m#a#b+z#e#f+m#g#h,]#k#l+m#m#n+m~.[]^~uv(`|}(e!O!P*l!Q![/T#R#S1h#U#V+g#W#X+m#[#]+m#a#b+z#e#f+m#g#h,]#k#l+m#m#n+m~/Y]^~uv(`}!O0R!O!P*l!Q![0m#R#S1h#U#V+g#W#X+m#[#]+m#a#b+z#e#f+m#g#h,]#k#l+m#m#n+m~0UP!Q![0X~0[P!Q![0_~0dP[~}!O0g~0jP!Q![*X~0r[^~uv(`!O!P*l!Q![0m#R#S1h#U#V+g#W#X+m#[#]+m#a#b+z#e#f+m#g#h,]#k#l+m#m#n+m~1kP!Q![1n~1sR^~!O!P)S!Q![1n#R#S1h~2TOh~q~~2[Oe~q~~2aPq~!_!`2d~2iO_~~2pOf~q~~2wOn~q~~3O_p~q~qr3}st3}vw3}wx3}{|3}}!O5R!O!P3}!P!Q3}!Q![3}!_!`3}!a!b3}!b!c3}!c!}3}#R#S3}#T#o3}~4S_p~qr3}st3}vw3}wx3}{|3}}!O5R!O!P3}!P!Q3}!Q![3}!_!`3}!a!b3}!b!c3}!c!}3}#R#S3}#T#o3}~5U]qr3}st3}vw3}wx3}{|3}!O!P3}!P!Q3}!_!`3}!a!b3}!b!c3}!c!}3}#R#S3}#T#o3}~6SOa~~6ZOb~q~~6bap~q~qr3}st3}vw3}wx3}{|3}}!O5R!O!P3}!P!Q3}!Q![3}!_!`3}!a!b3}!b!c3}!c!}3}#R#S3}#T#h3}#h#i7g#i#o3}~7lap~qr3}st3}vw3}wx3}{|3}}!O5R!O!P3}!P!Q3}!Q![3}!_!`3}!a!b3}!b!c3}!c!}3}#R#S3}#T#h3}#h#i8q#i#o3}~8vap~qr3}st3}vw3}wx3}{|3}}!O5R!O!P3}!P!Q3}!Q![3}!_!`3}!a!b3}!b!c3}!c!}3}#R#S3}#T#d3}#d#e9{#e#o3}~:Qbp~qr3}st3}vw3}wx3}{|3}}!O5R!O!P3}!P!Q3}!Q![3}![!];Y!_!`3}!a!b3}!b!c3}!c!}3}#R#S3}#T#g3}#g#h=S#h#o3}~;]P!P!Q;`~;cP!P!Q;f~;iYOX<XZp<Xqy<Xz|<X}!`<X!a#P<X#Q#p<X#q;'S<X;'S;=`<|<%lO<X~<^Y`~OX<XZp<Xqy<Xz|<X}!`<X!a#P<X#Q#p<X#q;'S<X;'S;=`<|<%lO<X~=PP;=`<%l<X~=X`p~qr3}st3}vw3}wx3}{|3}}!O5R!O!P3}!P!Q3}!Q![3}![!];Y!_!`3}!a!b3}!b!c3}!c!}3}#R#S3}#T#o3}~>bOg~q~~>iPl~q~!`!a>l~>qOY~~>tP;=`<%l#u",
191
195
  tokenizers: [0],
192
196
  topRules: { "Document": [0, 6] },
193
197
  specialized: [{ term: 32, get: (value, stack) => specializeKeyword(value, stack) << 1, external: specializeKeyword }],
@@ -298,6 +302,7 @@ function highlightDgmo(source) {
298
302
  applyLabelOverrides(tokens);
299
303
  applyNoteContent(tokens);
300
304
  applyRecurringLine(tokens);
305
+ applyMonthNameDates(tokens);
301
306
  return tokens;
302
307
  }
303
308
  var ATTRIBUTE_KEYS = /* @__PURE__ */ new Set([
@@ -322,7 +327,10 @@ var ATTRIBUTE_KEYS = /* @__PURE__ */ new Set([
322
327
  "pain",
323
328
  "opportunity",
324
329
  "thought",
325
- "collapsed",
330
+ // `collapsed` moved to the registry as a bare MODIFIER keyword (decision
331
+ // #48 made the bare flag canonical). It must NOT be listed here too: the
332
+ // ATTRIBUTE_KEYS colon gate only fires on `default` tokens, so a bare
333
+ // keyword classification wins and a duplicate entry would be dead weight.
326
334
  "tech",
327
335
  "span",
328
336
  "split",
@@ -532,6 +540,40 @@ function applyRecurringLine(tokens) {
532
540
  offset += lineText.length + 1;
533
541
  }
534
542
  }
543
+ var DATE_BEARING_CHARTS = /* @__PURE__ */ new Set([
544
+ "gantt",
545
+ "pert",
546
+ "countdown",
547
+ "timeline",
548
+ "event-line"
549
+ ]);
550
+ function applyMonthNameDates(tokens) {
551
+ const fullText = tokens.map((t) => t.text).join("");
552
+ const lines = fullText.split("\n");
553
+ const firstContent = lines.find((l) => {
554
+ const t = l.trim();
555
+ return t.length > 0 && !t.startsWith("//");
556
+ });
557
+ const chartType = firstContent?.trim().split(/\s+/)[0]?.toLowerCase();
558
+ if (!chartType || !DATE_BEARING_CHARTS.has(chartType)) return;
559
+ let offset = 0;
560
+ for (const lineText of lines) {
561
+ for (const sp of scanMonthNameDates(lineText)) {
562
+ markDateSpan(tokens, offset + sp.start, offset + sp.end);
563
+ }
564
+ offset += lineText.length + 1;
565
+ }
566
+ }
567
+ function markDateSpan(tokens, from, to) {
568
+ let pos = 0;
569
+ for (const token of tokens) {
570
+ const tokenEnd = pos + token.text.length;
571
+ if (tokenEnd > from && pos < to && token.text.trim().length > 0 && (token.role === "default" || token.role === "number")) {
572
+ token.role = "number";
573
+ }
574
+ pos = tokenEnd;
575
+ }
576
+ }
535
577
  var NOTE_HEAD_RE = /^note(\s|$)/i;
536
578
  function applyNoteContent(tokens) {
537
579
  const fullText = tokens.map((t) => t.text).join("");
@@ -615,17 +657,25 @@ var BLOCK_CSS = `
615
657
 
616
658
  /* === Toolbar ===
617
659
  * The diagram is the star: the toolbar is an overlay pinned to the diagram's
618
- * top-right corner (position:absolute \u2014 it reserves no layout space, so the
619
- * block is exactly as tall as the chart). It stays fully transparent until
620
- * the block is hovered or focused, or the source panel is open. It is the
621
- * <summary> of the source <details>, so toggling works without any JS.
622
- * No text labels, no disclosure triangle \u2014 three wordless icon buttons. */
660
+ * bottom-right corner (position:absolute \u2014 it reserves no layout space, so the
661
+ * block is exactly as tall as the chart). Bottom-right (not top-right) so it
662
+ * never collides with a host's own top-right chart chrome \u2014 e.g. Obsidian's
663
+ * code-block copy button. It stays fully transparent until the block is
664
+ * hovered or focused, or the source panel is open. It is the <summary> of the
665
+ * source <details>, so toggling works without any JS. No text labels, no
666
+ * disclosure triangle \u2014 three wordless icon buttons.
667
+ *
668
+ * Anchored to .dgmo-source-wrap (position:relative below), whose top edge is
669
+ * always the diagram's bottom edge \u2014 bottom:calc(100% + gap) therefore keeps
670
+ * the toolbar at the diagram's bottom-right whether the source panel is open or
671
+ * closed (a figure-anchored bottom would drift down below the open code). */
623
672
  .dgmo-source-wrap {
624
673
  margin: 0;
674
+ position: relative;
625
675
  }
626
676
  .dgmo-toolbar {
627
677
  position: absolute;
628
- top: 0.4em;
678
+ bottom: calc(100% + 0.4em);
629
679
  right: 0.4em;
630
680
  z-index: 2;
631
681
  display: flex;
@@ -0,0 +1,11 @@
1
+ import {
2
+ calculateSchedule
3
+ } from "./chunk-UJRTPOHH.js";
4
+ import "./chunk-EQW6HOP4.js";
5
+ import "./chunk-NOTA6TEI.js";
6
+ import "./chunk-4W2PE66Q.js";
7
+ import "./chunk-5WRI5ZAA.js";
8
+ export {
9
+ calculateSchedule
10
+ };
11
+ //# sourceMappingURL=calculator-VBIT6GQF.js.map
@@ -0,0 +1,232 @@
1
+ import { e as PaletteColors, T as TagGroup, D as DgmoError } from './registry-CaSw0PSH.js';
2
+
3
+ /** Convert hex (#RRGGBB or #RGB) to { h, s, l } with h in degrees, s/l as percentages. */
4
+ declare function hexToHSL(hex: string): {
5
+ h: number;
6
+ s: number;
7
+ l: number;
8
+ };
9
+ /** Convert { h (degrees), s (%), l (%) } back to #RRGGBB hex string. */
10
+ declare function hslToHex(h: number, s: number, l: number): string;
11
+ /** Convert hex to "H S% L%" string for CSS custom properties. */
12
+ declare function hexToHSLString(hex: string): string;
13
+ /**
14
+ * Blend a color toward white (light mode quadrant fills).
15
+ * amount: 0 = original, 1 = white
16
+ */
17
+ declare function tint(hex: string, amount: number): string;
18
+ /**
19
+ * Blend a color toward a dark base (dark mode quadrant fills).
20
+ * amount: 0 = original, 1 = base
21
+ */
22
+ declare function shade(hex: string, base: string, amount: number): string;
23
+ /**
24
+ * Blend two hex colors by percentage.
25
+ * `pct` = 0 → 100% of `b`, `pct` = 100 → 100% of `a`.
26
+ *
27
+ * Used by all renderers for tinted fills and strokes.
28
+ */
29
+ declare function mix(a: string, b: string, pct: number): string;
30
+ /**
31
+ * Pick `lightText` or `darkText` for placement on top of `bg`.
32
+ *
33
+ * Three-tier decision:
34
+ * 1. **High-luminance fill (luminance > 0.55)** → `darkText`. Yellows, peaches,
35
+ * light cyans — dark text reads better and a light cream on light yellow is
36
+ * unreadable.
37
+ * 2. **Pastel fill (min RGB channel ≥ 100, luminance ≤ 0.55)** → defer to WCAG
38
+ * ratio. Pastels have no near-zero channel and tend to read as "soft" —
39
+ * dark text usually wins by ratio (catppuccin dark mauve `#cba6f7` min 166,
40
+ * ratio 9.35:1; tokyo-night dark red `#f7768e` min 118, ratio 7.86:1; and
41
+ * tokyo-night green `#9ece6a` min 106, ratio 11.4:1 all correctly pick dark).
42
+ * 3. **Saturated fill (min RGB < 100, luminance ≤ 0.55)** → `lightText`. At least
43
+ * one channel near zero signals true saturation — gruvbox dark green
44
+ * `#b8bb26` (min 38), blueprint blue `#1f5e8c` (min 31), bold red/blue
45
+ * (min 0), solarized blue `#268bd2` (min 38). The user consistently
46
+ * prefers light text on these for visual punch.
47
+ *
48
+ * `min RGB` discriminates pastel-vs-saturated more reliably than `max-min`
49
+ * (vibrance): tokyo-night and catppuccin dark are pastels with high max RGB,
50
+ * so vibrance alone misclassifies them as "saturated."
51
+ *
52
+ * Tinted fills (luminance ~0.7+ in light themes / ~0.02–0.14 in dark themes)
53
+ * are unambiguous in either branch; only fill-solid output shifts here.
54
+ */
55
+ declare function contrastText(bg: string, lightText: string, darkText: string): string;
56
+ declare function shapeFill(palette: PaletteColors, intent: string, isDark: boolean, opts?: {
57
+ mode?: 'solid' | 'outline' | undefined;
58
+ }): string;
59
+ /**
60
+ * Derive the 8-color series rotation from a palette's named colors, in the
61
+ * shared {@link CATEGORICAL_COLOR_ORDER} (RGB-seeded, max-contrast). Tag
62
+ * swatches and chart series colors thus share one canonical rotation.
63
+ */
64
+ declare function getSeriesColors(palette: PaletteColors): string[];
65
+
66
+ interface OrgNode {
67
+ readonly id: string;
68
+ readonly label: string;
69
+ readonly metadata: Readonly<Record<string, string>>;
70
+ readonly children: readonly OrgNode[];
71
+ readonly parentId: string | null;
72
+ readonly isContainer: boolean;
73
+ readonly lineNumber: number;
74
+ readonly color?: string;
75
+ }
76
+ interface ParsedOrg {
77
+ readonly title: string | null;
78
+ readonly titleLineNumber: number | null;
79
+ readonly roots: readonly OrgNode[];
80
+ readonly tagGroups: readonly TagGroup[];
81
+ readonly options: Readonly<Record<string, string>>;
82
+ /**
83
+ * Resolved layout direction (§7.5). `direction-lr` / `direction-tb` are a
84
+ * mutually-exclusive boolean pair (§1.9, last one wins). Defaults to 'TB',
85
+ * which is the orientation org charts have always rendered.
86
+ */
87
+ readonly direction: 'LR' | 'TB';
88
+ readonly diagnostics: readonly DgmoError[];
89
+ readonly error: string | null;
90
+ }
91
+ declare function parseOrg(content: string, palette?: PaletteColors): ParsedOrg;
92
+
93
+ /**
94
+ * Substitute `start-date now` with the host-local resolved date.
95
+ * Pass the result to `encodeDiagramUrl` so the share-link captures
96
+ * the resolved date, not the literal token.
97
+ *
98
+ * Lines without `start-date now` (explicit-date lines, comments,
99
+ * other directives, activity lines containing the word "now") pass
100
+ * through verbatim.
101
+ */
102
+ declare function normalizePertSourceForShare(dsl: string): string;
103
+
104
+ /**
105
+ * Shared parser utilities — extracted from individual parsers to eliminate
106
+ * duplication of measureIndent, extractColor, header regexes, and
107
+ * pipe-metadata parsing.
108
+ */
109
+
110
+ /** Complete set of recognized chart type identifiers. */
111
+ declare const ALL_CHART_TYPES: Set<string>;
112
+ /**
113
+ * Cross-chart fill treatment (spec §1.9 fill family). Absent ⇒ the canonical
114
+ * 25% tint (`fill-tint` is the explicit spelling of that default).
115
+ */
116
+ type FillMode = 'solid' | 'outline';
117
+ /**
118
+ * Parse the first non-empty, non-comment line to extract chart type and optional title.
119
+ * The first token is matched against `ALL_CHART_TYPES`; the remainder is the title.
120
+ *
121
+ * Returns `null` if the first token is not a recognized chart type.
122
+ */
123
+ declare function parseFirstLine(line: string): {
124
+ chartType: string;
125
+ title: string | undefined;
126
+ } | null;
127
+
128
+ /** Marker alphabet member for any variant. */
129
+ type RaciMarker = 'R' | 'A' | 'S' | 'C' | 'I' | 'D';
130
+ /** Variant identifier — selects alphabet + constraint rule set. */
131
+ type RaciVariant = 'raci' | 'rasci' | 'daci';
132
+ /**
133
+ * One `Role: <markers>` line under a task.
134
+ *
135
+ * `id` is the normalized role key — used by mutations to look up the
136
+ * cell and by validation to detect unknown roles. `displayName` is the
137
+ * first-seen casing/spacing for rendering.
138
+ */
139
+ interface RaciRoleAssignment {
140
+ readonly id: string;
141
+ readonly displayName: string;
142
+ readonly markers: readonly RaciMarker[];
143
+ readonly lineNumber: number;
144
+ readonly endLineNumber: number;
145
+ }
146
+ /** One task — flush-left under a phase or directly under the chart. */
147
+ interface RaciTask {
148
+ readonly id: string;
149
+ readonly displayName: string;
150
+ readonly description: string;
151
+ readonly roleAssignments: readonly RaciRoleAssignment[];
152
+ readonly lineNumber: number;
153
+ readonly endLineNumber: number;
154
+ }
155
+ /** Optional `[Phase Label]` group header — one level deep. */
156
+ interface RaciPhase {
157
+ readonly id: string;
158
+ readonly displayName: string;
159
+ /** Optional palette color from a `[Label](color)` suffix on the bracket. */
160
+ readonly color?: string;
161
+ readonly tasks: readonly RaciTask[];
162
+ readonly lineNumber: number;
163
+ readonly endLineNumber: number;
164
+ }
165
+ /** Top-level parse result. */
166
+ interface ParsedRaci {
167
+ readonly type: 'raci';
168
+ /** Optional title from the chart-type header line. */
169
+ readonly title?: string;
170
+ readonly titleLineNumber?: number;
171
+ /** Variant selected by directive, or by chart-type id when absent. */
172
+ readonly variant: RaciVariant;
173
+ /**
174
+ * Canonical column order. Populated either from an explicit
175
+ * `roles:` directive or, when absent, from first-seen role usage.
176
+ */
177
+ readonly roles: readonly string[];
178
+ /** Display name for each role (parallel to `roles`). */
179
+ readonly roleDisplayNames: readonly string[];
180
+ /**
181
+ * Optional per-role palette color from the `Cap blue` trailing-token
182
+ * suffix in the roles block (or the long pipe form `Cap | color: blue`).
183
+ * Parallel to `roles`; entries default to `undefined` (renderer falls
184
+ * back to the neutral column tint).
185
+ */
186
+ readonly roleColors: ReadonlyArray<string | undefined>;
187
+ readonly phases: readonly RaciPhase[];
188
+ /** Tasks declared without a parent phase. */
189
+ readonly tasksWithoutPhase: readonly RaciTask[];
190
+ readonly options: Readonly<Record<string, string>>;
191
+ readonly diagnostics: readonly DgmoError[];
192
+ readonly error: string | null;
193
+ }
194
+
195
+ /**
196
+ * Parse RACI/RASCI/DACI source. The leading chart-type id (if a
197
+ * recognized variant id) acts as a hint for default variant when the
198
+ * `variant` directive is absent.
199
+ */
200
+ declare function parseRaci(content: string, palette?: PaletteColors): ParsedRaci;
201
+
202
+ /**
203
+ * Async or sync file reader. Receives an absolute path, returns content.
204
+ * Throwing means "file not found".
205
+ */
206
+ type ReadFileFn = (path: string) => string | Promise<string>;
207
+ /** Tracks the original source file and line for an imported line. */
208
+ interface ImportSource {
209
+ /** Absolute path of the file this line originates from */
210
+ filePath: string;
211
+ /** 1-based line number in the original (pre-resolution) source file */
212
+ sourceLine: number;
213
+ }
214
+ interface ResolveImportsResult {
215
+ content: string;
216
+ diagnostics: DgmoError[];
217
+ /** resolvedLine (1-based index) → originalLine (1-based) or null for inserted lines */
218
+ lineMap: (number | null)[];
219
+ /** resolvedLine (1-based index) → import source info or null for non-imported lines */
220
+ importSourceMap: (ImportSource | null)[];
221
+ }
222
+ /**
223
+ * Pre-processes org chart content, resolving `tags` and `import` directives.
224
+ *
225
+ * @param content - Raw .dgmo file content
226
+ * @param filePath - Absolute path of the file (for relative path resolution)
227
+ * @param readFileFn - Function to read files (sync or async)
228
+ * @returns Merged content with all imports resolved + diagnostics
229
+ */
230
+ declare function resolveOrgImports(content: string, filePath: string, readFileFn: ReadFileFn): Promise<ResolveImportsResult>;
231
+
232
+ export { ALL_CHART_TYPES as A, type FillMode as F, type ImportSource as I, type OrgNode as O, type ParsedOrg as P, type RaciMarker as R, type ParsedRaci as a, type RaciVariant as b, type RaciTask as c, type RaciPhase as d, type RaciRoleAssignment as e, type ReadFileFn as f, type ResolveImportsResult as g, contrastText as h, getSeriesColors as i, hexToHSL as j, hexToHSLString as k, hslToHex as l, mix as m, normalizePertSourceForShare as n, parseOrg as o, parseFirstLine as p, parseRaci as q, resolveOrgImports as r, shade as s, shapeFill as t, tint as u };
@@ -0,0 +1,2 @@
1
+ export { b as ChartTypeMeta, C as CompactViewState, l as DecodedDiagramUrl, m as EncodeDiagramUrlOptions, n as EncodeDiagramUrlResult, e as PaletteColors, f as chartTypes, s as decodeDiagramUrl, t as decodeViewState, u as encodeDiagramUrl, v as encodeViewState, x as getAvailablePalettes, i as getPalette, G as parseDgmoChartType } from './registry-CaSw0PSH.js';
2
+ export { A as ALL_CHART_TYPES, O as OrgNode, P as ParsedOrg, k as hexToHSLString, n as normalizePertSourceForShare, p as parseFirstLine, o as parseOrg, q as parseRaci, r as resolveOrgImports } from './chart-meta-CPNVUZ5J.js';