@diagrammo/dgmo 0.52.0 → 0.54.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 (339) hide show
  1. package/.cursorrules +59 -58
  2. package/.github/copilot-instructions.md +59 -58
  3. package/.windsurfrules +59 -58
  4. package/SKILL.md +59 -58
  5. package/dist/advanced.d.ts +101 -230
  6. package/dist/advanced.js +330 -658
  7. package/dist/analyzer-TDN5KJFP.js +15 -0
  8. package/dist/auto.css +14 -6
  9. package/dist/auto.js +163 -139
  10. package/dist/auto.mjs +1859 -885
  11. package/dist/block.css +14 -6
  12. package/dist/block.js +96 -81
  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 +108 -0
  17. package/dist/charts-d3-25E4VWXO.js +27 -0
  18. package/dist/chunk-2CW5ZTNH.js +58 -0
  19. package/dist/{chunk-BPY242XU.js → chunk-2NYXI35Z.js} +32 -14
  20. package/dist/{chunk-AUIM2NVH.js → chunk-2NZOHEP4.js} +7 -8
  21. package/dist/{chunk-HFMYN6N2.js → chunk-3B2GXZCX.js} +4 -3
  22. package/dist/chunk-3FRO35WW.js +1158 -0
  23. package/dist/{chunk-J7TLCB2Q.js → chunk-3IUHKMJI.js} +2 -2
  24. package/dist/{chunk-R3YSD62R.js → chunk-3KHJJP3J.js} +3 -3
  25. package/dist/{chunk-6LBQ7ELG.js → chunk-3SBHODJ4.js} +36 -17
  26. package/dist/{chunk-4UNQ6X24.js → chunk-3SEEP2JM.js} +4 -4
  27. package/dist/{chunk-7L4UJOY6.js → chunk-3TYUXC7D.js} +2 -2
  28. package/dist/{chunk-Y2ZE3MSG.js → chunk-43E26CDA.js} +2 -2
  29. package/dist/{chunk-CCNDLW7Z.js → chunk-47JNEKJA.js} +9 -9
  30. package/dist/{chunk-WCT3NYCV.js → chunk-4ASYQ347.js} +33 -8
  31. package/dist/{chunk-I5IGB56C.js → chunk-4QV26TEG.js} +41 -1
  32. package/dist/{chunk-INE5YJBZ.js → chunk-4T6OCSJ2.js} +8 -8
  33. package/dist/{chunk-CXK4DZH3.js → chunk-4W2PE66Q.js} +12 -2
  34. package/dist/{chunk-7KINELPI.js → chunk-4ZIKWVSQ.js} +17 -16
  35. package/dist/{chunk-JED6ZDEE.js → chunk-5HWPEYWB.js} +2 -2
  36. package/dist/{chunk-HWX6ZHF3.js → chunk-5VXU6MND.js} +6 -6
  37. package/dist/{chunk-44VCIPHF.js → chunk-5XSNLXU5.js} +23 -20
  38. package/dist/{chunk-4AQRFDXL.js → chunk-62Y27T4C.js} +2 -2
  39. package/dist/{chunk-QHXCAEMX.js → chunk-6KL7TFLS.js} +5 -5
  40. package/dist/{chunk-5BHJZH62.js → chunk-6OYDOQ2Q.js} +18 -6
  41. package/dist/{chunk-5HILBT7X.js → chunk-7JDTNFAK.js} +3 -3
  42. package/dist/{chunk-JRCOYRRH.js → chunk-7K6NDSXH.js} +9 -9
  43. package/dist/{chunk-5NGAO4QK.js → chunk-7SP4C6EV.js} +11 -11
  44. package/dist/{chunk-I46X5VUA.js → chunk-7TF3QOOD.js} +25 -1
  45. package/dist/{chunk-WRNFDFPU.js → chunk-7U4OR7CD.js} +2 -2
  46. package/dist/{chunk-5RP7JRVP.js → chunk-7UPFTBOW.js} +21 -17
  47. package/dist/{chunk-AAXZDUOV.js → chunk-A3BDLDYG.js} +17 -16
  48. package/dist/{chunk-GCYTI3DE.js → chunk-ADCHLNWT.js} +56 -10
  49. package/dist/{chunk-QBZYACOG.js → chunk-ADYKAKE3.js} +3 -3
  50. package/dist/{chunk-HHKO6SKY.js → chunk-AHTTKERF.js} +3 -3
  51. package/dist/{chunk-BKVOYV6I.js → chunk-AJFHNS67.js} +15 -15
  52. package/dist/{chunk-EMLPOL77.js → chunk-AQEYUVGJ.js} +124 -41
  53. package/dist/{chunk-3LK5DNED.js → chunk-B4XS2AF2.js} +3 -3
  54. package/dist/{chunk-REJAIQ5S.js → chunk-B7N5KYXQ.js} +16 -16
  55. package/dist/chunk-BEOAKGNA.js +484 -0
  56. package/dist/{chunk-SMRFPVLQ.js → chunk-BM7MG6HT.js} +4 -4
  57. package/dist/{chunk-P3NRSSUU.js → chunk-BULHGPHK.js} +3 -3
  58. package/dist/{chunk-QZX5S6R3.js → chunk-BWYFIVZF.js} +149 -89
  59. package/dist/{chunk-UBLHQTLV.js → chunk-BZJIITYM.js} +11 -10
  60. package/dist/{chunk-PRI2OD4E.js → chunk-C2UORMIA.js} +11 -6
  61. package/dist/{chunk-3YRPZ7ZZ.js → chunk-CCGWX6AO.js} +4 -4
  62. package/dist/{chunk-H7KENAZO.js → chunk-COJW2NEY.js} +73 -13
  63. package/dist/{chunk-WBRZJOEC.js → chunk-COVYNAKJ.js} +6 -6
  64. package/dist/{chunk-7QE3XMRK.js → chunk-CSHFU6LT.js} +13 -13
  65. package/dist/{chunk-6EJITS44.js → chunk-DLU643TF.js} +7 -7
  66. package/dist/{chunk-LBMS4AW6.js → chunk-DPGQ5UMO.js} +14 -14
  67. package/dist/{chunk-LTXOLDUZ.js → chunk-EAI6XJ7D.js} +12 -5
  68. package/dist/{chunk-FT3ZYWET.js → chunk-EPRF3ZRV.js} +11 -10
  69. package/dist/chunk-EQOMY4PY.js +404 -0
  70. package/dist/{chunk-USZW2HHU.js → chunk-EQW6HOP4.js} +4 -3
  71. package/dist/{chunk-HBPDFCQY.js → chunk-F7XM366V.js} +10 -9
  72. package/dist/{chunk-DYWQFQJP.js → chunk-FFVFZLRT.js} +57 -24
  73. package/dist/{chunk-77FGAVZC.js → chunk-FR6UFVSV.js} +19 -17
  74. package/dist/{chunk-MUE65OTD.js → chunk-FVMKCZHF.js} +8 -6
  75. package/dist/{chunk-3QD7VP3U.js → chunk-GK32ZFZY.js} +17 -10
  76. package/dist/{chunk-TJVLKNGR.js → chunk-GKYHWJXI.js} +5 -5
  77. package/dist/{chunk-FQMUHRVC.js → chunk-GQ5ECRP4.js} +13 -10
  78. package/dist/{chunk-5QKQSSPO.js → chunk-GRM2A4BG.js} +4 -4
  79. package/dist/{chunk-OTOHI4JO.js → chunk-H3HFC3SQ.js} +2 -2
  80. package/dist/{chunk-BPIZNB5O.js → chunk-HAA25PLC.js} +10 -10
  81. package/dist/{chunk-YIBAWQGJ.js → chunk-HFEOOQ46.js} +4 -4
  82. package/dist/{chunk-J76PIKAT.js → chunk-HO3RCNF6.js} +3 -3
  83. package/dist/{chunk-7DF4J4RL.js → chunk-I47VHSPS.js} +19 -13
  84. package/dist/{chunk-5SEVICBT.js → chunk-ICKXIMBA.js} +10 -9
  85. package/dist/{chunk-A44USUV7.js → chunk-ICZ7M6IZ.js} +23 -17
  86. package/dist/{chunk-SWSIKFEB.js → chunk-IOIMQHQ6.js} +4 -4
  87. package/dist/{chunk-6HQH6JZE.js → chunk-IYNKLCAZ.js} +7 -7
  88. package/dist/{chunk-YAA6IID3.js → chunk-J7HQPVYH.js} +2 -2
  89. package/dist/{chunk-WBM7ZNDI.js → chunk-JYDMBWRP.js} +35 -18
  90. package/dist/{chunk-ZJV7GYR4.js → chunk-KBVOVDYP.js} +8 -8
  91. package/dist/{chunk-ICPJPQ5C.js → chunk-KDK5EKUR.js} +3 -3
  92. package/dist/{chunk-FHGVORFO.js → chunk-KINOX74I.js} +12 -12
  93. package/dist/{chunk-XD6ZYURY.js → chunk-KQ3FNRGR.js} +7 -14
  94. package/dist/{chunk-3HGU63UY.js → chunk-KQYQECWQ.js} +17 -16
  95. package/dist/{chunk-MUVJ57EP.js → chunk-KS5ZSM5T.js} +20 -17
  96. package/dist/{chunk-FY5MSZAP.js → chunk-KV4HLIJE.js} +21 -6
  97. package/dist/{chunk-LGT3PZCJ.js → chunk-LPJ6H5X4.js} +17 -17
  98. package/dist/{chunk-ONU3U4GL.js → chunk-LRSW4JLE.js} +52 -16
  99. package/dist/{chunk-TPFKKXCB.js → chunk-M24VXUFG.js} +7 -7
  100. package/dist/{chunk-QJMKPUYK.js → chunk-M3H7ZE6C.js} +21 -14
  101. package/dist/{chunk-QVENJMNX.js → chunk-MEQYZZFR.js} +2 -2
  102. package/dist/{chunk-75G3Q4DK.js → chunk-MTZOXISJ.js} +9 -9
  103. package/dist/{chunk-J7KJR3R6.js → chunk-N7BSBAVP.js} +133 -696
  104. package/dist/{chunk-VQOCMUWI.js → chunk-NUTWTV6G.js} +13 -11
  105. package/dist/{chunk-7BIZCTAX.js → chunk-O576GYAP.js} +3 -3
  106. package/dist/{chunk-H6PI3KJT.js → chunk-ODUT5WMC.js} +2 -2
  107. package/dist/{chunk-AL672HNE.js → chunk-OJ435DQZ.js} +17 -7
  108. package/dist/{chunk-3HF5YEFJ.js → chunk-OR3R27CU.js} +4 -4
  109. package/dist/{chunk-QGATPIPX.js → chunk-OSXQKC3S.js} +35 -23
  110. package/dist/{chunk-FUPF2UYQ.js → chunk-PIXZTCKH.js} +51 -108
  111. package/dist/{chunk-QOOUC2J5.js → chunk-Q5IHQ4NW.js} +12 -2
  112. package/dist/{chunk-4IHAV6O7.js → chunk-QBYP2FBZ.js} +10 -478
  113. package/dist/{chunk-GU46PPT3.js → chunk-QXGACPS2.js} +5 -5
  114. package/dist/{chunk-FMDSF3OV.js → chunk-QZAW5SFH.js} +2 -2
  115. package/dist/{chunk-YTMTPUH4.js → chunk-R5BGGBFF.js} +4 -4
  116. package/dist/{chunk-KGVZ5VGH.js → chunk-RIEAN4D5.js} +16 -12
  117. package/dist/{chunk-5223KXFD.js → chunk-RJ5LBZ5U.js} +7 -7
  118. package/dist/{chunk-K4EOKJA6.js → chunk-RRGKMJYL.js} +45 -18
  119. package/dist/{chunk-TTIM6YTT.js → chunk-S7FOIURR.js} +14 -13
  120. package/dist/{chunk-IM6PDDCE.js → chunk-S7YFT3PO.js} +78 -23
  121. package/dist/{chunk-ZEF5M5MB.js → chunk-SBOAZ7YK.js} +82 -296
  122. package/dist/{chunk-6NYWYNBI.js → chunk-SSHS42QG.js} +6 -6
  123. package/dist/{chunk-NNS4E7CW.js → chunk-T3FAJAJT.js} +18 -9
  124. package/dist/{chunk-ROOE4R4Y.js → chunk-T7Y554OK.js} +146 -18
  125. package/dist/chunk-TGOMHUOV.js +218 -0
  126. package/dist/{chunk-K2I2XOZD.js → chunk-TJN2OIVG.js} +30 -15
  127. package/dist/{chunk-VILVLS7P.js → chunk-TLNVYWPA.js} +8 -4
  128. package/dist/{chunk-GJFAMOGK.js → chunk-U4IN6AHE.js} +7 -7
  129. package/dist/chunk-U7VO6JAA.js +566 -0
  130. package/dist/{chunk-MX2EY5Y7.js → chunk-UEU6IYKY.js} +2 -2
  131. package/dist/{chunk-J6QROYDA.js → chunk-UIT7E6UF.js} +26 -10
  132. package/dist/{chunk-Z72XRXD4.js → chunk-UJRTPOHH.js} +3 -3
  133. package/dist/{chunk-TYS6CSS5.js → chunk-UU6LUYUH.js} +2 -2
  134. package/dist/{chunk-VL2O2F3W.js → chunk-VHO3YBTB.js} +2 -2
  135. package/dist/{chunk-4YFKQ5WT.js → chunk-VMSBMIHW.js} +5 -5
  136. package/dist/{chunk-Z5QVYKR7.js → chunk-VQFDBNYF.js} +4 -4
  137. package/dist/{chunk-UNURMIQO.js → chunk-W6PCFRPL.js} +4 -4
  138. package/dist/{chunk-FFUN5D66.js → chunk-WF64MW5G.js} +2 -2
  139. package/dist/{chunk-T4A4TSTJ.js → chunk-WKNAJ4BR.js} +20 -18
  140. package/dist/{chunk-CIRFIL4M.js → chunk-WW4BQ744.js} +11 -11
  141. package/dist/{chunk-ARGMQ3H4.js → chunk-WWHECSYZ.js} +3 -3
  142. package/dist/{chunk-ZNWAYU6N.js → chunk-XWODFBHJ.js} +73 -18
  143. package/dist/{chunk-HQQNCY7W.js → chunk-YENNFS5F.js} +10 -10
  144. package/dist/{chunk-TLVIHFRO.js → chunk-ZKPPI6BF.js} +2 -2
  145. package/dist/cli.cjs +173 -157
  146. package/dist/clock.js +9 -1
  147. package/dist/completion-registry.d.ts +129 -0
  148. package/dist/completion-registry.js +1270 -0
  149. package/dist/{compute-G55RG53N.js → compute-JAP5E2E4.js} +2 -2
  150. package/dist/countdown.js +4 -3
  151. package/dist/dgmo-router-TGZWFIZO.js +88 -0
  152. package/dist/dimensions-L6BXQXXL.js +22 -0
  153. package/dist/editor.js +51 -5
  154. package/dist/element.js +163 -139
  155. package/dist/element.mjs +1859 -885
  156. package/dist/flowchart-parser-UKYOW3VM.js +21 -0
  157. package/dist/{flowchart-renderer-MNCDS7MV.js → flowchart-renderer-DCFKUDDR.js} +16 -16
  158. package/dist/highlight.js +55 -6
  159. package/dist/index.d.ts +4 -2
  160. package/dist/index.js +89 -81
  161. package/dist/layout-25Y3VDYF.js +19 -0
  162. package/dist/layout-4SPLI4HG.js +15 -0
  163. package/dist/layout-5XGYNYVT.js +9 -0
  164. package/dist/{layout-OAC4PEAC.js → layout-A6OIGZN2.js} +7 -7
  165. package/dist/layout-AZUPXWSK.js +15 -0
  166. package/dist/{layout-F4WO357A.js → layout-CAAKQX4W.js} +3 -3
  167. package/dist/{layout-A5UHRWVH.js → layout-CB3XWCOI.js} +3 -3
  168. package/dist/layout-CH4HFFRD.js +15 -0
  169. package/dist/layout-G2ABQJQZ.js +20 -0
  170. package/dist/{layout-7QXCNOVS.js → layout-HBWT2G23.js} +3 -3
  171. package/dist/{layout-2L3WMRYU.js → layout-ITLPDG6M.js} +9 -8
  172. package/dist/layout-NF4EWFLT.js +17 -0
  173. package/dist/layout-NY7MHJCL.js +15 -0
  174. package/dist/layout-QBNAMEOA.js +19 -0
  175. package/dist/layout-SP7HJWKA.js +17 -0
  176. package/dist/{layout-search-55FU6HD3.js → layout-search-LUI475P3.js} +56 -35
  177. package/dist/legend-constants-B77VKB3R.js +54 -0
  178. package/dist/{palettes-UDLZ2SA4.js → palettes-FGTNFARW.js} +4 -4
  179. package/dist/parser-2UWWNTFL.js +12 -0
  180. package/dist/parser-3RXYQSA7.js +18 -0
  181. package/dist/parser-5C3PEZK3.js +11 -0
  182. package/dist/parser-66RYGJRB.js +20 -0
  183. package/dist/parser-6GN5YJBJ.js +13 -0
  184. package/dist/parser-6MQM7WT3.js +15 -0
  185. package/dist/{parser-DQAFLUJB.js → parser-7UI6UQ7B.js} +7 -7
  186. package/dist/parser-B2A7XOAK.js +12 -0
  187. package/dist/parser-CCNJKDDA.js +16 -0
  188. package/dist/parser-ESHNUFME.js +13 -0
  189. package/dist/parser-F4FEU57T.js +11 -0
  190. package/dist/parser-FHRMFUNX.js +15 -0
  191. package/dist/parser-FPCWDYQV.js +13 -0
  192. package/dist/parser-FY3YFFBS.js +20 -0
  193. package/dist/parser-GML6V2KZ.js +14 -0
  194. package/dist/parser-HA3PF5FL.js +15 -0
  195. package/dist/parser-KTYF6WO5.js +11 -0
  196. package/dist/{parser-ZL5QUFVH.js → parser-LTA2BOZO.js} +5 -5
  197. package/dist/parser-LU7UAKNB.js +13 -0
  198. package/dist/parser-MHKYQPC2.js +11 -0
  199. package/dist/parser-MVSYFK63.js +17 -0
  200. package/dist/parser-O7YQYFEN.js +15 -0
  201. package/dist/parser-OPIXXUY4.js +21 -0
  202. package/dist/parser-S4EJPNVN.js +19 -0
  203. package/dist/parser-T3D7BV6O.js +11 -0
  204. package/dist/{parser-YKYMQG3B.js → parser-VVE4THG3.js} +6 -6
  205. package/dist/parser-WPPJGB4R.js +12 -0
  206. package/dist/parser-X5XLFY4Z.js +22 -0
  207. package/dist/parser-XCPMEB2Z.js +11 -0
  208. package/dist/parser-XRDUX2AR.js +14 -0
  209. package/dist/parser-YPWYT46P.js +16 -0
  210. package/dist/parser-YULS5MLD.js +13 -0
  211. package/dist/pert.d.ts +2 -0
  212. package/dist/registry-CaSw0PSH.d.ts +350 -0
  213. package/dist/renderer-2DME63VZ.js +16 -0
  214. package/dist/renderer-3VY3VXJE.js +37 -0
  215. package/dist/renderer-4A32DX5L.js +24 -0
  216. package/dist/renderer-4K5YYX5R.js +28 -0
  217. package/dist/renderer-6CFML5G3.js +22 -0
  218. package/dist/renderer-7HMZ5OCJ.js +16 -0
  219. package/dist/renderer-7ZNVOVFG.js +16 -0
  220. package/dist/{renderer-CQY6ATOS.js → renderer-B7Y6I7JX.js} +9 -8
  221. package/dist/renderer-C3RI4OPJ.js +33 -0
  222. package/dist/renderer-CJ56SUMF.js +26 -0
  223. package/dist/renderer-COJZZ4F6.js +25 -0
  224. package/dist/renderer-FXMGCSRP.js +26 -0
  225. package/dist/{renderer-HSHHVYWF.js → renderer-G4UOW3RH.js} +7 -7
  226. package/dist/renderer-HQ4JFZOV.js +27 -0
  227. package/dist/{renderer-NHO46CT2.js → renderer-K7XLVPH5.js} +6 -6
  228. package/dist/{renderer-ZWIH4WDW.js → renderer-LHVCKEWF.js} +13 -13
  229. package/dist/renderer-OZX5KGQM.js +21 -0
  230. package/dist/{renderer-3F7OS2AX.js → renderer-P3YQES7B.js} +16 -16
  231. package/dist/renderer-PLVIARM7.js +24 -0
  232. package/dist/renderer-RA4PTAMF.js +19 -0
  233. package/dist/renderer-RMAM2SOJ.js +28 -0
  234. package/dist/renderer-SES7QZYL.js +37 -0
  235. package/dist/renderer-TQ5QDZOE.js +22 -0
  236. package/dist/renderer-V5SNTPAM.js +27 -0
  237. package/dist/{renderer-5DAKMIU2.js → renderer-WCWI4I6A.js} +5 -5
  238. package/dist/renderer-WVD6G2TS.js +34 -0
  239. package/dist/{renderer-DT4XRFEP.js → renderer-X2LYSMLU.js} +7 -7
  240. package/dist/renderer-Y3NXZINM.js +24 -0
  241. package/dist/{renderer-KNFTTOBL.js → renderer-YEFOOULC.js} +14 -14
  242. package/dist/renderer-YP3P6UVT.js +24 -0
  243. package/dist/renderer-YVMETH6V.js +29 -0
  244. package/dist/renderer-Z4GNKNXO.js +24 -0
  245. package/dist/renderer-radial-VYBZAXXE.js +21 -0
  246. package/dist/{resolver-EMTGNR3D.js → resolver-WFKZYBJ2.js} +4 -4
  247. package/dist/state-parser-VIW2WNA5.js +19 -0
  248. package/dist/state-renderer-H22AQD3U.js +38 -0
  249. package/dist/{themes-32xj5ZTW.d.ts → themes-tbBkIVsn.d.ts} +2 -349
  250. package/docs/ai-integration.md +59 -58
  251. package/docs/language-reference.md +323 -286
  252. package/fonts/Inter-Bold.woff2 +0 -0
  253. package/fonts/Inter-Regular.woff2 +0 -0
  254. package/gallery/fixtures/boxes-and-lines-diverging.dgmo +1 -2
  255. package/gallery/fixtures/boxes-and-lines.dgmo +1 -1
  256. package/gallery/fixtures/clock.dgmo +1 -1
  257. package/gallery/fixtures/event-line.dgmo +1 -1
  258. package/gallery/fixtures/gantt-full.dgmo +1 -1
  259. package/gallery/fixtures/gantt-sprints.dgmo +9 -9
  260. package/gallery/fixtures/gantt.dgmo +1 -1
  261. package/gallery/fixtures/legacy-syntax-backcompat.dgmo +16 -0
  262. package/gallery/fixtures/state-tags.dgmo +40 -0
  263. package/gallery/fixtures/swimlane.dgmo +1 -1
  264. package/gallery/fixtures/timeline-intraday.dgmo +1 -1
  265. package/package.json +9 -1
  266. package/dist/analyzer-BJ54GIFB.js +0 -15
  267. package/dist/calculator-LDYQCDDY.js +0 -11
  268. package/dist/charts-d3-MXEP6BNP.js +0 -26
  269. package/dist/chunk-BRENJ2BQ.js +0 -714
  270. package/dist/chunk-FQ7HTV52.js +0 -364
  271. package/dist/dgmo-router-X7ZGAPIE.js +0 -86
  272. package/dist/dimensions-45H6JQEY.js +0 -22
  273. package/dist/flowchart-parser-UKELHBSB.js +0 -21
  274. package/dist/layout-46N4JJYK.js +0 -17
  275. package/dist/layout-A4XWNVID.js +0 -14
  276. package/dist/layout-AM2JWW3X.js +0 -15
  277. package/dist/layout-EE6GE46Y.js +0 -17
  278. package/dist/layout-G23F7LDH.js +0 -9
  279. package/dist/layout-GM4UGR7B.js +0 -19
  280. package/dist/layout-GQQJXNYH.js +0 -15
  281. package/dist/layout-IIE2S5FK.js +0 -20
  282. package/dist/layout-VMCRX66I.js +0 -14
  283. package/dist/layout-ZDOSXL5G.js +0 -19
  284. package/dist/parser-2ECN6JA2.js +0 -16
  285. package/dist/parser-4WTIHM5J.js +0 -11
  286. package/dist/parser-5H2BTSJQ.js +0 -11
  287. package/dist/parser-75KVXUNS.js +0 -16
  288. package/dist/parser-774AC53T.js +0 -13
  289. package/dist/parser-BE4YCSRU.js +0 -11
  290. package/dist/parser-CNGUQUQI.js +0 -11
  291. package/dist/parser-DEUUSQIN.js +0 -22
  292. package/dist/parser-EYCKNKQA.js +0 -21
  293. package/dist/parser-FXISIU6A.js +0 -14
  294. package/dist/parser-GTB4XC7P.js +0 -18
  295. package/dist/parser-GVEPAUSD.js +0 -12
  296. package/dist/parser-HSQGTY4G.js +0 -19
  297. package/dist/parser-HVKRINUS.js +0 -11
  298. package/dist/parser-J5MIEYO4.js +0 -15
  299. package/dist/parser-KMZIXLDZ.js +0 -13
  300. package/dist/parser-LJHXWSXU.js +0 -14
  301. package/dist/parser-PT3W72G5.js +0 -15
  302. package/dist/parser-SBJQDPHL.js +0 -15
  303. package/dist/parser-SUWWWCMX.js +0 -12
  304. package/dist/parser-SXDRNZOA.js +0 -13
  305. package/dist/parser-UMILOW3M.js +0 -14
  306. package/dist/parser-UP3AZ367.js +0 -13
  307. package/dist/parser-WHPRV3X5.js +0 -20
  308. package/dist/parser-WX3UODSJ.js +0 -12
  309. package/dist/parser-XCIEN3KN.js +0 -13
  310. package/dist/parser-XIRTUMVN.js +0 -18
  311. package/dist/parser-YKCGIG45.js +0 -11
  312. package/dist/parser-ZGM2OJ6Y.js +0 -22
  313. package/dist/renderer-4QB4K7Q3.js +0 -24
  314. package/dist/renderer-5H4SY7YY.js +0 -22
  315. package/dist/renderer-5PIQPFOX.js +0 -16
  316. package/dist/renderer-6MU37QF5.js +0 -19
  317. package/dist/renderer-AQVMWJ4M.js +0 -27
  318. package/dist/renderer-BDDW6K7N.js +0 -24
  319. package/dist/renderer-BNB3VIDY.js +0 -26
  320. package/dist/renderer-CVW75CXL.js +0 -37
  321. package/dist/renderer-ERHBSTQT.js +0 -25
  322. package/dist/renderer-IDPVUFNB.js +0 -28
  323. package/dist/renderer-ILX6BGKR.js +0 -21
  324. package/dist/renderer-JP663HKG.js +0 -22
  325. package/dist/renderer-MVUZBESR.js +0 -16
  326. package/dist/renderer-N4EBR2FV.js +0 -28
  327. package/dist/renderer-NO2QJ5LZ.js +0 -27
  328. package/dist/renderer-OGFV5RXX.js +0 -34
  329. package/dist/renderer-PDLESJMS.js +0 -37
  330. package/dist/renderer-T4MTNINC.js +0 -24
  331. package/dist/renderer-TOUGFGTM.js +0 -24
  332. package/dist/renderer-U3KPD43Y.js +0 -34
  333. package/dist/renderer-X334IJU2.js +0 -26
  334. package/dist/renderer-Y5OAMOCR.js +0 -23
  335. package/dist/renderer-YONAKAJU.js +0 -16
  336. package/dist/renderer-YWMI6Y2U.js +0 -29
  337. package/dist/renderer-radial-7CGZMVMS.js +0 -21
  338. package/dist/state-parser-BATWAID2.js +0 -18
  339. package/dist/state-renderer-3FKZJ3LP.js +0 -34
@@ -9,10 +9,10 @@ import {
9
9
  } from "./chunk-YYVTBZZC.js";
10
10
  import {
11
11
  renderIntegratedLegend
12
- } from "./chunk-AUIM2NVH.js";
12
+ } from "./chunk-2NZOHEP4.js";
13
13
  import {
14
14
  getMaxLegendReservedHeight
15
- } from "./chunk-YAA6IID3.js";
15
+ } from "./chunk-J7HQPVYH.js";
16
16
  import {
17
17
  TITLE_FONT_SIZE,
18
18
  TITLE_FONT_WEIGHT,
@@ -24,25 +24,26 @@ import {
24
24
  import {
25
25
  measureText,
26
26
  truncateText
27
- } from "./chunk-WCT3NYCV.js";
27
+ } from "./chunk-4ASYQ347.js";
28
28
  import {
29
29
  contrastText,
30
30
  mix,
31
31
  shapeFill,
32
32
  themeBaseBg
33
- } from "./chunk-WBM7ZNDI.js";
33
+ } from "./chunk-JYDMBWRP.js";
34
34
  import {
35
35
  isSequenceBlock,
36
36
  isSequenceNote,
37
37
  isSequenceSection
38
- } from "./chunk-QJMKPUYK.js";
38
+ } from "./chunk-M3H7ZE6C.js";
39
39
  import {
40
40
  resolveActiveTagGroup,
41
41
  tagAttrKey
42
- } from "./chunk-HHKO6SKY.js";
42
+ } from "./chunk-AHTTKERF.js";
43
43
  import {
44
- fillModeFromOptions
45
- } from "./chunk-BRENJ2BQ.js";
44
+ fillModeFromOptions,
45
+ legendSuppressed
46
+ } from "./chunk-3FRO35WW.js";
46
47
 
47
48
  // src/sequence/renderer.ts
48
49
  import * as d3Selection from "d3-selection";
@@ -1002,7 +1003,8 @@ function renderSequenceDiagram(container, parsed, palette, isDark, _onNavigateTo
1002
1003
  position: { placement: "top-center", titleRelation: "below-title" },
1003
1004
  mode: "preview"
1004
1005
  };
1005
- const legendTopSpace = parsed.tagGroups.length > 0 ? getMaxLegendReservedHeight(legendConfig, containerWidth) + LEGEND_FIXED_GAP : 0;
1006
+ const noLegend = legendSuppressed(parsedOptions);
1007
+ const legendTopSpace = parsed.tagGroups.length > 0 && !noLegend ? getMaxLegendReservedHeight(legendConfig, containerWidth) + LEGEND_FIXED_GAP : 0;
1006
1008
  const groupOffset = parsed.groups.length > 0 ? GROUP_PADDING_TOP + GROUP_LABEL_SIZE : 0;
1007
1009
  const participantStartY = sTopMargin + titleOffset + legendTopSpace + sParticipantYOffset + groupOffset;
1008
1010
  const lifelineStartY0 = participantStartY + sBoxH;
@@ -1274,7 +1276,7 @@ function renderSequenceDiagram(container, parsed, palette, isDark, _onNavigateTo
1274
1276
  titleEl.attr("data-line-number", parsed.titleLineNumber);
1275
1277
  }
1276
1278
  }
1277
- const hasTagGroups = parsed.tagGroups.length > 0;
1279
+ const hasTagGroups = parsed.tagGroups.length > 0 && !noLegend;
1278
1280
  const collapsedGroupNames = /* @__PURE__ */ new Set();
1279
1281
  const collapsedGroupMeta = /* @__PURE__ */ new Map();
1280
1282
  for (const group of parsed.groups) {
@@ -1859,4 +1861,4 @@ export {
1859
1861
  renderSequenceDiagram,
1860
1862
  buildNoteMessageMap
1861
1863
  };
1862
- //# sourceMappingURL=chunk-VQOCMUWI.js.map
1864
+ //# sourceMappingURL=chunk-NUTWTV6G.js.map
@@ -5,11 +5,11 @@ import {
5
5
  splitNameAndMeta,
6
6
  tryParseSharedOption,
7
7
  warnUnknownMetaKeys
8
- } from "./chunk-BRENJ2BQ.js";
8
+ } from "./chunk-3FRO35WW.js";
9
9
  import {
10
10
  makeDgmoError,
11
11
  makeFail
12
- } from "./chunk-CXK4DZH3.js";
12
+ } from "./chunk-4W2PE66Q.js";
13
13
 
14
14
  // src/cycle/parser.ts
15
15
  var BARE_EDGE_RE = /^->\s*(.*)?$/;
@@ -274,4 +274,4 @@ function parseCycle(content) {
274
274
  export {
275
275
  parseCycle
276
276
  };
277
- //# sourceMappingURL=chunk-7BIZCTAX.js.map
277
+ //# sourceMappingURL=chunk-O576GYAP.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  measureText
3
- } from "./chunk-WCT3NYCV.js";
3
+ } from "./chunk-4ASYQ347.js";
4
4
 
5
5
  // src/wireframe/layout.ts
6
6
  var DESKTOP_WIDTH = 1200;
@@ -302,4 +302,4 @@ function computeFieldAlignX(children) {
302
302
  export {
303
303
  layoutWireframe
304
304
  };
305
- //# sourceMappingURL=chunk-H6PI3KJT.js.map
305
+ //# sourceMappingURL=chunk-ODUT5WMC.js.map
@@ -10,24 +10,25 @@ import {
10
10
  tagAttrKey,
11
11
  validateTagGroupNames,
12
12
  validateTagValues
13
- } from "./chunk-HHKO6SKY.js";
13
+ } from "./chunk-AHTTKERF.js";
14
14
  import {
15
15
  MINDMAP_REGISTRY,
16
16
  OPTION_NOCOLON_RE,
17
17
  extractColor,
18
18
  measureIndent,
19
19
  parseFirstLine,
20
+ peelTrailingCollapsedFlag,
20
21
  splitNameAndMeta,
21
22
  tryParseSharedOption,
22
23
  warnUnknownMetaKeys,
23
24
  withTagAliases
24
- } from "./chunk-BRENJ2BQ.js";
25
+ } from "./chunk-3FRO35WW.js";
25
26
  import {
26
27
  formatDgmoError,
27
28
  makeDgmoError,
28
29
  makeFail,
29
30
  suggest
30
- } from "./chunk-CXK4DZH3.js";
31
+ } from "./chunk-4W2PE66Q.js";
31
32
 
32
33
  // src/mindmap/parser.ts
33
34
  var KNOWN_OPTIONS = /* @__PURE__ */ new Set(["active-tag"]);
@@ -241,9 +242,18 @@ function parseMindmap(content, palette) {
241
242
  return result;
242
243
  }
243
244
  function parseNodeLine(trimmed, lineNumber, _palette, counter, aliasMap, diagnostics) {
245
+ let bareCollapsed = false;
246
+ let nodeText = trimmed;
247
+ {
248
+ const barePeel = peelTrailingCollapsedFlag(nodeText);
249
+ if (barePeel.collapsed && barePeel.rest) {
250
+ bareCollapsed = true;
251
+ nodeText = barePeel.rest;
252
+ }
253
+ }
244
254
  const registry = withTagAliases(MINDMAP_REGISTRY, new Set(aliasMap.keys()));
245
255
  const split = splitNameAndMeta(
246
- trimmed,
256
+ nodeText,
247
257
  registry,
248
258
  aliasMap,
249
259
  void 0,
@@ -265,9 +275,9 @@ function parseNodeLine(trimmed, lineNumber, _palette, counter, aliasMap, diagnos
265
275
  if (descVal) description = [descVal];
266
276
  delete metadata["description"];
267
277
  }
268
- let collapsed;
278
+ let collapsed = bareCollapsed ? true : void 0;
269
279
  if ("collapsed" in metadata) {
270
- collapsed = metadata["collapsed"].toLowerCase() === "true";
280
+ collapsed = collapsed || metadata["collapsed"].toLowerCase() === "true";
271
281
  delete metadata["collapsed"];
272
282
  }
273
283
  return {
@@ -313,4 +323,4 @@ function findMetadataParent(indent, indentStack) {
313
323
  export {
314
324
  parseMindmap
315
325
  };
316
- //# sourceMappingURL=chunk-AL672HNE.js.map
326
+ //# sourceMappingURL=chunk-OJ435DQZ.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  compactNumber
3
- } from "./chunk-5BHJZH62.js";
3
+ } from "./chunk-6OYDOQ2Q.js";
4
4
  import {
5
5
  parseInlineMarkdown
6
6
  } from "./chunk-3HDBAXF5.js";
@@ -15,10 +15,10 @@ import {
15
15
  mix,
16
16
  shapeFill,
17
17
  themeBaseBg
18
- } from "./chunk-WBM7ZNDI.js";
18
+ } from "./chunk-JYDMBWRP.js";
19
19
  import {
20
20
  resolveColor
21
- } from "./chunk-TLVIHFRO.js";
21
+ } from "./chunk-ZKPPI6BF.js";
22
22
 
23
23
  // src/goal/renderer.ts
24
24
  import * as d3Selection from "d3-selection";
@@ -361,4 +361,4 @@ export {
361
361
  renderGoal,
362
362
  renderGoalForExport
363
363
  };
364
- //# sourceMappingURL=chunk-3HF5YEFJ.js.map
364
+ //# sourceMappingURL=chunk-OR3R27CU.js.map
@@ -1,55 +1,54 @@
1
- import {
2
- GANTT_BOOLEAN_SET,
3
- GANTT_OPTION_SET
4
- } from "./chunk-FQ7HTV52.js";
5
1
  import {
6
2
  parseDuration,
7
3
  parseOffset,
8
4
  parseOffsetPrefix
9
- } from "./chunk-USZW2HHU.js";
5
+ } from "./chunk-EQW6HOP4.js";
10
6
  import {
11
7
  parseDateToken,
12
8
  toInternal
13
9
  } from "./chunk-DAOFNU6J.js";
14
10
  import {
15
11
  getSeriesColors
16
- } from "./chunk-WBM7ZNDI.js";
12
+ } from "./chunk-JYDMBWRP.js";
13
+ import {
14
+ normalizeName
15
+ } from "./chunk-NOTA6TEI.js";
17
16
  import {
18
17
  matchTagBlockHeading,
19
18
  stripDefaultModifier,
20
19
  tagAttrKey,
21
20
  validateTagGroupNames
22
- } from "./chunk-HHKO6SKY.js";
23
- import {
24
- normalizeName
25
- } from "./chunk-NOTA6TEI.js";
21
+ } from "./chunk-AHTTKERF.js";
26
22
  import {
23
+ GANTT_BOOLEAN_SET,
24
+ GANTT_OPTION_SET,
27
25
  GANTT_REGISTRY,
28
26
  extractColor,
29
27
  isReservedKey,
30
28
  measureIndent,
31
29
  parseFirstLine,
30
+ peelTrailingCollapsedFlag,
32
31
  splitNameAndMeta,
33
32
  warnUnknownMetaKeys,
34
33
  withTagAliases
35
- } from "./chunk-BRENJ2BQ.js";
34
+ } from "./chunk-3FRO35WW.js";
36
35
  import {
37
36
  formatDgmoError,
38
37
  makeDgmoError
39
- } from "./chunk-CXK4DZH3.js";
38
+ } from "./chunk-4W2PE66Q.js";
40
39
 
41
40
  // src/gantt/parser.ts
42
41
  var GROUP_RE = /^\[(.+?)\]\s*(.*)$/;
43
42
  var DEPENDENCY_RE = /^(?:-(.+?))?->\s*(.+)$/;
44
43
  var COMMENT_RE = /^\/\//;
45
44
  var WORKWEEK_RE = /^workweek\s+(.+)$/i;
46
- var OFFSET_PREFIX_RE = /^\+(\d+(?:\.\d+)?(?:min|bd|d|w|m|q|y|h|s))\s+(.*)/;
47
- var DURATION_TOKEN_RE = /^(\d+(?:\.\d+)?)(min|bd|d|w|m|q|y|h|s)(\?)?$/;
48
- var LAG_ARROW_RE = /^-(\d+(?:\.\d+)?(?:min|bd|d|w|m|q|y|h|s))->\s*(.*)/;
49
- var LEAD_ARROW_RE = /^--(\d+(?:\.\d+)?(?:min|bd|d|w|m|q|y|h|s))->\s*(.*)/;
45
+ var OFFSET_PREFIX_RE = /^\+(\d+(?:\.\d+)?(?:min|bd|sp|d|w|m|q|y|h|s))\s+(.*)/;
46
+ var DURATION_TOKEN_RE = /^(\d+(?:\.\d+)?)(min|bd|sp|d|w|m|q|y|h|s)(\?)?$/;
47
+ var LAG_ARROW_RE = /^-(\d+(?:\.\d+)?(?:min|bd|sp|d|w|m|q|y|h|s))->\s*(.*)/;
48
+ var LEAD_ARROW_RE = /^--(\d+(?:\.\d+)?(?:min|bd|sp|d|w|m|q|y|h|s))->\s*(.*)/;
50
49
  var BASIC_ARROW_RE = /^->\s*(.*)/;
51
- var ERA_OFFSET_RE = /^era\s+\+(\d+(?:\.\d+)?(?:min|bd|d|w|m|q|y|h|s))\s*(?:->|–>)\s*\+(\d+(?:\.\d+)?(?:min|bd|d|w|m|q|y|h|s))\s+(.+)$/i;
52
- var MARKER_OFFSET_RE = /^marker\s+\+(\d+(?:\.\d+)?(?:min|bd|d|w|m|q|y|h|s))\s+(.+)$/i;
50
+ var ERA_OFFSET_RE = /^era\s+\+(\d+(?:\.\d+)?(?:min|bd|sp|d|w|m|q|y|h|s))\s*(?:->|–>)\s*\+(\d+(?:\.\d+)?(?:min|bd|sp|d|w|m|q|y|h|s))\s+(.+)$/i;
51
+ var MARKER_OFFSET_RE = /^marker\s+\+(\d+(?:\.\d+)?(?:min|bd|sp|d|w|m|q|y|h|s))\s+(.+)$/i;
53
52
  var WEEKDAY_MAP = {
54
53
  mon: "mon",
55
54
  tue: "tue",
@@ -153,7 +152,8 @@ function parseGantt(content, palette) {
153
152
  sprintStart: null,
154
153
  sprintMode: null,
155
154
  fillMode: void 0,
156
- noTitle: false
155
+ noTitle: false,
156
+ noLegend: false
157
157
  },
158
158
  diagnostics,
159
159
  error: null,
@@ -807,6 +807,9 @@ function parseGantt(content, palette) {
807
807
  case "no-title":
808
808
  result.options.noTitle = true;
809
809
  break;
810
+ case "no-legend":
811
+ result.options.noLegend = true;
812
+ break;
810
813
  }
811
814
  continue;
812
815
  }
@@ -833,6 +836,9 @@ function parseGantt(content, palette) {
833
836
  const value = optNoColonMatch[2].trim();
834
837
  result.options.optionLineNumbers[key] = lineNumber;
835
838
  switch (key) {
839
+ // `start-date` is canonical (decision #48, pert parity); bare `start`
840
+ // stays as an undocumented legacy alias.
841
+ case "start-date":
836
842
  case "start":
837
843
  result.options.start = wholeDate(value)?.iso ?? value;
838
844
  break;
@@ -952,7 +958,13 @@ function parseGantt(content, palette) {
952
958
  );
953
959
  continue;
954
960
  }
955
- const afterBrackets = gm[2].trim();
961
+ let afterBrackets = gm[2].trim();
962
+ let collapsed = false;
963
+ const barePeel = peelTrailingCollapsedFlag(afterBrackets);
964
+ if (barePeel.collapsed) {
965
+ collapsed = true;
966
+ afterBrackets = barePeel.rest;
967
+ }
956
968
  let metadata = {};
957
969
  if (afterBrackets) {
958
970
  const groupRegistry = withTagAliases(
@@ -975,7 +987,6 @@ function parseGantt(content, palette) {
975
987
  );
976
988
  metadata = split.meta;
977
989
  }
978
- let collapsed = false;
979
990
  if (metadata["collapsed"]?.toLowerCase() === "true") {
980
991
  collapsed = true;
981
992
  delete metadata["collapsed"];
@@ -1152,7 +1163,8 @@ function parseGantt(content, palette) {
1152
1163
  for (let j = tokens.length - 1; j >= 0; j--) {
1153
1164
  const m = tokens[j].match(DURATION_TOKEN_RE);
1154
1165
  if (m) {
1155
- duration = { amount: parseFloat(m[1]), unit: m[2] };
1166
+ const unit = m[2] === "sp" ? "s" : m[2];
1167
+ duration = { amount: parseFloat(m[1]), unit };
1156
1168
  uncertain = !!m[3];
1157
1169
  name = tokens.slice(0, j).join(" ");
1158
1170
  break;
@@ -1332,4 +1344,4 @@ export {
1332
1344
  GANTT_KNOWN_OPTIONS,
1333
1345
  GANTT_KNOWN_BOOLEANS
1334
1346
  };
1335
- //# sourceMappingURL=chunk-QGATPIPX.js.map
1347
+ //# sourceMappingURL=chunk-OSXQKC3S.js.map
@@ -5,6 +5,9 @@ import {
5
5
  import {
6
6
  wrapDescriptionLines
7
7
  } from "./chunk-BMR4CIEO.js";
8
+ import {
9
+ FONT_FAMILY
10
+ } from "./chunk-6KFWC4CO.js";
8
11
  import {
9
12
  DAY_MS,
10
13
  applyOrdinalTemplate,
@@ -19,18 +22,15 @@ import {
19
22
  sameDay,
20
23
  splitClockSeconds
21
24
  } from "./chunk-OQKP2X3D.js";
22
- import {
23
- FONT_FAMILY
24
- } from "./chunk-6KFWC4CO.js";
25
25
  import {
26
26
  contrastText,
27
27
  getSeriesColors,
28
28
  mix,
29
29
  themeBaseBg
30
- } from "./chunk-WBM7ZNDI.js";
30
+ } from "./chunk-JYDMBWRP.js";
31
31
  import {
32
32
  resolveColor
33
- } from "./chunk-TLVIHFRO.js";
33
+ } from "./chunk-ZKPPI6BF.js";
34
34
 
35
35
  // src/countdown/renderer.ts
36
36
  import * as d3Selection from "d3-selection";
@@ -43,8 +43,10 @@ function bakedHero(parsed, now) {
43
43
  if (parsed.expired !== null) return parsed.expired;
44
44
  const elapsed = -remaining;
45
45
  if (elapsed <= 0) return "Now!";
46
- if (parsed.units === "compound" || parsed.units === "human")
47
- return `${formatCompound(resolved, now, 2, tz)} ago`;
46
+ if (parsed.units === "compound" || parsed.units === "human") {
47
+ const [a, b] = parsed.hasTime ? [resolved, now] : [dayStart(resolved, tz), dayStart(now, tz)];
48
+ return `${formatCompound(a, b, 2, tz)} ago`;
49
+ }
48
50
  const bu = parsed.units === "full" || parsed.units === "clock" ? "days" : parsed.units;
49
51
  return `${formatCount(elapsed, { units: bu, round: parsed.round, fields: parsed.fields })} ago`;
50
52
  }
@@ -183,18 +185,20 @@ function haloRect(svg, x, y, w, h, rx, C) {
183
185
  function pickBand(nowMs, resolvedMs, hasTime) {
184
186
  const days = dayDelta(nowMs, resolvedMs);
185
187
  if (hasTime && days <= 0) return "clock";
186
- if (days > 3 * 365) return "years";
187
- if (days > 365) return "year";
188
- if (days > 92) return "months";
189
- if (days > 18) return "monthgrid";
190
- if (days >= 1) return "weekstrip";
191
188
  if (days === 0) return "today";
192
- return "after";
189
+ const mag = Math.abs(days);
190
+ if (mag > 3 * 365) return "years";
191
+ if (mag > 365) return "year";
192
+ if (mag > 92) return "months";
193
+ if (mag > 7) return "monthgrid";
194
+ return "weekstrip";
193
195
  }
194
196
  function monthSpan(nowMs, resolvedMs) {
195
197
  const n = new Date(nowMs);
196
198
  const t = new Date(resolvedMs);
197
- return (t.getFullYear() - n.getFullYear()) * 12 + (t.getMonth() - n.getMonth()) + 1;
199
+ return Math.abs(
200
+ (t.getFullYear() - n.getFullYear()) * 12 + (t.getMonth() - n.getMonth())
201
+ ) + 1;
198
202
  }
199
203
  var MONTH_TARGET_PX = 200;
200
204
  function monthGridLayout(nowMs, resolvedMs, contentW) {
@@ -205,21 +209,24 @@ function monthGridLayout(nowMs, resolvedMs, contentW) {
205
209
  const padBefore = Math.floor((shown - realSpan) / 2);
206
210
  const nowMk = now.getFullYear() * 12 + now.getMonth();
207
211
  const evMk = ev.getFullYear() * 12 + ev.getMonth();
212
+ const loMk = Math.min(nowMk, evMk);
213
+ const hiMk = Math.max(nowMk, evMk);
214
+ const startMk = loMk - padBefore;
208
215
  const months = [];
209
216
  const dim = [];
210
217
  for (let i = 0; i < shown; i++) {
211
- const d = new Date(now.getFullYear(), now.getMonth() - padBefore + i, 1);
218
+ const d = new Date(Math.floor(startMk / 12), startMk % 12 + i, 1);
212
219
  const mk = d.getFullYear() * 12 + d.getMonth();
213
220
  months.push(d);
214
- dim.push(mk < nowMk || mk > evMk);
221
+ dim.push(mk < loMk || mk > hiMk);
215
222
  }
216
223
  return { months, dim };
217
224
  }
218
225
  function yearsLayout(nowMs, resolvedMs) {
219
226
  const y0 = new Date(nowMs).getFullYear();
220
227
  const y1 = new Date(resolvedMs).getFullYear();
221
- const d0 = Math.floor(y0 / 10) * 10;
222
- const d1 = Math.floor(y1 / 10) * 10;
228
+ const d0 = Math.floor(Math.min(y0, y1) / 10) * 10;
229
+ const d1 = Math.floor(Math.max(y0, y1) / 10) * 10;
223
230
  return { d0, d1, rows: (d1 - d0) / 10 + 1 };
224
231
  }
225
232
  function bandHeightFor(kind, nowMs, resolvedMs, contentW) {
@@ -241,7 +248,9 @@ function bandHeightFor(kind, nowMs, resolvedMs, contentW) {
241
248
  return total;
242
249
  }
243
250
  case "year": {
244
- const R = new Date(resolvedMs).getFullYear() - new Date(nowMs).getFullYear() + 1;
251
+ const R = Math.abs(
252
+ new Date(resolvedMs).getFullYear() - new Date(nowMs).getFullYear()
253
+ ) + 1;
245
254
  const yearW = 66;
246
255
  const gap = 8;
247
256
  const cellW = (contentW - yearW - 11 * gap) / 12;
@@ -267,14 +276,13 @@ function bandHeightFor(kind, nowMs, resolvedMs, contentW) {
267
276
  return 26 + 6 * cellH + 8;
268
277
  }
269
278
  case "weekstrip": {
270
- const n = Math.max(7, dayDelta(nowMs, resolvedMs) + 1);
279
+ const n = Math.max(7, Math.abs(dayDelta(nowMs, resolvedMs)) + 1);
271
280
  const cw = (contentW - 10 * (n - 1)) / n;
272
281
  return clamp(cw * 1.5, 116, 170);
273
282
  }
274
283
  case "clock":
275
284
  return clamp(contentW * 0.26, 150, 205);
276
285
  case "today":
277
- case "after":
278
286
  return clamp(contentW * 0.22, 125, 170);
279
287
  }
280
288
  }
@@ -312,7 +320,7 @@ function vizYears(svg, g, nowMs, resolvedMs, C) {
312
320
  const before = yr < nowY;
313
321
  const isNow = yr === nowY;
314
322
  const isEv = yr === evY;
315
- const between = yr > nowY && yr < evY;
323
+ const between = (yr - nowY) * (yr - evY) < 0;
316
324
  const st = isEv ? roleStyle(C, "event") : isNow ? roleStyle(C, "today") : between ? gradStyle(C, (yr - nowY) / (evY - nowY)) : roleStyle(C, before ? "past" : "future");
317
325
  const x = g.left + labW + i * (cellW + gap);
318
326
  aRect(svg, x, ry, cellW, cellH, rx, st.fill, st.stroke, 1);
@@ -336,8 +344,8 @@ function vizYears(svg, g, nowMs, resolvedMs, C) {
336
344
  function vizYear(svg, g, nowMs, resolvedMs, C) {
337
345
  const now = new Date(nowMs);
338
346
  const ev = new Date(resolvedMs);
339
- const y0 = now.getFullYear();
340
- const y1 = ev.getFullYear();
347
+ const y0 = Math.min(now.getFullYear(), ev.getFullYear());
348
+ const y1 = Math.max(now.getFullYear(), ev.getFullYear());
341
349
  const years = [];
342
350
  for (let y = y0; y <= y1; y++) years.push(y);
343
351
  const R = years.length;
@@ -367,10 +375,11 @@ function vizYear(svg, g, nowMs, resolvedMs, C) {
367
375
  { "dominant-baseline": "central" }
368
376
  );
369
377
  for (let m = 0; m < 12; m++) {
370
- const before = yr < nowY || yr === nowY && m < nowM;
378
+ const mOrd = yr * 12 + m;
379
+ const before = mOrd < nowOrd;
371
380
  const isNow = yr === nowY && m === nowM;
372
381
  const isEv = yr === evY && m === evM;
373
- const between = (yr > nowY || yr === nowY && m > nowM) && (yr < evY || yr === evY && m < evM);
382
+ const between = (mOrd - nowOrd) * (mOrd - evOrd) < 0;
374
383
  const anchor = isEv || isNow;
375
384
  const st = isEv ? roleStyle(C, "event") : isNow ? roleStyle(C, "today") : between ? gradStyle(C, (yr * 12 + m - nowOrd) / (evOrd - nowOrd)) : roleStyle(C, before ? "past" : "future");
376
385
  const x = g.left + yearW + m * (cellW + gap);
@@ -434,19 +443,22 @@ function vizMonths(svg, g, nowMs, resolvedMs, C) {
434
443
  const cellH = (g.height - rowGap * (rows - 1)) / rows;
435
444
  const nowMk = now.getFullYear() * 12 + now.getMonth();
436
445
  const evMk = ev.getFullYear() * 12 + ev.getMonth();
446
+ const loMk = Math.min(nowMk, evMk);
447
+ const hiMk = Math.max(nowMk, evMk);
448
+ const startMk = loMk - padBefore;
437
449
  for (let i = 0; i < shown; i++) {
438
- const d = new Date(now.getFullYear(), now.getMonth() - padBefore + i, 1);
450
+ const d = new Date(Math.floor(startMk / 12), startMk % 12 + i, 1);
439
451
  const mk = d.getFullYear() * 12 + d.getMonth();
440
452
  const isNow = mk === nowMk;
441
453
  const isEv = mk === evMk;
442
- const isContext = mk < nowMk || mk > evMk;
454
+ const isContext = mk < loMk || mk > hiMk;
443
455
  const anchor = isNow || isEv;
444
456
  const col = i % perRow;
445
457
  const row = Math.floor(i / perRow);
446
458
  const x = g.left + col * (cellW + gap);
447
459
  const y = g.top + row * (cellH + rowGap);
448
460
  const mt = isContext ? svg.append("g").attr("opacity", 0.42) : svg;
449
- const st = isEv ? roleStyle(C, "event") : isNow ? roleStyle(C, "today") : mk > nowMk && mk < evMk ? gradStyle(C, (mk - nowMk) / (evMk - nowMk)) : roleStyle(C, mk < nowMk ? "past" : "future");
461
+ const st = isEv ? roleStyle(C, "event") : isNow ? roleStyle(C, "today") : (mk - nowMk) * (mk - evMk) < 0 ? gradStyle(C, (mk - nowMk) / (evMk - nowMk)) : roleStyle(C, mk < nowMk ? "past" : "future");
450
462
  const rxM = Math.min(12, cellH * 0.14);
451
463
  aRect(mt, x, y, cellW, cellH, rxM, st.fill, st.stroke, 1.25);
452
464
  if (isEv) haloRect(mt, x, y, cellW, cellH, rxM, C);
@@ -545,7 +557,7 @@ function vizMonthGrid(svg, g, nowMs, resolvedMs, C) {
545
557
  const cy = gy + wk * cellH;
546
558
  const isEvent = dk === evKey;
547
559
  const isToday = dk === todayKey;
548
- const between = dk > todayKey && dk < evKey;
560
+ const between = (dk - todayKey) * (dk - evKey) < 0;
549
561
  const anchor = isEvent || isToday;
550
562
  const dtMs = new Date(m.getFullYear(), m.getMonth(), day).getTime();
551
563
  const st = isEvent ? roleStyle(C, "event") : isToday ? roleStyle(C, "today") : between ? gradStyle(C, dayDelta(nowMs, dtMs) / dayDelta(nowMs, resolvedMs)) : roleStyle(C, dk < todayKey ? "past" : "future");
@@ -584,8 +596,7 @@ function vizMonthGrid(svg, g, nowMs, resolvedMs, C) {
584
596
  });
585
597
  }
586
598
  function vizWeekStrip(svg, g, nowMs, resolvedMs, C) {
587
- const now = new Date(nowMs);
588
- const nReal = dayDelta(nowMs, resolvedMs) + 1;
599
+ const nReal = Math.abs(dayDelta(nowMs, resolvedMs)) + 1;
589
600
  const n = Math.max(7, nReal);
590
601
  const padBefore = Math.floor((n - nReal) / 2);
591
602
  const gap = n <= 7 ? 14 : n <= 12 ? 10 : 7;
@@ -596,17 +607,20 @@ function vizWeekStrip(svg, g, nowMs, resolvedMs, C) {
596
607
  const showTag = cw >= 44;
597
608
  const nowOrd = DAY_START(nowMs);
598
609
  const evOrd = DAY_START(resolvedMs);
610
+ const loOrd = Math.min(nowOrd, evOrd);
611
+ const hiOrd = Math.max(nowOrd, evOrd);
612
+ const first = new Date(Math.min(nowMs, resolvedMs));
599
613
  for (let i = 0; i < n; i++) {
600
614
  const dt = new Date(
601
- now.getFullYear(),
602
- now.getMonth(),
603
- now.getDate() + i - padBefore
615
+ first.getFullYear(),
616
+ first.getMonth(),
617
+ first.getDate() + i - padBefore
604
618
  );
605
619
  const dtOrd = DAY_START(dt.getTime());
606
620
  const x = g.left + i * (cw + gap);
607
621
  const isToday = dtOrd === nowOrd;
608
622
  const isEvent = dtOrd === evOrd;
609
- const isContext = dtOrd < nowOrd || dtOrd > evOrd;
623
+ const isContext = dtOrd < loOrd || dtOrd > hiOrd;
610
624
  const st = isEvent ? roleStyle(C, "event") : isToday ? roleStyle(C, "today") : isContext ? roleStyle(C, dtOrd < nowOrd ? "past" : "future") : gradStyle(C, (dtOrd - nowOrd) / (evOrd - nowOrd));
611
625
  const ct = isContext ? svg.append("g").attr("opacity", 0.5) : svg;
612
626
  const sw = isToday || isEvent ? 2 : 1.25;
@@ -709,75 +723,6 @@ function vizToday(svg, g, resolvedMs, C) {
709
723
  { "letter-spacing": "0.12em" }
710
724
  );
711
725
  }
712
- function vizAfter(svg, g, nowMs, resolvedMs, C) {
713
- const ev = new Date(resolvedMs);
714
- const elapsed = dayDelta(resolvedMs, nowMs);
715
- const n = elapsed + 1;
716
- const gap = 10;
717
- const cw = (g.contentW - gap * (n - 1)) / n;
718
- const ch = Math.min(cw * 1.1, g.height * 0.62);
719
- const top = g.top + (g.height - ch) / 2 - 8;
720
- for (let i = 0; i < n; i++) {
721
- const dt = new Date(ev);
722
- dt.setDate(ev.getDate() + i);
723
- const x = g.left + i * (cw + gap);
724
- const isEvent = i === 0;
725
- const isToday = i === n - 1;
726
- const st = roleStyle(C, isEvent ? "event" : "past");
727
- const fill = st.fill;
728
- const stroke = st.stroke;
729
- const tcol = st.text;
730
- const sw = isEvent ? 2.5 : 1;
731
- aRect(svg, x, top, cw, ch, 12, fill, stroke, sw);
732
- if (isEvent) haloRect(svg, x, top, cw, ch, 12, C);
733
- aText(
734
- svg,
735
- x + cw / 2,
736
- top + ch * 0.46,
737
- Math.min(34, cw * 0.34),
738
- tcol,
739
- isEvent ? 750 : 500,
740
- "middle",
741
- String(dt.getDate())
742
- );
743
- aText(
744
- svg,
745
- x + cw / 2,
746
- top + ch * 0.72,
747
- 11,
748
- tcol,
749
- 600,
750
- "middle",
751
- MON_ABBR[dt.getMonth()]
752
- );
753
- if (isEvent)
754
- aText(
755
- svg,
756
- x + cw / 2,
757
- top - 8,
758
- 11,
759
- C.event,
760
- 700,
761
- "middle",
762
- "IT HAPPENED",
763
- { "letter-spacing": "0.05em" }
764
- );
765
- if (isToday)
766
- aText(svg, x + cw / 2, top - 8, 11, C.now, 700, "middle", "TODAY", {
767
- "letter-spacing": "0.05em"
768
- });
769
- }
770
- aText(
771
- svg,
772
- g.left,
773
- top + ch + 28,
774
- 14,
775
- C.muted,
776
- 400,
777
- "start",
778
- `${elapsed} day${elapsed === 1 ? "" : "s"} ago \u2014 the day has passed`
779
- );
780
- }
781
726
  function polar(cx, cy, r, deg) {
782
727
  const a = (deg - 90) * Math.PI / 180;
783
728
  return [cx + r * Math.cos(a), cy + r * Math.sin(a)];
@@ -864,8 +809,6 @@ function drawBand(svg, kind, g, nowMs, resolvedMs, C) {
864
809
  return vizWeekStrip(svg, g, nowMs, resolvedMs, C);
865
810
  case "today":
866
811
  return vizToday(svg, g, resolvedMs, C);
867
- case "after":
868
- return vizAfter(svg, g, nowMs, resolvedMs, C);
869
812
  case "clock":
870
813
  return vizClock(svg, g, nowMs, resolvedMs, C);
871
814
  }
@@ -1087,4 +1030,4 @@ export {
1087
1030
  renderCountdown,
1088
1031
  renderCountdownForExport
1089
1032
  };
1090
- //# sourceMappingURL=chunk-FUPF2UYQ.js.map
1033
+ //# sourceMappingURL=chunk-PIXZTCKH.js.map