@diagrammo/dgmo 0.50.2 → 0.52.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. package/.cursorrules +15 -19
  2. package/.github/copilot-instructions.md +15 -19
  3. package/.windsurfrules +15 -19
  4. package/SKILL.md +15 -19
  5. package/dist/advanced.d.ts +155 -65
  6. package/dist/advanced.js +231 -189
  7. package/dist/{analyzer-UYKBXAKR.js → analyzer-BJ54GIFB.js} +3 -3
  8. package/dist/auto.css +31 -8
  9. package/dist/auto.d.ts +6 -0
  10. package/dist/auto.js +171 -133
  11. package/dist/auto.mjs +3062 -1478
  12. package/dist/block.css +28 -8
  13. package/dist/block.js +138 -72
  14. package/dist/charts-d3-MXEP6BNP.js +26 -0
  15. package/dist/{chunk-3YPY3OXD.js → chunk-3HF5YEFJ.js} +17 -7
  16. package/dist/{chunk-4MJ7M6YL.js → chunk-3HGU63UY.js} +14 -13
  17. package/dist/chunk-3LK5DNED.js +35 -0
  18. package/dist/{chunk-3Y2DRD7S.js → chunk-3QD7VP3U.js} +9 -4
  19. package/dist/{chunk-6BFZKBGD.js → chunk-3YRPZ7ZZ.js} +2 -2
  20. package/dist/{chunk-WW32K72E.js → chunk-44VCIPHF.js} +25 -21
  21. package/dist/{chunk-TN35C5KM.js → chunk-4AQRFDXL.js} +2 -2
  22. package/dist/{chunk-HHXOONLX.js → chunk-4B5YISOR.js} +38 -1
  23. package/dist/{chunk-PGEGPSCZ.js → chunk-4IHAV6O7.js} +2 -2
  24. package/dist/{chunk-7L3R6I3U.js → chunk-4UNQ6X24.js} +10 -7
  25. package/dist/{chunk-O7NUCTFU.js → chunk-4YFKQ5WT.js} +7 -4
  26. package/dist/{chunk-5WFIYXQ6.js → chunk-5223KXFD.js} +122 -242
  27. package/dist/{chunk-PFHVU7UA.js → chunk-5BHJZH62.js} +3 -3
  28. package/dist/{chunk-QYTPPDAO.js → chunk-5HILBT7X.js} +2 -2
  29. package/dist/{chunk-GKC3HILQ.js → chunk-5NGAO4QK.js} +27 -4
  30. package/dist/{chunk-IAEC4KLA.js → chunk-5QKQSSPO.js} +2 -2
  31. package/dist/{chunk-DSWVNQVS.js → chunk-5RP7JRVP.js} +4 -59
  32. package/dist/{chunk-MCZ5LBZD.js → chunk-5SEVICBT.js} +8 -8
  33. package/dist/{chunk-GBE54KY6.js → chunk-6EJITS44.js} +8 -5
  34. package/dist/{chunk-BBGDM4NQ.js → chunk-6HQH6JZE.js} +35 -16
  35. package/dist/{chunk-66NVRO4K.js → chunk-6LBQ7ELG.js} +17 -18
  36. package/dist/{chunk-4XK3FLFB.js → chunk-6NYWYNBI.js} +3 -3
  37. package/dist/{chunk-VBYSIOOY.js → chunk-75G3Q4DK.js} +3 -3
  38. package/dist/{chunk-3NODSS6A.js → chunk-77FGAVZC.js} +13 -10
  39. package/dist/{chunk-6IAA2QQ2.js → chunk-7BIZCTAX.js} +2 -2
  40. package/dist/{chunk-TWQUYVP3.js → chunk-7DF4J4RL.js} +4 -4
  41. package/dist/{chunk-66RUL3XF.js → chunk-7KINELPI.js} +111 -49
  42. package/dist/{chunk-L3UHP6TD.js → chunk-7L4UJOY6.js} +1 -2
  43. package/dist/{chunk-QJP6PG7F.js → chunk-7QE3XMRK.js} +19 -18
  44. package/dist/{chunk-P7CE7LXL.js → chunk-AAXZDUOV.js} +18 -17
  45. package/dist/{chunk-SXRTRMEE.js → chunk-AL672HNE.js} +3 -3
  46. package/dist/chunk-APKUAJ2L.js +220 -0
  47. package/dist/{chunk-SCHXJTZL.js → chunk-ARGMQ3H4.js} +2 -2
  48. package/dist/{chunk-HEVYAHLW.js → chunk-AUIM2NVH.js} +5 -5
  49. package/dist/{chunk-3LH5CLP4.js → chunk-BKVOYV6I.js} +143 -6
  50. package/dist/{chunk-RZ6YKEUJ.js → chunk-BPIZNB5O.js} +17 -15
  51. package/dist/{chunk-QROYX7TT.js → chunk-BPY242XU.js} +6 -4
  52. package/dist/{chunk-OTAL43EH.js → chunk-BRENJ2BQ.js} +39 -3
  53. package/dist/{chunk-FA6K3FWM.js → chunk-CCNDLW7Z.js} +44 -22
  54. package/dist/{chunk-2KGXHFYK.js → chunk-CIRFIL4M.js} +49 -29
  55. package/dist/chunk-DAOFNU6J.js +283 -0
  56. package/dist/{chunk-QJJZSROI.js → chunk-DYWQFQJP.js} +48 -38
  57. package/dist/{chunk-XEGTMVYY.js → chunk-EMLPOL77.js} +15 -8
  58. package/dist/{chunk-NWED7CYO.js → chunk-FHGVORFO.js} +29 -25
  59. package/dist/{chunk-U2HGPLZS.js → chunk-FQ7HTV52.js} +17 -2
  60. package/dist/{chunk-H73FP42Q.js → chunk-FQMUHRVC.js} +70 -31
  61. package/dist/{chunk-BTUTZMPT.js → chunk-FT3ZYWET.js} +108 -42
  62. package/dist/{chunk-T5SHNNGP.js → chunk-FUPF2UYQ.js} +92 -34
  63. package/dist/{chunk-3XPUDB7B.js → chunk-FY5MSZAP.js} +279 -39
  64. package/dist/{chunk-M5RXSRO2.js → chunk-GCYTI3DE.js} +42 -33
  65. package/dist/{chunk-DN66GPY5.js → chunk-GJFAMOGK.js} +24 -3
  66. package/dist/{chunk-F2L5GCQ4.js → chunk-GU46PPT3.js} +3 -3
  67. package/dist/{chunk-6IUAK7RZ.js → chunk-H6PI3KJT.js} +2 -2
  68. package/dist/{chunk-ONA5KPV3.js → chunk-H7KENAZO.js} +18 -14
  69. package/dist/{chunk-SQLNBA64.js → chunk-HBPDFCQY.js} +3 -3
  70. package/dist/{chunk-SCQ5VPUF.js → chunk-HFMYN6N2.js} +2 -2
  71. package/dist/{chunk-FJUNPCYI.js → chunk-HHKO6SKY.js} +2 -2
  72. package/dist/{chunk-DZXYF2F5.js → chunk-HQQNCY7W.js} +21 -8
  73. package/dist/{chunk-7TV5Y53Y.js → chunk-HWX6ZHF3.js} +3 -3
  74. package/dist/{chunk-3P2DKJCG.js → chunk-ICPJPQ5C.js} +2 -2
  75. package/dist/{chunk-VUJGMJE6.js → chunk-IM6PDDCE.js} +4 -4
  76. package/dist/{chunk-JJUOHGX2.js → chunk-INE5YJBZ.js} +13 -8
  77. package/dist/{chunk-HTMN2Z6U.js → chunk-J6QROYDA.js} +58 -11
  78. package/dist/{chunk-NX4EQS3U.js → chunk-J76PIKAT.js} +2 -2
  79. package/dist/{chunk-SVTI362O.js → chunk-J7KJR3R6.js} +129 -109
  80. package/dist/{chunk-JEUJOX5X.js → chunk-J7TLCB2Q.js} +2 -2
  81. package/dist/{chunk-O7WP4ZD4.js → chunk-JED6ZDEE.js} +2 -2
  82. package/dist/{chunk-J6K7RP6P.js → chunk-JRCOYRRH.js} +19 -7
  83. package/dist/{chunk-7QKLIMRZ.js → chunk-K2I2XOZD.js} +46 -51
  84. package/dist/{chunk-EAMEADTV.js → chunk-K4EOKJA6.js} +96 -24
  85. package/dist/{chunk-5OWVC2A6.js → chunk-KGVZ5VGH.js} +13 -10
  86. package/dist/{chunk-DFTFPYUD.js → chunk-LBMS4AW6.js} +22 -21
  87. package/dist/{chunk-VVW3F3MD.js → chunk-LGT3PZCJ.js} +27 -19
  88. package/dist/{chunk-OMNGQPEZ.js → chunk-LTXOLDUZ.js} +9 -6
  89. package/dist/{chunk-Q4V4XQWV.js → chunk-MUE65OTD.js} +5 -4
  90. package/dist/{chunk-5GJYGP5Z.js → chunk-MUVJ57EP.js} +14 -18
  91. package/dist/{chunk-CLD2OKV7.js → chunk-MX2EY5Y7.js} +2 -2
  92. package/dist/{chunk-OTQKUHRS.js → chunk-NNS4E7CW.js} +6 -4
  93. package/dist/{chunk-NNAAJVBU.js → chunk-NR5HCAUD.js} +1 -1
  94. package/dist/{chunk-KFZYNWWO.js → chunk-ONU3U4GL.js} +4 -4
  95. package/dist/{chunk-YNRDWYZP.js → chunk-OQKP2X3D.js} +170 -51
  96. package/dist/{chunk-AHGF2YYA.js → chunk-OTOHI4JO.js} +2 -2
  97. package/dist/{chunk-EOFPYPAU.js → chunk-P3NRSSUU.js} +51 -11
  98. package/dist/{chunk-QXKWYZNR.js → chunk-PRI2OD4E.js} +10 -3
  99. package/dist/{chunk-U6EQI3U6.js → chunk-QBZYACOG.js} +3 -3
  100. package/dist/{chunk-C2CVAM3U.js → chunk-QGATPIPX.js} +170 -91
  101. package/dist/{chunk-PZFVK3IH.js → chunk-QHXCAEMX.js} +8 -5
  102. package/dist/{chunk-BH3UYK36.js → chunk-QJMKPUYK.js} +15 -5
  103. package/dist/{chunk-HQCHYB5F.js → chunk-QOOUC2J5.js} +2 -2
  104. package/dist/{chunk-Z6XJQ6KO.js → chunk-QVENJMNX.js} +2 -2
  105. package/dist/{chunk-IUMPEA64.js → chunk-QZX5S6R3.js} +4 -4
  106. package/dist/{chunk-I7F2A35O.js → chunk-R3YSD62R.js} +25 -47
  107. package/dist/{chunk-NU3XLTGP.js → chunk-REJAIQ5S.js} +4 -4
  108. package/dist/{chunk-2C56LEML.js → chunk-ROOE4R4Y.js} +8 -5
  109. package/dist/{chunk-XHVV4NVW.js → chunk-RT7ACF77.js} +12 -2
  110. package/dist/{chunk-I2WKW7C7.js → chunk-SMRFPVLQ.js} +3 -3
  111. package/dist/{chunk-VDOOQZUD.js → chunk-SWSIKFEB.js} +4 -4
  112. package/dist/{chunk-HLJVEAOF.js → chunk-T4A4TSTJ.js} +19 -45
  113. package/dist/{chunk-KHEYDLMT.js → chunk-TJVLKNGR.js} +20 -10
  114. package/dist/{chunk-GL5UZ6NY.js → chunk-TPFKKXCB.js} +3 -3
  115. package/dist/{chunk-X6EZPSW6.js → chunk-TTIM6YTT.js} +31 -21
  116. package/dist/{chunk-BCYVE3N5.js → chunk-TYS6CSS5.js} +2 -2
  117. package/dist/{chunk-T4VOVZT5.js → chunk-UBLHQTLV.js} +15 -14
  118. package/dist/{chunk-3LKM6FMW.js → chunk-UNURMIQO.js} +2 -2
  119. package/dist/{chunk-TSA237IM.js → chunk-VILVLS7P.js} +5 -3
  120. package/dist/{chunk-HGN652MU.js → chunk-VL2O2F3W.js} +2 -2
  121. package/dist/{chunk-3XGZF2QJ.js → chunk-VQOCMUWI.js} +39 -28
  122. package/dist/{chunk-P6T66CCZ.js → chunk-WBM7ZNDI.js} +3 -2
  123. package/dist/{chunk-CMCR5WBW.js → chunk-WBRZJOEC.js} +3 -3
  124. package/dist/{chunk-5LWQH6QV.js → chunk-WCT3NYCV.js} +1 -1
  125. package/dist/{chunk-C4GQDB5L.js → chunk-WRNFDFPU.js} +2 -2
  126. package/dist/{chunk-6HJBFVLO.js → chunk-XD6ZYURY.js} +9 -4
  127. package/dist/{chunk-C63UWAKM.js → chunk-Y2ZE3MSG.js} +2 -2
  128. package/dist/{chunk-7UEMZREK.js → chunk-YAA6IID3.js} +2 -2
  129. package/dist/{chunk-F7BFXWNQ.js → chunk-YIBAWQGJ.js} +7 -4
  130. package/dist/{chunk-PH5X4GIP.js → chunk-YTMTPUH4.js} +8 -5
  131. package/dist/{chunk-3UIKSPFB.js → chunk-Z5QVYKR7.js} +11 -3
  132. package/dist/{chunk-KQ57MHRO.js → chunk-ZEF5M5MB.js} +155 -87
  133. package/dist/{chunk-LE4MYMLI.js → chunk-ZJV7GYR4.js} +6 -6
  134. package/dist/{chunk-XJLKLU4D.js → chunk-ZNWAYU6N.js} +11 -7
  135. package/dist/cli.cjs +165 -148
  136. package/dist/clock.js +105 -25
  137. package/dist/countdown.js +208 -82
  138. package/dist/dgmo-router-X7ZGAPIE.js +86 -0
  139. package/dist/dimensions-45H6JQEY.js +22 -0
  140. package/dist/editor.js +17 -2
  141. package/dist/element.d.ts +6 -0
  142. package/dist/element.js +172 -134
  143. package/dist/element.mjs +3026 -1463
  144. package/dist/{flowchart-parser-OE4WHLTF.js → flowchart-parser-UKELHBSB.js} +4 -4
  145. package/dist/{flowchart-renderer-GPCSMTOR.js → flowchart-renderer-MNCDS7MV.js} +10 -10
  146. package/dist/highlight.d.ts +21 -1
  147. package/dist/highlight.js +106 -3
  148. package/dist/index.d.ts +2 -2
  149. package/dist/index.js +59 -57
  150. package/dist/{layout-FWODLIMP.js → layout-2L3WMRYU.js} +6 -6
  151. package/dist/{layout-7SKMFYHL.js → layout-46N4JJYK.js} +5 -5
  152. package/dist/{layout-7H4H46CS.js → layout-7QXCNOVS.js} +3 -3
  153. package/dist/layout-A4XWNVID.js +14 -0
  154. package/dist/{layout-46366KBT.js → layout-A5UHRWVH.js} +3 -3
  155. package/dist/{layout-NXG63LWH.js → layout-AM2JWW3X.js} +4 -4
  156. package/dist/{layout-DC4TVXER.js → layout-EE6GE46Y.js} +5 -5
  157. package/dist/{layout-FGQWRYYW.js → layout-F4WO357A.js} +3 -3
  158. package/dist/layout-G23F7LDH.js +9 -0
  159. package/dist/{layout-QNUQLEHU.js → layout-GM4UGR7B.js} +5 -4
  160. package/dist/{layout-7MZ5NF2N.js → layout-GQQJXNYH.js} +5 -5
  161. package/dist/{layout-5BG6DFCU.js → layout-IIE2S5FK.js} +6 -6
  162. package/dist/{layout-34CLNICW.js → layout-OAC4PEAC.js} +5 -5
  163. package/dist/layout-VMCRX66I.js +14 -0
  164. package/dist/{layout-PUQCB6AN.js → layout-ZDOSXL5G.js} +7 -7
  165. package/dist/{layout-search-QS44PI5R.js → layout-search-55FU6HD3.js} +6 -157
  166. package/dist/map-data/gazetteer.json +1 -1
  167. package/dist/{palettes-PRJ2RI6D.js → palettes-UDLZ2SA4.js} +2 -2
  168. package/dist/{parser-D5VILGN2.js → parser-2ECN6JA2.js} +4 -4
  169. package/dist/{parser-LWKKBNSA.js → parser-4WTIHM5J.js} +3 -3
  170. package/dist/{parser-DFFEDKHH.js → parser-5H2BTSJQ.js} +3 -3
  171. package/dist/{parser-4NO6VZ6S.js → parser-75KVXUNS.js} +4 -4
  172. package/dist/{parser-VKOJM7KS.js → parser-774AC53T.js} +4 -4
  173. package/dist/{parser-IBWNAPY4.js → parser-BE4YCSRU.js} +3 -3
  174. package/dist/{parser-4AI5ZN5F.js → parser-CNGUQUQI.js} +3 -3
  175. package/dist/{parser-36HVKU5U.js → parser-DEUUSQIN.js} +7 -6
  176. package/dist/{parser-H3XEPFPV.js → parser-DQAFLUJB.js} +4 -4
  177. package/dist/{parser-5OXGPNBF.js → parser-EYCKNKQA.js} +5 -5
  178. package/dist/{parser-TGQZJ5OT.js → parser-FXISIU6A.js} +4 -4
  179. package/dist/{parser-JJR52VAT.js → parser-GTB4XC7P.js} +5 -5
  180. package/dist/{parser-AGVYTQXV.js → parser-GVEPAUSD.js} +4 -4
  181. package/dist/{parser-WAV5JRPT.js → parser-HSQGTY4G.js} +4 -4
  182. package/dist/{parser-YS7TOS2K.js → parser-HVKRINUS.js} +3 -3
  183. package/dist/{parser-W4PQUGX3.js → parser-J5MIEYO4.js} +5 -5
  184. package/dist/parser-KMZIXLDZ.js +13 -0
  185. package/dist/{parser-HYRTF3DO.js → parser-LJHXWSXU.js} +3 -3
  186. package/dist/{parser-KCR2WS3V.js → parser-PT3W72G5.js} +4 -4
  187. package/dist/{parser-CVMEDULU.js → parser-SBJQDPHL.js} +4 -4
  188. package/dist/{parser-RZPVAQVX.js → parser-SUWWWCMX.js} +4 -3
  189. package/dist/{parser-TXND652E.js → parser-SXDRNZOA.js} +4 -4
  190. package/dist/parser-UMILOW3M.js +14 -0
  191. package/dist/{parser-RV4M6AS2.js → parser-UP3AZ367.js} +4 -4
  192. package/dist/{parser-IJBMRXMC.js → parser-WHPRV3X5.js} +5 -5
  193. package/dist/{parser-MPCE5JBG.js → parser-WX3UODSJ.js} +4 -4
  194. package/dist/{parser-K3XXLMUW.js → parser-XCIEN3KN.js} +4 -4
  195. package/dist/{parser-AXKBDGNO.js → parser-XIRTUMVN.js} +5 -5
  196. package/dist/{parser-B5FVS7O6.js → parser-YKCGIG45.js} +3 -3
  197. package/dist/{parser-PSA4UBSP.js → parser-YKYMQG3B.js} +4 -4
  198. package/dist/{parser-MTOMTWTD.js → parser-ZGM2OJ6Y.js} +6 -5
  199. package/dist/{parser-CSFUN3CT.js → parser-ZL5QUFVH.js} +5 -4
  200. package/dist/pert.d.ts +2 -2
  201. package/dist/{renderer-PPIHO5FI.js → renderer-3F7OS2AX.js} +14 -13
  202. package/dist/{renderer-SBS3YWU5.js → renderer-4QB4K7Q3.js} +9 -9
  203. package/dist/{renderer-GHPZMFU2.js → renderer-5DAKMIU2.js} +3 -3
  204. package/dist/{renderer-R2WNIC2C.js → renderer-5H4SY7YY.js} +9 -9
  205. package/dist/{renderer-DAXMXIKD.js → renderer-5PIQPFOX.js} +5 -4
  206. package/dist/{renderer-45PSOL3E.js → renderer-6MU37QF5.js} +6 -6
  207. package/dist/renderer-AQVMWJ4M.js +27 -0
  208. package/dist/{renderer-A5VE5BCI.js → renderer-BDDW6K7N.js} +9 -9
  209. package/dist/{renderer-AUW2BE6G.js → renderer-BNB3VIDY.js} +10 -10
  210. package/dist/{renderer-4ITCHBT7.js → renderer-CQY6ATOS.js} +6 -6
  211. package/dist/{renderer-6OKF44KS.js → renderer-CVW75CXL.js} +15 -15
  212. package/dist/{renderer-7RH2SI3B.js → renderer-DT4XRFEP.js} +5 -4
  213. package/dist/{renderer-B5TBNZJE.js → renderer-ERHBSTQT.js} +9 -9
  214. package/dist/{renderer-HVCU2C3Z.js → renderer-HSHHVYWF.js} +5 -4
  215. package/dist/renderer-IDPVUFNB.js +28 -0
  216. package/dist/renderer-ILX6BGKR.js +21 -0
  217. package/dist/renderer-JP663HKG.js +22 -0
  218. package/dist/{renderer-KS7YZJE2.js → renderer-KNFTTOBL.js} +11 -11
  219. package/dist/{renderer-2AZ5HJFK.js → renderer-MVUZBESR.js} +5 -5
  220. package/dist/{renderer-QAOBLRXV.js → renderer-N4EBR2FV.js} +11 -11
  221. package/dist/{renderer-P5ROYQGU.js → renderer-NHO46CT2.js} +4 -4
  222. package/dist/{renderer-NGXZTRK6.js → renderer-NO2QJ5LZ.js} +10 -10
  223. package/dist/{renderer-FPE3J5VZ.js → renderer-OGFV5RXX.js} +12 -12
  224. package/dist/{renderer-ODUUOPVT.js → renderer-PDLESJMS.js} +15 -15
  225. package/dist/renderer-T4MTNINC.js +24 -0
  226. package/dist/renderer-TOUGFGTM.js +24 -0
  227. package/dist/{renderer-BSR2O2H6.js → renderer-U3KPD43Y.js} +14 -13
  228. package/dist/{renderer-JCCHNECZ.js → renderer-X334IJU2.js} +10 -10
  229. package/dist/{renderer-5DSEWF74.js → renderer-Y5OAMOCR.js} +9 -9
  230. package/dist/{renderer-5KVCNMOJ.js → renderer-YONAKAJU.js} +5 -3
  231. package/dist/{renderer-7SD6MSBS.js → renderer-YWMI6Y2U.js} +12 -12
  232. package/dist/{renderer-2QPMJ2DA.js → renderer-ZWIH4WDW.js} +10 -10
  233. package/dist/renderer-radial-7CGZMVMS.js +21 -0
  234. package/dist/{resolver-FHBCO3PL.js → resolver-EMTGNR3D.js} +4 -3
  235. package/dist/{state-parser-3REXRK3R.js → state-parser-BATWAID2.js} +4 -4
  236. package/dist/{state-renderer-XYLNRWXR.js → state-renderer-3FKZJ3LP.js} +10 -10
  237. package/dist/{themes-PdPR1-hC.d.ts → themes-32xj5ZTW.d.ts} +27 -0
  238. package/docs/ai-integration.md +15 -19
  239. package/docs/language-reference.md +106 -21
  240. package/gallery/fixtures/clock.dgmo +3 -3
  241. package/gallery/fixtures/countdown-tz.dgmo +5 -0
  242. package/package.json +1 -1
  243. package/dist/charts-d3-MUW3LTML.js +0 -26
  244. package/dist/dgmo-router-CE2G67FV.js +0 -84
  245. package/dist/dimensions-OTBKC5M6.js +0 -22
  246. package/dist/layout-6RDJHS6E.js +0 -9
  247. package/dist/layout-J36454XU.js +0 -14
  248. package/dist/layout-LD6XTLD6.js +0 -14
  249. package/dist/parser-4WQQQXCG.js +0 -13
  250. package/dist/parser-O4HIUN6G.js +0 -13
  251. package/dist/renderer-CYB4LK3G.js +0 -22
  252. package/dist/renderer-FF24KZCI.js +0 -24
  253. package/dist/renderer-FYSVXL7M.js +0 -28
  254. package/dist/renderer-HDCCZURL.js +0 -24
  255. package/dist/renderer-PSMMZCKH.js +0 -21
  256. package/dist/renderer-UYMQQCJK.js +0 -24
  257. package/dist/renderer-radial-F7X5F2VU.js +0 -21
@@ -1,66 +1,44 @@
1
+ import {
2
+ parseDateToken,
3
+ toInternal
4
+ } from "./chunk-DAOFNU6J.js";
1
5
  import {
2
6
  TIMELINE_REGISTRY,
3
7
  splitNameAndMeta,
4
8
  warnUnknownMetaKeys,
5
9
  withTagAliases
6
- } from "./chunk-OTAL43EH.js";
10
+ } from "./chunk-BRENJ2BQ.js";
7
11
  import {
8
12
  makeDgmoError
9
13
  } from "./chunk-CXK4DZH3.js";
10
14
 
11
15
  // src/timeline/parser.ts
12
16
  var TIMELINE_DURATION_RE = /^(\d+(?:\.\d{1,2})?)(min|[dwmyhs])(\?)?$/;
13
- var DATE_RE = /^(\d{4}(?:-\d{2}(?:-\d{2})?)?)/;
14
- var TIME_RE = /^\s+(\d{1,2}:\d{2}(?::\d{2})?)/;
15
17
  var ARROW_RE = /^\s*(?:->|–>)\s*/;
16
- var ERA_DATE_RE = /^(\d{1,4}(?:-\d{2}(?:-\d{2})?)?)\s+(BCE|BC|CE|AD)\b/i;
17
- function parseTime(timeStr) {
18
- const [hStr, mStr, sStr] = timeStr.split(":");
19
- const h = parseInt(hStr, 10);
20
- const m = parseInt(mStr, 10);
21
- const s = sStr !== void 0 ? parseInt(sStr, 10) : 0;
22
- const valid = h >= 0 && h <= 23 && m >= 0 && m <= 59 && s >= 0 && s <= 59;
23
- return { valid, h, m, s };
24
- }
25
- function parseDateWithOptionalTime(input) {
26
- const eraMatch = input.match(ERA_DATE_RE);
27
- if (eraMatch) {
28
- const marker = eraMatch[2].toUpperCase();
29
- const bce = marker === "BCE" || marker === "BC";
30
- const date2 = (bce ? "-" : "") + eraMatch[1];
31
- return {
32
- date: date2,
33
- rest: input.slice(eraMatch[0].length),
34
- timeValid: true,
35
- invalidTime: void 0
36
- };
37
- }
38
- const dateMatch = input.match(DATE_RE);
39
- if (!dateMatch) return null;
40
- let date = dateMatch[1];
41
- let rest = input.slice(date.length);
42
- let timeValid = true;
43
- let invalidTime;
44
- const timeMatch = rest.match(TIME_RE);
45
- if (timeMatch) {
46
- const timeStr = timeMatch[1];
47
- const { valid } = parseTime(timeStr);
48
- timeValid = valid;
49
- if (!valid) invalidTime = timeStr;
50
- date = `${date} ${timeStr}`;
51
- rest = rest.slice(timeMatch[0].length);
52
- }
53
- return { date, rest, timeValid, invalidTime };
18
+ function parseDateWithOptionalTime(input, ctx) {
19
+ const res = parseDateToken(input, { dateOrder: ctx?.order });
20
+ if (!res) return null;
21
+ const { token, consumed } = res;
22
+ const internal = ctx?.resolve ? ctx.resolve(token).internal : toInternal(
23
+ token,
24
+ token.year ?? ctx?.currentYear ?? (/* @__PURE__ */ new Date()).getFullYear()
25
+ );
26
+ return {
27
+ date: internal,
28
+ rest: input.slice(consumed),
29
+ timeValid: !token.invalidTime,
30
+ invalidTime: token.invalidTime
31
+ };
54
32
  }
55
- function extractDatePrefix(line) {
56
- const startResult = parseDateWithOptionalTime(line);
33
+ function extractDatePrefix(line, ctx) {
34
+ const startResult = parseDateWithOptionalTime(line, ctx);
57
35
  if (!startResult) return null;
58
36
  const { date: startDate } = startResult;
59
37
  let { rest } = startResult;
60
38
  const arrowMatch = rest.match(ARROW_RE);
61
39
  if (arrowMatch) {
62
40
  rest = rest.slice(arrowMatch[0].length);
63
- const endResult = parseDateWithOptionalTime(rest);
41
+ const endResult = parseDateWithOptionalTime(rest, ctx);
64
42
  if (endResult) {
65
43
  let uncertain = false;
66
44
  let afterEnd = endResult.rest;
@@ -209,9 +187,9 @@ function parseTimelineDate(s) {
209
187
  const yearBase = p.sign * p.year;
210
188
  return yearBase + (p.month - 1) / 12 + (p.day - 1) / 365 + p.hour / 8760 + p.minute / 525600 + p.second / 31536e3;
211
189
  }
212
- function parseTimelineEventLine(line, lineNumber, currentGroup, groupMetadata, aliasMap, registry) {
190
+ function parseTimelineEventLine(line, lineNumber, currentGroup, groupMetadata, aliasMap, registry, dateCtx) {
213
191
  const diagnostics = [];
214
- const prefix = extractDatePrefix(line);
192
+ const prefix = extractDatePrefix(line, dateCtx);
215
193
  if (!prefix) {
216
194
  if (/^\d/.test(line)) {
217
195
  const firstToken = line.split(/\s/)[0];
@@ -336,4 +314,4 @@ export {
336
314
  parseTimelineDate,
337
315
  parseTimelineEventLine
338
316
  };
339
- //# sourceMappingURL=chunk-I7F2A35O.js.map
317
+ //# sourceMappingURL=chunk-R3YSD62R.js.map
@@ -6,10 +6,10 @@ import {
6
6
  tagAttrKey,
7
7
  validateTagGroupNames,
8
8
  validateTagValues
9
- } from "./chunk-FJUNPCYI.js";
9
+ } from "./chunk-HHKO6SKY.js";
10
10
  import {
11
11
  tryCollectNote
12
- } from "./chunk-SCHXJTZL.js";
12
+ } from "./chunk-ARGMQ3H4.js";
13
13
  import {
14
14
  resolveNotes
15
15
  } from "./chunk-FMDSF3OV.js";
@@ -32,7 +32,7 @@ import {
32
32
  tryParseSharedOption,
33
33
  warnUnknownMetaKeys,
34
34
  withTagAliases
35
- } from "./chunk-OTAL43EH.js";
35
+ } from "./chunk-BRENJ2BQ.js";
36
36
  import {
37
37
  resolveColorWithDiagnostic
38
38
  } from "./chunk-TLVIHFRO.js";
@@ -521,4 +521,4 @@ export {
521
521
  looksLikeERDiagram,
522
522
  extractSymbols
523
523
  };
524
- //# sourceMappingURL=chunk-NU3XLTGP.js.map
524
+ //# sourceMappingURL=chunk-REJAIQ5S.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  tryCollectNote
3
- } from "./chunk-SCHXJTZL.js";
3
+ } from "./chunk-ARGMQ3H4.js";
4
4
  import {
5
5
  resolveNotes
6
6
  } from "./chunk-FMDSF3OV.js";
@@ -13,11 +13,12 @@ import {
13
13
  } from "./chunk-NOTA6TEI.js";
14
14
  import {
15
15
  ALL_CHART_TYPES,
16
+ FILL_FAMILY_TOKENS,
16
17
  OPTION_NOCOLON_RE,
17
18
  measureIndent,
18
19
  parseFirstLine,
19
20
  tryParseSharedOption
20
- } from "./chunk-OTAL43EH.js";
21
+ } from "./chunk-BRENJ2BQ.js";
21
22
  import {
22
23
  resolveColorWithDiagnostic
23
24
  } from "./chunk-TLVIHFRO.js";
@@ -261,8 +262,10 @@ function parseState(content, palette) {
261
262
  result.direction = "TB";
262
263
  continue;
263
264
  }
264
- if (/^solid-fill$/i.test(trimmed)) {
265
- options["solid-fill"] = "on";
265
+ if (FILL_FAMILY_TOKENS.has(trimmed.toLowerCase())) {
266
+ for (const t of FILL_FAMILY_TOKENS) delete options[t];
267
+ if (trimmed.toLowerCase() !== "fill-tint")
268
+ options[trimmed.toLowerCase()] = "on";
266
269
  continue;
267
270
  }
268
271
  if (/^no-color$/i.test(trimmed)) {
@@ -412,4 +415,4 @@ export {
412
415
  parseState,
413
416
  looksLikeState
414
417
  };
415
- //# sourceMappingURL=chunk-2C56LEML.js.map
418
+ //# sourceMappingURL=chunk-ROOE4R4Y.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
@@ -5,14 +5,14 @@ import {
5
5
  matchTagBlockHeading,
6
6
  stripDefaultModifier,
7
7
  validateTagGroupNames
8
- } from "./chunk-FJUNPCYI.js";
8
+ } from "./chunk-HHKO6SKY.js";
9
9
  import {
10
10
  OPTION_NOCOLON_RE,
11
11
  extractColor,
12
12
  measureIndent,
13
13
  parseFirstLine,
14
14
  tryParseSharedOption
15
- } from "./chunk-OTAL43EH.js";
15
+ } from "./chunk-BRENJ2BQ.js";
16
16
  import {
17
17
  formatDgmoError,
18
18
  makeDgmoError
@@ -729,4 +729,4 @@ export {
729
729
  resetWireframeIds,
730
730
  parseWireframe
731
731
  };
732
- //# sourceMappingURL=chunk-I2WKW7C7.js.map
732
+ //# sourceMappingURL=chunk-SMRFPVLQ.js.map
@@ -11,15 +11,15 @@ import {
11
11
  LEGEND_PILL_FONT_SIZE,
12
12
  LEGEND_PILL_PAD,
13
13
  measureLegendText
14
- } from "./chunk-HQCHYB5F.js";
14
+ } from "./chunk-QOOUC2J5.js";
15
15
  import {
16
16
  measureText
17
- } from "./chunk-5LWQH6QV.js";
17
+ } from "./chunk-WCT3NYCV.js";
18
18
  import {
19
19
  injectDefaultTagMetadata,
20
20
  resolveTagColor,
21
21
  tagAttrKey
22
- } from "./chunk-FJUNPCYI.js";
22
+ } from "./chunk-HHKO6SKY.js";
23
23
 
24
24
  // src/sitemap/layout.ts
25
25
  import dagre from "@dagrejs/dagre";
@@ -617,4 +617,4 @@ function layoutSitemap(parsed, hiddenCounts, activeTagGroup, hiddenAttributes, e
617
617
  export {
618
618
  layoutSitemap
619
619
  };
620
- //# sourceMappingURL=chunk-VDOOQZUD.js.map
620
+ //# sourceMappingURL=chunk-SWSIKFEB.js.map
@@ -4,7 +4,7 @@ import {
4
4
  renderNoteBadge,
5
5
  renderNoteBox,
6
6
  renderNoteConnector
7
- } from "./chunk-JEUJOX5X.js";
7
+ } from "./chunk-J7TLCB2Q.js";
8
8
  import {
9
9
  renderInlineText
10
10
  } from "./chunk-3HDBAXF5.js";
@@ -20,10 +20,10 @@ import {
20
20
  } from "./chunk-YYVTBZZC.js";
21
21
  import {
22
22
  renderIntegratedLegend
23
- } from "./chunk-HEVYAHLW.js";
23
+ } from "./chunk-AUIM2NVH.js";
24
24
  import {
25
25
  getMaxLegendReservedHeight
26
- } from "./chunk-7UEMZREK.js";
26
+ } from "./chunk-YAA6IID3.js";
27
27
  import {
28
28
  TITLE_FONT_SIZE,
29
29
  TITLE_FONT_WEIGHT,
@@ -36,7 +36,7 @@ import {
36
36
  CHAR_WIDTH_RATIO,
37
37
  measureText,
38
38
  truncateText
39
- } from "./chunk-5LWQH6QV.js";
39
+ } from "./chunk-WCT3NYCV.js";
40
40
  import {
41
41
  contrastText,
42
42
  mix,
@@ -44,10 +44,13 @@ import {
44
44
  shapeFill,
45
45
  themeBaseBg,
46
46
  valueRampColor
47
- } from "./chunk-P6T66CCZ.js";
47
+ } from "./chunk-WBM7ZNDI.js";
48
48
  import {
49
49
  resolveTagColor
50
- } from "./chunk-FJUNPCYI.js";
50
+ } from "./chunk-HHKO6SKY.js";
51
+ import {
52
+ fillModeFromOptions
53
+ } from "./chunk-BRENJ2BQ.js";
51
54
  import {
52
55
  resolveColor
53
56
  } from "./chunk-TLVIHFRO.js";
@@ -74,7 +77,6 @@ var RAMP_FLOOR = 15;
74
77
  var VALUE_FONT_SIZE = 11;
75
78
  var lineGeneratorLR = d3Shape.line().x((d) => d.x).y((d) => d.y).curve(d3Shape.curveBasis);
76
79
  var lineGeneratorTB = d3Shape.line().x((d) => d.x).y((d) => d.y).curve(d3Shape.curveBasis);
77
- var lineGeneratorStraight = d3Shape.line().x((d) => d.x).y((d) => d.y).curve(d3Shape.curveLinear);
78
80
  function splitCamelCase(word) {
79
81
  const parts = [];
80
82
  let start = 0;
@@ -138,7 +140,7 @@ function fitLabelToHeader(label, nodeWidth, maxLines) {
138
140
  const truncated = truncateText(label, MIN_NODE_FONT_SIZE, maxTextWidth);
139
141
  return { lines: [truncated], fontSize: MIN_NODE_FONT_SIZE };
140
142
  }
141
- function nodeColors(node, tagGroups, activeGroupName, palette, isDark, value, solid) {
143
+ function nodeColors(node, tagGroups, activeGroupName, palette, isDark, value, fillMode) {
142
144
  const neutralFill = mix(palette.bg, palette.text, isDark ? 90 : 95);
143
145
  if (value.active) {
144
146
  if (node.value === void 0) {
@@ -150,9 +152,7 @@ function nodeColors(node, tagGroups, activeGroupName, palette, isDark, value, so
150
152
  return { fill: neutralFill, stroke: value.hue, text: text3 };
151
153
  }
152
154
  const rampColor = value.fillForValue(node.value);
153
- const fill2 = shapeFill(palette, rampColor, isDark, {
154
- ...solid !== void 0 && { solid }
155
- });
155
+ const fill2 = shapeFill(palette, rampColor, isDark, { mode: fillMode });
156
156
  const stroke2 = value.twoColor ? rampColor : value.hue;
157
157
  const text2 = contrastText(
158
158
  fill2,
@@ -167,9 +167,7 @@ function nodeColors(node, tagGroups, activeGroupName, palette, isDark, value, so
167
167
  activeGroupName
168
168
  );
169
169
  if (tagColor) {
170
- const fill2 = shapeFill(palette, tagColor, isDark, {
171
- ...solid !== void 0 && { solid }
172
- });
170
+ const fill2 = shapeFill(palette, tagColor, isDark, { mode: fillMode });
173
171
  const stroke2 = tagColor;
174
172
  const text2 = contrastText(
175
173
  fill2,
@@ -327,32 +325,8 @@ function renderBoxesAndLines(container, parsed, layout, palette, isDark, options
327
325
  const scaleX = width / (contentW + sDiagramPadding * 2);
328
326
  const scaleY = height / (contentH + sDiagramPadding * 2);
329
327
  const scale = Math.min(scaleX, scaleY, 3);
330
- let centerShiftX = 0;
331
- let centerShiftY = 0;
332
- if (parsed.nodePositions && parsed.nodePositions.size > 0) {
333
- let bMinX = Infinity, bMinY = Infinity, bMaxX = -Infinity, bMaxY = -Infinity;
334
- const accB = (x, y) => {
335
- if (x < bMinX) bMinX = x;
336
- if (x > bMaxX) bMaxX = x;
337
- if (y < bMinY) bMinY = y;
338
- if (y > bMaxY) bMaxY = y;
339
- };
340
- for (const n of layout.nodes) {
341
- accB(n.x - n.width / 2, n.y - n.height / 2);
342
- accB(n.x + n.width / 2, n.y + n.height / 2);
343
- }
344
- for (const g of layout.groups) {
345
- accB(g.x - g.width / 2, g.y - g.height / 2);
346
- accB(g.x + g.width / 2, g.y + g.height / 2);
347
- }
348
- for (const e of layout.edges) for (const p of e.points) accB(p.x, p.y);
349
- if (Number.isFinite(bMinX)) {
350
- centerShiftX = (layout.width - bMaxX - bMinX) / 2;
351
- centerShiftY = (layout.height - bMaxY - bMinY) / 2;
352
- }
353
- }
354
- const offsetX = (width - contentW * scale) / 2 + centerShiftX * scale;
355
- const offsetY = sDiagramPadding + titleOffset + legendH + centerShiftY * scale;
328
+ const offsetX = (width - contentW * scale) / 2;
329
+ const offsetY = sDiagramPadding + titleOffset + legendH;
356
330
  const svg = d3Selection.select(container).append("svg").attr("width", width).attr("height", height).attr("viewBox", `0 0 ${width} ${height}`).attr("preserveAspectRatio", "xMidYMin meet").style("font-family", FONT_FAMILY).style("background", palette.bg);
357
331
  if (sctx.isBelowFloor) {
358
332
  svg.attr("width", "100%");
@@ -484,7 +458,7 @@ function renderBoxesAndLines(container, parsed, layout, palette, isDark, options
484
458
  if (points.length < 2) continue;
485
459
  const edgeG = diagramG.append("g").attr("class", "bl-edge-group").attr("data-line-number", String(le.lineNumber)).attr("data-from", le.source).attr("data-to", le.target);
486
460
  const markerId = `bl-arrow-${color.replace("#", "")}`;
487
- const gen = le.straight ? lineGeneratorStraight : parsed.direction === "TB" ? lineGeneratorTB : lineGeneratorLR;
461
+ const gen = parsed.direction === "TB" ? lineGeneratorTB : lineGeneratorLR;
488
462
  const path = edgeG.append("path").attr("class", "bl-edge").attr("d", gen(points) ?? "").attr("fill", "none").attr("stroke", color).attr("stroke-width", sEdgeStrokeWidth).attr("marker-end", `url(#${markerId})`);
489
463
  if (le.bidirectional) {
490
464
  const revId = `bl-arrow-rev-${color.replace("#", "")}`;
@@ -505,7 +479,7 @@ function renderBoxesAndLines(container, parsed, layout, palette, isDark, options
505
479
  }
506
480
  if (isHidden) continue;
507
481
  }
508
- const solid = parsed.options["solid-fill"] === "on";
482
+ const fillMode = fillModeFromOptions(parsed.options);
509
483
  const colors = nodeColors(
510
484
  node,
511
485
  parsed.tagGroups,
@@ -518,9 +492,9 @@ function renderBoxesAndLines(container, parsed, layout, palette, isDark, options
518
492
  twoColor: rampLow !== void 0,
519
493
  fillForValue
520
494
  },
521
- solid
495
+ fillMode
522
496
  );
523
- const dividerStroke = solid ? colors.text : colors.stroke;
497
+ const dividerStroke = fillMode === "solid" ? colors.text : colors.stroke;
524
498
  const nodeG = diagramG.append("g").attr("class", "bl-node").attr("transform", `translate(${ln.x},${ln.y})`).attr("data-line-number", node.lineNumber).attr("data-node-id", node.label).style("cursor", onClickItem ? "pointer" : "default").style("--bl-node-stroke", colors.stroke);
525
499
  for (const [key, val] of Object.entries(node.metadata)) {
526
500
  nodeG.attr(`data-tag-${key.toLowerCase()}`, val.toLowerCase());
@@ -783,4 +757,4 @@ export {
783
757
  renderBoxesAndLines,
784
758
  renderBoxesAndLinesForExport
785
759
  };
786
- //# sourceMappingURL=chunk-HLJVEAOF.js.map
760
+ //# sourceMappingURL=chunk-T4A4TSTJ.js.map
@@ -13,11 +13,14 @@ import {
13
13
  contrastText,
14
14
  mix,
15
15
  themeBaseBg
16
- } from "./chunk-P6T66CCZ.js";
16
+ } from "./chunk-WBM7ZNDI.js";
17
17
  import {
18
18
  resolveTagColor,
19
19
  tagAttrKey
20
- } from "./chunk-FJUNPCYI.js";
20
+ } from "./chunk-HHKO6SKY.js";
21
+ import {
22
+ fillModeFromOptions
23
+ } from "./chunk-BRENJ2BQ.js";
21
24
  import {
22
25
  CATEGORICAL_COLOR_ORDER,
23
26
  resolveColor
@@ -124,7 +127,7 @@ function renderSwimlaneForExport(container, parsed, layout, palette, isDark, opt
124
127
  laneColorById.set(lane.id, hex);
125
128
  });
126
129
  const isLR = parsed.direction === "LR";
127
- const solid = parsed.options["solid-fill"] === "on";
130
+ const fillMode = fillModeFromOptions(parsed.options);
128
131
  const laneFill = (hex) => mix(hex, baseBg, 9);
129
132
  const haloAt = (cross) => {
130
133
  for (const band of layout.lanes) {
@@ -173,28 +176,35 @@ function renderSwimlaneForExport(container, parsed, layout, palette, isDark, opt
173
176
  phaseG.append("text").attr("x", isLR ? band.x + band.width / 2 : band.headerSize / 2).attr("y", isLR ? band.headerSize / 2 : band.y + band.height / 2).attr("text-anchor", "middle").attr("dominant-baseline", "middle").attr("font-size", PHASE_LABEL_FONT).attr("font-weight", "700").attr("letter-spacing", "0.06em").attr("fill", palette.textMuted).attr("data-line-number", String(band.lineNumber)).text(band.label);
174
177
  });
175
178
  const activeTag = opts.activeTagGroup ?? null;
179
+ const outline = fillMode === "outline";
176
180
  const nodeFill = (n) => {
177
181
  if (activeTag) {
178
182
  const key = tagAttrKey(activeTag);
179
183
  if (n.tags[key]) {
180
184
  const c = resolveTagColor(n.tags, [...parsed.tagGroups], activeTag);
181
185
  if (c && c !== "#999999")
182
- return { fill: solid ? c : mix(c, baseBg, 22), stroke: c };
186
+ return {
187
+ fill: fillMode === "solid" ? c : outline ? baseBg : mix(c, baseBg, 22),
188
+ stroke: c
189
+ };
183
190
  }
184
191
  }
185
192
  if (n.shape === "terminal") {
186
193
  if (n.event === "error")
187
194
  return {
188
- fill: solid ? ev.error : mix(ev.error, baseBg, 22),
195
+ fill: fillMode === "solid" ? ev.error : outline ? baseBg : mix(ev.error, baseBg, 22),
189
196
  stroke: ev.error
190
197
  };
191
198
  if (n.event === "success")
192
199
  return {
193
- fill: solid ? ev.success : mix(ev.success, baseBg, 22),
200
+ fill: fillMode === "solid" ? ev.success : outline ? baseBg : mix(ev.success, baseBg, 22),
194
201
  stroke: ev.success
195
202
  };
196
203
  if (n.event === "terminate")
197
- return { fill: mix(palette.text, baseBg, 30), stroke: palette.text };
204
+ return {
205
+ fill: outline ? baseBg : mix(palette.text, baseBg, 30),
206
+ stroke: palette.text
207
+ };
198
208
  return { fill: palette.bg, stroke: palette.textMuted };
199
209
  }
200
210
  if (n.shape === "exclusive" || n.shape === "parallel") {
@@ -205,8 +215,8 @@ function renderSwimlaneForExport(container, parsed, layout, palette, isDark, opt
205
215
  }
206
216
  const hex = laneColorById.get(n.lane) ?? palette.border;
207
217
  return {
208
- fill: solid ? hex : mix(hex, baseBg, 20),
209
- stroke: mix(hex, palette.text, 40)
218
+ fill: fillMode === "solid" ? hex : outline ? baseBg : mix(hex, baseBg, 20),
219
+ stroke: outline ? hex : mix(hex, palette.text, 40)
210
220
  };
211
221
  };
212
222
  const nodeById = new Map(layout.nodes.map((n) => [n.id, n]));
@@ -391,4 +401,4 @@ function drawCenteredLabel(g, label, cx, cy, fill, fontSize, tight = false, halo
391
401
  export {
392
402
  renderSwimlaneForExport
393
403
  };
394
- //# sourceMappingURL=chunk-KHEYDLMT.js.map
404
+ //# sourceMappingURL=chunk-TJVLKNGR.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  tryCollectNote
3
- } from "./chunk-SCHXJTZL.js";
3
+ } from "./chunk-ARGMQ3H4.js";
4
4
  import {
5
5
  resolveNotes
6
6
  } from "./chunk-FMDSF3OV.js";
@@ -16,7 +16,7 @@ import {
16
16
  measureIndent,
17
17
  parseFirstLine,
18
18
  tryParseSharedOption
19
- } from "./chunk-OTAL43EH.js";
19
+ } from "./chunk-BRENJ2BQ.js";
20
20
  import {
21
21
  resolveColorWithDiagnostic
22
22
  } from "./chunk-TLVIHFRO.js";
@@ -445,4 +445,4 @@ export {
445
445
  looksLikeClassDiagram,
446
446
  extractSymbols
447
447
  };
448
- //# sourceMappingURL=chunk-GL5UZ6NY.js.map
448
+ //# sourceMappingURL=chunk-TPFKKXCB.js.map
@@ -9,10 +9,10 @@ import {
9
9
  } from "./chunk-YYVTBZZC.js";
10
10
  import {
11
11
  renderIntegratedLegend
12
- } from "./chunk-HEVYAHLW.js";
12
+ } from "./chunk-AUIM2NVH.js";
13
13
  import {
14
14
  getMaxLegendReservedHeight
15
- } from "./chunk-7UEMZREK.js";
15
+ } from "./chunk-YAA6IID3.js";
16
16
  import {
17
17
  TITLE_FONT_SIZE,
18
18
  TITLE_FONT_WEIGHT
@@ -23,21 +23,25 @@ import {
23
23
  import {
24
24
  LEGEND_HEIGHT,
25
25
  measureLegendText
26
- } from "./chunk-HQCHYB5F.js";
26
+ } from "./chunk-QOOUC2J5.js";
27
27
  import {
28
28
  measureText
29
- } from "./chunk-5LWQH6QV.js";
29
+ } from "./chunk-WCT3NYCV.js";
30
30
  import {
31
31
  parseKanban
32
- } from "./chunk-3Y2DRD7S.js";
32
+ } from "./chunk-3QD7VP3U.js";
33
33
  import {
34
34
  contrastText,
35
35
  mix,
36
- shapeFill
37
- } from "./chunk-P6T66CCZ.js";
36
+ shapeFill,
37
+ themeBaseBg
38
+ } from "./chunk-WBM7ZNDI.js";
38
39
  import {
39
40
  tagAttrKey
40
- } from "./chunk-FJUNPCYI.js";
41
+ } from "./chunk-HHKO6SKY.js";
42
+ import {
43
+ fillModeFromOptions
44
+ } from "./chunk-BRENJ2BQ.js";
41
45
 
42
46
  // src/kanban/renderer.ts
43
47
  import * as d3Selection from "d3-selection";
@@ -277,7 +281,9 @@ function renderKanban(container, parsed, palette, isDark, options) {
277
281
  const collapsedLanes = options?.collapsedLanes;
278
282
  const collapsedColumns = options?.collapsedColumns ?? new Set(parsed.columns.filter((c) => c.collapsed).map((c) => c.id));
279
283
  const compactMeta = options?.compactMeta ?? false;
280
- const solid = parsed.options["solid-fill"] === "on";
284
+ const fillMode = fillModeFromOptions(parsed.options);
285
+ const baseBg = themeBaseBg(palette, isDark);
286
+ const wellStroke = mix(palette.border, baseBg, 20);
281
287
  const requestedSwimlane = options?.currentSwimlaneGroup ?? null;
282
288
  const swimlaneGroup = requestedSwimlane ? parsed.tagGroups.find(
283
289
  (g) => g.name.toLowerCase() === requestedSwimlane.toLowerCase()
@@ -440,20 +446,26 @@ function renderKanban(container, parsed, palette, isDark, options) {
440
446
  const isColCollapsed = collapsedColumns?.has(col.id) ?? false;
441
447
  const g = svg.append("g").attr("class", "kanban-column").attr("data-column-id", col.id).attr("data-line-number", col.lineNumber);
442
448
  const thisColBg = defaultColBg;
443
- const thisColHeaderBg = col.color ? shapeFill(palette, col.color, isDark, { solid }) : defaultColHeaderBg;
449
+ const thisColHeaderBg = col.color ? shapeFill(palette, col.color, isDark, { mode: fillMode }) : defaultColHeaderBg;
444
450
  const onHeaderText = col.color ? contrastText(
445
451
  thisColHeaderBg,
446
452
  palette.textOnFillLight,
447
453
  palette.textOnFillDark
448
454
  ) : palette.text;
449
455
  if (isColCollapsed) {
450
- g.append("rect").attr("x", colLayout.x).attr("y", colLayout.y).attr("width", sCollapsedColumnWidth).attr("height", colLayout.height).attr("rx", sColumnRadius).attr("fill", thisColBg);
456
+ g.append("rect").attr("x", colLayout.x).attr("y", colLayout.y).attr("width", sCollapsedColumnWidth).attr("height", colLayout.height).attr("rx", sColumnRadius).attr("fill", fillMode === "outline" ? baseBg : thisColBg).call((sel) => {
457
+ if (fillMode === "outline")
458
+ sel.attr("stroke", wellStroke).attr("stroke-width", 1);
459
+ });
451
460
  g.append("rect").attr("x", colLayout.x).attr("y", colLayout.y).attr("width", sCollapsedColumnWidth).attr("height", sColumnHeaderHeight).attr("rx", sColumnHeaderRadius).attr("fill", thisColHeaderBg);
452
461
  g.append("text").attr("x", colLayout.x + sCollapsedColumnWidth / 2).attr("y", colLayout.y + sColumnHeaderHeight / 2 + sWipFontSize / 2 - 1).attr("font-size", sWipFontSize).attr("font-weight", "bold").attr("fill", col.color ? onHeaderText : palette.textMuted).attr("text-anchor", "middle").text(String(col.cards.length));
453
462
  g.append("text").attr("x", colLayout.x + sCollapsedColumnWidth / 2).attr("y", colLayout.y + sColumnHeaderHeight + sColumnPadding).attr("font-size", sCardTitleFontSize).attr("font-weight", "bold").attr("fill", palette.text).attr("text-anchor", "middle").attr("writing-mode", "tb").text(col.name);
454
463
  continue;
455
464
  }
456
- g.append("rect").attr("x", colLayout.x).attr("y", colLayout.y).attr("width", colLayout.width).attr("height", colLayout.height).attr("rx", sColumnRadius).attr("fill", thisColBg);
465
+ g.append("rect").attr("x", colLayout.x).attr("y", colLayout.y).attr("width", colLayout.width).attr("height", colLayout.height).attr("rx", sColumnRadius).attr("fill", fillMode === "outline" ? baseBg : thisColBg).call((sel) => {
466
+ if (fillMode === "outline")
467
+ sel.attr("stroke", wellStroke).attr("stroke-width", 1);
468
+ });
457
469
  g.append("rect").attr("x", colLayout.x).attr("y", colLayout.y).attr("width", colLayout.width).attr("height", sColumnHeaderHeight).attr("rx", sColumnHeaderRadius).attr("fill", thisColHeaderBg);
458
470
  g.append("text").attr("x", colLayout.x + sColumnPadding).attr(
459
471
  "y",
@@ -484,7 +496,7 @@ function renderKanban(container, parsed, palette, isDark, options) {
484
496
  palette,
485
497
  resolvedColor ?? palette.primary,
486
498
  isDark,
487
- { solid }
499
+ { mode: fillMode }
488
500
  );
489
501
  const cardStroke = resolvedColor ?? palette.textMuted;
490
502
  const onCardText = contrastText(
@@ -511,7 +523,7 @@ function renderKanban(container, parsed, palette, isDark, options) {
511
523
  renderInlineText(titleEl, card.title, palette, sCardTitleFontSize);
512
524
  if (hasMeta) {
513
525
  const separatorY = cy + sCardHeaderHeight;
514
- cg.append("line").attr("x1", cx).attr("y1", separatorY).attr("x2", cx + cardLayout.width).attr("y2", separatorY).attr("stroke", solid ? onCardText : cardStroke).attr("stroke-opacity", 0.3).attr("stroke-width", 1);
526
+ cg.append("line").attr("x1", cx).attr("y1", separatorY).attr("x2", cx + cardLayout.width).attr("y2", separatorY).attr("stroke", fillMode === "solid" ? onCardText : cardStroke).attr("stroke-opacity", 0.3).attr("stroke-width", 1);
515
527
  let metaY = separatorY + sCardSeparatorGap + sCardMetaFontSize;
516
528
  for (const meta of tagMeta) {
517
529
  cg.append("text").attr("x", cx + sCardPaddingX).attr("y", metaY).attr("font-size", sCardMetaFontSize).attr("fill", onCardText).text(`${meta.label}: `);
@@ -732,7 +744,7 @@ function renderSwimlaneBoard(svg, parsed, baseLayout, swimlaneGroup, palette, is
732
744
  const isColCollapsed = collapsedColumns?.has(col.id) ?? false;
733
745
  const headerG = svg.append("g").attr("class", "kanban-column kanban-column-header").attr("data-column-id", col.id).attr("data-line-number", col.lineNumber);
734
746
  const colHeaderBg = col.color ? shapeFill(palette, col.color, isDark, {
735
- solid: parsed.options["solid-fill"] === "on"
747
+ mode: fillModeFromOptions(parsed.options)
736
748
  }) : defaultColHeaderBg;
737
749
  headerG.append("rect").attr("x", colInfo.x).attr("y", grid.startY).attr("width", colInfo.width).attr("height", sColumnHeaderHeight).attr("rx", sColumnHeaderRadius).attr("fill", colHeaderBg);
738
750
  if (isColCollapsed) {
@@ -808,7 +820,7 @@ function renderSwimlaneBoard(svg, parsed, baseLayout, swimlaneGroup, palette, is
808
820
  palette,
809
821
  isDark,
810
822
  hiddenMetaGroups,
811
- parsed.options["solid-fill"] === "on",
823
+ fillModeFromOptions(parsed.options),
812
824
  sCardRadius,
813
825
  sCardPaddingX,
814
826
  sCardPaddingY,
@@ -824,7 +836,7 @@ function renderSwimlaneBoard(svg, parsed, baseLayout, swimlaneGroup, palette, is
824
836
  }
825
837
  }
826
838
  }
827
- function renderSwimlaneCard(parent, cardLayout, tagGroups, activeTagGroup, palette, isDark, hiddenMetaGroups, solid, sCardRadius = CARD_RADIUS, sCardPaddingX = CARD_PADDING_X, sCardPaddingY = CARD_PADDING_Y, sCardStrokeWidth = CARD_STROKE_WIDTH, sCardTitleFontSize = CARD_TITLE_FONT_SIZE, sCardMetaFontSize = CARD_META_FONT_SIZE, sCardHeaderHeight = CARD_HEADER_HEIGHT, sCardSeparatorGap = CARD_SEPARATOR_GAP, sCardMetaLineHeight = CARD_META_LINE_HEIGHT) {
839
+ function renderSwimlaneCard(parent, cardLayout, tagGroups, activeTagGroup, palette, isDark, hiddenMetaGroups, fillMode, sCardRadius = CARD_RADIUS, sCardPaddingX = CARD_PADDING_X, sCardPaddingY = CARD_PADDING_Y, sCardStrokeWidth = CARD_STROKE_WIDTH, sCardTitleFontSize = CARD_TITLE_FONT_SIZE, sCardMetaFontSize = CARD_META_FONT_SIZE, sCardHeaderHeight = CARD_HEADER_HEIGHT, sCardSeparatorGap = CARD_SEPARATOR_GAP, sCardMetaLineHeight = CARD_META_LINE_HEIGHT) {
828
840
  const card = cardLayout.card;
829
841
  const resolvedColor = resolveCardTagColor(card, tagGroups, activeTagGroup);
830
842
  const tagMeta = resolveCardTagMeta(card, tagGroups, hiddenMetaGroups);
@@ -833,9 +845,7 @@ function renderSwimlaneCard(parent, cardLayout, tagGroups, activeTagGroup, palet
833
845
  palette,
834
846
  resolvedColor ?? palette.primary,
835
847
  isDark,
836
- {
837
- ...solid !== void 0 && { solid }
838
- }
848
+ { mode: fillMode }
839
849
  );
840
850
  const cardStroke = resolvedColor ?? palette.textMuted;
841
851
  const onCardText = contrastText(
@@ -882,4 +892,4 @@ export {
882
892
  renderKanban,
883
893
  renderKanbanForExport
884
894
  };
885
- //# sourceMappingURL=chunk-X6EZPSW6.js.map
895
+ //# sourceMappingURL=chunk-TTIM6YTT.js.map