@diagrammo/dgmo 0.48.2 → 0.50.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 (244) hide show
  1. package/.cursorrules +12 -3
  2. package/.github/copilot-instructions.md +12 -3
  3. package/.windsurfrules +12 -3
  4. package/SKILL.md +12 -3
  5. package/dist/advanced.d.ts +851 -1
  6. package/dist/advanced.js +601 -177
  7. package/dist/auto.css +63 -0
  8. package/dist/auto.js +220 -110
  9. package/dist/auto.mjs +45920 -33167
  10. package/dist/block.css +63 -0
  11. package/dist/block.d.ts +13 -5
  12. package/dist/block.js +239 -62
  13. package/dist/{charts-d3-QOZHKTCT.js → charts-d3-DKUD7MQE.js} +9 -8
  14. package/dist/{chunk-3MQQNXPD.js → chunk-2C56LEML.js} +3 -3
  15. package/dist/{chunk-L66GEFB6.js → chunk-2JJ2KNPI.js} +4 -4
  16. package/dist/{chunk-6SM5NJQH.js → chunk-2QYTMIRR.js} +4 -4
  17. package/dist/{chunk-RJE5JTVK.js → chunk-3G6TMNVF.js} +7 -7
  18. package/dist/{chunk-MO5YHHMQ.js → chunk-3LKM6FMW.js} +2 -2
  19. package/dist/{chunk-76OWZ3BA.js → chunk-3P2DKJCG.js} +2 -2
  20. package/dist/chunk-3TDRHT4J.js +1043 -0
  21. package/dist/chunk-3XPUDB7B.js +420 -0
  22. package/dist/{chunk-2LACINWN.js → chunk-3ZPC476N.js} +7 -7
  23. package/dist/{chunk-G2H74XJZ.js → chunk-4BMJQFNK.js} +8 -8
  24. package/dist/{chunk-THXCFRTU.js → chunk-4S723I74.js} +9 -9
  25. package/dist/{chunk-6NYWYNBI.js → chunk-4XK3FLFB.js} +3 -3
  26. package/dist/chunk-5JSWBPZZ.js +607 -0
  27. package/dist/{chunk-WCT3NYCV.js → chunk-5LWQH6QV.js} +1 -1
  28. package/dist/{chunk-7DTWEFUE.js → chunk-5Z736BSU.js} +8 -8
  29. package/dist/{chunk-ERLBPDGU.js → chunk-6BFZKBGD.js} +2 -2
  30. package/dist/{chunk-6HO5ZTXK.js → chunk-6IAA2QQ2.js} +2 -2
  31. package/dist/{chunk-H6PI3KJT.js → chunk-6IUAK7RZ.js} +2 -2
  32. package/dist/{chunk-RTLBSQ3G.js → chunk-6M5PJFQG.js} +3 -3
  33. package/dist/{chunk-Z5CGSFJB.js → chunk-6X4AKWLF.js} +4 -4
  34. package/dist/{chunk-OJR3MQYV.js → chunk-6ZT4U37Q.js} +291 -52
  35. package/dist/{chunk-5QXL4NYS.js → chunk-7G2ER4CY.js} +10 -5
  36. package/dist/chunk-7PQYTZMA.js +681 -0
  37. package/dist/{chunk-OURHMODR.js → chunk-7RB5Q6MB.js} +11 -11
  38. package/dist/{chunk-YAA6IID3.js → chunk-7UEMZREK.js} +2 -2
  39. package/dist/{chunk-AN2MOO5T.js → chunk-A3WQVFBS.js} +3 -3
  40. package/dist/{chunk-VOKGH627.js → chunk-AHGF2YYA.js} +13 -3
  41. package/dist/{chunk-CI2G3OEB.js → chunk-ASS5YYIZ.js} +12 -12
  42. package/dist/{chunk-TYS6CSS5.js → chunk-BCYVE3N5.js} +2 -2
  43. package/dist/chunk-BDXC7MDK.js +2395 -0
  44. package/dist/chunk-BTUTZMPT.js +482 -0
  45. package/dist/{chunk-YGJTDXVR.js → chunk-C4GQDB5L.js} +2 -2
  46. package/dist/{chunk-Y2ZE3MSG.js → chunk-C63UWAKM.js} +2 -2
  47. package/dist/{chunk-725LDASD.js → chunk-CLD2OKV7.js} +2 -2
  48. package/dist/{chunk-WBRZJOEC.js → chunk-CMCR5WBW.js} +3 -3
  49. package/dist/{chunk-IZMRON6C.js → chunk-CVV36CWI.js} +2 -2
  50. package/dist/chunk-DMJJ3CEQ.js +254 -0
  51. package/dist/{chunk-MZSBFAPJ.js → chunk-EJTKV7CY.js} +9 -9
  52. package/dist/{chunk-FITOLXSX.js → chunk-EOFPYPAU.js} +26 -2
  53. package/dist/{chunk-X5LCYCL5.js → chunk-ER5SCQWQ.js} +5 -5
  54. package/dist/{chunk-4OHACBGX.js → chunk-F2L5GCQ4.js} +2 -2
  55. package/dist/{chunk-FCIIHT24.js → chunk-F5UDBSJY.js} +7 -7
  56. package/dist/{chunk-3JLKYGBQ.js → chunk-F7BFXWNQ.js} +2 -2
  57. package/dist/{chunk-FANX6UJR.js → chunk-FAL7NOK3.js} +11 -11
  58. package/dist/{chunk-BUPDIHML.js → chunk-FB2WHOEQ.js} +4 -4
  59. package/dist/chunk-FL4IOQ37.js +379 -0
  60. package/dist/{chunk-LIOHW36Z.js → chunk-GBE54KY6.js} +6 -5
  61. package/dist/{chunk-RUNNI6VE.js → chunk-GL5UZ6NY.js} +3 -3
  62. package/dist/{chunk-4GRI7MEB.js → chunk-GPWHQ5FJ.js} +6 -6
  63. package/dist/chunk-GROQGHCT.js +960 -0
  64. package/dist/{chunk-SGZYXELT.js → chunk-H73FP42Q.js} +9 -6
  65. package/dist/{chunk-PBAHEPLQ.js → chunk-HGN652MU.js} +7 -6
  66. package/dist/{chunk-3SMGIJDD.js → chunk-HHXOONLX.js} +13 -1
  67. package/dist/{chunk-QOOUC2J5.js → chunk-HQCHYB5F.js} +2 -2
  68. package/dist/{chunk-AELOBFW5.js → chunk-I4IFRCUB.js} +3 -3
  69. package/dist/{chunk-GMR5MFHJ.js → chunk-I7F2A35O.js} +2 -2
  70. package/dist/{chunk-T2OE3YQB.js → chunk-IA3FJYWR.js} +3 -3
  71. package/dist/chunk-IAEC4KLA.js +492 -0
  72. package/dist/chunk-IVKC4GID.js +32 -0
  73. package/dist/{chunk-HSH73DP6.js → chunk-JFYIP7XU.js} +139 -39
  74. package/dist/{chunk-CKNVO24D.js → chunk-JZNMXEIV.js} +2 -2
  75. package/dist/chunk-KJXIHOVL.js +940 -0
  76. package/dist/chunk-L2ZTFHAY.js +331 -0
  77. package/dist/{chunk-B7JUCQUA.js → chunk-M5RXSRO2.js} +4 -4
  78. package/dist/{chunk-ULOEATBZ.js → chunk-NFFIKVNO.js} +106 -29
  79. package/dist/{chunk-PZMETGLY.js → chunk-NISQC5KW.js} +358 -122
  80. package/dist/chunk-O4VUFXIH.js +574 -0
  81. package/dist/{chunk-RVMRZAPB.js → chunk-O76UD6VJ.js} +3 -3
  82. package/dist/{chunk-JM4LEPY3.js → chunk-O7NUCTFU.js} +2 -2
  83. package/dist/{chunk-JED6ZDEE.js → chunk-O7WP4ZD4.js} +2 -2
  84. package/dist/{chunk-EVCVDTXE.js → chunk-OHQEMBLI.js} +3 -3
  85. package/dist/{chunk-ZBWMSD5N.js → chunk-ONA5KPV3.js} +4 -4
  86. package/dist/{chunk-Y3J7VR52.js → chunk-OTAL43EH.js} +34 -2
  87. package/dist/{chunk-WCSOJFU3.js → chunk-OTP5KVLO.js} +3 -3
  88. package/dist/{chunk-RYEGFMUO.js → chunk-PGEGPSCZ.js} +2 -2
  89. package/dist/{chunk-ZO27FGJS.js → chunk-PH5X4GIP.js} +2 -2
  90. package/dist/{chunk-ZJEL4H2R.js → chunk-PJUGRJHJ.js} +9 -9
  91. package/dist/{chunk-ZGR7ULFJ.js → chunk-PLZI6KPM.js} +26 -14
  92. package/dist/{chunk-3R5POCTZ.js → chunk-PMN3Q7RJ.js} +6 -6
  93. package/dist/{chunk-YGJZWZTY.js → chunk-PZFVK3IH.js} +2 -2
  94. package/dist/chunk-Q4V4XQWV.js +158 -0
  95. package/dist/chunk-QDFNCATJ.js +325 -0
  96. package/dist/{chunk-QEBUY5NY.js → chunk-QFQ35BTO.js} +4 -4
  97. package/dist/chunk-QQJUTGQH.js +135 -0
  98. package/dist/{chunk-PWIHZ6NJ.js → chunk-QUJGFNFN.js} +4 -4
  99. package/dist/{chunk-J5FIXQRT.js → chunk-R56LASIN.js} +4 -4
  100. package/dist/{chunk-SRTU6HMQ.js → chunk-RV26LTUU.js} +8 -8
  101. package/dist/chunk-RV6A2B5S.js +354 -0
  102. package/dist/{chunk-EB6FPQUP.js → chunk-S5GRONXL.js} +3 -3
  103. package/dist/{chunk-5MLYVTYM.js → chunk-SCHXJTZL.js} +2 -2
  104. package/dist/{chunk-T3UBLACL.js → chunk-SCQ5VPUF.js} +19 -5
  105. package/dist/{chunk-PBHE5UG6.js → chunk-SGFZZAUO.js} +46 -12
  106. package/dist/{chunk-BUVJFRPY.js → chunk-SU2VBK4L.js} +4 -4
  107. package/dist/{chunk-SML67VPV.js → chunk-T4BRO3Z6.js} +3 -3
  108. package/dist/{chunk-NURGB5Z4.js → chunk-TSA237IM.js} +2 -2
  109. package/dist/chunk-TWCLK2GA.js +273 -0
  110. package/dist/{chunk-IJZFN3HM.js → chunk-TWQUYVP3.js} +4 -4
  111. package/dist/{chunk-DKEPS5LH.js → chunk-U2HGPLZS.js} +36 -2
  112. package/dist/{chunk-B65G5DNL.js → chunk-URSQLCTR.js} +3 -3
  113. package/dist/{chunk-ILKORZ3H.js → chunk-UUS2GIJZ.js} +7 -7
  114. package/dist/{chunk-XAKEUMEJ.js → chunk-UXOSVCLJ.js} +4 -4
  115. package/dist/{chunk-QLCCJEJI.js → chunk-WCUHAQKB.js} +2 -2
  116. package/dist/{chunk-WVAJFAIA.js → chunk-WWN566I7.js} +257 -101
  117. package/dist/{chunk-IPWPWM6R.js → chunk-X2NMFTG3.js} +111 -10
  118. package/dist/{chunk-UWN33VNX.js → chunk-XCLHOZAM.js} +10 -10
  119. package/dist/{chunk-P235SVAH.js → chunk-XDXNDSKO.js} +2 -2
  120. package/dist/chunk-XHVV4NVW.js +51 -0
  121. package/dist/{chunk-33LCUH4H.js → chunk-XMVQ5F4M.js} +4 -4
  122. package/dist/{chunk-MITI6NOL.js → chunk-YA7D2N2O.js} +11 -11
  123. package/dist/{chunk-7JEGTRLD.js → chunk-YB3FW24O.js} +3 -3
  124. package/dist/chunk-YNRDWYZP.js +295 -0
  125. package/dist/{chunk-44CM72SQ.js → chunk-YZLMKW4T.js} +3 -3
  126. package/dist/chunk-Z6XJQ6KO.js +452 -0
  127. package/dist/cli.cjs +179 -133
  128. package/dist/clock.d.ts +10 -0
  129. package/dist/clock.js +235 -0
  130. package/dist/countdown.d.ts +12 -0
  131. package/dist/countdown.js +450 -0
  132. package/dist/dgmo-router-QOMFCOOV.js +84 -0
  133. package/dist/dimensions-P5FSX2QN.js +22 -0
  134. package/dist/editor.js +43 -2
  135. package/dist/element.js +220 -110
  136. package/dist/element.mjs +45920 -33167
  137. package/dist/{flowchart-parser-ZNSKIBVR.js → flowchart-parser-OE4WHLTF.js} +4 -4
  138. package/dist/{flowchart-renderer-SNDSII4D.js → flowchart-renderer-GPCSMTOR.js} +8 -8
  139. package/dist/highlight.d.ts +17 -1
  140. package/dist/highlight.js +163 -6
  141. package/dist/index.d.ts +5 -1
  142. package/dist/index.js +199 -233
  143. package/dist/{layout-HRBZPFCN.js → layout-34CLNICW.js} +5 -5
  144. package/dist/layout-46366KBT.js +10 -0
  145. package/dist/{layout-HWDSRX5E.js → layout-5BG6DFCU.js} +6 -6
  146. package/dist/layout-6RDJHS6E.js +9 -0
  147. package/dist/{layout-7QXCNOVS.js → layout-7H4H46CS.js} +3 -3
  148. package/dist/{layout-46N4JJYK.js → layout-7SKMFYHL.js} +5 -5
  149. package/dist/{layout-EE6GE46Y.js → layout-DC4TVXER.js} +5 -5
  150. package/dist/layout-FGQWRYYW.js +14 -0
  151. package/dist/{layout-S2QBYSK2.js → layout-NXG63LWH.js} +3 -3
  152. package/dist/{layout-N76NR4ZO.js → layout-PUQCB6AN.js} +7 -7
  153. package/dist/{layout-HYZPWAK5.js → layout-QNUQLEHU.js} +3 -3
  154. package/dist/{layout-UM5F4DJB.js → layout-T3OZU5QW.js} +5 -5
  155. package/dist/layout-TJIWF7EM.js +14 -0
  156. package/dist/layout-VYELEAW7.js +14 -0
  157. package/dist/{layout-5RA6QWR6.js → layout-WZHNDT2O.js} +6 -6
  158. package/dist/{layout-search-OYV77HHS.js → layout-search-QS44PI5R.js} +6 -6
  159. package/dist/{parser-6BTRLKRZ.js → parser-45DENHFZ.js} +4 -4
  160. package/dist/{parser-TFZFBVWN.js → parser-4AI5ZN5F.js} +3 -3
  161. package/dist/{parser-XDVELHRK.js → parser-4P36TUVD.js} +4 -4
  162. package/dist/{parser-ZSDPZYQP.js → parser-5AURY4A6.js} +4 -4
  163. package/dist/{parser-N5O4IHUN.js → parser-A2BEFMGK.js} +4 -4
  164. package/dist/parser-B5FVS7O6.js +11 -0
  165. package/dist/{parser-NGU3ETO6.js → parser-C2HF2C2E.js} +4 -4
  166. package/dist/parser-CSFUN3CT.js +14 -0
  167. package/dist/{parser-TRTHDFPP.js → parser-D3QT6GWN.js} +5 -5
  168. package/dist/parser-D5637H5H.js +15 -0
  169. package/dist/{parser-VQP2UJ6W.js → parser-DFFEDKHH.js} +3 -3
  170. package/dist/parser-DOKMZXVZ.js +13 -0
  171. package/dist/parser-FMPCVFRK.js +15 -0
  172. package/dist/{parser-Y6WTBU76.js → parser-HYRTF3DO.js} +3 -3
  173. package/dist/{parser-I6KXEYFK.js → parser-I2UIJKVQ.js} +4 -4
  174. package/dist/{parser-O5J4VBII.js → parser-IBWNAPY4.js} +3 -3
  175. package/dist/{parser-PQ3POX45.js → parser-KUQWRPIT.js} +4 -4
  176. package/dist/{parser-2MFP2H2E.js → parser-LWKKBNSA.js} +3 -3
  177. package/dist/{parser-OV7NOBW6.js → parser-O4QFCUW7.js} +5 -5
  178. package/dist/{parser-IXSZZQHY.js → parser-PGMQDD4G.js} +4 -4
  179. package/dist/{parser-3STE62GB.js → parser-Q4QKCIWQ.js} +4 -4
  180. package/dist/parser-QTOB4KFL.js +14 -0
  181. package/dist/{parser-2EWECDSA.js → parser-QYYM4QVW.js} +4 -4
  182. package/dist/{parser-4OGOBJJ4.js → parser-RZMQP7MM.js} +4 -4
  183. package/dist/parser-RZPVAQVX.js +11 -0
  184. package/dist/parser-SOUJOEYI.js +13 -0
  185. package/dist/{parser-4FL2CMDG.js → parser-UQE5OWZI.js} +5 -5
  186. package/dist/{parser-NRAI6O25.js → parser-WAV5JRPT.js} +4 -4
  187. package/dist/{parser-KNSQSKQO.js → parser-YLKYBRIT.js} +5 -5
  188. package/dist/{parser-XKRP7QKP.js → parser-YS7TOS2K.js} +3 -3
  189. package/dist/{parser-AQETEVRW.js → parser-ZSOWUBML.js} +5 -5
  190. package/dist/{parser-CFZD5IBL.js → parser-ZTBATMLX.js} +4 -4
  191. package/dist/{renderer-VACVQYML.js → renderer-35HSIDMZ.js} +8 -8
  192. package/dist/{renderer-5MYBMBYO.js → renderer-4ITCHBT7.js} +5 -5
  193. package/dist/{renderer-CLJHQPBJ.js → renderer-67NPCBIS.js} +11 -11
  194. package/dist/{renderer-5NDVNDAZ.js → renderer-6GHYK7DX.js} +9 -9
  195. package/dist/{renderer-Z7I3W2PP.js → renderer-6RNGHC5Z.js} +8 -8
  196. package/dist/renderer-72LGR2YF.js +14 -0
  197. package/dist/{renderer-KQB7UGDS.js → renderer-7RH2SI3B.js} +3 -3
  198. package/dist/renderer-7SWMIFMM.js +21 -0
  199. package/dist/renderer-BBCEFILK.js +24 -0
  200. package/dist/{renderer-JGBKUCZD.js → renderer-BSW7SRIZ.js} +4 -4
  201. package/dist/{renderer-BYCNMBF7.js → renderer-BY533UWU.js} +11 -11
  202. package/dist/{renderer-6W5462RB.js → renderer-BZSBPTZJ.js} +9 -9
  203. package/dist/{renderer-7MVLWWQD.js → renderer-CXUC4KAD.js} +9 -9
  204. package/dist/{renderer-QIWVHWZO.js → renderer-DAXMXIKD.js} +3 -3
  205. package/dist/renderer-FZUKFUNZ.js +23 -0
  206. package/dist/renderer-G2NLGNKF.js +17 -0
  207. package/dist/renderer-GO3FE3RA.js +24 -0
  208. package/dist/{renderer-ZGNTUWC4.js → renderer-HPGR6USK.js} +8 -8
  209. package/dist/{renderer-UV6MI64M.js → renderer-HVCU2C3Z.js} +3 -3
  210. package/dist/renderer-ICJN2SA2.js +24 -0
  211. package/dist/{renderer-AWWAF6XD.js → renderer-INEXO7B6.js} +10 -10
  212. package/dist/{renderer-YY2OSF6E.js → renderer-KDYCFRBX.js} +8 -8
  213. package/dist/renderer-KY4KQBTF.js +19 -0
  214. package/dist/{renderer-B2OMQIQG.js → renderer-LBN65V45.js} +13 -13
  215. package/dist/{renderer-N43WR5GV.js → renderer-MGBWOCXG.js} +10 -10
  216. package/dist/{renderer-PGX2TKVS.js → renderer-O4JKUGKO.js} +8 -8
  217. package/dist/{renderer-4JHRUBE6.js → renderer-OOGFODWP.js} +10 -10
  218. package/dist/{renderer-6EEZHMH4.js → renderer-Q6ZKPLS6.js} +9 -9
  219. package/dist/{renderer-RPOA5YPZ.js → renderer-SZQ326M5.js} +12 -12
  220. package/dist/{renderer-ZRNG54CW.js → renderer-TKG6LS4U.js} +11 -11
  221. package/dist/{renderer-W4M6QLIJ.js → renderer-TQMZGDAX.js} +13 -13
  222. package/dist/renderer-radial-JELMHQ24.js +21 -0
  223. package/dist/{resolver-NOAA7ID7.js → resolver-FHBCO3PL.js} +3 -3
  224. package/dist/{state-parser-Z2V23ATR.js → state-parser-3REXRK3R.js} +4 -4
  225. package/dist/{state-renderer-B4DQBM6M.js → state-renderer-XYLNRWXR.js} +8 -8
  226. package/docs/ai-integration.md +12 -3
  227. package/docs/language-reference.md +429 -24
  228. package/gallery/fixtures/body.dgmo +17 -0
  229. package/gallery/fixtures/bracket.dgmo +30 -0
  230. package/gallery/fixtures/clock.dgmo +8 -0
  231. package/gallery/fixtures/countdown.dgmo +3 -0
  232. package/gallery/fixtures/family.dgmo +23 -0
  233. package/gallery/fixtures/goal.dgmo +4 -0
  234. package/gallery/fixtures/sketch.dgmo +22 -0
  235. package/package.json +12 -4
  236. package/dist/chunk-ODZVHU3R.js +0 -153
  237. package/dist/dgmo-router-X35VLZLM.js +0 -73
  238. package/dist/dimensions-J3FHIMJ6.js +0 -22
  239. package/dist/layout-5T6RH5M6.js +0 -14
  240. package/dist/layout-G23F7LDH.js +0 -9
  241. package/dist/layout-OB3RI63S.js +0 -14
  242. package/dist/parser-JAL2HD4I.js +0 -13
  243. package/dist/renderer-SMIBCRVB.js +0 -24
  244. package/dist/renderer-radial-C32GPJQ7.js +0 -21
@@ -2,18 +2,18 @@ import {
2
2
  MONTH_ABBR,
3
3
  computeTimeTicks
4
4
  } from "./chunk-YRYKTYMQ.js";
5
+ import {
6
+ ScaleContext
7
+ } from "./chunk-YYVTBZZC.js";
8
+ import {
9
+ renderIntegratedLegend
10
+ } from "./chunk-QUJGFNFN.js";
5
11
  import {
6
12
  createTooltip,
7
13
  hideTooltip,
8
14
  renderChartTitle,
9
15
  showTooltip
10
16
  } from "./chunk-U6EQI3U6.js";
11
- import {
12
- renderIntegratedLegend
13
- } from "./chunk-PWIHZ6NJ.js";
14
- import {
15
- ScaleContext
16
- } from "./chunk-YYVTBZZC.js";
17
17
  import {
18
18
  FONT_FAMILY
19
19
  } from "./chunk-6KFWC4CO.js";
@@ -28,10 +28,10 @@ import {
28
28
  LEGEND_PILL_PAD,
29
29
  measureLegendText,
30
30
  truncateLegendText
31
- } from "./chunk-QOOUC2J5.js";
31
+ } from "./chunk-HQCHYB5F.js";
32
32
  import {
33
33
  parseTimelineDate
34
- } from "./chunk-GMR5MFHJ.js";
34
+ } from "./chunk-I7F2A35O.js";
35
35
  import {
36
36
  getSeriesColors,
37
37
  mix,
@@ -41,7 +41,7 @@ import {
41
41
  import {
42
42
  resolveTagColor,
43
43
  tagAttrKey
44
- } from "./chunk-QLCCJEJI.js";
44
+ } from "./chunk-WCUHAQKB.js";
45
45
 
46
46
  // src/timeline/renderer.ts
47
47
  import * as d3Scale from "d3-scale";
@@ -1607,4 +1607,4 @@ export {
1607
1607
  formatDateLabel,
1608
1608
  renderTimeline
1609
1609
  };
1610
- //# sourceMappingURL=chunk-UWN33VNX.js.map
1610
+ //# sourceMappingURL=chunk-XCLHOZAM.js.map
@@ -5,7 +5,7 @@ import {
5
5
  normalizeNumericToken,
6
6
  parseFirstLine,
7
7
  parseSeriesNames
8
- } from "./chunk-Y3J7VR52.js";
8
+ } from "./chunk-OTAL43EH.js";
9
9
  import {
10
10
  RECOGNIZED_COLOR_NAMES,
11
11
  resolveColorWithDiagnostic
@@ -1054,4 +1054,4 @@ export {
1054
1054
  getSimpleChartLegendGroups,
1055
1055
  getExtendedChartLegendGroups
1056
1056
  };
1057
- //# sourceMappingURL=chunk-P235SVAH.js.map
1057
+ //# sourceMappingURL=chunk-XDXNDSKO.js.map
@@ -0,0 +1,51 @@
1
+ // src/sketch/diagnostics.ts
2
+ var SKETCH_DIAGNOSTIC_CODES = {
3
+ NESTED_BOX: "E_SKETCH_NESTED_BOX",
4
+ AMBIGUOUS_TARGET: "E_SKETCH_AMBIGUOUS_TARGET",
5
+ UNKNOWN_SHAPE: "W_SKETCH_UNKNOWN_SHAPE",
6
+ OVERLAP_RESOLVED: "W_SKETCH_OVERLAP_RESOLVED"
7
+ };
8
+ var SKETCH_DIAGNOSTICS = [
9
+ {
10
+ code: SKETCH_DIAGNOSTIC_CODES.NESTED_BOX,
11
+ severity: "error",
12
+ chartType: "sketch",
13
+ title: "Nested box",
14
+ message: (p) => `Box "${String(p.label ?? "?")}" is nested inside another box \u2014 sketch boxes are one level only; its shapes join the outer box`,
15
+ hint: "Move the inner [Box] to the top level.",
16
+ example: "sketch\n[Outer]\n [Inner]\n Shape"
17
+ },
18
+ {
19
+ code: SKETCH_DIAGNOSTIC_CODES.AMBIGUOUS_TARGET,
20
+ severity: "error",
21
+ chartType: "sketch",
22
+ title: "Ambiguous edge target",
23
+ message: (p) => `Edge target "${String(p.target ?? "?")}" matches more than one shape \u2014 give each duplicate an alias (as x) and target the alias`,
24
+ hint: "Alias duplicate-label shapes and reference the alias.",
25
+ example: "sketch\nCache as c1\nCache as c2\nApp\n -> c1"
26
+ },
27
+ {
28
+ code: SKETCH_DIAGNOSTIC_CODES.UNKNOWN_SHAPE,
29
+ severity: "warning",
30
+ chartType: "sketch",
31
+ title: "Unknown shape",
32
+ message: (p) => `Unknown shape "${String(p.shape ?? "?")}" \u2014 rendered as a rectangle (valid: database, queue, person, document, note)`,
33
+ hint: "Use one of the closed shape kinds, or drop shape: for a rectangle.",
34
+ example: "sketch\nStore shape: database"
35
+ },
36
+ {
37
+ code: SKETCH_DIAGNOSTIC_CODES.OVERLAP_RESOLVED,
38
+ severity: "warning",
39
+ chartType: "sketch",
40
+ title: "Overlapping shapes auto-resolved",
41
+ message: (p) => `Shape "${String(p.label ?? "?")}" overlapped another at its authored position \u2014 moved to the nearest free slot`,
42
+ hint: "Keep shapes at least 2 half-slots apart on one axis, or omit at: to flow-place.",
43
+ example: "sketch\nA at: 0 0\nB at: 0 0"
44
+ }
45
+ ];
46
+
47
+ export {
48
+ SKETCH_DIAGNOSTIC_CODES,
49
+ SKETCH_DIAGNOSTICS
50
+ };
51
+ //# sourceMappingURL=chunk-XHVV4NVW.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-DKEPS5LH.js";
5
+ } from "./chunk-U2HGPLZS.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-QLCCJEJI.js";
14
+ } from "./chunk-WCUHAQKB.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-Y3J7VR52.js";
33
+ } from "./chunk-OTAL43EH.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-33LCUH4H.js.map
893
+ //# sourceMappingURL=chunk-XMVQ5F4M.js.map
@@ -1,6 +1,3 @@
1
- import {
2
- layoutERDiagram
3
- } from "./chunk-6NYWYNBI.js";
4
1
  import {
5
2
  NOTE_BADGE_RADIUS,
6
3
  noteConnectorPoints,
@@ -8,16 +5,19 @@ import {
8
5
  renderNoteBox,
9
6
  renderNoteConnector
10
7
  } from "./chunk-JEUJOX5X.js";
8
+ import {
9
+ layoutERDiagram
10
+ } from "./chunk-4XK3FLFB.js";
11
11
  import {
12
12
  EDGE_STROKE_WIDTH,
13
13
  NODE_STROKE_WIDTH
14
14
  } from "./chunk-3CIOJ5YJ.js";
15
- import {
16
- renderIntegratedLegend
17
- } from "./chunk-PWIHZ6NJ.js";
18
15
  import {
19
16
  ScaleContext
20
17
  } from "./chunk-YYVTBZZC.js";
18
+ import {
19
+ renderIntegratedLegend
20
+ } from "./chunk-QUJGFNFN.js";
21
21
  import {
22
22
  TITLE_FONT_SIZE,
23
23
  TITLE_FONT_WEIGHT,
@@ -28,13 +28,13 @@ import {
28
28
  } from "./chunk-6KFWC4CO.js";
29
29
  import {
30
30
  LEGEND_HEIGHT
31
- } from "./chunk-QOOUC2J5.js";
31
+ } from "./chunk-HQCHYB5F.js";
32
32
  import {
33
33
  measureText
34
- } from "./chunk-WCT3NYCV.js";
34
+ } from "./chunk-5LWQH6QV.js";
35
35
  import {
36
36
  parseERDiagram
37
- } from "./chunk-L66GEFB6.js";
37
+ } from "./chunk-2JJ2KNPI.js";
38
38
  import {
39
39
  contrastText,
40
40
  getSeriesColors,
@@ -43,7 +43,7 @@ import {
43
43
  import {
44
44
  resolveTagColor,
45
45
  tagAttrKey
46
- } from "./chunk-QLCCJEJI.js";
46
+ } from "./chunk-WCUHAQKB.js";
47
47
 
48
48
  // src/er/renderer.ts
49
49
  import * as d3Selection from "d3-selection";
@@ -545,4 +545,4 @@ export {
545
545
  renderERDiagram,
546
546
  renderERDiagramForExport
547
547
  };
548
- //# sourceMappingURL=chunk-MITI6NOL.js.map
548
+ //# sourceMappingURL=chunk-YA7D2N2O.js.map
@@ -9,12 +9,12 @@ import {
9
9
  tagAttrKey,
10
10
  validateTagGroupNames,
11
11
  validateTagValues
12
- } from "./chunk-QLCCJEJI.js";
12
+ } from "./chunk-WCUHAQKB.js";
13
13
  import {
14
14
  extractColor,
15
15
  measureIndent,
16
16
  parseFirstLine
17
- } from "./chunk-Y3J7VR52.js";
17
+ } from "./chunk-OTAL43EH.js";
18
18
  import {
19
19
  formatDgmoError,
20
20
  makeDgmoError,
@@ -335,4 +335,4 @@ function parseBlockTail(tail, aliasMap) {
335
335
  export {
336
336
  parseBlock
337
337
  };
338
- //# sourceMappingURL=chunk-7JEGTRLD.js.map
338
+ //# sourceMappingURL=chunk-YB3FW24O.js.map
@@ -0,0 +1,295 @@
1
+ // src/countdown/resolve.ts
2
+ var DAY_MS = 864e5;
3
+ var WEEK_MS = 7 * DAY_MS;
4
+ function monthIndex(token) {
5
+ const t = token.trim().toLowerCase().slice(0, 3);
6
+ const i = [
7
+ "jan",
8
+ "feb",
9
+ "mar",
10
+ "apr",
11
+ "may",
12
+ "jun",
13
+ "jul",
14
+ "aug",
15
+ "sep",
16
+ "oct",
17
+ "nov",
18
+ "dec"
19
+ ].indexOf(t);
20
+ return i < 0 ? null : i;
21
+ }
22
+ function weekdayIndex(token) {
23
+ const t = token.trim().toLowerCase().slice(0, 3);
24
+ const i = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"].indexOf(t);
25
+ return i < 0 ? null : i;
26
+ }
27
+ function ordinalWord(n) {
28
+ const abs = Math.abs(n);
29
+ const tens = abs % 100;
30
+ let suffix = "th";
31
+ if (tens < 11 || tens > 13) {
32
+ const ones = abs % 10;
33
+ suffix = ones === 1 ? "st" : ones === 2 ? "nd" : ones === 3 ? "rd" : "th";
34
+ }
35
+ return `${n}${suffix}`;
36
+ }
37
+ function applyOrdinalTemplate(template, n) {
38
+ return template.replace(/\bNth\b/g, ordinalWord(n)).replace(/\bN\b/g, String(n));
39
+ }
40
+ function dayStart(ms) {
41
+ const d = new Date(ms);
42
+ return new Date(d.getFullYear(), d.getMonth(), d.getDate()).getTime();
43
+ }
44
+ function nthWeekdayOfMonth(year, month, weekday, nth, hour, minute) {
45
+ if (nth < 0) {
46
+ const last = new Date(year, month + 1, 0).getDate();
47
+ for (let d = last; d >= 1; d--) {
48
+ if (new Date(year, month, d).getDay() === weekday) {
49
+ return new Date(year, month, d, hour, minute).getTime();
50
+ }
51
+ }
52
+ return null;
53
+ }
54
+ const firstDow = new Date(year, month, 1).getDay();
55
+ const offset = (weekday - firstDow + 7) % 7;
56
+ const day = 1 + offset + (nth - 1) * 7;
57
+ if (day > new Date(year, month + 1, 0).getDate()) return null;
58
+ return new Date(year, month, day, hour, minute).getTime();
59
+ }
60
+ function resolveNext(rule, now) {
61
+ const nowD = new Date(now);
62
+ const { hour, minute } = rule;
63
+ const passes = rule.allDay ? (t) => dayStart(t) >= dayStart(now) : (t) => t > now;
64
+ const dayExists = (y, m, d) => new Date(y, m, d).getMonth() === m;
65
+ switch (rule.kind) {
66
+ case "month-day": {
67
+ const month = rule.month;
68
+ const day = rule.day;
69
+ for (let y = nowD.getFullYear(); ; y++) {
70
+ if (!dayExists(y, month, day)) continue;
71
+ const t = new Date(y, month, day, hour, minute).getTime();
72
+ if (passes(t)) return t;
73
+ }
74
+ }
75
+ case "nth-weekday":
76
+ case "last-weekday": {
77
+ const weekday = rule.weekday;
78
+ const nth = rule.kind === "last-weekday" ? -1 : rule.nth;
79
+ let y = nowD.getFullYear();
80
+ let m = nowD.getMonth();
81
+ for (let i = 0; i < 24; i++) {
82
+ const t = nthWeekdayOfMonth(y, m, weekday, nth, hour, minute);
83
+ if (t !== null && passes(t)) return t;
84
+ m++;
85
+ if (m > 11) {
86
+ m = 0;
87
+ y++;
88
+ }
89
+ }
90
+ return now + WEEK_MS;
91
+ }
92
+ case "weekly": {
93
+ const weekday = rule.weekday;
94
+ for (let i = 0; i < 8; i++) {
95
+ const d = new Date(
96
+ nowD.getFullYear(),
97
+ nowD.getMonth(),
98
+ nowD.getDate() + i,
99
+ hour,
100
+ minute
101
+ );
102
+ if (d.getDay() === weekday && passes(d.getTime())) return d.getTime();
103
+ }
104
+ return now + WEEK_MS;
105
+ }
106
+ case "interval": {
107
+ const n = rule.intervalN ?? 1;
108
+ const anchor = rule.anchorMs ?? now;
109
+ if (rule.intervalUnit === "month") {
110
+ const a = new Date(anchor);
111
+ const day = a.getDate();
112
+ for (let k = 0; ; k++) {
113
+ const y = a.getFullYear();
114
+ const m = a.getMonth() + k * n;
115
+ const yy = y + Math.floor(m / 12);
116
+ const mm = (m % 12 + 12) % 12;
117
+ if (!dayExists(yy, mm, day)) continue;
118
+ const t2 = new Date(yy, mm, day, hour, minute).getTime();
119
+ if (passes(t2)) return t2;
120
+ }
121
+ }
122
+ const step = (rule.intervalUnit === "week" ? WEEK_MS : DAY_MS) * n;
123
+ let t = anchor;
124
+ if (!passes(t)) {
125
+ const k = Math.max(0, Math.floor((now - anchor) / step));
126
+ t = anchor + k * step;
127
+ while (!passes(t)) t += step;
128
+ }
129
+ return t;
130
+ }
131
+ }
132
+ }
133
+ function ordinalFor(resolvedMs, since) {
134
+ return new Date(resolvedMs).getFullYear() - since;
135
+ }
136
+ function roundBy(value, mode) {
137
+ return mode === "down" ? Math.floor(value) : mode === "nearest" ? Math.round(value) : Math.ceil(value);
138
+ }
139
+ function pad2(n) {
140
+ return n < 10 ? "0" + n : String(n);
141
+ }
142
+ function plural(n, unit) {
143
+ return `${n} ${unit}${n === 1 ? "" : "s"}`;
144
+ }
145
+ function formatCount(remainingMs, opts) {
146
+ const { units, round, fields } = opts;
147
+ if (units === "days")
148
+ return plural(roundBy(remainingMs / DAY_MS, round), "day");
149
+ if (units === "weeks")
150
+ return plural(roundBy(remainingMs / WEEK_MS, round), "week");
151
+ const totalSec = Math.floor(remainingMs / 1e3);
152
+ if (units === "clock") {
153
+ const h2 = Math.floor(totalSec / 3600);
154
+ const m2 = Math.floor(totalSec % 3600 / 60);
155
+ const s2 = totalSec % 60;
156
+ return `${pad2(h2)}:${pad2(m2)}:${pad2(s2)}`;
157
+ }
158
+ if (units === "words") {
159
+ const days2 = Math.ceil(remainingMs / DAY_MS);
160
+ if (days2 <= 0) return "now";
161
+ if (days2 === 1) return "tomorrow";
162
+ if (days2 < 14) return `${days2} days`;
163
+ if (days2 < 60) return `${Math.round(days2 / 7)} weeks`;
164
+ return `${Math.round(days2 / 30)} months`;
165
+ }
166
+ const days = Math.floor(totalSec / 86400);
167
+ const h = Math.floor(totalSec % 86400 / 3600);
168
+ const m = Math.floor(totalSec % 3600 / 60);
169
+ const s = totalSec % 60;
170
+ const has = (f) => fields.includes(f);
171
+ const clockParts = [];
172
+ if (has("h")) clockParts.push(pad2(h));
173
+ if (has("m")) clockParts.push(pad2(m));
174
+ if (has("s")) clockParts.push(pad2(s));
175
+ const clock = clockParts.join(":");
176
+ const dayPrefix = has("d") && days > 0 ? `${days}d${clock ? " " : ""}` : "";
177
+ return dayPrefix + clock || plural(days, "day");
178
+ }
179
+ function formatWordsDetail(remainingMs) {
180
+ const totalMin = Math.floor(Math.max(0, remainingMs) / 6e4);
181
+ const d = Math.floor(totalMin / 1440);
182
+ const h = Math.floor(totalMin % 1440 / 60);
183
+ const m = totalMin % 60;
184
+ const parts = [];
185
+ if (d > 0) parts.push(`${d} day${d === 1 ? "" : "s"}`);
186
+ if (d > 0 || h > 0) parts.push(`${h} hour${h === 1 ? "" : "s"}`);
187
+ parts.push(`${m} minute${m === 1 ? "" : "s"}`);
188
+ return parts.join(" ");
189
+ }
190
+ function breakdown(nowMs, targetMs) {
191
+ const n = new Date(nowMs);
192
+ const t = new Date(targetMs);
193
+ let y = t.getFullYear() - n.getFullYear();
194
+ let mo = t.getMonth() - n.getMonth();
195
+ let d = t.getDate() - n.getDate();
196
+ let h = t.getHours() - n.getHours();
197
+ let mi = t.getMinutes() - n.getMinutes();
198
+ let s = t.getSeconds() - n.getSeconds();
199
+ if (s < 0) {
200
+ s += 60;
201
+ mi--;
202
+ }
203
+ if (mi < 0) {
204
+ mi += 60;
205
+ h--;
206
+ }
207
+ if (h < 0) {
208
+ h += 24;
209
+ d--;
210
+ }
211
+ if (d < 0) {
212
+ d += new Date(t.getFullYear(), t.getMonth(), 0).getDate();
213
+ mo--;
214
+ }
215
+ if (mo < 0) {
216
+ mo += 12;
217
+ y--;
218
+ }
219
+ return { years: y, months: mo, days: d, hours: h, minutes: mi, seconds: s };
220
+ }
221
+ function humanUnits(nowMs, targetMs) {
222
+ const b = breakdown(nowMs, targetMs);
223
+ return [
224
+ [b.years, "year"],
225
+ [b.months, "month"],
226
+ [b.days, "day"],
227
+ [b.hours, "hour"],
228
+ [b.minutes, "minute"]
229
+ ];
230
+ }
231
+ function formatHuman(nowMs, targetMs) {
232
+ const units = humanUnits(nowMs, targetMs);
233
+ let i = 0;
234
+ while (i < units.length - 1 && units[i][0] === 0) i++;
235
+ const rest = units.slice(i);
236
+ const say = (arr) => arr.map(([n, u]) => `${n} ${u}${n === 1 ? "" : "s"}`).join(", ");
237
+ const primary = rest.slice(0, 2).filter((p, idx) => p[0] > 0 || idx === 0);
238
+ const secondary = rest.slice(2).filter((p) => p[0] > 0);
239
+ return { big: say(primary) || "now", sub: say(secondary) };
240
+ }
241
+ function formatCompound(nowMs, targetMs, maxUnits = 2) {
242
+ const all = humanUnits(nowMs, targetMs);
243
+ let i = 0;
244
+ while (i < all.length - 1 && all[i][0] === 0) i++;
245
+ const chosen = all.slice(i, i + maxUnits).filter((p, idx) => p[0] > 0 || idx === 0);
246
+ if (!chosen.length) return "now";
247
+ return chosen.map(([n, u]) => `${n} ${u}${n === 1 ? "" : "s"}`).join(", ");
248
+ }
249
+ var WEEKDAY_ABBR = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
250
+ var MONTH_ABBR = [
251
+ "Jan",
252
+ "Feb",
253
+ "Mar",
254
+ "Apr",
255
+ "May",
256
+ "Jun",
257
+ "Jul",
258
+ "Aug",
259
+ "Sep",
260
+ "Oct",
261
+ "Nov",
262
+ "Dec"
263
+ ];
264
+ function formatDate(ms) {
265
+ const d = new Date(ms);
266
+ return `${WEEKDAY_ABBR[d.getDay()]} ${MONTH_ABBR[d.getMonth()]} ${d.getDate()} ${d.getFullYear()}`;
267
+ }
268
+ function formatDateShort(ms) {
269
+ const d = new Date(ms);
270
+ return `${MONTH_ABBR[d.getMonth()]} ${d.getDate()} ${d.getFullYear()}`;
271
+ }
272
+ function formatFooter(resolvedMs, hasTime) {
273
+ const parts = [formatDate(resolvedMs)];
274
+ if (hasTime) {
275
+ const d = new Date(resolvedMs);
276
+ parts.push(`${pad2(d.getHours())}:${pad2(d.getMinutes())}`);
277
+ }
278
+ return parts.join(" \xB7 ");
279
+ }
280
+
281
+ export {
282
+ DAY_MS,
283
+ monthIndex,
284
+ weekdayIndex,
285
+ applyOrdinalTemplate,
286
+ resolveNext,
287
+ ordinalFor,
288
+ formatCount,
289
+ formatWordsDetail,
290
+ formatHuman,
291
+ formatCompound,
292
+ formatDateShort,
293
+ formatFooter
294
+ };
295
+ //# sourceMappingURL=chunk-YNRDWYZP.js.map
@@ -8,7 +8,7 @@ import {
8
8
  stripDefaultModifier,
9
9
  tagAttrKey,
10
10
  validateTagGroupNames
11
- } from "./chunk-QLCCJEJI.js";
11
+ } from "./chunk-WCUHAQKB.js";
12
12
  import {
13
13
  JOURNEY_MAP_REGISTRY,
14
14
  OPTION_NOCOLON_RE,
@@ -19,7 +19,7 @@ import {
19
19
  splitNameAndMeta,
20
20
  warnUnknownMetaKeys,
21
21
  withTagAliases
22
- } from "./chunk-Y3J7VR52.js";
22
+ } from "./chunk-OTAL43EH.js";
23
23
  import {
24
24
  resolveColorWithDiagnostic
25
25
  } from "./chunk-TLVIHFRO.js";
@@ -406,4 +406,4 @@ function parseStepLine(trimmed, lineNumber, counter, aliasMap, warn, diagnostics
406
406
  export {
407
407
  parseJourneyMap
408
408
  };
409
- //# sourceMappingURL=chunk-44CM72SQ.js.map
409
+ //# sourceMappingURL=chunk-YZLMKW4T.js.map