@diagrammo/dgmo 0.51.0 → 0.53.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (336) hide show
  1. package/.cursorrules +74 -77
  2. package/.github/copilot-instructions.md +74 -77
  3. package/.windsurfrules +74 -77
  4. package/SKILL.md +74 -77
  5. package/dist/advanced.d.ts +109 -246
  6. package/dist/advanced.js +296 -633
  7. package/dist/analyzer-TDN5KJFP.js +15 -0
  8. package/dist/auto.css +14 -6
  9. package/dist/auto.js +141 -129
  10. package/dist/auto.mjs +2062 -937
  11. package/dist/block.css +14 -6
  12. package/dist/block.js +123 -73
  13. package/dist/calculator-VBIT6GQF.js +11 -0
  14. package/dist/chart-meta-CPNVUZ5J.d.ts +232 -0
  15. package/dist/chart-meta.d.ts +2 -0
  16. package/dist/chart-meta.js +105 -0
  17. package/dist/charts-d3-DH2XA45I.js +26 -0
  18. package/dist/{chunk-RLFVAKEO.js → chunk-22OQWBWD.js} +25 -8
  19. package/dist/{chunk-I2QZFCS2.js → chunk-27STWBOK.js} +10 -8
  20. package/dist/{chunk-5PZT4DQG.js → chunk-2QC4HXCY.js} +41 -21
  21. package/dist/{chunk-HFMYN6N2.js → chunk-3B2GXZCX.js} +4 -3
  22. package/dist/{chunk-F3FYUFUH.js → chunk-3BEKKRH5.js} +18 -17
  23. package/dist/{chunk-2UJSV2VT.js → chunk-3CZLWOCI.js} +17 -7
  24. package/dist/{chunk-JEUJOX5X.js → chunk-3IUHKMJI.js} +2 -2
  25. package/dist/{chunk-7L4UJOY6.js → chunk-3TYUXC7D.js} +2 -2
  26. package/dist/{chunk-Y2ZE3MSG.js → chunk-43E26CDA.js} +2 -2
  27. package/dist/{chunk-ZO27FGJS.js → chunk-4ASVFYB2.js} +10 -7
  28. package/dist/{chunk-WCT3NYCV.js → chunk-4ASYQ347.js} +33 -8
  29. package/dist/{chunk-2ILHQOL3.js → chunk-4K42RUGC.js} +41 -13
  30. package/dist/{chunk-I5IGB56C.js → chunk-4QV26TEG.js} +41 -1
  31. package/dist/{chunk-QOOUC2J5.js → chunk-4RGZFA7H.js} +2 -2
  32. package/dist/{chunk-CXK4DZH3.js → chunk-4W2PE66Q.js} +12 -2
  33. package/dist/{chunk-EXOQP75F.js → chunk-4WGMGKCZ.js} +53 -33
  34. package/dist/{chunk-JED6ZDEE.js → chunk-5HWPEYWB.js} +2 -2
  35. package/dist/{chunk-3YSQZ75W.js → chunk-65V6IRFN.js} +46 -33
  36. package/dist/{chunk-TMACGPW5.js → chunk-6AUZPPAV.js} +4 -4
  37. package/dist/{chunk-6H7O2OPM.js → chunk-6DCOIN4W.js} +36 -6
  38. package/dist/{chunk-GTWKD3QT.js → chunk-6HTRCTAS.js} +7 -6
  39. package/dist/{chunk-VB4UJ3H2.js → chunk-6KY7OCZC.js} +21 -11
  40. package/dist/{chunk-YAA6IID3.js → chunk-774C2FF3.js} +2 -2
  41. package/dist/{chunk-WJ7RW65H.js → chunk-7GUF6SDR.js} +22 -20
  42. package/dist/{chunk-QYTPPDAO.js → chunk-7JDTNFAK.js} +3 -3
  43. package/dist/{chunk-U6EQI3U6.js → chunk-ADYKAKE3.js} +3 -3
  44. package/dist/{chunk-VNSXLA6G.js → chunk-AHXIMHDQ.js} +84 -20
  45. package/dist/chunk-AIMLCDAO.js +404 -0
  46. package/dist/{chunk-6MNGECP2.js → chunk-ALYZ3MAA.js} +4 -4
  47. package/dist/{chunk-5F5ELR3V.js → chunk-AN2DQB3G.js} +151 -20
  48. package/dist/{chunk-IEWG6J7C.js → chunk-AZNXGWDC.js} +91 -36
  49. package/dist/{chunk-4XFBQT5O.js → chunk-B4XS2AF2.js} +3 -3
  50. package/dist/{chunk-CC4YRBWV.js → chunk-BD3WGY4T.js} +18 -8
  51. package/dist/{chunk-RAHVMKBG.js → chunk-BFDVEO5R.js} +2 -2
  52. package/dist/{chunk-332ZR4QU.js → chunk-BR7AYN76.js} +8 -8
  53. package/dist/{chunk-P3NRSSUU.js → chunk-BULHGPHK.js} +3 -3
  54. package/dist/{chunk-PZDBOK2Q.js → chunk-CK2GMDXD.js} +11 -5
  55. package/dist/{chunk-467TVMQL.js → chunk-CMVZWP32.js} +3 -3
  56. package/dist/{chunk-GNSFLJAA.js → chunk-CQFNIIQN.js} +7 -7
  57. package/dist/{chunk-RBDIYLA5.js → chunk-DAOFNU6J.js} +17 -1
  58. package/dist/{chunk-AFIEPDLX.js → chunk-DWUMPMV2.js} +23 -11
  59. package/dist/{chunk-USZW2HHU.js → chunk-EQW6HOP4.js} +4 -3
  60. package/dist/{chunk-6BQFET7X.js → chunk-FFXCKZOU.js} +12 -4
  61. package/dist/{chunk-WRNFDFPU.js → chunk-FGDSTT3F.js} +2 -2
  62. package/dist/{chunk-6NFYEQDX.js → chunk-FLDC7ZAK.js} +34 -7
  63. package/dist/{chunk-IUJODQKX.js → chunk-FT7TPPZ5.js} +25 -23
  64. package/dist/{chunk-IEDMFNU7.js → chunk-FUKNRLIJ.js} +19 -7
  65. package/dist/{chunk-JJXGQIRV.js → chunk-FXCB7H5O.js} +4 -4
  66. package/dist/{chunk-GGHRAITI.js → chunk-GABSL6TH.js} +4 -4
  67. package/dist/{chunk-RXKTSFDL.js → chunk-GAWKIIPO.js} +35 -43
  68. package/dist/{chunk-ZJ3LS7DW.js → chunk-GMAH572Z.js} +6 -6
  69. package/dist/{chunk-TRM2J7ZN.js → chunk-GMIJ35PW.js} +28 -29
  70. package/dist/{chunk-AB7INMR5.js → chunk-GQ644SPD.js} +26 -25
  71. package/dist/{chunk-5QKQSSPO.js → chunk-GRM2A4BG.js} +4 -4
  72. package/dist/{chunk-3ODS2VGL.js → chunk-GWQJKTFS.js} +161 -704
  73. package/dist/{chunk-OTOHI4JO.js → chunk-H3HFC3SQ.js} +2 -2
  74. package/dist/{chunk-JSSX2SX4.js → chunk-HE5J53SZ.js} +4 -4
  75. package/dist/{chunk-2EQMXBBQ.js → chunk-HNBY6CNV.js} +3 -3
  76. package/dist/{chunk-J76PIKAT.js → chunk-HO3RCNF6.js} +3 -3
  77. package/dist/{chunk-OJTXTQA2.js → chunk-HORZ5H2L.js} +38 -31
  78. package/dist/{chunk-MX2EY5Y7.js → chunk-HOXKNRON.js} +2 -2
  79. package/dist/{chunk-E7Y3SYKW.js → chunk-I64ECJX3.js} +18 -8
  80. package/dist/{chunk-JM4LEPY3.js → chunk-IQJCVREL.js} +11 -8
  81. package/dist/{chunk-3JLKYGBQ.js → chunk-J7HI6G3G.js} +9 -6
  82. package/dist/{chunk-Q62FEYK3.js → chunk-JHOAH4TI.js} +3 -3
  83. package/dist/{chunk-OZPBJM5Q.js → chunk-JTMSWEIW.js} +11 -8
  84. package/dist/{chunk-P6T66CCZ.js → chunk-JYDMBWRP.js} +37 -19
  85. package/dist/{chunk-7DF4J4RL.js → chunk-KKHCNSKK.js} +17 -11
  86. package/dist/{chunk-ENRS56GC.js → chunk-KUSAVOWZ.js} +11 -8
  87. package/dist/{chunk-BYJBIALT.js → chunk-LC3FFD43.js} +23 -18
  88. package/dist/{chunk-65WJYYKJ.js → chunk-LHILKFDP.js} +16 -11
  89. package/dist/{chunk-NEQ6GJXB.js → chunk-LQHVDZYC.js} +52 -16
  90. package/dist/{chunk-5WPNFSXP.js → chunk-MA3HJZHB.js} +5 -5
  91. package/dist/{chunk-Z6XJQ6KO.js → chunk-MEQYZZFR.js} +3 -3
  92. package/dist/{chunk-MVN25IF6.js → chunk-NNUMX6WX.js} +42 -12
  93. package/dist/{chunk-7DYOELRK.js → chunk-NNYFQOTK.js} +78 -38
  94. package/dist/{chunk-NNAAJVBU.js → chunk-NR5HCAUD.js} +1 -1
  95. package/dist/{chunk-H6PI3KJT.js → chunk-ODUT5WMC.js} +2 -2
  96. package/dist/{chunk-5PDTIBLV.js → chunk-P3H7QVDH.js} +56 -19
  97. package/dist/{chunk-ND76YJCN.js → chunk-PIXZTCKH.js} +84 -117
  98. package/dist/{chunk-3LV2NCB6.js → chunk-PKNNHU7H.js} +22 -9
  99. package/dist/{chunk-TK2VQQX2.js → chunk-PT4SW76W.js} +20 -18
  100. package/dist/{chunk-AE7II3E3.js → chunk-PV2QO7QL.js} +4 -4
  101. package/dist/{chunk-FTBZV6NE.js → chunk-PYO4TJJ3.js} +34 -26
  102. package/dist/{chunk-QZPEGJOM.js → chunk-Q7AH665U.js} +28 -14
  103. package/dist/{chunk-QHI5XVUJ.js → chunk-QAALSCKI.js} +27 -26
  104. package/dist/{chunk-GD6L76WD.js → chunk-QI3BOLQB.js} +23 -11
  105. package/dist/{chunk-Y6GBQTBK.js → chunk-QWIBT6DS.js} +50 -28
  106. package/dist/{chunk-GU46PPT3.js → chunk-QXGACPS2.js} +5 -5
  107. package/dist/{chunk-FMDSF3OV.js → chunk-QZAW5SFH.js} +2 -2
  108. package/dist/{chunk-YGJZWZTY.js → chunk-R5NH5BZG.js} +12 -9
  109. package/dist/{chunk-U5SI5NIM.js → chunk-RJ5LBZ5U.js} +43 -26
  110. package/dist/{chunk-XHVV4NVW.js → chunk-RT7ACF77.js} +12 -2
  111. package/dist/{chunk-XEQXCIBC.js → chunk-RW5PEJ7D.js} +18 -6
  112. package/dist/{chunk-4VWJ4LW2.js → chunk-SG4PRYO3.js} +61 -49
  113. package/dist/{chunk-RBHWPDBB.js → chunk-SGPFVDUL.js} +18 -7
  114. package/dist/{chunk-KJGG2JKQ.js → chunk-SQCBSFT5.js} +84 -79
  115. package/dist/{chunk-5X6YQA2J.js → chunk-U7NKYLX2.js} +18 -16
  116. package/dist/chunk-U7VO6JAA.js +566 -0
  117. package/dist/{chunk-32XPAAET.js → chunk-UFQJMOVZ.js} +10 -10
  118. package/dist/{chunk-Z72XRXD4.js → chunk-UJRTPOHH.js} +3 -3
  119. package/dist/{chunk-EDA6C7MV.js → chunk-UK6DKJLD.js} +34 -14
  120. package/dist/{chunk-GROLTAWZ.js → chunk-UKP5HWB5.js} +149 -89
  121. package/dist/{chunk-DY7XLRHK.js → chunk-UQRIKAMH.js} +28 -27
  122. package/dist/{chunk-TYS6CSS5.js → chunk-UU6LUYUH.js} +2 -2
  123. package/dist/{chunk-NI3XQBPB.js → chunk-UVDCHR4E.js} +18 -6
  124. package/dist/{chunk-6K2M4VSR.js → chunk-VAO6ANGC.js} +23 -10
  125. package/dist/{chunk-6NYWYNBI.js → chunk-VGNIDAPQ.js} +4 -4
  126. package/dist/{chunk-VL2O2F3W.js → chunk-VHO3YBTB.js} +2 -2
  127. package/dist/{chunk-IUO34HKW.js → chunk-VIRANCNY.js} +36 -32
  128. package/dist/{chunk-4QZ43D7I.js → chunk-VJHBSPGF.js} +12 -14
  129. package/dist/{chunk-BGP54HVR.js → chunk-VKNCC2GX.js} +12 -8
  130. package/dist/{chunk-FC5I2KXV.js → chunk-VRRDUYOK.js} +7 -7
  131. package/dist/{chunk-G3PF3S7P.js → chunk-W2DINCHL.js} +15 -15
  132. package/dist/{chunk-OU7HLO7I.js → chunk-W5KMNC5U.js} +8 -8
  133. package/dist/{chunk-FFUN5D66.js → chunk-WF64MW5G.js} +2 -2
  134. package/dist/{chunk-X7EC3L2H.js → chunk-X3RXGSCZ.js} +48 -30
  135. package/dist/{chunk-KFNWFNAA.js → chunk-XEAQDIMF.js} +7 -6
  136. package/dist/{chunk-AXW3M6OQ.js → chunk-XG4NWFPY.js} +38 -27
  137. package/dist/{chunk-B63YB7X3.js → chunk-XQ4KN6JQ.js} +127 -65
  138. package/dist/{chunk-WBRZJOEC.js → chunk-XY3UDKKH.js} +4 -4
  139. package/dist/{chunk-IE477RQZ.js → chunk-YG2BEIQU.js} +14 -13
  140. package/dist/{chunk-LV4BETUU.js → chunk-YJVA3QUU.js} +55 -5
  141. package/dist/{chunk-5SVOCD5W.js → chunk-YR43LJT5.js} +20 -16
  142. package/dist/{chunk-TLVIHFRO.js → chunk-ZKPPI6BF.js} +2 -2
  143. package/dist/{chunk-WQLMU7VG.js → chunk-ZXUAPTCK.js} +3 -3
  144. package/dist/cli.cjs +158 -155
  145. package/dist/clock.js +25 -23
  146. package/dist/countdown.js +4 -3
  147. package/dist/dgmo-router-B4S23EBH.js +86 -0
  148. package/dist/dimensions-K6PGYYGT.js +22 -0
  149. package/dist/editor.js +36 -6
  150. package/dist/element.js +143 -131
  151. package/dist/element.mjs +2062 -937
  152. package/dist/flowchart-parser-LALR6J6F.js +21 -0
  153. package/dist/{flowchart-renderer-AQSMEMYF.js → flowchart-renderer-DXYB5YRF.js} +14 -14
  154. package/dist/highlight.d.ts +21 -1
  155. package/dist/highlight.js +129 -8
  156. package/dist/index.d.ts +4 -2
  157. package/dist/index.js +80 -75
  158. package/dist/layout-3BVDMKXI.js +15 -0
  159. package/dist/layout-3M5UYJHY.js +14 -0
  160. package/dist/{layout-JDJAEQ3P.js → layout-3V2A4MUE.js} +8 -8
  161. package/dist/layout-4IHCMWZN.js +19 -0
  162. package/dist/layout-5XGYNYVT.js +9 -0
  163. package/dist/layout-AZUPXWSK.js +15 -0
  164. package/dist/{layout-F4WO357A.js → layout-CAAKQX4W.js} +3 -3
  165. package/dist/layout-CB3XWCOI.js +10 -0
  166. package/dist/{layout-OAC4PEAC.js → layout-E6HR6PXH.js} +7 -7
  167. package/dist/{layout-7QXCNOVS.js → layout-HBWT2G23.js} +3 -3
  168. package/dist/layout-KPQWJNAG.js +14 -0
  169. package/dist/layout-OL2XFJXA.js +17 -0
  170. package/dist/layout-WCAIKGZG.js +19 -0
  171. package/dist/layout-WSMPBQ4Q.js +17 -0
  172. package/dist/layout-ZE5DRJWX.js +20 -0
  173. package/dist/{layout-search-55FU6HD3.js → layout-search-34DPZD43.js} +51 -35
  174. package/dist/legend-constants-P5EQWRQQ.js +49 -0
  175. package/dist/{palettes-PRJ2RI6D.js → palettes-FGTNFARW.js} +4 -4
  176. package/dist/{parser-KKTJ6M3Y.js → parser-275KP7JO.js} +8 -8
  177. package/dist/parser-27Z76SN3.js +22 -0
  178. package/dist/parser-3CODK6RG.js +15 -0
  179. package/dist/{parser-EH5VE7ZN.js → parser-3KIGEEJM.js} +6 -6
  180. package/dist/parser-3VSWEKBF.js +15 -0
  181. package/dist/parser-4E4I3GNT.js +13 -0
  182. package/dist/parser-5FGJSQNS.js +12 -0
  183. package/dist/parser-5HQXCNOS.js +12 -0
  184. package/dist/parser-5QPFOB5F.js +12 -0
  185. package/dist/parser-6B6SSZT7.js +11 -0
  186. package/dist/parser-6PPHAXXH.js +14 -0
  187. package/dist/parser-7JHWEWXM.js +13 -0
  188. package/dist/{parser-5PDYJGWA.js → parser-7JVIDLLR.js} +7 -7
  189. package/dist/parser-CKA3QMAG.js +18 -0
  190. package/dist/parser-CRKLXGW7.js +13 -0
  191. package/dist/parser-EXNBDNGY.js +11 -0
  192. package/dist/parser-FF4BMRSB.js +16 -0
  193. package/dist/parser-FOOFEJQU.js +13 -0
  194. package/dist/parser-G26MTBFS.js +11 -0
  195. package/dist/parser-GKP2MHHL.js +11 -0
  196. package/dist/parser-GN2MM5CC.js +11 -0
  197. package/dist/parser-IKWK2ZU3.js +18 -0
  198. package/dist/parser-IVGHXLZP.js +14 -0
  199. package/dist/parser-NNIL3HXU.js +11 -0
  200. package/dist/parser-RNLTBIJ6.js +19 -0
  201. package/dist/parser-UWRX52PC.js +16 -0
  202. package/dist/parser-VOERD6XR.js +14 -0
  203. package/dist/parser-XNKJCMMA.js +13 -0
  204. package/dist/parser-XVPTRWZ4.js +15 -0
  205. package/dist/parser-YSLNDFLV.js +22 -0
  206. package/dist/parser-ZGNXYFPS.js +15 -0
  207. package/dist/parser-ZQDQTB4X.js +20 -0
  208. package/dist/pert.d.ts +4 -2
  209. package/dist/registry-CaSw0PSH.d.ts +350 -0
  210. package/dist/renderer-2C6DJRYN.js +24 -0
  211. package/dist/renderer-5MPN7CXZ.js +19 -0
  212. package/dist/renderer-6EN5XXJZ.js +27 -0
  213. package/dist/renderer-6WRYVM5R.js +24 -0
  214. package/dist/renderer-7NQSTQMQ.js +16 -0
  215. package/dist/renderer-7ZNVOVFG.js +16 -0
  216. package/dist/{renderer-KQB7UGDS.js → renderer-AK2WO4EI.js} +7 -6
  217. package/dist/renderer-COLQFSFV.js +26 -0
  218. package/dist/renderer-CWEFGEIC.js +36 -0
  219. package/dist/renderer-D3BRNOMV.js +29 -0
  220. package/dist/renderer-HIFQVEJA.js +22 -0
  221. package/dist/renderer-JCZG6AYU.js +28 -0
  222. package/dist/{renderer-6RKQPNJI.js → renderer-JTCX6PCG.js} +13 -13
  223. package/dist/renderer-JWGQSTMR.js +37 -0
  224. package/dist/{renderer-3YPZHMOU.js → renderer-K7XLVPH5.js} +6 -6
  225. package/dist/renderer-KARQF3F3.js +22 -0
  226. package/dist/renderer-LVZAHRP6.js +34 -0
  227. package/dist/{renderer-QXGN5H3A.js → renderer-NE5W7CQP.js} +8 -8
  228. package/dist/renderer-QD2SJF2I.js +34 -0
  229. package/dist/renderer-RLMOTXZ6.js +37 -0
  230. package/dist/renderer-SQ54MDSA.js +26 -0
  231. package/dist/{renderer-UV6MI64M.js → renderer-TYHGXAVT.js} +7 -6
  232. package/dist/renderer-UKXW2QPE.js +23 -0
  233. package/dist/renderer-UPF7NRTI.js +28 -0
  234. package/dist/renderer-VMH6L6CP.js +24 -0
  235. package/dist/{renderer-GHPZMFU2.js → renderer-WCWI4I6A.js} +5 -5
  236. package/dist/renderer-WFSUBKUL.js +25 -0
  237. package/dist/renderer-WNFXYYGL.js +21 -0
  238. package/dist/{renderer-RGIYOTKJ.js → renderer-XTXSOK3L.js} +14 -14
  239. package/dist/renderer-YUKPS27O.js +24 -0
  240. package/dist/renderer-YUXGXGSW.js +27 -0
  241. package/dist/renderer-ZBTEX2JK.js +16 -0
  242. package/dist/renderer-radial-WF6VOUOD.js +21 -0
  243. package/dist/{resolver-EMTGNR3D.js → resolver-WFKZYBJ2.js} +4 -4
  244. package/dist/state-parser-L7DHZIQO.js +19 -0
  245. package/dist/state-renderer-TFEUOP4H.js +38 -0
  246. package/dist/{themes-32xj5ZTW.d.ts → themes-tbBkIVsn.d.ts} +2 -349
  247. package/docs/ai-integration.md +74 -77
  248. package/docs/language-reference.md +329 -290
  249. package/fonts/Inter-Bold.woff2 +0 -0
  250. package/fonts/Inter-Regular.woff2 +0 -0
  251. package/gallery/fixtures/boxes-and-lines-diverging.dgmo +1 -2
  252. package/gallery/fixtures/boxes-and-lines.dgmo +1 -1
  253. package/gallery/fixtures/clock.dgmo +1 -1
  254. package/gallery/fixtures/event-line.dgmo +1 -1
  255. package/gallery/fixtures/gantt-full.dgmo +1 -1
  256. package/gallery/fixtures/gantt-sprints.dgmo +9 -9
  257. package/gallery/fixtures/gantt.dgmo +1 -1
  258. package/gallery/fixtures/legacy-syntax-backcompat.dgmo +16 -0
  259. package/gallery/fixtures/state-tags.dgmo +40 -0
  260. package/gallery/fixtures/swimlane.dgmo +1 -1
  261. package/gallery/fixtures/timeline-intraday.dgmo +1 -1
  262. package/package.json +5 -1
  263. package/dist/analyzer-BJ54GIFB.js +0 -15
  264. package/dist/calculator-LDYQCDDY.js +0 -11
  265. package/dist/charts-d3-7E4B4IMW.js +0 -26
  266. package/dist/dgmo-router-Y2VEX46B.js +0 -86
  267. package/dist/dimensions-F7B5C4BJ.js +0 -22
  268. package/dist/flowchart-parser-MY53QWTZ.js +0 -21
  269. package/dist/layout-46366KBT.js +0 -10
  270. package/dist/layout-46N4JJYK.js +0 -17
  271. package/dist/layout-4DIUOX2T.js +0 -14
  272. package/dist/layout-AM2JWW3X.js +0 -15
  273. package/dist/layout-CBCLPMSG.js +0 -15
  274. package/dist/layout-EE6GE46Y.js +0 -17
  275. package/dist/layout-G23F7LDH.js +0 -9
  276. package/dist/layout-HYZPWAK5.js +0 -18
  277. package/dist/layout-MUPRALE5.js +0 -14
  278. package/dist/layout-YVTNOTN4.js +0 -20
  279. package/dist/layout-ZDOSXL5G.js +0 -19
  280. package/dist/parser-2Q2T4C3B.js +0 -22
  281. package/dist/parser-3A42DZ72.js +0 -11
  282. package/dist/parser-4RFTKAQX.js +0 -15
  283. package/dist/parser-57ILIFZ2.js +0 -20
  284. package/dist/parser-5A2UWU6B.js +0 -11
  285. package/dist/parser-6BJEXUFX.js +0 -13
  286. package/dist/parser-6ZKABF5S.js +0 -22
  287. package/dist/parser-AIMHGJRR.js +0 -19
  288. package/dist/parser-AZJ25OKK.js +0 -13
  289. package/dist/parser-B77S5SZM.js +0 -11
  290. package/dist/parser-BEPSWJAD.js +0 -11
  291. package/dist/parser-BKI42XBQ.js +0 -16
  292. package/dist/parser-C3D7MVXY.js +0 -11
  293. package/dist/parser-CDG7CHV5.js +0 -14
  294. package/dist/parser-CZOJ7XQ6.js +0 -15
  295. package/dist/parser-E2RL6JYF.js +0 -18
  296. package/dist/parser-FQ6GZFMR.js +0 -13
  297. package/dist/parser-GKLZKEIK.js +0 -13
  298. package/dist/parser-H6ABKHZZ.js +0 -12
  299. package/dist/parser-I6GGFKOQ.js +0 -12
  300. package/dist/parser-JA7JQ7NF.js +0 -15
  301. package/dist/parser-OK22AC6Y.js +0 -14
  302. package/dist/parser-OK2ILHRT.js +0 -16
  303. package/dist/parser-OUTPNJWC.js +0 -11
  304. package/dist/parser-PORDUX5E.js +0 -15
  305. package/dist/parser-SRVFR7PM.js +0 -13
  306. package/dist/parser-UKFFZCFJ.js +0 -14
  307. package/dist/parser-UMWPLORP.js +0 -18
  308. package/dist/parser-Z4TZV2CB.js +0 -12
  309. package/dist/renderer-2AUFT3E2.js +0 -24
  310. package/dist/renderer-2HTNBIF2.js +0 -34
  311. package/dist/renderer-3K3IB7D5.js +0 -22
  312. package/dist/renderer-3YNIWF5I.js +0 -16
  313. package/dist/renderer-4WR6WMVF.js +0 -26
  314. package/dist/renderer-66MERVQ2.js +0 -24
  315. package/dist/renderer-ARMJBP6C.js +0 -28
  316. package/dist/renderer-CO2DW7S7.js +0 -37
  317. package/dist/renderer-EDJ2O4S5.js +0 -34
  318. package/dist/renderer-F7U3MFCV.js +0 -22
  319. package/dist/renderer-GD2COXVL.js +0 -16
  320. package/dist/renderer-GQIESYEM.js +0 -25
  321. package/dist/renderer-HCKJDFXD.js +0 -37
  322. package/dist/renderer-HYGHO4SJ.js +0 -28
  323. package/dist/renderer-JC3RDUT7.js +0 -23
  324. package/dist/renderer-NKJ24TEA.js +0 -19
  325. package/dist/renderer-OYO67VZK.js +0 -26
  326. package/dist/renderer-QIWVHWZO.js +0 -15
  327. package/dist/renderer-QRWACQRI.js +0 -21
  328. package/dist/renderer-QXPP4TA2.js +0 -27
  329. package/dist/renderer-RHT4MHFU.js +0 -24
  330. package/dist/renderer-RYR3TJ46.js +0 -36
  331. package/dist/renderer-SRKDNDFB.js +0 -27
  332. package/dist/renderer-TGTUABCI.js +0 -24
  333. package/dist/renderer-TXJFKPOG.js +0 -29
  334. package/dist/renderer-radial-FWABAZHB.js +0 -21
  335. package/dist/state-parser-6T6CNMPX.js +0 -18
  336. package/dist/state-renderer-AWZ3ECAX.js +0 -34
@@ -3,10 +3,10 @@ import {
3
3
  } from "./chunk-3HDBAXF5.js";
4
4
  import {
5
5
  renderIntegratedLegend
6
- } from "./chunk-OU7HLO7I.js";
6
+ } from "./chunk-W5KMNC5U.js";
7
7
  import {
8
8
  getMaxLegendReservedHeight
9
- } from "./chunk-YAA6IID3.js";
9
+ } from "./chunk-774C2FF3.js";
10
10
  import {
11
11
  TITLE_FONT_SIZE,
12
12
  TITLE_FONT_WEIGHT,
@@ -16,27 +16,28 @@ import {
16
16
  FONT_FAMILY
17
17
  } from "./chunk-6KFWC4CO.js";
18
18
  import {
19
- LEGEND_GROUP_GAP
20
- } from "./chunk-QOOUC2J5.js";
21
- import {
22
- measureText
23
- } from "./chunk-WCT3NYCV.js";
24
- import {
19
+ contrastText,
25
20
  getSeriesColors,
26
21
  mix,
27
22
  shapeFill,
28
23
  themeBaseBg
29
- } from "./chunk-P6T66CCZ.js";
24
+ } from "./chunk-JYDMBWRP.js";
25
+ import {
26
+ LEGEND_GROUP_GAP
27
+ } from "./chunk-4RGZFA7H.js";
28
+ import {
29
+ measureText
30
+ } from "./chunk-4ASYQ347.js";
30
31
  import {
31
32
  resolveTagColor,
32
33
  tagAttrKey
33
- } from "./chunk-467TVMQL.js";
34
+ } from "./chunk-CMVZWP32.js";
34
35
  import {
35
36
  resolveColor
36
- } from "./chunk-TLVIHFRO.js";
37
+ } from "./chunk-ZKPPI6BF.js";
37
38
  import {
38
39
  makeDgmoError
39
- } from "./chunk-CXK4DZH3.js";
40
+ } from "./chunk-4W2PE66Q.js";
40
41
 
41
42
  // src/bracket/renderer.ts
42
43
  import * as d3Selection from "d3-selection";
@@ -628,7 +629,7 @@ function clip(s, maxW, fs) {
628
629
  }
629
630
  return lo <= 0 ? "" : s.slice(0, lo) + "\u2026";
630
631
  }
631
- function paintForAccent(palette, isDark, accent) {
632
+ function paintForAccent(palette, isDark, accent, fillMode) {
632
633
  const base = themeBaseBg(palette, isDark);
633
634
  return {
634
635
  accent,
@@ -639,12 +640,14 @@ function paintForAccent(palette, isDark, accent) {
639
640
  hair: mix(palette.text, base, 34),
640
641
  wire: mix(palette.text, base, 30),
641
642
  track: mix(palette.border, base, 55),
642
- tint: shapeFill(palette, accent, isDark)
643
+ // §1.9 fill family rides through shapeFill: solid ⇒ raw accent,
644
+ // outline ⇒ theme base bg (accent stays on the stroke), absent ⇒ 25% tint.
645
+ tint: shapeFill(palette, accent, isDark, { mode: fillMode })
643
646
  };
644
647
  }
645
- function paintFor(palette, isDark, sideColor) {
648
+ function paintFor(palette, isDark, sideColor, fillMode) {
646
649
  const accent = sideColor && resolveColor(sideColor, palette) || sideColor || getSeriesColors(palette)[0];
647
- return paintForAccent(palette, isDark, accent);
650
+ return paintForAccent(palette, isDark, accent, fillMode);
648
651
  }
649
652
  function resolveBracketLegend(parsed, palette) {
650
653
  const activeTag = parsed.activeTag;
@@ -740,7 +743,8 @@ function renderBracket(container, parsed, palette, isDark, exportDims) {
740
743
  });
741
744
  }
742
745
  const baseAccent = parsed.accentColor ?? resolveColor("blue", palette) ?? getSeriesColors(palette)[0];
743
- const basePaint = paintForAccent(palette, isDark, baseAccent);
746
+ const fillMode = parsed.fillMode;
747
+ const basePaint = paintForAccent(palette, isDark, baseAccent, fillMode);
744
748
  const sideColorByLabel = /* @__PURE__ */ new Map();
745
749
  for (const s of parsed.sides) sideColorByLabel.set(s.label, s.color);
746
750
  const sideBarH = layout.sideLabels.length ? 30 : 0;
@@ -753,11 +757,20 @@ function renderBracket(container, parsed, palette, isDark, exportDims) {
753
757
  );
754
758
  const top = covered ? bandTop : 2;
755
759
  const c = resolveColor(col.color, palette) ?? col.color;
756
- root.append("rect").attr("x", col.x - BOX_W / 2 - 10).attr("y", top).attr("width", BOX_W + 20).attr("height", Math.max(0, layout.height - top)).attr("rx", 10).attr("fill", mix(c, palette.bg, isDark ? 12 : 8));
760
+ root.append("rect").attr("x", col.x - BOX_W / 2 - 10).attr("y", top).attr("width", BOX_W + 20).attr("height", Math.max(0, layout.height - top)).attr("rx", 10).attr(
761
+ "fill",
762
+ fillMode === "outline" ? themeBaseBg(palette, isDark) : mix(c, palette.bg, isDark ? 12 : 8)
763
+ ).call((sel) => {
764
+ if (fillMode === "outline")
765
+ sel.attr("stroke", mix(c, palette.bg, 35)).attr("stroke-width", 1);
766
+ });
757
767
  }
758
768
  for (const s of layout.sideLabels) {
759
769
  const c = s.color ? resolveColor(s.color, palette) ?? s.color : basePaint.accent;
760
- root.append("rect").attr("x", s.x0 - 8).attr("y", 2).attr("width", s.x1 - s.x0 + 16).attr("height", 24).attr("rx", 8).attr("fill", mix(c, palette.bg, isDark ? 20 : 14)).attr("stroke", mix(c, palette.bg, 55)).attr("stroke-width", 1);
770
+ root.append("rect").attr("x", s.x0 - 8).attr("y", 2).attr("width", s.x1 - s.x0 + 16).attr("height", 24).attr("rx", 8).attr(
771
+ "fill",
772
+ fillMode === "outline" ? themeBaseBg(palette, isDark) : mix(c, palette.bg, isDark ? 20 : 14)
773
+ ).attr("stroke", fillMode === "outline" ? c : mix(c, palette.bg, 55)).attr("stroke-width", 1);
761
774
  root.append("text").attr("x", (s.x0 + s.x1) / 2).attr("y", 18).attr("text-anchor", "middle").attr("font-size", 13).attr("font-weight", 800).attr("letter-spacing", 0.3).attr("fill", c).text(clip(s.label, s.x1 - s.x0, 13));
762
775
  }
763
776
  for (const col of layout.columns) {
@@ -772,7 +785,7 @@ function renderBracket(container, parsed, palette, isDark, exportDims) {
772
785
  drawConnector(root, m, m.botFrom, m.y + HALF_SPAN2, basePaint);
773
786
  }
774
787
  for (const m of layout.matches) {
775
- const sidePaint = m.side && sideColorByLabel.get(m.side) ? paintFor(palette, isDark, sideColorByLabel.get(m.side)) : basePaint;
788
+ const sidePaint = m.side && sideColorByLabel.get(m.side) ? paintFor(palette, isDark, sideColorByLabel.get(m.side), fillMode) : basePaint;
776
789
  const topSeed = seedByName.get(m.top ?? "") ?? null;
777
790
  const botSeed = seedByName.get(m.bot ?? "") ?? null;
778
791
  let homeName = m.home;
@@ -810,7 +823,8 @@ function renderBracket(container, parsed, palette, isDark, exportDims) {
810
823
  palette,
811
824
  isDark,
812
825
  m,
813
- activeKey
826
+ activeKey,
827
+ fillMode
814
828
  );
815
829
  drawBox(
816
830
  root,
@@ -822,7 +836,8 @@ function renderBracket(container, parsed, palette, isDark, exportDims) {
822
836
  palette,
823
837
  isDark,
824
838
  m,
825
- activeKey
839
+ activeKey,
840
+ fillMode
826
841
  );
827
842
  if (isUpset) drawUpset(root, m, sidePaint);
828
843
  if (m.commentary.length) drawCommentary(root, m, palette);
@@ -841,10 +856,10 @@ function drawConnector(g, m, from, toCy, paint) {
841
856
  const d = from.yA !== from.yB ? `M ${childEdge} ${from.yA} H ${midX} M ${childEdge} ${from.yB} H ${midX} M ${midX} ${vLo} V ${vHi} M ${midX} ${toCy} H ${parentEdge}` : `M ${childEdge} ${from.y} H ${midX} V ${toCy} H ${parentEdge}`;
842
857
  g.append("path").attr("d", d).attr("fill", "none").attr("stroke", paint.wire).attr("stroke-width", 1.5);
843
858
  }
844
- function drawBox(g, cx, cy, name, info, sidePaint, palette, isDark, m, activeKey) {
859
+ function drawBox(g, cx, cy, name, info, sidePaint, palette, isDark, m, activeKey, fillMode) {
845
860
  const x = cx - BOX_W / 2;
846
861
  const y = cy - BOX_H / 2;
847
- const paint = info.tagColor ? paintForAccent(palette, isDark, info.tagColor) : sidePaint;
862
+ const paint = info.tagColor ? paintForAccent(palette, isDark, info.tagColor, fillMode) : sidePaint;
848
863
  const cell = g.append("g").attr("class", "dgmo-bracket-box");
849
864
  if (m.lineNumber !== null) cell.attr("data-line-number", m.lineNumber);
850
865
  if (activeKey && info.tagValue)
@@ -878,22 +893,29 @@ function drawBox(g, cx, cy, name, info, sidePaint, palette, isDark, m, activeKey
878
893
  } else if (info.pending) {
879
894
  stroke = mix(paint.accent, paint.hair, 50);
880
895
  }
896
+ const onSolid = fillMode === "solid" && (info.isChampion || info.isWinner) ? contrastText(
897
+ paint.tint,
898
+ palette.textOnFillLight,
899
+ palette.textOnFillDark
900
+ ) : null;
901
+ if (onSolid) textColor = onSolid;
902
+ const gutterColor = onSolid ?? paint.muted;
881
903
  const rect = cell.append("rect").attr("x", x).attr("y", y).attr("width", BOX_W).attr("height", BOX_H).attr("rx", 6).attr("fill", fill).attr("stroke", stroke).attr("stroke-width", sw);
882
904
  if (dash) rect.attr("stroke-dasharray", dash);
883
905
  let leftPad = 11;
884
906
  if (info.seed !== null) {
885
- cell.append("text").attr("x", x + 9).attr("y", cy + 4).attr("text-anchor", "start").attr("font-size", 10).attr("font-weight", 700).attr("fill", paint.muted).text(info.seed);
907
+ cell.append("text").attr("x", x + 9).attr("y", cy + 4).attr("text-anchor", "start").attr("font-size", 10).attr("font-weight", 700).attr("fill", gutterColor).text(info.seed);
886
908
  leftPad = 9 + Math.max(12, measureText(String(info.seed), 10)) + 6;
887
909
  }
888
910
  let rightPad = 11;
889
911
  if (info.score) rightPad += 20;
890
912
  if (info.isHome) {
891
- drawHome(cell, x + BOX_W - rightPad - 6, cy, paint.muted);
913
+ drawHome(cell, x + BOX_W - rightPad - 6, cy, gutterColor);
892
914
  rightPad += 16;
893
915
  }
894
916
  cell.append("text").attr("x", x + leftPad).attr("y", cy + 4).attr("text-anchor", "start").attr("font-size", 12.5).attr("font-weight", weight).attr("fill", textColor).text(clip(isTBD ? "TBD" : name, BOX_W - leftPad - rightPad, 12.5));
895
917
  if (info.score) {
896
- cell.append("text").attr("x", x + BOX_W - 11).attr("y", cy + 4).attr("text-anchor", "end").attr("font-size", 12).attr("font-weight", info.isWinner ? 700 : 500).attr("fill", info.isWinner ? textColor : paint.muted).text(info.score);
918
+ cell.append("text").attr("x", x + BOX_W - 11).attr("y", cy + 4).attr("text-anchor", "end").attr("font-size", 12).attr("font-weight", info.isWinner ? 700 : 500).attr("fill", info.isWinner ? textColor : gutterColor).text(info.score);
897
919
  }
898
920
  }
899
921
  function drawHome(cell, hx, cy, color) {
@@ -937,4 +959,4 @@ export {
937
959
  renderBracket,
938
960
  renderBracketForExport
939
961
  };
940
- //# sourceMappingURL=chunk-Y6GBQTBK.js.map
962
+ //# sourceMappingURL=chunk-QWIBT6DS.js.map
@@ -1,12 +1,12 @@
1
- import {
2
- measureText
3
- } from "./chunk-WCT3NYCV.js";
4
1
  import {
5
2
  formatDuration,
6
3
  formatScheduleValue,
7
4
  formatSlackValue,
8
5
  formatSprintCell
9
- } from "./chunk-7L4UJOY6.js";
6
+ } from "./chunk-3TYUXC7D.js";
7
+ import {
8
+ measureText
9
+ } from "./chunk-4ASYQ347.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-GU46PPT3.js.map
606
+ //# sourceMappingURL=chunk-QXGACPS2.js.map
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  makeDgmoError,
6
6
  suggest
7
- } from "./chunk-CXK4DZH3.js";
7
+ } from "./chunk-4W2PE66Q.js";
8
8
 
9
9
  // src/utils/notes/resolve.ts
10
10
  function resolveNotes(notes, targets, diagnostics) {
@@ -65,4 +65,4 @@ function resolveNotes(notes, targets, diagnostics) {
65
65
  export {
66
66
  resolveNotes
67
67
  };
68
- //# sourceMappingURL=chunk-FMDSF3OV.js.map
68
+ //# sourceMappingURL=chunk-QZAW5SFH.js.map
@@ -15,18 +15,21 @@ import {
15
15
  import {
16
16
  FONT_FAMILY
17
17
  } from "./chunk-6KFWC4CO.js";
18
- import {
19
- CHAR_WIDTH_RATIO,
20
- measureText
21
- } from "./chunk-WCT3NYCV.js";
22
18
  import {
23
19
  contrastText,
24
20
  getSeriesColors,
25
21
  shapeFill
26
- } from "./chunk-P6T66CCZ.js";
22
+ } from "./chunk-JYDMBWRP.js";
23
+ import {
24
+ CHAR_WIDTH_RATIO,
25
+ measureText
26
+ } from "./chunk-4ASYQ347.js";
27
+ import {
28
+ fillModeFromOptions
29
+ } from "./chunk-YJVA3QUU.js";
27
30
  import {
28
31
  resolveColor
29
- } from "./chunk-TLVIHFRO.js";
32
+ } from "./chunk-ZKPPI6BF.js";
30
33
 
31
34
  // src/ring/renderer.ts
32
35
  import * as d3Selection from "d3-selection";
@@ -102,10 +105,10 @@ function renderRing(container, parsed, palette, isDark, onClickItem, exportDims)
102
105
  }
103
106
  return seriesColors[i % seriesColors.length];
104
107
  };
105
- const solid = parsed.options["solid-fill"] === "on";
108
+ const fillMode = fillModeFromOptions(parsed.options);
106
109
  const layerColors = parsed.layers.map((l, i) => resolveLayerColor(l, i));
107
110
  const layerFills = layerColors.map(
108
- (c) => shapeFill(palette, c, isDark, { solid })
111
+ (c) => shapeFill(palette, c, isDark, { mode: fillMode })
109
112
  );
110
113
  const diagramG = svg.append("g").attr("class", "ring-body");
111
114
  const strokeColor = palette.text;
@@ -293,4 +296,4 @@ export {
293
296
  renderRing,
294
297
  renderRingForExport
295
298
  };
296
- //# sourceMappingURL=chunk-YGJZWZTY.js.map
299
+ //# sourceMappingURL=chunk-R5NH5BZG.js.map
@@ -1,6 +1,9 @@
1
1
  import {
2
2
  buildSwatches
3
- } from "./chunk-4XFBQT5O.js";
3
+ } from "./chunk-B4XS2AF2.js";
4
+ import {
5
+ FONT_FAMILY
6
+ } from "./chunk-6KFWC4CO.js";
4
7
  import {
5
8
  fixedParts,
6
9
  formatTime,
@@ -11,15 +14,13 @@ import {
11
14
  zoneParts
12
15
  } from "./chunk-APKUAJ2L.js";
13
16
  import {
14
- FONT_FAMILY
15
- } from "./chunk-6KFWC4CO.js";
16
- import {
17
+ contrastText,
17
18
  mix,
18
19
  themeBaseBg
19
- } from "./chunk-P6T66CCZ.js";
20
+ } from "./chunk-JYDMBWRP.js";
20
21
  import {
21
22
  resolveColor
22
- } from "./chunk-TLVIHFRO.js";
23
+ } from "./chunk-ZKPPI6BF.js";
23
24
 
24
25
  // src/clock/renderer.ts
25
26
  import * as d3Selection from "d3-selection";
@@ -154,7 +155,7 @@ function renderClock(container, parsed, palette, isDark, exportDims) {
154
155
  const rowH = 84;
155
156
  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 ?? "Clock"} \u2014 world clocks`).style("font-family", FONT_FAMILY);
156
157
  const bgRect = svg.append("rect").attr("width", width).attr("fill", palette.bg);
157
- const card = svg.append("rect").attr("x", cardM).attr("y", cardM).attr("width", width - 2 * cardM).attr("rx", 14).attr("fill", cardFill).attr("stroke", mix(palette.text, palette.bg, 40)).attr("stroke-width", 1);
158
+ const card = svg.append("rect").attr("x", cardM).attr("y", cardM).attr("width", width - 2 * cardM).attr("rx", 14).attr("fill", parsed.fillMode === "outline" ? baseBg : cardFill).attr("stroke", mix(palette.text, palette.bg, 40)).attr("stroke-width", 1);
158
159
  clipSeq += 1;
159
160
  const clipId = `dgmo-clock-clip-${clipSeq}`;
160
161
  const clipRect = svg.append("clipPath").attr("id", clipId).append("rect").attr("x", cardM).attr("y", cardM).attr("width", width - 2 * cardM).attr("rx", 14);
@@ -182,6 +183,8 @@ function renderClock(container, parsed, palette, isDark, exportDims) {
182
183
  line2,
183
184
  tick: mix(palette.text, palette.bg, 35),
184
185
  cardFill,
186
+ baseBg,
187
+ fillMode: parsed.fillMode,
185
188
  sw,
186
189
  palette
187
190
  };
@@ -223,6 +226,9 @@ function renderClock(container, parsed, palette, isDark, exportDims) {
223
226
  bgRect.attr("height", bannerH);
224
227
  card.attr("height", bannerH - 2 * cardM);
225
228
  }
229
+ function zoneFillMode(entry, parsed, col) {
230
+ return entry.color || parsed.colorBy === "place" ? col.fillMode : void 0;
231
+ }
226
232
  function drawRow(svg, entry, index, parsed, now, rowTop, rowH, geom, col) {
227
233
  const { padX } = geom;
228
234
  const { text, muted, line2, tick, sw, cardFill } = col;
@@ -250,9 +256,10 @@ function drawRow(svg, entry, index, parsed, now, rowTop, rowH, geom, col) {
250
256
  });
251
257
  const rightBlockW = 178;
252
258
  const rightColLeft = geom.rightX - rightBlockW;
259
+ const fm = zoneFillMode(entry, parsed, col);
253
260
  const g = svg.append("g").attr("data-line-number", entry.lineNumber);
254
261
  if (auto) {
255
- g.append("rect").attr("data-dgmo-clock-lane", "").attr("x", 9).attr("y", rowTop).attr("width", geom.width - 18).attr("height", rowH).attr("fill", auto.laneTint);
262
+ g.append("rect").attr("data-dgmo-clock-lane", "").attr("x", 9).attr("y", rowTop).attr("width", geom.width - 18).attr("height", rowH).attr("fill", fm === "outline" ? col.baseBg : auto.laneTint);
256
263
  }
257
264
  g.attr("data-dgmo-clock", "").attr("data-dgmo-clock-zone", entry.zone).attr("data-dgmo-clock-face", parsed.face).attr("data-dgmo-clock-hours12", parsed.hours12 ? "1" : "0").attr("data-dgmo-clock-sun", sun ? "1" : "0").attr("data-dgmo-clock-c-day", sw.day).attr("data-dgmo-clock-c-night", sw.night).attr("data-dgmo-clock-c-day-soft", sw.dayTint).attr("data-dgmo-clock-c-night-soft", sw.nightTint).attr("data-dgmo-clock-c-ok", sw.ok).attr("data-dgmo-clock-c-soon", sw.soon).attr("data-dgmo-clock-c-off", sw.off).attr("data-dgmo-clock-c-ok-soft", sw.okSoft).attr("data-dgmo-clock-c-soon-soft", sw.soonSoft).attr("data-dgmo-clock-c-off-soft", sw.offSoft);
258
265
  if (entry.lat !== null) g.attr("data-dgmo-clock-lat", entry.lat);
@@ -267,12 +274,18 @@ function drawRow(svg, entry, index, parsed, now, rowTop, rowH, geom, col) {
267
274
  }
268
275
  const contentLeft = padX + 4;
269
276
  const timeColor = auto?.solid ?? text;
270
- const faceFill = auto ? mix(auto.solid, cardFill, 20) : stTint;
277
+ const faceFill = auto && fm === "outline" ? col.baseBg : auto && fm === "solid" ? auto.solid : auto ? mix(auto.solid, cardFill, 20) : stTint;
271
278
  const ringColor = auto?.solid ?? line2;
272
- const accentColor = auto?.solid ?? stColor;
279
+ const handInk = auto && fm === "solid" ? contrastText(
280
+ auto.solid,
281
+ col.palette.textOnFillLight,
282
+ col.palette.textOnFillDark
283
+ ) : text;
284
+ const accentColor = auto && fm === "solid" ? handInk : auto?.solid ?? stColor;
273
285
  if (auto) {
274
286
  g.attr("data-dgmo-clock-auto-solid", auto.solid).attr("data-dgmo-clock-auto-face", faceFill).attr("data-dgmo-clock-auto-mode", parsed.colorBy).attr("data-dgmo-clock-cardfill", cardFill);
275
287
  }
288
+ if (fm) g.attr("data-dgmo-clock-fill-mode", fm);
276
289
  if (parsed.face === "analog") {
277
290
  const size = rowH - 20;
278
291
  const fx = contentLeft;
@@ -285,8 +298,8 @@ function drawRow(svg, entry, index, parsed, now, rowTop, rowH, geom, col) {
285
298
  fg.append("line").attr("x1", 50 + 39 * Math.sin(a)).attr("y1", 50 - 39 * Math.cos(a)).attr("x2", 50 + 46 * Math.sin(a)).attr("y2", 50 - 46 * Math.cos(a)).attr("stroke", tick).attr("stroke-width", 1.8);
286
299
  }
287
300
  const ang = handAngles(parts.h, parts.m, parts.s);
288
- fg.append("line").attr("data-dgmo-clock-hand", "h").attr("x1", 50).attr("y1", 50).attr("x2", 50).attr("y2", 28).attr("stroke", text).attr("stroke-width", 4).attr("stroke-linecap", "round").attr("transform", `rotate(${ang.hour} 50 50)`);
289
- fg.append("line").attr("data-dgmo-clock-hand", "m").attr("x1", 50).attr("y1", 50).attr("x2", 50).attr("y2", 17).attr("stroke", text).attr("stroke-width", 2.6).attr("stroke-linecap", "round").attr("transform", `rotate(${ang.minute} 50 50)`);
301
+ fg.append("line").attr("data-dgmo-clock-hand", "h").attr("x1", 50).attr("y1", 50).attr("x2", 50).attr("y2", 28).attr("stroke", handInk).attr("stroke-width", 4).attr("stroke-linecap", "round").attr("transform", `rotate(${ang.hour} 50 50)`);
302
+ fg.append("line").attr("data-dgmo-clock-hand", "m").attr("x1", 50).attr("y1", 50).attr("x2", 50).attr("y2", 17).attr("stroke", handInk).attr("stroke-width", 2.6).attr("stroke-linecap", "round").attr("transform", `rotate(${ang.minute} 50 50)`);
290
303
  fg.append("line").attr("data-dgmo-clock-hand", "s").attr("x1", 50).attr("y1", 55).attr("x2", 50).attr("y2", 14).attr("stroke", accentColor).attr("stroke-width", 1.3).attr("stroke-linecap", "round").attr("transform", `rotate(${ang.second} 50 50)`);
291
304
  fg.append("circle").attr("data-dgmo-clock-center", "").attr("cx", 50).attr("cy", 50).attr("r", 2.6).attr("fill", accentColor);
292
305
  } else {
@@ -346,10 +359,7 @@ function drawRow(svg, entry, index, parsed, now, rowTop, rowH, geom, col) {
346
359
  g.append("text").attr("x", textX).attr("y", yy).attr("fill", muted).attr("font-family", FONT_FAMILY).attr("font-size", 14).attr("font-weight", 500).text(ellipsize(entry.place, 14, textMax));
347
360
  } else if (ln.kind === "avail" && status) {
348
361
  const stCol = status.cls === "ok" ? sw.ok : status.cls === "soon" ? sw.soon : sw.off;
349
- const dot = g.append("circle").attr("data-dgmo-clock-status-dot", "").attr("cx", iconX).attr("cy", yy - 5).attr("r", 5);
350
- if (status.cls === "off")
351
- dot.attr("fill", "none").attr("stroke", stCol).attr("stroke-width", 1.6);
352
- else dot.attr("fill", stCol).attr("stroke", "none");
362
+ drawStatusClock(g, iconX, yy - 5, 5, stCol);
353
363
  g.append("text").attr("data-dgmo-clock-status", "").attr("x", textX).attr("y", yy).attr("fill", stCol).attr("font-family", FONT_FAMILY).attr("font-size", 14).attr("font-weight", 600).text(ellipsize(status.text, 14, textMax));
354
364
  } else if (ln.kind === "sun" && sun) {
355
365
  drawSunMoon(g, iconX, yy - 5, up, sw, 1.25);
@@ -367,6 +377,9 @@ function drawFixedGlyph(parent, cx, cy, color) {
367
377
  g.append("line").attr("x1", -4 * Math.cos(a)).attr("y1", -4 * Math.sin(a)).attr("x2", 4 * Math.cos(a)).attr("y2", 4 * Math.sin(a)).attr("stroke", color).attr("stroke-width", 1.2).attr("stroke-linecap", "round");
368
378
  }
369
379
  }
380
+ function drawStatusClock(parent, cx, cy, r, color) {
381
+ parent.append("circle").attr("data-dgmo-clock-status-icon", "").attr("cx", cx).attr("cy", cy).attr("r", r).attr("fill", color);
382
+ }
370
383
  function bakeAnchors(g, entry, parsed, sun, sw) {
371
384
  g.attr("data-dgmo-clock", "").attr("data-dgmo-clock-zone", entry.zone).attr("data-dgmo-clock-face", parsed.face).attr("data-dgmo-clock-hours12", parsed.hours12 ? "1" : "0").attr("data-dgmo-clock-sun", sun ? "1" : "0").attr("data-dgmo-clock-c-day", sw.day).attr("data-dgmo-clock-c-night", sw.night).attr("data-dgmo-clock-c-day-soft", sw.dayTint).attr("data-dgmo-clock-c-night-soft", sw.nightTint).attr("data-dgmo-clock-c-ok", sw.ok).attr("data-dgmo-clock-c-soon", sw.soon).attr("data-dgmo-clock-c-off", sw.off).attr("data-dgmo-clock-c-ok-soft", sw.okSoft).attr("data-dgmo-clock-c-soon-soft", sw.soonSoft).attr("data-dgmo-clock-c-off-soft", sw.offSoft);
372
385
  if (entry.lat !== null) g.attr("data-dgmo-clock-lat", entry.lat);
@@ -413,19 +426,26 @@ function drawColumns(body, parsed, now, top, geom, col) {
413
426
  palette: col.palette,
414
427
  cardFill
415
428
  });
429
+ const fm = zoneFillMode(entry, parsed, col);
416
430
  const timeColor = auto?.solid ?? text;
417
- const faceFill = auto ? mix(auto.solid, cardFill, 20) : stTint;
431
+ const faceFill = auto && fm === "outline" ? col.baseBg : auto && fm === "solid" ? auto.solid : auto ? mix(auto.solid, cardFill, 20) : stTint;
418
432
  const ringColor = auto?.solid ?? line2;
419
- const accentColor = auto?.solid ?? stColor;
433
+ const handInk = auto && fm === "solid" ? contrastText(
434
+ auto.solid,
435
+ col.palette.textOnFillLight,
436
+ col.palette.textOnFillDark
437
+ ) : text;
438
+ const accentColor = auto && fm === "solid" ? handInk : auto?.solid ?? stColor;
420
439
  const g = body.append("g").attr("data-line-number", entry.lineNumber);
421
440
  bakeAnchors(g, entry, parsed, sun, sw);
422
441
  if (auto)
423
442
  tints.push(
424
- g.append("rect").attr("data-dgmo-clock-lane", "").attr("x", x0).attr("y", top).attr("width", colW).attr("fill", auto.laneTint)
443
+ g.append("rect").attr("data-dgmo-clock-lane", "").attr("x", x0).attr("y", top).attr("width", colW).attr("fill", fm === "outline" ? col.baseBg : auto.laneTint)
425
444
  );
426
445
  if (auto) {
427
446
  g.attr("data-dgmo-clock-auto-solid", auto.solid).attr("data-dgmo-clock-auto-face", faceFill).attr("data-dgmo-clock-auto-mode", parsed.colorBy).attr("data-dgmo-clock-cardfill", cardFill);
428
447
  }
448
+ if (fm) g.attr("data-dgmo-clock-fill-mode", fm);
429
449
  let cy = top + (parsed.face === "analog" ? 22 : 36);
430
450
  const innerW = colW - 16;
431
451
  if (parsed.face === "analog") {
@@ -441,8 +461,8 @@ function drawColumns(body, parsed, now, top, geom, col) {
441
461
  fg.append("line").attr("x1", 50 + 39 * Math.sin(a)).attr("y1", 50 - 39 * Math.cos(a)).attr("x2", 50 + 46 * Math.sin(a)).attr("y2", 50 - 46 * Math.cos(a)).attr("stroke", tick).attr("stroke-width", 1.8);
442
462
  }
443
463
  const ang = handAngles(parts.h, parts.m, parts.s);
444
- fg.append("line").attr("data-dgmo-clock-hand", "h").attr("x1", 50).attr("y1", 50).attr("x2", 50).attr("y2", 28).attr("stroke", text).attr("stroke-width", 4).attr("stroke-linecap", "round").attr("transform", `rotate(${ang.hour} 50 50)`);
445
- fg.append("line").attr("data-dgmo-clock-hand", "m").attr("x1", 50).attr("y1", 50).attr("x2", 50).attr("y2", 17).attr("stroke", text).attr("stroke-width", 2.6).attr("stroke-linecap", "round").attr("transform", `rotate(${ang.minute} 50 50)`);
464
+ fg.append("line").attr("data-dgmo-clock-hand", "h").attr("x1", 50).attr("y1", 50).attr("x2", 50).attr("y2", 28).attr("stroke", handInk).attr("stroke-width", 4).attr("stroke-linecap", "round").attr("transform", `rotate(${ang.hour} 50 50)`);
465
+ fg.append("line").attr("data-dgmo-clock-hand", "m").attr("x1", 50).attr("y1", 50).attr("x2", 50).attr("y2", 17).attr("stroke", handInk).attr("stroke-width", 2.6).attr("stroke-linecap", "round").attr("transform", `rotate(${ang.minute} 50 50)`);
446
466
  fg.append("line").attr("data-dgmo-clock-hand", "s").attr("x1", 50).attr("y1", 55).attr("x2", 50).attr("y2", 14).attr("stroke", accentColor).attr("stroke-width", 1.3).attr("stroke-linecap", "round").attr("transform", `rotate(${ang.second} 50 50)`);
447
467
  fg.append("circle").attr("data-dgmo-clock-center", "").attr("cx", 50).attr("cy", 50).attr("r", 2.6).attr("fill", accentColor);
448
468
  cy += size + 6;
@@ -502,10 +522,7 @@ function drawColumns(body, parsed, now, top, geom, col) {
502
522
  g.append("text").attr("x", textX).attr("y", yy).attr("fill", muted).attr("font-family", FONT_FAMILY).attr("font-size", 12).text(ellipsize(entry.place, 12, tmax));
503
523
  } else if (kind === "avail" && status) {
504
524
  const stCol = status.cls === "ok" ? sw.ok : status.cls === "soon" ? sw.soon : sw.off;
505
- const dot = g.append("circle").attr("data-dgmo-clock-status-dot", "").attr("cx", iconX).attr("cy", yy - 4).attr("r", 4);
506
- if (status.cls === "off")
507
- dot.attr("fill", "none").attr("stroke", stCol).attr("stroke-width", 1.4);
508
- else dot.attr("fill", stCol).attr("stroke", "none");
525
+ drawStatusClock(g, iconX, yy - 4, 4, stCol);
509
526
  g.append("text").attr("data-dgmo-clock-status", "").attr("x", textX).attr("y", yy).attr("fill", stCol).attr("font-family", FONT_FAMILY).attr("font-size", 12).attr("font-weight", 600).text(ellipsize(status.text, 12, tmax));
510
527
  } else if (kind === "sun" && sun) {
511
528
  drawSunMoon(g, iconX, yy - 4, up, sw, 1);
@@ -541,4 +558,4 @@ export {
541
558
  renderClock,
542
559
  renderClockForExport
543
560
  };
544
- //# sourceMappingURL=chunk-U5SI5NIM.js.map
561
+ //# sourceMappingURL=chunk-RJ5LBZ5U.js.map
@@ -3,7 +3,8 @@ var SKETCH_DIAGNOSTIC_CODES = {
3
3
  NESTED_BOX: "E_SKETCH_NESTED_BOX",
4
4
  AMBIGUOUS_TARGET: "E_SKETCH_AMBIGUOUS_TARGET",
5
5
  UNKNOWN_SHAPE: "W_SKETCH_UNKNOWN_SHAPE",
6
- OVERLAP_RESOLVED: "W_SKETCH_OVERLAP_RESOLVED"
6
+ OVERLAP_RESOLVED: "W_SKETCH_OVERLAP_RESOLVED",
7
+ AT_OUT_OF_RANGE: "W_SKETCH_AT_OUT_OF_RANGE"
7
8
  };
8
9
  var SKETCH_DIAGNOSTICS = [
9
10
  {
@@ -41,6 +42,15 @@ var SKETCH_DIAGNOSTICS = [
41
42
  message: (p) => `Shape "${String(p.label ?? "?")}" overlapped another at its authored position \u2014 moved to the nearest free slot`,
42
43
  hint: "Keep shapes at least 2 half-slots apart on one axis, or omit at: to flow-place.",
43
44
  example: "sketch\nA at: 0 0\nB at: 0 0"
45
+ },
46
+ {
47
+ code: SKETCH_DIAGNOSTIC_CODES.AT_OUT_OF_RANGE,
48
+ severity: "warning",
49
+ chartType: "sketch",
50
+ title: "at: coordinate out of range",
51
+ message: (p) => `at: coordinate "${String(p.raw ?? "?")}" is out of range \u2014 half-slot coords must be whole numbers within \xB1${String(p.max ?? "?")}; shape will flow-place`,
52
+ hint: "Use small integer half-slot coordinates near the origin, or omit at: to flow-place.",
53
+ example: "sketch\nA at: 2 0"
44
54
  }
45
55
  ];
46
56
 
@@ -48,4 +58,4 @@ export {
48
58
  SKETCH_DIAGNOSTIC_CODES,
49
59
  SKETCH_DIAGNOSTICS
50
60
  };
51
- //# sourceMappingURL=chunk-XHVV4NVW.js.map
61
+ //# sourceMappingURL=chunk-RT7ACF77.js.map
@@ -8,17 +8,18 @@ import {
8
8
  resolveActiveTagGroup,
9
9
  stripDefaultModifier,
10
10
  tagAttrKey
11
- } from "./chunk-467TVMQL.js";
11
+ } from "./chunk-CMVZWP32.js";
12
12
  import {
13
13
  extractColor,
14
+ fillModeFromToken,
14
15
  measureIndent,
15
16
  parseFirstLine,
16
17
  splitNameAndMeta
17
- } from "./chunk-LV4BETUU.js";
18
+ } from "./chunk-YJVA3QUU.js";
18
19
  import {
19
20
  makeDgmoError,
20
21
  makeFail
21
- } from "./chunk-CXK4DZH3.js";
22
+ } from "./chunk-4W2PE66Q.js";
22
23
 
23
24
  // src/bracket/parser.ts
24
25
  var BEATS_RE = /^(.+?)\s+beats\s+(.+)$/i;
@@ -100,6 +101,7 @@ function parseBracket(content, palette) {
100
101
  };
101
102
  const lines = content.split("\n");
102
103
  let headerParsed = false;
104
+ let accentFromTitle = false;
103
105
  let currentSide = null;
104
106
  let currentTagGroup = null;
105
107
  let commentaryTarget = null;
@@ -122,13 +124,17 @@ function parseBracket(content, palette) {
122
124
  return fail(lineNum, 'Expected "bracket [Title]" as the first line.');
123
125
  }
124
126
  if (first.title) {
125
- const { label } = extractColor(
127
+ const { label, color } = extractColor(
126
128
  first.title,
127
129
  palette,
128
130
  result.diagnostics,
129
131
  lineNum
130
132
  );
131
133
  result.title = label || null;
134
+ if (color !== void 0) {
135
+ result.accentColor = color;
136
+ accentFromTitle = true;
137
+ }
132
138
  }
133
139
  result.titleLineNumber = lineNum;
134
140
  headerParsed = true;
@@ -216,6 +222,12 @@ function parseBracket(content, palette) {
216
222
  result.noRounds = true;
217
223
  continue;
218
224
  }
225
+ const fm = fillModeFromToken(lower);
226
+ if (fm !== null) {
227
+ if (fm === "tint") delete result.fillMode;
228
+ else result.fillMode = fm;
229
+ continue;
230
+ }
219
231
  const accentM = trimmed.match(/^accent\s+(.+)$/i);
220
232
  if (accentM) {
221
233
  const { color } = extractColor(
@@ -224,7 +236,7 @@ function parseBracket(content, palette) {
224
236
  result.diagnostics,
225
237
  lineNum
226
238
  );
227
- if (color !== void 0) result.accentColor = color;
239
+ if (color !== void 0 && !accentFromTitle) result.accentColor = color;
228
240
  continue;
229
241
  }
230
242
  const sideM = trimmed.match(/^\[(.+?)\](.*)$/);
@@ -376,4 +388,4 @@ function parseBracket(content, palette) {
376
388
  export {
377
389
  parseBracket
378
390
  };
379
- //# sourceMappingURL=chunk-XEQXCIBC.js.map
391
+ //# sourceMappingURL=chunk-RW5PEJ7D.js.map