@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
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  compactNumber
3
- } from "./chunk-NI3XQBPB.js";
3
+ } from "./chunk-UVDCHR4E.js";
4
4
  import {
5
5
  parseInlineMarkdown
6
6
  } from "./chunk-3HDBAXF5.js";
@@ -15,10 +15,10 @@ import {
15
15
  mix,
16
16
  shapeFill,
17
17
  themeBaseBg
18
- } from "./chunk-P6T66CCZ.js";
18
+ } from "./chunk-JYDMBWRP.js";
19
19
  import {
20
20
  resolveColor
21
- } from "./chunk-TLVIHFRO.js";
21
+ } from "./chunk-ZKPPI6BF.js";
22
22
 
23
23
  // src/goal/renderer.ts
24
24
  import * as d3Selection from "d3-selection";
@@ -47,7 +47,11 @@ function resolvePaint(parsed, palette, isDark, pctFrac) {
47
47
  const base = parsed.color && resolveColor(parsed.color, palette) || parsed.color || autoColor || getSeriesColors(palette)[0];
48
48
  return {
49
49
  base,
50
- fill: shapeFill(palette, base, isDark, { solid: parsed.options.solidFill }),
50
+ // §1.9 fill family: tint (default) / solid / outline. In outline mode the
51
+ // progress region renders hollow (theme base bg) and the traffic-light /
52
+ // override color moves to the border — advancement still reads from the
53
+ // outlined region's extent against the gray track.
54
+ fill: shapeFill(palette, base, isDark, { mode: parsed.options.fillMode }),
51
55
  track: mix(palette.border, themeBaseBg(palette, isDark), 45),
52
56
  text: palette.text,
53
57
  muted: mix(palette.text, themeBaseBg(palette, isDark), 55)
@@ -177,7 +181,7 @@ function renderBar(svg, parsed, metrics, paint) {
177
181
  g.append("rect").attr("x", x).attr("y", y).attr("width", trackW).attr("height", trackH).attr("rx", r).attr("fill", paint.track);
178
182
  const fillW = trackW * metrics.fillFrac;
179
183
  if (fillW > 0.5) {
180
- g.append("rect").attr("x", x).attr("y", y).attr("width", fillW).attr("height", trackH).attr("rx", r).attr("fill", paint.fill).attr("stroke", paint.base).attr("stroke-width", 2);
184
+ g.append("rect").attr("x", x).attr("y", y).attr("width", fillW).attr("height", trackH).attr("rx", r).attr("fill", paint.fill).attr("stroke", paint.base).attr("stroke-width", parsed.options.fillMode === "outline" ? 1.5 : 2);
181
185
  }
182
186
  if (!parsed.options.noValue) {
183
187
  const valX = Math.max(x + fillW - 16, x + 52);
@@ -222,7 +226,7 @@ function renderThermometer(svg, parsed, metrics, paint) {
222
226
  const yBase = bulbCy - Math.sqrt(mBulb * mBulb - mHalf * mHalf);
223
227
  const yForFrac = (f) => yTop + (1 - f) * (yBase - yTop);
224
228
  const fillTopY = clamp(yForFrac(metrics.fillFrac), yTop, yBase);
225
- g.append("path").attr("d", bodyPath(fillTopY, mHalf, mBulb, false)).attr("fill", paint.fill).attr("stroke", paint.base).attr("stroke-width", 2).attr("stroke-linejoin", "round");
229
+ g.append("path").attr("d", bodyPath(fillTopY, mHalf, mBulb, false)).attr("fill", paint.fill).attr("stroke", paint.base).attr("stroke-width", parsed.options.fillMode === "outline" ? 1.5 : 2).attr("stroke-linejoin", "round");
226
230
  if (parsed.hasTarget) {
227
231
  const edgeX = cx + r;
228
232
  const tickLabelX = edgeX + 14;
@@ -306,7 +310,13 @@ function renderGauge(svg, parsed, metrics, paint) {
306
310
  }
307
311
  g.append("path").attr("d", arcPath(cx, cy, r, 0, 1)).attr("fill", "none").attr("stroke", paint.track).attr("stroke-width", stroke).attr("stroke-linecap", "round");
308
312
  if (metrics.fillFrac > 1e-3) {
309
- g.append("path").attr("d", arcPath(cx, cy, r, 0, metrics.fillFrac)).attr("fill", "none").attr("stroke", paint.fill).attr("stroke-width", stroke).attr("stroke-linecap", "round");
313
+ const valueArc = arcPath(cx, cy, r, 0, metrics.fillFrac);
314
+ if (parsed.options.fillMode === "outline") {
315
+ g.append("path").attr("d", valueArc).attr("fill", "none").attr("stroke", paint.base).attr("stroke-width", stroke).attr("stroke-linecap", "round");
316
+ g.append("path").attr("d", valueArc).attr("fill", "none").attr("stroke", paint.fill).attr("stroke-width", stroke - 3).attr("stroke-linecap", "round");
317
+ } else {
318
+ g.append("path").attr("d", valueArc).attr("fill", "none").attr("stroke", paint.fill).attr("stroke-width", stroke).attr("stroke-linecap", "round");
319
+ }
310
320
  }
311
321
  const a = Math.PI - metrics.fillFrac * Math.PI;
312
322
  const needleLen = r - stroke / 2 - 6;
@@ -351,4 +361,4 @@ export {
351
361
  renderGoal,
352
362
  renderGoalForExport
353
363
  };
354
- //# sourceMappingURL=chunk-CC4YRBWV.js.map
364
+ //# sourceMappingURL=chunk-BD3WGY4T.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  buildMapProjection
3
- } from "./chunk-32XPAAET.js";
3
+ } from "./chunk-UFQJMOVZ.js";
4
4
  import {
5
5
  TITLE_FONT_SIZE,
6
6
  TITLE_Y
@@ -51,4 +51,4 @@ export {
51
51
  mapContentAspect,
52
52
  mapExportDimensions
53
53
  };
54
- //# sourceMappingURL=chunk-RAHVMKBG.js.map
54
+ //# sourceMappingURL=chunk-BFDVEO5R.js.map
@@ -6,16 +6,16 @@ import {
6
6
  tagAttrKey,
7
7
  validateTagGroupNames,
8
8
  validateTagValues
9
- } from "./chunk-467TVMQL.js";
9
+ } from "./chunk-CMVZWP32.js";
10
10
  import {
11
11
  tryCollectNote
12
- } from "./chunk-WQLMU7VG.js";
12
+ } from "./chunk-ZXUAPTCK.js";
13
13
  import {
14
14
  resolveNotes
15
- } from "./chunk-FMDSF3OV.js";
15
+ } from "./chunk-QZAW5SFH.js";
16
16
  import {
17
17
  validateLabelCharacters
18
- } from "./chunk-FFUN5D66.js";
18
+ } from "./chunk-WF64MW5G.js";
19
19
  import {
20
20
  displayName,
21
21
  normalizeName
@@ -32,17 +32,17 @@ import {
32
32
  tryParseSharedOption,
33
33
  warnUnknownMetaKeys,
34
34
  withTagAliases
35
- } from "./chunk-LV4BETUU.js";
35
+ } from "./chunk-YJVA3QUU.js";
36
36
  import {
37
37
  resolveColorWithDiagnostic
38
- } from "./chunk-TLVIHFRO.js";
38
+ } from "./chunk-ZKPPI6BF.js";
39
39
  import {
40
40
  NAME_DIAGNOSTIC_CODES,
41
41
  formatDgmoError,
42
42
  makeDgmoError,
43
43
  nameMergedMessage,
44
44
  suggest
45
- } from "./chunk-CXK4DZH3.js";
45
+ } from "./chunk-4W2PE66Q.js";
46
46
 
47
47
  // src/er/parser.ts
48
48
  function tableId(name) {
@@ -521,4 +521,4 @@ export {
521
521
  looksLikeERDiagram,
522
522
  extractSymbols
523
523
  };
524
- //# sourceMappingURL=chunk-332ZR4QU.js.map
524
+ //# sourceMappingURL=chunk-BR7AYN76.js.map
@@ -6,7 +6,7 @@ import {
6
6
  fold,
7
7
  regionAt,
8
8
  unionExtent
9
- } from "./chunk-I5IGB56C.js";
9
+ } from "./chunk-4QV26TEG.js";
10
10
  import {
11
11
  MAP_DX
12
12
  } from "./chunk-4B5YISOR.js";
@@ -19,7 +19,7 @@ import {
19
19
  emit,
20
20
  formatDgmoError,
21
21
  suggest
22
- } from "./chunk-CXK4DZH3.js";
22
+ } from "./chunk-4W2PE66Q.js";
23
23
 
24
24
  // src/map/resolver.ts
25
25
  var WORLD_SPAN = 90;
@@ -775,4 +775,4 @@ export {
775
775
  isSubNationalUsExtent,
776
776
  resolveMap
777
777
  };
778
- //# sourceMappingURL=chunk-P3NRSSUU.js.map
778
+ //# sourceMappingURL=chunk-BULHGPHK.js.map
@@ -5,12 +5,12 @@ import {
5
5
  parseFirstLine,
6
6
  splitNameAndMeta,
7
7
  warnUnknownMetaKeys
8
- } from "./chunk-LV4BETUU.js";
8
+ } from "./chunk-YJVA3QUU.js";
9
9
  import {
10
10
  makeDgmoError,
11
11
  makeFail,
12
12
  suggest
13
- } from "./chunk-CXK4DZH3.js";
13
+ } from "./chunk-4W2PE66Q.js";
14
14
 
15
15
  // src/tech-radar/parser.ts
16
16
  var VALID_POSITIONS = [
@@ -28,9 +28,15 @@ var POSITION_ORDER = [
28
28
  ];
29
29
  var KNOWN_OPTIONS = /* @__PURE__ */ new Set([]);
30
30
  var KNOWN_BOOLEANS = /* @__PURE__ */ new Set([
31
+ // Blip listing is default-on (decision #48): `no-blip-legend` suppresses it;
32
+ // `show-blip-legend` is the parse-accepted legacy no-op.
33
+ "no-blip-legend",
31
34
  "show-blip-legend",
32
- "solid-fill",
33
- "no-title"
35
+ "fill-tint",
36
+ "fill-solid",
37
+ "fill-outline",
38
+ "no-title",
39
+ "no-legend"
34
40
  ]);
35
41
  function parseTechRadar(content) {
36
42
  const result = {
@@ -332,4 +338,4 @@ function assignGlobalNumbers(result) {
332
338
  export {
333
339
  parseTechRadar
334
340
  };
335
- //# sourceMappingURL=chunk-PZDBOK2Q.js.map
341
+ //# sourceMappingURL=chunk-CK2GMDXD.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  stripQuotes,
3
3
  tokenizeQuoteAware
4
- } from "./chunk-LV4BETUU.js";
4
+ } from "./chunk-YJVA3QUU.js";
5
5
  import {
6
6
  CATEGORICAL_COLOR_ORDER,
7
7
  RECOGNIZED_COLOR_NAMES,
8
8
  resolveColor
9
- } from "./chunk-TLVIHFRO.js";
9
+ } from "./chunk-ZKPPI6BF.js";
10
10
 
11
11
  // src/utils/tag-groups.ts
12
12
  function tagAttrKey(name) {
@@ -250,4 +250,4 @@ export {
250
250
  resolveActiveTagGroup,
251
251
  matchTagBlockHeading
252
252
  };
253
- //# sourceMappingURL=chunk-467TVMQL.js.map
253
+ //# sourceMappingURL=chunk-CMVZWP32.js.map
@@ -1,16 +1,16 @@
1
+ import {
2
+ FONT_FAMILY
3
+ } from "./chunk-6KFWC4CO.js";
1
4
  import {
2
5
  encodeDiagramUrl
3
- } from "./chunk-3ODS2VGL.js";
6
+ } from "./chunk-U7VO6JAA.js";
4
7
  import {
5
8
  parseDgmoChartType
6
- } from "./chunk-KJGG2JKQ.js";
7
- import {
8
- FONT_FAMILY
9
- } from "./chunk-6KFWC4CO.js";
9
+ } from "./chunk-SQCBSFT5.js";
10
10
  import {
11
11
  measureText,
12
12
  truncateText
13
- } from "./chunk-WCT3NYCV.js";
13
+ } from "./chunk-4ASYQ347.js";
14
14
 
15
15
  // src/error-card.ts
16
16
  var DOCS_BASE = "https://diagrammo.app/docs";
@@ -428,4 +428,4 @@ export {
428
428
  defaultEmbedBackground,
429
429
  getEmbedSvgViewBox
430
430
  };
431
- //# sourceMappingURL=chunk-GNSFLJAA.js.map
431
+ //# sourceMappingURL=chunk-CQFNIIQN.js.map
@@ -34,6 +34,21 @@ function monthNameToNum(raw) {
34
34
  i = MONTHS_ABBR.indexOf(t.slice(0, 3));
35
35
  return i >= 0 ? i + 1 : 0;
36
36
  }
37
+ var MONTH_NAME_SCAN_RE = /\b(\d{1,2})\s+([A-Za-z]{3,9})\.?(?:\s+\d{4})?|\b([A-Za-z]{3,9})\.?\s+(\d{1,2})(?:,?\s+\d{4})?/g;
38
+ function scanMonthNameDates(line) {
39
+ const spans = [];
40
+ const re = new RegExp(MONTH_NAME_SCAN_RE.source, "g");
41
+ let m;
42
+ while ((m = re.exec(line)) !== null) {
43
+ const month = m[2] ?? m[3] ?? "";
44
+ if (monthNameToNum(month) <= 0) {
45
+ re.lastIndex = m.index + 1;
46
+ continue;
47
+ }
48
+ spans.push({ start: m.index, end: m.index + m[0].length });
49
+ }
50
+ return spans;
51
+ }
37
52
  var ERA_RE = /^(\d{1,4})(?:-(\d{2})(?:-(\d{2}))?)?\s+(BCE|BC|CE|AD)\b/i;
38
53
  var ISO_RE = /^(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?/;
39
54
  var MONTH_D_RE = /^([A-Za-z]{3,9})\.?\s+(\d{1,2})(?:,?\s+(\d{4}))?/;
@@ -258,10 +273,11 @@ function normalizeDate(raw, opts = {}) {
258
273
  }
259
274
 
260
275
  export {
276
+ scanMonthNameDates,
261
277
  parseDateToken,
262
278
  toInternal,
263
279
  resolveTokenYear,
264
280
  makeYearContext,
265
281
  normalizeDate
266
282
  };
267
- //# sourceMappingURL=chunk-RBDIYLA5.js.map
283
+ //# sourceMappingURL=chunk-DAOFNU6J.js.map
@@ -6,16 +6,17 @@ import {
6
6
  } from "./chunk-OQKP2X3D.js";
7
7
  import {
8
8
  normalizeDate
9
- } from "./chunk-RBDIYLA5.js";
9
+ } from "./chunk-DAOFNU6J.js";
10
10
  import {
11
11
  extractColor,
12
+ fillModeFromToken,
12
13
  measureIndent,
13
14
  parseFirstLine
14
- } from "./chunk-LV4BETUU.js";
15
+ } from "./chunk-YJVA3QUU.js";
15
16
  import {
16
17
  makeDgmoError,
17
18
  makeFail
18
- } from "./chunk-CXK4DZH3.js";
19
+ } from "./chunk-4W2PE66Q.js";
19
20
 
20
21
  // src/countdown/parser.ts
21
22
  var TIME_24H_RE = /^(\d{1,2}):(\d{2})$/;
@@ -51,19 +52,20 @@ function parse24h(tok) {
51
52
  return { hour, minute };
52
53
  }
53
54
  function parseAt(rest, lineNum, softError) {
54
- const t = parse24h(rest.trim());
55
+ const tok = rest.trim();
56
+ const t = parse24h(tok);
55
57
  if (t) return t;
56
- const fixed = ampmTo24h(rest.trim());
57
- softError(
58
- lineNum,
59
- fixed ? `"at ${rest}": use 24h time (${fixed}).` : `"at" needs a 24h time like 18:00 (got "${rest}").`
60
- );
58
+ const fixed = ampmTo24h(tok);
59
+ if (fixed) return parse24h(fixed);
60
+ softError(lineNum, `"at" needs a time like 18:00 or 6:30pm (got "${rest}").`);
61
61
  return null;
62
62
  }
63
63
  function ampmTo24h(tok) {
64
64
  const m = tok.match(AMPM_RE);
65
65
  if (!m) return null;
66
- let hour = Number(m[1]) % 12;
66
+ const h = Number(m[1]);
67
+ if (h < 1 || h > 12) return null;
68
+ let hour = h % 12;
67
69
  if (/pm/i.test(m[3])) hour += 12;
68
70
  return `${String(hour).padStart(2, "0")}:${m[2] ?? "00"}`;
69
71
  }
@@ -326,6 +328,16 @@ function parseCountdown(content, palette) {
326
328
  case "no-visual":
327
329
  result.noVisual = true;
328
330
  break;
331
+ // ── §1.9 fill family — mutually exclusive bare flags, last one wins;
332
+ // `fill-tint` is the explicit spelling of the default (clears it). ──
333
+ case "fill-tint":
334
+ case "fill-solid":
335
+ case "fill-outline": {
336
+ const fm = fillModeFromToken(key);
337
+ if (fm === "solid" || fm === "outline") result.fillMode = fm;
338
+ else delete result.fillMode;
339
+ break;
340
+ }
329
341
  // ── `note` — markdown caption; inline value or indented body block. ──
330
342
  case "note":
331
343
  inNote = true;
@@ -534,4 +546,4 @@ export {
534
546
  targetToMs2 as targetToMs,
535
547
  parseCountdown
536
548
  };
537
- //# sourceMappingURL=chunk-AFIEPDLX.js.map
549
+ //# sourceMappingURL=chunk-DWUMPMV2.js.map
@@ -128,9 +128,10 @@ function addGanttDuration(startDate, duration, holidays, holidaySet, direction =
128
128
  }
129
129
  }
130
130
  function parseDuration(s) {
131
- const match = s.trim().match(/^(\d+(?:\.\d+)?)(min|bd|d|w|m|q|y|h|s)$/);
131
+ const match = s.trim().match(/^(\d+(?:\.\d+)?)(min|bd|sp|d|w|m|q|y|h|s)$/);
132
132
  if (!match) return null;
133
- return { amount: parseFloat(match[1]), unit: match[2] };
133
+ const unit = match[2] === "sp" ? "s" : match[2];
134
+ return { amount: parseFloat(match[1]), unit };
134
135
  }
135
136
  function parseOffset(value) {
136
137
  const trimmed = value.trim();
@@ -194,4 +195,4 @@ export {
194
195
  parseOffsetPrefix,
195
196
  parseGanttDate
196
197
  };
197
- //# sourceMappingURL=chunk-USZW2HHU.js.map
198
+ //# sourceMappingURL=chunk-EQW6HOP4.js.map
@@ -9,15 +9,16 @@ import {
9
9
  matchTagBlockHeading,
10
10
  stripDefaultModifier,
11
11
  tagAttrKey
12
- } from "./chunk-467TVMQL.js";
12
+ } from "./chunk-CMVZWP32.js";
13
13
  import {
14
14
  extractColor,
15
+ fillModeFromToken,
15
16
  measureIndent,
16
17
  parseFirstLine
17
- } from "./chunk-LV4BETUU.js";
18
+ } from "./chunk-YJVA3QUU.js";
18
19
  import {
19
20
  emit
20
- } from "./chunk-CXK4DZH3.js";
21
+ } from "./chunk-4W2PE66Q.js";
21
22
 
22
23
  // src/body/diagnostics.ts
23
24
  var BODY_DX = {
@@ -140,6 +141,13 @@ function parseBody(content, palette) {
140
141
  options.noTitle = true;
141
142
  continue;
142
143
  }
144
+ const fm = fillModeFromToken(trimmed);
145
+ if (fm !== null) {
146
+ if (fm === "tint") delete options.fillMode;
147
+ else options.fillMode = fm;
148
+ currentTagGroup = null;
149
+ continue;
150
+ }
143
151
  }
144
152
  const tagBlockMatch = matchTagBlockHeading(trimmed);
145
153
  if (tagBlockMatch && !contentStarted) {
@@ -256,4 +264,4 @@ export {
256
264
  parseBody,
257
265
  extractSymbols
258
266
  };
259
- //# sourceMappingURL=chunk-6BQFET7X.js.map
267
+ //# sourceMappingURL=chunk-FFXCKZOU.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  NODE_HEIGHT,
3
3
  NODE_WIDTH
4
- } from "./chunk-7DF4J4RL.js";
4
+ } from "./chunk-KKHCNSKK.js";
5
5
 
6
6
  // src/boxes-and-lines/layout-grouped.ts
7
7
  var NODESEP = 50;
@@ -689,4 +689,4 @@ export {
689
689
  acyclicOrient,
690
690
  groupedTierCandidates
691
691
  };
692
- //# sourceMappingURL=chunk-WRNFDFPU.js.map
692
+ //# sourceMappingURL=chunk-FGDSTT3F.js.map
@@ -5,12 +5,13 @@ import {
5
5
  } from "./chunk-APKUAJ2L.js";
6
6
  import {
7
7
  extractColor,
8
+ fillModeFromToken,
8
9
  parseFirstLine
9
- } from "./chunk-LV4BETUU.js";
10
+ } from "./chunk-YJVA3QUU.js";
10
11
  import {
11
12
  makeDgmoError,
12
13
  makeFail
13
- } from "./chunk-CXK4DZH3.js";
14
+ } from "./chunk-4W2PE66Q.js";
14
15
 
15
16
  // src/clock/zone-coords.ts
16
17
  var ZONE_COORDS = {
@@ -325,12 +326,22 @@ function searchZones(query, nowMs, limit = 8) {
325
326
  var DIRECTIVES = /* @__PURE__ */ new Set([
326
327
  "analog",
327
328
  "hours",
329
+ "workweek",
330
+ // Legacy alias for `workweek` (decision #48).
328
331
  "days",
329
332
  "no-sun",
330
333
  "time-24",
331
334
  "no-title",
335
+ // Canonical direction booleans (§1.9); key+value `direction <lr|tb>` (and
336
+ // its `columns` value alias) stays parse-accepted legacy. These MUST be in
337
+ // this set — otherwise a bare `direction-lr` line parses as a zone entry.
338
+ "direction-lr",
339
+ "direction-tb",
332
340
  "direction",
333
- "color-by"
341
+ "color-by",
342
+ "fill-tint",
343
+ "fill-solid",
344
+ "fill-outline"
334
345
  ]);
335
346
  var WEEKDAY_ABBR = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
336
347
  function weekdayIndex(token) {
@@ -474,12 +485,14 @@ function parseClock(content, palette) {
474
485
  }
475
486
  break;
476
487
  }
488
+ // `workweek` is canonical; `days` is the legacy alias (decision #48).
489
+ case "workweek":
477
490
  case "days": {
478
491
  const parsed = parseDays(rest);
479
492
  if (parsed === null) {
480
493
  softError(
481
494
  lineNum,
482
- `"days" needs weekdays like mon-fri or mon,wed,fri (got "${rest}").`
495
+ `"${key}" needs weekdays like mon-fri or mon,wed,fri (got "${rest}").`
483
496
  );
484
497
  } else {
485
498
  workDays = parsed;
@@ -495,6 +508,14 @@ function parseClock(content, palette) {
495
508
  case "no-title":
496
509
  result.noTitle = true;
497
510
  break;
511
+ case "fill-tint":
512
+ case "fill-solid":
513
+ case "fill-outline": {
514
+ const fm = fillModeFromToken(key);
515
+ if (fm === "solid" || fm === "outline") result.fillMode = fm;
516
+ else delete result.fillMode;
517
+ break;
518
+ }
498
519
  case "color-by": {
499
520
  const v = rest.trim().toLowerCase();
500
521
  const modes = ["place", "work", "daylight", "time", "none"];
@@ -508,9 +529,15 @@ function parseClock(content, palette) {
508
529
  }
509
530
  break;
510
531
  }
532
+ case "direction-lr":
533
+ result.columns = true;
534
+ break;
535
+ case "direction-tb":
536
+ result.columns = false;
537
+ break;
511
538
  case "direction": {
512
539
  const v = rest.trim().toLowerCase();
513
- result.columns = v.startsWith("lr") || v === "columns";
540
+ result.columns = v === "lr" || v === "columns";
514
541
  break;
515
542
  }
516
543
  }
@@ -626,7 +653,7 @@ function parseClock(content, palette) {
626
653
  } else if (workDays !== null) {
627
654
  warn(
628
655
  result.titleLineNumber ?? 1,
629
- "`days` has no effect without `hours` \u2014 the working-hours status needs a window."
656
+ "`workweek` has no effect without `hours` \u2014 the working-hours status needs a window."
630
657
  );
631
658
  }
632
659
  result.entries = entries;
@@ -645,4 +672,4 @@ export {
645
672
  searchZones,
646
673
  parseClock
647
674
  };
648
- //# sourceMappingURL=chunk-6NFYEQDX.js.map
675
+ //# sourceMappingURL=chunk-FLDC7ZAK.js.map
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  layoutClassDiagram
3
- } from "./chunk-WBRZJOEC.js";
3
+ } from "./chunk-XY3UDKKH.js";
4
4
  import {
5
5
  NOTE_BADGE_RADIUS,
6
6
  noteConnectorPoints,
7
7
  renderNoteBadge,
8
8
  renderNoteBox,
9
9
  renderNoteConnector
10
- } from "./chunk-JEUJOX5X.js";
10
+ } from "./chunk-3IUHKMJI.js";
11
11
  import {
12
12
  extractExportSvg,
13
13
  runInExportContainer
@@ -21,7 +21,7 @@ import {
21
21
  } from "./chunk-YYVTBZZC.js";
22
22
  import {
23
23
  renderIntegratedLegend
24
- } from "./chunk-OU7HLO7I.js";
24
+ } from "./chunk-W5KMNC5U.js";
25
25
  import {
26
26
  TITLE_FONT_SIZE,
27
27
  TITLE_FONT_WEIGHT,
@@ -31,18 +31,22 @@ import {
31
31
  FONT_FAMILY
32
32
  } from "./chunk-6KFWC4CO.js";
33
33
  import {
34
- LEGEND_HEIGHT
35
- } from "./chunk-QOOUC2J5.js";
36
- import {
37
- measureText
38
- } from "./chunk-WCT3NYCV.js";
34
+ parseClassDiagram
35
+ } from "./chunk-VRRDUYOK.js";
39
36
  import {
40
37
  contrastText,
41
38
  shapeFill
42
- } from "./chunk-P6T66CCZ.js";
39
+ } from "./chunk-JYDMBWRP.js";
43
40
  import {
44
- parseClassDiagram
45
- } from "./chunk-FC5I2KXV.js";
41
+ LEGEND_HEIGHT
42
+ } from "./chunk-4RGZFA7H.js";
43
+ import {
44
+ measureText
45
+ } from "./chunk-4ASYQ347.js";
46
+ import {
47
+ fillModeFromOptions,
48
+ legendSuppressed
49
+ } from "./chunk-YJVA3QUU.js";
46
50
 
47
51
  // src/class/renderer.ts
48
52
  import * as d3Selection from "d3-selection";
@@ -68,11 +72,9 @@ function modifierColor(modifier, palette, colorOff) {
68
72
  return palette.colors.teal;
69
73
  }
70
74
  }
71
- function nodeFill(palette, isDark, modifier, nodeColor, colorOff, solid) {
75
+ function nodeFill(palette, isDark, modifier, nodeColor, colorOff, fillMode) {
72
76
  const color = nodeColor ?? modifierColor(modifier, palette, colorOff);
73
- return shapeFill(palette, color, isDark, {
74
- ...solid !== void 0 && { solid }
75
- });
77
+ return shapeFill(palette, color, isDark, { mode: fillMode });
76
78
  }
77
79
  function nodeStroke(palette, modifier, nodeColor, colorOff) {
78
80
  return nodeColor ?? modifierColor(modifier, palette, colorOff);
@@ -151,7 +153,7 @@ function renderClassDiagram(container, parsed, layout, palette, isDark, onClickI
151
153
  const sTitleY = ctx.structural(TITLE_Y);
152
154
  const sLegendHeight = ctx.structural(LEGEND_HEIGHT);
153
155
  const legendEntries = collectClassTypes(parsed);
154
- const hasLegend = legendEntries.length > 1;
156
+ const hasLegend = legendEntries.length > 1 && !legendSuppressed(parsed.options);
155
157
  const showTitle = !!parsed.title && parsed.options["no-title"] !== "on";
156
158
  const titleHeight = showTitle ? 40 : 0;
157
159
  const LEGEND_FIXED_GAP = 8;
@@ -259,14 +261,14 @@ function renderClassDiagram(container, parsed, layout, palette, isDark, onClickI
259
261
  const colorOff = !!parsed.options?.["no-auto-color"];
260
262
  const neutralize = hasLegend && !isLegendExpanded && !node.color;
261
263
  const effectiveColor = neutralize ? palette.primary : node.color;
262
- const solid = parsed.options?.["solid-fill"] === "on";
264
+ const fillMode = fillModeFromOptions(parsed.options ?? {});
263
265
  const fill = nodeFill(
264
266
  palette,
265
267
  isDark,
266
268
  node.modifier,
267
269
  effectiveColor,
268
270
  colorOff,
269
- solid
271
+ fillMode
270
272
  );
271
273
  const stroke = nodeStroke(palette, node.modifier, effectiveColor, colorOff);
272
274
  const onFillText = contrastText(
@@ -289,14 +291,14 @@ function renderClassDiagram(container, parsed, layout, palette, isDark, onClickI
289
291
  const fields = node.members.filter((m) => !m.isMethod);
290
292
  const methods = node.members.filter((m) => m.isMethod);
291
293
  if (isEnum) {
292
- nodeG.append("line").attr("x1", -w / 2).attr("y1", yPos).attr("x2", w / 2).attr("y2", yPos).attr("stroke", solid ? onFillText : stroke).attr("stroke-width", 0.5).attr("stroke-opacity", 0.5);
294
+ nodeG.append("line").attr("x1", -w / 2).attr("y1", yPos).attr("x2", w / 2).attr("y2", yPos).attr("stroke", fillMode === "solid" ? onFillText : stroke).attr("stroke-width", 0.5).attr("stroke-opacity", 0.5);
293
295
  let memberY = yPos + sCompartmentPaddingY;
294
296
  for (const member of node.members) {
295
297
  nodeG.append("text").attr("x", -w / 2 + sMemberPaddingX).attr("y", memberY + sMemberLineHeight / 2).attr("dominant-baseline", "central").attr("fill", onFillText).attr("font-size", sMemberFontSize).text(member.name);
296
298
  memberY += sMemberLineHeight;
297
299
  }
298
300
  } else {
299
- nodeG.append("line").attr("x1", -w / 2).attr("y1", yPos).attr("x2", w / 2).attr("y2", yPos).attr("stroke", solid ? onFillText : stroke).attr("stroke-width", 0.5).attr("stroke-opacity", 0.5);
301
+ nodeG.append("line").attr("x1", -w / 2).attr("y1", yPos).attr("x2", w / 2).attr("y2", yPos).attr("stroke", fillMode === "solid" ? onFillText : stroke).attr("stroke-width", 0.5).attr("stroke-opacity", 0.5);
300
302
  if (fields.length > 0) {
301
303
  let memberY = yPos + sCompartmentPaddingY;
302
304
  for (const field of fields) {
@@ -312,7 +314,7 @@ function renderClassDiagram(container, parsed, layout, palette, isDark, onClickI
312
314
  }
313
315
  }
314
316
  yPos += node.fieldsHeight;
315
- nodeG.append("line").attr("x1", -w / 2).attr("y1", yPos).attr("x2", w / 2).attr("y2", yPos).attr("stroke", solid ? onFillText : stroke).attr("stroke-width", 0.5).attr("stroke-opacity", 0.5);
317
+ nodeG.append("line").attr("x1", -w / 2).attr("y1", yPos).attr("x2", w / 2).attr("y2", yPos).attr("stroke", fillMode === "solid" ? onFillText : stroke).attr("stroke-width", 0.5).attr("stroke-opacity", 0.5);
316
318
  if (methods.length > 0) {
317
319
  let memberY = yPos + sCompartmentPaddingY;
318
320
  for (const method of methods) {
@@ -379,7 +381,7 @@ function renderClassDiagramForExport(content, theme, palette) {
379
381
  const isDark = theme === "dark";
380
382
  const legendEntries = collectClassTypes(parsed);
381
383
  const EXPORT_LEGEND_GAP = 8;
382
- const legendReserve = legendEntries.length > 1 ? LEGEND_HEIGHT + EXPORT_LEGEND_GAP : 0;
384
+ const legendReserve = legendEntries.length > 1 && !legendSuppressed(parsed.options) ? LEGEND_HEIGHT + EXPORT_LEGEND_GAP : 0;
383
385
  const exportWidth = layout.width + DIAGRAM_PADDING * 2;
384
386
  const exportHeight = layout.height + DIAGRAM_PADDING * 2 + (parsed.title ? 40 : 0) + legendReserve;
385
387
  return runInExportContainer(exportWidth, exportHeight, (container) => {
@@ -407,4 +409,4 @@ export {
407
409
  renderClassDiagram,
408
410
  renderClassDiagramForExport
409
411
  };
410
- //# sourceMappingURL=chunk-IUJODQKX.js.map
412
+ //# sourceMappingURL=chunk-FT7TPPZ5.js.map