@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.
- package/.cursorrules +15 -19
- package/.github/copilot-instructions.md +15 -19
- package/.windsurfrules +15 -19
- package/SKILL.md +15 -19
- package/dist/advanced.d.ts +70 -42
- package/dist/advanced.js +115 -119
- package/dist/auto.js +125 -123
- package/dist/auto.mjs +952 -492
- package/dist/block.js +89 -52
- package/dist/{charts-d3-7E4B4IMW.js → charts-d3-MXEP6BNP.js} +7 -7
- package/dist/{chunk-CC4YRBWV.js → chunk-3HF5YEFJ.js} +17 -7
- package/dist/{chunk-5X6YQA2J.js → chunk-3HGU63UY.js} +12 -11
- package/dist/{chunk-4XFBQT5O.js → chunk-3LK5DNED.js} +2 -2
- package/dist/{chunk-IEDMFNU7.js → chunk-3QD7VP3U.js} +9 -4
- package/dist/{chunk-JJXGQIRV.js → chunk-3YRPZ7ZZ.js} +2 -2
- package/dist/{chunk-OJTXTQA2.js → chunk-44VCIPHF.js} +21 -17
- package/dist/{chunk-RAHVMKBG.js → chunk-4AQRFDXL.js} +2 -2
- package/dist/{chunk-6MNGECP2.js → chunk-4IHAV6O7.js} +2 -2
- package/dist/{chunk-ENRS56GC.js → chunk-4UNQ6X24.js} +10 -7
- package/dist/{chunk-JM4LEPY3.js → chunk-4YFKQ5WT.js} +6 -3
- package/dist/{chunk-U5SI5NIM.js → chunk-5223KXFD.js} +39 -22
- package/dist/{chunk-NI3XQBPB.js → chunk-5BHJZH62.js} +3 -3
- package/dist/{chunk-QYTPPDAO.js → chunk-5HILBT7X.js} +2 -2
- package/dist/{chunk-I2QZFCS2.js → chunk-5NGAO4QK.js} +4 -4
- package/dist/{chunk-BGP54HVR.js → chunk-5RP7JRVP.js} +4 -4
- package/dist/{chunk-IE477RQZ.js → chunk-5SEVICBT.js} +5 -5
- package/dist/{chunk-OZPBJM5Q.js → chunk-6EJITS44.js} +8 -5
- package/dist/{chunk-F3FYUFUH.js → chunk-6HQH6JZE.js} +12 -11
- package/dist/{chunk-X7EC3L2H.js → chunk-6LBQ7ELG.js} +14 -15
- package/dist/{chunk-5WPNFSXP.js → chunk-75G3Q4DK.js} +3 -3
- package/dist/{chunk-BYJBIALT.js → chunk-77FGAVZC.js} +10 -7
- package/dist/{chunk-2EQMXBBQ.js → chunk-7BIZCTAX.js} +2 -2
- package/dist/{chunk-B63YB7X3.js → chunk-7KINELPI.js} +110 -48
- package/dist/{chunk-AB7INMR5.js → chunk-7QE3XMRK.js} +15 -14
- package/dist/{chunk-IUJODQKX.js → chunk-AAXZDUOV.js} +15 -14
- package/dist/{chunk-2UJSV2VT.js → chunk-AL672HNE.js} +3 -3
- package/dist/{chunk-WQLMU7VG.js → chunk-ARGMQ3H4.js} +2 -2
- package/dist/{chunk-OU7HLO7I.js → chunk-AUIM2NVH.js} +3 -3
- package/dist/{chunk-RXKTSFDL.js → chunk-BKVOYV6I.js} +24 -32
- package/dist/{chunk-TK2VQQX2.js → chunk-BPIZNB5O.js} +14 -12
- package/dist/{chunk-3LV2NCB6.js → chunk-BPY242XU.js} +6 -4
- package/dist/{chunk-LV4BETUU.js → chunk-BRENJ2BQ.js} +32 -2
- package/dist/{chunk-Y6GBQTBK.js → chunk-CCNDLW7Z.js} +41 -19
- package/dist/{chunk-EXOQP75F.js → chunk-CIRFIL4M.js} +47 -27
- package/dist/{chunk-RBDIYLA5.js → chunk-DAOFNU6J.js} +17 -1
- package/dist/{chunk-4VWJ4LW2.js → chunk-DYWQFQJP.js} +44 -34
- package/dist/{chunk-QZPEGJOM.js → chunk-EMLPOL77.js} +15 -8
- package/dist/{chunk-IUO34HKW.js → chunk-FHGVORFO.js} +26 -22
- package/dist/{chunk-6H7O2OPM.js → chunk-FQ7HTV52.js} +4 -2
- package/dist/{chunk-7DYOELRK.js → chunk-FQMUHRVC.js} +69 -30
- package/dist/{chunk-AFIEPDLX.js → chunk-FT3ZYWET.js} +14 -3
- package/dist/{chunk-ND76YJCN.js → chunk-FUPF2UYQ.js} +35 -11
- package/dist/{chunk-6NFYEQDX.js → chunk-FY5MSZAP.js} +15 -3
- package/dist/{chunk-IEWG6J7C.js → chunk-GCYTI3DE.js} +40 -31
- package/dist/{chunk-GNSFLJAA.js → chunk-GJFAMOGK.js} +3 -3
- package/dist/{chunk-VNSXLA6G.js → chunk-H7KENAZO.js} +16 -12
- package/dist/{chunk-KFNWFNAA.js → chunk-HBPDFCQY.js} +3 -3
- package/dist/{chunk-467TVMQL.js → chunk-HHKO6SKY.js} +2 -2
- package/dist/{chunk-6K2M4VSR.js → chunk-HQQNCY7W.js} +21 -8
- package/dist/{chunk-ZJ3LS7DW.js → chunk-HWX6ZHF3.js} +2 -2
- package/dist/{chunk-Q62FEYK3.js → chunk-ICPJPQ5C.js} +2 -2
- package/dist/{chunk-MVN25IF6.js → chunk-IM6PDDCE.js} +4 -4
- package/dist/{chunk-65WJYYKJ.js → chunk-INE5YJBZ.js} +11 -6
- package/dist/{chunk-EDA6C7MV.js → chunk-J6QROYDA.js} +13 -9
- package/dist/{chunk-3ODS2VGL.js → chunk-J7KJR3R6.js} +116 -96
- package/dist/{chunk-JEUJOX5X.js → chunk-J7TLCB2Q.js} +2 -2
- package/dist/{chunk-GD6L76WD.js → chunk-JRCOYRRH.js} +19 -7
- package/dist/{chunk-G3PF3S7P.js → chunk-K2I2XOZD.js} +9 -9
- package/dist/{chunk-5PDTIBLV.js → chunk-K4EOKJA6.js} +17 -7
- package/dist/{chunk-5SVOCD5W.js → chunk-KGVZ5VGH.js} +10 -7
- package/dist/{chunk-QHI5XVUJ.js → chunk-LBMS4AW6.js} +20 -19
- package/dist/{chunk-FTBZV6NE.js → chunk-LGT3PZCJ.js} +22 -14
- package/dist/{chunk-E7Y3SYKW.js → chunk-LTXOLDUZ.js} +9 -6
- package/dist/{chunk-GTWKD3QT.js → chunk-MUE65OTD.js} +5 -4
- package/dist/{chunk-TRM2J7ZN.js → chunk-MUVJ57EP.js} +10 -14
- package/dist/{chunk-RBHWPDBB.js → chunk-NNS4E7CW.js} +6 -4
- package/dist/{chunk-NNAAJVBU.js → chunk-NR5HCAUD.js} +1 -1
- package/dist/{chunk-NEQ6GJXB.js → chunk-ONU3U4GL.js} +2 -2
- package/dist/{chunk-XEQXCIBC.js → chunk-PRI2OD4E.js} +10 -3
- package/dist/{chunk-U6EQI3U6.js → chunk-QBZYACOG.js} +3 -3
- package/dist/{chunk-5PZT4DQG.js → chunk-QGATPIPX.js} +15 -9
- package/dist/{chunk-YGJZWZTY.js → chunk-QHXCAEMX.js} +7 -4
- package/dist/{chunk-RLFVAKEO.js → chunk-QJMKPUYK.js} +15 -5
- package/dist/{chunk-Z6XJQ6KO.js → chunk-QVENJMNX.js} +2 -2
- package/dist/{chunk-GROLTAWZ.js → chunk-QZX5S6R3.js} +2 -2
- package/dist/{chunk-TMACGPW5.js → chunk-R3YSD62R.js} +3 -3
- package/dist/{chunk-332ZR4QU.js → chunk-REJAIQ5S.js} +4 -4
- package/dist/{chunk-5F5ELR3V.js → chunk-ROOE4R4Y.js} +8 -5
- package/dist/{chunk-XHVV4NVW.js → chunk-RT7ACF77.js} +12 -2
- package/dist/{chunk-GGHRAITI.js → chunk-SMRFPVLQ.js} +3 -3
- package/dist/{chunk-JSSX2SX4.js → chunk-SWSIKFEB.js} +2 -2
- package/dist/{chunk-DY7XLRHK.js → chunk-T4A4TSTJ.js} +14 -15
- package/dist/{chunk-VB4UJ3H2.js → chunk-TJVLKNGR.js} +20 -10
- package/dist/{chunk-FC5I2KXV.js → chunk-TPFKKXCB.js} +3 -3
- package/dist/{chunk-AXW3M6OQ.js → chunk-TTIM6YTT.js} +28 -18
- package/dist/{chunk-WJ7RW65H.js → chunk-UBLHQTLV.js} +13 -12
- package/dist/{chunk-AE7II3E3.js → chunk-UNURMIQO.js} +2 -2
- package/dist/{chunk-PZDBOK2Q.js → chunk-VILVLS7P.js} +5 -3
- package/dist/{chunk-3YSQZ75W.js → chunk-VQOCMUWI.js} +37 -26
- package/dist/{chunk-P6T66CCZ.js → chunk-WBM7ZNDI.js} +3 -2
- package/dist/{chunk-4QZ43D7I.js → chunk-XD6ZYURY.js} +9 -4
- package/dist/{chunk-3JLKYGBQ.js → chunk-YIBAWQGJ.js} +6 -3
- package/dist/{chunk-ZO27FGJS.js → chunk-YTMTPUH4.js} +7 -4
- package/dist/{chunk-6BQFET7X.js → chunk-Z5QVYKR7.js} +11 -3
- package/dist/{chunk-KJGG2JKQ.js → chunk-ZEF5M5MB.js} +52 -45
- package/dist/{chunk-32XPAAET.js → chunk-ZJV7GYR4.js} +3 -3
- package/dist/{chunk-2ILHQOL3.js → chunk-ZNWAYU6N.js} +11 -7
- package/dist/cli.cjs +146 -145
- package/dist/clock.js +16 -22
- package/dist/dgmo-router-X7ZGAPIE.js +86 -0
- package/dist/{dimensions-F7B5C4BJ.js → dimensions-45H6JQEY.js} +6 -6
- package/dist/editor.js +4 -2
- package/dist/element.js +126 -124
- package/dist/element.mjs +952 -492
- package/dist/{flowchart-parser-MY53QWTZ.js → flowchart-parser-UKELHBSB.js} +4 -4
- package/dist/{flowchart-renderer-AQSMEMYF.js → flowchart-renderer-MNCDS7MV.js} +7 -7
- package/dist/highlight.d.ts +21 -1
- package/dist/highlight.js +93 -3
- package/dist/index.js +51 -51
- package/dist/{layout-JDJAEQ3P.js → layout-2L3WMRYU.js} +4 -4
- package/dist/{layout-MUPRALE5.js → layout-A4XWNVID.js} +4 -4
- package/dist/{layout-46366KBT.js → layout-A5UHRWVH.js} +3 -3
- package/dist/{layout-HYZPWAK5.js → layout-GM4UGR7B.js} +4 -3
- package/dist/{layout-CBCLPMSG.js → layout-GQQJXNYH.js} +4 -4
- package/dist/{layout-YVTNOTN4.js → layout-IIE2S5FK.js} +3 -3
- package/dist/{layout-4DIUOX2T.js → layout-VMCRX66I.js} +4 -4
- package/dist/{palettes-PRJ2RI6D.js → palettes-UDLZ2SA4.js} +2 -2
- package/dist/{parser-BKI42XBQ.js → parser-2ECN6JA2.js} +4 -4
- package/dist/{parser-C3D7MVXY.js → parser-4WTIHM5J.js} +3 -3
- package/dist/{parser-5A2UWU6B.js → parser-5H2BTSJQ.js} +3 -3
- package/dist/{parser-OK2ILHRT.js → parser-75KVXUNS.js} +4 -4
- package/dist/{parser-SRVFR7PM.js → parser-774AC53T.js} +4 -4
- package/dist/{parser-BEPSWJAD.js → parser-BE4YCSRU.js} +3 -3
- package/dist/{parser-B77S5SZM.js → parser-CNGUQUQI.js} +3 -3
- package/dist/{parser-2Q2T4C3B.js → parser-DEUUSQIN.js} +7 -7
- package/dist/{parser-5PDYJGWA.js → parser-DQAFLUJB.js} +4 -4
- package/dist/{parser-KKTJ6M3Y.js → parser-EYCKNKQA.js} +5 -5
- package/dist/{parser-UKFFZCFJ.js → parser-FXISIU6A.js} +4 -4
- package/dist/{parser-UMWPLORP.js → parser-GTB4XC7P.js} +5 -5
- package/dist/{parser-Z4TZV2CB.js → parser-GVEPAUSD.js} +4 -4
- package/dist/{parser-AIMHGJRR.js → parser-HSQGTY4G.js} +4 -4
- package/dist/{parser-OUTPNJWC.js → parser-HVKRINUS.js} +3 -3
- package/dist/{parser-JA7JQ7NF.js → parser-J5MIEYO4.js} +5 -5
- package/dist/parser-KMZIXLDZ.js +13 -0
- package/dist/{parser-CDG7CHV5.js → parser-LJHXWSXU.js} +3 -3
- package/dist/{parser-PORDUX5E.js → parser-PT3W72G5.js} +4 -4
- package/dist/{parser-CZOJ7XQ6.js → parser-SBJQDPHL.js} +4 -4
- package/dist/{parser-I6GGFKOQ.js → parser-SUWWWCMX.js} +3 -3
- package/dist/{parser-AZJ25OKK.js → parser-SXDRNZOA.js} +4 -4
- package/dist/parser-UMILOW3M.js +14 -0
- package/dist/{parser-GKLZKEIK.js → parser-UP3AZ367.js} +4 -4
- package/dist/{parser-57ILIFZ2.js → parser-WHPRV3X5.js} +5 -5
- package/dist/{parser-H6ABKHZZ.js → parser-WX3UODSJ.js} +4 -4
- package/dist/{parser-FQ6GZFMR.js → parser-XCIEN3KN.js} +4 -4
- package/dist/{parser-E2RL6JYF.js → parser-XIRTUMVN.js} +5 -5
- package/dist/{parser-3A42DZ72.js → parser-YKCGIG45.js} +3 -3
- package/dist/{parser-EH5VE7ZN.js → parser-YKYMQG3B.js} +4 -4
- package/dist/{parser-6ZKABF5S.js → parser-ZGM2OJ6Y.js} +5 -5
- package/dist/{parser-4RFTKAQX.js → parser-ZL5QUFVH.js} +4 -4
- package/dist/pert.d.ts +2 -2
- package/dist/{renderer-RYR3TJ46.js → renderer-3F7OS2AX.js} +10 -10
- package/dist/{renderer-TGTUABCI.js → renderer-4QB4K7Q3.js} +6 -6
- package/dist/{renderer-GHPZMFU2.js → renderer-5DAKMIU2.js} +3 -3
- package/dist/{renderer-3K3IB7D5.js → renderer-5H4SY7YY.js} +6 -6
- package/dist/{renderer-QIWVHWZO.js → renderer-5PIQPFOX.js} +4 -3
- package/dist/{renderer-NKJ24TEA.js → renderer-6MU37QF5.js} +6 -6
- package/dist/{renderer-QXPP4TA2.js → renderer-AQVMWJ4M.js} +9 -9
- package/dist/{renderer-2AUFT3E2.js → renderer-BDDW6K7N.js} +6 -6
- package/dist/{renderer-OYO67VZK.js → renderer-BNB3VIDY.js} +7 -7
- package/dist/{renderer-QXGN5H3A.js → renderer-CQY6ATOS.js} +5 -5
- package/dist/{renderer-CO2DW7S7.js → renderer-CVW75CXL.js} +9 -9
- package/dist/{renderer-KQB7UGDS.js → renderer-DT4XRFEP.js} +4 -3
- package/dist/{renderer-GQIESYEM.js → renderer-ERHBSTQT.js} +6 -6
- package/dist/{renderer-UV6MI64M.js → renderer-HSHHVYWF.js} +4 -3
- package/dist/{renderer-ARMJBP6C.js → renderer-IDPVUFNB.js} +8 -8
- package/dist/{renderer-QRWACQRI.js → renderer-ILX6BGKR.js} +6 -6
- package/dist/{renderer-F7U3MFCV.js → renderer-JP663HKG.js} +7 -7
- package/dist/{renderer-RGIYOTKJ.js → renderer-KNFTTOBL.js} +8 -8
- package/dist/{renderer-3YNIWF5I.js → renderer-MVUZBESR.js} +5 -5
- package/dist/{renderer-HYGHO4SJ.js → renderer-N4EBR2FV.js} +8 -8
- package/dist/{renderer-3YPZHMOU.js → renderer-NHO46CT2.js} +3 -3
- package/dist/{renderer-SRKDNDFB.js → renderer-NO2QJ5LZ.js} +7 -7
- package/dist/{renderer-2HTNBIF2.js → renderer-OGFV5RXX.js} +8 -8
- package/dist/{renderer-HCKJDFXD.js → renderer-PDLESJMS.js} +9 -9
- package/dist/{renderer-66MERVQ2.js → renderer-T4MTNINC.js} +6 -6
- package/dist/{renderer-RHT4MHFU.js → renderer-TOUGFGTM.js} +7 -7
- package/dist/{renderer-EDJ2O4S5.js → renderer-U3KPD43Y.js} +8 -8
- package/dist/{renderer-4WR6WMVF.js → renderer-X334IJU2.js} +6 -6
- package/dist/{renderer-JC3RDUT7.js → renderer-Y5OAMOCR.js} +6 -6
- package/dist/{renderer-GD2COXVL.js → renderer-YONAKAJU.js} +4 -4
- package/dist/{renderer-TXJFKPOG.js → renderer-YWMI6Y2U.js} +8 -8
- package/dist/{renderer-6RKQPNJI.js → renderer-ZWIH4WDW.js} +7 -7
- package/dist/{renderer-radial-FWABAZHB.js → renderer-radial-7CGZMVMS.js} +7 -7
- package/dist/{state-parser-6T6CNMPX.js → state-parser-BATWAID2.js} +4 -4
- package/dist/{state-renderer-AWZ3ECAX.js → state-renderer-3FKZJ3LP.js} +7 -7
- package/docs/ai-integration.md +15 -19
- package/docs/language-reference.md +13 -11
- package/package.json +1 -1
- package/dist/dgmo-router-Y2VEX46B.js +0 -86
- package/dist/parser-6BJEXUFX.js +0 -13
- package/dist/parser-OK22AC6Y.js +0 -14
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
} from "./chunk-YYVTBZZC.js";
|
|
8
8
|
import {
|
|
9
9
|
renderIntegratedLegend
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-AUIM2NVH.js";
|
|
11
11
|
import {
|
|
12
12
|
controlsGroupCapsuleWidth,
|
|
13
13
|
getMaxLegendReservedHeight
|
|
@@ -45,12 +45,12 @@ import {
|
|
|
45
45
|
getSeriesColors,
|
|
46
46
|
mix,
|
|
47
47
|
shapeFill
|
|
48
|
-
} from "./chunk-
|
|
48
|
+
} from "./chunk-WBM7ZNDI.js";
|
|
49
49
|
import {
|
|
50
50
|
resolveActiveTagGroup,
|
|
51
51
|
resolveTagColor,
|
|
52
52
|
tagAttrKey
|
|
53
|
-
} from "./chunk-
|
|
53
|
+
} from "./chunk-HHKO6SKY.js";
|
|
54
54
|
import {
|
|
55
55
|
normalizeName
|
|
56
56
|
} from "./chunk-NOTA6TEI.js";
|
|
@@ -100,18 +100,13 @@ function computeBarLabel(label, x1, barWidth, innerWidth, textColor, onFillColor
|
|
|
100
100
|
var BAND_ACCENT_W = 4;
|
|
101
101
|
var BAND_RADIUS = 4;
|
|
102
102
|
var bandClipCounter = 0;
|
|
103
|
-
function renderLabelBand(svg, y, leftMargin, color, palette, isDark, cssPrefix, dataAttr,
|
|
103
|
+
function renderLabelBand(svg, y, leftMargin, color, palette, isDark, cssPrefix, dataAttr, fillMode, barH = BAR_H, bandRadius = BAND_RADIUS, bandAccentW = BAND_ACCENT_W) {
|
|
104
104
|
const bandX = 5;
|
|
105
105
|
const bandW = leftMargin - 7;
|
|
106
106
|
const bandY = y - barH / 2;
|
|
107
107
|
const clipId = `gantt-band-clip-${bandClipCounter++}`;
|
|
108
108
|
svg.append("clipPath").attr("id", clipId).append("rect").attr("x", bandX).attr("y", bandY).attr("width", bandW).attr("height", barH).attr("rx", bandRadius);
|
|
109
|
-
const tint = svg.append("rect").attr("class", `gantt-${cssPrefix}-band-bg`).attr("x", bandX).attr("y", bandY).attr("width", bandW).attr("height", barH).attr("rx", bandRadius).attr(
|
|
110
|
-
"fill",
|
|
111
|
-
shapeFill(palette, color, isDark, {
|
|
112
|
-
...solid !== void 0 && { solid }
|
|
113
|
-
})
|
|
114
|
-
).style("pointer-events", "none");
|
|
109
|
+
const tint = svg.append("rect").attr("class", `gantt-${cssPrefix}-band-bg`).attr("x", bandX).attr("y", bandY).attr("width", bandW).attr("height", barH).attr("rx", bandRadius).attr("fill", shapeFill(palette, color, isDark, { mode: fillMode })).style("pointer-events", "none");
|
|
115
110
|
const accent = svg.append("rect").attr("class", `gantt-${cssPrefix}-band-accent`).attr("x", bandX).attr("y", bandY).attr("width", bandAccentW).attr("height", barH).attr("fill", color).attr("clip-path", `url(#${clipId})`).style("pointer-events", "none");
|
|
116
111
|
if (dataAttr) {
|
|
117
112
|
tint.attr(dataAttr.key, dataAttr.value);
|
|
@@ -127,7 +122,7 @@ function renderGantt(container, resolved, palette, isDark, options, exportDims)
|
|
|
127
122
|
container.innerHTML = "";
|
|
128
123
|
bandClipCounter = 0;
|
|
129
124
|
if (resolved.tasks.length === 0) return;
|
|
130
|
-
const
|
|
125
|
+
const fillMode = void 0;
|
|
131
126
|
const onClickItem = options?.onClickItem;
|
|
132
127
|
const collapsedGroups = options?.collapsedGroups ?? new Set(resolved.groups.filter((g2) => g2.collapsed).map((g2) => g2.name));
|
|
133
128
|
const onToggleGroup = options?.onToggleGroup;
|
|
@@ -318,7 +313,7 @@ function renderGantt(container, resolved, palette, isDark, options, exportDims)
|
|
|
318
313
|
seriesColors,
|
|
319
314
|
palette
|
|
320
315
|
);
|
|
321
|
-
const fillColor = shapeFill(palette, color, isDark, {
|
|
316
|
+
const fillColor = shapeFill(palette, color, isDark, { mode: fillMode });
|
|
322
317
|
el.select("rect").attr("fill", fillColor).attr("stroke", color);
|
|
323
318
|
});
|
|
324
319
|
}
|
|
@@ -419,7 +414,7 @@ function renderGantt(container, resolved, palette, isDark, options, exportDims)
|
|
|
419
414
|
isDark,
|
|
420
415
|
"lane",
|
|
421
416
|
{ key: "data-lane", value: row.laneName },
|
|
422
|
-
|
|
417
|
+
fillMode,
|
|
423
418
|
sBarH,
|
|
424
419
|
sBandRadius,
|
|
425
420
|
sBandAccentW
|
|
@@ -446,7 +441,9 @@ function renderGantt(container, resolved, palette, isDark, options, exportDims)
|
|
|
446
441
|
toggleIcon + " " + row.laneName + (row.aggregateProgress !== null ? ` ${Math.round(row.aggregateProgress)}%` : "")
|
|
447
442
|
);
|
|
448
443
|
if (laneBarWidth > 0) {
|
|
449
|
-
const barFill = shapeFill(palette, laneColor, isDark, {
|
|
444
|
+
const barFill = shapeFill(palette, laneColor, isDark, {
|
|
445
|
+
mode: fillMode
|
|
446
|
+
});
|
|
450
447
|
const laneBandG = g.append("g").attr("class", "gantt-lane-band-group").attr("data-lane", row.laneName).on("mouseenter", () => {
|
|
451
448
|
highlightLane(g, svg, row.tagKey, row.laneName);
|
|
452
449
|
if (row.laneStartDate && row.laneEndDate) {
|
|
@@ -492,7 +489,7 @@ function renderGantt(container, resolved, palette, isDark, options, exportDims)
|
|
|
492
489
|
isDark,
|
|
493
490
|
"group",
|
|
494
491
|
{ key: "data-group", value: group.name },
|
|
495
|
-
|
|
492
|
+
fillMode,
|
|
496
493
|
sBarH,
|
|
497
494
|
sBandRadius,
|
|
498
495
|
sBandAccentW
|
|
@@ -539,7 +536,10 @@ function renderGantt(container, resolved, palette, isDark, options, exportDims)
|
|
|
539
536
|
resetHighlight(g, svg);
|
|
540
537
|
hideGanttDateIndicators(g);
|
|
541
538
|
});
|
|
542
|
-
summaryG.append("rect").attr("x", gx1).attr("y", yOffset).attr("width", barWidth).attr("height", sBarH).attr("rx", 4).attr(
|
|
539
|
+
summaryG.append("rect").attr("x", gx1).attr("y", yOffset).attr("width", barWidth).attr("height", sBarH).attr("rx", 4).attr(
|
|
540
|
+
"fill",
|
|
541
|
+
shapeFill(palette, groupColor, isDark, { mode: fillMode })
|
|
542
|
+
).attr("stroke", groupColor).attr("stroke-width", 2);
|
|
543
543
|
if (group.progress !== null && group.progress > 0) {
|
|
544
544
|
summaryG.append("rect").attr("x", gx1).attr("y", yOffset).attr("width", barWidth * Math.min(group.progress / 100, 1)).attr("height", sBarH).attr("fill", groupColor).attr("opacity", 0.5);
|
|
545
545
|
}
|
|
@@ -551,7 +551,7 @@ function renderGantt(container, resolved, palette, isDark, options, exportDims)
|
|
|
551
551
|
innerWidth,
|
|
552
552
|
palette.text,
|
|
553
553
|
contrastText(
|
|
554
|
-
shapeFill(palette, groupColor, isDark, {
|
|
554
|
+
shapeFill(palette, groupColor, isDark, { mode: fillMode }),
|
|
555
555
|
palette.textOnFillLight,
|
|
556
556
|
palette.textOnFillDark
|
|
557
557
|
),
|
|
@@ -569,7 +569,9 @@ function renderGantt(container, resolved, palette, isDark, options, exportDims)
|
|
|
569
569
|
});
|
|
570
570
|
} else {
|
|
571
571
|
const groupBarWidth = Math.max(gx2 - gx1, 2);
|
|
572
|
-
const bandFill = shapeFill(palette, groupColor, isDark, {
|
|
572
|
+
const bandFill = shapeFill(palette, groupColor, isDark, {
|
|
573
|
+
mode: fillMode
|
|
574
|
+
});
|
|
573
575
|
const groupBarG = g.append("g").attr("class", "gantt-group-bar").attr("data-group", group.name).attr("data-line-number", String(group.lineNumber)).on("mouseenter", () => {
|
|
574
576
|
highlightGroup(g, svg, group.name);
|
|
575
577
|
showGanttDateIndicators(
|
|
@@ -596,7 +598,7 @@ function renderGantt(container, resolved, palette, isDark, options, exportDims)
|
|
|
596
598
|
innerWidth,
|
|
597
599
|
palette.text,
|
|
598
600
|
contrastText(
|
|
599
|
-
shapeFill(palette, groupColor, isDark, {
|
|
601
|
+
shapeFill(palette, groupColor, isDark, { mode: fillMode }),
|
|
600
602
|
palette.textOnFillLight,
|
|
601
603
|
palette.textOnFillDark
|
|
602
604
|
),
|
|
@@ -676,7 +678,9 @@ function renderGantt(container, resolved, palette, isDark, options, exportDims)
|
|
|
676
678
|
const x1 = xScale(tStart);
|
|
677
679
|
const x2 = xScale(tEnd);
|
|
678
680
|
const barWidth = Math.max(x2 - x1, 2);
|
|
679
|
-
const fillColor = shapeFill(palette, barColor, isDark, {
|
|
681
|
+
const fillColor = shapeFill(palette, barColor, isDark, {
|
|
682
|
+
mode: fillMode
|
|
683
|
+
});
|
|
680
684
|
const taskG = g.append("g").attr("class", "gantt-task").attr("data-line-number", String(task.lineNumber)).attr("data-task-name", task.label).attr("data-task-id", task.id).attr("data-group", topGroup).style("cursor", onClickItem ? "pointer" : "default").on("click", () => {
|
|
681
685
|
if (onClickItem) onClickItem(task.lineNumber);
|
|
682
686
|
}).on("mouseenter", () => {
|
|
@@ -747,7 +751,7 @@ function renderGantt(container, resolved, palette, isDark, options, exportDims)
|
|
|
747
751
|
innerWidth,
|
|
748
752
|
palette.text,
|
|
749
753
|
contrastText(
|
|
750
|
-
shapeFill(palette, barColor, isDark, {
|
|
754
|
+
shapeFill(palette, barColor, isDark, { mode: fillMode }),
|
|
751
755
|
palette.textOnFillLight,
|
|
752
756
|
palette.textOnFillDark
|
|
753
757
|
),
|
|
@@ -2101,4 +2105,4 @@ export {
|
|
|
2101
2105
|
renderGantt,
|
|
2102
2106
|
buildTagLaneRowList
|
|
2103
2107
|
};
|
|
2104
|
-
//# sourceMappingURL=chunk-
|
|
2108
|
+
//# sourceMappingURL=chunk-FHGVORFO.js.map
|
|
@@ -65,7 +65,9 @@ var DIRECTIVES_REGISTRY = [
|
|
|
65
65
|
{ token: "sprint-length", category: "directive", gantt: ["option"] },
|
|
66
66
|
{ token: "sprint-number", category: "directive", gantt: ["option"] },
|
|
67
67
|
{ token: "sprint-start", category: "directive", gantt: ["option"] },
|
|
68
|
-
{ token: "
|
|
68
|
+
{ token: "fill-tint", category: "directive", gantt: ["boolean"] },
|
|
69
|
+
{ token: "fill-solid", category: "directive", gantt: ["boolean"] },
|
|
70
|
+
{ token: "fill-outline", category: "directive", gantt: ["boolean"] },
|
|
69
71
|
// `chart` is a wireframe element keyword (CONTROL); gantt also accepts it as
|
|
70
72
|
// an option. Highlight family is control.
|
|
71
73
|
{ token: "chart", category: "control", gantt: ["option"] },
|
|
@@ -359,4 +361,4 @@ export {
|
|
|
359
361
|
REGISTRY_MODIFIER_TOKENS,
|
|
360
362
|
REGISTRY_COLON_KEY_TOKENS
|
|
361
363
|
};
|
|
362
|
-
//# sourceMappingURL=chunk-
|
|
364
|
+
//# sourceMappingURL=chunk-FQ7HTV52.js.map
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
import {
|
|
8
8
|
VARIANTS,
|
|
9
9
|
allTasks
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-4IHAV6O7.js";
|
|
11
11
|
import {
|
|
12
12
|
TITLE_FONT_SIZE,
|
|
13
13
|
TITLE_FONT_WEIGHT,
|
|
@@ -25,7 +25,10 @@ import {
|
|
|
25
25
|
contrastText,
|
|
26
26
|
mix,
|
|
27
27
|
themeBaseBg
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-WBM7ZNDI.js";
|
|
29
|
+
import {
|
|
30
|
+
fillModeFromOptions
|
|
31
|
+
} from "./chunk-BRENJ2BQ.js";
|
|
29
32
|
|
|
30
33
|
// src/raci/renderer.ts
|
|
31
34
|
import * as d3Selection from "d3-selection";
|
|
@@ -158,7 +161,7 @@ function renderRaci(container, parsed, palette, isDark, handlers, exportDims) {
|
|
|
158
161
|
if (width <= 0 || height <= 0) return;
|
|
159
162
|
const tasksAll = [...allTasks(parsed)];
|
|
160
163
|
if (tasksAll.length === 0 && parsed.phases.length === 0) return;
|
|
161
|
-
const
|
|
164
|
+
const fillMode = fillModeFromOptions(parsed.options);
|
|
162
165
|
const surfaceBg = themeBaseBg(palette, isDark);
|
|
163
166
|
const roleCount = Math.max(1, parsed.roles.length);
|
|
164
167
|
const idealWidth = roleCount * ROLE_COL_MAX + TASK_LABEL_MAX + 2 * H_MARGIN;
|
|
@@ -312,7 +315,7 @@ function renderRaci(container, parsed, palette, isDark, handlers, exportDims) {
|
|
|
312
315
|
legendChipW,
|
|
313
316
|
palette,
|
|
314
317
|
surfaceBg,
|
|
315
|
-
|
|
318
|
+
fillMode,
|
|
316
319
|
onMarkerDragStart,
|
|
317
320
|
sLegendChipGap,
|
|
318
321
|
sLegendHeight,
|
|
@@ -332,7 +335,14 @@ function renderRaci(container, parsed, palette, isDark, handlers, exportDims) {
|
|
|
332
335
|
if (taskIdx < 0) return;
|
|
333
336
|
const yTop = rowYs[i];
|
|
334
337
|
const rh = taskRowContent.get(row.task.id)?.rowHeight ?? sRowHeight;
|
|
335
|
-
|
|
338
|
+
const bandAccent = autoAccent(taskIdx, palette);
|
|
339
|
+
const band = bandsG.append("rect").attr("class", "raci-row-band").attr("data-task-id", row.task.id).attr("x", sHMargin).attr("y", yTop + 2).attr("width", innerWidth).attr("height", rh - 4).attr("rx", 6).attr(
|
|
340
|
+
"fill",
|
|
341
|
+
fillMode === "outline" ? surfaceBg : mix(bandAccent, surfaceBg, 12)
|
|
342
|
+
);
|
|
343
|
+
if (fillMode === "outline") {
|
|
344
|
+
band.attr("stroke", bandAccent).attr("stroke-width", 1);
|
|
345
|
+
}
|
|
336
346
|
});
|
|
337
347
|
}
|
|
338
348
|
const columnsG = svg.append("g").attr("class", "raci-columns");
|
|
@@ -340,14 +350,21 @@ function renderRaci(container, parsed, palette, isDark, handlers, exportDims) {
|
|
|
340
350
|
const cx = roleX(i) + sColumnInset;
|
|
341
351
|
const cw = roleColW - 2 * sColumnInset;
|
|
342
352
|
const roleColor = parsed.roleColors[i] ?? autoAccent(i, palette);
|
|
343
|
-
const
|
|
344
|
-
const
|
|
353
|
+
const outline = fillMode === "outline";
|
|
354
|
+
const bodyFill = outline ? surfaceBg : mix(roleColor, themeBaseBg(palette, isDark), 16);
|
|
355
|
+
const headerFill = outline ? surfaceBg : mix(roleColor, themeBaseBg(palette, isDark), 30);
|
|
345
356
|
const colG = columnsG.append("g").attr("class", "raci-column").attr("data-role-id", roleId);
|
|
346
|
-
colG.append("rect").attr("class", "raci-column-body").attr("x", cx).attr("y", headerY).attr("width", cw).attr("height", colTotalHeight).attr("rx", sColumnRadius).attr("fill", bodyFill);
|
|
347
|
-
|
|
357
|
+
const bodyRect = colG.append("rect").attr("class", "raci-column-body").attr("x", cx).attr("y", headerY).attr("width", cw).attr("height", colTotalHeight).attr("rx", sColumnRadius).attr("fill", bodyFill);
|
|
358
|
+
if (outline) {
|
|
359
|
+
bodyRect.attr("stroke", roleColor).attr("stroke-width", 1);
|
|
360
|
+
}
|
|
361
|
+
const headerPath = colG.append("path").attr("class", "raci-column-header").attr(
|
|
348
362
|
"d",
|
|
349
363
|
topRoundedRectPath(cx, headerY, cw, sHeaderHeight, sColumnRadius)
|
|
350
364
|
).attr("fill", headerFill);
|
|
365
|
+
if (outline) {
|
|
366
|
+
headerPath.attr("stroke", roleColor).attr("stroke-width", 1);
|
|
367
|
+
}
|
|
351
368
|
const cxText = roleX(i) + roleColW / 2;
|
|
352
369
|
colG.append("text").attr("class", "raci-column-label").attr("x", cxText).attr("y", headerY + sHeaderHeight / 2).attr("text-anchor", "middle").attr("dominant-baseline", "central").attr("font-size", sRoleHeaderFont).attr("font-weight", 600).attr("fill", palette.text).text(
|
|
353
370
|
truncateText(
|
|
@@ -400,7 +417,7 @@ function renderRaci(container, parsed, palette, isDark, handlers, exportDims) {
|
|
|
400
417
|
roleColW,
|
|
401
418
|
parsed.variant,
|
|
402
419
|
surfaceBg,
|
|
403
|
-
|
|
420
|
+
fillMode,
|
|
404
421
|
chartCanShowSummaries,
|
|
405
422
|
sPhaseHeight,
|
|
406
423
|
sPhaseFont,
|
|
@@ -419,7 +436,7 @@ function renderRaci(container, parsed, palette, isDark, handlers, exportDims) {
|
|
|
419
436
|
roleColW,
|
|
420
437
|
palette,
|
|
421
438
|
surfaceBg,
|
|
422
|
-
|
|
439
|
+
fillMode,
|
|
423
440
|
taskDiagnostics,
|
|
424
441
|
hasAnyDiagnostic,
|
|
425
442
|
taskRowContent.get(row.task.id),
|
|
@@ -482,7 +499,7 @@ function setupColumnHover(svg) {
|
|
|
482
499
|
svg.on("mouseover", (event) => set(findRole(event.target)));
|
|
483
500
|
svg.on("mouseleave", () => set(null));
|
|
484
501
|
}
|
|
485
|
-
function renderLegend(svg, markers, variant, x, y, mode, chipW, palette, surfaceBg,
|
|
502
|
+
function renderLegend(svg, markers, variant, x, y, mode, chipW, palette, surfaceBg, fillMode, _onMarkerDragStart, sLegendChipGap, sLegendHeight, sNodeRadius, sNodeStrokeWidth, sLegendLetterFont, sLegendLabelFont) {
|
|
486
503
|
if (markers.length === 0) return;
|
|
487
504
|
const labels = MARKER_LABELS[variant];
|
|
488
505
|
const legendG = svg.append("g").attr("class", "raci-legend").attr("aria-label", `${variant.toUpperCase()} marker legend`);
|
|
@@ -492,12 +509,12 @@ function renderLegend(svg, markers, variant, x, y, mode, chipW, palette, surface
|
|
|
492
509
|
const labelText = labels[marker];
|
|
493
510
|
const chipG = legendG.append("g").attr("class", "raci-legend-chip").attr("data-marker", marker).style("cursor", "grab");
|
|
494
511
|
if (mode === "letters") {
|
|
495
|
-
const fill2 = solid ? rawColor : mix(rawColor, surfaceBg, TINT_PCT);
|
|
496
|
-
const stroke2 = solid ? mix(rawColor, surfaceBg, 70) : rawColor;
|
|
512
|
+
const fill2 = fillMode === "solid" ? rawColor : fillMode === "outline" ? surfaceBg : mix(rawColor, surfaceBg, TINT_PCT);
|
|
513
|
+
const stroke2 = fillMode === "solid" ? mix(rawColor, surfaceBg, 70) : rawColor;
|
|
497
514
|
chipG.append("rect").attr("x", cx).attr("y", y).attr("width", chipW).attr("height", sLegendHeight).attr("rx", sNodeRadius).attr("fill", fill2).attr("stroke", stroke2).attr("stroke-width", sNodeStrokeWidth);
|
|
498
515
|
chipG.append("text").attr("x", cx + chipW / 2).attr("y", y + sLegendHeight / 2).attr("text-anchor", "middle").attr("dominant-baseline", "central").attr("font-size", sLegendLetterFont).attr("font-weight", 700).attr(
|
|
499
516
|
"fill",
|
|
500
|
-
solid ? contrastText(
|
|
517
|
+
fillMode === "solid" ? contrastText(
|
|
501
518
|
fill2,
|
|
502
519
|
palette.textOnFillLight,
|
|
503
520
|
palette.textOnFillDark
|
|
@@ -505,16 +522,32 @@ function renderLegend(svg, markers, variant, x, y, mode, chipW, palette, surface
|
|
|
505
522
|
).text(marker);
|
|
506
523
|
return;
|
|
507
524
|
}
|
|
508
|
-
|
|
509
|
-
|
|
525
|
+
let fill;
|
|
526
|
+
if (fillMode === "outline") {
|
|
527
|
+
const gradId = `raci-legend-grad-${marker}`;
|
|
528
|
+
let defs = svg.select("defs");
|
|
529
|
+
if (defs.empty()) defs = svg.append("defs");
|
|
530
|
+
if (defs.select(`#${gradId}`).empty()) {
|
|
531
|
+
const grad = defs.append("linearGradient").attr("id", gradId).attr("x1", "0%").attr("y1", "0%").attr("x2", "0%").attr("y2", "100%");
|
|
532
|
+
grad.append("stop").attr("offset", "0%").attr("stop-color", mix(rawColor, surfaceBg, 38));
|
|
533
|
+
grad.append("stop").attr("offset", "100%").attr("stop-color", mix(rawColor, surfaceBg, 8));
|
|
534
|
+
}
|
|
535
|
+
fill = `url(#${gradId})`;
|
|
536
|
+
} else {
|
|
537
|
+
fill = fillMode === "solid" ? rawColor : mix(rawColor, surfaceBg, TINT_PCT);
|
|
538
|
+
}
|
|
539
|
+
const stroke = fillMode === "outline" ? rawColor : mix(rawColor, surfaceBg, 70);
|
|
510
540
|
chipG.append("rect").attr("x", cx).attr("y", y).attr("width", chipW).attr("height", sLegendHeight).attr("rx", sNodeRadius).attr("fill", fill).attr("stroke", stroke).attr("stroke-width", sNodeStrokeWidth);
|
|
511
541
|
const slabPad = 4;
|
|
512
542
|
const slabW = 24;
|
|
513
|
-
const slabFill = solid ? mix(rawColor, surfaceBg, 70) : mix(rawColor, surfaceBg, 55);
|
|
514
|
-
chipG.append("rect").attr("x", cx + slabPad).attr("y", y + slabPad).attr("width", slabW).attr("height", sLegendHeight - 2 * slabPad).attr("rx", 4).attr("fill", slabFill);
|
|
543
|
+
const slabFill = fillMode === "solid" ? mix(rawColor, surfaceBg, 70) : fillMode === "outline" ? surfaceBg : mix(rawColor, surfaceBg, 55);
|
|
544
|
+
const slabRect = chipG.append("rect").attr("x", cx + slabPad).attr("y", y + slabPad).attr("width", slabW).attr("height", sLegendHeight - 2 * slabPad).attr("rx", 4).attr("fill", slabFill);
|
|
545
|
+
if (fillMode === "outline") {
|
|
546
|
+
slabRect.attr("stroke", rawColor).attr("stroke-width", 1);
|
|
547
|
+
}
|
|
515
548
|
chipG.append("text").attr("x", cx + slabPad + slabW / 2).attr("y", y + sLegendHeight / 2).attr("text-anchor", "middle").attr("dominant-baseline", "central").attr("font-size", sLegendLetterFont).attr("font-weight", 700).attr(
|
|
516
549
|
"fill",
|
|
517
|
-
solid ? contrastText(
|
|
550
|
+
fillMode === "solid" ? contrastText(
|
|
518
551
|
slabFill,
|
|
519
552
|
palette.textOnFillLight,
|
|
520
553
|
palette.textOnFillDark
|
|
@@ -532,10 +565,16 @@ function renderLegend(svg, markers, variant, x, y, mode, chipW, palette, surface
|
|
|
532
565
|
function renderRaciForExport(container, parsed, palette, isDark, exportDims) {
|
|
533
566
|
renderRaci(container, parsed, palette, isDark, {}, exportDims);
|
|
534
567
|
}
|
|
535
|
-
function renderPhaseBar(svg, phase, x, y, width, palette, collapsed, autoColor, roles, roleX, roleColW, variant, surfaceBg,
|
|
568
|
+
function renderPhaseBar(svg, phase, x, y, width, palette, collapsed, autoColor, roles, roleX, roleColW, variant, surfaceBg, fillMode, showSummary, sPhaseHeight, sPhaseFont, sColumnInset, sNodeRadius) {
|
|
536
569
|
const phaseG = svg.append("g").attr("class", "raci-phase").attr("data-section", `phase-${phase.id}`).attr("data-section-toggle", "").attr("data-line-number", String(phase.lineNumber)).attr("data-phase-id", phase.id).attr("data-collapsed", collapsed ? "1" : "0").style("cursor", "pointer");
|
|
537
|
-
const
|
|
538
|
-
phaseG.append("rect").attr("x", x).attr("y", y + 4).attr("width", width).attr("height", sPhaseHeight - 8).attr(
|
|
570
|
+
const phaseColor = phase.color ?? autoColor;
|
|
571
|
+
const phaseRect = phaseG.append("rect").attr("x", x).attr("y", y + 4).attr("width", width).attr("height", sPhaseHeight - 8).attr(
|
|
572
|
+
"fill",
|
|
573
|
+
fillMode === "outline" ? surfaceBg : mix(phaseColor, palette.bg, 30)
|
|
574
|
+
).attr("rx", 4);
|
|
575
|
+
if (fillMode === "outline") {
|
|
576
|
+
phaseRect.attr("stroke", phaseColor).attr("stroke-width", 1.25);
|
|
577
|
+
}
|
|
539
578
|
const chevX = x + 12;
|
|
540
579
|
const chevY = y + sPhaseHeight / 2;
|
|
541
580
|
phaseG.append("text").attr("x", chevX).attr("y", chevY).attr("text-anchor", "middle").attr("dominant-baseline", "central").attr("font-family", FONT_FAMILY).attr("font-size", 9).attr("fill", palette.text).attr("opacity", 0.6).text(collapsed ? "\u25B6" : "\u25BC");
|
|
@@ -568,13 +607,13 @@ function renderPhaseBar(svg, phase, x, y, width, palette, collapsed, autoColor,
|
|
|
568
607
|
ordered.forEach((marker, i) => {
|
|
569
608
|
const cx = startX + i * (sliceW + SLICE_GAP);
|
|
570
609
|
const rawColor = markerColor(marker, palette);
|
|
571
|
-
const fill = solid ? rawColor : mix(rawColor, surfaceBg, TINT_PCT);
|
|
572
|
-
const stroke = solid ? mix(rawColor, surfaceBg, 70) : rawColor;
|
|
610
|
+
const fill = fillMode === "solid" ? rawColor : fillMode === "outline" ? surfaceBg : mix(rawColor, surfaceBg, TINT_PCT);
|
|
611
|
+
const stroke = fillMode === "solid" ? mix(rawColor, surfaceBg, 70) : rawColor;
|
|
573
612
|
const chipG = phaseG.append("g").attr("class", "raci-phase-summary");
|
|
574
613
|
chipG.append("rect").attr("x", cx).attr("y", summaryY).attr("width", sliceW).attr("height", SUMMARY_CHIP_H).attr("rx", sNodeRadius).attr("fill", fill).attr("stroke", stroke).attr("stroke-width", 1.25);
|
|
575
614
|
chipG.append("text").attr("x", cx + sliceW / 2).attr("y", summaryY + SUMMARY_CHIP_H / 2).attr("text-anchor", "middle").attr("dominant-baseline", "central").attr("font-size", SUMMARY_LETTER_FONT).attr("font-weight", 700).attr(
|
|
576
615
|
"fill",
|
|
577
|
-
solid ? contrastText(
|
|
616
|
+
fillMode === "solid" ? contrastText(
|
|
578
617
|
fill,
|
|
579
618
|
palette.textOnFillLight,
|
|
580
619
|
palette.textOnFillDark
|
|
@@ -585,7 +624,7 @@ function renderPhaseBar(svg, phase, x, y, width, palette, collapsed, autoColor,
|
|
|
585
624
|
}
|
|
586
625
|
}
|
|
587
626
|
var SLICE_GAP = 4;
|
|
588
|
-
function renderTaskRow(svg, task, parsed, x, y, labelW, roleX, roleColW, palette, surfaceBg,
|
|
627
|
+
function renderTaskRow(svg, task, parsed, x, y, labelW, roleX, roleColW, palette, surfaceBg, fillMode, taskDiagnostics, _hasAnyDiagnostic, rowContent, onClickLine, _onMarkerDragStart, sLabelFont, sDescFont, sCellPad, sRowHeight, sColumnInset, sNodeRadius, sNodeStrokeWidth, sMarkerFont, sLegendLabelFont, sStackTopGap, sViolationLineHeight) {
|
|
589
628
|
const rowG = svg.append("g").attr("class", "raci-task-row").attr("data-task-id", task.id).attr("data-line-number", String(task.lineNumber));
|
|
590
629
|
const labelX = x + 8;
|
|
591
630
|
const labelMaxW = labelW - 16;
|
|
@@ -664,7 +703,7 @@ function renderTaskRow(svg, task, parsed, x, y, labelW, roleX, roleColW, palette
|
|
|
664
703
|
const variantLabels = MARKER_LABELS[parsed.variant];
|
|
665
704
|
markers.forEach((m, i) => {
|
|
666
705
|
const rawColor = markerColor(m, palette);
|
|
667
|
-
const fill = solid ? rawColor : mix(rawColor, surfaceBg, TINT_PCT);
|
|
706
|
+
const fill = fillMode === "solid" ? rawColor : fillMode === "outline" ? surfaceBg : mix(rawColor, surfaceBg, TINT_PCT);
|
|
668
707
|
const stroke = rawColor;
|
|
669
708
|
const sliceX = cx + i * (sliceW + SLICE_GAP);
|
|
670
709
|
const sliceG = cellG.append("g").attr("class", "raci-marker-slice").attr("data-marker", m).style("cursor", "grab");
|
|
@@ -676,7 +715,7 @@ function renderTaskRow(svg, task, parsed, x, y, labelW, roleX, roleColW, palette
|
|
|
676
715
|
const textFont = showFullLabel ? sLegendLabelFont : sMarkerFont;
|
|
677
716
|
sliceG.append("text").attr("x", sliceX + sliceW / 2).attr("y", cy + ch / 2).attr("text-anchor", "middle").attr("dominant-baseline", "central").attr("font-size", textFont).attr("font-weight", MARKER_FONT_WEIGHT).attr(
|
|
678
717
|
"fill",
|
|
679
|
-
solid ? contrastText(
|
|
718
|
+
fillMode === "solid" ? contrastText(
|
|
680
719
|
fill,
|
|
681
720
|
palette.textOnFillLight,
|
|
682
721
|
palette.textOnFillDark
|
|
@@ -747,4 +786,4 @@ export {
|
|
|
747
786
|
renderRaci,
|
|
748
787
|
renderRaciForExport
|
|
749
788
|
};
|
|
750
|
-
//# sourceMappingURL=chunk-
|
|
789
|
+
//# sourceMappingURL=chunk-FQMUHRVC.js.map
|
|
@@ -6,12 +6,13 @@ import {
|
|
|
6
6
|
} from "./chunk-OQKP2X3D.js";
|
|
7
7
|
import {
|
|
8
8
|
normalizeDate
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-DAOFNU6J.js";
|
|
10
10
|
import {
|
|
11
11
|
extractColor,
|
|
12
|
+
fillModeFromToken,
|
|
12
13
|
measureIndent,
|
|
13
14
|
parseFirstLine
|
|
14
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-BRENJ2BQ.js";
|
|
15
16
|
import {
|
|
16
17
|
makeDgmoError,
|
|
17
18
|
makeFail
|
|
@@ -326,6 +327,16 @@ function parseCountdown(content, palette) {
|
|
|
326
327
|
case "no-visual":
|
|
327
328
|
result.noVisual = true;
|
|
328
329
|
break;
|
|
330
|
+
// ── §1.9 fill family — mutually exclusive bare flags, last one wins;
|
|
331
|
+
// `fill-tint` is the explicit spelling of the default (clears it). ──
|
|
332
|
+
case "fill-tint":
|
|
333
|
+
case "fill-solid":
|
|
334
|
+
case "fill-outline": {
|
|
335
|
+
const fm = fillModeFromToken(key);
|
|
336
|
+
if (fm === "solid" || fm === "outline") result.fillMode = fm;
|
|
337
|
+
else delete result.fillMode;
|
|
338
|
+
break;
|
|
339
|
+
}
|
|
329
340
|
// ── `note` — markdown caption; inline value or indented body block. ──
|
|
330
341
|
case "note":
|
|
331
342
|
inNote = true;
|
|
@@ -534,4 +545,4 @@ export {
|
|
|
534
545
|
targetToMs2 as targetToMs,
|
|
535
546
|
parseCountdown
|
|
536
547
|
};
|
|
537
|
-
//# sourceMappingURL=chunk-
|
|
548
|
+
//# sourceMappingURL=chunk-FT3ZYWET.js.map
|
|
@@ -23,10 +23,11 @@ import {
|
|
|
23
23
|
FONT_FAMILY
|
|
24
24
|
} from "./chunk-6KFWC4CO.js";
|
|
25
25
|
import {
|
|
26
|
+
contrastText,
|
|
26
27
|
getSeriesColors,
|
|
27
28
|
mix,
|
|
28
29
|
themeBaseBg
|
|
29
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-WBM7ZNDI.js";
|
|
30
31
|
import {
|
|
31
32
|
resolveColor
|
|
32
33
|
} from "./chunk-TLVIHFRO.js";
|
|
@@ -103,7 +104,7 @@ var keyOf = (ms) => {
|
|
|
103
104
|
const d = new Date(ms);
|
|
104
105
|
return d.getFullYear() * 1e4 + d.getMonth() * 100 + d.getDate();
|
|
105
106
|
};
|
|
106
|
-
function bandColors(palette, accent, muted, faint) {
|
|
107
|
+
function bandColors(palette, accent, muted, faint, isDark, fillMode) {
|
|
107
108
|
const blue = resolveColor("blue", palette) ?? mix(palette.text, palette.bg, 45);
|
|
108
109
|
const collides = accent.toLowerCase() === blue.toLowerCase();
|
|
109
110
|
const now = collides ? resolveColor("teal", palette) ?? resolveColor("cyan", palette) ?? mix(palette.text, palette.bg, 55) : blue;
|
|
@@ -118,7 +119,11 @@ function bandColors(palette, accent, muted, faint) {
|
|
|
118
119
|
event: accent,
|
|
119
120
|
midSoft: mix(mid, palette.bg, 24),
|
|
120
121
|
inert: mix(palette.text, palette.bg, 7),
|
|
121
|
-
inertBorder: mix(palette.text, palette.bg, 22)
|
|
122
|
+
inertBorder: mix(palette.text, palette.bg, 22),
|
|
123
|
+
fillMode,
|
|
124
|
+
baseBg: themeBaseBg(palette, isDark),
|
|
125
|
+
onLight: palette.textOnFillLight,
|
|
126
|
+
onDark: palette.textOnFillDark
|
|
122
127
|
};
|
|
123
128
|
}
|
|
124
129
|
function roleStyle(C, role) {
|
|
@@ -128,15 +133,26 @@ function roleStyle(C, role) {
|
|
|
128
133
|
case "future":
|
|
129
134
|
return { fill: C.inert, stroke: C.inertBorder, text: C.muted };
|
|
130
135
|
case "today":
|
|
131
|
-
return
|
|
136
|
+
return chipStyle(C, C.now);
|
|
132
137
|
case "event":
|
|
133
|
-
return
|
|
138
|
+
return chipStyle(C, C.event);
|
|
134
139
|
}
|
|
135
140
|
}
|
|
141
|
+
function chipStyle(C, color) {
|
|
142
|
+
if (C.fillMode === "outline")
|
|
143
|
+
return { fill: C.baseBg, stroke: color, text: color };
|
|
144
|
+
if (C.fillMode === "solid")
|
|
145
|
+
return {
|
|
146
|
+
fill: color,
|
|
147
|
+
stroke: color,
|
|
148
|
+
text: contrastText(color, C.onLight, C.onDark)
|
|
149
|
+
};
|
|
150
|
+
return { fill: color, stroke: color, text: C.bg };
|
|
151
|
+
}
|
|
136
152
|
function gradStyle(C, frac) {
|
|
137
153
|
const t = Math.max(0, Math.min(1, frac));
|
|
138
154
|
const f = mix(C.event, C.now, Math.round(t * 100));
|
|
139
|
-
return
|
|
155
|
+
return chipStyle(C, f);
|
|
140
156
|
}
|
|
141
157
|
function aText(svg, x, y, size, fill, weight, anchor, txt, extra) {
|
|
142
158
|
const t = svg.append("text").attr("x", x).attr("y", y).attr("text-anchor", anchor).attr("font-size", size).attr("font-weight", weight).attr("fill", fill).attr("font-family", FONT_FAMILY).attr("font-variant-numeric", "tabular-nums").text(txt);
|
|
@@ -658,13 +674,14 @@ function vizToday(svg, g, resolvedMs, C) {
|
|
|
658
674
|
}
|
|
659
675
|
const w = Math.min(120, g.contentW * 0.16);
|
|
660
676
|
const h = g.height * 0.52;
|
|
661
|
-
|
|
677
|
+
const st = roleStyle(C, "event");
|
|
678
|
+
aRect(svg, cx - w / 2, cy - h / 2, w, h, 18, st.fill, st.stroke, 2);
|
|
662
679
|
aText(
|
|
663
680
|
svg,
|
|
664
681
|
cx,
|
|
665
682
|
cy - h * 0.14,
|
|
666
683
|
14,
|
|
667
|
-
|
|
684
|
+
st.text,
|
|
668
685
|
700,
|
|
669
686
|
"middle",
|
|
670
687
|
MON_ABBR[ev.getMonth()].toUpperCase(),
|
|
@@ -675,7 +692,7 @@ function vizToday(svg, g, resolvedMs, C) {
|
|
|
675
692
|
cx,
|
|
676
693
|
cy + h * 0.22,
|
|
677
694
|
Math.min(48, h * 0.4),
|
|
678
|
-
|
|
695
|
+
st.text,
|
|
679
696
|
800,
|
|
680
697
|
"middle",
|
|
681
698
|
String(ev.getDate())
|
|
@@ -1015,7 +1032,14 @@ function renderCountdown(container, parsed, palette, isDark, exportDims) {
|
|
|
1015
1032
|
);
|
|
1016
1033
|
svg.attr("height", bannerH).attr("viewBox", `0 0 ${width} ${bannerH}`);
|
|
1017
1034
|
bgRect.attr("height", bannerH);
|
|
1018
|
-
const bandC = bandColors(
|
|
1035
|
+
const bandC = bandColors(
|
|
1036
|
+
palette,
|
|
1037
|
+
accent,
|
|
1038
|
+
muted,
|
|
1039
|
+
faint,
|
|
1040
|
+
isDark,
|
|
1041
|
+
parsed.fillMode
|
|
1042
|
+
);
|
|
1019
1043
|
if (hasBand && resolved !== null) {
|
|
1020
1044
|
drawBand(
|
|
1021
1045
|
svg,
|
|
@@ -1063,4 +1087,4 @@ export {
|
|
|
1063
1087
|
renderCountdown,
|
|
1064
1088
|
renderCountdownForExport
|
|
1065
1089
|
};
|
|
1066
|
-
//# sourceMappingURL=chunk-
|
|
1090
|
+
//# sourceMappingURL=chunk-FUPF2UYQ.js.map
|
|
@@ -5,8 +5,9 @@ import {
|
|
|
5
5
|
} from "./chunk-APKUAJ2L.js";
|
|
6
6
|
import {
|
|
7
7
|
extractColor,
|
|
8
|
+
fillModeFromToken,
|
|
8
9
|
parseFirstLine
|
|
9
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-BRENJ2BQ.js";
|
|
10
11
|
import {
|
|
11
12
|
makeDgmoError,
|
|
12
13
|
makeFail
|
|
@@ -330,7 +331,10 @@ var DIRECTIVES = /* @__PURE__ */ new Set([
|
|
|
330
331
|
"time-24",
|
|
331
332
|
"no-title",
|
|
332
333
|
"direction",
|
|
333
|
-
"color-by"
|
|
334
|
+
"color-by",
|
|
335
|
+
"fill-tint",
|
|
336
|
+
"fill-solid",
|
|
337
|
+
"fill-outline"
|
|
334
338
|
]);
|
|
335
339
|
var WEEKDAY_ABBR = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
|
|
336
340
|
function weekdayIndex(token) {
|
|
@@ -495,6 +499,14 @@ function parseClock(content, palette) {
|
|
|
495
499
|
case "no-title":
|
|
496
500
|
result.noTitle = true;
|
|
497
501
|
break;
|
|
502
|
+
case "fill-tint":
|
|
503
|
+
case "fill-solid":
|
|
504
|
+
case "fill-outline": {
|
|
505
|
+
const fm = fillModeFromToken(key);
|
|
506
|
+
if (fm === "solid" || fm === "outline") result.fillMode = fm;
|
|
507
|
+
else delete result.fillMode;
|
|
508
|
+
break;
|
|
509
|
+
}
|
|
498
510
|
case "color-by": {
|
|
499
511
|
const v = rest.trim().toLowerCase();
|
|
500
512
|
const modes = ["place", "work", "daylight", "time", "none"];
|
|
@@ -645,4 +657,4 @@ export {
|
|
|
645
657
|
searchZones,
|
|
646
658
|
parseClock
|
|
647
659
|
};
|
|
648
|
-
//# sourceMappingURL=chunk-
|
|
660
|
+
//# sourceMappingURL=chunk-FY5MSZAP.js.map
|