@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
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  renderIntegratedLegend
3
- } from "./chunk-OU7HLO7I.js";
3
+ } from "./chunk-AUIM2NVH.js";
4
4
  import {
5
5
  getFigure,
6
6
  getPartGeom,
@@ -11,13 +11,14 @@ import {
11
11
  } from "./chunk-6KFWC4CO.js";
12
12
  import {
13
13
  getSeriesColors,
14
- mix
15
- } from "./chunk-P6T66CCZ.js";
14
+ mix,
15
+ themeBaseBg
16
+ } from "./chunk-WBM7ZNDI.js";
16
17
  import {
17
18
  resolveActiveTagGroup,
18
19
  resolveTagColor,
19
20
  tagAttrKey
20
- } from "./chunk-467TVMQL.js";
21
+ } from "./chunk-HHKO6SKY.js";
21
22
  import {
22
23
  resolveColor
23
24
  } from "./chunk-TLVIHFRO.js";
@@ -51,7 +52,7 @@ function sideCenter(centers, side, view) {
51
52
  (best, c) => wantScreenRight ? c.x > best.x ? c : best : c.x < best.x ? c : best
52
53
  );
53
54
  }
54
- function renderFigureBody(fig, view, parts, partColor, emphKey, form, palette, defs) {
55
+ function renderFigureBody(fig, view, parts, partColor, emphKey, form, palette, isDark, fillMode, defs) {
55
56
  const [vx, vy, vw, vh] = fig.viewBox.split(" ").map(Number);
56
57
  const muscleFill = mix(palette.bg, palette.border, 0.7);
57
58
  const seam = palette.bg;
@@ -99,7 +100,16 @@ function renderFigureBody(fig, view, parts, partColor, emphKey, form, palette, d
99
100
  );
100
101
  if (sidePaths.length) paths = sidePaths;
101
102
  }
102
- if (form === "skin") {
103
+ if (fillMode === "solid") {
104
+ for (const d of paths) {
105
+ out += `<path${dataLine} d="${d}" fill="${color}" stroke="${color}" stroke-width="1.5"/>`;
106
+ }
107
+ } else if (fillMode === "outline") {
108
+ const baseBg = themeBaseBg(palette, isDark);
109
+ for (const d of paths) {
110
+ out += `<path${dataLine} d="${d}" fill="${baseBg}" stroke="${color}" stroke-width="2.5"/>`;
111
+ }
112
+ } else if (form === "skin") {
103
113
  for (const d of paths) {
104
114
  out += `<path${dataLine} d="${d}" fill="${color}" fill-opacity="0.5" stroke="${color}" stroke-width="1.5"/>`;
105
115
  }
@@ -186,6 +196,8 @@ function renderBody(container, parsed, palette, _isDark, _onClickItem, exportDim
186
196
  emphKey,
187
197
  parsed.options.form,
188
198
  palette,
199
+ _isDark,
200
+ parsed.options.fillMode,
189
201
  defs
190
202
  )
191
203
  );
@@ -322,4 +334,4 @@ export {
322
334
  renderBody,
323
335
  renderBodyForExport
324
336
  };
325
- //# sourceMappingURL=chunk-GD6L76WD.js.map
337
+ //# sourceMappingURL=chunk-JRCOYRRH.js.map
@@ -16,10 +16,10 @@ import {
16
16
  } from "./chunk-3CIOJ5YJ.js";
17
17
  import {
18
18
  formatDateLabel
19
- } from "./chunk-B63YB7X3.js";
19
+ } from "./chunk-7KINELPI.js";
20
20
  import {
21
21
  renderIntegratedLegend
22
- } from "./chunk-OU7HLO7I.js";
22
+ } from "./chunk-AUIM2NVH.js";
23
23
  import {
24
24
  TITLE_FONT_SIZE,
25
25
  TITLE_FONT_WEIGHT,
@@ -38,11 +38,11 @@ import {
38
38
  mix,
39
39
  shapeFill,
40
40
  themeBaseBg
41
- } from "./chunk-P6T66CCZ.js";
41
+ } from "./chunk-WBM7ZNDI.js";
42
42
  import {
43
43
  resolveActiveTagGroup,
44
44
  resolveTagColor
45
- } from "./chunk-467TVMQL.js";
45
+ } from "./chunk-HHKO6SKY.js";
46
46
  import {
47
47
  resolveColor
48
48
  } from "./chunk-TLVIHFRO.js";
@@ -163,7 +163,7 @@ function renderEventLine(container, parsed, palette, isDark, onClickItem, export
163
163
  const event = slot.event;
164
164
  const solid2 = eventColor(event);
165
165
  const cardFill2 = shapeFill(palette, solid2, isDark, {
166
- solid: parsed.options.solidFill
166
+ mode: parsed.options.fillMode
167
167
  });
168
168
  const titleColor2 = contrastText(
169
169
  cardFill2,
@@ -533,11 +533,11 @@ function renderEventLine(container, parsed, palette, isDark, onClickItem, export
533
533
  cardG.append("clipPath").attr("id", clipId).append("rect").attr("x", 0).attr("y", shelfTop).attr("width", CARD_W).attr("height", shelfH).attr("rx", SHELF_EDGE);
534
534
  cardG.append("rect").attr("x", 0).attr("y", shelfTop).attr("width", CARD_W).attr("height", shelfH).attr("clip-path", `url(#${clipId})`).attr(
535
535
  "fill",
536
- parsed.options.solidFill ? p.color : mix(p.color, themeBaseBg(palette, isDark), SHELF_TINT)
536
+ parsed.options.fillMode ? p.color : mix(p.color, themeBaseBg(palette, isDark), SHELF_TINT)
537
537
  );
538
538
  const edgeY = titleNearTop ? shelfTop : shelfTop + shelfH - SHELF_EDGE;
539
539
  cardG.append("rect").attr("x", 0).attr("y", edgeY).attr("width", CARD_W).attr("height", SHELF_EDGE).attr("clip-path", `url(#${clipId})`).attr("fill", p.color).attr("fill-opacity", p.future ? 0.4 : 1);
540
- const shelfText = parsed.options.solidFill ? contrastText(p.color, palette.textOnFillLight, palette.textOnFillDark) : p.color;
540
+ const shelfText = parsed.options.fillMode ? contrastText(p.color, palette.textOnFillLight, palette.textOnFillDark) : p.color;
541
541
  const titleMid = headBandTop + p.headerH / 2;
542
542
  const titleTop = titleMid - (p.titleLines.length - 1) * TITLE_LINE_H / 2;
543
543
  for (let ti = 0; ti < p.titleLines.length; ti++) {
@@ -549,7 +549,7 @@ function renderEventLine(container, parsed, palette, isDark, onClickItem, export
549
549
  (titleNearTop ? p.headerH : headBandTop - dateH) + DATE_SUBTITLE_FONT + 2
550
550
  ).attr(
551
551
  "fill",
552
- parsed.options.solidFill ? mix(shelfText, p.color, 25) : mix(palette.text, palette.bg, 55)
552
+ parsed.options.fillMode ? mix(shelfText, p.color, 25) : mix(palette.text, palette.bg, 55)
553
553
  ).attr("font-family", FONT_FAMILY).attr("font-size", DATE_SUBTITLE_FONT).attr("font-weight", 600).text(dateStr);
554
554
  }
555
555
  if (p.lines.length > 0) {
@@ -982,4 +982,4 @@ export {
982
982
  focusEventLine,
983
983
  renderEventLineForExport
984
984
  };
985
- //# sourceMappingURL=chunk-G3PF3S7P.js.map
985
+ //# sourceMappingURL=chunk-K2I2XOZD.js.map
@@ -7,7 +7,7 @@ import {
7
7
  import {
8
8
  parseDateToken,
9
9
  toInternal
10
- } from "./chunk-RBDIYLA5.js";
10
+ } from "./chunk-DAOFNU6J.js";
11
11
  import {
12
12
  AUTO_TAG_COLOR_SENTINEL,
13
13
  finalizeAutoTagColors,
@@ -17,7 +17,7 @@ import {
17
17
  tagAttrKey,
18
18
  validateTagGroupNames,
19
19
  validateTagValues
20
- } from "./chunk-467TVMQL.js";
20
+ } from "./chunk-HHKO6SKY.js";
21
21
  import {
22
22
  normalizeName
23
23
  } from "./chunk-NOTA6TEI.js";
@@ -28,7 +28,7 @@ import {
28
28
  splitNameAndMeta,
29
29
  warnUnknownMetaKeys,
30
30
  withTagAliases
31
- } from "./chunk-LV4BETUU.js";
31
+ } from "./chunk-BRENJ2BQ.js";
32
32
  import {
33
33
  emit,
34
34
  makeDgmoError,
@@ -138,7 +138,9 @@ var DIRECTIVE_KEYS = /* @__PURE__ */ new Set([
138
138
  "start-date",
139
139
  "end-date",
140
140
  "no-title",
141
- "solid-fill",
141
+ "fill-tint",
142
+ "fill-solid",
143
+ "fill-outline",
142
144
  "sprint-length",
143
145
  "sprint-number",
144
146
  "sprint-start",
@@ -982,8 +984,16 @@ function applyDirective(key, value, lineNumber, options, error, warn, dateCfg) {
982
984
  options.noTitle = true;
983
985
  return;
984
986
  }
985
- case "solid-fill": {
986
- options.solidFill = true;
987
+ case "fill-solid": {
988
+ options.fillMode = "solid";
989
+ return;
990
+ }
991
+ case "fill-outline": {
992
+ options.fillMode = "outline";
993
+ return;
994
+ }
995
+ case "fill-tint": {
996
+ delete options.fillMode;
987
997
  return;
988
998
  }
989
999
  case "active-tag": {
@@ -1214,4 +1224,4 @@ export {
1214
1224
  extractPertSymbols,
1215
1225
  looksLikePert
1216
1226
  };
1217
- //# sourceMappingURL=chunk-5PDTIBLV.js.map
1227
+ //# sourceMappingURL=chunk-K4EOKJA6.js.map
@@ -14,7 +14,7 @@ import {
14
14
  } from "./chunk-3CIOJ5YJ.js";
15
15
  import {
16
16
  renderIntegratedLegend
17
- } from "./chunk-OU7HLO7I.js";
17
+ } from "./chunk-AUIM2NVH.js";
18
18
  import {
19
19
  getMaxLegendReservedHeight
20
20
  } from "./chunk-YAA6IID3.js";
@@ -37,11 +37,14 @@ import {
37
37
  mix,
38
38
  shapeFill,
39
39
  themeBaseBg
40
- } from "./chunk-P6T66CCZ.js";
40
+ } from "./chunk-WBM7ZNDI.js";
41
41
  import {
42
42
  resolveTagColor,
43
43
  tagAttrKey
44
- } from "./chunk-467TVMQL.js";
44
+ } from "./chunk-HHKO6SKY.js";
45
+ import {
46
+ fillModeFromOptions
47
+ } from "./chunk-BRENJ2BQ.js";
45
48
  import {
46
49
  resolveColor
47
50
  } from "./chunk-TLVIHFRO.js";
@@ -88,7 +91,7 @@ function baseColor(node, parsed, palette, activeTagGroup) {
88
91
  function renderFamilyForExport(container, parsed, layout, palette, isDark, opts = {}) {
89
92
  d3Selection.select(container).selectAll(":not([data-d3-tooltip])").remove();
90
93
  const activeTagGroup = opts.activeTagGroup ?? null;
91
- const solid = parsed.options["solid-fill"] === "on";
94
+ const fillMode = fillModeFromOptions(parsed.options);
92
95
  const noDaggers = parsed.options["no-daggers"] === "true";
93
96
  const baseBg = themeBaseBg(palette, isDark);
94
97
  const PAD = 20;
@@ -202,7 +205,7 @@ function renderFamilyForExport(container, parsed, layout, palette, isDark, opts
202
205
  for (const node of layout.nodes) {
203
206
  const isPh = !!node.placeholder;
204
207
  const base = baseColor(node, parsed, palette, activeTagGroup);
205
- const fill = isPh ? mix(palette.textMuted, baseBg, 6) : shapeFill(palette, base, isDark, { solid });
208
+ const fill = isPh ? mix(palette.textMuted, baseBg, 6) : shapeFill(palette, base, isDark, { mode: fillMode });
206
209
  const stroke = isPh ? palette.textMuted : base;
207
210
  const labelColor = isPh ? palette.textMuted : contrastText(fill, palette.textOnFillLight, palette.textOnFillDark);
208
211
  const g = cardsG.append("g").attr("class", "family-card").attr("transform", `translate(${node.x}, ${node.y})`).attr("data-line-number", String(node.lineNumber)).attr("data-person-id", node.id);
@@ -223,7 +226,7 @@ function renderFamilyForExport(container, parsed, layout, palette, isDark, opts
223
226
  focusG.append("circle").attr("cx", fx).attr("cy", fy).attr("r", 1.6).attr("fill", labelColor);
224
227
  const rows = familyCardRows(node);
225
228
  if (rows.length === 0) continue;
226
- g.append("line").attr("x1", 0).attr("y1", HEADER_HEIGHT).attr("x2", node.width).attr("y2", HEADER_HEIGHT).attr("stroke", solid ? labelColor : stroke).attr("stroke-opacity", 0.3).attr("stroke-width", 1);
229
+ g.append("line").attr("x1", 0).attr("y1", HEADER_HEIGHT).attr("x2", node.width).attr("y2", HEADER_HEIGHT).attr("stroke", fillMode === "solid" ? labelColor : stroke).attr("stroke-opacity", 0.3).attr("stroke-width", 1);
227
230
  const maxKeyWidth = Math.max(
228
231
  0,
229
232
  ...rows.filter((r) => !r.year).map((r) => measureText(`${r.key}: `, META_FONT_SIZE))
@@ -270,4 +273,4 @@ export {
270
273
  renderFamilyForExport,
271
274
  renderFamily
272
275
  };
273
- //# sourceMappingURL=chunk-5SVOCD5W.js.map
276
+ //# sourceMappingURL=chunk-KGVZ5VGH.js.map
@@ -4,7 +4,7 @@ import {
4
4
  layoutC4Containers,
5
5
  layoutC4Context,
6
6
  layoutC4Deployment
7
- } from "./chunk-NEQ6GJXB.js";
7
+ } from "./chunk-ONU3U4GL.js";
8
8
  import {
9
9
  renderInlineText
10
10
  } from "./chunk-3HDBAXF5.js";
@@ -17,7 +17,7 @@ import {
17
17
  } from "./chunk-3CIOJ5YJ.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,7 +34,7 @@ import {
34
34
  } from "./chunk-WCT3NYCV.js";
35
35
  import {
36
36
  parseC4
37
- } from "./chunk-3LV2NCB6.js";
37
+ } from "./chunk-BPY242XU.js";
38
38
  import {
39
39
  preprocessDescriptionLine
40
40
  } from "./chunk-IYULMRBE.js";
@@ -42,10 +42,13 @@ import {
42
42
  contrastText,
43
43
  mix,
44
44
  shapeFill
45
- } from "./chunk-P6T66CCZ.js";
45
+ } from "./chunk-WBM7ZNDI.js";
46
46
  import {
47
47
  tagAttrKey
48
- } from "./chunk-467TVMQL.js";
48
+ } from "./chunk-HHKO6SKY.js";
49
+ import {
50
+ fillModeFromOptions
51
+ } from "./chunk-BRENJ2BQ.js";
49
52
 
50
53
  // src/c4/renderer.ts
51
54
  import * as d3Selection from "d3-selection";
@@ -87,11 +90,9 @@ function typeColor(type, palette, nodeColor) {
87
90
  return palette.colors.teal;
88
91
  }
89
92
  }
90
- function nodeFill(palette, isDark, type, nodeColor, solid) {
93
+ function nodeFill(palette, isDark, type, nodeColor, fillMode) {
91
94
  const color = typeColor(type, palette, nodeColor);
92
- return shapeFill(palette, color, isDark, {
93
- ...solid !== void 0 && { solid }
94
- });
95
+ return shapeFill(palette, color, isDark, { mode: fillMode });
95
96
  }
96
97
  function nodeStroke(palette, type, nodeColor) {
97
98
  return typeColor(type, palette, nodeColor);
@@ -229,8 +230,8 @@ function renderC4Context(container, parsed, layout, palette, isDark, onClickItem
229
230
  }
230
231
  const w = node.width;
231
232
  const h = node.height;
232
- const solid = parsed.options["solid-fill"] === "on";
233
- const fill = nodeFill(palette, isDark, node.type, node.color, solid);
233
+ const fillMode = fillModeFromOptions(parsed.options);
234
+ const fill = nodeFill(palette, isDark, node.type, node.color, fillMode);
234
235
  const stroke = nodeStroke(palette, node.type, node.color);
235
236
  const onFillText = contrastText(
236
237
  fill,
@@ -259,7 +260,7 @@ function renderC4Context(container, parsed, layout, palette, isDark, onClickItem
259
260
  nodeG.append("text").attr("x", 0).attr("y", yPos + NAME_FONT_SIZE / 2).attr("text-anchor", "middle").attr("dominant-baseline", "central").attr("fill", onFillText).attr("font-size", NAME_FONT_SIZE).attr("font-weight", "bold").text(node.name);
260
261
  }
261
262
  yPos += NAME_HEIGHT;
262
- nodeG.append("line").attr("x1", -w / 2 + CARD_H_PAD / 2).attr("y1", yPos).attr("x2", w / 2 - CARD_H_PAD / 2).attr("y2", yPos).attr("stroke", solid ? onFillText : stroke).attr("stroke-width", 0.5).attr("stroke-opacity", 0.4);
263
+ nodeG.append("line").attr("x1", -w / 2 + CARD_H_PAD / 2).attr("y1", yPos).attr("x2", w / 2 - CARD_H_PAD / 2).attr("y2", yPos).attr("stroke", fillMode === "solid" ? onFillText : stroke).attr("stroke-width", 0.5).attr("stroke-opacity", 0.4);
263
264
  yPos += DIVIDER_GAP;
264
265
  if (node.description) {
265
266
  const contentWidth = w - CARD_H_PAD * 2;
@@ -282,7 +283,7 @@ function renderC4Context(container, parsed, layout, palette, isDark, onClickItem
282
283
  if (node.drillable) {
283
284
  const clipId = `clip-drill-${node.id.replace(/\s+/g, "-")}`;
284
285
  nodeG.append("clipPath").attr("id", clipId).append("rect").attr("x", -w / 2).attr("y", -h / 2).attr("width", w).attr("height", h).attr("rx", CARD_RADIUS);
285
- nodeG.append("rect").attr("x", -w / 2).attr("y", h / 2 - DRILL_BAR_HEIGHT).attr("width", w).attr("height", DRILL_BAR_HEIGHT).attr("fill", solid ? onFillText : stroke).attr("clip-path", `url(#${clipId})`).attr("class", "c4-drill-bar");
286
+ nodeG.append("rect").attr("x", -w / 2).attr("y", h / 2 - DRILL_BAR_HEIGHT).attr("width", w).attr("height", DRILL_BAR_HEIGHT).attr("fill", fillMode === "solid" ? onFillText : stroke).attr("clip-path", `url(#${clipId})`).attr("class", "c4-drill-bar");
286
287
  }
287
288
  }
288
289
  if (hasLegend) {
@@ -791,8 +792,8 @@ function renderC4Containers(container, parsed, layout, palette, isDark, onClickI
791
792
  }
792
793
  const w = node.width;
793
794
  const h = node.height;
794
- const solid = parsed.options["solid-fill"] === "on";
795
- const fill = nodeFill(palette, isDark, node.type, node.color, solid);
795
+ const fillMode = fillModeFromOptions(parsed.options);
796
+ const fill = nodeFill(palette, isDark, node.type, node.color, fillMode);
796
797
  const stroke = nodeStroke(palette, node.type, node.color);
797
798
  const onFillText = contrastText(
798
799
  fill,
@@ -860,7 +861,7 @@ function renderC4Containers(container, parsed, layout, palette, isDark, onClickI
860
861
  }
861
862
  const metaEntries = collectCardMetadata(node.metadata);
862
863
  if (metaEntries.length > 0) {
863
- nodeG.append("line").attr("x1", -w / 2 + CARD_H_PAD / 2).attr("y1", yPos).attr("x2", w / 2 - CARD_H_PAD / 2).attr("y2", yPos).attr("stroke", solid ? onFillText : stroke).attr("stroke-width", 0.5).attr("stroke-opacity", 0.4);
864
+ nodeG.append("line").attr("x1", -w / 2 + CARD_H_PAD / 2).attr("y1", yPos).attr("x2", w / 2 - CARD_H_PAD / 2).attr("y2", yPos).attr("stroke", fillMode === "solid" ? onFillText : stroke).attr("stroke-width", 0.5).attr("stroke-opacity", 0.4);
864
865
  yPos += DIVIDER_GAP;
865
866
  const maxKeyWidth = Math.max(
866
867
  ...metaEntries.map((e) => measureText(`${e.key}: `, META_FONT_SIZE))
@@ -873,7 +874,7 @@ function renderC4Containers(container, parsed, layout, palette, isDark, onClickI
873
874
  }
874
875
  }
875
876
  } else {
876
- nodeG.append("line").attr("x1", -w / 2 + CARD_H_PAD / 2).attr("y1", yPos).attr("x2", w / 2 - CARD_H_PAD / 2).attr("y2", yPos).attr("stroke", solid ? onFillText : stroke).attr("stroke-width", 0.5).attr("stroke-opacity", 0.4);
877
+ nodeG.append("line").attr("x1", -w / 2 + CARD_H_PAD / 2).attr("y1", yPos).attr("x2", w / 2 - CARD_H_PAD / 2).attr("y2", yPos).attr("stroke", fillMode === "solid" ? onFillText : stroke).attr("stroke-width", 0.5).attr("stroke-opacity", 0.4);
877
878
  yPos += DIVIDER_GAP;
878
879
  if (node.description) {
879
880
  const contentWidth = w - CARD_H_PAD * 2;
@@ -897,7 +898,7 @@ function renderC4Containers(container, parsed, layout, palette, isDark, onClickI
897
898
  if (node.drillable) {
898
899
  const clipId = `clip-drill-${node.id.replace(/\s+/g, "-")}`;
899
900
  nodeG.append("clipPath").attr("id", clipId).append("rect").attr("x", -w / 2).attr("y", -h / 2).attr("width", w).attr("height", h).attr("rx", CARD_RADIUS);
900
- nodeG.append("rect").attr("x", -w / 2).attr("y", h / 2 - DRILL_BAR_HEIGHT).attr("width", w).attr("height", DRILL_BAR_HEIGHT).attr("fill", solid ? onFillText : stroke).attr("clip-path", `url(#${clipId})`).attr("class", "c4-drill-bar");
901
+ nodeG.append("rect").attr("x", -w / 2).attr("y", h / 2 - DRILL_BAR_HEIGHT).attr("width", w).attr("height", DRILL_BAR_HEIGHT).attr("fill", fillMode === "solid" ? onFillText : stroke).attr("clip-path", `url(#${clipId})`).attr("class", "c4-drill-bar");
901
902
  }
902
903
  }
903
904
  if (hasLegend) {
@@ -1035,4 +1036,4 @@ export {
1035
1036
  renderC4Deployment,
1036
1037
  renderC4DeploymentForExport
1037
1038
  };
1038
- //# sourceMappingURL=chunk-QHI5XVUJ.js.map
1039
+ //# sourceMappingURL=chunk-LBMS4AW6.js.map
@@ -18,7 +18,7 @@ import {
18
18
  } from "./chunk-YYVTBZZC.js";
19
19
  import {
20
20
  renderIntegratedLegend
21
- } from "./chunk-OU7HLO7I.js";
21
+ } from "./chunk-AUIM2NVH.js";
22
22
  import {
23
23
  CAPTION_BOX_PADDING_X,
24
24
  CAPTION_BOX_PADDING_Y,
@@ -43,7 +43,7 @@ import {
43
43
  } from "./chunk-WCT3NYCV.js";
44
44
  import {
45
45
  parsePert
46
- } from "./chunk-5PDTIBLV.js";
46
+ } from "./chunk-K4EOKJA6.js";
47
47
  import {
48
48
  addCalendarDays,
49
49
  formatDuration,
@@ -56,11 +56,11 @@ import {
56
56
  mix,
57
57
  shapeFill,
58
58
  themeBaseBg
59
- } from "./chunk-P6T66CCZ.js";
59
+ } from "./chunk-WBM7ZNDI.js";
60
60
  import {
61
61
  resolveActiveTagGroup,
62
62
  resolveTagColor
63
- } from "./chunk-467TVMQL.js";
63
+ } from "./chunk-HHKO6SKY.js";
64
64
 
65
65
  // src/pert/renderer.ts
66
66
  import * as d3Selection from "d3-selection";
@@ -506,7 +506,10 @@ function paintAnalysisRowMode(svg, resolved, palette, isDark, state, captionBull
506
506
  isDark
507
507
  };
508
508
  if (w.kind === "tornado") {
509
- renderTornadoBlock(svg, state.tornadoRows, args);
509
+ renderTornadoBlock(svg, state.tornadoRows, {
510
+ ...args,
511
+ fillMode: resolved.options.fillMode
512
+ });
510
513
  } else {
511
514
  const scurveTitle = !state.summaryRendered && captionBullets.length > 0 ? (
512
515
  // In-bounds by length check.
@@ -625,7 +628,10 @@ function paintAnalysisStackMode(svg, resolved, palette, isDark, state, captionBu
625
628
  };
626
629
  switch (item.kind) {
627
630
  case "tornado":
628
- renderTornadoBlock(svg, state.tornadoRows, args);
631
+ renderTornadoBlock(svg, state.tornadoRows, {
632
+ ...args,
633
+ fillMode: resolved.options.fillMode
634
+ });
629
635
  break;
630
636
  case "scurve": {
631
637
  const scurveTitle = !state.summaryRendered && captionBullets.length > 0 ? (
@@ -731,7 +737,7 @@ function renderGroups(root, resolved, layout, palette, isDark, collapsedSet, siz
731
737
  if (layout.groups.length === 0) return;
732
738
  const layer = root.append("g").attr("class", "pert-groups");
733
739
  const unit = resolved.options.timeUnit;
734
- const solid = resolved.options.solidFill === true;
740
+ const fillMode = resolved.options.fillMode;
735
741
  const containerFill = mix(palette.surface, palette.bg, 40);
736
742
  const containerStroke = palette.textMuted;
737
743
  const mcOn = resolved.monteCarloResult !== null;
@@ -784,7 +790,9 @@ function renderGroups(root, resolved, layout, palette, isDark, collapsedSet, siz
784
790
  "?"
785
791
  );
786
792
  const cardBaseColor = bandColor(memberBand, palette, palette.primary);
787
- const cardFill = shapeFill(palette, cardBaseColor, isDark, { solid });
793
+ const cardFill = shapeFill(palette, cardBaseColor, isDark, {
794
+ mode: fillMode
795
+ });
788
796
  const cardLabelColor = contrastText(
789
797
  cardFill,
790
798
  palette.textOnFillLight,
@@ -912,7 +920,7 @@ function renderNodes(root, _defs, resolved, layout, palette, isDark, sizing, onC
912
920
  const unit = resolved.options.timeUnit;
913
921
  const sprintMode = resolved.options.sprintMode;
914
922
  const sprintNumber = resolved.options.sprintNumber ?? 1;
915
- const solid = resolved.options.solidFill === true;
923
+ const fillMode = resolved.options.fillMode;
916
924
  const activeTagGroup = resolveActiveTagGroup(
917
925
  resolved.tagGroups,
918
926
  resolved.options.activeTag,
@@ -967,7 +975,7 @@ function renderNodes(root, _defs, resolved, layout, palette, isDark, sizing, onC
967
975
  );
968
976
  }
969
977
  const baseColor = bandColor(band, palette, palette.primary);
970
- const fill = shapeFill(palette, baseColor, isDark, { solid });
978
+ const fill = shapeFill(palette, baseColor, isDark, { mode: fillMode });
971
979
  const labelColor = contrastText(
972
980
  fill,
973
981
  palette.textOnFillLight,
@@ -979,7 +987,7 @@ function renderNodes(root, _defs, resolved, layout, palette, isDark, sizing, onC
979
987
  activeTagGroup
980
988
  );
981
989
  const hasTagColor = tagColor !== void 0 && tagColor !== "#999999";
982
- const tagBandFill = hasTagColor ? shapeFill(palette, tagColor, isDark, { solid }) : void 0;
990
+ const tagBandFill = hasTagColor ? shapeFill(palette, tagColor, isDark, { mode: fillMode }) : void 0;
983
991
  const tagLabelColor = hasTagColor ? contrastText(
984
992
  tagBandFill,
985
993
  palette.textOnFillLight,
@@ -1435,7 +1443,7 @@ function tornadoBoxHeightFor(rows) {
1435
1443
  return rows.length * TORNADO_ROW_HEIGHT + 2 * CAPTION_BOX_PADDING_Y + CAPTION_HEADER_BAND_HEIGHT;
1436
1444
  }
1437
1445
  function renderTornadoBlock(svg, rows, args) {
1438
- const { x, y, width, height, palette, isDark } = args;
1446
+ const { x, y, width, height, palette, isDark, fillMode } = args;
1439
1447
  const { fill, stroke: chromeStroke } = analysisBlockChrome(palette, isDark);
1440
1448
  const labelColor = contrastText(
1441
1449
  fill,
@@ -1478,7 +1486,7 @@ function renderTornadoBlock(svg, rows, args) {
1478
1486
  const rowY = firstRowY + i * TORNADO_ROW_HEIGHT;
1479
1487
  const labelY = rowY + TORNADO_ROW_HEIGHT / 2 + TORNADO_BAR_FONT_SIZE / 2 - 2;
1480
1488
  const barColor = bandColor(row.band, palette, palette.primary);
1481
- const barFill = shapeFill(palette, barColor, isDark);
1489
+ const barFill = fillMode === "outline" ? shapeFill(palette, barColor, isDark, { mode: "outline" }) : shapeFill(palette, barColor, isDark);
1482
1490
  const lowW = row.lowSwing * pixelsPerUnit;
1483
1491
  const highW = row.highSwing * pixelsPerUnit;
1484
1492
  const rowG = block.append("g").attr("class", "pert-tornado-row").attr("data-activity-id", row.id).attr("data-tornado-swing", String(row.lowSwing + row.highSwing));
@@ -1815,4 +1823,4 @@ export {
1815
1823
  measurePertAnalysisBlock,
1816
1824
  renderPertAnalysisBlock
1817
1825
  };
1818
- //# sourceMappingURL=chunk-FTBZV6NE.js.map
1826
+ //# sourceMappingURL=chunk-LGT3PZCJ.js.map
@@ -4,12 +4,13 @@ import {
4
4
  matchTagBlockHeading,
5
5
  stripDefaultModifier,
6
6
  tagAttrKey
7
- } from "./chunk-467TVMQL.js";
7
+ } from "./chunk-HHKO6SKY.js";
8
8
  import {
9
+ FILL_FAMILY_TOKENS,
9
10
  extractColor,
10
11
  measureIndent,
11
12
  parseFirstLine
12
- } from "./chunk-LV4BETUU.js";
13
+ } from "./chunk-BRENJ2BQ.js";
13
14
  import {
14
15
  emit
15
16
  } from "./chunk-CXK4DZH3.js";
@@ -296,8 +297,10 @@ function parseSwimlane(content, palette) {
296
297
  continue;
297
298
  }
298
299
  if (indent === 0) currentTagGroup = null;
299
- if (indent === 0 && /^solid-fill\s*$/i.test(trimmed)) {
300
- options["solid-fill"] = "on";
300
+ if (indent === 0 && FILL_FAMILY_TOKENS.has(trimmed.toLowerCase())) {
301
+ for (const t of FILL_FAMILY_TOKENS) delete options[t];
302
+ if (trimmed.toLowerCase() !== "fill-tint")
303
+ options[trimmed.toLowerCase()] = "on";
301
304
  continue;
302
305
  }
303
306
  if (indent === 0 && /^direction\s+/i.test(trimmed)) {
@@ -523,7 +526,7 @@ function parseSwimlane(content, palette) {
523
526
  if (!trimmed) continue;
524
527
  const indent = measureIndent(raw);
525
528
  if (indent === 0 && /^direction\s+/i.test(trimmed)) continue;
526
- if (indent === 0 && /^solid-fill\s*$/i.test(trimmed)) continue;
529
+ if (indent === 0 && FILL_FAMILY_TOKENS.has(trimmed.toLowerCase())) continue;
527
530
  if (matchTagBlockHeading(trimmed) && indent === 0) {
528
531
  inTagBlock = true;
529
532
  continue;
@@ -682,4 +685,4 @@ export {
682
685
  SWIMLANE_DIAGNOSTICS,
683
686
  parseSwimlane
684
687
  };
685
- //# sourceMappingURL=chunk-E7Y3SYKW.js.map
688
+ //# sourceMappingURL=chunk-LTXOLDUZ.js.map
@@ -1,9 +1,10 @@
1
1
  import {
2
2
  extractColor,
3
+ fillModeFromOptions,
3
4
  measureIndent,
4
5
  parseFirstLine,
5
6
  tryParseSharedOption
6
- } from "./chunk-LV4BETUU.js";
7
+ } from "./chunk-BRENJ2BQ.js";
7
8
  import {
8
9
  makeDgmoError,
9
10
  makeFail
@@ -19,7 +20,7 @@ function parseGoal(content, palette) {
19
20
  const options = {
20
21
  noPercent: false,
21
22
  noValue: false,
22
- solidFill: false,
23
+ fillMode: void 0,
23
24
  noTitle: false,
24
25
  noAutoColor: false,
25
26
  noNote: false
@@ -113,7 +114,7 @@ function parseGoal(content, palette) {
113
114
  continue;
114
115
  }
115
116
  if (tryParseSharedOption(trimmed, sharedOpts)) {
116
- if (sharedOpts["solid-fill"] === "on") options.solidFill = true;
117
+ options.fillMode = fillModeFromOptions(sharedOpts);
117
118
  if (sharedOpts["no-title"] === "on") options.noTitle = true;
118
119
  continue;
119
120
  }
@@ -155,4 +156,4 @@ function parseGoal(content, palette) {
155
156
  export {
156
157
  parseGoal
157
158
  };
158
- //# sourceMappingURL=chunk-GTWKD3QT.js.map
159
+ //# sourceMappingURL=chunk-MUE65OTD.js.map
@@ -18,7 +18,7 @@ import {
18
18
  } from "./chunk-YYVTBZZC.js";
19
19
  import {
20
20
  renderIntegratedLegend
21
- } from "./chunk-OU7HLO7I.js";
21
+ } from "./chunk-AUIM2NVH.js";
22
22
  import {
23
23
  getMaxLegendReservedHeight
24
24
  } from "./chunk-YAA6IID3.js";
@@ -49,7 +49,7 @@ import {
49
49
  } from "./chunk-WCT3NYCV.js";
50
50
  import {
51
51
  parseInfra
52
- } from "./chunk-MVN25IF6.js";
52
+ } from "./chunk-IM6PDDCE.js";
53
53
  import {
54
54
  preprocessDescriptionLine
55
55
  } from "./chunk-IYULMRBE.js";
@@ -57,10 +57,10 @@ import {
57
57
  contrastText,
58
58
  mix,
59
59
  shapeFill
60
- } from "./chunk-P6T66CCZ.js";
60
+ } from "./chunk-WBM7ZNDI.js";
61
61
  import {
62
62
  tagAttrKey
63
- } from "./chunk-467TVMQL.js";
63
+ } from "./chunk-HHKO6SKY.js";
64
64
  import {
65
65
  resolveColor
66
66
  } from "./chunk-TLVIHFRO.js";
@@ -813,10 +813,10 @@ function worstNodeSeverity(node, slo) {
813
813
  }
814
814
  return worst;
815
815
  }
816
- function nodeColor(_node, palette, isDark, severity, solid) {
816
+ function nodeColor(_node, palette, isDark, severity, fillMode) {
817
817
  if (severity === "overloaded") {
818
818
  const fill = shapeFill(palette, COLOR_OVERLOADED, isDark, {
819
- ...solid !== void 0 && { solid }
819
+ mode: fillMode
820
820
  });
821
821
  return {
822
822
  fill,
@@ -829,9 +829,7 @@ function nodeColor(_node, palette, isDark, severity, solid) {
829
829
  };
830
830
  }
831
831
  if (severity === "warning") {
832
- const fill = shapeFill(palette, COLOR_WARNING, isDark, {
833
- ...solid !== void 0 && { solid }
834
- });
832
+ const fill = shapeFill(palette, COLOR_WARNING, isDark, { mode: fillMode });
835
833
  return {
836
834
  fill,
837
835
  stroke: COLOR_WARNING,
@@ -843,9 +841,7 @@ function nodeColor(_node, palette, isDark, severity, solid) {
843
841
  };
844
842
  }
845
843
  if (severity === "healthy") {
846
- const fill = shapeFill(palette, COLOR_HEALTHY, isDark, {
847
- ...solid !== void 0 && { solid }
848
- });
844
+ const fill = shapeFill(palette, COLOR_HEALTHY, isDark, { mode: fillMode });
849
845
  return {
850
846
  fill,
851
847
  stroke: COLOR_HEALTHY,
@@ -970,7 +966,7 @@ function renderNodes(svg, nodes, palette, isDark, animate, expandedNodeIds, acti
970
966
  for (const node of nodes) {
971
967
  const slo = !node.isEdge && diagramOptions ? resolveNodeSlo(node, diagramOptions) : null;
972
968
  const severity = worstNodeSeverity(node, slo);
973
- const nodeColors = nodeColor(node, palette, isDark, severity, false);
969
+ const nodeColors = nodeColor(node, palette, isDark, severity, void 0);
974
970
  const textFill = nodeColors.textFill;
975
971
  let { fill, stroke } = nodeColors;
976
972
  if (activeGroup && tagGroups && !node.isEdge) {
@@ -1561,4 +1557,4 @@ export {
1561
1557
  renderInfra,
1562
1558
  parseAndLayoutInfra
1563
1559
  };
1564
- //# sourceMappingURL=chunk-TRM2J7ZN.js.map
1560
+ //# sourceMappingURL=chunk-MUVJ57EP.js.map