@diagrammo/dgmo 0.50.2 → 0.52.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. package/.cursorrules +15 -19
  2. package/.github/copilot-instructions.md +15 -19
  3. package/.windsurfrules +15 -19
  4. package/SKILL.md +15 -19
  5. package/dist/advanced.d.ts +155 -65
  6. package/dist/advanced.js +231 -189
  7. package/dist/{analyzer-UYKBXAKR.js → analyzer-BJ54GIFB.js} +3 -3
  8. package/dist/auto.css +31 -8
  9. package/dist/auto.d.ts +6 -0
  10. package/dist/auto.js +171 -133
  11. package/dist/auto.mjs +3062 -1478
  12. package/dist/block.css +28 -8
  13. package/dist/block.js +138 -72
  14. package/dist/charts-d3-MXEP6BNP.js +26 -0
  15. package/dist/{chunk-3YPY3OXD.js → chunk-3HF5YEFJ.js} +17 -7
  16. package/dist/{chunk-4MJ7M6YL.js → chunk-3HGU63UY.js} +14 -13
  17. package/dist/chunk-3LK5DNED.js +35 -0
  18. package/dist/{chunk-3Y2DRD7S.js → chunk-3QD7VP3U.js} +9 -4
  19. package/dist/{chunk-6BFZKBGD.js → chunk-3YRPZ7ZZ.js} +2 -2
  20. package/dist/{chunk-WW32K72E.js → chunk-44VCIPHF.js} +25 -21
  21. package/dist/{chunk-TN35C5KM.js → chunk-4AQRFDXL.js} +2 -2
  22. package/dist/{chunk-HHXOONLX.js → chunk-4B5YISOR.js} +38 -1
  23. package/dist/{chunk-PGEGPSCZ.js → chunk-4IHAV6O7.js} +2 -2
  24. package/dist/{chunk-7L3R6I3U.js → chunk-4UNQ6X24.js} +10 -7
  25. package/dist/{chunk-O7NUCTFU.js → chunk-4YFKQ5WT.js} +7 -4
  26. package/dist/{chunk-5WFIYXQ6.js → chunk-5223KXFD.js} +122 -242
  27. package/dist/{chunk-PFHVU7UA.js → chunk-5BHJZH62.js} +3 -3
  28. package/dist/{chunk-QYTPPDAO.js → chunk-5HILBT7X.js} +2 -2
  29. package/dist/{chunk-GKC3HILQ.js → chunk-5NGAO4QK.js} +27 -4
  30. package/dist/{chunk-IAEC4KLA.js → chunk-5QKQSSPO.js} +2 -2
  31. package/dist/{chunk-DSWVNQVS.js → chunk-5RP7JRVP.js} +4 -59
  32. package/dist/{chunk-MCZ5LBZD.js → chunk-5SEVICBT.js} +8 -8
  33. package/dist/{chunk-GBE54KY6.js → chunk-6EJITS44.js} +8 -5
  34. package/dist/{chunk-BBGDM4NQ.js → chunk-6HQH6JZE.js} +35 -16
  35. package/dist/{chunk-66NVRO4K.js → chunk-6LBQ7ELG.js} +17 -18
  36. package/dist/{chunk-4XK3FLFB.js → chunk-6NYWYNBI.js} +3 -3
  37. package/dist/{chunk-VBYSIOOY.js → chunk-75G3Q4DK.js} +3 -3
  38. package/dist/{chunk-3NODSS6A.js → chunk-77FGAVZC.js} +13 -10
  39. package/dist/{chunk-6IAA2QQ2.js → chunk-7BIZCTAX.js} +2 -2
  40. package/dist/{chunk-TWQUYVP3.js → chunk-7DF4J4RL.js} +4 -4
  41. package/dist/{chunk-66RUL3XF.js → chunk-7KINELPI.js} +111 -49
  42. package/dist/{chunk-L3UHP6TD.js → chunk-7L4UJOY6.js} +1 -2
  43. package/dist/{chunk-QJP6PG7F.js → chunk-7QE3XMRK.js} +19 -18
  44. package/dist/{chunk-P7CE7LXL.js → chunk-AAXZDUOV.js} +18 -17
  45. package/dist/{chunk-SXRTRMEE.js → chunk-AL672HNE.js} +3 -3
  46. package/dist/chunk-APKUAJ2L.js +220 -0
  47. package/dist/{chunk-SCHXJTZL.js → chunk-ARGMQ3H4.js} +2 -2
  48. package/dist/{chunk-HEVYAHLW.js → chunk-AUIM2NVH.js} +5 -5
  49. package/dist/{chunk-3LH5CLP4.js → chunk-BKVOYV6I.js} +143 -6
  50. package/dist/{chunk-RZ6YKEUJ.js → chunk-BPIZNB5O.js} +17 -15
  51. package/dist/{chunk-QROYX7TT.js → chunk-BPY242XU.js} +6 -4
  52. package/dist/{chunk-OTAL43EH.js → chunk-BRENJ2BQ.js} +39 -3
  53. package/dist/{chunk-FA6K3FWM.js → chunk-CCNDLW7Z.js} +44 -22
  54. package/dist/{chunk-2KGXHFYK.js → chunk-CIRFIL4M.js} +49 -29
  55. package/dist/chunk-DAOFNU6J.js +283 -0
  56. package/dist/{chunk-QJJZSROI.js → chunk-DYWQFQJP.js} +48 -38
  57. package/dist/{chunk-XEGTMVYY.js → chunk-EMLPOL77.js} +15 -8
  58. package/dist/{chunk-NWED7CYO.js → chunk-FHGVORFO.js} +29 -25
  59. package/dist/{chunk-U2HGPLZS.js → chunk-FQ7HTV52.js} +17 -2
  60. package/dist/{chunk-H73FP42Q.js → chunk-FQMUHRVC.js} +70 -31
  61. package/dist/{chunk-BTUTZMPT.js → chunk-FT3ZYWET.js} +108 -42
  62. package/dist/{chunk-T5SHNNGP.js → chunk-FUPF2UYQ.js} +92 -34
  63. package/dist/{chunk-3XPUDB7B.js → chunk-FY5MSZAP.js} +279 -39
  64. package/dist/{chunk-M5RXSRO2.js → chunk-GCYTI3DE.js} +42 -33
  65. package/dist/{chunk-DN66GPY5.js → chunk-GJFAMOGK.js} +24 -3
  66. package/dist/{chunk-F2L5GCQ4.js → chunk-GU46PPT3.js} +3 -3
  67. package/dist/{chunk-6IUAK7RZ.js → chunk-H6PI3KJT.js} +2 -2
  68. package/dist/{chunk-ONA5KPV3.js → chunk-H7KENAZO.js} +18 -14
  69. package/dist/{chunk-SQLNBA64.js → chunk-HBPDFCQY.js} +3 -3
  70. package/dist/{chunk-SCQ5VPUF.js → chunk-HFMYN6N2.js} +2 -2
  71. package/dist/{chunk-FJUNPCYI.js → chunk-HHKO6SKY.js} +2 -2
  72. package/dist/{chunk-DZXYF2F5.js → chunk-HQQNCY7W.js} +21 -8
  73. package/dist/{chunk-7TV5Y53Y.js → chunk-HWX6ZHF3.js} +3 -3
  74. package/dist/{chunk-3P2DKJCG.js → chunk-ICPJPQ5C.js} +2 -2
  75. package/dist/{chunk-VUJGMJE6.js → chunk-IM6PDDCE.js} +4 -4
  76. package/dist/{chunk-JJUOHGX2.js → chunk-INE5YJBZ.js} +13 -8
  77. package/dist/{chunk-HTMN2Z6U.js → chunk-J6QROYDA.js} +58 -11
  78. package/dist/{chunk-NX4EQS3U.js → chunk-J76PIKAT.js} +2 -2
  79. package/dist/{chunk-SVTI362O.js → chunk-J7KJR3R6.js} +129 -109
  80. package/dist/{chunk-JEUJOX5X.js → chunk-J7TLCB2Q.js} +2 -2
  81. package/dist/{chunk-O7WP4ZD4.js → chunk-JED6ZDEE.js} +2 -2
  82. package/dist/{chunk-J6K7RP6P.js → chunk-JRCOYRRH.js} +19 -7
  83. package/dist/{chunk-7QKLIMRZ.js → chunk-K2I2XOZD.js} +46 -51
  84. package/dist/{chunk-EAMEADTV.js → chunk-K4EOKJA6.js} +96 -24
  85. package/dist/{chunk-5OWVC2A6.js → chunk-KGVZ5VGH.js} +13 -10
  86. package/dist/{chunk-DFTFPYUD.js → chunk-LBMS4AW6.js} +22 -21
  87. package/dist/{chunk-VVW3F3MD.js → chunk-LGT3PZCJ.js} +27 -19
  88. package/dist/{chunk-OMNGQPEZ.js → chunk-LTXOLDUZ.js} +9 -6
  89. package/dist/{chunk-Q4V4XQWV.js → chunk-MUE65OTD.js} +5 -4
  90. package/dist/{chunk-5GJYGP5Z.js → chunk-MUVJ57EP.js} +14 -18
  91. package/dist/{chunk-CLD2OKV7.js → chunk-MX2EY5Y7.js} +2 -2
  92. package/dist/{chunk-OTQKUHRS.js → chunk-NNS4E7CW.js} +6 -4
  93. package/dist/{chunk-NNAAJVBU.js → chunk-NR5HCAUD.js} +1 -1
  94. package/dist/{chunk-KFZYNWWO.js → chunk-ONU3U4GL.js} +4 -4
  95. package/dist/{chunk-YNRDWYZP.js → chunk-OQKP2X3D.js} +170 -51
  96. package/dist/{chunk-AHGF2YYA.js → chunk-OTOHI4JO.js} +2 -2
  97. package/dist/{chunk-EOFPYPAU.js → chunk-P3NRSSUU.js} +51 -11
  98. package/dist/{chunk-QXKWYZNR.js → chunk-PRI2OD4E.js} +10 -3
  99. package/dist/{chunk-U6EQI3U6.js → chunk-QBZYACOG.js} +3 -3
  100. package/dist/{chunk-C2CVAM3U.js → chunk-QGATPIPX.js} +170 -91
  101. package/dist/{chunk-PZFVK3IH.js → chunk-QHXCAEMX.js} +8 -5
  102. package/dist/{chunk-BH3UYK36.js → chunk-QJMKPUYK.js} +15 -5
  103. package/dist/{chunk-HQCHYB5F.js → chunk-QOOUC2J5.js} +2 -2
  104. package/dist/{chunk-Z6XJQ6KO.js → chunk-QVENJMNX.js} +2 -2
  105. package/dist/{chunk-IUMPEA64.js → chunk-QZX5S6R3.js} +4 -4
  106. package/dist/{chunk-I7F2A35O.js → chunk-R3YSD62R.js} +25 -47
  107. package/dist/{chunk-NU3XLTGP.js → chunk-REJAIQ5S.js} +4 -4
  108. package/dist/{chunk-2C56LEML.js → chunk-ROOE4R4Y.js} +8 -5
  109. package/dist/{chunk-XHVV4NVW.js → chunk-RT7ACF77.js} +12 -2
  110. package/dist/{chunk-I2WKW7C7.js → chunk-SMRFPVLQ.js} +3 -3
  111. package/dist/{chunk-VDOOQZUD.js → chunk-SWSIKFEB.js} +4 -4
  112. package/dist/{chunk-HLJVEAOF.js → chunk-T4A4TSTJ.js} +19 -45
  113. package/dist/{chunk-KHEYDLMT.js → chunk-TJVLKNGR.js} +20 -10
  114. package/dist/{chunk-GL5UZ6NY.js → chunk-TPFKKXCB.js} +3 -3
  115. package/dist/{chunk-X6EZPSW6.js → chunk-TTIM6YTT.js} +31 -21
  116. package/dist/{chunk-BCYVE3N5.js → chunk-TYS6CSS5.js} +2 -2
  117. package/dist/{chunk-T4VOVZT5.js → chunk-UBLHQTLV.js} +15 -14
  118. package/dist/{chunk-3LKM6FMW.js → chunk-UNURMIQO.js} +2 -2
  119. package/dist/{chunk-TSA237IM.js → chunk-VILVLS7P.js} +5 -3
  120. package/dist/{chunk-HGN652MU.js → chunk-VL2O2F3W.js} +2 -2
  121. package/dist/{chunk-3XGZF2QJ.js → chunk-VQOCMUWI.js} +39 -28
  122. package/dist/{chunk-P6T66CCZ.js → chunk-WBM7ZNDI.js} +3 -2
  123. package/dist/{chunk-CMCR5WBW.js → chunk-WBRZJOEC.js} +3 -3
  124. package/dist/{chunk-5LWQH6QV.js → chunk-WCT3NYCV.js} +1 -1
  125. package/dist/{chunk-C4GQDB5L.js → chunk-WRNFDFPU.js} +2 -2
  126. package/dist/{chunk-6HJBFVLO.js → chunk-XD6ZYURY.js} +9 -4
  127. package/dist/{chunk-C63UWAKM.js → chunk-Y2ZE3MSG.js} +2 -2
  128. package/dist/{chunk-7UEMZREK.js → chunk-YAA6IID3.js} +2 -2
  129. package/dist/{chunk-F7BFXWNQ.js → chunk-YIBAWQGJ.js} +7 -4
  130. package/dist/{chunk-PH5X4GIP.js → chunk-YTMTPUH4.js} +8 -5
  131. package/dist/{chunk-3UIKSPFB.js → chunk-Z5QVYKR7.js} +11 -3
  132. package/dist/{chunk-KQ57MHRO.js → chunk-ZEF5M5MB.js} +155 -87
  133. package/dist/{chunk-LE4MYMLI.js → chunk-ZJV7GYR4.js} +6 -6
  134. package/dist/{chunk-XJLKLU4D.js → chunk-ZNWAYU6N.js} +11 -7
  135. package/dist/cli.cjs +165 -148
  136. package/dist/clock.js +105 -25
  137. package/dist/countdown.js +208 -82
  138. package/dist/dgmo-router-X7ZGAPIE.js +86 -0
  139. package/dist/dimensions-45H6JQEY.js +22 -0
  140. package/dist/editor.js +17 -2
  141. package/dist/element.d.ts +6 -0
  142. package/dist/element.js +172 -134
  143. package/dist/element.mjs +3026 -1463
  144. package/dist/{flowchart-parser-OE4WHLTF.js → flowchart-parser-UKELHBSB.js} +4 -4
  145. package/dist/{flowchart-renderer-GPCSMTOR.js → flowchart-renderer-MNCDS7MV.js} +10 -10
  146. package/dist/highlight.d.ts +21 -1
  147. package/dist/highlight.js +106 -3
  148. package/dist/index.d.ts +2 -2
  149. package/dist/index.js +59 -57
  150. package/dist/{layout-FWODLIMP.js → layout-2L3WMRYU.js} +6 -6
  151. package/dist/{layout-7SKMFYHL.js → layout-46N4JJYK.js} +5 -5
  152. package/dist/{layout-7H4H46CS.js → layout-7QXCNOVS.js} +3 -3
  153. package/dist/layout-A4XWNVID.js +14 -0
  154. package/dist/{layout-46366KBT.js → layout-A5UHRWVH.js} +3 -3
  155. package/dist/{layout-NXG63LWH.js → layout-AM2JWW3X.js} +4 -4
  156. package/dist/{layout-DC4TVXER.js → layout-EE6GE46Y.js} +5 -5
  157. package/dist/{layout-FGQWRYYW.js → layout-F4WO357A.js} +3 -3
  158. package/dist/layout-G23F7LDH.js +9 -0
  159. package/dist/{layout-QNUQLEHU.js → layout-GM4UGR7B.js} +5 -4
  160. package/dist/{layout-7MZ5NF2N.js → layout-GQQJXNYH.js} +5 -5
  161. package/dist/{layout-5BG6DFCU.js → layout-IIE2S5FK.js} +6 -6
  162. package/dist/{layout-34CLNICW.js → layout-OAC4PEAC.js} +5 -5
  163. package/dist/layout-VMCRX66I.js +14 -0
  164. package/dist/{layout-PUQCB6AN.js → layout-ZDOSXL5G.js} +7 -7
  165. package/dist/{layout-search-QS44PI5R.js → layout-search-55FU6HD3.js} +6 -157
  166. package/dist/map-data/gazetteer.json +1 -1
  167. package/dist/{palettes-PRJ2RI6D.js → palettes-UDLZ2SA4.js} +2 -2
  168. package/dist/{parser-D5VILGN2.js → parser-2ECN6JA2.js} +4 -4
  169. package/dist/{parser-LWKKBNSA.js → parser-4WTIHM5J.js} +3 -3
  170. package/dist/{parser-DFFEDKHH.js → parser-5H2BTSJQ.js} +3 -3
  171. package/dist/{parser-4NO6VZ6S.js → parser-75KVXUNS.js} +4 -4
  172. package/dist/{parser-VKOJM7KS.js → parser-774AC53T.js} +4 -4
  173. package/dist/{parser-IBWNAPY4.js → parser-BE4YCSRU.js} +3 -3
  174. package/dist/{parser-4AI5ZN5F.js → parser-CNGUQUQI.js} +3 -3
  175. package/dist/{parser-36HVKU5U.js → parser-DEUUSQIN.js} +7 -6
  176. package/dist/{parser-H3XEPFPV.js → parser-DQAFLUJB.js} +4 -4
  177. package/dist/{parser-5OXGPNBF.js → parser-EYCKNKQA.js} +5 -5
  178. package/dist/{parser-TGQZJ5OT.js → parser-FXISIU6A.js} +4 -4
  179. package/dist/{parser-JJR52VAT.js → parser-GTB4XC7P.js} +5 -5
  180. package/dist/{parser-AGVYTQXV.js → parser-GVEPAUSD.js} +4 -4
  181. package/dist/{parser-WAV5JRPT.js → parser-HSQGTY4G.js} +4 -4
  182. package/dist/{parser-YS7TOS2K.js → parser-HVKRINUS.js} +3 -3
  183. package/dist/{parser-W4PQUGX3.js → parser-J5MIEYO4.js} +5 -5
  184. package/dist/parser-KMZIXLDZ.js +13 -0
  185. package/dist/{parser-HYRTF3DO.js → parser-LJHXWSXU.js} +3 -3
  186. package/dist/{parser-KCR2WS3V.js → parser-PT3W72G5.js} +4 -4
  187. package/dist/{parser-CVMEDULU.js → parser-SBJQDPHL.js} +4 -4
  188. package/dist/{parser-RZPVAQVX.js → parser-SUWWWCMX.js} +4 -3
  189. package/dist/{parser-TXND652E.js → parser-SXDRNZOA.js} +4 -4
  190. package/dist/parser-UMILOW3M.js +14 -0
  191. package/dist/{parser-RV4M6AS2.js → parser-UP3AZ367.js} +4 -4
  192. package/dist/{parser-IJBMRXMC.js → parser-WHPRV3X5.js} +5 -5
  193. package/dist/{parser-MPCE5JBG.js → parser-WX3UODSJ.js} +4 -4
  194. package/dist/{parser-K3XXLMUW.js → parser-XCIEN3KN.js} +4 -4
  195. package/dist/{parser-AXKBDGNO.js → parser-XIRTUMVN.js} +5 -5
  196. package/dist/{parser-B5FVS7O6.js → parser-YKCGIG45.js} +3 -3
  197. package/dist/{parser-PSA4UBSP.js → parser-YKYMQG3B.js} +4 -4
  198. package/dist/{parser-MTOMTWTD.js → parser-ZGM2OJ6Y.js} +6 -5
  199. package/dist/{parser-CSFUN3CT.js → parser-ZL5QUFVH.js} +5 -4
  200. package/dist/pert.d.ts +2 -2
  201. package/dist/{renderer-PPIHO5FI.js → renderer-3F7OS2AX.js} +14 -13
  202. package/dist/{renderer-SBS3YWU5.js → renderer-4QB4K7Q3.js} +9 -9
  203. package/dist/{renderer-GHPZMFU2.js → renderer-5DAKMIU2.js} +3 -3
  204. package/dist/{renderer-R2WNIC2C.js → renderer-5H4SY7YY.js} +9 -9
  205. package/dist/{renderer-DAXMXIKD.js → renderer-5PIQPFOX.js} +5 -4
  206. package/dist/{renderer-45PSOL3E.js → renderer-6MU37QF5.js} +6 -6
  207. package/dist/renderer-AQVMWJ4M.js +27 -0
  208. package/dist/{renderer-A5VE5BCI.js → renderer-BDDW6K7N.js} +9 -9
  209. package/dist/{renderer-AUW2BE6G.js → renderer-BNB3VIDY.js} +10 -10
  210. package/dist/{renderer-4ITCHBT7.js → renderer-CQY6ATOS.js} +6 -6
  211. package/dist/{renderer-6OKF44KS.js → renderer-CVW75CXL.js} +15 -15
  212. package/dist/{renderer-7RH2SI3B.js → renderer-DT4XRFEP.js} +5 -4
  213. package/dist/{renderer-B5TBNZJE.js → renderer-ERHBSTQT.js} +9 -9
  214. package/dist/{renderer-HVCU2C3Z.js → renderer-HSHHVYWF.js} +5 -4
  215. package/dist/renderer-IDPVUFNB.js +28 -0
  216. package/dist/renderer-ILX6BGKR.js +21 -0
  217. package/dist/renderer-JP663HKG.js +22 -0
  218. package/dist/{renderer-KS7YZJE2.js → renderer-KNFTTOBL.js} +11 -11
  219. package/dist/{renderer-2AZ5HJFK.js → renderer-MVUZBESR.js} +5 -5
  220. package/dist/{renderer-QAOBLRXV.js → renderer-N4EBR2FV.js} +11 -11
  221. package/dist/{renderer-P5ROYQGU.js → renderer-NHO46CT2.js} +4 -4
  222. package/dist/{renderer-NGXZTRK6.js → renderer-NO2QJ5LZ.js} +10 -10
  223. package/dist/{renderer-FPE3J5VZ.js → renderer-OGFV5RXX.js} +12 -12
  224. package/dist/{renderer-ODUUOPVT.js → renderer-PDLESJMS.js} +15 -15
  225. package/dist/renderer-T4MTNINC.js +24 -0
  226. package/dist/renderer-TOUGFGTM.js +24 -0
  227. package/dist/{renderer-BSR2O2H6.js → renderer-U3KPD43Y.js} +14 -13
  228. package/dist/{renderer-JCCHNECZ.js → renderer-X334IJU2.js} +10 -10
  229. package/dist/{renderer-5DSEWF74.js → renderer-Y5OAMOCR.js} +9 -9
  230. package/dist/{renderer-5KVCNMOJ.js → renderer-YONAKAJU.js} +5 -3
  231. package/dist/{renderer-7SD6MSBS.js → renderer-YWMI6Y2U.js} +12 -12
  232. package/dist/{renderer-2QPMJ2DA.js → renderer-ZWIH4WDW.js} +10 -10
  233. package/dist/renderer-radial-7CGZMVMS.js +21 -0
  234. package/dist/{resolver-FHBCO3PL.js → resolver-EMTGNR3D.js} +4 -3
  235. package/dist/{state-parser-3REXRK3R.js → state-parser-BATWAID2.js} +4 -4
  236. package/dist/{state-renderer-XYLNRWXR.js → state-renderer-3FKZJ3LP.js} +10 -10
  237. package/dist/{themes-PdPR1-hC.d.ts → themes-32xj5ZTW.d.ts} +27 -0
  238. package/docs/ai-integration.md +15 -19
  239. package/docs/language-reference.md +106 -21
  240. package/gallery/fixtures/clock.dgmo +3 -3
  241. package/gallery/fixtures/countdown-tz.dgmo +5 -0
  242. package/package.json +1 -1
  243. package/dist/charts-d3-MUW3LTML.js +0 -26
  244. package/dist/dgmo-router-CE2G67FV.js +0 -84
  245. package/dist/dimensions-OTBKC5M6.js +0 -22
  246. package/dist/layout-6RDJHS6E.js +0 -9
  247. package/dist/layout-J36454XU.js +0 -14
  248. package/dist/layout-LD6XTLD6.js +0 -14
  249. package/dist/parser-4WQQQXCG.js +0 -13
  250. package/dist/parser-O4HIUN6G.js +0 -13
  251. package/dist/renderer-CYB4LK3G.js +0 -22
  252. package/dist/renderer-FF24KZCI.js +0 -24
  253. package/dist/renderer-FYSVXL7M.js +0 -28
  254. package/dist/renderer-HDCCZURL.js +0 -24
  255. package/dist/renderer-PSMMZCKH.js +0 -21
  256. package/dist/renderer-UYMQQCJK.js +0 -24
  257. package/dist/renderer-radial-F7X5F2VU.js +0 -21
@@ -1,15 +1,26 @@
1
1
  import {
2
2
  encodeDiagramUrl
3
- } from "./chunk-SVTI362O.js";
3
+ } from "./chunk-J7KJR3R6.js";
4
+ import {
5
+ parseDgmoChartType
6
+ } from "./chunk-ZEF5M5MB.js";
4
7
  import {
5
8
  FONT_FAMILY
6
9
  } from "./chunk-6KFWC4CO.js";
7
10
  import {
8
11
  measureText,
9
12
  truncateText
10
- } from "./chunk-5LWQH6QV.js";
13
+ } from "./chunk-WCT3NYCV.js";
11
14
 
12
15
  // src/error-card.ts
16
+ var DOCS_BASE = "https://diagrammo.app/docs";
17
+ function docsLink(source) {
18
+ const chartType = parseDgmoChartType(source);
19
+ return chartType ? {
20
+ url: `${DOCS_BASE}/chart-${chartType}/`,
21
+ label: `Read the ${chartType} guide \u2197`
22
+ } : { url: `${DOCS_BASE}/`, label: "Browse the DGMO docs \u2197" };
23
+ }
13
24
  var MONO_FAMILY = "ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace";
14
25
  var W = 660;
15
26
  var PAD = 24;
@@ -129,6 +140,11 @@ function renderErrorCard(errors, source, palette, theme) {
129
140
  parts.push(
130
141
  `<a href="${escapeXml(editUrl)}" target="_blank" rel="noopener noreferrer">` + diagrammoIcon(PAD, y - 14, iconSize) + `<text x="${PAD + iconSize + 8}" y="${y}" fill="${linkColor}" font-family="${FONT_FAMILY}" font-size="12.5" font-weight="600" text-decoration="underline">Edit &amp; fix this diagram at online.diagrammo.app \u2197</text></a>`
131
142
  );
143
+ y += 22;
144
+ const docs = docsLink(source);
145
+ parts.push(
146
+ `<a href="${escapeXml(docs.url)}" target="_blank" rel="noopener noreferrer">` + docIcon(PAD, y - 14, iconSize, linkColor) + `<text x="${PAD + iconSize + 8}" y="${y}" fill="${linkColor}" font-family="${FONT_FAMILY}" font-size="12.5" font-weight="600" text-decoration="underline">${escapeXml(docs.label)}</text></a>`
147
+ );
132
148
  y += 8;
133
149
  const height = Math.round(y + PAD - 14);
134
150
  const pageBg = isTransparent ? "" : `<rect width="100%" height="100%" fill="${c.bg}"/>`;
@@ -171,6 +187,10 @@ function diagrammoIcon(x, y, size) {
171
187
  const s = size / 100;
172
188
  return `<g transform="translate(${x} ${y}) scale(${s})"><rect width="100" height="100" rx="18" fill="#1f2933"/><path d="M41 71 L41 63.51 A28 28 0 1 1 59 63.51 L59 71" fill="none" stroke="#c9a227" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/><rect x="36" y="43" width="7" height="9" rx="1.9" fill="#c0504d"/><rect x="45" y="37" width="7" height="15" rx="1.9" fill="#5b9357"/><rect x="54" y="30" width="7" height="22" rx="1.9" fill="#3b6ea5"/><rect x="36" y="75" width="28" height="4.6" rx="2.3" fill="#7d5ba6"/><rect x="36" y="82" width="28" height="4.6" rx="2.3" fill="#7d5ba6"/><rect x="36" y="89" width="28" height="4.6" rx="2.3" fill="#7d5ba6"/></g>`;
173
189
  }
190
+ function docIcon(x, y, size, color) {
191
+ const s = size / 18;
192
+ return `<g transform="translate(${x} ${y}) scale(${s})" fill="none" stroke="${color}" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3.5 1.5h7l4 4v11h-11z"/><path d="M10.5 1.5v4h4"/><path d="M6 9.5h6M6 12.5h6"/></g>`;
193
+ }
174
194
  function escapeXml(s) {
175
195
  return s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
176
196
  }
@@ -402,9 +422,10 @@ function computeBBox(svg) {
402
422
  }
403
423
 
404
424
  export {
425
+ docsLink,
405
426
  renderErrorCard,
406
427
  normalizeSvgForEmbed,
407
428
  defaultEmbedBackground,
408
429
  getEmbedSvgViewBox
409
430
  };
410
- //# sourceMappingURL=chunk-DN66GPY5.js.map
431
+ //# sourceMappingURL=chunk-GJFAMOGK.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  measureText
3
- } from "./chunk-5LWQH6QV.js";
3
+ } from "./chunk-WCT3NYCV.js";
4
4
  import {
5
5
  formatDuration,
6
6
  formatScheduleValue,
7
7
  formatSlackValue,
8
8
  formatSprintCell
9
- } from "./chunk-L3UHP6TD.js";
9
+ } from "./chunk-7L4UJOY6.js";
10
10
 
11
11
  // src/pert/layout.ts
12
12
  import dagre from "@dagrejs/dagre";
@@ -603,4 +603,4 @@ export {
603
603
  layoutPert,
604
604
  relayoutPert
605
605
  };
606
- //# sourceMappingURL=chunk-F2L5GCQ4.js.map
606
+ //# sourceMappingURL=chunk-GU46PPT3.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  measureText
3
- } from "./chunk-5LWQH6QV.js";
3
+ } from "./chunk-WCT3NYCV.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-6IUAK7RZ.js.map
305
+ //# sourceMappingURL=chunk-H6PI3KJT.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-PDKUANDZ.js";
5
5
  import {
6
6
  layoutGraph
7
- } from "./chunk-SCQ5VPUF.js";
7
+ } from "./chunk-HFMYN6N2.js";
8
8
  import {
9
9
  appendArrowheadMarkers
10
10
  } from "./chunk-LP7EC4MI.js";
@@ -14,7 +14,7 @@ import {
14
14
  renderNoteBadge,
15
15
  renderNoteBox,
16
16
  renderNoteConnector
17
- } from "./chunk-JEUJOX5X.js";
17
+ } from "./chunk-J7TLCB2Q.js";
18
18
  import {
19
19
  EDGE_STROKE_WIDTH,
20
20
  NODE_STROKE_WIDTH
@@ -32,16 +32,19 @@ import {
32
32
  } from "./chunk-6KFWC4CO.js";
33
33
  import {
34
34
  measureText
35
- } from "./chunk-5LWQH6QV.js";
35
+ } from "./chunk-WCT3NYCV.js";
36
36
  import {
37
37
  contrastText,
38
38
  mix,
39
39
  shapeFill,
40
40
  themeBaseBg
41
- } from "./chunk-P6T66CCZ.js";
41
+ } from "./chunk-WBM7ZNDI.js";
42
42
  import {
43
43
  parseState
44
- } from "./chunk-2C56LEML.js";
44
+ } from "./chunk-ROOE4R4Y.js";
45
+ import {
46
+ fillModeFromOptions
47
+ } from "./chunk-BRENJ2BQ.js";
45
48
 
46
49
  // src/graph/state-renderer.ts
47
50
  import * as d3Selection from "d3-selection";
@@ -58,11 +61,9 @@ var GROUP_EXTRA_PADDING = 12;
58
61
  function stateDefaultColor(palette, colorOff) {
59
62
  return colorOff ? palette.textMuted : palette.colors.blue;
60
63
  }
61
- function stateFill(palette, isDark, nodeColor, colorOff, solid) {
64
+ function stateFill(palette, isDark, nodeColor, colorOff, fillMode) {
62
65
  const color = nodeColor ?? stateDefaultColor(palette, colorOff);
63
- return shapeFill(palette, color, isDark, {
64
- ...solid !== void 0 && { solid }
65
- });
66
+ return shapeFill(palette, color, isDark, { mode: fillMode });
66
67
  }
67
68
  function stateStroke(palette, nodeColor, colorOff) {
68
69
  return nodeColor ?? stateDefaultColor(palette, colorOff);
@@ -148,7 +149,8 @@ function renderState(container, graph, layout, palette, isDark, onClickItem, exp
148
149
  const gy = group.y - sGroupExtraPadding - sGroupLabelFontSize - 4;
149
150
  const gw = group.width + sGroupExtraPadding * 2;
150
151
  const gh = group.height + sGroupExtraPadding * 2 + sGroupLabelFontSize + 4;
151
- const fillColor = group.color ? mix(group.color, themeBaseBg(palette, isDark), 10) : isDark ? palette.surface : mix(palette.border, palette.bg, 30);
152
+ const groupOutline = fillModeFromOptions(graph.options ?? {}) === "outline";
153
+ const fillColor = groupOutline ? themeBaseBg(palette, isDark) : group.color ? mix(group.color, themeBaseBg(palette, isDark), 10) : isDark ? palette.surface : mix(palette.border, palette.bg, 30);
152
154
  const strokeColor = group.color ?? palette.textMuted;
153
155
  const groupWrapper = contentG.append("g").attr("class", "st-group-wrapper").attr("data-line-number", String(group.lineNumber)).attr("data-group-id", group.id).attr("data-group-toggle", group.id).attr("tabindex", "0").attr("role", "button").attr("aria-expanded", "true").attr("aria-label", `Collapse group ${group.label}`).style("cursor", "pointer");
154
156
  groupWrapper.append("rect").attr("x", gx).attr("y", gy).attr("width", gw).attr("height", gh).attr("rx", 6).attr("fill", fillColor).attr("stroke", strokeColor).attr("stroke-width", 1).attr("stroke-opacity", 0.5).attr("class", "st-group");
@@ -242,7 +244,7 @@ function renderState(container, graph, layout, palette, isDark, onClickItem, exp
242
244
  if (group.collapsed) collapsedGroupIds.add(group.id);
243
245
  }
244
246
  const colorOff = graph.options?.["color"] === "off";
245
- const solid = graph.options?.["solid-fill"] === "on";
247
+ const fillMode = fillModeFromOptions(graph.options ?? {});
246
248
  const noNotes = graph.options?.["no-notes"] === "on";
247
249
  for (const node of layout.nodes) {
248
250
  const isCollapsedGroup = collapsedGroupIds.has(node.id);
@@ -262,7 +264,9 @@ function renderState(container, graph, layout, palette, isDark, onClickItem, exp
262
264
  const w = node.width;
263
265
  const h = node.height;
264
266
  const groupColor = node.color ?? stateDefaultColor(palette, colorOff);
265
- const fillColor = shapeFill(palette, groupColor, isDark, { solid });
267
+ const fillColor = shapeFill(palette, groupColor, isDark, {
268
+ mode: fillMode
269
+ });
266
270
  const strokeColor = groupColor;
267
271
  const COLLAPSE_BAR_H = 6;
268
272
  nodeG.append("rect").attr("x", -w / 2).attr("y", -h / 2).attr("width", w).attr("height", h).attr("rx", sStateCornerRadius).attr("ry", sStateCornerRadius).attr("fill", fillColor).attr("stroke", strokeColor).attr("stroke-width", sNodeStrokeWidth);
@@ -285,7 +289,7 @@ function renderState(container, graph, layout, palette, isDark, onClickItem, exp
285
289
  isDark,
286
290
  node.color,
287
291
  colorOff,
288
- solid
292
+ fillMode
289
293
  );
290
294
  nodeG.append("rect").attr("x", -w / 2).attr("y", -h / 2).attr("width", w).attr("height", h).attr("rx", sStateCornerRadius).attr("ry", sStateCornerRadius).attr("fill", resolvedFill).attr("stroke", stateStroke(palette, node.color, colorOff)).attr("stroke-width", sNodeStrokeWidth);
291
295
  nodeG.append("text").attr("x", 0).attr("y", 0).attr("text-anchor", "middle").attr("dominant-baseline", "central").attr(
@@ -375,4 +379,4 @@ export {
375
379
  renderState,
376
380
  renderStateForExport
377
381
  };
378
- //# sourceMappingURL=chunk-ONA5KPV3.js.map
382
+ //# sourceMappingURL=chunk-H7KENAZO.js.map
@@ -10,7 +10,7 @@ import {
10
10
  tagAttrKey,
11
11
  validateTagGroupNames,
12
12
  validateTagValues
13
- } from "./chunk-FJUNPCYI.js";
13
+ } from "./chunk-HHKO6SKY.js";
14
14
  import {
15
15
  normalizeName
16
16
  } from "./chunk-NOTA6TEI.js";
@@ -25,7 +25,7 @@ import {
25
25
  tryParseSharedOption,
26
26
  warnUnknownMetaKeys,
27
27
  withTagAliases
28
- } from "./chunk-OTAL43EH.js";
28
+ } from "./chunk-BRENJ2BQ.js";
29
29
  import {
30
30
  formatDgmoError,
31
31
  makeDgmoError,
@@ -519,4 +519,4 @@ export {
519
519
  looksLikeSitemap,
520
520
  parseSitemap
521
521
  };
522
- //# sourceMappingURL=chunk-SQLNBA64.js.map
522
+ //# sourceMappingURL=chunk-HBPDFCQY.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-6EK55ART.js";
5
5
  import {
6
6
  noteBoxSize
7
- } from "./chunk-BCYVE3N5.js";
7
+ } from "./chunk-TYS6CSS5.js";
8
8
  import {
9
9
  resolveNotes
10
10
  } from "./chunk-FMDSF3OV.js";
@@ -310,4 +310,4 @@ function layoutGraph(graph, options) {
310
310
  export {
311
311
  layoutGraph
312
312
  };
313
- //# sourceMappingURL=chunk-SCQ5VPUF.js.map
313
+ //# sourceMappingURL=chunk-HFMYN6N2.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  stripQuotes,
3
3
  tokenizeQuoteAware
4
- } from "./chunk-OTAL43EH.js";
4
+ } from "./chunk-BRENJ2BQ.js";
5
5
  import {
6
6
  CATEGORICAL_COLOR_ORDER,
7
7
  RECOGNIZED_COLOR_NAMES,
@@ -250,4 +250,4 @@ export {
250
250
  resolveActiveTagGroup,
251
251
  matchTagBlockHeading
252
252
  };
253
- //# sourceMappingURL=chunk-FJUNPCYI.js.map
253
+ //# sourceMappingURL=chunk-HHKO6SKY.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SKETCH_DIAGNOSTIC_CODES
3
- } from "./chunk-XHVV4NVW.js";
3
+ } from "./chunk-RT7ACF77.js";
4
4
  import {
5
5
  AUTO_TAG_COLOR_SENTINEL,
6
6
  finalizeAutoTagColors,
@@ -10,7 +10,7 @@ import {
10
10
  tagAttrKey,
11
11
  validateTagGroupNames,
12
12
  validateTagValues
13
- } from "./chunk-FJUNPCYI.js";
13
+ } from "./chunk-HHKO6SKY.js";
14
14
  import {
15
15
  parseInArrowLabel
16
16
  } from "./chunk-FFUN5D66.js";
@@ -20,13 +20,14 @@ import {
20
20
  import {
21
21
  SKETCH_REGISTRY,
22
22
  extractColor,
23
+ fillModeFromToken,
23
24
  measureIndent,
24
25
  parseFirstLine,
25
26
  splitNameAndMeta,
26
27
  stripQuotes,
27
28
  warnUnknownMetaKeys,
28
29
  withTagAliases
29
- } from "./chunk-OTAL43EH.js";
30
+ } from "./chunk-BRENJ2BQ.js";
30
31
  import {
31
32
  NAME_DIAGNOSTIC_CODES,
32
33
  formatDgmoError,
@@ -69,10 +70,11 @@ var LEFT_ARROW_RE = /^<[-~](?![-~]?>)/;
69
70
  var BOX_RE = /^\[([^\]]*)\]\s*(.*)$/;
70
71
  var BOX_TAIL_ALIAS_RE = /^as\s+([A-Za-z][A-Za-z0-9_]{0,11})(?=\s|,|$)\s*,?\s*/;
71
72
  var AT_VALUE_RE = /^(-?\d+)\s+(-?\d+)$/;
73
+ var SKETCH_AT_MAX = 2e3;
72
74
  function parseSketch(content, palette) {
73
75
  const options = {
74
76
  noLegend: false,
75
- solidFill: false,
77
+ fillMode: void 0,
76
78
  noDescriptions: false
77
79
  };
78
80
  const result = {
@@ -118,7 +120,17 @@ function parseSketch(content, palette) {
118
120
  );
119
121
  return null;
120
122
  }
121
- return { c: parseInt(m[1], 10), r: parseInt(m[2], 10) };
123
+ const c = parseInt(m[1], 10);
124
+ const r = parseInt(m[2], 10);
125
+ if (!Number.isSafeInteger(c) || !Number.isSafeInteger(r) || Math.abs(c) > SKETCH_AT_MAX || Math.abs(r) > SKETCH_AT_MAX) {
126
+ warn(
127
+ lineNumber,
128
+ `at: coordinate "${raw}" is out of range \u2014 half-slot coords must be whole numbers within \xB1${SKETCH_AT_MAX}; shape will flow-place`,
129
+ SKETCH_DIAGNOSTIC_CODES.AT_OUT_OF_RANGE
130
+ );
131
+ return null;
132
+ }
133
+ return { c, r };
122
134
  };
123
135
  const liftReserved = (meta, lineNumber) => {
124
136
  let shape = "rectangle";
@@ -446,8 +458,9 @@ function parseSketch(content, palette) {
446
458
  options.noLegend = true;
447
459
  continue;
448
460
  }
449
- if (indent === 0 && /^solid-fill\s*$/i.test(trimmed)) {
450
- options.solidFill = true;
461
+ if (indent === 0 && fillModeFromToken(trimmed) !== null) {
462
+ const fm = fillModeFromToken(trimmed);
463
+ options.fillMode = fm === "tint" ? void 0 : fm;
451
464
  continue;
452
465
  }
453
466
  if (indent === 0 && /^no-descriptions\s*$/i.test(trimmed)) {
@@ -614,4 +627,4 @@ export {
614
627
  isSketchShapeKind,
615
628
  parseSketch
616
629
  };
617
- //# sourceMappingURL=chunk-DZXYF2F5.js.map
630
+ //# sourceMappingURL=chunk-HQQNCY7W.js.map
@@ -4,14 +4,14 @@ import {
4
4
  import {
5
5
  measureText,
6
6
  truncateText
7
- } from "./chunk-5LWQH6QV.js";
7
+ } from "./chunk-WCT3NYCV.js";
8
8
  import {
9
9
  preprocessDescriptionLine
10
10
  } from "./chunk-IYULMRBE.js";
11
11
  import {
12
12
  injectDefaultTagMetadata,
13
13
  resolveTagColor
14
- } from "./chunk-FJUNPCYI.js";
14
+ } from "./chunk-HHKO6SKY.js";
15
15
 
16
16
  // src/mindmap/text-wrap.ts
17
17
  var H_PAD = 16;
@@ -547,4 +547,4 @@ export {
547
547
  computeNodeText,
548
548
  layoutMindmap
549
549
  };
550
- //# sourceMappingURL=chunk-7TV5Y53Y.js.map
550
+ //# sourceMappingURL=chunk-HWX6ZHF3.js.map
@@ -5,7 +5,7 @@ import {
5
5
  splitNameAndMeta,
6
6
  tryParseSharedOption,
7
7
  warnUnknownMetaKeys
8
- } from "./chunk-OTAL43EH.js";
8
+ } from "./chunk-BRENJ2BQ.js";
9
9
  import {
10
10
  makeDgmoError,
11
11
  makeFail
@@ -127,4 +127,4 @@ function parsePyramid(content) {
127
127
  export {
128
128
  parsePyramid
129
129
  };
130
- //# sourceMappingURL=chunk-3P2DKJCG.js.map
130
+ //# sourceMappingURL=chunk-ICPJPQ5C.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-FQ7HTV52.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-HHKO6SKY.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-BRENJ2BQ.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-IM6PDDCE.js.map
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-YYVTBZZC.js";
10
10
  import {
11
11
  renderIntegratedLegend
12
- } from "./chunk-HEVYAHLW.js";
12
+ } from "./chunk-AUIM2NVH.js";
13
13
  import {
14
14
  TITLE_FONT_SIZE,
15
15
  TITLE_FONT_WEIGHT,
@@ -20,15 +20,18 @@ import {
20
20
  } from "./chunk-6KFWC4CO.js";
21
21
  import {
22
22
  LEGEND_HEIGHT
23
- } from "./chunk-HQCHYB5F.js";
23
+ } from "./chunk-QOOUC2J5.js";
24
24
  import {
25
25
  measureText,
26
26
  wrapTextToWidth
27
- } from "./chunk-5LWQH6QV.js";
27
+ } from "./chunk-WCT3NYCV.js";
28
28
  import {
29
29
  contrastText,
30
30
  shapeFill
31
- } from "./chunk-P6T66CCZ.js";
31
+ } from "./chunk-WBM7ZNDI.js";
32
+ import {
33
+ fillModeFromOptions
34
+ } from "./chunk-BRENJ2BQ.js";
32
35
  import {
33
36
  resolveColor
34
37
  } from "./chunk-TLVIHFRO.js";
@@ -678,7 +681,7 @@ var DESC_LINE_HEIGHT2 = 15;
678
681
  var TITLE_AREA_HEIGHT = 50;
679
682
  function renderCycle(container, parsed, palette, isDark, onClickItem, exportDims, viewState, renderOptions) {
680
683
  if (parsed.nodes.length === 0) return;
681
- const solid = parsed.options?.["solid-fill"] === "on";
684
+ const fillMode = fillModeFromOptions(parsed.options ?? {});
682
685
  d3Selection.select(container).selectAll(":not([data-d3-tooltip])").remove();
683
686
  const width = exportDims?.width ?? container.clientWidth;
684
687
  const height = exportDims?.height ?? container.clientHeight;
@@ -815,7 +818,9 @@ function renderCycle(container, parsed, palette, isDark, onClickItem, exportDims
815
818
  const ln = layout.nodes[i];
816
819
  const node = parsed.nodes[i];
817
820
  const solidColor = resolveNodeColor(node.color, palette, defaultNodeColor);
818
- const fillColor = shapeFill(palette, solidColor, isDark, { solid });
821
+ const fillColor = shapeFill(palette, solidColor, isDark, {
822
+ mode: fillMode
823
+ });
819
824
  const textColor = contrastText(
820
825
  fillColor,
821
826
  palette.textOnFillLight,
@@ -859,7 +864,7 @@ function renderCycle(container, parsed, palette, isDark, onClickItem, exportDims
859
864
  const labelText = nodeG.append("text").attr("x", ln.x).attr("y", headerCenterY + scaledNodeFont / 3).attr("text-anchor", "middle").attr("fill", textColor).attr("font-family", FONT_FAMILY).attr("font-size", scaledNodeFont).attr("font-weight", "600");
860
865
  renderInlineText(labelText, node.label, palette, scaledNodeFont);
861
866
  const sepY = ln.y - nodeH / 2 + HEADER_H;
862
- nodeG.append("line").attr("x1", ln.x - nodeW / 2).attr("y1", sepY).attr("x2", ln.x + nodeW / 2).attr("y2", sepY).attr("stroke", solid ? descColor : solidColor).attr("stroke-opacity", 0.3).attr("stroke-width", 1);
867
+ nodeG.append("line").attr("x1", ln.x - nodeW / 2).attr("y1", sepY).attr("x2", ln.x + nodeW / 2).attr("y2", sepY).attr("stroke", fillMode === "solid" ? descColor : solidColor).attr("stroke-opacity", 0.3).attr("stroke-width", 1);
863
868
  const descStartY = sepY + 4 + scaledDescFont;
864
869
  const descPadX = Math.max(8, 12 * layout.scale);
865
870
  const descX = ln.x - nodeW / 2 + descPadX;
@@ -964,4 +969,4 @@ export {
964
969
  renderCycle,
965
970
  renderCycleForExport
966
971
  };
967
- //# sourceMappingURL=chunk-JJUOHGX2.js.map
972
+ //# sourceMappingURL=chunk-INE5YJBZ.js.map
@@ -1,7 +1,12 @@
1
1
  import {
2
2
  extractDatePrefix,
3
3
  parseTimelineDate
4
- } from "./chunk-I7F2A35O.js";
4
+ } from "./chunk-R3YSD62R.js";
5
+ import {
6
+ makeYearContext,
7
+ parseDateToken,
8
+ resolveTokenYear
9
+ } from "./chunk-DAOFNU6J.js";
5
10
  import {
6
11
  AUTO_TAG_COLOR_SENTINEL,
7
12
  finalizeAutoTagColors,
@@ -11,17 +16,18 @@ import {
11
16
  tagAttrKey,
12
17
  validateTagGroupNames,
13
18
  validateTagValues
14
- } from "./chunk-FJUNPCYI.js";
19
+ } from "./chunk-HHKO6SKY.js";
15
20
  import {
16
21
  EVENT_LINE_REGISTRY,
17
22
  extractColor,
23
+ fillModeFromToken,
18
24
  measureIndent,
19
25
  parseFirstLine,
20
26
  splitNameAndMeta,
21
27
  tryParseSharedOption,
22
28
  warnUnknownMetaKeys,
23
29
  withTagAliases
24
- } from "./chunk-OTAL43EH.js";
30
+ } from "./chunk-BRENJ2BQ.js";
25
31
  import {
26
32
  emit,
27
33
  formatDgmoError,
@@ -135,7 +141,7 @@ function parseEventLine(content, palette) {
135
141
  noTitle: false,
136
142
  noBox: false,
137
143
  noLegend: false,
138
- solidFill: false
144
+ fillMode: void 0
139
145
  };
140
146
  const result = {
141
147
  type: "event-line",
@@ -159,6 +165,40 @@ function parseEventLine(content, palette) {
159
165
  };
160
166
  if (!content?.trim()) return fail(0, "No content provided");
161
167
  const lines = content.split("\n");
168
+ let dateOrder = "mdy";
169
+ let noCurrentYear = false;
170
+ let directiveYear = null;
171
+ for (const raw of lines) {
172
+ const t = raw.trim().toLowerCase();
173
+ if (t === "no-current-year") noCurrentYear = true;
174
+ else if (t === "date-order dmy") dateOrder = "dmy";
175
+ else if (t === "date-order mdy") dateOrder = "mdy";
176
+ else {
177
+ const ym = t.match(/^year\s+(\d{1,4})$/);
178
+ if (ym) directiveYear = parseInt(ym[1], 10);
179
+ }
180
+ }
181
+ let prescan = null;
182
+ for (const raw of lines) {
183
+ const t = raw.trim();
184
+ if (!t) continue;
185
+ const p = parseDateToken(t, { dateOrder });
186
+ if (p?.token.year != null) {
187
+ prescan = p.token.sign * p.token.year;
188
+ break;
189
+ }
190
+ }
191
+ const yearCtx = makeYearContext({
192
+ order: dateOrder,
193
+ directiveYear,
194
+ prescanYear: prescan,
195
+ noCurrentYear
196
+ });
197
+ const dateCtx = {
198
+ order: dateOrder,
199
+ resolve: (tok) => resolveTokenYear(tok, yearCtx)
200
+ };
201
+ const isDateDirective = (t) => t === "no-current-year" || t === "date-order dmy" || t === "date-order mdy" || /^year\s+\d{1,4}$/.test(t);
162
202
  let contentStarted = false;
163
203
  let headerParsed = false;
164
204
  const sharedOptions = {};
@@ -277,6 +317,9 @@ function parseEventLine(content, palette) {
277
317
  }
278
318
  if (indent === 0) {
279
319
  currentTagGroup = null;
320
+ if (isDateDirective(trimmed.toLowerCase())) {
321
+ continue;
322
+ }
280
323
  if (trimmed.toLowerCase() === "no-scale") {
281
324
  options.scale = false;
282
325
  continue;
@@ -294,9 +337,12 @@ function parseEventLine(content, palette) {
294
337
  options.noLegend = true;
295
338
  continue;
296
339
  }
297
- if (trimmed.toLowerCase() === "solid-fill") {
298
- options.solidFill = true;
299
- continue;
340
+ {
341
+ const fm = fillModeFromToken(trimmed);
342
+ if (fm !== null) {
343
+ options.fillMode = fm === "tint" ? void 0 : fm;
344
+ continue;
345
+ }
300
346
  }
301
347
  const dirMatch = trimmed.match(DIRECTION_RE);
302
348
  if (dirMatch) {
@@ -329,7 +375,8 @@ function parseEventLine(content, palette) {
329
375
  currentEra,
330
376
  aliasMap,
331
377
  result.diagnostics,
332
- pushWarning
378
+ pushWarning,
379
+ dateCtx
333
380
  );
334
381
  result.events.push(event);
335
382
  currentEvent = event;
@@ -489,7 +536,7 @@ function validateEraDateOrder(events, eras, emitWarn) {
489
536
  }
490
537
  }
491
538
  }
492
- function parseEventHeader(trimmed, lineNumber, era, aliasMap, diagnostics, pushWarning) {
539
+ function parseEventHeader(trimmed, lineNumber, era, aliasMap, diagnostics, pushWarning, dateCtx) {
493
540
  let date = null;
494
541
  let dateValue = null;
495
542
  let future = false;
@@ -500,7 +547,7 @@ function parseEventHeader(trimmed, lineNumber, era, aliasMap, diagnostics, pushW
500
547
  future = true;
501
548
  remainder = trimmed.slice(tbdMatch[0].length).trimStart();
502
549
  }
503
- const prefix = future ? null : extractDatePrefix(trimmed);
550
+ const prefix = future ? null : extractDatePrefix(trimmed, dateCtx);
504
551
  if (prefix) {
505
552
  date = prefix.startDate;
506
553
  dateValue = parseTimelineDate(prefix.startDate);
@@ -555,4 +602,4 @@ export {
555
602
  EVENT_LINE_DIAGNOSTICS,
556
603
  parseEventLine
557
604
  };
558
- //# sourceMappingURL=chunk-HTMN2Z6U.js.map
605
+ //# sourceMappingURL=chunk-J6QROYDA.js.map
@@ -3,7 +3,7 @@ import {
3
3
  addCalendarDays,
4
4
  resolveConfidence,
5
5
  unitToDays
6
- } from "./chunk-L3UHP6TD.js";
6
+ } from "./chunk-7L4UJOY6.js";
7
7
  import {
8
8
  makeDgmoError
9
9
  } from "./chunk-CXK4DZH3.js";
@@ -1059,4 +1059,4 @@ export {
1059
1059
  buildSummary,
1060
1060
  buildProjectSubtitle
1061
1061
  };
1062
- //# sourceMappingURL=chunk-NX4EQS3U.js.map
1062
+ //# sourceMappingURL=chunk-J76PIKAT.js.map