@diagrammo/dgmo 0.51.0 → 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 (201) 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 +70 -42
  6. package/dist/advanced.js +115 -119
  7. package/dist/auto.js +125 -123
  8. package/dist/auto.mjs +952 -492
  9. package/dist/block.js +89 -52
  10. package/dist/{charts-d3-7E4B4IMW.js → charts-d3-MXEP6BNP.js} +7 -7
  11. package/dist/{chunk-CC4YRBWV.js → chunk-3HF5YEFJ.js} +17 -7
  12. package/dist/{chunk-5X6YQA2J.js → chunk-3HGU63UY.js} +12 -11
  13. package/dist/{chunk-4XFBQT5O.js → chunk-3LK5DNED.js} +2 -2
  14. package/dist/{chunk-IEDMFNU7.js → chunk-3QD7VP3U.js} +9 -4
  15. package/dist/{chunk-JJXGQIRV.js → chunk-3YRPZ7ZZ.js} +2 -2
  16. package/dist/{chunk-OJTXTQA2.js → chunk-44VCIPHF.js} +21 -17
  17. package/dist/{chunk-RAHVMKBG.js → chunk-4AQRFDXL.js} +2 -2
  18. package/dist/{chunk-6MNGECP2.js → chunk-4IHAV6O7.js} +2 -2
  19. package/dist/{chunk-ENRS56GC.js → chunk-4UNQ6X24.js} +10 -7
  20. package/dist/{chunk-JM4LEPY3.js → chunk-4YFKQ5WT.js} +6 -3
  21. package/dist/{chunk-U5SI5NIM.js → chunk-5223KXFD.js} +39 -22
  22. package/dist/{chunk-NI3XQBPB.js → chunk-5BHJZH62.js} +3 -3
  23. package/dist/{chunk-QYTPPDAO.js → chunk-5HILBT7X.js} +2 -2
  24. package/dist/{chunk-I2QZFCS2.js → chunk-5NGAO4QK.js} +4 -4
  25. package/dist/{chunk-BGP54HVR.js → chunk-5RP7JRVP.js} +4 -4
  26. package/dist/{chunk-IE477RQZ.js → chunk-5SEVICBT.js} +5 -5
  27. package/dist/{chunk-OZPBJM5Q.js → chunk-6EJITS44.js} +8 -5
  28. package/dist/{chunk-F3FYUFUH.js → chunk-6HQH6JZE.js} +12 -11
  29. package/dist/{chunk-X7EC3L2H.js → chunk-6LBQ7ELG.js} +14 -15
  30. package/dist/{chunk-5WPNFSXP.js → chunk-75G3Q4DK.js} +3 -3
  31. package/dist/{chunk-BYJBIALT.js → chunk-77FGAVZC.js} +10 -7
  32. package/dist/{chunk-2EQMXBBQ.js → chunk-7BIZCTAX.js} +2 -2
  33. package/dist/{chunk-B63YB7X3.js → chunk-7KINELPI.js} +110 -48
  34. package/dist/{chunk-AB7INMR5.js → chunk-7QE3XMRK.js} +15 -14
  35. package/dist/{chunk-IUJODQKX.js → chunk-AAXZDUOV.js} +15 -14
  36. package/dist/{chunk-2UJSV2VT.js → chunk-AL672HNE.js} +3 -3
  37. package/dist/{chunk-WQLMU7VG.js → chunk-ARGMQ3H4.js} +2 -2
  38. package/dist/{chunk-OU7HLO7I.js → chunk-AUIM2NVH.js} +3 -3
  39. package/dist/{chunk-RXKTSFDL.js → chunk-BKVOYV6I.js} +24 -32
  40. package/dist/{chunk-TK2VQQX2.js → chunk-BPIZNB5O.js} +14 -12
  41. package/dist/{chunk-3LV2NCB6.js → chunk-BPY242XU.js} +6 -4
  42. package/dist/{chunk-LV4BETUU.js → chunk-BRENJ2BQ.js} +32 -2
  43. package/dist/{chunk-Y6GBQTBK.js → chunk-CCNDLW7Z.js} +41 -19
  44. package/dist/{chunk-EXOQP75F.js → chunk-CIRFIL4M.js} +47 -27
  45. package/dist/{chunk-RBDIYLA5.js → chunk-DAOFNU6J.js} +17 -1
  46. package/dist/{chunk-4VWJ4LW2.js → chunk-DYWQFQJP.js} +44 -34
  47. package/dist/{chunk-QZPEGJOM.js → chunk-EMLPOL77.js} +15 -8
  48. package/dist/{chunk-IUO34HKW.js → chunk-FHGVORFO.js} +26 -22
  49. package/dist/{chunk-6H7O2OPM.js → chunk-FQ7HTV52.js} +4 -2
  50. package/dist/{chunk-7DYOELRK.js → chunk-FQMUHRVC.js} +69 -30
  51. package/dist/{chunk-AFIEPDLX.js → chunk-FT3ZYWET.js} +14 -3
  52. package/dist/{chunk-ND76YJCN.js → chunk-FUPF2UYQ.js} +35 -11
  53. package/dist/{chunk-6NFYEQDX.js → chunk-FY5MSZAP.js} +15 -3
  54. package/dist/{chunk-IEWG6J7C.js → chunk-GCYTI3DE.js} +40 -31
  55. package/dist/{chunk-GNSFLJAA.js → chunk-GJFAMOGK.js} +3 -3
  56. package/dist/{chunk-VNSXLA6G.js → chunk-H7KENAZO.js} +16 -12
  57. package/dist/{chunk-KFNWFNAA.js → chunk-HBPDFCQY.js} +3 -3
  58. package/dist/{chunk-467TVMQL.js → chunk-HHKO6SKY.js} +2 -2
  59. package/dist/{chunk-6K2M4VSR.js → chunk-HQQNCY7W.js} +21 -8
  60. package/dist/{chunk-ZJ3LS7DW.js → chunk-HWX6ZHF3.js} +2 -2
  61. package/dist/{chunk-Q62FEYK3.js → chunk-ICPJPQ5C.js} +2 -2
  62. package/dist/{chunk-MVN25IF6.js → chunk-IM6PDDCE.js} +4 -4
  63. package/dist/{chunk-65WJYYKJ.js → chunk-INE5YJBZ.js} +11 -6
  64. package/dist/{chunk-EDA6C7MV.js → chunk-J6QROYDA.js} +13 -9
  65. package/dist/{chunk-3ODS2VGL.js → chunk-J7KJR3R6.js} +116 -96
  66. package/dist/{chunk-JEUJOX5X.js → chunk-J7TLCB2Q.js} +2 -2
  67. package/dist/{chunk-GD6L76WD.js → chunk-JRCOYRRH.js} +19 -7
  68. package/dist/{chunk-G3PF3S7P.js → chunk-K2I2XOZD.js} +9 -9
  69. package/dist/{chunk-5PDTIBLV.js → chunk-K4EOKJA6.js} +17 -7
  70. package/dist/{chunk-5SVOCD5W.js → chunk-KGVZ5VGH.js} +10 -7
  71. package/dist/{chunk-QHI5XVUJ.js → chunk-LBMS4AW6.js} +20 -19
  72. package/dist/{chunk-FTBZV6NE.js → chunk-LGT3PZCJ.js} +22 -14
  73. package/dist/{chunk-E7Y3SYKW.js → chunk-LTXOLDUZ.js} +9 -6
  74. package/dist/{chunk-GTWKD3QT.js → chunk-MUE65OTD.js} +5 -4
  75. package/dist/{chunk-TRM2J7ZN.js → chunk-MUVJ57EP.js} +10 -14
  76. package/dist/{chunk-RBHWPDBB.js → chunk-NNS4E7CW.js} +6 -4
  77. package/dist/{chunk-NNAAJVBU.js → chunk-NR5HCAUD.js} +1 -1
  78. package/dist/{chunk-NEQ6GJXB.js → chunk-ONU3U4GL.js} +2 -2
  79. package/dist/{chunk-XEQXCIBC.js → chunk-PRI2OD4E.js} +10 -3
  80. package/dist/{chunk-U6EQI3U6.js → chunk-QBZYACOG.js} +3 -3
  81. package/dist/{chunk-5PZT4DQG.js → chunk-QGATPIPX.js} +15 -9
  82. package/dist/{chunk-YGJZWZTY.js → chunk-QHXCAEMX.js} +7 -4
  83. package/dist/{chunk-RLFVAKEO.js → chunk-QJMKPUYK.js} +15 -5
  84. package/dist/{chunk-Z6XJQ6KO.js → chunk-QVENJMNX.js} +2 -2
  85. package/dist/{chunk-GROLTAWZ.js → chunk-QZX5S6R3.js} +2 -2
  86. package/dist/{chunk-TMACGPW5.js → chunk-R3YSD62R.js} +3 -3
  87. package/dist/{chunk-332ZR4QU.js → chunk-REJAIQ5S.js} +4 -4
  88. package/dist/{chunk-5F5ELR3V.js → chunk-ROOE4R4Y.js} +8 -5
  89. package/dist/{chunk-XHVV4NVW.js → chunk-RT7ACF77.js} +12 -2
  90. package/dist/{chunk-GGHRAITI.js → chunk-SMRFPVLQ.js} +3 -3
  91. package/dist/{chunk-JSSX2SX4.js → chunk-SWSIKFEB.js} +2 -2
  92. package/dist/{chunk-DY7XLRHK.js → chunk-T4A4TSTJ.js} +14 -15
  93. package/dist/{chunk-VB4UJ3H2.js → chunk-TJVLKNGR.js} +20 -10
  94. package/dist/{chunk-FC5I2KXV.js → chunk-TPFKKXCB.js} +3 -3
  95. package/dist/{chunk-AXW3M6OQ.js → chunk-TTIM6YTT.js} +28 -18
  96. package/dist/{chunk-WJ7RW65H.js → chunk-UBLHQTLV.js} +13 -12
  97. package/dist/{chunk-AE7II3E3.js → chunk-UNURMIQO.js} +2 -2
  98. package/dist/{chunk-PZDBOK2Q.js → chunk-VILVLS7P.js} +5 -3
  99. package/dist/{chunk-3YSQZ75W.js → chunk-VQOCMUWI.js} +37 -26
  100. package/dist/{chunk-P6T66CCZ.js → chunk-WBM7ZNDI.js} +3 -2
  101. package/dist/{chunk-4QZ43D7I.js → chunk-XD6ZYURY.js} +9 -4
  102. package/dist/{chunk-3JLKYGBQ.js → chunk-YIBAWQGJ.js} +6 -3
  103. package/dist/{chunk-ZO27FGJS.js → chunk-YTMTPUH4.js} +7 -4
  104. package/dist/{chunk-6BQFET7X.js → chunk-Z5QVYKR7.js} +11 -3
  105. package/dist/{chunk-KJGG2JKQ.js → chunk-ZEF5M5MB.js} +52 -45
  106. package/dist/{chunk-32XPAAET.js → chunk-ZJV7GYR4.js} +3 -3
  107. package/dist/{chunk-2ILHQOL3.js → chunk-ZNWAYU6N.js} +11 -7
  108. package/dist/cli.cjs +146 -145
  109. package/dist/clock.js +16 -22
  110. package/dist/dgmo-router-X7ZGAPIE.js +86 -0
  111. package/dist/{dimensions-F7B5C4BJ.js → dimensions-45H6JQEY.js} +6 -6
  112. package/dist/editor.js +4 -2
  113. package/dist/element.js +126 -124
  114. package/dist/element.mjs +952 -492
  115. package/dist/{flowchart-parser-MY53QWTZ.js → flowchart-parser-UKELHBSB.js} +4 -4
  116. package/dist/{flowchart-renderer-AQSMEMYF.js → flowchart-renderer-MNCDS7MV.js} +7 -7
  117. package/dist/highlight.d.ts +21 -1
  118. package/dist/highlight.js +93 -3
  119. package/dist/index.js +51 -51
  120. package/dist/{layout-JDJAEQ3P.js → layout-2L3WMRYU.js} +4 -4
  121. package/dist/{layout-MUPRALE5.js → layout-A4XWNVID.js} +4 -4
  122. package/dist/{layout-46366KBT.js → layout-A5UHRWVH.js} +3 -3
  123. package/dist/{layout-HYZPWAK5.js → layout-GM4UGR7B.js} +4 -3
  124. package/dist/{layout-CBCLPMSG.js → layout-GQQJXNYH.js} +4 -4
  125. package/dist/{layout-YVTNOTN4.js → layout-IIE2S5FK.js} +3 -3
  126. package/dist/{layout-4DIUOX2T.js → layout-VMCRX66I.js} +4 -4
  127. package/dist/{palettes-PRJ2RI6D.js → palettes-UDLZ2SA4.js} +2 -2
  128. package/dist/{parser-BKI42XBQ.js → parser-2ECN6JA2.js} +4 -4
  129. package/dist/{parser-C3D7MVXY.js → parser-4WTIHM5J.js} +3 -3
  130. package/dist/{parser-5A2UWU6B.js → parser-5H2BTSJQ.js} +3 -3
  131. package/dist/{parser-OK2ILHRT.js → parser-75KVXUNS.js} +4 -4
  132. package/dist/{parser-SRVFR7PM.js → parser-774AC53T.js} +4 -4
  133. package/dist/{parser-BEPSWJAD.js → parser-BE4YCSRU.js} +3 -3
  134. package/dist/{parser-B77S5SZM.js → parser-CNGUQUQI.js} +3 -3
  135. package/dist/{parser-2Q2T4C3B.js → parser-DEUUSQIN.js} +7 -7
  136. package/dist/{parser-5PDYJGWA.js → parser-DQAFLUJB.js} +4 -4
  137. package/dist/{parser-KKTJ6M3Y.js → parser-EYCKNKQA.js} +5 -5
  138. package/dist/{parser-UKFFZCFJ.js → parser-FXISIU6A.js} +4 -4
  139. package/dist/{parser-UMWPLORP.js → parser-GTB4XC7P.js} +5 -5
  140. package/dist/{parser-Z4TZV2CB.js → parser-GVEPAUSD.js} +4 -4
  141. package/dist/{parser-AIMHGJRR.js → parser-HSQGTY4G.js} +4 -4
  142. package/dist/{parser-OUTPNJWC.js → parser-HVKRINUS.js} +3 -3
  143. package/dist/{parser-JA7JQ7NF.js → parser-J5MIEYO4.js} +5 -5
  144. package/dist/parser-KMZIXLDZ.js +13 -0
  145. package/dist/{parser-CDG7CHV5.js → parser-LJHXWSXU.js} +3 -3
  146. package/dist/{parser-PORDUX5E.js → parser-PT3W72G5.js} +4 -4
  147. package/dist/{parser-CZOJ7XQ6.js → parser-SBJQDPHL.js} +4 -4
  148. package/dist/{parser-I6GGFKOQ.js → parser-SUWWWCMX.js} +3 -3
  149. package/dist/{parser-AZJ25OKK.js → parser-SXDRNZOA.js} +4 -4
  150. package/dist/parser-UMILOW3M.js +14 -0
  151. package/dist/{parser-GKLZKEIK.js → parser-UP3AZ367.js} +4 -4
  152. package/dist/{parser-57ILIFZ2.js → parser-WHPRV3X5.js} +5 -5
  153. package/dist/{parser-H6ABKHZZ.js → parser-WX3UODSJ.js} +4 -4
  154. package/dist/{parser-FQ6GZFMR.js → parser-XCIEN3KN.js} +4 -4
  155. package/dist/{parser-E2RL6JYF.js → parser-XIRTUMVN.js} +5 -5
  156. package/dist/{parser-3A42DZ72.js → parser-YKCGIG45.js} +3 -3
  157. package/dist/{parser-EH5VE7ZN.js → parser-YKYMQG3B.js} +4 -4
  158. package/dist/{parser-6ZKABF5S.js → parser-ZGM2OJ6Y.js} +5 -5
  159. package/dist/{parser-4RFTKAQX.js → parser-ZL5QUFVH.js} +4 -4
  160. package/dist/pert.d.ts +2 -2
  161. package/dist/{renderer-RYR3TJ46.js → renderer-3F7OS2AX.js} +10 -10
  162. package/dist/{renderer-TGTUABCI.js → renderer-4QB4K7Q3.js} +6 -6
  163. package/dist/{renderer-GHPZMFU2.js → renderer-5DAKMIU2.js} +3 -3
  164. package/dist/{renderer-3K3IB7D5.js → renderer-5H4SY7YY.js} +6 -6
  165. package/dist/{renderer-QIWVHWZO.js → renderer-5PIQPFOX.js} +4 -3
  166. package/dist/{renderer-NKJ24TEA.js → renderer-6MU37QF5.js} +6 -6
  167. package/dist/{renderer-QXPP4TA2.js → renderer-AQVMWJ4M.js} +9 -9
  168. package/dist/{renderer-2AUFT3E2.js → renderer-BDDW6K7N.js} +6 -6
  169. package/dist/{renderer-OYO67VZK.js → renderer-BNB3VIDY.js} +7 -7
  170. package/dist/{renderer-QXGN5H3A.js → renderer-CQY6ATOS.js} +5 -5
  171. package/dist/{renderer-CO2DW7S7.js → renderer-CVW75CXL.js} +9 -9
  172. package/dist/{renderer-KQB7UGDS.js → renderer-DT4XRFEP.js} +4 -3
  173. package/dist/{renderer-GQIESYEM.js → renderer-ERHBSTQT.js} +6 -6
  174. package/dist/{renderer-UV6MI64M.js → renderer-HSHHVYWF.js} +4 -3
  175. package/dist/{renderer-ARMJBP6C.js → renderer-IDPVUFNB.js} +8 -8
  176. package/dist/{renderer-QRWACQRI.js → renderer-ILX6BGKR.js} +6 -6
  177. package/dist/{renderer-F7U3MFCV.js → renderer-JP663HKG.js} +7 -7
  178. package/dist/{renderer-RGIYOTKJ.js → renderer-KNFTTOBL.js} +8 -8
  179. package/dist/{renderer-3YNIWF5I.js → renderer-MVUZBESR.js} +5 -5
  180. package/dist/{renderer-HYGHO4SJ.js → renderer-N4EBR2FV.js} +8 -8
  181. package/dist/{renderer-3YPZHMOU.js → renderer-NHO46CT2.js} +3 -3
  182. package/dist/{renderer-SRKDNDFB.js → renderer-NO2QJ5LZ.js} +7 -7
  183. package/dist/{renderer-2HTNBIF2.js → renderer-OGFV5RXX.js} +8 -8
  184. package/dist/{renderer-HCKJDFXD.js → renderer-PDLESJMS.js} +9 -9
  185. package/dist/{renderer-66MERVQ2.js → renderer-T4MTNINC.js} +6 -6
  186. package/dist/{renderer-RHT4MHFU.js → renderer-TOUGFGTM.js} +7 -7
  187. package/dist/{renderer-EDJ2O4S5.js → renderer-U3KPD43Y.js} +8 -8
  188. package/dist/{renderer-4WR6WMVF.js → renderer-X334IJU2.js} +6 -6
  189. package/dist/{renderer-JC3RDUT7.js → renderer-Y5OAMOCR.js} +6 -6
  190. package/dist/{renderer-GD2COXVL.js → renderer-YONAKAJU.js} +4 -4
  191. package/dist/{renderer-TXJFKPOG.js → renderer-YWMI6Y2U.js} +8 -8
  192. package/dist/{renderer-6RKQPNJI.js → renderer-ZWIH4WDW.js} +7 -7
  193. package/dist/{renderer-radial-FWABAZHB.js → renderer-radial-7CGZMVMS.js} +7 -7
  194. package/dist/{state-parser-6T6CNMPX.js → state-parser-BATWAID2.js} +4 -4
  195. package/dist/{state-renderer-AWZ3ECAX.js → state-renderer-3FKZJ3LP.js} +7 -7
  196. package/docs/ai-integration.md +15 -19
  197. package/docs/language-reference.md +13 -11
  198. package/package.json +1 -1
  199. package/dist/dgmo-router-Y2VEX46B.js +0 -86
  200. package/dist/parser-6BJEXUFX.js +0 -13
  201. package/dist/parser-OK22AC6Y.js +0 -14
@@ -23,7 +23,10 @@ import {
23
23
  contrastText,
24
24
  getSeriesColors,
25
25
  shapeFill
26
- } from "./chunk-P6T66CCZ.js";
26
+ } from "./chunk-WBM7ZNDI.js";
27
+ import {
28
+ fillModeFromOptions
29
+ } from "./chunk-BRENJ2BQ.js";
27
30
  import {
28
31
  resolveColor
29
32
  } from "./chunk-TLVIHFRO.js";
@@ -125,7 +128,7 @@ function renderPyramid(container, parsed, palette, isDark, onClickItem, exportDi
125
128
  ].map((p) => `${p[0]},${p[1]}`).join(" ");
126
129
  const solidColor = resolveSolid(layer, i);
127
130
  const fillColor = shapeFill(palette, solidColor, isDark, {
128
- solid: parsed.options["solid-fill"] === "on"
131
+ mode: fillModeFromOptions(parsed.options)
129
132
  });
130
133
  const layerG = diagramG.append("g").attr("class", "pyramid-layer").attr("data-line-number", layer.lineNumber);
131
134
  if (onClickItem) {
@@ -433,4 +436,4 @@ export {
433
436
  renderPyramid,
434
437
  renderPyramidForExport
435
438
  };
436
- //# sourceMappingURL=chunk-JM4LEPY3.js.map
439
+ //# sourceMappingURL=chunk-4YFKQ5WT.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  buildSwatches
3
- } from "./chunk-4XFBQT5O.js";
3
+ } from "./chunk-3LK5DNED.js";
4
4
  import {
5
5
  fixedParts,
6
6
  formatTime,
@@ -14,9 +14,10 @@ import {
14
14
  FONT_FAMILY
15
15
  } from "./chunk-6KFWC4CO.js";
16
16
  import {
17
+ contrastText,
17
18
  mix,
18
19
  themeBaseBg
19
- } from "./chunk-P6T66CCZ.js";
20
+ } from "./chunk-WBM7ZNDI.js";
20
21
  import {
21
22
  resolveColor
22
23
  } from "./chunk-TLVIHFRO.js";
@@ -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-5223KXFD.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  mix
3
- } from "./chunk-P6T66CCZ.js";
3
+ } from "./chunk-WBM7ZNDI.js";
4
4
  import {
5
5
  resolveTagColor,
6
6
  tagAttrKey
7
- } from "./chunk-467TVMQL.js";
7
+ } from "./chunk-HHKO6SKY.js";
8
8
  import {
9
9
  resolveColor
10
10
  } from "./chunk-TLVIHFRO.js";
@@ -164,4 +164,4 @@ export {
164
164
  formatPct,
165
165
  buildLegend
166
166
  };
167
- //# sourceMappingURL=chunk-NI3XQBPB.js.map
167
+ //# sourceMappingURL=chunk-5BHJZH62.js.map
@@ -8,7 +8,7 @@ import {
8
8
  } from "./chunk-6KFWC4CO.js";
9
9
  import {
10
10
  getSeriesColors
11
- } from "./chunk-P6T66CCZ.js";
11
+ } from "./chunk-WBM7ZNDI.js";
12
12
  import {
13
13
  resolveColor
14
14
  } from "./chunk-TLVIHFRO.js";
@@ -399,4 +399,4 @@ export {
399
399
  renderVersionControl,
400
400
  renderVersionControlForExport
401
401
  };
402
- //# sourceMappingURL=chunk-QYTPPDAO.js.map
402
+ //# sourceMappingURL=chunk-5HILBT7X.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  MAP_DIRECTIVE_KEY_SET
3
- } from "./chunk-6H7O2OPM.js";
3
+ } from "./chunk-FQ7HTV52.js";
4
4
  import {
5
5
  AUTO_TAG_COLOR_SENTINEL,
6
6
  finalizeAutoTagColors,
@@ -8,7 +8,7 @@ import {
8
8
  stripDefaultModifier,
9
9
  tagAttrKey,
10
10
  validateTagGroupNames
11
- } from "./chunk-467TVMQL.js";
11
+ } from "./chunk-HHKO6SKY.js";
12
12
  import {
13
13
  parseInArrowLabel
14
14
  } from "./chunk-FFUN5D66.js";
@@ -19,7 +19,7 @@ import {
19
19
  peelRampColors,
20
20
  splitNameAndMeta,
21
21
  withTagAliases
22
- } from "./chunk-LV4BETUU.js";
22
+ } from "./chunk-BRENJ2BQ.js";
23
23
  import {
24
24
  formatDgmoError,
25
25
  makeDgmoError
@@ -633,4 +633,4 @@ export {
633
633
  looksLikeMap,
634
634
  parseMap
635
635
  };
636
- //# sourceMappingURL=chunk-I2QZFCS2.js.map
636
+ //# sourceMappingURL=chunk-5NGAO4QK.js.map
@@ -7,10 +7,10 @@ import {
7
7
  tagAttrKey,
8
8
  validateTagGroupNames,
9
9
  validateTagValues
10
- } from "./chunk-467TVMQL.js";
10
+ } from "./chunk-HHKO6SKY.js";
11
11
  import {
12
12
  tryCollectNote
13
- } from "./chunk-WQLMU7VG.js";
13
+ } from "./chunk-ARGMQ3H4.js";
14
14
  import {
15
15
  resolveNotes
16
16
  } from "./chunk-FMDSF3OV.js";
@@ -30,7 +30,7 @@ import {
30
30
  tryParseSharedOption,
31
31
  warnUnknownMetaKeys,
32
32
  withTagAliases
33
- } from "./chunk-LV4BETUU.js";
33
+ } from "./chunk-BRENJ2BQ.js";
34
34
  import {
35
35
  makeDgmoError,
36
36
  suggest
@@ -829,4 +829,4 @@ export {
829
829
  looksLikeBoxesAndLines,
830
830
  parseBoxesAndLines
831
831
  };
832
- //# sourceMappingURL=chunk-BGP54HVR.js.map
832
+ //# sourceMappingURL=chunk-5RP7JRVP.js.map
@@ -5,10 +5,10 @@ import {
5
5
  formatPct,
6
6
  resolveCellColor,
7
7
  resolveColorMode
8
- } from "./chunk-NI3XQBPB.js";
8
+ } from "./chunk-5BHJZH62.js";
9
9
  import {
10
10
  renderIntegratedLegend
11
- } from "./chunk-OU7HLO7I.js";
11
+ } from "./chunk-AUIM2NVH.js";
12
12
  import {
13
13
  getMaxLegendReservedHeight
14
14
  } from "./chunk-YAA6IID3.js";
@@ -28,10 +28,10 @@ import {
28
28
  hexToHSL,
29
29
  hslToHex,
30
30
  relativeLuminance
31
- } from "./chunk-P6T66CCZ.js";
31
+ } from "./chunk-WBM7ZNDI.js";
32
32
  import {
33
33
  tagAttrKey
34
- } from "./chunk-467TVMQL.js";
34
+ } from "./chunk-HHKO6SKY.js";
35
35
 
36
36
  // src/treemap/renderer-radial.ts
37
37
  import * as d3Selection from "d3-selection";
@@ -421,4 +421,4 @@ export {
421
421
  renderTreemapRadialForExport,
422
422
  renderTreemapRadial
423
423
  };
424
- //# sourceMappingURL=chunk-IE477RQZ.js.map
424
+ //# sourceMappingURL=chunk-5SEVICBT.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-I46X5VUA.js";
4
4
  import {
5
5
  tryCollectNote
6
- } from "./chunk-WQLMU7VG.js";
6
+ } from "./chunk-ARGMQ3H4.js";
7
7
  import {
8
8
  resolveNotes
9
9
  } from "./chunk-FMDSF3OV.js";
@@ -16,11 +16,12 @@ import {
16
16
  } from "./chunk-NOTA6TEI.js";
17
17
  import {
18
18
  ALL_CHART_TYPES,
19
+ FILL_FAMILY_TOKENS,
19
20
  OPTION_NOCOLON_RE,
20
21
  measureIndent,
21
22
  parseFirstLine,
22
23
  tryParseSharedOption
23
- } from "./chunk-LV4BETUU.js";
24
+ } from "./chunk-BRENJ2BQ.js";
24
25
  import {
25
26
  NAME_DIAGNOSTIC_CODES,
26
27
  emit,
@@ -372,8 +373,10 @@ function parseFlowchart(content, palette) {
372
373
  result.direction = dirMatch[1].toUpperCase();
373
374
  continue;
374
375
  }
375
- if (/^solid-fill$/i.test(trimmed)) {
376
- options["solid-fill"] = "on";
376
+ if (FILL_FAMILY_TOKENS.has(trimmed.toLowerCase())) {
377
+ for (const t of FILL_FAMILY_TOKENS) delete options[t];
378
+ if (trimmed.toLowerCase() !== "fill-tint")
379
+ options[trimmed.toLowerCase()] = "on";
377
380
  continue;
378
381
  }
379
382
  if (/^no-color$/i.test(trimmed)) {
@@ -467,4 +470,4 @@ export {
467
470
  looksLikeFlowchart,
468
471
  extractSymbols
469
472
  };
470
- //# sourceMappingURL=chunk-OZPBJM5Q.js.map
473
+ //# sourceMappingURL=chunk-6EJITS44.js.map
@@ -8,7 +8,7 @@ import {
8
8
  } from "./chunk-3CIOJ5YJ.js";
9
9
  import {
10
10
  renderIntegratedLegend
11
- } from "./chunk-OU7HLO7I.js";
11
+ } from "./chunk-AUIM2NVH.js";
12
12
  import {
13
13
  getMaxLegendReservedHeight
14
14
  } from "./chunk-YAA6IID3.js";
@@ -22,13 +22,14 @@ import {
22
22
  import {
23
23
  contrastText,
24
24
  mix,
25
- shapeFill
26
- } from "./chunk-P6T66CCZ.js";
25
+ shapeFill,
26
+ themeBaseBg
27
+ } from "./chunk-WBM7ZNDI.js";
27
28
  import {
28
29
  resolveActiveTagGroup,
29
30
  resolveTagColor,
30
31
  tagAttrKey
31
- } from "./chunk-467TVMQL.js";
32
+ } from "./chunk-HHKO6SKY.js";
32
33
 
33
34
  // src/sketch/renderer.ts
34
35
  import * as d3 from "d3-selection";
@@ -306,7 +307,7 @@ function renderSketch(container, parsed, layout, palette, isDark, options = {})
306
307
  hideDescriptions = false
307
308
  } = options;
308
309
  const hideDesc = hideDescriptions || parsed.options.noDescriptions;
309
- const neutralFill = mix(palette.textMuted, palette.bg, 12);
310
+ const neutralFill = parsed.options.fillMode === "outline" ? themeBaseBg(palette, isDark) : mix(palette.textMuted, palette.bg, 12);
310
311
  const tagGroups = [...parsed.tagGroups];
311
312
  const activeName = resolveActiveTagGroup(
312
313
  tagGroups,
@@ -325,14 +326,14 @@ function renderSketch(container, parsed, layout, palette, isDark, options = {})
325
326
  };
326
327
  }
327
328
  const fill = shapeFill(palette, tagColor, isDark, {
328
- solid: parsed.options.solidFill
329
+ mode: parsed.options.fillMode
329
330
  });
330
331
  return {
331
332
  fill,
332
333
  stroke: tagColor,
333
334
  // Label text takes the shape's own (tag) color — but for solid fills the
334
335
  // tag color would vanish into the fill, so keep a contrast color there.
335
- text: parsed.options.solidFill ? contrastText(fill, palette.textOnFillLight, palette.textOnFillDark) : tagColor
336
+ text: parsed.options.fillMode === "solid" ? contrastText(fill, palette.textOnFillLight, palette.textOnFillDark) : tagColor
336
337
  };
337
338
  };
338
339
  const showTitle = !!parsed.title;
@@ -581,8 +582,8 @@ function drawNode(layer, node, colors, palette, isDark, tagGroups) {
581
582
  const rows = node.isCollapsedBox ? [] : metaRows(node.metadata, tagGroups);
582
583
  const badge = node.shape !== "rectangle";
583
584
  const labelInset = badge ? 22 : 0;
584
- const solid = colors.stroke === colors.fill;
585
- const ruleColor = solid ? colors.text : colors.stroke;
585
+ const solidLike = colors.stroke === colors.fill;
586
+ const ruleColor = solidLike ? colors.text : colors.stroke;
586
587
  if (node.description && !node.isCollapsedBox) {
587
588
  const fitH = fitWrapped(
588
589
  node.label,
@@ -651,7 +652,7 @@ function drawNode(layer, node, colors, palette, isDark, tagGroups) {
651
652
  lineHeight: CARD_META_FONT + 5,
652
653
  separatorGap: 8,
653
654
  separatorColor: ruleColor,
654
- textColor: solid ? colors.text : palette.text,
655
+ textColor: solidLike ? colors.text : palette.text,
655
656
  keyX: 12
656
657
  }
657
658
  } : {}
@@ -1058,4 +1059,4 @@ export {
1058
1059
  sketchEdgeGeometry,
1059
1060
  renderSketchForExport
1060
1061
  };
1061
- //# sourceMappingURL=chunk-F3FYUFUH.js.map
1062
+ //# sourceMappingURL=chunk-6HQH6JZE.js.map
@@ -5,10 +5,10 @@ import {
5
5
  formatPct,
6
6
  resolveCellColor,
7
7
  resolveColorMode
8
- } from "./chunk-NI3XQBPB.js";
8
+ } from "./chunk-5BHJZH62.js";
9
9
  import {
10
10
  renderIntegratedLegend
11
- } from "./chunk-OU7HLO7I.js";
11
+ } from "./chunk-AUIM2NVH.js";
12
12
  import {
13
13
  getMaxLegendReservedHeight
14
14
  } from "./chunk-YAA6IID3.js";
@@ -29,11 +29,12 @@ import {
29
29
  import {
30
30
  contrastText,
31
31
  getSeriesColors,
32
- mix
33
- } from "./chunk-P6T66CCZ.js";
32
+ mix,
33
+ themeBaseBg
34
+ } from "./chunk-WBM7ZNDI.js";
34
35
  import {
35
36
  tagAttrKey
36
- } from "./chunk-467TVMQL.js";
37
+ } from "./chunk-HHKO6SKY.js";
37
38
 
38
39
  // src/treemap/renderer.ts
39
40
  import * as d3Selection from "d3-selection";
@@ -138,14 +139,13 @@ function renderTreemapForExport(container, parsed, palette, isDark, exportDims,
138
139
  }
139
140
  function renderTreemap(container, parsed, palette, isDark, exportDims, options = {}) {
140
141
  if (parsed.error || parsed.roots.length === 0) return;
141
- void isDark;
142
142
  d3Selection.select(container).selectAll(":not([data-d3-tooltip])").remove();
143
143
  const width = exportDims?.width ?? container.clientWidth;
144
144
  const height = exportDims?.height ?? container.clientHeight;
145
145
  if (width <= 0 || height <= 0) return;
146
146
  const mode = resolveColorMode(parsed, options.colorMode);
147
147
  const opts = parsed.options;
148
- const solid = opts.solidFill;
148
+ const fillMode = opts.fillMode;
149
149
  const exportMode = options.exportMode ?? false;
150
150
  const seriesColorsTop = getSeriesColors(palette);
151
151
  const showTitle = !!parsed.title;
@@ -198,7 +198,7 @@ function renderTreemap(container, parsed, palette, isDark, exportDims, options =
198
198
  const h = Math.max(0, cell.y1 - cell.y0);
199
199
  if (w <= 0 || h <= 0) continue;
200
200
  const baseColor = resolveCellColor(cell, colorCtx);
201
- const fill = cell.isContainer ? baseColor : solid ? baseColor : mix(baseColor, palette.bg, LEAF_MUTE_PCT);
201
+ const fill = fillMode === "outline" ? themeBaseBg(palette, isDark) : cell.isContainer ? baseColor : fillMode === "solid" ? baseColor : mix(baseColor, palette.bg, LEAF_MUTE_PCT);
202
202
  const drillable = cell.isContainer || cell.isCollapsed;
203
203
  const g = root.append("g").attr("class", "dgmo-treemap-cell").attr("transform", `translate(${cell.x0},${cell.y0})`).attr("data-node-path", cell.path.join(" / "));
204
204
  if (cell.lineNumber !== void 0) {
@@ -213,16 +213,15 @@ function renderTreemap(container, parsed, palette, isDark, exportDims, options =
213
213
  const rect = g.append("rect").attr(
214
214
  "class",
215
215
  cell.isContainer ? "dgmo-treemap-rect branch" : "dgmo-treemap-rect"
216
- ).attr("width", w).attr("height", h).attr("rx", 2).attr("fill", fill).attr("fill-opacity", 1).attr("stroke", palette.bg).attr("stroke-width", cell.isContainer ? 1 : 0);
216
+ ).attr("width", w).attr("height", h).attr("rx", 2).attr("fill", fill).attr("fill-opacity", 1).attr("stroke", fillMode === "outline" ? baseColor : palette.bg).attr(
217
+ "stroke-width",
218
+ fillMode === "outline" ? 1 : cell.isContainer ? 1 : 0
219
+ );
217
220
  if (drillable && options.onClickItem && cell.lineNumber !== void 0) {
218
221
  const ln = cell.lineNumber;
219
222
  rect.style("cursor", "pointer").on("click", () => options.onClickItem(ln));
220
223
  }
221
- const ink = contrastText(
222
- fill,
223
- palette.textOnFillLight,
224
- palette.textOnFillDark
225
- );
224
+ const ink = fillMode === "outline" ? baseColor : contrastText(fill, palette.textOnFillLight, palette.textOnFillDark);
226
225
  if (cell.isContainer && headerH > 0 && w > 34 && h > headerH) {
227
226
  const valParts = [];
228
227
  if (!opts.noValues) valParts.push(compactNumber(cell.value));
@@ -381,4 +380,4 @@ export {
381
380
  renderTreemapForExport,
382
381
  renderTreemap
383
382
  };
384
- //# sourceMappingURL=chunk-X7EC3L2H.js.map
383
+ //# sourceMappingURL=chunk-6LBQ7ELG.js.map
@@ -7,7 +7,7 @@ import {
7
7
  matchTagBlockHeading,
8
8
  stripDefaultModifier,
9
9
  tagAttrKey
10
- } from "./chunk-467TVMQL.js";
10
+ } from "./chunk-HHKO6SKY.js";
11
11
  import {
12
12
  displayName,
13
13
  normalizeName
@@ -26,7 +26,7 @@ import {
26
26
  tokenizeQuoteAware,
27
27
  tryParseSharedOption,
28
28
  withTagAliases
29
- } from "./chunk-LV4BETUU.js";
29
+ } from "./chunk-BRENJ2BQ.js";
30
30
  import {
31
31
  nord,
32
32
  resolveColor
@@ -571,4 +571,4 @@ export {
571
571
  FAMILY_DIAGNOSTICS,
572
572
  parseFamily
573
573
  };
574
- //# sourceMappingURL=chunk-5WPNFSXP.js.map
574
+ //# sourceMappingURL=chunk-75G3Q4DK.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
  layoutERDiagram
10
10
  } from "./chunk-6NYWYNBI.js";
@@ -17,7 +17,7 @@ import {
17
17
  } from "./chunk-YYVTBZZC.js";
18
18
  import {
19
19
  renderIntegratedLegend
20
- } from "./chunk-OU7HLO7I.js";
20
+ } from "./chunk-AUIM2NVH.js";
21
21
  import {
22
22
  TITLE_FONT_SIZE,
23
23
  TITLE_FONT_WEIGHT,
@@ -34,16 +34,19 @@ import {
34
34
  } from "./chunk-WCT3NYCV.js";
35
35
  import {
36
36
  parseERDiagram
37
- } from "./chunk-332ZR4QU.js";
37
+ } from "./chunk-REJAIQ5S.js";
38
38
  import {
39
39
  contrastText,
40
40
  getSeriesColors,
41
41
  shapeFill
42
- } from "./chunk-P6T66CCZ.js";
42
+ } from "./chunk-WBM7ZNDI.js";
43
43
  import {
44
44
  resolveTagColor,
45
45
  tagAttrKey
46
- } from "./chunk-467TVMQL.js";
46
+ } from "./chunk-HHKO6SKY.js";
47
+ import {
48
+ fillModeFromOptions
49
+ } from "./chunk-BRENJ2BQ.js";
47
50
 
48
51
  // src/er/renderer.ts
49
52
  import * as d3Selection from "d3-selection";
@@ -383,7 +386,7 @@ function renderERDiagram(container, parsed, layout, palette, isDark, onClickItem
383
386
  const w = node.width;
384
387
  const h = node.height;
385
388
  const fill = shapeFill(palette, nodeColor, isDark, {
386
- solid: parsed.options["solid-fill"] === "on"
389
+ mode: fillModeFromOptions(parsed.options)
387
390
  });
388
391
  const stroke = nodeColor;
389
392
  const onFillText = contrastText(
@@ -545,4 +548,4 @@ export {
545
548
  renderERDiagram,
546
549
  renderERDiagramForExport
547
550
  };
548
- //# sourceMappingURL=chunk-BYJBIALT.js.map
551
+ //# sourceMappingURL=chunk-77FGAVZC.js.map
@@ -5,7 +5,7 @@ import {
5
5
  splitNameAndMeta,
6
6
  tryParseSharedOption,
7
7
  warnUnknownMetaKeys
8
- } from "./chunk-LV4BETUU.js";
8
+ } from "./chunk-BRENJ2BQ.js";
9
9
  import {
10
10
  makeDgmoError,
11
11
  makeFail
@@ -274,4 +274,4 @@ function parseCycle(content) {
274
274
  export {
275
275
  parseCycle
276
276
  };
277
- //# sourceMappingURL=chunk-2EQMXBBQ.js.map
277
+ //# sourceMappingURL=chunk-7BIZCTAX.js.map