@diagrammo/dgmo 0.50.2 → 0.51.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 (233) hide show
  1. package/dist/advanced.d.ts +85 -23
  2. package/dist/advanced.js +207 -161
  3. package/dist/{analyzer-UYKBXAKR.js → analyzer-BJ54GIFB.js} +3 -3
  4. package/dist/auto.css +31 -8
  5. package/dist/auto.d.ts +6 -0
  6. package/dist/auto.js +169 -133
  7. package/dist/auto.mjs +2148 -1024
  8. package/dist/block.css +28 -8
  9. package/dist/block.js +97 -68
  10. package/dist/{charts-d3-MUW3LTML.js → charts-d3-7E4B4IMW.js} +9 -9
  11. package/dist/{chunk-6IAA2QQ2.js → chunk-2EQMXBBQ.js} +2 -2
  12. package/dist/{chunk-XJLKLU4D.js → chunk-2ILHQOL3.js} +3 -3
  13. package/dist/{chunk-SXRTRMEE.js → chunk-2UJSV2VT.js} +3 -3
  14. package/dist/{chunk-LE4MYMLI.js → chunk-32XPAAET.js} +5 -5
  15. package/dist/{chunk-NU3XLTGP.js → chunk-332ZR4QU.js} +4 -4
  16. package/dist/{chunk-F7BFXWNQ.js → chunk-3JLKYGBQ.js} +2 -2
  17. package/dist/{chunk-QROYX7TT.js → chunk-3LV2NCB6.js} +3 -3
  18. package/dist/{chunk-SVTI362O.js → chunk-3ODS2VGL.js} +97 -97
  19. package/dist/{chunk-3XGZF2QJ.js → chunk-3YSQZ75W.js} +6 -6
  20. package/dist/{chunk-FJUNPCYI.js → chunk-467TVMQL.js} +2 -2
  21. package/dist/{chunk-HHXOONLX.js → chunk-4B5YISOR.js} +38 -1
  22. package/dist/{chunk-6HJBFVLO.js → chunk-4QZ43D7I.js} +3 -3
  23. package/dist/{chunk-QJJZSROI.js → chunk-4VWJ4LW2.js} +7 -7
  24. package/dist/chunk-4XFBQT5O.js +35 -0
  25. package/dist/{chunk-2C56LEML.js → chunk-5F5ELR3V.js} +3 -3
  26. package/dist/{chunk-EAMEADTV.js → chunk-5PDTIBLV.js} +83 -21
  27. package/dist/{chunk-C2CVAM3U.js → chunk-5PZT4DQG.js} +160 -87
  28. package/dist/{chunk-IAEC4KLA.js → chunk-5QKQSSPO.js} +2 -2
  29. package/dist/{chunk-5OWVC2A6.js → chunk-5SVOCD5W.js} +6 -6
  30. package/dist/{chunk-VBYSIOOY.js → chunk-5WPNFSXP.js} +3 -3
  31. package/dist/{chunk-4MJ7M6YL.js → chunk-5X6YQA2J.js} +7 -7
  32. package/dist/{chunk-JJUOHGX2.js → chunk-65WJYYKJ.js} +4 -4
  33. package/dist/{chunk-3UIKSPFB.js → chunk-6BQFET7X.js} +3 -3
  34. package/dist/{chunk-U2HGPLZS.js → chunk-6H7O2OPM.js} +14 -1
  35. package/dist/{chunk-DZXYF2F5.js → chunk-6K2M4VSR.js} +3 -3
  36. package/dist/{chunk-PGEGPSCZ.js → chunk-6MNGECP2.js} +2 -2
  37. package/dist/{chunk-3XPUDB7B.js → chunk-6NFYEQDX.js} +266 -38
  38. package/dist/{chunk-4XK3FLFB.js → chunk-6NYWYNBI.js} +3 -3
  39. package/dist/{chunk-TWQUYVP3.js → chunk-7DF4J4RL.js} +4 -4
  40. package/dist/{chunk-H73FP42Q.js → chunk-7DYOELRK.js} +3 -3
  41. package/dist/{chunk-L3UHP6TD.js → chunk-7L4UJOY6.js} +1 -2
  42. package/dist/{chunk-QJP6PG7F.js → chunk-AB7INMR5.js} +9 -9
  43. package/dist/{chunk-3LKM6FMW.js → chunk-AE7II3E3.js} +2 -2
  44. package/dist/{chunk-BTUTZMPT.js → chunk-AFIEPDLX.js} +97 -42
  45. package/dist/chunk-APKUAJ2L.js +220 -0
  46. package/dist/{chunk-X6EZPSW6.js → chunk-AXW3M6OQ.js} +7 -7
  47. package/dist/{chunk-66RUL3XF.js → chunk-B63YB7X3.js} +5 -5
  48. package/dist/{chunk-DSWVNQVS.js → chunk-BGP54HVR.js} +4 -59
  49. package/dist/{chunk-3NODSS6A.js → chunk-BYJBIALT.js} +7 -7
  50. package/dist/{chunk-3YPY3OXD.js → chunk-CC4YRBWV.js} +2 -2
  51. package/dist/{chunk-HLJVEAOF.js → chunk-DY7XLRHK.js} +8 -33
  52. package/dist/{chunk-OMNGQPEZ.js → chunk-E7Y3SYKW.js} +3 -3
  53. package/dist/{chunk-HTMN2Z6U.js → chunk-EDA6C7MV.js} +50 -7
  54. package/dist/{chunk-7L3R6I3U.js → chunk-ENRS56GC.js} +3 -3
  55. package/dist/{chunk-2KGXHFYK.js → chunk-EXOQP75F.js} +7 -7
  56. package/dist/{chunk-BBGDM4NQ.js → chunk-F3FYUFUH.js} +26 -8
  57. package/dist/{chunk-GL5UZ6NY.js → chunk-FC5I2KXV.js} +3 -3
  58. package/dist/{chunk-VVW3F3MD.js → chunk-FTBZV6NE.js} +9 -9
  59. package/dist/{chunk-7QKLIMRZ.js → chunk-G3PF3S7P.js} +41 -46
  60. package/dist/{chunk-J6K7RP6P.js → chunk-GD6L76WD.js} +3 -3
  61. package/dist/{chunk-I2WKW7C7.js → chunk-GGHRAITI.js} +3 -3
  62. package/dist/{chunk-DN66GPY5.js → chunk-GNSFLJAA.js} +24 -3
  63. package/dist/{chunk-IUMPEA64.js → chunk-GROLTAWZ.js} +4 -4
  64. package/dist/{chunk-Q4V4XQWV.js → chunk-GTWKD3QT.js} +2 -2
  65. package/dist/{chunk-F2L5GCQ4.js → chunk-GU46PPT3.js} +3 -3
  66. package/dist/{chunk-6IUAK7RZ.js → chunk-H6PI3KJT.js} +2 -2
  67. package/dist/{chunk-SCQ5VPUF.js → chunk-HFMYN6N2.js} +2 -2
  68. package/dist/{chunk-GKC3HILQ.js → chunk-I2QZFCS2.js} +27 -4
  69. package/dist/{chunk-MCZ5LBZD.js → chunk-IE477RQZ.js} +7 -7
  70. package/dist/{chunk-3Y2DRD7S.js → chunk-IEDMFNU7.js} +3 -3
  71. package/dist/{chunk-M5RXSRO2.js → chunk-IEWG6J7C.js} +4 -4
  72. package/dist/{chunk-P7CE7LXL.js → chunk-IUJODQKX.js} +6 -6
  73. package/dist/{chunk-NWED7CYO.js → chunk-IUO34HKW.js} +6 -6
  74. package/dist/{chunk-NX4EQS3U.js → chunk-J76PIKAT.js} +2 -2
  75. package/dist/{chunk-O7WP4ZD4.js → chunk-JED6ZDEE.js} +2 -2
  76. package/dist/{chunk-6BFZKBGD.js → chunk-JJXGQIRV.js} +2 -2
  77. package/dist/{chunk-O7NUCTFU.js → chunk-JM4LEPY3.js} +2 -2
  78. package/dist/{chunk-VDOOQZUD.js → chunk-JSSX2SX4.js} +4 -4
  79. package/dist/{chunk-SQLNBA64.js → chunk-KFNWFNAA.js} +3 -3
  80. package/dist/{chunk-KQ57MHRO.js → chunk-KJGG2JKQ.js} +143 -82
  81. package/dist/{chunk-OTAL43EH.js → chunk-LV4BETUU.js} +8 -2
  82. package/dist/{chunk-VUJGMJE6.js → chunk-MVN25IF6.js} +4 -4
  83. package/dist/{chunk-CLD2OKV7.js → chunk-MX2EY5Y7.js} +2 -2
  84. package/dist/{chunk-T5SHNNGP.js → chunk-ND76YJCN.js} +59 -25
  85. package/dist/{chunk-KFZYNWWO.js → chunk-NEQ6GJXB.js} +4 -4
  86. package/dist/{chunk-PFHVU7UA.js → chunk-NI3XQBPB.js} +2 -2
  87. package/dist/{chunk-WW32K72E.js → chunk-OJTXTQA2.js} +9 -9
  88. package/dist/{chunk-YNRDWYZP.js → chunk-OQKP2X3D.js} +170 -51
  89. package/dist/{chunk-AHGF2YYA.js → chunk-OTOHI4JO.js} +2 -2
  90. package/dist/{chunk-HEVYAHLW.js → chunk-OU7HLO7I.js} +4 -4
  91. package/dist/{chunk-GBE54KY6.js → chunk-OZPBJM5Q.js} +3 -3
  92. package/dist/{chunk-EOFPYPAU.js → chunk-P3NRSSUU.js} +51 -11
  93. package/dist/{chunk-TSA237IM.js → chunk-PZDBOK2Q.js} +2 -2
  94. package/dist/{chunk-3P2DKJCG.js → chunk-Q62FEYK3.js} +2 -2
  95. package/dist/{chunk-DFTFPYUD.js → chunk-QHI5XVUJ.js} +7 -7
  96. package/dist/{chunk-HQCHYB5F.js → chunk-QOOUC2J5.js} +2 -2
  97. package/dist/{chunk-XEGTMVYY.js → chunk-QZPEGJOM.js} +2 -2
  98. package/dist/{chunk-TN35C5KM.js → chunk-RAHVMKBG.js} +2 -2
  99. package/dist/chunk-RBDIYLA5.js +267 -0
  100. package/dist/{chunk-OTQKUHRS.js → chunk-RBHWPDBB.js} +3 -3
  101. package/dist/{chunk-BH3UYK36.js → chunk-RLFVAKEO.js} +3 -3
  102. package/dist/{chunk-3LH5CLP4.js → chunk-RXKTSFDL.js} +150 -5
  103. package/dist/{chunk-RZ6YKEUJ.js → chunk-TK2VQQX2.js} +6 -6
  104. package/dist/{chunk-I7F2A35O.js → chunk-TMACGPW5.js} +25 -47
  105. package/dist/{chunk-5GJYGP5Z.js → chunk-TRM2J7ZN.js} +8 -8
  106. package/dist/{chunk-BCYVE3N5.js → chunk-TYS6CSS5.js} +2 -2
  107. package/dist/{chunk-5WFIYXQ6.js → chunk-U5SI5NIM.js} +91 -228
  108. package/dist/{chunk-KHEYDLMT.js → chunk-VB4UJ3H2.js} +2 -2
  109. package/dist/{chunk-HGN652MU.js → chunk-VL2O2F3W.js} +2 -2
  110. package/dist/{chunk-ONA5KPV3.js → chunk-VNSXLA6G.js} +4 -4
  111. package/dist/{chunk-CMCR5WBW.js → chunk-WBRZJOEC.js} +3 -3
  112. package/dist/{chunk-5LWQH6QV.js → chunk-WCT3NYCV.js} +1 -1
  113. package/dist/{chunk-T4VOVZT5.js → chunk-WJ7RW65H.js} +4 -4
  114. package/dist/{chunk-SCHXJTZL.js → chunk-WQLMU7VG.js} +2 -2
  115. package/dist/{chunk-C4GQDB5L.js → chunk-WRNFDFPU.js} +2 -2
  116. package/dist/{chunk-66NVRO4K.js → chunk-X7EC3L2H.js} +7 -7
  117. package/dist/{chunk-QXKWYZNR.js → chunk-XEQXCIBC.js} +3 -3
  118. package/dist/{chunk-C63UWAKM.js → chunk-Y2ZE3MSG.js} +2 -2
  119. package/dist/{chunk-FA6K3FWM.js → chunk-Y6GBQTBK.js} +6 -6
  120. package/dist/{chunk-7UEMZREK.js → chunk-YAA6IID3.js} +2 -2
  121. package/dist/{chunk-PZFVK3IH.js → chunk-YGJZWZTY.js} +2 -2
  122. package/dist/{chunk-7TV5Y53Y.js → chunk-ZJ3LS7DW.js} +3 -3
  123. package/dist/{chunk-PH5X4GIP.js → chunk-ZO27FGJS.js} +2 -2
  124. package/dist/cli.cjs +163 -147
  125. package/dist/clock.js +91 -5
  126. package/dist/countdown.js +208 -82
  127. package/dist/dgmo-router-Y2VEX46B.js +86 -0
  128. package/dist/dimensions-F7B5C4BJ.js +22 -0
  129. package/dist/editor.js +14 -1
  130. package/dist/element.d.ts +6 -0
  131. package/dist/element.js +170 -134
  132. package/dist/element.mjs +2112 -1009
  133. package/dist/{flowchart-parser-OE4WHLTF.js → flowchart-parser-MY53QWTZ.js} +4 -4
  134. package/dist/{flowchart-renderer-GPCSMTOR.js → flowchart-renderer-AQSMEMYF.js} +8 -8
  135. package/dist/highlight.js +14 -1
  136. package/dist/index.d.ts +2 -2
  137. package/dist/index.js +55 -53
  138. package/dist/{layout-7SKMFYHL.js → layout-46N4JJYK.js} +5 -5
  139. package/dist/layout-4DIUOX2T.js +14 -0
  140. package/dist/{layout-7H4H46CS.js → layout-7QXCNOVS.js} +3 -3
  141. package/dist/{layout-NXG63LWH.js → layout-AM2JWW3X.js} +4 -4
  142. package/dist/{layout-7MZ5NF2N.js → layout-CBCLPMSG.js} +5 -5
  143. package/dist/{layout-DC4TVXER.js → layout-EE6GE46Y.js} +5 -5
  144. package/dist/{layout-FGQWRYYW.js → layout-F4WO357A.js} +3 -3
  145. package/dist/layout-G23F7LDH.js +9 -0
  146. package/dist/{layout-QNUQLEHU.js → layout-HYZPWAK5.js} +3 -3
  147. package/dist/{layout-FWODLIMP.js → layout-JDJAEQ3P.js} +6 -6
  148. package/dist/layout-MUPRALE5.js +14 -0
  149. package/dist/{layout-34CLNICW.js → layout-OAC4PEAC.js} +5 -5
  150. package/dist/{layout-5BG6DFCU.js → layout-YVTNOTN4.js} +6 -6
  151. package/dist/{layout-PUQCB6AN.js → layout-ZDOSXL5G.js} +7 -7
  152. package/dist/{layout-search-QS44PI5R.js → layout-search-55FU6HD3.js} +6 -157
  153. package/dist/map-data/gazetteer.json +1 -1
  154. package/dist/{parser-36HVKU5U.js → parser-2Q2T4C3B.js} +6 -5
  155. package/dist/{parser-B5FVS7O6.js → parser-3A42DZ72.js} +3 -3
  156. package/dist/{parser-CSFUN3CT.js → parser-4RFTKAQX.js} +5 -4
  157. package/dist/{parser-IJBMRXMC.js → parser-57ILIFZ2.js} +5 -5
  158. package/dist/{parser-DFFEDKHH.js → parser-5A2UWU6B.js} +3 -3
  159. package/dist/{parser-H3XEPFPV.js → parser-5PDYJGWA.js} +4 -4
  160. package/dist/{parser-O4HIUN6G.js → parser-6BJEXUFX.js} +4 -4
  161. package/dist/{parser-MTOMTWTD.js → parser-6ZKABF5S.js} +6 -5
  162. package/dist/{parser-WAV5JRPT.js → parser-AIMHGJRR.js} +4 -4
  163. package/dist/{parser-TXND652E.js → parser-AZJ25OKK.js} +4 -4
  164. package/dist/{parser-4AI5ZN5F.js → parser-B77S5SZM.js} +3 -3
  165. package/dist/{parser-IBWNAPY4.js → parser-BEPSWJAD.js} +3 -3
  166. package/dist/{parser-D5VILGN2.js → parser-BKI42XBQ.js} +4 -4
  167. package/dist/{parser-LWKKBNSA.js → parser-C3D7MVXY.js} +3 -3
  168. package/dist/{parser-HYRTF3DO.js → parser-CDG7CHV5.js} +3 -3
  169. package/dist/{parser-CVMEDULU.js → parser-CZOJ7XQ6.js} +4 -4
  170. package/dist/{parser-AXKBDGNO.js → parser-E2RL6JYF.js} +5 -5
  171. package/dist/{parser-PSA4UBSP.js → parser-EH5VE7ZN.js} +4 -4
  172. package/dist/{parser-K3XXLMUW.js → parser-FQ6GZFMR.js} +4 -4
  173. package/dist/{parser-RV4M6AS2.js → parser-GKLZKEIK.js} +4 -4
  174. package/dist/{parser-MPCE5JBG.js → parser-H6ABKHZZ.js} +4 -4
  175. package/dist/{parser-RZPVAQVX.js → parser-I6GGFKOQ.js} +4 -3
  176. package/dist/{parser-W4PQUGX3.js → parser-JA7JQ7NF.js} +4 -4
  177. package/dist/{parser-5OXGPNBF.js → parser-KKTJ6M3Y.js} +5 -5
  178. package/dist/parser-OK22AC6Y.js +14 -0
  179. package/dist/{parser-4NO6VZ6S.js → parser-OK2ILHRT.js} +4 -4
  180. package/dist/{parser-YS7TOS2K.js → parser-OUTPNJWC.js} +3 -3
  181. package/dist/{parser-KCR2WS3V.js → parser-PORDUX5E.js} +4 -4
  182. package/dist/{parser-VKOJM7KS.js → parser-SRVFR7PM.js} +4 -4
  183. package/dist/{parser-TGQZJ5OT.js → parser-UKFFZCFJ.js} +4 -4
  184. package/dist/{parser-JJR52VAT.js → parser-UMWPLORP.js} +5 -5
  185. package/dist/{parser-AGVYTQXV.js → parser-Z4TZV2CB.js} +4 -4
  186. package/dist/{renderer-A5VE5BCI.js → renderer-2AUFT3E2.js} +8 -8
  187. package/dist/{renderer-FPE3J5VZ.js → renderer-2HTNBIF2.js} +11 -11
  188. package/dist/{renderer-R2WNIC2C.js → renderer-3K3IB7D5.js} +8 -8
  189. package/dist/{renderer-2AZ5HJFK.js → renderer-3YNIWF5I.js} +4 -4
  190. package/dist/{renderer-P5ROYQGU.js → renderer-3YPZHMOU.js} +3 -3
  191. package/dist/{renderer-JCCHNECZ.js → renderer-4WR6WMVF.js} +9 -9
  192. package/dist/{renderer-HDCCZURL.js → renderer-66MERVQ2.js} +9 -9
  193. package/dist/{renderer-2QPMJ2DA.js → renderer-6RKQPNJI.js} +9 -9
  194. package/dist/{renderer-FYSVXL7M.js → renderer-ARMJBP6C.js} +11 -11
  195. package/dist/{renderer-6OKF44KS.js → renderer-CO2DW7S7.js} +13 -13
  196. package/dist/{renderer-BSR2O2H6.js → renderer-EDJ2O4S5.js} +13 -12
  197. package/dist/{renderer-CYB4LK3G.js → renderer-F7U3MFCV.js} +9 -9
  198. package/dist/{renderer-5KVCNMOJ.js → renderer-GD2COXVL.js} +4 -2
  199. package/dist/{renderer-B5TBNZJE.js → renderer-GQIESYEM.js} +8 -8
  200. package/dist/{renderer-ODUUOPVT.js → renderer-HCKJDFXD.js} +13 -13
  201. package/dist/{renderer-QAOBLRXV.js → renderer-HYGHO4SJ.js} +10 -10
  202. package/dist/{renderer-5DSEWF74.js → renderer-JC3RDUT7.js} +8 -8
  203. package/dist/{renderer-7RH2SI3B.js → renderer-KQB7UGDS.js} +3 -3
  204. package/dist/{renderer-45PSOL3E.js → renderer-NKJ24TEA.js} +5 -5
  205. package/dist/{renderer-AUW2BE6G.js → renderer-OYO67VZK.js} +9 -9
  206. package/dist/{renderer-DAXMXIKD.js → renderer-QIWVHWZO.js} +3 -3
  207. package/dist/{renderer-PSMMZCKH.js → renderer-QRWACQRI.js} +8 -8
  208. package/dist/{renderer-4ITCHBT7.js → renderer-QXGN5H3A.js} +5 -5
  209. package/dist/renderer-QXPP4TA2.js +27 -0
  210. package/dist/{renderer-KS7YZJE2.js → renderer-RGIYOTKJ.js} +10 -10
  211. package/dist/{renderer-FF24KZCI.js → renderer-RHT4MHFU.js} +8 -8
  212. package/dist/{renderer-PPIHO5FI.js → renderer-RYR3TJ46.js} +12 -11
  213. package/dist/{renderer-NGXZTRK6.js → renderer-SRKDNDFB.js} +8 -8
  214. package/dist/{renderer-SBS3YWU5.js → renderer-TGTUABCI.js} +8 -8
  215. package/dist/{renderer-7SD6MSBS.js → renderer-TXJFKPOG.js} +11 -11
  216. package/dist/{renderer-HVCU2C3Z.js → renderer-UV6MI64M.js} +3 -3
  217. package/dist/renderer-radial-FWABAZHB.js +21 -0
  218. package/dist/{resolver-FHBCO3PL.js → resolver-EMTGNR3D.js} +4 -3
  219. package/dist/{state-parser-3REXRK3R.js → state-parser-6T6CNMPX.js} +4 -4
  220. package/dist/{state-renderer-XYLNRWXR.js → state-renderer-AWZ3ECAX.js} +8 -8
  221. package/dist/{themes-PdPR1-hC.d.ts → themes-32xj5ZTW.d.ts} +27 -0
  222. package/docs/language-reference.md +93 -10
  223. package/gallery/fixtures/clock.dgmo +3 -3
  224. package/gallery/fixtures/countdown-tz.dgmo +5 -0
  225. package/package.json +1 -1
  226. package/dist/dgmo-router-CE2G67FV.js +0 -84
  227. package/dist/dimensions-OTBKC5M6.js +0 -22
  228. package/dist/layout-6RDJHS6E.js +0 -9
  229. package/dist/layout-J36454XU.js +0 -14
  230. package/dist/layout-LD6XTLD6.js +0 -14
  231. package/dist/parser-4WQQQXCG.js +0 -13
  232. package/dist/renderer-UYMQQCJK.js +0 -24
  233. package/dist/renderer-radial-F7X5F2VU.js +0 -21
@@ -1,22 +1,22 @@
1
1
  import {
2
2
  parseGoal
3
- } from "./chunk-Q4V4XQWV.js";
3
+ } from "./chunk-GTWKD3QT.js";
4
4
  import {
5
5
  parseCountdown
6
- } from "./chunk-BTUTZMPT.js";
6
+ } from "./chunk-AFIEPDLX.js";
7
7
  import {
8
8
  parseClock
9
- } from "./chunk-3XPUDB7B.js";
9
+ } from "./chunk-6NFYEQDX.js";
10
10
  import {
11
11
  parseBracket
12
- } from "./chunk-QXKWYZNR.js";
12
+ } from "./chunk-XEQXCIBC.js";
13
13
  import {
14
14
  allTasks,
15
15
  parseRaci
16
- } from "./chunk-PGEGPSCZ.js";
16
+ } from "./chunk-6MNGECP2.js";
17
17
  import {
18
18
  parseBody
19
- } from "./chunk-3UIKSPFB.js";
19
+ } from "./chunk-6BQFET7X.js";
20
20
  import {
21
21
  EXTENDED_CHART_DOORS,
22
22
  parseChart,
@@ -25,109 +25,115 @@ import {
25
25
  parseHeatmap,
26
26
  parseSankey,
27
27
  parseScatter
28
- } from "./chunk-XEGTMVYY.js";
28
+ } from "./chunk-QZPEGJOM.js";
29
29
  import {
30
30
  parseWireframe
31
- } from "./chunk-I2WKW7C7.js";
31
+ } from "./chunk-GGHRAITI.js";
32
32
  import {
33
33
  parseTechRadar
34
- } from "./chunk-TSA237IM.js";
34
+ } from "./chunk-PZDBOK2Q.js";
35
35
  import {
36
36
  parseCycle
37
- } from "./chunk-6IAA2QQ2.js";
37
+ } from "./chunk-2EQMXBBQ.js";
38
38
  import {
39
39
  parseJourneyMap
40
- } from "./chunk-6HJBFVLO.js";
40
+ } from "./chunk-4QZ43D7I.js";
41
41
  import {
42
42
  parsePyramid
43
- } from "./chunk-3P2DKJCG.js";
43
+ } from "./chunk-Q62FEYK3.js";
44
44
  import {
45
45
  parseRing
46
- } from "./chunk-3LKM6FMW.js";
46
+ } from "./chunk-AE7II3E3.js";
47
47
  import {
48
48
  parseTreemap
49
- } from "./chunk-XJLKLU4D.js";
49
+ } from "./chunk-2ILHQOL3.js";
50
50
  import {
51
51
  parseBlock
52
- } from "./chunk-7L3R6I3U.js";
52
+ } from "./chunk-ENRS56GC.js";
53
53
  import {
54
54
  parseInfra
55
- } from "./chunk-VUJGMJE6.js";
55
+ } from "./chunk-MVN25IF6.js";
56
56
  import {
57
57
  parseGantt
58
- } from "./chunk-C2CVAM3U.js";
58
+ } from "./chunk-5PZT4DQG.js";
59
59
  import {
60
60
  parseMap
61
- } from "./chunk-GKC3HILQ.js";
61
+ } from "./chunk-I2QZFCS2.js";
62
62
  import {
63
63
  parseBoxesAndLines
64
- } from "./chunk-DSWVNQVS.js";
64
+ } from "./chunk-BGP54HVR.js";
65
65
  import {
66
66
  parseSketch
67
- } from "./chunk-DZXYF2F5.js";
67
+ } from "./chunk-6K2M4VSR.js";
68
68
  import {
69
69
  parseSwimlane
70
- } from "./chunk-OMNGQPEZ.js";
70
+ } from "./chunk-E7Y3SYKW.js";
71
71
  import {
72
72
  parseFamily
73
- } from "./chunk-VBYSIOOY.js";
73
+ } from "./chunk-5WPNFSXP.js";
74
74
  import {
75
75
  parseMindmap
76
- } from "./chunk-SXRTRMEE.js";
76
+ } from "./chunk-2UJSV2VT.js";
77
77
  import {
78
78
  looksLikeERDiagram,
79
79
  parseERDiagram
80
- } from "./chunk-NU3XLTGP.js";
80
+ } from "./chunk-332ZR4QU.js";
81
81
  import {
82
82
  looksLikeOrg,
83
83
  parseOrg
84
- } from "./chunk-OTQKUHRS.js";
84
+ } from "./chunk-RBHWPDBB.js";
85
85
  import {
86
86
  looksLikeSitemap,
87
87
  parseSitemap
88
- } from "./chunk-SQLNBA64.js";
88
+ } from "./chunk-KFNWFNAA.js";
89
89
  import {
90
90
  looksLikePert,
91
91
  parsePert
92
- } from "./chunk-EAMEADTV.js";
92
+ } from "./chunk-5PDTIBLV.js";
93
93
  import {
94
94
  parseEventLine
95
- } from "./chunk-HTMN2Z6U.js";
95
+ } from "./chunk-EDA6C7MV.js";
96
96
  import {
97
97
  parseTimelineEventLine
98
- } from "./chunk-I7F2A35O.js";
98
+ } from "./chunk-TMACGPW5.js";
99
+ import {
100
+ makeYearContext,
101
+ parseDateToken,
102
+ resolveTokenYear,
103
+ toInternal
104
+ } from "./chunk-RBDIYLA5.js";
99
105
  import {
100
106
  parseVersionControl
101
- } from "./chunk-6BFZKBGD.js";
107
+ } from "./chunk-JJXGQIRV.js";
102
108
  import {
103
109
  parseKanban
104
- } from "./chunk-3Y2DRD7S.js";
110
+ } from "./chunk-IEDMFNU7.js";
105
111
  import {
106
112
  parseC4
107
- } from "./chunk-QROYX7TT.js";
113
+ } from "./chunk-3LV2NCB6.js";
108
114
  import {
109
115
  looksLikeSequence,
110
116
  parseSequenceDgmo
111
- } from "./chunk-BH3UYK36.js";
117
+ } from "./chunk-RLFVAKEO.js";
112
118
  import {
113
119
  matchTagBlockHeading,
114
120
  stripDefaultModifier,
115
121
  tagAttrKey,
116
122
  validateTagGroupNames,
117
123
  validateTagValues
118
- } from "./chunk-FJUNPCYI.js";
124
+ } from "./chunk-467TVMQL.js";
119
125
  import {
120
126
  looksLikeFlowchart,
121
127
  parseFlowchart
122
- } from "./chunk-GBE54KY6.js";
128
+ } from "./chunk-OZPBJM5Q.js";
123
129
  import {
124
130
  looksLikeState,
125
131
  parseState
126
- } from "./chunk-2C56LEML.js";
132
+ } from "./chunk-5F5ELR3V.js";
127
133
  import {
128
134
  looksLikeClassDiagram,
129
135
  parseClassDiagram
130
- } from "./chunk-GL5UZ6NY.js";
136
+ } from "./chunk-FC5I2KXV.js";
131
137
  import {
132
138
  TIMELINE_REGISTRY,
133
139
  collectIndentedValues,
@@ -138,7 +144,7 @@ import {
138
144
  peelTrailingColorName,
139
145
  splitNameAndMeta,
140
146
  withTagAliases
141
- } from "./chunk-OTAL43EH.js";
147
+ } from "./chunk-LV4BETUU.js";
142
148
  import {
143
149
  resolveColorWithDiagnostic
144
150
  } from "./chunk-TLVIHFRO.js";
@@ -212,6 +218,67 @@ function parseVisualizationFull(content, palette) {
212
218
  return fail(0, "Empty content");
213
219
  }
214
220
  const lines = content.split("\n");
221
+ let tlDateOrder = "mdy";
222
+ let tlNoCurrentYear = false;
223
+ let tlDirectiveYear = null;
224
+ for (const raw of lines) {
225
+ const t = raw.trim().toLowerCase();
226
+ if (t === "no-current-year") tlNoCurrentYear = true;
227
+ else if (t === "date-order dmy") tlDateOrder = "dmy";
228
+ else if (t === "date-order mdy") tlDateOrder = "mdy";
229
+ else {
230
+ const ym = t.match(/^year\s+(\d{1,4})$/);
231
+ if (ym) tlDirectiveYear = parseInt(ym[1], 10);
232
+ }
233
+ }
234
+ let tlPrescan = null;
235
+ for (const raw of lines) {
236
+ const t = raw.trim();
237
+ if (!t) continue;
238
+ const p = parseDateToken(t, { dateOrder: tlDateOrder });
239
+ if (p?.token.year != null) {
240
+ tlPrescan = p.token.sign * p.token.year;
241
+ break;
242
+ }
243
+ }
244
+ const tlYearCtx = makeYearContext({
245
+ order: tlDateOrder,
246
+ directiveYear: tlDirectiveYear,
247
+ prescanYear: tlPrescan,
248
+ noCurrentYear: tlNoCurrentYear
249
+ });
250
+ const tlDateCtx = {
251
+ order: tlDateOrder,
252
+ resolve: (tok) => resolveTokenYear(tok, tlYearCtx)
253
+ };
254
+ const isTlDateDirective = (t) => t === "no-current-year" || t === "date-order dmy" || t === "date-order mdy" || /^year\s+\d{1,4}$/.test(t);
255
+ const tlBaseYear = tlDirectiveYear ?? tlPrescan;
256
+ const tlCurrentYear = (/* @__PURE__ */ new Date()).getFullYear();
257
+ const tlResolveYear = (tok) => {
258
+ if (tok.year != null) return toInternal(tok, tok.year);
259
+ if (tlBaseYear == null && tlNoCurrentYear) return null;
260
+ return toInternal(tok, tlBaseYear ?? tlCurrentYear);
261
+ };
262
+ const TL_TRAILING_COLOR = /\s+(red|orange|yellow|green|blue|purple|teal|cyan|gray|black|white)\s*$/;
263
+ const splitTrailingColor = (s) => {
264
+ const m = s.match(TL_TRAILING_COLOR);
265
+ return m ? { label: s.slice(0, m.index).trim(), color: m[1].toLowerCase() } : { label: s.trim(), color: null };
266
+ };
267
+ const tlLeadingDate = (s) => {
268
+ const res = parseDateToken(s, { dateOrder: tlDateOrder });
269
+ if (!res || res.consumed === 0 || res.token.invalidTime) return null;
270
+ const iso = tlResolveYear(res.token);
271
+ return iso == null ? null : { iso, rest: s.slice(res.consumed) };
272
+ };
273
+ const tlLeadingRange = (s) => {
274
+ const a = tlLeadingDate(s);
275
+ if (!a) return null;
276
+ const arrow = a.rest.match(/^\s*(?:->|–>)\s*/);
277
+ if (!arrow) return null;
278
+ const b = tlLeadingDate(a.rest.slice(arrow[0].length));
279
+ if (!b) return null;
280
+ return { start: a.iso, end: b.iso, rest: b.rest };
281
+ };
215
282
  const freeformLines = [];
216
283
  let currentArcGroup = null;
217
284
  let currentTimelineGroup = null;
@@ -253,6 +320,9 @@ function parseVisualizationFull(content, palette) {
253
320
  }
254
321
  }
255
322
  if (result.type === "timeline" && indent === 0) {
323
+ if (isTlDateDirective(line.toLowerCase())) {
324
+ continue;
325
+ }
256
326
  const tagBlockMatch = matchTagBlockHeading(line);
257
327
  if (tagBlockMatch) {
258
328
  const newGroup = {
@@ -449,18 +519,15 @@ function parseVisualizationFull(content, palette) {
449
519
  inTimelineEraBlock = false;
450
520
  } else {
451
521
  if (line.startsWith("//")) continue;
452
- const eraEntryMatch = line.match(
453
- /^(\d{4}(?:-\d{2})?(?:-\d{2}(?: \d{2}:\d{2})?)?)\s*(?:->|\u2013>)\s*(\d{4}(?:-\d{2})?(?:-\d{2}(?: \d{2}:\d{2})?)?)\s+(.+?)(?:\s+(red|orange|yellow|green|blue|purple|teal|cyan|gray|black|white))?\s*$/
454
- );
455
- if (eraEntryMatch) {
456
- const colorAnnotation = eraEntryMatch[4]?.trim() || null;
522
+ const eraRange = tlLeadingRange(line);
523
+ const eraParsed = eraRange && splitTrailingColor(eraRange.rest);
524
+ if (eraRange && eraParsed && eraParsed.label) {
457
525
  result.timelineEras.push({
458
- // Capture groups 1-3 guaranteed by the regex match.
459
- startDate: eraEntryMatch[1],
460
- endDate: eraEntryMatch[2],
461
- label: eraEntryMatch[3].trim(),
462
- color: colorAnnotation ? resolveColorWithDiagnostic(
463
- colorAnnotation,
526
+ startDate: eraRange.start,
527
+ endDate: eraRange.end,
528
+ label: eraParsed.label,
529
+ color: eraParsed.color ? resolveColorWithDiagnostic(
530
+ eraParsed.color,
464
531
  lineNumber,
465
532
  result.diagnostics,
466
533
  palette
@@ -481,17 +548,14 @@ function parseVisualizationFull(content, palette) {
481
548
  inTimelineMarkerBlock = false;
482
549
  } else {
483
550
  if (line.startsWith("//")) continue;
484
- const markerEntryMatch = line.match(
485
- /^(\d{4}(?:-\d{2})?(?:-\d{2}(?: \d{2}:\d{2})?)?)\s+(.+?)(?:\s+(red|orange|yellow|green|blue|purple|teal|cyan|gray|black|white))?\s*$/
486
- );
487
- if (markerEntryMatch) {
488
- const colorAnnotation = markerEntryMatch[3]?.trim() || null;
551
+ const markerLd = tlLeadingDate(line);
552
+ const markerParsed = markerLd && splitTrailingColor(markerLd.rest);
553
+ if (markerLd && markerParsed && markerParsed.label) {
489
554
  result.timelineMarkers.push({
490
- // Capture groups 1-2 guaranteed by the regex match.
491
- date: markerEntryMatch[1],
492
- label: markerEntryMatch[2].trim(),
493
- color: colorAnnotation ? resolveColorWithDiagnostic(
494
- colorAnnotation,
555
+ date: markerLd.iso,
556
+ label: markerParsed.label,
557
+ color: markerParsed.color ? resolveColorWithDiagnostic(
558
+ markerParsed.color,
495
559
  lineNumber,
496
560
  result.diagnostics,
497
561
  palette
@@ -518,18 +582,16 @@ function parseVisualizationFull(content, palette) {
518
582
  timelineMarkerBlockIndent = indent;
519
583
  continue;
520
584
  }
521
- const eraMatch = line.match(
522
- /^era\s+(\d{4}(?:-\d{2})?(?:-\d{2}(?: \d{2}:\d{2})?)?)\s*(?:->|\u2013>)\s*(\d{4}(?:-\d{2})?(?:-\d{2}(?: \d{2}:\d{2})?)?)\s+(.+?)(?:\s+(red|orange|yellow|green|blue|purple|teal|cyan|gray|black|white))?\s*$/
523
- );
524
- if (eraMatch) {
525
- const colorAnnotation = eraMatch[4]?.trim() || null;
585
+ const eraInline = line.match(/^era\s+(.+)$/i);
586
+ const eraInlineRange = eraInline && tlLeadingRange(eraInline[1]);
587
+ const eraInlineParsed = eraInlineRange && splitTrailingColor(eraInlineRange.rest);
588
+ if (eraInlineRange && eraInlineParsed && eraInlineParsed.label) {
526
589
  result.timelineEras.push({
527
- // Capture groups 1-3 guaranteed by the regex match.
528
- startDate: eraMatch[1],
529
- endDate: eraMatch[2],
530
- label: eraMatch[3].trim(),
531
- color: colorAnnotation ? resolveColorWithDiagnostic(
532
- colorAnnotation,
590
+ startDate: eraInlineRange.start,
591
+ endDate: eraInlineRange.end,
592
+ label: eraInlineParsed.label,
593
+ color: eraInlineParsed.color ? resolveColorWithDiagnostic(
594
+ eraInlineParsed.color,
533
595
  lineNumber,
534
596
  result.diagnostics,
535
597
  palette
@@ -538,17 +600,15 @@ function parseVisualizationFull(content, palette) {
538
600
  });
539
601
  continue;
540
602
  }
541
- const markerMatch = line.match(
542
- /^marker\s+(\d{4}(?:-\d{2})?(?:-\d{2}(?: \d{2}:\d{2})?)?)\s+(.+?)(?:\s+(red|orange|yellow|green|blue|purple|teal|cyan|gray|black|white))?\s*$/
543
- );
544
- if (markerMatch) {
545
- const colorAnnotation = markerMatch[3]?.trim() || null;
603
+ const markerInline = line.match(/^marker\s+(.+)$/i);
604
+ const markerInlineLd = markerInline && tlLeadingDate(markerInline[1]);
605
+ const markerInlineParsed = markerInlineLd && splitTrailingColor(markerInlineLd.rest);
606
+ if (markerInlineLd && markerInlineParsed && markerInlineParsed.label) {
546
607
  result.timelineMarkers.push({
547
- // Capture groups 1-2 guaranteed by the regex match.
548
- date: markerMatch[1],
549
- label: markerMatch[2].trim(),
550
- color: colorAnnotation ? resolveColorWithDiagnostic(
551
- colorAnnotation,
608
+ date: markerInlineLd.iso,
609
+ label: markerInlineParsed.label,
610
+ color: markerInlineParsed.color ? resolveColorWithDiagnostic(
611
+ markerInlineParsed.color,
552
612
  lineNumber,
553
613
  result.diagnostics,
554
614
  palette
@@ -604,7 +664,8 @@ function parseVisualizationFull(content, palette) {
604
664
  currentTimelineGroup,
605
665
  currentTimelineGroupMeta,
606
666
  timelineAliasMap,
607
- tlRegistry
667
+ tlRegistry,
668
+ tlDateCtx
608
669
  );
609
670
  if (eventResult) {
610
671
  result.diagnostics.push(...eventResult.diagnostics);
@@ -2162,4 +2223,4 @@ export {
2162
2223
  knownChartTypeIds,
2163
2224
  parseDgmo
2164
2225
  };
2165
- //# sourceMappingURL=chunk-KQ57MHRO.js.map
2226
+ //# sourceMappingURL=chunk-KJGG2JKQ.js.map
@@ -40,7 +40,13 @@ var MAP_REGISTRY = staticRegistry([
40
40
  "size",
41
41
  "width",
42
42
  "label",
43
- "style"
43
+ "style",
44
+ // `clock` (BL-122): the time-card control. Bare (`poi Denver clock`) → a card
45
+ // with the zone auto-derived from the place; valued (`clock: Europe/Oslo`) →
46
+ // that IANA id or fixed offset (`clock: UTC+9`) as the zone, for bare-coord
47
+ // pins or to override a city. Reserved so the valued form peels off the POI
48
+ // name cleanly; the BARE flag is peeled separately in handlePoi (no colon).
49
+ "clock"
44
50
  // `surface:` was removed in the 2026-06-02 defaults-on review — it is no longer
45
51
  // a recognized metadata key (the route/edge surface feature was cut; §24B.7).
46
52
  // A stray `surface: water` is no longer captured as a reserved key.
@@ -675,4 +681,4 @@ export {
675
681
  splitNameAndMeta,
676
682
  warnUnknownMetaKeys
677
683
  };
678
- //# sourceMappingURL=chunk-OTAL43EH.js.map
684
+ //# sourceMappingURL=chunk-LV4BETUU.js.map
@@ -2,7 +2,7 @@ import {
2
2
  INFRA_BEHAVIOR_KEY_SET,
3
3
  INFRA_EDGE_ONLY_KEY_SET,
4
4
  INFRA_TOP_LEVEL_OPTION_SET
5
- } from "./chunk-U2HGPLZS.js";
5
+ } from "./chunk-6H7O2OPM.js";
6
6
  import {
7
7
  tryStripDescriptionKeyword
8
8
  } from "./chunk-IYULMRBE.js";
@@ -11,7 +11,7 @@ import {
11
11
  stripDefaultModifier,
12
12
  tagAttrKey,
13
13
  validateTagGroupNames
14
- } from "./chunk-FJUNPCYI.js";
14
+ } from "./chunk-467TVMQL.js";
15
15
  import {
16
16
  GRAPH_DX
17
17
  } from "./chunk-I46X5VUA.js";
@@ -30,7 +30,7 @@ import {
30
30
  tryParseSharedOption,
31
31
  warnUnknownMetaKeys,
32
32
  withTagAliases
33
- } from "./chunk-OTAL43EH.js";
33
+ } from "./chunk-LV4BETUU.js";
34
34
  import {
35
35
  isRecognizedColorName
36
36
  } from "./chunk-TLVIHFRO.js";
@@ -890,4 +890,4 @@ export {
890
890
  parseInfra,
891
891
  extractSymbols
892
892
  };
893
- //# sourceMappingURL=chunk-VUJGMJE6.js.map
893
+ //# sourceMappingURL=chunk-MVN25IF6.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  acyclicOrient
3
- } from "./chunk-C4GQDB5L.js";
3
+ } from "./chunk-WRNFDFPU.js";
4
4
 
5
5
  // src/swimlane/layout.ts
6
6
  var MARGIN = 30;
@@ -419,4 +419,4 @@ function layoutSwimlane(parsed) {
419
419
  export {
420
420
  layoutSwimlane
421
421
  };
422
- //# sourceMappingURL=chunk-CLD2OKV7.js.map
422
+ //# sourceMappingURL=chunk-MX2EY5Y7.js.map
@@ -8,14 +8,17 @@ import {
8
8
  import {
9
9
  DAY_MS,
10
10
  applyOrdinalTemplate,
11
+ dayStart,
11
12
  formatCompound,
12
13
  formatCount,
13
14
  formatDateShort,
14
15
  formatFooter,
15
16
  formatHuman,
16
17
  formatWordsDetail,
17
- ordinalFor
18
- } from "./chunk-YNRDWYZP.js";
18
+ ordinalFor,
19
+ sameDay,
20
+ splitClockSeconds
21
+ } from "./chunk-OQKP2X3D.js";
19
22
  import {
20
23
  FONT_FAMILY
21
24
  } from "./chunk-6KFWC4CO.js";
@@ -33,23 +36,24 @@ import * as d3Selection from "d3-selection";
33
36
  function bakedHero(parsed, now) {
34
37
  const resolved = parsed.resolvedMs;
35
38
  if (resolved === null) return "\u2014";
39
+ const tz = parsed.tz;
36
40
  const remaining = resolved - now;
37
41
  if (!parsed.rule && remaining <= 0) {
38
42
  if (parsed.expired !== null) return parsed.expired;
39
43
  const elapsed = -remaining;
40
44
  if (elapsed <= 0) return "Now!";
41
45
  if (parsed.units === "compound" || parsed.units === "human")
42
- return `${formatCompound(resolved, now)} ago`;
46
+ return `${formatCompound(resolved, now, 2, tz)} ago`;
43
47
  const bu = parsed.units === "full" || parsed.units === "clock" ? "days" : parsed.units;
44
48
  return `${formatCount(elapsed, { units: bu, round: parsed.round, fields: parsed.fields })} ago`;
45
49
  }
46
- if (parsed.rule && sameLocalDay(resolved, now))
50
+ if (parsed.rule && sameDay(resolved, now, tz))
47
51
  return parsed.onDay ?? "Today!";
48
52
  if (parsed.units === "human") {
49
- const [hn, ht] = parsed.hasTime ? [now, resolved] : [DAY_START(now), DAY_START(resolved)];
50
- return formatHuman(hn, ht).big;
53
+ const [hn, ht] = parsed.hasTime ? [now, resolved] : [dayStart(now, tz), dayStart(resolved, tz)];
54
+ return formatHuman(hn, ht, tz).big;
51
55
  }
52
- if (parsed.units === "compound") return formatCompound(now, resolved);
56
+ if (parsed.units === "compound") return formatCompound(now, resolved, 2, tz);
53
57
  const bakeUnits = parsed.units === "full" || parsed.units === "clock" ? "days" : parsed.units;
54
58
  return formatCount(Math.max(0, remaining), {
55
59
  units: bakeUnits,
@@ -57,11 +61,6 @@ function bakedHero(parsed, now) {
57
61
  fields: parsed.fields
58
62
  });
59
63
  }
60
- function sameLocalDay(a, b) {
61
- const x = new Date(a);
62
- const y = new Date(b);
63
- return x.getFullYear() === y.getFullYear() && x.getMonth() === y.getMonth() && x.getDate() === y.getDate();
64
- }
65
64
  function stampRecur(sel, parsed) {
66
65
  const r = parsed.rule;
67
66
  if (!r) return;
@@ -78,6 +77,7 @@ function stampRecur(sel, parsed) {
78
77
  if (r.intervalUnit !== void 0)
79
78
  sel.attr("data-dgmo-recur-interval-unit", r.intervalUnit);
80
79
  if (r.anchorMs !== void 0) sel.attr("data-dgmo-recur-anchor", r.anchorMs);
80
+ if (r.tz !== void 0) sel.attr("data-dgmo-recur-tz", r.tz);
81
81
  }
82
82
  var MON_ABBR = [
83
83
  "Jan",
@@ -150,7 +150,7 @@ function aLine(svg, x1, y1, x2, y2, stroke, sw, opacity) {
150
150
  const l = svg.append("line").attr("x1", x1).attr("y1", y1).attr("x2", x2).attr("y2", y2).attr("stroke", stroke).attr("stroke-width", sw);
151
151
  if (opacity != null) l.attr("opacity", opacity);
152
152
  }
153
- var REPEAT_ICON_PATH = "m17 2 4 4-4 4 M3 11v-1a4 4 0 0 1 4-4h14 m7 22-4-4 4-4 M21 13v1a4 4 0 0 1-4 4H3";
153
+ var REPEAT_ICON_PATH = "m17 2 4 4-4 4 M3 11v-1a4 4 0 0 1 4-4h14 M7 22l-4-4 4-4 M21 13v1a4 4 0 0 1-4 4H3";
154
154
  function recurGlyph(svg, cx, cy, r, color) {
155
155
  const side = r * 2.4;
156
156
  const scale = side / 24;
@@ -162,7 +162,7 @@ function recurGlyph(svg, cx, cy, r, color) {
162
162
  }
163
163
  function haloRect(svg, x, y, w, h, rx, C) {
164
164
  aRect(svg, x - 1, y - 1, w + 2, h + 2, rx + 1, "none", C.bg, 2);
165
- aRect(svg, x - 3, y - 3, w + 6, h + 6, rx + 3, "none", C.event, 2);
165
+ svg.append("rect").attr("class", "dgmo-countdown-target-ring").attr("x", x - 3).attr("y", y - 3).attr("width", w + 6).attr("height", h + 6).attr("rx", rx + 3).attr("fill", "none").attr("stroke", C.event).attr("stroke-width", 2);
166
166
  }
167
167
  function pickBand(nowMs, resolvedMs, hasTime) {
168
168
  const days = dayDelta(nowMs, resolvedMs);
@@ -826,6 +826,13 @@ function vizClock(svg, g, nowMs, targetMs, C) {
826
826
  function pad2(n) {
827
827
  return n < 10 ? "0" + n : String(n);
828
828
  }
829
+ function paintClock(sel, str, secSize, secFill) {
830
+ const { lead, sec } = splitClockSeconds(str);
831
+ sel.attr("font-variant-numeric", "tabular-nums").attr("data-dgmo-cd-clock", "").attr("data-dgmo-cd-sec-size", secSize).attr("data-dgmo-cd-sec-fill", secFill).text(null);
832
+ sel.append("tspan").attr("data-cd-lead", "").text(lead);
833
+ if (sec !== null)
834
+ sel.append("tspan").attr("data-cd-sec", "").attr("font-size", secSize).attr("fill", secFill).attr("font-weight", 700).text(sec);
835
+ }
829
836
  function drawBand(svg, kind, g, nowMs, resolvedMs, C) {
830
837
  switch (kind) {
831
838
  case "years":
@@ -874,6 +881,18 @@ function renderCountdown(container, parsed, palette, isDark, exportDims) {
874
881
  const banked = resolveColor("green", palette) ?? muted;
875
882
  const faint = mix(palette.text, themeBaseBg(palette, isDark), 72);
876
883
  const svg = d3Selection.select(container).append("svg").attr("width", width).attr("preserveAspectRatio", "xMidYMid meet").attr("xmlns", "http://www.w3.org/2000/svg").attr("role", "img").attr("aria-label", `${parsed.title ?? "Countdown"}: ${hero}`).style("font-family", FONT_FAMILY);
884
+ svg.append("style").text(`
885
+ @keyframes dgmo-countdown-flash {
886
+ 0%, 100% { opacity: 1; stroke-width: 2; }
887
+ 50% { opacity: 0.45; stroke-width: 3; }
888
+ }
889
+ .dgmo-countdown-target-ring {
890
+ animation: dgmo-countdown-flash 1.8s ease-in-out infinite;
891
+ }
892
+ @media (prefers-reduced-motion: reduce) {
893
+ .dgmo-countdown-target-ring { animation: none; }
894
+ }
895
+ `);
877
896
  const bgRect = svg.append("rect").attr("width", width).attr("fill", palette.bg);
878
897
  const estWidth = (t, fs) => t.length * fs * 0.58;
879
898
  const fitFont = (t, base, maxW, min) => {
@@ -893,10 +912,12 @@ function renderCountdown(container, parsed, palette, isDark, exportDims) {
893
912
  fields: parsed.fields
894
913
  }) : hero;
895
914
  const heroMaxW = contentW * 0.44;
896
- const heroFont = fitFont(heroSizeStr, 96, heroMaxW, 26);
897
- const heroW = Math.min(heroMaxW, estWidth(heroSizeStr, heroFont));
915
+ const sizeStr = estWidth(hero, 1) > estWidth(heroSizeStr, 1) ? hero : heroSizeStr;
898
916
  const gapMid = Math.max(28, Math.round(width * 0.03));
899
- const leftW = Math.max(contentW * 0.42, contentW - heroW - gapMid);
917
+ const stacked = estWidth(sizeStr, 26) > heroMaxW;
918
+ const heroFont = fitFont(sizeStr, 96, stacked ? contentW : heroMaxW, 26);
919
+ const heroW = stacked ? contentW : Math.min(heroMaxW, estWidth(sizeStr, heroFont));
920
+ const leftW = stacked ? contentW : Math.max(contentW * 0.42, contentW - heroW - gapMid);
900
921
  const titleBase = 40;
901
922
  let titleFont = 0;
902
923
  let titleLines = [];
@@ -908,7 +929,7 @@ function renderCountdown(container, parsed, palette, isDark, exportDims) {
908
929
  }
909
930
  const eyebrowText = ordinal !== null ? applyOrdinalTemplate(parsed.sinceLabel ?? `Nth ${label}`, ordinal) : null;
910
931
  const eyebrowFont = 16;
911
- const footerText = resolved !== null ? formatFooter(resolved, parsed.hasTime) : null;
932
+ const footerText = resolved !== null ? formatFooter(resolved, parsed.hasTime, parsed.tz) : null;
912
933
  const footerFont = 17;
913
934
  const noteFont = 19;
914
935
  const asofFont = 13;
@@ -926,7 +947,7 @@ function renderCountdown(container, parsed, palette, isDark, exportDims) {
926
947
  });
927
948
  y += Math.round(titleFont * 0.45);
928
949
  const heroLeft = width - padX - heroW;
929
- const ruleRight = Math.max(leftX + 40, heroLeft - 20);
950
+ const ruleRight = stacked ? width - padX : Math.max(leftX + 40, heroLeft - 20);
930
951
  svg.append("line").attr("x1", leftX).attr("x2", ruleRight).attr("y1", y).attr("y2", y).attr("stroke", mix(palette.text, palette.bg, 14)).attr("stroke-width", 1.25);
931
952
  y += Math.round(titleFont * 0.5);
932
953
  }
@@ -974,8 +995,12 @@ function renderCountdown(container, parsed, palette, isDark, exportDims) {
974
995
  units: "clock",
975
996
  round: parsed.round,
976
997
  fields: parsed.fields
977
- }) : formatHuman(DAY_START(now), DAY_START(resolved)).sub || null : null;
978
- const heroCapTop = padY + 0.28 * titleFont;
998
+ }) : formatHuman(
999
+ dayStart(now, parsed.tz),
1000
+ dayStart(resolved, parsed.tz),
1001
+ parsed.tz
1002
+ ).sub || null : null;
1003
+ const heroCapTop = stacked ? leftBottom + Math.round(heroFont * 0.2) : padY + 0.28 * titleFont;
979
1004
  const heroBaseline = heroCapTop + 0.72 * heroFont;
980
1005
  const heroBlockBottom = heroBaseline + (subText ? heroFont * 0.28 + detailFont : 0);
981
1006
  const contentBottom = Math.max(leftBottom, heroBlockBottom);
@@ -990,6 +1015,7 @@ function renderCountdown(container, parsed, palette, isDark, exportDims) {
990
1015
  );
991
1016
  svg.attr("height", bannerH).attr("viewBox", `0 0 ${width} ${bannerH}`);
992
1017
  bgRect.attr("height", bannerH);
1018
+ const bandC = bandColors(palette, accent, muted, faint);
993
1019
  if (hasBand && resolved !== null) {
994
1020
  drawBand(
995
1021
  svg,
@@ -997,10 +1023,11 @@ function renderCountdown(container, parsed, palette, isDark, exportDims) {
997
1023
  { left: leftX, top: bandTop, contentW: width - 2 * padX, height: BAND_H },
998
1024
  now,
999
1025
  resolved,
1000
- bandColors(palette, accent, muted, faint)
1026
+ bandC
1001
1027
  );
1002
1028
  }
1003
- const value = svg.append("text").attr("class", "countdown-value").attr("x", width - padX).attr("y", heroBaseline).attr("text-anchor", "end").attr("dominant-baseline", "alphabetic").attr("fill", accent).attr("font-family", FONT_FAMILY).attr("font-size", heroFont).attr("font-weight", 800).attr("data-dgmo-countdown-units", parsed.units).attr("data-dgmo-countdown-round", parsed.round).attr("data-dgmo-countdown-fields", parsed.fields.join(",")).attr("data-dgmo-countdown-expired", parsed.expired).attr("aria-label", `${parsed.title ?? "Countdown"}: ${hero}`).text(hero);
1029
+ const value = svg.append("text").attr("class", "countdown-value").attr("x", stacked ? leftX : width - padX).attr("y", heroBaseline).attr("text-anchor", stacked ? "start" : "end").attr("dominant-baseline", "alphabetic").attr("fill", accent).attr("font-family", FONT_FAMILY).attr("font-size", heroFont).attr("font-weight", 800).attr("data-dgmo-countdown-units", parsed.units).attr("data-dgmo-countdown-round", parsed.round).attr("data-dgmo-countdown-fields", parsed.fields.join(",")).attr("data-dgmo-countdown-expired", parsed.expired).attr("aria-label", `${parsed.title ?? "Countdown"}: ${hero}`);
1030
+ paintClock(value, hero, Math.round(heroFont * 0.55), bandC.now);
1004
1031
  if (parsed.rule && resolved !== null) {
1005
1032
  value.attr("data-dgmo-countdown", new Date(resolved).toISOString());
1006
1033
  } else if (parsed.target) {
@@ -1009,6 +1036,7 @@ function renderCountdown(container, parsed, palette, isDark, exportDims) {
1009
1036
  if (parsed.title) value.attr("data-dgmo-countdown-title", parsed.title);
1010
1037
  if (parsed.onDay) value.attr("data-dgmo-countdown-onday", parsed.onDay);
1011
1038
  if (parsed.hasTime) value.attr("data-dgmo-countdown-hastime", "1");
1039
+ if (parsed.tz) value.attr("data-dgmo-countdown-tz", parsed.tz);
1012
1040
  if (parsed.since !== null) {
1013
1041
  value.attr("data-dgmo-countdown-since", parsed.since);
1014
1042
  value.attr(
@@ -1018,7 +1046,13 @@ function renderCountdown(container, parsed, palette, isDark, exportDims) {
1018
1046
  }
1019
1047
  stampRecur(value, parsed);
1020
1048
  if (subText) {
1021
- svg.append("text").attr("x", width - padX).attr("y", heroBaseline + heroFont * 0.28 + detailFont).attr("text-anchor", "end").attr("dominant-baseline", "alphabetic").attr("fill", muted).attr("font-family", FONT_FAMILY).attr("font-size", detailFont).attr("font-weight", 500).attr("data-dgmo-countdown-detail", "").text(subText);
1049
+ const detailSel = svg.append("text").attr("x", stacked ? leftX : width - padX).attr("y", heroBaseline + heroFont * 0.28 + detailFont).attr("text-anchor", stacked ? "start" : "end").attr("dominant-baseline", "alphabetic").attr("fill", muted).attr("font-family", FONT_FAMILY).attr("font-size", detailFont).attr("font-weight", 500).attr("data-dgmo-countdown-detail", "");
1050
+ paintClock(
1051
+ detailSel,
1052
+ subText,
1053
+ Math.round(detailFont * 0.66),
1054
+ bandC.now
1055
+ );
1022
1056
  }
1023
1057
  }
1024
1058
  function renderCountdownForExport(container, parsed, palette, isDark, exportDims) {
@@ -1029,4 +1063,4 @@ export {
1029
1063
  renderCountdown,
1030
1064
  renderCountdownForExport
1031
1065
  };
1032
- //# sourceMappingURL=chunk-T5SHNNGP.js.map
1066
+ //# sourceMappingURL=chunk-ND76YJCN.js.map