@martinomagnifico/tablechart 1.2.1 → 1.2.3
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/CHANGELOG.md +30 -2
- package/dist/tablechart-additional-types.d.mts +1 -1
- package/dist/tablechart-additional-types.mjs +70 -70
- package/dist/tablechart-core.d.mts +2 -2
- package/dist/tablechart-core.mjs +1 -1
- package/dist/tablechart-shared.d.mts +5 -1
- package/dist/tablechart-shared.mjs +823 -763
- package/dist/tablechart-summary.mjs +10 -10
- package/dist/tablechart.css +1 -1
- package/dist/tablechart.d.mts +1 -1
- package/dist/tablechart.js +1 -1
- package/dist/tablechart.mjs +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// src/js/config.ts
|
|
2
|
-
var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablechart-bar", i = "tablechart-rule", a = "tablechart-line", o = "tablechart-reference", s = "tablechart-quadrant", c = "tablechart-head", l = "tablechart-slice", u = "tablechart-series", d = "tablechart-area", f = "tablechart-name", p = "tablechart-legend", m = "tablechart-point", h = "tablechart-hole", g = "tablechart-centre", _ = "tablechart-break", v = "is-placed", y = "tablechart-sr", b = "is-shown", x = "is-printing", S = "is-at-once", C = "tablechart-queued",
|
|
2
|
+
var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablechart-bar", i = "tablechart-rule", a = "tablechart-line", o = "tablechart-reference", s = "tablechart-quadrant", c = "tablechart-head", l = "tablechart-slice", u = "tablechart-series", d = "tablechart-area", f = "tablechart-name", p = "tablechart-legend", m = "tablechart-point", h = "tablechart-hole", g = "tablechart-centre", _ = "tablechart-break", v = "is-placed", y = "tablechart-sr", b = "is-shown", x = "is-printing", S = "is-at-once", C = "is-built", w = "tablechart-queued", T = "tablechart-axis", E = "tablechart-tick", D = "tablechart-grid", O = 1e3, k = {
|
|
3
3
|
selector: "[data-chart]",
|
|
4
4
|
aspect: .38,
|
|
5
5
|
barfill: .58,
|
|
@@ -27,33 +27,33 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
27
27
|
threshold: .5,
|
|
28
28
|
replay: !1,
|
|
29
29
|
langattribute: "data-i18n"
|
|
30
|
-
},
|
|
30
|
+
}, A = "cubic-bezier(0.3, 0.3, 0.6, 1)", j = (e, t, n = 1) => ({
|
|
31
31
|
start: e,
|
|
32
32
|
span: t,
|
|
33
|
-
easing: e + t >= n - 1e-4 ?
|
|
34
|
-
}),
|
|
35
|
-
let n = document.createElementNS(
|
|
33
|
+
easing: e + t >= n - 1e-4 ? A : "linear"
|
|
34
|
+
}), M = (e, t) => `${e}:${t}`, N = "http://www.w3.org/2000/svg", P = (e) => Math.round(e * 100) / 100, F = (e, t = {}) => {
|
|
35
|
+
let n = document.createElementNS(N, e);
|
|
36
36
|
for (let e in t) {
|
|
37
37
|
let r = t[e];
|
|
38
|
-
n.setAttribute(e, String(typeof r == "number" ?
|
|
38
|
+
n.setAttribute(e, String(typeof r == "number" ? P(r) : r));
|
|
39
39
|
}
|
|
40
40
|
return n;
|
|
41
|
-
},
|
|
41
|
+
}, I = (e, t) => [e, ...t.classes].join(" "), L = (e, t) => {
|
|
42
42
|
let n = document.createElement("span");
|
|
43
43
|
return n.className = e, n.inert = !0, t.appendChild(n), n;
|
|
44
|
-
},
|
|
44
|
+
}, R = (e, t, n, r, i) => {
|
|
45
45
|
e.style.left = `${t / r * 100}%`, e.style.top = `${n / i * 100}%`;
|
|
46
|
-
},
|
|
46
|
+
}, z = 0, B = 0, V = (e) => {
|
|
47
47
|
let t = e.querySelector(":scope > defs");
|
|
48
|
-
return t || (t =
|
|
49
|
-
},
|
|
48
|
+
return t || (t = F("defs"), e.prepend(t)), t;
|
|
49
|
+
}, H = (e) => {
|
|
50
50
|
if (e.tagName === "circle") {
|
|
51
51
|
let [t, n, r] = [
|
|
52
52
|
"cx",
|
|
53
53
|
"cy",
|
|
54
54
|
"r"
|
|
55
55
|
].map((t) => Number(e.getAttribute(t)) || 0);
|
|
56
|
-
return `M${
|
|
56
|
+
return `M${P(t - r)},${P(n)}a${P(r)},${P(r)} 0 1 0 ${P(2 * r)},0a${P(r)},${P(r)} 0 1 0 ${P(-2 * r)},0z`;
|
|
57
57
|
}
|
|
58
58
|
if (e.tagName === "polygon") return `M${(e.getAttribute("points") ?? "").trim().split(/\s+/).join("L")}z`;
|
|
59
59
|
let [t, n, r, i, a, o] = [
|
|
@@ -63,26 +63,26 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
63
63
|
"height",
|
|
64
64
|
"rx",
|
|
65
65
|
"ry"
|
|
66
|
-
].map((t) => Number(e.getAttribute(t)) || 0), s = Math.min(a, r / 2), c = Math.min(o, i / 2), l = (e, t) => s && c ? `a${
|
|
67
|
-
return `M${
|
|
68
|
-
},
|
|
66
|
+
].map((t) => Number(e.getAttribute(t)) || 0), s = Math.min(a, r / 2), c = Math.min(o, i / 2), l = (e, t) => s && c ? `a${P(s)},${P(c)} 0 0 1 ${P(e)},${P(t)}` : "";
|
|
67
|
+
return `M${P(t + s)},${P(n)}h${P(r - 2 * s)}${l(s, c)}v${P(i - 2 * c)}${l(-s, c)}h${P(2 * s - r)}${l(-s, -c)}v${P(2 * c - i)}${l(s, -c)}z`;
|
|
68
|
+
}, U = (e, t, n, r, i) => {
|
|
69
69
|
if (!t.length || !i.length) return;
|
|
70
|
-
let a = `tablechart-clip-${++
|
|
70
|
+
let a = `tablechart-clip-${++B}`, o = F("clipPath", {
|
|
71
71
|
id: a,
|
|
72
72
|
clipPathUnits: "userSpaceOnUse"
|
|
73
73
|
}), s = `M${-n},${-r}h${n * 3}v${r * 3}h${-n * 3}z`;
|
|
74
|
-
o.appendChild(
|
|
75
|
-
d: s + t.map(
|
|
74
|
+
o.appendChild(F("path", {
|
|
75
|
+
d: s + t.map(H).join(""),
|
|
76
76
|
"clip-rule": "evenodd"
|
|
77
|
-
})),
|
|
77
|
+
})), V(e).appendChild(o);
|
|
78
78
|
for (let e of i) e.setAttribute("clip-path", `url(#${a})`);
|
|
79
|
-
},
|
|
79
|
+
}, ee = (e, t, n, r, i, a) => {
|
|
80
80
|
if (!t.length) return;
|
|
81
|
-
let o = `tablechart-cut-${++
|
|
81
|
+
let o = `tablechart-cut-${++z}`, s = F("mask", {
|
|
82
82
|
id: o,
|
|
83
83
|
maskUnits: "userSpaceOnUse"
|
|
84
84
|
});
|
|
85
|
-
s.appendChild(
|
|
85
|
+
s.appendChild(F("rect", {
|
|
86
86
|
x: -n,
|
|
87
87
|
y: -r,
|
|
88
88
|
width: n * 3,
|
|
@@ -90,14 +90,14 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
90
90
|
fill: "white"
|
|
91
91
|
}));
|
|
92
92
|
for (let e of t) e.setAttribute("fill", "black"), s.appendChild(e);
|
|
93
|
-
let c =
|
|
93
|
+
let c = V(e);
|
|
94
94
|
if (c.appendChild(s), i) {
|
|
95
95
|
for (let e of i) e.setAttribute("mask", `url(#${o})`);
|
|
96
96
|
return;
|
|
97
97
|
}
|
|
98
98
|
let l = null;
|
|
99
|
-
for (let t of Array.from(e.childNodes)) t !== c && (a && t instanceof Element && t.matches(a) ? (l = null, e.appendChild(t)) : (l ?? (l = e.appendChild(
|
|
100
|
-
},
|
|
99
|
+
for (let t of Array.from(e.childNodes)) t !== c && (a && t instanceof Element && t.matches(a) ? (l = null, e.appendChild(t)) : (l ?? (l = e.appendChild(F("g", { mask: `url(#${o})` }))), l.appendChild(t)));
|
|
100
|
+
}, te = 0, W = (e) => Array.from(e.querySelectorAll(`.${r}`)).map((e) => {
|
|
101
101
|
let t = e.tagName === "rect" ? [e] : Array.from(e.querySelectorAll("rect")), n = (e, t) => Number(e.getAttribute(t)), r = Math.min(...t.map((e) => n(e, "x"))), i = Math.min(...t.map((e) => n(e, "y"))), a = Math.max(...t.map((e) => n(e, "x") + n(e, "width"))), o = Math.max(...t.map((e) => n(e, "y") + n(e, "height"))), s = ["--start", "--span"].map((t) => e.style.getPropertyValue(t) && `${t}:${e.style.getPropertyValue(t)}`).filter(Boolean).join("; ");
|
|
102
102
|
return {
|
|
103
103
|
row: Number(e.dataset.row),
|
|
@@ -135,28 +135,28 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
135
135
|
[c + 2 * l, t + o],
|
|
136
136
|
[c + i, t - o]
|
|
137
137
|
];
|
|
138
|
-
}, l = (e, t = !1) => e.map(([e, t], n) => `${n === 0 ? "M" : "L"} ${e.toFixed(1)} ${t.toFixed(1)}`).join(" ") + (t ? " Z" : ""), u = `tablechart-break-${++
|
|
138
|
+
}, l = (e, t = !1) => e.map(([e, t], n) => `${n === 0 ? "M" : "L"} ${e.toFixed(1)} ${t.toFixed(1)}`).join(" ") + (t ? " Z" : ""), u = `tablechart-break-${++te}`, d = F("mask", {
|
|
139
139
|
id: u,
|
|
140
140
|
maskUnits: "userSpaceOnUse"
|
|
141
141
|
});
|
|
142
|
-
d.appendChild(
|
|
143
|
-
x: -
|
|
142
|
+
d.appendChild(F("rect", {
|
|
143
|
+
x: -O,
|
|
144
144
|
y: -n.height,
|
|
145
|
-
width:
|
|
145
|
+
width: O * 3,
|
|
146
146
|
height: n.height * 3,
|
|
147
147
|
fill: "white"
|
|
148
148
|
}));
|
|
149
149
|
let f = [], p = i(o);
|
|
150
|
-
for (let e of
|
|
150
|
+
for (let e of W(a)) {
|
|
151
151
|
let t = e.sideways ? n.breakX : p;
|
|
152
152
|
if (t === void 0 || !(e.sideways ? e.x < t && e.x + e.width > t : e.y < p && e.y + e.height > p)) continue;
|
|
153
153
|
let [i, o] = e.sideways ? [c(e, t), c(e, t + n.breakGap)] : [c(e, p - n.breakGap), c(e, p)];
|
|
154
|
-
d.appendChild(
|
|
154
|
+
d.appendChild(F("path", {
|
|
155
155
|
d: l([...i, ...o.slice().reverse()], !0),
|
|
156
156
|
fill: "black"
|
|
157
157
|
})), f.push(i, o);
|
|
158
|
-
let s = [
|
|
159
|
-
for (let e of [i, o]) a.appendChild(
|
|
158
|
+
let s = [M("--after", r[e.row - 1]?.slot ?? 0), e.part].filter(Boolean).join("; ");
|
|
159
|
+
for (let e of [i, o]) a.appendChild(F("path", {
|
|
160
160
|
class: _,
|
|
161
161
|
"data-part": "edge",
|
|
162
162
|
"data-note": n.note,
|
|
@@ -165,22 +165,22 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
165
165
|
}));
|
|
166
166
|
}
|
|
167
167
|
if (!f.length) return;
|
|
168
|
-
let m = Array.from(a.querySelectorAll(`.${_}`)), h =
|
|
168
|
+
let m = Array.from(a.querySelectorAll(`.${_}`)), h = F("g", { mask: `url(#${u})` });
|
|
169
169
|
for (let e of Array.from(a.childNodes)) m.includes(e) || h.appendChild(e);
|
|
170
|
-
let g =
|
|
170
|
+
let g = F("defs");
|
|
171
171
|
g.appendChild(d), a.prepend(g, h);
|
|
172
172
|
}
|
|
173
|
-
},
|
|
173
|
+
}, G = (e) => {
|
|
174
174
|
let t = -Infinity;
|
|
175
175
|
for (let n of e) t = Math.max(t, n);
|
|
176
176
|
return t;
|
|
177
|
-
}, re = (e) => (e.split(/[.,]/)[1] || "").length,
|
|
177
|
+
}, re = (e) => (e.split(/[.,]/)[1] || "").length, K = (e, t) => new Intl.NumberFormat(t || document.documentElement.lang || void 0, {
|
|
178
178
|
minimumFractionDigits: e,
|
|
179
179
|
maximumFractionDigits: e
|
|
180
|
-
}),
|
|
181
|
-
let r =
|
|
180
|
+
}), ie = (e, t, n) => {
|
|
181
|
+
let r = K(t, n).formatToParts(e), i = r[0]?.type === "minusSign" ? r[0].value : "";
|
|
182
182
|
return [i, r.slice(+!!i).map((e) => e.value).join("")];
|
|
183
|
-
},
|
|
183
|
+
}, q = (e) => Number.parseFloat((e.match(/-?[\d.,]+/) || ["NaN"])[0].replace(",", ".")), ae = (e, t) => {
|
|
184
184
|
let n = document.createElement("span");
|
|
185
185
|
if (n.className = "tablechart-badge", n.inert = !0, e.childElementCount > 0) for (let t of Array.from(e.children)) n.appendChild(t.cloneNode(!0));
|
|
186
186
|
else {
|
|
@@ -189,44 +189,44 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
189
189
|
t && n.setAttribute("data-i18n", t);
|
|
190
190
|
}
|
|
191
191
|
return t.appendChild(n), n;
|
|
192
|
-
},
|
|
193
|
-
let o = t?.textContent || "", s =
|
|
192
|
+
}, oe = (t, n, r, i, a = "%") => {
|
|
193
|
+
let o = t?.textContent || "", s = q(o), c = a ? .5 : .5 * 10 ** -re(o.match(/-?[\d.,]+/)?.[0] ?? ""), l = Number.isNaN(s) ? !0 : Math.abs(n - s) <= c + 1e-9, u = {
|
|
194
194
|
label: r,
|
|
195
195
|
computed: n,
|
|
196
196
|
stated: s,
|
|
197
197
|
agrees: l
|
|
198
198
|
};
|
|
199
199
|
i.checks.push(u), l || console.warn(`[${e}] An annotation reads ${s}${a}, but ${r} is ${Number(n.toFixed(2))}${a}. The chart shows your number.`);
|
|
200
|
-
},
|
|
200
|
+
}, se = (e, t) => (t - e) / Math.abs(e) * 100, ce = (e, t) => {
|
|
201
201
|
let n = (t, n) => {
|
|
202
202
|
let r = Number.parseInt(e.getAttribute(t) ?? "", 10);
|
|
203
203
|
return Number.isFinite(r) ? r - 1 : n;
|
|
204
204
|
};
|
|
205
205
|
return [n("data-from", 0), n("data-to", t - 1)];
|
|
206
|
-
},
|
|
207
|
-
create:
|
|
206
|
+
}, le = {
|
|
207
|
+
create: ae,
|
|
208
208
|
draw(t, n, r) {
|
|
209
|
-
let { rows: i, cx: o, y: s, unit: l, labelHeight: u, badgeHeight: d, height: f, svg: p, after: m } = r, [h, g] =
|
|
209
|
+
let { rows: i, cx: o, y: s, unit: l, labelHeight: u, badgeHeight: d, height: f, svg: p, after: m } = r, [h, g] = ce(t, i.length), _ = i[h], v = i[g];
|
|
210
210
|
if (!_ || !v) {
|
|
211
211
|
console.warn(`[${e}] A bracket points at a row that is not there (row ${h + 1} to ${g + 1}, of ${i.length}).`);
|
|
212
212
|
return;
|
|
213
213
|
}
|
|
214
214
|
let y = 7 * l, b = 4 * l, x = o(h), S = o(g), C = Math.min(s(_.value), s(v.value)) - u - b - d * .9, w = (e) => s(e) - u - b, T = `M ${x} ${w(_.value)} L ${x} ${C} L ${S} ${C} L ${S} ${w(v.value) - y}`, E = (w(_.value) - C + Math.abs(S - x) + (w(v.value) - y - C)) / l + 1;
|
|
215
|
-
p.appendChild(
|
|
215
|
+
p.appendChild(F("path", {
|
|
216
216
|
class: a,
|
|
217
217
|
"data-note": r.note,
|
|
218
218
|
d: T,
|
|
219
|
-
style: `--len:${E.toFixed(1)}; ${
|
|
219
|
+
style: `--len:${E.toFixed(1)}; ${M("--after", m)}`
|
|
220
220
|
}));
|
|
221
|
-
let
|
|
222
|
-
p.appendChild(
|
|
221
|
+
let D = w(v.value);
|
|
222
|
+
p.appendChild(F("polygon", {
|
|
223
223
|
class: c,
|
|
224
224
|
"data-note": r.note,
|
|
225
|
-
points: `${S},${
|
|
226
|
-
style:
|
|
227
|
-
})), n && (
|
|
225
|
+
points: `${S},${D} ${S - y * .45},${D - y} ${S + y * .45},${D - y}`,
|
|
226
|
+
style: M("--after", m)
|
|
227
|
+
})), n && (R(n, (x + S) / 2, C, O, f), n.style.setProperty("--after", String(m))), oe(n, se(_.value, v.value), `${_.value} to ${v.value}`, r);
|
|
228
228
|
}
|
|
229
|
-
},
|
|
229
|
+
}, ue = (e, t) => e[0] < t[0] + t[2] && t[0] < e[0] + e[2] && e[1] < t[1] + t[3] && t[1] < e[1] + e[3], de = (e, t) => e[0] >= t[0] && e[1] >= t[1] && e[0] + e[2] <= t[0] + t[2] && e[1] + e[3] <= t[1] + t[3], fe = (e, t, n) => {
|
|
230
230
|
if (e.length > 400) return e.map(() => null);
|
|
231
231
|
let r = 1;
|
|
232
232
|
for (let t of e) for (let [, , e, n] of t) r = Math.max(r, e, n);
|
|
@@ -236,21 +236,21 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
236
236
|
return a;
|
|
237
237
|
}, o = (e) => {
|
|
238
238
|
for (let t of a(e)) i.get(t)?.push(e) ?? i.set(t, [e]);
|
|
239
|
-
}, s = (e) =>
|
|
239
|
+
}, s = (e) => de(e, n) && a(e).every((t) => !i.get(t)?.some((t) => ue(e, t)));
|
|
240
240
|
return t.forEach(o), e.map((e) => {
|
|
241
241
|
let t = e.findIndex(s);
|
|
242
242
|
return t < 0 ? null : (o(e[t]), t);
|
|
243
243
|
});
|
|
244
|
-
},
|
|
244
|
+
}, pe = /* @__PURE__ */ new WeakMap(), me = (e) => {
|
|
245
245
|
let t = [...e].filter((e) => !!e), n = t.map((e) => ({
|
|
246
246
|
width: e.offsetWidth,
|
|
247
247
|
height: e.offsetHeight
|
|
248
248
|
}));
|
|
249
|
-
t.forEach((e, t) =>
|
|
250
|
-
}, J = (e) =>
|
|
249
|
+
t.forEach((e, t) => pe.set(e, n[t]));
|
|
250
|
+
}, J = (e) => pe.get(e) ?? {
|
|
251
251
|
width: e.offsetWidth,
|
|
252
252
|
height: e.offsetHeight
|
|
253
|
-
},
|
|
253
|
+
}, he = 6, ge = (e, t, n) => e.some((e) => J(e).width * n > t - he * n), _e = (e, t, n) => t >= J(e).height * n * 1.6, ve = (e, t, n) => t >= J(e).width * n * 1.5, ye = (e, t, n, r, i = .7) => {
|
|
254
254
|
e.style.setProperty(r, "1");
|
|
255
255
|
let a = 1;
|
|
256
256
|
for (let e of t) {
|
|
@@ -259,16 +259,16 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
259
259
|
}
|
|
260
260
|
let o = a >= i ? a : 0;
|
|
261
261
|
return e.style.setProperty(r, String(o || i)), o;
|
|
262
|
-
},
|
|
262
|
+
}, be = (e, t) => (e.sort((e, t) => e.y - t.y), e.forEach((n, r) => {
|
|
263
263
|
let i = e[r - 1];
|
|
264
264
|
i && n.y < i.y + t && (n.y = i.y + t);
|
|
265
|
-
}), e),
|
|
265
|
+
}), e), xe = {
|
|
266
266
|
outside: [.5, 1],
|
|
267
267
|
below: [.5, 0],
|
|
268
268
|
after: [0, .5],
|
|
269
269
|
before: [1, .5]
|
|
270
|
-
},
|
|
271
|
-
let [a, o] =
|
|
270
|
+
}, Y = (e, t, n, r, i = [.5, .5]) => {
|
|
271
|
+
let [a, o] = xe[e.dataset.place ?? ""] ?? i, { width: s, height: c } = J(e);
|
|
272
272
|
return [
|
|
273
273
|
Number.parseFloat(e.style.left) / 100 * n - s * t * a,
|
|
274
274
|
Number.parseFloat(e.style.top) / 100 * r - c * t * o,
|
|
@@ -278,23 +278,23 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
278
278
|
}, Se = (e, t, n) => {
|
|
279
279
|
for (let r of e) {
|
|
280
280
|
if (r.dataset.place === "none" || !r.style.left) continue;
|
|
281
|
-
let [e] =
|
|
281
|
+
let [e] = xe[r.dataset.place ?? ""] ?? [.5, .5], i = J(r).width * t, a = Number.parseFloat(r.style.left) / 100 * n, o = Math.min(Math.max(a, i * e), n - i * (1 - e));
|
|
282
282
|
o !== a && (r.style.left = `${o / n * 100}%`);
|
|
283
283
|
}
|
|
284
284
|
}, Ce = (e, t, n, r) => {
|
|
285
|
-
let i = e.filter((e) => e.dataset.place !== "none" && !e.hasAttribute("data-left-out")), a =
|
|
285
|
+
let i = e.filter((e) => e.dataset.place !== "none" && !e.hasAttribute("data-left-out")), a = we(i, t, n, r);
|
|
286
286
|
i.forEach((e, t) => {
|
|
287
287
|
t % a && e.setAttribute("data-left-out", "");
|
|
288
288
|
});
|
|
289
|
-
},
|
|
289
|
+
}, we = (e, t, n, r) => {
|
|
290
290
|
if (e.length < 2) return 1;
|
|
291
|
-
let i = e.map((e) =>
|
|
291
|
+
let i = e.map((e) => Y(e, t, n, r)), a = 2 * t, o = (e, t) => e[0] + e[2] + a <= t[0] || t[0] + t[2] + a <= e[0] || e[1] + e[3] <= t[1] || t[1] + t[3] <= e[1], s = 1;
|
|
292
292
|
for (; s < e.length && i.some((e, t) => t >= s && t % s === 0 && !o(i[t - s], e));) s++;
|
|
293
293
|
return s;
|
|
294
|
-
},
|
|
294
|
+
}, Te = {
|
|
295
295
|
create(e, t) {
|
|
296
296
|
if (!e.textContent?.trim()) return null;
|
|
297
|
-
let n =
|
|
297
|
+
let n = ae(e, t);
|
|
298
298
|
return n.dataset.kind = "note", n;
|
|
299
299
|
},
|
|
300
300
|
draw(t, n, r) {
|
|
@@ -309,7 +309,7 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
309
309
|
return;
|
|
310
310
|
}
|
|
311
311
|
let g = a(h), _ = s(0);
|
|
312
|
-
if (u.insertBefore(
|
|
312
|
+
if (u.insertBefore(F("line", {
|
|
313
313
|
class: o,
|
|
314
314
|
"data-kind": "note",
|
|
315
315
|
"data-note": r.note,
|
|
@@ -317,11 +317,11 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
317
317
|
x2: g,
|
|
318
318
|
y1: 0,
|
|
319
319
|
y2: _,
|
|
320
|
-
style:
|
|
320
|
+
style: M("--after", d)
|
|
321
321
|
}), u.querySelector(`:scope > .${m}`)), !n) return;
|
|
322
322
|
let v = J(n).width * l, y = J(n).height * l, b = 4 * l, x = f.flat().flatMap((e) => !e.style.left || e.dataset.place === "none" || e.hasAttribute("data-left-out") ? [] : [{
|
|
323
323
|
label: e,
|
|
324
|
-
box:
|
|
324
|
+
box: Y(e, l, O, c)
|
|
325
325
|
}]), S = [0, y + b / 2].flatMap((e) => [
|
|
326
326
|
[
|
|
327
327
|
g - v / 2,
|
|
@@ -341,15 +341,15 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
341
341
|
v,
|
|
342
342
|
y
|
|
343
343
|
]
|
|
344
|
-
]), [C] =
|
|
344
|
+
]), [C] = fe([S], [...r.taken, ...x.map((e) => e.box)], [
|
|
345
345
|
0,
|
|
346
346
|
0,
|
|
347
|
-
|
|
347
|
+
O,
|
|
348
348
|
c
|
|
349
349
|
]), w = S[C ?? 0];
|
|
350
|
-
if (r.taken.push(w),
|
|
350
|
+
if (r.taken.push(w), R(n, w[0] + v / 2, w[1] + y / 2, O, c), n.style.setProperty("--after", String(d)), C === null) for (let e of x) ue(e.box, w) && e.label.setAttribute("data-left-out", "");
|
|
351
351
|
}
|
|
352
|
-
},
|
|
352
|
+
}, Ee = (e, t, n) => {
|
|
353
353
|
let r = n.reduce((e, t) => e + t, 0);
|
|
354
354
|
if (e === "mean") return r ? t.reduce((e, t, r) => e + t * n[r], 0) / r : null;
|
|
355
355
|
if (e === "median") {
|
|
@@ -362,25 +362,25 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
362
362
|
}
|
|
363
363
|
let i = Number.parseFloat(e);
|
|
364
364
|
return Number.isFinite(i) ? i : null;
|
|
365
|
-
},
|
|
365
|
+
}, De = {
|
|
366
366
|
create(e, t) {
|
|
367
367
|
if (!e.textContent?.trim()) return null;
|
|
368
|
-
let n =
|
|
368
|
+
let n = ae(e, t);
|
|
369
369
|
return n.dataset.kind = "reference", n;
|
|
370
370
|
},
|
|
371
371
|
draw(t, n, r) {
|
|
372
372
|
let { rows: i, cx: a, y: s, x: c, height: l, unit: u, svg: d, after: f } = r, p = i.filter((e) => !e.isTotal && !e.missing), h = t.hasAttribute("data-name"), g = (t.getAttribute(h ? "data-name" : "data-value") ?? "").trim(), _, v, y;
|
|
373
373
|
if (h) {
|
|
374
|
-
let t = p.map((e) =>
|
|
374
|
+
let t = p.map((e) => q(e.label));
|
|
375
375
|
if (r.categories[0]?.parentElement?.dataset.place === "beside" || t.some(Number.isNaN)) {
|
|
376
376
|
console.warn(`[${e}] A reference line among the names needs names that are numbers, under columns or points.`);
|
|
377
377
|
return;
|
|
378
378
|
}
|
|
379
|
-
let n =
|
|
379
|
+
let n = Ee(g, t, p.map((e) => e.value)), o = n === null ? -1 : t.findIndex((e, r) => e <= n && n <= (t[r + 1] ?? e)), [s, c] = [p[o], p[o + 1] ?? p[o]].map((e) => a(i.indexOf(e))), l = n === null || o < 0 || t[o + 1] === void 0 || t[o + 1] === t[o] ? 0 : (n - t[o]) / (t[o + 1] - t[o]);
|
|
380
380
|
y = n, v = o < 0 ? null : s + l * (c - s), _ = !1;
|
|
381
381
|
} else {
|
|
382
382
|
let e = !!r.frame && t.getAttribute("data-axis") === "y", n = r.frame ? r.series.flatMap((e, t) => e.group ? [] : [t])[+!!e] ?? 0 : 0;
|
|
383
|
-
y =
|
|
383
|
+
y = Ee(g, p.map((e) => e.cells[n]?.value ?? e.value), p.map(() => 1)), _ = e || !c, v = y === null ? null : c && !e ? c(y) : s(y);
|
|
384
384
|
}
|
|
385
385
|
if (v === null || y === null) {
|
|
386
386
|
console.warn(`[${e}] A reference line needs a number, "mean" or "median", not "${g}".`);
|
|
@@ -394,10 +394,10 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
394
394
|
] : [
|
|
395
395
|
0,
|
|
396
396
|
0,
|
|
397
|
-
i.length > 0 ? a(i.length - 1) + a(0) :
|
|
397
|
+
i.length > 0 ? a(i.length - 1) + a(0) : O,
|
|
398
398
|
c ? l : s(0)
|
|
399
399
|
];
|
|
400
|
-
if (d.insertBefore(
|
|
400
|
+
if (d.insertBefore(F("line", {
|
|
401
401
|
class: o,
|
|
402
402
|
"data-note": r.note,
|
|
403
403
|
...t.getAttribute("data-line") === "dotted" && { "data-line": "dotted" },
|
|
@@ -412,7 +412,7 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
412
412
|
y1: x,
|
|
413
413
|
y2: C
|
|
414
414
|
},
|
|
415
|
-
style:
|
|
415
|
+
style: M("--after", f)
|
|
416
416
|
}), d.querySelector(`:scope > .${m}`)), n) {
|
|
417
417
|
let e = J(n).width * u, t = J(n).height * u, i = 4 * u, a = _ ? [
|
|
418
418
|
[
|
|
@@ -456,17 +456,17 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
456
456
|
e,
|
|
457
457
|
t
|
|
458
458
|
]
|
|
459
|
-
]), [o] =
|
|
459
|
+
]), [o] = fe([a], r.taken, [
|
|
460
460
|
0,
|
|
461
461
|
0,
|
|
462
|
-
|
|
462
|
+
O,
|
|
463
463
|
l
|
|
464
464
|
]), s = a[o ?? 0];
|
|
465
|
-
r.taken.push(s),
|
|
465
|
+
r.taken.push(s), R(n, s[0] + e / 2, s[1] + t / 2, O, l), n.style.setProperty("--after", String(f)), (g === "mean" || g === "median") && oe(n, y, `the ${g}`, r, "");
|
|
466
466
|
}
|
|
467
467
|
}
|
|
468
|
-
},
|
|
469
|
-
create:
|
|
468
|
+
}, Oe = (e, t, n) => ((t / e) ** (1 / n) - 1) * 100, ke = {
|
|
469
|
+
create: ae,
|
|
470
470
|
draw(e, t, n) {
|
|
471
471
|
let { rows: r, cx: i, y: o, unit: s, labelHeight: l, height: u, svg: d, values: f, after: p } = n, m = r[0], h = r[r.length - 1];
|
|
472
472
|
if (!m || !h) return;
|
|
@@ -475,8 +475,8 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
475
475
|
let n = x === y ? 0 : (i(t) - y) / (x - y), r = b + n * (S - b) - (o(e.value) - g);
|
|
476
476
|
r > C && (C = r);
|
|
477
477
|
}), b -= C, S -= C;
|
|
478
|
-
let w = x - y, T = S - b, E = Math.hypot(w, T) || 1,
|
|
479
|
-
y -=
|
|
478
|
+
let w = x - y, T = S - b, E = Math.hypot(w, T) || 1, D = w / E, k = T / E;
|
|
479
|
+
y -= D * _, b -= k * _, x += D * _, S += k * _;
|
|
480
480
|
let A = Number.parseFloat(e.getAttribute("data-at") || "0.5");
|
|
481
481
|
if (t) {
|
|
482
482
|
let e = y + (x - y) * A, n = b + (S - b) * A, a = J(t).width * s / 2, c = n + J(t).height * s / 2 + 8 * s, u = 0;
|
|
@@ -487,49 +487,49 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
487
487
|
u = Math.max(u, c - d);
|
|
488
488
|
}), b -= u, S -= u;
|
|
489
489
|
}
|
|
490
|
-
let
|
|
491
|
-
d.appendChild(
|
|
490
|
+
let j = x - D * v, N = S - k * v, P = Math.hypot(j - y, N - b) / s + 1;
|
|
491
|
+
d.appendChild(F("line", {
|
|
492
492
|
class: a,
|
|
493
493
|
"data-note": n.note,
|
|
494
494
|
x1: y,
|
|
495
495
|
y1: b,
|
|
496
|
-
x2:
|
|
496
|
+
x2: j,
|
|
497
497
|
y2: N,
|
|
498
|
-
style: `--len:${
|
|
498
|
+
style: `--len:${P.toFixed(1)}; ${M("--after", p)}`
|
|
499
499
|
}));
|
|
500
|
-
let I = -k,
|
|
501
|
-
d.appendChild(
|
|
500
|
+
let I = -k, L = D, z = v * .42;
|
|
501
|
+
d.appendChild(F("polygon", {
|
|
502
502
|
class: c,
|
|
503
503
|
"data-note": n.note,
|
|
504
504
|
points: [
|
|
505
505
|
`${x},${S}`,
|
|
506
|
-
`${
|
|
507
|
-
`${
|
|
506
|
+
`${j + I * z},${N + L * z}`,
|
|
507
|
+
`${j - I * z},${N - L * z}`
|
|
508
508
|
].join(" "),
|
|
509
|
-
style:
|
|
510
|
-
})), t && (
|
|
509
|
+
style: M("--after", p)
|
|
510
|
+
})), t && (R(t, y + (x - y) * A, b + (S - b) * A, O, u), t.style.setProperty("--after", String(p)));
|
|
511
511
|
let B = Number.parseFloat(e.getAttribute("data-years") || "");
|
|
512
|
-
!Number.isNaN(B) && B > 0 &&
|
|
512
|
+
!Number.isNaN(B) && B > 0 && oe(t, Oe(m.value, h.value, B), `${m.value} to ${h.value} over ${B} years`, n);
|
|
513
513
|
}
|
|
514
|
-
},
|
|
514
|
+
}, Ae = (e, t, n, r, i) => {
|
|
515
515
|
if (!r) return e / t * n;
|
|
516
516
|
let { lo: a, hi: o, gap: s, share: c } = r, l = n * c, u = (n - l - i) / (a + (t - o)), d = l / (o - a);
|
|
517
517
|
return e <= a ? e * u : e <= s ? a * u + (e - a) * d : e <= o ? a * u + (e - a) * d + i : a * u + l + i + (e - o) * u;
|
|
518
|
-
},
|
|
518
|
+
}, je = (e, t, n) => {
|
|
519
519
|
let r = .15, i = Math.min(e * .7 / (t + (t - 1) * r), n), a = t * i + (t - 1) * i * r;
|
|
520
520
|
return {
|
|
521
521
|
size: i,
|
|
522
522
|
gap: i * r,
|
|
523
523
|
offset: (e) => -a / 2 + e * i * 1.15
|
|
524
524
|
};
|
|
525
|
-
},
|
|
525
|
+
}, Me = (e, t, n) => {
|
|
526
526
|
let r = e.series[n], i = e.series.some((e) => e.focus) && !r.focus;
|
|
527
527
|
return {
|
|
528
528
|
"data-series": n + 1,
|
|
529
529
|
...i && { "data-muted": "" },
|
|
530
|
-
style: `--n:${n}; --m:${+!!i}; --palette:var(--tablechart-color-${n + 1}); ${
|
|
530
|
+
style: `--n:${n}; --m:${+!!i}; --palette:var(--tablechart-color-${n + 1}); ${M("--i", t.slot)}`
|
|
531
531
|
};
|
|
532
|
-
},
|
|
532
|
+
}, Ne = (e, t, n = !1) => {
|
|
533
533
|
let r = 0, i = 0;
|
|
534
534
|
return Array.from({ length: t }, (t, a) => {
|
|
535
535
|
let o = e.cells[a] ?? e.cells[0], s = o.missing ? 0 : o.value;
|
|
@@ -556,40 +556,40 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
556
556
|
cell: o
|
|
557
557
|
};
|
|
558
558
|
});
|
|
559
|
-
},
|
|
560
|
-
let r =
|
|
559
|
+
}, Pe = (e, t, n = !1) => {
|
|
560
|
+
let r = Ne(e, t, n);
|
|
561
561
|
return {
|
|
562
562
|
top: Math.max(0, ...r.map((e) => e.to)),
|
|
563
563
|
bottom: Math.min(0, ...r.map((e) => e.to))
|
|
564
564
|
};
|
|
565
|
-
},
|
|
566
|
-
let { top: n, bottom: r } =
|
|
565
|
+
}, Fe = (e, t) => {
|
|
566
|
+
let { top: n, bottom: r } = Pe(e, t);
|
|
567
567
|
return n + r;
|
|
568
|
-
},
|
|
568
|
+
}, Ie = (e, t, n) => {
|
|
569
569
|
let r = t.series.some((e) => e.focus);
|
|
570
570
|
e.style.setProperty("--n", String(n)), e.style.setProperty("--m", r && !t.series[n].focus ? "1" : "0"), e.style.setProperty("--palette", `var(--tablechart-color-${n + 1})`);
|
|
571
|
-
},
|
|
571
|
+
}, Le = (e, t) => e.some((n, r) => r !== t && !n.cell.missing && n.to !== n.from && n.from === e[t].to), Re = (e, t, n, i = {}, a = "") => {
|
|
572
572
|
let o = {
|
|
573
|
-
class:
|
|
573
|
+
class: I(r, t),
|
|
574
574
|
"data-kind": "bar",
|
|
575
575
|
"data-row": n + 1,
|
|
576
576
|
...i
|
|
577
|
-
}, s =
|
|
577
|
+
}, s = M("--i", t.slot) + (a ? `; transform-origin: ${a}` : ""), c = F("g", {
|
|
578
578
|
...o,
|
|
579
579
|
"data-stack": "",
|
|
580
580
|
style: s
|
|
581
581
|
});
|
|
582
582
|
return e.svg.appendChild(c), (r, a) => {
|
|
583
583
|
let o = i["data-grow"] === void 0 ? {} : { "data-grow": i["data-grow"] };
|
|
584
|
-
c.appendChild(
|
|
584
|
+
c.appendChild(F("rect", {
|
|
585
585
|
...o,
|
|
586
586
|
...a,
|
|
587
|
-
class:
|
|
587
|
+
class: I("tablechart-piece", t),
|
|
588
588
|
"data-row": n + 1,
|
|
589
|
-
...
|
|
589
|
+
...Me(e, t, r)
|
|
590
590
|
}));
|
|
591
591
|
};
|
|
592
|
-
},
|
|
592
|
+
}, ze = {
|
|
593
593
|
segments: (e) => e.map((e) => ({
|
|
594
594
|
...e,
|
|
595
595
|
from: 0,
|
|
@@ -610,45 +610,45 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
610
610
|
categories: "beside",
|
|
611
611
|
headroom: () => 0,
|
|
612
612
|
draw(e) {
|
|
613
|
-
let { segments: t, height: n, unit: a, svg: o, values: s, categories: c, config: l, barMax: u } = e, d = e.series.length > 1, f = Math.max(
|
|
614
|
-
c[0]?.parentElement?.style.setProperty("--_beside", `${((p - 8 * a) /
|
|
615
|
-
let m =
|
|
613
|
+
let { segments: t, height: n, unit: a, svg: o, values: s, categories: c, config: l, barMax: u } = e, d = e.series.length > 1, f = Math.max(G(c.map((e) => J(e).width * a)), 0), p = Math.min(f + 10 * a, O * .42);
|
|
614
|
+
c[0]?.parentElement?.style.setProperty("--_beside", `${((p - 8 * a) / O * 100).toFixed(2)}%`);
|
|
615
|
+
let m = O - 4 * a, h = e.stacked ? Math.max(G(e.rows.map((t) => Pe(t, e.series.length).top)), 0) || 1 : Math.max(G(e.rows.flatMap((t) => t.cells.slice(0, e.series.length).map((e) => Math.abs(e.value)))), 0) || 1, g = e.stacked ? Math.max(G(e.rows.map((t) => -Pe(t, e.series.length).bottom)), 0) : Math.max(G(e.rows.flatMap((t) => t.cells.slice(0, e.series.length).map((e) => -e.value))), 0), _ = Math.max(h, e.domain?.[1] ?? 0), v = Math.max(g, -(e.domain?.[0] ?? 0)), y = Math.max(_, e.squeeze?.hi ?? 0) + v, b = (t, n) => Ae(Math.abs(t), y, n, e.squeeze, e.breakGap), x = n / t.length, S = (e) => (e + .5) * x, C = Math.min(x * l.barfill, u), w = je(x, e.series.length, u), T = s[0] ?? e.totals[0], E = T ? J(T).height * a * .56 : 0, D = Math.max(((d && !e.stacked ? w.size : C) - E) / 2, 5 * a), k = (e) => J(e).width * a, A = (e) => e.length ? G(e.map(k)) + D + 4 * a : 0, j = (t, n) => (e.rows[n].cells[t] ?? e.rows[n].cells[0]).value, N = e.seriesValues.flatMap((e, t) => e.map((e, n) => ({
|
|
616
616
|
label: e,
|
|
617
|
-
value:
|
|
618
|
-
}))),
|
|
619
|
-
let n =
|
|
617
|
+
value: j(t, n)
|
|
618
|
+
}))), P = (t) => {
|
|
619
|
+
let n = Pe(e.rows[t], e.series.length);
|
|
620
620
|
return n.top === 0 && n.bottom < 0;
|
|
621
|
-
},
|
|
621
|
+
}, L = e.stacked ? A(e.totals.filter((e, t) => !P(t))) : d ? A(N.filter((e) => e.value >= 0).map((e) => e.label)) : 0, z = e.stacked ? A(e.totals.filter((e, t) => P(t))) : d ? A(N.filter((e) => e.value < 0).map((e) => e.label)) : 0, B = (t, n) => e.labels === "inside" && ve(t, n, a);
|
|
622
622
|
if (!d && !e.stacked) for (let e = 0; e < 3; e++) {
|
|
623
|
-
let e = m - p -
|
|
623
|
+
let e = m - p - L - z, n = t.map((e, t) => ({
|
|
624
624
|
seg: e,
|
|
625
625
|
label: s[t]
|
|
626
626
|
})).filter(({ seg: t, label: n }) => !B(n, b(t.value, e))), r = A(n.filter(({ seg: e }) => e.value >= 0).map(({ label: e }) => e)), i = A(n.filter(({ seg: e }) => e.value < 0).map(({ label: e }) => e));
|
|
627
|
-
if (r <=
|
|
628
|
-
|
|
627
|
+
if (r <= L && i <= z) break;
|
|
628
|
+
L = Math.max(L, r), z = Math.max(z, i);
|
|
629
629
|
}
|
|
630
|
-
let V = m - p -
|
|
630
|
+
let V = m - p - L - z, H = p + z + b(v, V), U = (e) => e < 0 ? H - b(e, V) : H + b(e, V);
|
|
631
631
|
if (e.squeeze && (e.breakX = U(e.squeeze.gap)), e.x = U, e.stacked) {
|
|
632
632
|
let t = e.length("--tablechart-stack-gap", "1px") ?? a;
|
|
633
633
|
e.rows.forEach((r, i) => {
|
|
634
|
-
let o =
|
|
634
|
+
let o = Pe(r, e.series.length), s = Re(e, r, i, { "data-grow": "right" }, o.bottom < 0 ? `${H - U(o.bottom)}px center` : ""), l = S(i) - C / 2, u = Ne(r, e.series.length);
|
|
635
635
|
u.forEach(({ from: r, to: o, cell: c }, d) => {
|
|
636
636
|
let f = e.seriesValues[d][i];
|
|
637
637
|
if (f.dataset.place = "none", c.missing || o === r) return;
|
|
638
|
-
let p = Math.min(U(r), U(o)), m = Math.max(U(r), U(o)), h =
|
|
638
|
+
let p = Math.min(U(r), U(o)), m = Math.max(U(r), U(o)), h = Le(u, d) ? Math.min(t, (m - p) / 2) : 0, [g, _] = U(o) > U(r) ? [p, m - h] : [p + h, m];
|
|
639
639
|
s(d, {
|
|
640
640
|
x: g,
|
|
641
641
|
y: l,
|
|
642
642
|
width: Math.max(_ - g, 1),
|
|
643
643
|
height: C,
|
|
644
644
|
...o < r && { "data-grow": "left" }
|
|
645
|
-
}), f.dataset.place = "inside", f.toggleAttribute("data-left-out", !
|
|
645
|
+
}), f.dataset.place = "inside", f.toggleAttribute("data-left-out", !ve(f, m - p, a) || J(f).height * a > C), Ie(f, e, d), R(f, (p + m) / 2, S(i), O, n);
|
|
646
646
|
});
|
|
647
647
|
let d = e.totals[i];
|
|
648
|
-
d && (d.dataset.place =
|
|
648
|
+
d && (d.dataset.place = P(i) ? "before" : "after", R(d, P(i) ? U(o.bottom) - D : U(o.top) + D, S(i), O, n));
|
|
649
649
|
let f = c[i];
|
|
650
|
-
f &&
|
|
651
|
-
}), o.appendChild(
|
|
650
|
+
f && R(f, p - 8 * a, S(i), O, n);
|
|
651
|
+
}), o.appendChild(F("line", {
|
|
652
652
|
class: i,
|
|
653
653
|
x1: H,
|
|
654
654
|
x2: H,
|
|
@@ -658,7 +658,7 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
658
658
|
return;
|
|
659
659
|
}
|
|
660
660
|
if (d) {
|
|
661
|
-
let t = e.seriesValues.flat().filter((e) => e.dataset.missing === void 0), s =
|
|
661
|
+
let t = e.seriesValues.flat().filter((e) => e.dataset.missing === void 0), s = ye(e.plot, t, (e) => ({
|
|
662
662
|
size: J(e).height * a,
|
|
663
663
|
room: w.size + w.gap * .5
|
|
664
664
|
}), "--_fit");
|
|
@@ -670,8 +670,8 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
670
670
|
return;
|
|
671
671
|
}
|
|
672
672
|
let d = U(l.value), f = l.value < 0, p = S(i) + w.offset(c), m = Math.max(Math.abs(d - H), 1);
|
|
673
|
-
l.value !== 0 && o.appendChild(
|
|
674
|
-
class:
|
|
673
|
+
l.value !== 0 && o.appendChild(F("rect", {
|
|
674
|
+
class: I(r, t),
|
|
675
675
|
"data-kind": "bar",
|
|
676
676
|
"data-row": i + 1,
|
|
677
677
|
"data-grow": f ? "left" : "right",
|
|
@@ -679,12 +679,12 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
679
679
|
y: p,
|
|
680
680
|
width: m,
|
|
681
681
|
height: w.size,
|
|
682
|
-
...
|
|
683
|
-
})), u.dataset.place = f ? "before" : "after", u.toggleAttribute("data-left-out", !s),
|
|
682
|
+
...Me(e, t, c)
|
|
683
|
+
})), u.dataset.place = f ? "before" : "after", u.toggleAttribute("data-left-out", !s), R(u, f ? d - D : d + D, p + w.size / 2, O, n);
|
|
684
684
|
});
|
|
685
685
|
let l = c[i];
|
|
686
|
-
l &&
|
|
687
|
-
}), o.appendChild(
|
|
686
|
+
l && R(l, p - 8 * a, S(i), O, n);
|
|
687
|
+
}), o.appendChild(F("line", {
|
|
688
688
|
class: i,
|
|
689
689
|
x1: H,
|
|
690
690
|
x2: H,
|
|
@@ -696,8 +696,8 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
696
696
|
let ee = t.map((e, t) => B(s[t], Math.abs(U(e.value) - H)));
|
|
697
697
|
t.forEach((t, i) => {
|
|
698
698
|
let l = U(t.value), u = S(i), d = t.value < 0, f = Math.abs(l - H), m = Math.max(f, 1);
|
|
699
|
-
t.value !== 0 && o.appendChild(
|
|
700
|
-
class:
|
|
699
|
+
t.value !== 0 && o.appendChild(F("rect", {
|
|
700
|
+
class: I(r, t),
|
|
701
701
|
"data-kind": t.kind,
|
|
702
702
|
"data-row": i + 1,
|
|
703
703
|
"data-grow": d ? "left" : "right",
|
|
@@ -705,13 +705,13 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
705
705
|
y: u - C / 2,
|
|
706
706
|
width: m,
|
|
707
707
|
height: C,
|
|
708
|
-
style:
|
|
708
|
+
style: M("--i", t.slot)
|
|
709
709
|
}));
|
|
710
|
-
let h = s[i], g = Math.max(Math.min(
|
|
711
|
-
h.dataset.place = ee[i] ? "inside" : d ? "before" : "after", h.dataset.kind = t.kind,
|
|
710
|
+
let h = s[i], g = Math.max(Math.min(D, f - k(h) - 6 * a), 6 * a), _ = d ? 1 : -1;
|
|
711
|
+
h.dataset.place = ee[i] ? "inside" : d ? "before" : "after", h.dataset.kind = t.kind, R(h, ee[i] ? e.insideAlign === "center" ? (H + l) / 2 : e.insideAlign === "start" ? H - _ * (g + k(h) / 2) : l + _ * (g + k(h) / 2) : l - _ * D, u, O, n);
|
|
712
712
|
let v = c[i];
|
|
713
|
-
v &&
|
|
714
|
-
}), o.appendChild(
|
|
713
|
+
v && R(v, p - 8 * a, u, O, n);
|
|
714
|
+
}), o.appendChild(F("line", {
|
|
715
715
|
class: i,
|
|
716
716
|
x1: H,
|
|
717
717
|
x2: H,
|
|
@@ -719,7 +719,7 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
719
719
|
y2: n
|
|
720
720
|
}));
|
|
721
721
|
}
|
|
722
|
-
},
|
|
722
|
+
}, Be = {
|
|
723
723
|
segments: (e) => e.map((e) => ({
|
|
724
724
|
...e,
|
|
725
725
|
from: 0,
|
|
@@ -739,35 +739,35 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
739
739
|
if (e.stacked) {
|
|
740
740
|
let t = e.length("--tablechart-stack-gap", "1px") ?? c;
|
|
741
741
|
e.rows.forEach((r, i) => {
|
|
742
|
-
let l =
|
|
742
|
+
let l = Pe(r, e.series.length), u = Re(e, r, i, {}, l.bottom < 0 ? `center ${p - a(l.top)}px` : ""), d = n(i) - o / 2, f = Ne(r, e.series.length);
|
|
743
743
|
f.forEach(({ from: r, to: l, cell: p }, m) => {
|
|
744
744
|
let h = e.seriesValues[m][i];
|
|
745
745
|
if (h.dataset.place = "none", p.missing || l === r) return;
|
|
746
|
-
let g = Math.min(a(l), a(r)), _ = Math.max(a(l), a(r)), v =
|
|
746
|
+
let g = Math.min(a(l), a(r)), _ = Math.max(a(l), a(r)), v = Le(f, m) ? Math.min(t, (_ - g) / 2) : 0, [y, b] = a(l) < a(r) ? [g + v, _] : [g, _ - v];
|
|
747
747
|
u(m, {
|
|
748
748
|
x: d,
|
|
749
749
|
y,
|
|
750
750
|
width: o,
|
|
751
751
|
height: Math.max(b - y, 1),
|
|
752
752
|
...l < r && { "data-grow": "down" }
|
|
753
|
-
}), h.dataset.place = "inside", h.toggleAttribute("data-left-out", !
|
|
753
|
+
}), h.dataset.place = "inside", h.toggleAttribute("data-left-out", !_e(h, _ - g, c) || J(h).width * c > o - 4 * c), Ie(h, e, m), R(h, n(i), (g + _) / 2, O, s);
|
|
754
754
|
});
|
|
755
755
|
let m = e.totals[i];
|
|
756
756
|
if (m) {
|
|
757
757
|
let e = l.top === 0 && l.bottom < 0;
|
|
758
|
-
m.dataset.place = e ? "below" : "outside",
|
|
758
|
+
m.dataset.place = e ? "below" : "outside", R(m, n(i), e ? a(l.bottom) + 4 * c : a(l.top) - 4 * c, O, s);
|
|
759
759
|
}
|
|
760
|
-
}), l.appendChild(
|
|
760
|
+
}), l.appendChild(F("line", {
|
|
761
761
|
class: i,
|
|
762
762
|
x1: 0,
|
|
763
|
-
x2:
|
|
763
|
+
x2: O,
|
|
764
764
|
y1: p,
|
|
765
765
|
y2: p
|
|
766
766
|
}));
|
|
767
767
|
return;
|
|
768
768
|
}
|
|
769
769
|
if (e.own.length > 1) {
|
|
770
|
-
let t =
|
|
770
|
+
let t = je(n(1) - n(0) || n(0) * 2, e.own.length, e.barMax), o = e.own.flatMap((t) => e.seriesValues[t]).filter((e) => e.dataset.missing === void 0), u = ye(e.plot, o, (e) => ({
|
|
771
771
|
size: J(e).width * c,
|
|
772
772
|
room: t.size + t.gap * .5
|
|
773
773
|
}), "--_fit");
|
|
@@ -779,8 +779,8 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
779
779
|
return;
|
|
780
780
|
}
|
|
781
781
|
let _ = a(m.value), v = m.value < 0, y = Math.max(Math.abs(p - _), 1);
|
|
782
|
-
m.value !== 0 && l.appendChild(
|
|
783
|
-
class:
|
|
782
|
+
m.value !== 0 && l.appendChild(F("rect", {
|
|
783
|
+
class: I(r, i),
|
|
784
784
|
"data-kind": "bar",
|
|
785
785
|
"data-row": o + 1,
|
|
786
786
|
...v && { "data-grow": "down" },
|
|
@@ -788,29 +788,29 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
788
788
|
y: v ? p : p - y,
|
|
789
789
|
width: t.size,
|
|
790
790
|
height: y,
|
|
791
|
-
...
|
|
792
|
-
})), h.dataset.place = v ? "below" : "outside", h.toggleAttribute("data-left-out", !u),
|
|
791
|
+
...Me(e, i, d)
|
|
792
|
+
})), h.dataset.place = v ? "below" : "outside", h.toggleAttribute("data-left-out", !u), R(h, g + t.size / 2, v ? _ + 4 * c : _ - 4 * c, O, s);
|
|
793
793
|
});
|
|
794
|
-
}), l.appendChild(
|
|
794
|
+
}), l.appendChild(F("line", {
|
|
795
795
|
class: i,
|
|
796
796
|
x1: 0,
|
|
797
|
-
x2:
|
|
797
|
+
x2: O,
|
|
798
798
|
y1: p,
|
|
799
799
|
y2: p
|
|
800
800
|
}));
|
|
801
801
|
return;
|
|
802
802
|
}
|
|
803
|
-
let m = e.own[0], h = e.own.length < e.series.length, g =
|
|
803
|
+
let m = e.own[0], h = e.own.length < e.series.length, g = ge(u, o, c), _ = t.map((e, t) => d === "inside" && !g && !e.missing && _e(u[t], Math.abs(p - a(e.value)), c)), v = u[0] ? J(u[0]).height * c * .56 : 0, y = Infinity;
|
|
804
804
|
for (let [e, t] of u.entries()) _[e] && (y = Math.min(y, (o - J(t).width * c) / 2));
|
|
805
805
|
t.forEach((t, i) => {
|
|
806
806
|
let d = a(t.value), g = t.value < 0;
|
|
807
807
|
if (t.missing) {
|
|
808
|
-
|
|
808
|
+
R(u[i], n(i), p - 4 * c, O, s), u[i].dataset.place = "outside";
|
|
809
809
|
return;
|
|
810
810
|
}
|
|
811
811
|
let b = Math.max(Math.abs(p - d), 1);
|
|
812
|
-
t.value !== 0 && l.appendChild(
|
|
813
|
-
class:
|
|
812
|
+
t.value !== 0 && l.appendChild(F("rect", {
|
|
813
|
+
class: I(r, t),
|
|
814
814
|
"data-kind": t.kind,
|
|
815
815
|
"data-row": i + 1,
|
|
816
816
|
...g && { "data-grow": "down" },
|
|
@@ -818,20 +818,20 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
818
818
|
y: g ? p : p - b,
|
|
819
819
|
width: o,
|
|
820
820
|
height: b,
|
|
821
|
-
style:
|
|
822
|
-
...h &&
|
|
821
|
+
style: M("--i", t.slot),
|
|
822
|
+
...h && Me(e, t, m)
|
|
823
823
|
}));
|
|
824
824
|
let x = g ? -1 : 1, S = Math.min(y, (Math.abs(p - d) - v) / 2), C = f === "center" ? (d + p) / 2 : f === "start" ? p - x * (S + v / 2) : d + x * (S + v / 2), w = g ? d + 4 * c : d - 4 * c;
|
|
825
|
-
|
|
826
|
-
}), l.appendChild(
|
|
825
|
+
R(u[i], n(i), _[i] ? C : w, O, s), u[i].dataset.place = _[i] ? "inside" : g ? "below" : "outside", h && _[i] && Ie(u[i], e, m);
|
|
826
|
+
}), l.appendChild(F("line", {
|
|
827
827
|
class: i,
|
|
828
828
|
x1: 0,
|
|
829
|
-
x2:
|
|
829
|
+
x2: O,
|
|
830
830
|
y1: p,
|
|
831
831
|
y2: p
|
|
832
832
|
}));
|
|
833
833
|
}
|
|
834
|
-
},
|
|
834
|
+
}, Ve = 0, He = (e) => e.filter((e) => !e.isTotal), Ue = {
|
|
835
835
|
aspect: .66,
|
|
836
836
|
centre: !0,
|
|
837
837
|
headroom: () => 0,
|
|
@@ -842,18 +842,18 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
842
842
|
kind: "bar"
|
|
843
843
|
})),
|
|
844
844
|
draw({ rows: e, height: t, unit: n, labelHeight: r, svg: i, values: a, config: o, centre: s }) {
|
|
845
|
-
let c =
|
|
845
|
+
let c = O / 2, u = t / 2, d = He(e).reduce((e, t) => e + Math.abs(t.value), 0);
|
|
846
846
|
if (!d) return;
|
|
847
|
-
let f = r * 1.2 + 10 * n, p = Math.max(Math.min(
|
|
847
|
+
let f = r * 1.2 + 10 * n, p = Math.max(Math.min(O, t) / 2 - f, 10), m = p * o.ringfill, h = p - m / 2, g = 2 * Math.PI * h, _ = [], v = 0, y = 0, b = 0;
|
|
848
848
|
if (e.forEach((e, o) => {
|
|
849
849
|
let s = a[o];
|
|
850
850
|
if (e.isTotal) {
|
|
851
851
|
s.dataset.place = "none";
|
|
852
852
|
return;
|
|
853
853
|
}
|
|
854
|
-
let f = Math.abs(e.value) / d, x =
|
|
855
|
-
_.push(w), i.appendChild(
|
|
856
|
-
class:
|
|
854
|
+
let f = Math.abs(e.value) / d, x = j(b, f), S = `--share:${f.toFixed(4)}; --start:${x.start.toFixed(4)}; --span:${x.span.toFixed(4)};`, C = f * g, w = v / g * 2 * Math.PI - Math.PI / 2;
|
|
855
|
+
_.push(w), i.appendChild(F("circle", {
|
|
856
|
+
class: I(l, e),
|
|
857
857
|
"data-slice": y + 1,
|
|
858
858
|
"data-row": o + 1,
|
|
859
859
|
cx: c,
|
|
@@ -863,60 +863,60 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
863
863
|
transform: `rotate(-90 ${c} ${u})`,
|
|
864
864
|
"stroke-dasharray": `${C.toFixed(1)} ${(g - C).toFixed(1)}`,
|
|
865
865
|
"stroke-dashoffset": (-v).toFixed(1),
|
|
866
|
-
style: `--n:${y}; --palette:var(--tablechart-color-${y + 1}); --arc:${C.toFixed(1)}; --circ:${g.toFixed(1)}; ${S} --ease:${x.easing}; ${
|
|
866
|
+
style: `--n:${y}; --palette:var(--tablechart-color-${y + 1}); --arc:${C.toFixed(1)}; --circ:${g.toFixed(1)}; ${S} --ease:${x.easing}; ${M("--i", e.slot)}`
|
|
867
867
|
}));
|
|
868
|
-
let T = w + C / g * Math.PI, E = Math.cos(T),
|
|
869
|
-
i.appendChild(
|
|
868
|
+
let T = w + C / g * Math.PI, E = Math.cos(T), D = Math.sin(T);
|
|
869
|
+
i.appendChild(F("line", {
|
|
870
870
|
class: "tablechart-leader",
|
|
871
871
|
x1: c + E * (p + 2 * n),
|
|
872
|
-
y1: u +
|
|
872
|
+
y1: u + D * (p + 2 * n),
|
|
873
873
|
x2: c + E * (p + 7 * n),
|
|
874
|
-
y2: u +
|
|
874
|
+
y2: u + D * (p + 7 * n),
|
|
875
875
|
"data-row": o + 1,
|
|
876
|
-
style: `${S} ${
|
|
876
|
+
style: `${S} ${M("--i", e.slot)}`
|
|
877
877
|
})), s.style.setProperty("--start", x.start.toFixed(4)), s.style.setProperty("--span", x.span.toFixed(4));
|
|
878
|
-
let k = p + 9 * n,
|
|
879
|
-
|
|
878
|
+
let k = p + 9 * n, A = J(s).width * n / 2;
|
|
879
|
+
R(s, c + E * (k + Math.abs(E) * A), u + D * (k + Math.abs(D) * r * .7), O, t), s.dataset.place = "around", v += C, b += f, y += 1;
|
|
880
880
|
}), _.length > 1) {
|
|
881
|
-
let e = h - m / 2 - 1, n = h + m / 2 + 1, r = `tablechart-slices-${++
|
|
881
|
+
let e = h - m / 2 - 1, n = h + m / 2 + 1, r = `tablechart-slices-${++Ve}`, a = F("mask", {
|
|
882
882
|
id: r,
|
|
883
883
|
maskUnits: "userSpaceOnUse"
|
|
884
884
|
});
|
|
885
|
-
a.appendChild(
|
|
885
|
+
a.appendChild(F("rect", {
|
|
886
886
|
x: 0,
|
|
887
887
|
y: 0,
|
|
888
|
-
width:
|
|
888
|
+
width: O,
|
|
889
889
|
height: t,
|
|
890
890
|
fill: "white"
|
|
891
891
|
}));
|
|
892
|
-
for (let t of _) a.appendChild(
|
|
892
|
+
for (let t of _) a.appendChild(F("line", {
|
|
893
893
|
class: "tablechart-divide",
|
|
894
894
|
x1: c + Math.cos(t) * e,
|
|
895
895
|
y1: u + Math.sin(t) * e,
|
|
896
896
|
x2: c + Math.cos(t) * n,
|
|
897
897
|
y2: u + Math.sin(t) * n
|
|
898
898
|
}));
|
|
899
|
-
let o =
|
|
899
|
+
let o = F("g", { mask: `url(#${r})` });
|
|
900
900
|
for (let e of Array.from(i.querySelectorAll(`.${l}`))) o.appendChild(e);
|
|
901
|
-
let s =
|
|
901
|
+
let s = F("defs");
|
|
902
902
|
s.appendChild(a), i.prepend(s, o);
|
|
903
903
|
}
|
|
904
|
-
s &&
|
|
904
|
+
s && R(s, c, u, O, t);
|
|
905
905
|
}
|
|
906
|
-
},
|
|
906
|
+
}, X = [
|
|
907
907
|
"circle",
|
|
908
908
|
"square",
|
|
909
909
|
"diamond"
|
|
910
|
-
],
|
|
911
|
-
let n = e[t]?.marker?.toLowerCase().split(/\s+/) ?? [], r =
|
|
910
|
+
], We = (e, t) => {
|
|
911
|
+
let n = e[t]?.marker?.toLowerCase().split(/\s+/) ?? [], r = X.find((e) => n.includes(e));
|
|
912
912
|
return {
|
|
913
|
-
shape: r ??
|
|
913
|
+
shape: r ?? X[Math.floor(t / 2) % X.length],
|
|
914
914
|
open: n.includes("open") || !n.includes("filled") && !r && t % 2 == 1
|
|
915
915
|
};
|
|
916
|
-
},
|
|
916
|
+
}, Ge = (e, t, n, r, i = {}) => {
|
|
917
917
|
if (e === "square") {
|
|
918
918
|
let e = r * .88;
|
|
919
|
-
return
|
|
919
|
+
return F("rect", {
|
|
920
920
|
x: t - e,
|
|
921
921
|
y: n - e,
|
|
922
922
|
width: e * 2,
|
|
@@ -926,26 +926,26 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
926
926
|
}
|
|
927
927
|
if (e === "diamond") {
|
|
928
928
|
let e = r * 1.2;
|
|
929
|
-
return
|
|
929
|
+
return F("polygon", {
|
|
930
930
|
points: `${t},${n - e} ${t + e},${n} ${t},${n + e} ${t - e},${n}`,
|
|
931
931
|
...i
|
|
932
932
|
});
|
|
933
933
|
}
|
|
934
934
|
if (e === "triangle") {
|
|
935
935
|
let e = r * 1.3;
|
|
936
|
-
return
|
|
936
|
+
return F("polygon", {
|
|
937
937
|
points: `${t},${n - e * .75} ${t + e * .87},${n + e * .75} ${t - e * .87},${n + e * .75}`,
|
|
938
938
|
...i
|
|
939
939
|
});
|
|
940
940
|
}
|
|
941
|
-
return
|
|
941
|
+
return F("circle", {
|
|
942
942
|
cx: t,
|
|
943
943
|
cy: n,
|
|
944
944
|
r,
|
|
945
945
|
...i
|
|
946
946
|
});
|
|
947
947
|
}, Z = (e) => Number(e.toFixed(2));
|
|
948
|
-
function
|
|
948
|
+
function Ke(e, t) {
|
|
949
949
|
let n = e.length;
|
|
950
950
|
if (n < 2) return e.map(() => 0);
|
|
951
951
|
let r = (n) => (t[n + 1] - t[n]) / (e[n + 1] - e[n] || 1), i = Array(n).fill(0);
|
|
@@ -962,24 +962,24 @@ function Ge(e, t) {
|
|
|
962
962
|
};
|
|
963
963
|
return i[0] = a(0, 1, i[1]), i[n - 1] = a(n - 2, n - 1, i[n - 2]), i;
|
|
964
964
|
}
|
|
965
|
-
function
|
|
965
|
+
function qe(e, t, n, r) {
|
|
966
966
|
let i = (t[0] - e[0]) / 3;
|
|
967
967
|
return [[e[0] + i, e[1] + n * i], [t[0] - i, t[1] - r * i]];
|
|
968
968
|
}
|
|
969
|
-
function
|
|
970
|
-
let [i, a] =
|
|
969
|
+
function Je(e, t, n, r) {
|
|
970
|
+
let [i, a] = qe(e, t, n, r), o = ([e, t]) => `${Z(e)},${Z(t)}`;
|
|
971
971
|
return `C${o(i)} ${o(a)} ${o(t)}`;
|
|
972
972
|
}
|
|
973
|
-
function
|
|
973
|
+
function Ye(e, t, n) {
|
|
974
974
|
let r = Array(e).fill(0), i = [], a = () => {
|
|
975
|
-
|
|
975
|
+
Ke(i.map((e) => n(e)[0]), i.map((e) => n(e)[1])).forEach((e, t) => {
|
|
976
976
|
r[i[t]] = e;
|
|
977
977
|
}), i = [];
|
|
978
978
|
};
|
|
979
979
|
for (let n = 0; n < e; n++) t(n) ? a() : i.push(n);
|
|
980
980
|
return a(), r;
|
|
981
981
|
}
|
|
982
|
-
var
|
|
982
|
+
var Xe = (e) => {
|
|
983
983
|
let t = e.length, n = e.reduce((e, t) => e + t.x, 0) / t, r = e.reduce((e, t) => e + t.y, 0) / t, i = e.reduce((e, t) => e + (t.x - n) ** 2, 0), a = i ? e.reduce((e, t) => e + (t.x - n) * (t.y - r), 0) / i : 0, o = (e) => r + a * (e - n), s = t > 2 ? Math.sqrt(e.reduce((e, t) => e + (t.y - o(t.x)) ** 2, 0) / (t - 2)) : 0, c = i ? s / Math.sqrt(i) : 0;
|
|
984
984
|
return {
|
|
985
985
|
at: o,
|
|
@@ -987,7 +987,7 @@ var Ye = (e) => {
|
|
|
987
987
|
t: c ? a / c : a ? Infinity : 0,
|
|
988
988
|
n: t
|
|
989
989
|
};
|
|
990
|
-
},
|
|
990
|
+
}, Ze = [
|
|
991
991
|
12.71,
|
|
992
992
|
4.3,
|
|
993
993
|
3.18,
|
|
@@ -1003,29 +1003,29 @@ var Ye = (e) => {
|
|
|
1003
1003
|
2.16,
|
|
1004
1004
|
2.14,
|
|
1005
1005
|
2.13
|
|
1006
|
-
],
|
|
1006
|
+
], Qe = (e) => Ze[e - 1] ?? (e < 30 ? 2.1 : 2), $e = (e) => {
|
|
1007
1007
|
let t = e.map((e) => e.y), n = Math.min(...t), r = Math.max(...t), i = n < 0 && r > 0, a = r - n || 1;
|
|
1008
1008
|
return {
|
|
1009
1009
|
mean: t.reduce((e, t) => e + t, 0) / t.length,
|
|
1010
1010
|
share: (e, t) => e / (i ? a : Math.abs(t) || a) * 100
|
|
1011
1011
|
};
|
|
1012
|
-
},
|
|
1012
|
+
}, et = (e, t = 5, n = 25) => {
|
|
1013
1013
|
if (e.length < 4) return null;
|
|
1014
|
-
let { mean: r, share: i } =
|
|
1015
|
-
c.length && o(c) && (s =
|
|
1016
|
-
let l = s.at, u = e[0], d = e[e.length - 1], f = i(l(d.x) - l(u.x), r), p = Math.abs(s.t) >=
|
|
1014
|
+
let { mean: r, share: i } = $e(e), a = (t) => e.filter((e) => Math.abs(i(e.y - t(e.x), t(e.x))) > n), o = (t) => t.length <= e.length / 5, s = Xe(e), c = a(s.at);
|
|
1015
|
+
c.length && o(c) && (s = Xe(e.filter((e) => !c.includes(e))), c = a(s.at)), o(c) || (s = Xe(e), c = []);
|
|
1016
|
+
let l = s.at, u = e[0], d = e[e.length - 1], f = i(l(d.x) - l(u.x), r), p = Math.abs(s.t) >= Qe(s.n - 2), m = Math.abs(i(s.spread, r)) < t, h = Math.abs(f) < t ? "flat" : f > 0 ? "up" : "down", g = h === "flat" ? m ? "flat" : "unclear" : p ? h : "unclear";
|
|
1017
1017
|
return {
|
|
1018
1018
|
course: g,
|
|
1019
1019
|
line: l,
|
|
1020
1020
|
outside: g === "unclear" ? [] : c
|
|
1021
1021
|
};
|
|
1022
|
-
},
|
|
1022
|
+
}, tt = (e) => e.map((e) => ({
|
|
1023
1023
|
...e,
|
|
1024
1024
|
from: 0,
|
|
1025
1025
|
to: e.value,
|
|
1026
1026
|
kind: "bar"
|
|
1027
|
-
})),
|
|
1028
|
-
segments:
|
|
1027
|
+
})), nt = (e) => ({
|
|
1028
|
+
segments: tt,
|
|
1029
1029
|
series: !0,
|
|
1030
1030
|
stackable: !0,
|
|
1031
1031
|
running: !0,
|
|
@@ -1035,7 +1035,7 @@ var Ye = (e) => {
|
|
|
1035
1035
|
draw(t) {
|
|
1036
1036
|
let { rows: n, series: r, own: a, seriesValues: o, names: s, cx: c, y: l, height: f, unit: p, labelHeight: g, svg: _, stacked: v } = t, y = a.length < r.length, b = t.shape === "step", x = t.shape === "smooth", S = r.length > 1, C = r.some((e) => e.focus), w = n.length - 1, T = l(0), E = n.length > 1 ? c(1) - c(0) : c(0) * 2;
|
|
1037
1037
|
_.style.setProperty("--_base", `${Z(T)}px`);
|
|
1038
|
-
let
|
|
1038
|
+
let D = (e) => `--rise:${Z(T - e)}px; `, k = (e, t) => n[t]?.cells[e] ?? n[t]?.cells[0], A = (e, t) => !k(e, t) || !!k(e, t)?.missing, j = n.map((e) => v ? Ne(e, r.length, !0) : null), M = (e, t) => j[t]?.[e].to ?? k(e, t)?.value ?? 0, N = (e, t) => j[t]?.[e].from ?? 0, P = (e, t) => [c(t), l(M(e, t))], I = r.map((e, t) => {
|
|
1039
1039
|
if (!S) return {
|
|
1040
1040
|
attrs: {},
|
|
1041
1041
|
ink: ""
|
|
@@ -1048,78 +1048,78 @@ var Ye = (e) => {
|
|
|
1048
1048
|
},
|
|
1049
1049
|
ink: `--n:${t}; --m:${+!!n}; --palette:var(--tablechart-color-${t + 1}); `
|
|
1050
1050
|
};
|
|
1051
|
-
}),
|
|
1052
|
-
t.plot.style.setProperty("--count", String(
|
|
1053
|
-
let z = w > 0 ?
|
|
1051
|
+
}), L = y ? w : Math.min(w, 6);
|
|
1052
|
+
t.plot.style.setProperty("--count", String(L + 1));
|
|
1053
|
+
let z = w > 0 ? L / (b ? n.length : w) : 1, B = (e) => e * z, V = (e) => `--i:${Z(B(e))}`, H = (e) => {
|
|
1054
1054
|
let t = [], r = -1;
|
|
1055
1055
|
return n.forEach((n, i) => {
|
|
1056
1056
|
A(e, i) || (r < 0 && (r = i), (i === w || A(e, i + 1)) && ((b || i > r) && t.push([r, i]), r = -1));
|
|
1057
1057
|
}), t;
|
|
1058
|
-
},
|
|
1058
|
+
}, U = (e, t) => `--i:${Z(B(e) + 1)}; --d:${Z(B(b ? t + 1 : t) - B(e))}`, te = (e, t) => ({
|
|
1059
1059
|
"data-from": e + 1,
|
|
1060
1060
|
"data-to": t + 1,
|
|
1061
1061
|
...b && { "data-flat": "" }
|
|
1062
|
-
}),
|
|
1062
|
+
}), W = x ? r.map((e, t) => Ye(n.length, (e) => A(t, e), (e) => P(t, e))) : [], ne = x && e ? r.map((e, t) => Ye(n.length, (e) => A(t, e), (e) => [c(e), l(N(t, e))])) : [], G = (e, t, n) => {
|
|
1063
1063
|
let r = [];
|
|
1064
1064
|
return e.forEach(([i, a], o) => {
|
|
1065
|
-
b ? (r.push(`H${Z(i + n * E / 2)}`), o < e.length - 1 && r.push(`V${Z(e[o + 1][1])}`)) : o > 0 && r.push(t ?
|
|
1065
|
+
b ? (r.push(`H${Z(i + n * E / 2)}`), o < e.length - 1 && r.push(`V${Z(e[o + 1][1])}`)) : o > 0 && r.push(t ? Je(e[o - 1], [i, a], t[o - 1], t[o]) : `L${Z(i)},${Z(a)}`);
|
|
1066
1066
|
}), r;
|
|
1067
|
-
},
|
|
1068
|
-
let t =
|
|
1067
|
+
}, re = (e, t, r, i) => n.slice(t, r + 1).map((n, r) => [c(t + r), l(i(e, t + r))]), K = (e, t, n, r) => x ? e[t].slice(n, r + 1) : null, ie = (e) => c(e) - (b ? E / 2 : 0), q = (e) => c(e) + (b ? E / 2 : 0), ae = (e) => {
|
|
1068
|
+
let t = F("g", {
|
|
1069
1069
|
class: d,
|
|
1070
1070
|
...I[e].attrs,
|
|
1071
1071
|
...v && { "data-stacked": "" },
|
|
1072
1072
|
style: I[e].ink
|
|
1073
|
-
}), n = H(e), r =
|
|
1073
|
+
}), n = H(e), r = F("g", {
|
|
1074
1074
|
class: "tablechart-area-fill",
|
|
1075
|
-
style: `--rows:${Z(
|
|
1075
|
+
style: `--rows:${Z(L + 1)}; ${n.length ? U(...n[0]) : ""}`
|
|
1076
1076
|
});
|
|
1077
1077
|
t.appendChild(r);
|
|
1078
1078
|
for (let [t, i] of n) {
|
|
1079
|
-
let n =
|
|
1079
|
+
let n = re(e, t, i, M), a = re(e, t, i, N), o = K(ne, e, t, i)?.reverse() ?? null, s = [
|
|
1080
1080
|
`M${Z(ie(t))},${Z(a[0][1])}`,
|
|
1081
1081
|
`L${Z(ie(t))},${Z(n[0][1])}`,
|
|
1082
|
-
...
|
|
1082
|
+
...G(n, K(W, e, t, i), 1),
|
|
1083
1083
|
`L${Z(q(i))},${Z(a[a.length - 1][1])}`,
|
|
1084
|
-
...
|
|
1084
|
+
...G(a.reverse(), o, -1),
|
|
1085
1085
|
"Z"
|
|
1086
1086
|
].join(" ");
|
|
1087
|
-
r.appendChild(
|
|
1087
|
+
r.appendChild(F("path", {
|
|
1088
1088
|
d: s,
|
|
1089
1089
|
...te(t, i),
|
|
1090
|
-
style:
|
|
1090
|
+
style: U(t, i)
|
|
1091
1091
|
}));
|
|
1092
1092
|
}
|
|
1093
1093
|
_.appendChild(t);
|
|
1094
1094
|
}, oe = (e) => {
|
|
1095
1095
|
let t = r[e];
|
|
1096
1096
|
for (let [n, r] of H(e)) {
|
|
1097
|
-
let i =
|
|
1098
|
-
_.appendChild(
|
|
1097
|
+
let i = re(e, n, r, M), a = [`M${Z(ie(n))},${Z(i[0][1])}`, ...G(i, K(W, e, n, r), 1)].join(" ");
|
|
1098
|
+
_.appendChild(F("path", {
|
|
1099
1099
|
class: u,
|
|
1100
1100
|
...I[e].attrs,
|
|
1101
1101
|
d: a,
|
|
1102
1102
|
...t.line && { "data-line": t.line },
|
|
1103
1103
|
...te(n, r),
|
|
1104
|
-
style: `${I[e].ink}${
|
|
1104
|
+
style: `${I[e].ink}${U(n, r)}`
|
|
1105
1105
|
}));
|
|
1106
1106
|
}
|
|
1107
1107
|
}, se = (e) => {
|
|
1108
|
-
let i = a.map((e) => r[e]), o = r.map((e, t) => y ?
|
|
1108
|
+
let i = a.map((e) => r[e]), o = r.map((e, t) => y ? We(i, a.indexOf(t)) : S ? We(r, t) : {
|
|
1109
1109
|
shape: "circle",
|
|
1110
1110
|
open: !1
|
|
1111
1111
|
}), s = (e, t, n) => {
|
|
1112
|
-
let [r, i] =
|
|
1113
|
-
return
|
|
1112
|
+
let [r, i] = P(e, t);
|
|
1113
|
+
return Ge(o[e].shape, r, i, 4 * p, {
|
|
1114
1114
|
...n,
|
|
1115
|
-
style: `${n.style ?? ""}${
|
|
1115
|
+
style: `${n.style ?? ""}${D(i)}${V(t)}`
|
|
1116
1116
|
});
|
|
1117
1117
|
}, c = (t) => n.map((e, t) => t).filter((n) => !A(t, n) && e(t, n)), l = a.flatMap((e) => o[e].open ? c(e).map((t) => s(e, t, {
|
|
1118
1118
|
class: h,
|
|
1119
1119
|
"data-row": t + 1,
|
|
1120
1120
|
...S && { "data-series": e + 1 }
|
|
1121
1121
|
})) : []);
|
|
1122
|
-
_.closest("[data-animate]")?.getAttribute("data-animate") === "grow" ?
|
|
1122
|
+
_.closest("[data-animate]")?.getAttribute("data-animate") === "grow" ? ee(_, l, O, f) : t.lineHoles.push(...l), a.forEach((e) => {
|
|
1123
1123
|
for (let t of c(e)) _.appendChild(s(e, t, {
|
|
1124
1124
|
class: m,
|
|
1125
1125
|
...I[e].attrs,
|
|
@@ -1134,7 +1134,7 @@ var Ye = (e) => {
|
|
|
1134
1134
|
let ce = y ? r.flatMap((e, t) => a.includes(t) ? [] : o[t].flatMap((e) => {
|
|
1135
1135
|
let t = e.dataset.place;
|
|
1136
1136
|
if (!t || t === "none" || e.hasAttribute("data-left-out")) return [];
|
|
1137
|
-
let [n, r, i, a] =
|
|
1137
|
+
let [n, r, i, a] = Y(e, p, O, f);
|
|
1138
1138
|
return [{
|
|
1139
1139
|
label: e,
|
|
1140
1140
|
box: [
|
|
@@ -1144,32 +1144,32 @@ var Ye = (e) => {
|
|
|
1144
1144
|
a + 6 * p
|
|
1145
1145
|
]
|
|
1146
1146
|
}];
|
|
1147
|
-
})) : [],
|
|
1147
|
+
})) : [], le = b ? [] : a.flatMap((e) => n.flatMap((t, n) => {
|
|
1148
1148
|
if (A(e, n)) return [];
|
|
1149
|
-
let [r, i] =
|
|
1149
|
+
let [r, i] = P(e, n);
|
|
1150
1150
|
return [[
|
|
1151
1151
|
r - 4 * p,
|
|
1152
1152
|
i - 4 * p,
|
|
1153
1153
|
8 * p,
|
|
1154
1154
|
8 * p
|
|
1155
1155
|
]];
|
|
1156
|
-
})),
|
|
1157
|
-
let n =
|
|
1156
|
+
})), de = ce.filter(({ label: e, box: t }) => {
|
|
1157
|
+
let n = le.some((e) => ue(e, t));
|
|
1158
1158
|
return n && e.setAttribute("data-left-out", ""), !n;
|
|
1159
1159
|
}), pe = (e, t) => {
|
|
1160
1160
|
let n = t;
|
|
1161
1161
|
for (; n < w && !A(e, n + 1) && k(e, n + 1)?.value === k(e, t)?.value;) n++;
|
|
1162
1162
|
return n;
|
|
1163
1163
|
}, me = (e) => e === "above" ? "below" : "above", he = (e, t, n) => {
|
|
1164
|
-
let [r, i] =
|
|
1164
|
+
let [r, i] = P(e, t), a = J(o[e][t]).width * p, s = [
|
|
1165
1165
|
r - a / 2,
|
|
1166
1166
|
n === "above" ? i - 7 * p - g : i + 7 * p,
|
|
1167
1167
|
a,
|
|
1168
1168
|
g
|
|
1169
1169
|
];
|
|
1170
|
-
return s[1] + g > f ? Infinity : [t - 1, t + 1].filter((t) => t >= 0 && t <= w && !A(e, t)).flatMap((n) => ge(e, t, n, 0)).filter((e) =>
|
|
1170
|
+
return s[1] + g > f ? Infinity : [t - 1, t + 1].filter((t) => t >= 0 && t <= w && !A(e, t)).flatMap((n) => ge(e, t, n, 0)).filter((e) => ue(e, s)).length;
|
|
1171
1171
|
}, ge = (e, t, n, r) => {
|
|
1172
|
-
let [i, a] =
|
|
1172
|
+
let [i, a] = P(e, t), [o, s] = P(e, n), c = Math.max(1, Math.ceil(Math.hypot(o - i, s - a) / (3 * p)));
|
|
1173
1173
|
return Array.from({ length: c + 1 }, (e, t) => {
|
|
1174
1174
|
let n = t / c;
|
|
1175
1175
|
return [
|
|
@@ -1186,15 +1186,15 @@ var Ye = (e) => {
|
|
|
1186
1186
|
let a = i.value < 0 ? "below" : "above";
|
|
1187
1187
|
if (!S || C || r.length > 2) return e || b || he(t, n, a) <= he(t, n, me(a)) ? a : me(a);
|
|
1188
1188
|
let o = k(1 - t, n);
|
|
1189
|
-
return !o || o.missing ? a : i.value > o.value || i.value === o.value && t === 0 || e && i.value >= 0 &&
|
|
1190
|
-
}, ve = (y || S && !C && r.length > 2 && !v) && !b,
|
|
1189
|
+
return !o || o.missing ? a : i.value > o.value || i.value === o.value && t === 0 || e && i.value >= 0 && P(t, n)[1] + 7 * p + g > T ? "above" : "below";
|
|
1190
|
+
}, ve = (y || S && !C && r.length > 2 && !v) && !b, ye = /* @__PURE__ */ new Map();
|
|
1191
1191
|
if (ve) {
|
|
1192
1192
|
let e = n.flatMap((e, t) => a.map((e) => ({
|
|
1193
1193
|
s: e,
|
|
1194
1194
|
i: t,
|
|
1195
1195
|
value: k(e, t)?.value ?? 0
|
|
1196
|
-
}))).filter(({ s: e, i: t }) => _e(e, t) !== "none").sort((e, t) => e.i - t.i || t.value - e.value || e.s - t.s), t = (e) => e < 0 ? ["below", "above"] : ["above", "below"], r =
|
|
1197
|
-
let i = J(o[e][n]).width * p, [a, s] =
|
|
1196
|
+
}))).filter(({ s: e, i: t }) => _e(e, t) !== "none").sort((e, t) => e.i - t.i || t.value - e.value || e.s - t.s), t = (e) => e < 0 ? ["below", "above"] : ["above", "below"], r = fe(e.map(({ s: e, i: n, value: r }) => {
|
|
1197
|
+
let i = J(o[e][n]).width * p, [a, s] = P(e, n);
|
|
1198
1198
|
return t(r).map((e) => [
|
|
1199
1199
|
a - i / 2,
|
|
1200
1200
|
e === "above" ? s - 7 * p - g : s + 7 * p,
|
|
@@ -1203,27 +1203,27 @@ var Ye = (e) => {
|
|
|
1203
1203
|
]);
|
|
1204
1204
|
}), [...a.flatMap((e) => n.flatMap((t, n) => {
|
|
1205
1205
|
if (A(e, n)) return [];
|
|
1206
|
-
let [r, i] =
|
|
1206
|
+
let [r, i] = P(e, n);
|
|
1207
1207
|
return [[
|
|
1208
1208
|
r - 4 * p,
|
|
1209
1209
|
i - 4 * p,
|
|
1210
1210
|
8 * p,
|
|
1211
1211
|
8 * p
|
|
1212
1212
|
]];
|
|
1213
|
-
})), ...
|
|
1213
|
+
})), ...de.map(({ box: e }) => e)], [
|
|
1214
1214
|
0,
|
|
1215
1215
|
0,
|
|
1216
1216
|
c(w) + c(0),
|
|
1217
1217
|
f
|
|
1218
1218
|
]);
|
|
1219
|
-
e.forEach(({ s: e, i: n, value: i }, a) =>
|
|
1219
|
+
e.forEach(({ s: e, i: n, value: i }, a) => ye.set(o[e][n], r[a] === null ? null : t(i)[r[a]]));
|
|
1220
1220
|
}
|
|
1221
|
-
let
|
|
1221
|
+
let xe = (e, t) => ve ? ye.get(o[e][t]) === null : !v && !b ? !1 : J(o[e][t]).width * p > (b ? pe(e, t) - t + 1 : 1) * E - 4 * p || v && e > 0 && M(e, t) < N(e, t) ? !0 : v && Math.abs(l(N(e, t)) - l(M(e, t))) < g * 1.2;
|
|
1222
1222
|
a.forEach((e) => {
|
|
1223
1223
|
o[e].forEach((t, n) => {
|
|
1224
1224
|
t.style.setProperty("--i", String(Z(b ? (B(n) + B(n + 1)) / 2 : B(n))));
|
|
1225
|
-
let r =
|
|
1226
|
-
if (t.dataset.place = r === "above" ? "outside" : r, t.toggleAttribute("data-left-out", r !== "none" &&
|
|
1225
|
+
let r = ye.get(t) ?? _e(e, n);
|
|
1226
|
+
if (t.dataset.place = r === "above" ? "outside" : r, t.toggleAttribute("data-left-out", r !== "none" && xe(e, n)), b && r !== "none" ? t.dataset.rowEnd = String(pe(e, n) + 1) : delete t.dataset.rowEnd, r === "none") return;
|
|
1227
1227
|
let i = J(t).width * p / 2 + 4 * p, a = c(n);
|
|
1228
1228
|
b ? a = (c(n) + c(pe(e, n))) / 2 : r === "middle" && n === 0 ? a += i : r === "middle" && n === w && (a -= i);
|
|
1229
1229
|
let o = l(M(e, n)), s = {
|
|
@@ -1231,28 +1231,28 @@ var Ye = (e) => {
|
|
|
1231
1231
|
above: -7 * p,
|
|
1232
1232
|
below: 7 * p
|
|
1233
1233
|
};
|
|
1234
|
-
|
|
1234
|
+
R(t, a, o + s[r], O, f);
|
|
1235
1235
|
});
|
|
1236
1236
|
});
|
|
1237
|
-
let
|
|
1237
|
+
let Se = (e) => {
|
|
1238
1238
|
let r = n.flatMap((t, n) => t.pinned && !A(e, n) ? [n] : []), i = n.map((e, t) => t).filter((t) => !A(e, t)), a = (t) => k(e, t)?.value ?? 0, { keys: s } = t.pick;
|
|
1239
|
-
i.length && (s.includes("last") && r.push(i[i.length - 1]), s.includes("first") && r.push(i[0]), s.includes("highest") && r.push(i.reduce((e, t) => a(t) > a(e) ? t : e)), s.includes("lowest") && r.push(i.reduce((e, t) => a(t) < a(e) ? t : e)), s.includes("outliers") && r.push(
|
|
1239
|
+
i.length && (s.includes("last") && r.push(i[i.length - 1]), s.includes("first") && r.push(i[0]), s.includes("highest") && r.push(i.reduce((e, t) => a(t) > a(e) ? t : e)), s.includes("lowest") && r.push(i.reduce((e, t) => a(t) < a(e) ? t : e)), s.includes("outliers") && r.push(...et(i.map((e) => ({
|
|
1240
1240
|
x: e,
|
|
1241
1241
|
y: a(e)
|
|
1242
1242
|
})))?.outside.map((e) => e.x) ?? []));
|
|
1243
1243
|
let c = [];
|
|
1244
1244
|
for (let t of r) {
|
|
1245
1245
|
let n = o[e][t];
|
|
1246
|
-
c.includes(t) || n.dataset.place === "none" || c.every((t) =>
|
|
1246
|
+
c.includes(t) || n.dataset.place === "none" || c.every((t) => we([o[e][t], n], p, 1e3, f) === 1) && c.push(t);
|
|
1247
1247
|
}
|
|
1248
1248
|
return new Set(c);
|
|
1249
|
-
},
|
|
1249
|
+
}, Ce = (e) => we(o[e].filter((e) => e.dataset.place !== "none" && !e.hasAttribute("data-left-out")), p, O, f) === 1, Te = (e) => {
|
|
1250
1250
|
let t = w;
|
|
1251
1251
|
for (; t > 0 && A(e, t);) t--;
|
|
1252
1252
|
return t;
|
|
1253
1253
|
}, Ee = /* @__PURE__ */ new Map();
|
|
1254
1254
|
for (let e of a) {
|
|
1255
|
-
let n = t.pick.mode === "all" || t.pick.mode === "auto" &&
|
|
1255
|
+
let n = t.pick.mode === "all" || t.pick.mode === "auto" && Ce(e) ? null : Se(e);
|
|
1256
1256
|
Ee.set(e, n), n && o[e].forEach((e, t) => {
|
|
1257
1257
|
e.dataset.place !== "none" && !n.has(t) && e.setAttribute("data-left-out", "");
|
|
1258
1258
|
});
|
|
@@ -1263,7 +1263,7 @@ var Ye = (e) => {
|
|
|
1263
1263
|
if (!t) return [];
|
|
1264
1264
|
let n = w;
|
|
1265
1265
|
for (; n > 0 && A(e, n);) n--;
|
|
1266
|
-
let [r, a] =
|
|
1266
|
+
let [r, a] = P(e, n);
|
|
1267
1267
|
return [[
|
|
1268
1268
|
r + 10 * p,
|
|
1269
1269
|
a - i / 2,
|
|
@@ -1291,7 +1291,7 @@ var Ye = (e) => {
|
|
|
1291
1291
|
"before"
|
|
1292
1292
|
];
|
|
1293
1293
|
}, m = ({ s: t, i: n }, r) => {
|
|
1294
|
-
let i = J(o[t][n]).width * p, a = g, [s, c] =
|
|
1294
|
+
let i = J(o[t][n]).width * p, a = g, [s, c] = P(t, n), l = Math.min(Math.max(s - i / 2, 0), e - i);
|
|
1295
1295
|
return r === "outside" ? [
|
|
1296
1296
|
l,
|
|
1297
1297
|
c - 7 * p - a,
|
|
@@ -1324,7 +1324,7 @@ var Ye = (e) => {
|
|
|
1324
1324
|
a
|
|
1325
1325
|
];
|
|
1326
1326
|
}, h = u.map(d), _ = (t) => t[0] >= 0 && t[1] >= 0 && t[0] + t[2] <= e && t[1] + t[3] <= f - 2 * p, v = u.map(({ s: e, i: t }) => {
|
|
1327
|
-
let [n, r] =
|
|
1327
|
+
let [n, r] = P(e, t);
|
|
1328
1328
|
return [
|
|
1329
1329
|
n - 6 * p,
|
|
1330
1330
|
r - 6 * p,
|
|
@@ -1336,7 +1336,7 @@ var Ye = (e) => {
|
|
|
1336
1336
|
...y,
|
|
1337
1337
|
...l,
|
|
1338
1338
|
...v
|
|
1339
|
-
].some((t) =>
|
|
1339
|
+
].some((t) => ue(e, t)), a = n.findIndex((e) => i(e) && !r.some((t) => ue(e, t)));
|
|
1340
1340
|
return a < 0 && (a = n.findIndex(i), a >= 0 && b.add(t)), a >= 0 && y.push(n[a]), a < 0 ? null : a;
|
|
1341
1341
|
});
|
|
1342
1342
|
u.forEach((e, t) => {
|
|
@@ -1345,27 +1345,27 @@ var Ye = (e) => {
|
|
|
1345
1345
|
let r = x[t];
|
|
1346
1346
|
if (r === null) return n.setAttribute("data-left-out", "");
|
|
1347
1347
|
let i = h[t][r], [a, s, c, l] = m(e, i), u = i.split(" ")[0];
|
|
1348
|
-
n.dataset.place = u,
|
|
1348
|
+
n.dataset.place = u, R(n, u === "after" ? a : u === "before" ? a + c : a + c / 2, u === "outside" ? s + l : u === "below" ? s : s + l / 2, O, f);
|
|
1349
1349
|
});
|
|
1350
1350
|
}
|
|
1351
1351
|
b || se((e, t) => {
|
|
1352
1352
|
let n = Ee.get(e);
|
|
1353
1353
|
return n ? n.has(t) : E >= 10 * p;
|
|
1354
1354
|
}), t.pointOf = (e) => {
|
|
1355
|
-
let t = a.filter((t) => !A(t, e)).map((t) =>
|
|
1355
|
+
let t = a.filter((t) => !A(t, e)).map((t) => P(t, e));
|
|
1356
1356
|
return t.length ? t.reduce((e, t) => t[1] < e[1] ? t : e) : null;
|
|
1357
1357
|
};
|
|
1358
1358
|
let De = (y ? [] : s).map((e, t) => {
|
|
1359
|
-
let n = Te(t), [r, i] =
|
|
1359
|
+
let n = Te(t), [r, i] = P(t, n);
|
|
1360
1360
|
return {
|
|
1361
1361
|
name: e,
|
|
1362
1362
|
x: (b ? r + E / 2 : r) + 10 * p,
|
|
1363
1363
|
y: v ? (i + l(N(t, n))) / 2 : i
|
|
1364
1364
|
};
|
|
1365
1365
|
}), Oe = (s[0] ? J(s[0]).height : 0) * p;
|
|
1366
|
-
for (let e of
|
|
1366
|
+
for (let e of be(De, Oe)) R(e.name, e.x, e.y, O, f);
|
|
1367
1367
|
let ke = n.some((e) => e.cells.some((e) => !e.missing && e.value < 0)), Ae = !e && !v && r.length === 2 && !C && !ke ? f - 2 * p : T;
|
|
1368
|
-
y || _.appendChild(
|
|
1368
|
+
y || _.appendChild(F("line", {
|
|
1369
1369
|
class: i,
|
|
1370
1370
|
x1: 0,
|
|
1371
1371
|
x2: c(w) + c(0),
|
|
@@ -1373,15 +1373,15 @@ var Ye = (e) => {
|
|
|
1373
1373
|
y2: Ae
|
|
1374
1374
|
}));
|
|
1375
1375
|
}
|
|
1376
|
-
}),
|
|
1376
|
+
}), rt = nt(!1), it = nt(!0), at = /* @__PURE__ */ new Set(), ot = (t, n) => {
|
|
1377
1377
|
if (Math.abs(t - n) <= Math.abs(n) / 100) return;
|
|
1378
1378
|
let r = `[${e}] A total reads ${t}, but the steps before it add up to ${Number(n.toFixed(6))}. The chart shows your number.`;
|
|
1379
|
-
|
|
1380
|
-
},
|
|
1379
|
+
at.has(r) || (at.add(r), console.warn(r));
|
|
1380
|
+
}, st = {
|
|
1381
1381
|
segments: (e) => {
|
|
1382
1382
|
let t = 0, n = !1;
|
|
1383
1383
|
return e.map((e) => {
|
|
1384
|
-
if (e.isTotal) return n &&
|
|
1384
|
+
if (e.isTotal) return n && ot(e.value, t), n = !1, t = e.value, {
|
|
1385
1385
|
...e,
|
|
1386
1386
|
from: 0,
|
|
1387
1387
|
to: e.value,
|
|
@@ -1399,34 +1399,34 @@ var Ye = (e) => {
|
|
|
1399
1399
|
breakable: !0,
|
|
1400
1400
|
headroom: ({ labelHeight: e, badgeHeight: t, hasAnnotations: n, unit: r }) => e + 6 * r + (n ? t * 1.6 : 0),
|
|
1401
1401
|
draw({ segments: e, cx: t, y: n, barWidth: a, height: o, unit: s, svg: c, values: l, breakAt: u, insideAlign: d }) {
|
|
1402
|
-
let f = n(0), p =
|
|
1402
|
+
let f = n(0), p = ge(l, a, s), m = d ?? "center", h = e.map((t, r) => {
|
|
1403
1403
|
let i = n(Math.max(t.from, t.to)), a = Math.abs(n(t.from) - n(t.to)), o = u !== null && Math.min(t.from, t.to) < u && Math.max(t.from, t.to) > u, c = t.kind === "total" && r > 0 && r === e.length - 1;
|
|
1404
1404
|
return {
|
|
1405
1405
|
top: i,
|
|
1406
1406
|
length: a,
|
|
1407
1407
|
down: t.kind === "down" || t.kind === "total" && (c ? t.to >= 0 : t.to < 0),
|
|
1408
|
-
inside: !o && !p &&
|
|
1408
|
+
inside: !o && !p && _e(l[r], a, s)
|
|
1409
1409
|
};
|
|
1410
1410
|
}), g = l[0] ? J(l[0]).height * s * .56 : 0, _ = Infinity;
|
|
1411
1411
|
for (let [e, t] of h.entries()) t.inside && (_ = Math.min(_, (a - J(l[e]).width * s) / 2));
|
|
1412
|
-
let v = e.length, y = (e, t, n = !1) => `--start:${(e / v).toFixed(4)}; --span:${(t / v).toFixed(4)}; --ease:${n ?
|
|
1412
|
+
let v = e.length, y = (e, t, n = !1) => `--start:${(e / v).toFixed(4)}; --span:${(t / v).toFixed(4)}; --ease:${n ? A : "linear"};`;
|
|
1413
1413
|
e.forEach((r, i) => {
|
|
1414
1414
|
let o = e[i + 1];
|
|
1415
1415
|
if (!o) return;
|
|
1416
1416
|
let s = n(r.to), l = t(i) + a / 2, u = t(i + 1) - a / 2;
|
|
1417
|
-
c.appendChild(
|
|
1417
|
+
c.appendChild(F("line", {
|
|
1418
1418
|
class: "tablechart-connector",
|
|
1419
1419
|
x1: l,
|
|
1420
1420
|
x2: u,
|
|
1421
1421
|
y1: s,
|
|
1422
1422
|
y2: s,
|
|
1423
1423
|
"data-row": i + 2,
|
|
1424
|
-
style: `${
|
|
1424
|
+
style: `${M("--i", o.slot)}; ${y(i + 1, 1 / 3)}`
|
|
1425
1425
|
}));
|
|
1426
1426
|
}), e.forEach((n, i) => {
|
|
1427
1427
|
let { top: u, length: d, down: f, inside: p } = h[i];
|
|
1428
|
-
c.appendChild(
|
|
1429
|
-
class:
|
|
1428
|
+
c.appendChild(F("rect", {
|
|
1429
|
+
class: I(r, n),
|
|
1430
1430
|
"data-kind": n.kind,
|
|
1431
1431
|
"data-row": i + 1,
|
|
1432
1432
|
"data-grow": f ? "down" : "up",
|
|
@@ -1434,18 +1434,18 @@ var Ye = (e) => {
|
|
|
1434
1434
|
y: u,
|
|
1435
1435
|
width: a,
|
|
1436
1436
|
height: Math.max(d, 1),
|
|
1437
|
-
style: `${
|
|
1437
|
+
style: `${M("--i", n.slot)}; ${y(i, 1, i === e.length - 1)}`
|
|
1438
1438
|
}));
|
|
1439
1439
|
let b = l[i];
|
|
1440
1440
|
b.style.setProperty("--start", (i / v).toFixed(4)), b.style.setProperty("--span", (1 / v).toFixed(4));
|
|
1441
1441
|
let x = Math.min(_, (d - g) / 2), S = u + x + g / 2, C = u + d - x - g / 2, w = m === "center" ? u + d / 2 : m === "end" === f ? C : S;
|
|
1442
1442
|
b.dataset.place = p ? "inside" : "outside", b.dataset.kind = n.kind;
|
|
1443
1443
|
let T = p ? w : n.kind === "down" ? u + d + J(b).height * s + 3 * s : u - 3 * s;
|
|
1444
|
-
|
|
1445
|
-
}), c.appendChild(
|
|
1444
|
+
R(b, t(i), T, O, o);
|
|
1445
|
+
}), c.appendChild(F("line", {
|
|
1446
1446
|
class: i,
|
|
1447
1447
|
x1: 0,
|
|
1448
|
-
x2:
|
|
1448
|
+
x2: O,
|
|
1449
1449
|
y1: f,
|
|
1450
1450
|
y2: f
|
|
1451
1451
|
}));
|
|
@@ -1460,7 +1460,7 @@ var Ye = (e) => {
|
|
|
1460
1460
|
let i = performance.now(), a = r(), o = performance.now() - i, s = n.querySelectorAll("tbody tr").length;
|
|
1461
1461
|
return o > 50 ? console.warn(`[${e}] ${t} took ${o.toFixed(1)} ms for ${s} rows, more than 50 ms.`, n) : Q.log(`${t} took ${o.toFixed(1)} ms for ${s} rows.`, n), a;
|
|
1462
1462
|
}
|
|
1463
|
-
},
|
|
1463
|
+
}, ct = (e) => {
|
|
1464
1464
|
let t = (e?.textContent || "").trim(), n = t.match(/^(.*?)(-?\d+(?:[.,]\d+)?)(.*)$/);
|
|
1465
1465
|
return {
|
|
1466
1466
|
raw: t,
|
|
@@ -1470,14 +1470,14 @@ var Ye = (e) => {
|
|
|
1470
1470
|
missing: !n,
|
|
1471
1471
|
value: n ? Number.parseFloat(n[2].replace(",", ".")) : 0
|
|
1472
1472
|
};
|
|
1473
|
-
},
|
|
1474
|
-
let n =
|
|
1473
|
+
}, lt = (e) => Array.from(e.querySelector("thead tr:last-child")?.children ?? []).slice(1).flatMap((e, t) => e.hasAttribute("data-note") ? [t] : []), ut = (e, t) => {
|
|
1474
|
+
let n = lt(e), r = e.querySelectorAll("tbody tr")[t]?.querySelectorAll("td") ?? [];
|
|
1475
1475
|
return n.map((e) => r[e]).find((e) => e?.textContent?.trim()) ?? null;
|
|
1476
|
-
},
|
|
1477
|
-
let n =
|
|
1476
|
+
}, dt = (e, t = "data-i18n") => {
|
|
1477
|
+
let n = lt(e);
|
|
1478
1478
|
return Array.from(e.querySelectorAll("tbody tr")).map((e, r) => {
|
|
1479
|
-
let i = e.querySelector("th"), a = Array.from(e.querySelectorAll("td")), o = a.filter((e, t) => !n.includes(t)).map(
|
|
1480
|
-
o.length || o.push(
|
|
1479
|
+
let i = e.querySelector("th"), a = Array.from(e.querySelectorAll("td")), o = a.filter((e, t) => !n.includes(t)).map(ct);
|
|
1480
|
+
o.length || o.push(ct(null));
|
|
1481
1481
|
let s = n.map((e) => a[e]).find((e) => e?.textContent?.trim());
|
|
1482
1482
|
return {
|
|
1483
1483
|
...o[0],
|
|
@@ -1493,8 +1493,8 @@ var Ye = (e) => {
|
|
|
1493
1493
|
slot: r
|
|
1494
1494
|
};
|
|
1495
1495
|
});
|
|
1496
|
-
},
|
|
1497
|
-
let r =
|
|
1496
|
+
}, ft = (e) => Array.from(e.querySelector("thead tr:last-child")?.children ?? []).slice(1).filter((e) => !e.hasAttribute("data-note")), pt = (e) => e === "dashed" || e === "dotted" ? e : null, mt = (e, t, n = "data-i18n") => {
|
|
1497
|
+
let r = ft(e), i = Math.max(1, G(t.map((e) => e.cells.length)));
|
|
1498
1498
|
return Array.from({ length: i }, (e, t) => {
|
|
1499
1499
|
let i = r[t];
|
|
1500
1500
|
return {
|
|
@@ -1502,12 +1502,12 @@ var Ye = (e) => {
|
|
|
1502
1502
|
key: n && i?.getAttribute(n) || null,
|
|
1503
1503
|
focus: i?.getAttribute("data-kind") === "focus",
|
|
1504
1504
|
marker: i?.getAttribute("data-marker") ?? null,
|
|
1505
|
-
line:
|
|
1505
|
+
line: pt(i?.getAttribute("data-line")),
|
|
1506
1506
|
group: !!i?.hasAttribute("data-group"),
|
|
1507
1507
|
chart: i?.getAttribute("data-chart") === "line" ? "line" : null
|
|
1508
1508
|
};
|
|
1509
1509
|
});
|
|
1510
|
-
},
|
|
1510
|
+
}, ht = (t, n) => {
|
|
1511
1511
|
if (!n) return;
|
|
1512
1512
|
let r = /* @__PURE__ */ new Map();
|
|
1513
1513
|
for (let i of t) {
|
|
@@ -1520,7 +1520,7 @@ var Ye = (e) => {
|
|
|
1520
1520
|
i.querySelectorAll("tbody th").forEach((e, r) => {
|
|
1521
1521
|
e.getAttribute(n) || e.setAttribute(n, `${t}-row${r + 1}`);
|
|
1522
1522
|
});
|
|
1523
|
-
let a =
|
|
1523
|
+
let a = ft(i);
|
|
1524
1524
|
a.length > 1 && a.forEach((e, r) => {
|
|
1525
1525
|
e.getAttribute(n) || e.setAttribute(n, `${t}-col${r + 1}`);
|
|
1526
1526
|
}), a.forEach((e, r) => {
|
|
@@ -1531,7 +1531,7 @@ var Ye = (e) => {
|
|
|
1531
1531
|
a.includes(r) || a.push(r), e.getAttribute(n) || e.setAttribute(n, `${t}-group${a.indexOf(r) + 1}`);
|
|
1532
1532
|
});
|
|
1533
1533
|
});
|
|
1534
|
-
let o =
|
|
1534
|
+
let o = lt(i);
|
|
1535
1535
|
i.querySelectorAll("tbody tr").forEach((e, r) => {
|
|
1536
1536
|
let i = e.querySelectorAll("td");
|
|
1537
1537
|
for (let e of o) {
|
|
@@ -1540,117 +1540,133 @@ var Ye = (e) => {
|
|
|
1540
1540
|
}
|
|
1541
1541
|
}), Q?.log?.(`Keys for "${t}" written onto ${i.querySelectorAll("tbody th").length} rows`);
|
|
1542
1542
|
}
|
|
1543
|
-
},
|
|
1543
|
+
}, gt = (e) => Number(e.toPrecision(12)), _t = (e, t) => {
|
|
1544
1544
|
let n = e / Math.max(1, t) || 1, r = 10 ** Math.floor(Math.log10(n)), i = n / r;
|
|
1545
|
-
return
|
|
1546
|
-
},
|
|
1545
|
+
return gt((i < 1.42 ? 1 : i < 3.17 ? 2 : i < 7.08 ? 5 : 10) * r);
|
|
1546
|
+
}, vt = (e, t, n) => {
|
|
1547
1547
|
let r = [];
|
|
1548
|
-
for (let i = Math.ceil(e / n - 1e-9); i * n <= t + n * 1e-9; i++) r.push(
|
|
1548
|
+
for (let i = Math.ceil(e / n - 1e-9); i * n <= t + n * 1e-9; i++) r.push(gt(i * n));
|
|
1549
1549
|
return r;
|
|
1550
|
-
},
|
|
1550
|
+
}, yt = (e, t = e) => {
|
|
1551
1551
|
do {
|
|
1552
1552
|
let t = Math.round(e / 10 ** Math.floor(Math.log10(e) + 1e-9));
|
|
1553
|
-
e =
|
|
1553
|
+
e = gt(e * (t === 2 ? 2.5 : 2));
|
|
1554
1554
|
} while (Math.abs(e / t - Math.round(e / t)) > 1e-9);
|
|
1555
1555
|
return e;
|
|
1556
|
-
},
|
|
1556
|
+
}, bt = (e) => {
|
|
1557
1557
|
let t = (e ?? "").trim().split(/\s+/).map(Number.parseFloat);
|
|
1558
1558
|
return t.length > 1 && t.every(Number.isFinite) ? t.sort((e, t) => e - t) : null;
|
|
1559
|
-
},
|
|
1559
|
+
}, xt = (e, t, n) => {
|
|
1560
1560
|
if (n && n.length > 2) return {
|
|
1561
1561
|
min: n[0],
|
|
1562
1562
|
max: n[n.length - 1],
|
|
1563
1563
|
step: 0,
|
|
1564
1564
|
ticks: n
|
|
1565
1565
|
};
|
|
1566
|
-
let r = n?.[0] ?? -
|
|
1566
|
+
let r = n?.[0] ?? -G(e.map((e) => -e)), i = n?.[1] ?? G(e);
|
|
1567
1567
|
if (!n) {
|
|
1568
1568
|
let e = (i - r || Math.abs(i) || 1) * .05;
|
|
1569
1569
|
r -= e, i += e;
|
|
1570
1570
|
}
|
|
1571
|
-
let a =
|
|
1571
|
+
let a = _t(i - r, t);
|
|
1572
1572
|
return {
|
|
1573
1573
|
min: r,
|
|
1574
1574
|
max: i,
|
|
1575
1575
|
step: a,
|
|
1576
|
-
ticks:
|
|
1576
|
+
ticks: vt(r, i, a)
|
|
1577
1577
|
};
|
|
1578
|
-
},
|
|
1578
|
+
}, St = (e, t) => {
|
|
1579
1579
|
let { step: n, ticks: r } = e;
|
|
1580
|
-
for (; n && r.length > 2 && !t(r);) n =
|
|
1580
|
+
for (; n && r.length > 2 && !t(r);) n = yt(n, e.step), r = vt(e.min, e.max, n);
|
|
1581
1581
|
return {
|
|
1582
1582
|
...e,
|
|
1583
1583
|
step: n,
|
|
1584
1584
|
ticks: r
|
|
1585
1585
|
};
|
|
1586
|
-
},
|
|
1587
|
-
if (
|
|
1586
|
+
}, Ct = null, wt = (e) => {
|
|
1587
|
+
if (Ct ?? (Ct = document.createElement("canvas").getContext("2d", { willReadFrequently: !0 })), !Ct) return [
|
|
1588
1588
|
0,
|
|
1589
1589
|
0,
|
|
1590
1590
|
0,
|
|
1591
1591
|
1
|
|
1592
1592
|
];
|
|
1593
|
-
|
|
1594
|
-
let [t, n, r, i] =
|
|
1593
|
+
Ct.clearRect(0, 0, 1, 1), Ct.fillStyle = e, Ct.fillRect(0, 0, 1, 1);
|
|
1594
|
+
let [t, n, r, i] = Ct.getImageData(0, 0, 1, 1).data;
|
|
1595
1595
|
return [
|
|
1596
1596
|
t,
|
|
1597
1597
|
n,
|
|
1598
1598
|
r,
|
|
1599
1599
|
i / 255
|
|
1600
1600
|
];
|
|
1601
|
-
},
|
|
1601
|
+
}, Tt = ([e, t, n]) => {
|
|
1602
1602
|
let r = (e) => {
|
|
1603
1603
|
let t = e / 255;
|
|
1604
1604
|
return t <= .03928 ? t / 12.92 : ((t + .055) / 1.055) ** 2.4;
|
|
1605
1605
|
};
|
|
1606
1606
|
return .2126 * r(e) + .7152 * r(t) + .0722 * r(n);
|
|
1607
|
-
},
|
|
1608
|
-
let
|
|
1607
|
+
}, Et = (e) => getComputedStyle(e).getPropertyValue("--tablechart-contrast-wcag").trim() === "3" ? 3 : 2, Dt = ([e, t, n]) => {
|
|
1608
|
+
let r = .2126729 * (e / 255) ** 2.4 + .7151522 * (t / 255) ** 2.4 + .072175 * (n / 255) ** 2.4;
|
|
1609
|
+
return r < .022 ? r + (.022 - r) ** 1.414 : r;
|
|
1610
|
+
}, Ot = (e, t) => {
|
|
1611
|
+
let n = Dt(e), r = Dt(t);
|
|
1612
|
+
if (Math.abs(r - n) < 5e-4) return 0;
|
|
1613
|
+
let i = r > n ? (r ** .56 - n ** .57) * 1.14 : (r ** .65 - n ** .62) * 1.14;
|
|
1614
|
+
return Math.abs(i) < .1 ? 0 : (Math.abs(i) - .027) * 100;
|
|
1615
|
+
}, kt = (e, t, n) => e === 3 ? Ot(t, n) : At(t, n), At = (e, t) => {
|
|
1616
|
+
let [n, r] = [Tt(e), Tt(t)].sort((e, t) => t - e);
|
|
1609
1617
|
return (n + .05) / (r + .05);
|
|
1610
|
-
},
|
|
1611
|
-
let
|
|
1612
|
-
|
|
1613
|
-
let
|
|
1614
|
-
return
|
|
1615
|
-
},
|
|
1618
|
+
}, jt = (e, t) => {
|
|
1619
|
+
let n = document.createElement("span");
|
|
1620
|
+
n.style.color = t, e.append(n);
|
|
1621
|
+
let r = wt(getComputedStyle(n).color);
|
|
1622
|
+
return n.remove(), r;
|
|
1623
|
+
}, Mt = (e) => {
|
|
1624
|
+
let t = [], n = null;
|
|
1625
|
+
for (let r = e; r && !n; r = r.parentElement) {
|
|
1626
|
+
let { background: e, backgroundColor: i } = r.dataset, a = wt(i || (e && CSS.supports("color", e) ? e : "") || getComputedStyle(r).backgroundColor);
|
|
1627
|
+
a[3] >= 1 ? n = a : a[3] > 0 && t.push(a);
|
|
1628
|
+
}
|
|
1629
|
+
n ?? (n = jt(e, "Canvas"));
|
|
1630
|
+
for (let [e, r, i, a] of t.reverse()) n = [
|
|
1631
|
+
e,
|
|
1632
|
+
r,
|
|
1633
|
+
i
|
|
1634
|
+
].map((e, t) => e * a + n[t] * (1 - a));
|
|
1635
|
+
e.style.setProperty("--_surface", `rgb(${n.slice(0, 3).map(Math.round).join(" ")})`);
|
|
1636
|
+
}, Nt = (e) => jt(e, "var(--tablechart-surface, var(--_surface, Canvas))"), Pt = (e, t) => e.querySelector(`:is(.tablechart-bar, .tablechart-piece)[data-row="${t.dataset.row}"]${t.dataset.series ? `[data-series="${t.dataset.series}"]` : ""}`), Ft = [
|
|
1637
|
+
255,
|
|
1638
|
+
255,
|
|
1639
|
+
255
|
|
1640
|
+
], It = [
|
|
1641
|
+
0,
|
|
1642
|
+
0,
|
|
1643
|
+
0
|
|
1644
|
+
], Lt = (e, t, n) => {
|
|
1645
|
+
let r = kt(n, Ft, e), i = kt(n, It, e);
|
|
1646
|
+
return r >= t ? Ft : i >= t ? It : n === 2 && r >= 4.5 || r > i ? Ft : It;
|
|
1647
|
+
}, Rt = (e) => {
|
|
1616
1648
|
let t = e.querySelectorAll(".tablechart-value[data-place='inside']");
|
|
1617
1649
|
if (!t.length) return;
|
|
1618
|
-
let n =
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
0,
|
|
1632
|
-
0,
|
|
1633
|
-
0
|
|
1634
|
-
] : [
|
|
1635
|
-
255,
|
|
1636
|
-
255,
|
|
1637
|
-
255
|
|
1638
|
-
];
|
|
1639
|
-
for (let e = 0; e <= 20; e++) {
|
|
1640
|
-
let t = n.slice(0, 3).map((t, n) => Math.round(t + (o[n] - t) * e / 20));
|
|
1641
|
-
if (Tt(t, i) >= 4.5) {
|
|
1642
|
-
s = t;
|
|
1643
|
-
break;
|
|
1644
|
-
}
|
|
1645
|
-
}
|
|
1646
|
-
r.style.setProperty("--_ink", `rgb(${s.join(" ")})`);
|
|
1650
|
+
let n = Nt(e).slice(0, 3), r = Tt(n) > .179, i = (t, n) => {
|
|
1651
|
+
let [r, i, a, o] = jt(e, `var(${t}, transparent)`);
|
|
1652
|
+
return o > 0 ? [
|
|
1653
|
+
r,
|
|
1654
|
+
i,
|
|
1655
|
+
a
|
|
1656
|
+
] : n;
|
|
1657
|
+
}, a = Et(e), o = Number.parseFloat(getComputedStyle(e).getPropertyValue("--tablechart-value-contrast")) || (a === 3 ? 60 : 5), s = wt(getComputedStyle(e).color).slice(0, 3), c = i("--tablechart-value-on-dark", r ? n : s), l = i("--tablechart-value-on-light", r ? s : n);
|
|
1658
|
+
for (let n of t) {
|
|
1659
|
+
let t = Pt(e, n);
|
|
1660
|
+
if (!t || n.hasAttribute("data-left-out")) continue;
|
|
1661
|
+
let r = wt(getComputedStyle(t).fill), i = kt(a, c, r) > kt(a, l, r) ? c : l, s = kt(a, i, r) >= o ? i : Lt(r, o, a);
|
|
1662
|
+
n.style.setProperty("--_ink", `rgb(${s.join(" ")})`);
|
|
1647
1663
|
}
|
|
1648
|
-
},
|
|
1664
|
+
}, zt = [
|
|
1649
1665
|
"axis-break",
|
|
1650
1666
|
"trend",
|
|
1651
1667
|
"bracket"
|
|
1652
|
-
],
|
|
1653
|
-
let n = e.hasAttribute("data-fragment"), r = Array.from(e.querySelectorAll("tbody tr")), i = Array.from(e.querySelector("thead tr:last-child")?.children ?? []).slice(1), a = Array.from(e.querySelectorAll("[data-annotation]")).filter((e) =>
|
|
1668
|
+
], Bt = (e, t = !1) => {
|
|
1669
|
+
let n = e.hasAttribute("data-fragment"), r = Array.from(e.querySelectorAll("tbody tr")), i = Array.from(e.querySelector("thead tr:last-child")?.children ?? []).slice(1), a = Array.from(e.querySelectorAll("[data-annotation]")).filter((e) => zt.includes(e.getAttribute("data-annotation") ?? "")), o = (e) => e.hasAttribute("data-fragment"), s = r.map((e) => Array.from(e.querySelectorAll(":scope > td")));
|
|
1654
1670
|
if (!n && !r.some(o) && !i.some(o) && !s.flat().some(o) && !a.some(o) || t && !n) return null;
|
|
1655
1671
|
let c = [], l = /* @__PURE__ */ new Map(), u = [], d = (e) => {
|
|
1656
1672
|
let t = e === null ? void 0 : l.get(e);
|
|
@@ -1712,7 +1728,7 @@ var Ye = (e) => {
|
|
|
1712
1728
|
count: c.length,
|
|
1713
1729
|
indexes: c
|
|
1714
1730
|
};
|
|
1715
|
-
},
|
|
1731
|
+
}, Vt = (e) => {
|
|
1716
1732
|
let t = e.plan;
|
|
1717
1733
|
if (!t) return;
|
|
1718
1734
|
let n = (t) => t === null || e.step - t >= 1;
|
|
@@ -1723,7 +1739,7 @@ var Ye = (e) => {
|
|
|
1723
1739
|
let u = r.hasAttribute("data-flat") ? (l - e + 1) / (i - e + 1) : i > e ? Math.max(0, l - e) / (i - e) : 0;
|
|
1724
1740
|
r.style.setProperty("--reveal", String(u));
|
|
1725
1741
|
}
|
|
1726
|
-
},
|
|
1742
|
+
}, Ht = (e) => {
|
|
1727
1743
|
let t = e.plan;
|
|
1728
1744
|
if (!t) return;
|
|
1729
1745
|
let n = t.rows.length - 1, i = (e) => t.series.map((n, r) => t.cells[e]?.[r]?.step ?? n.step ?? t.rows[e]?.step ?? null), a = (e) => {
|
|
@@ -1794,19 +1810,19 @@ var Ye = (e) => {
|
|
|
1794
1810
|
let o = /* @__PURE__ */ new Map();
|
|
1795
1811
|
for (let e of a) {
|
|
1796
1812
|
let t = e.reduce((e, t) => e + n(t), 0), r = 0;
|
|
1797
|
-
for (let i of e) o.set(i.dataset.row ?? "",
|
|
1813
|
+
for (let i of e) o.set(i.dataset.row ?? "", j(r, n(i), t)), r += n(i);
|
|
1798
1814
|
}
|
|
1799
1815
|
for (let t of e.figure.querySelectorAll("[data-row]")) {
|
|
1800
1816
|
let e = o.get(t.dataset.row ?? "");
|
|
1801
1817
|
e && t.style.getPropertyValue("--start") && (t.style.setProperty("--start", e.start.toFixed(4)), t.style.setProperty("--span", e.span.toFixed(4)), t.classList.contains("tablechart-slice") && t.style.setProperty("--ease", e.easing));
|
|
1802
1818
|
}
|
|
1803
1819
|
}
|
|
1804
|
-
|
|
1805
|
-
},
|
|
1820
|
+
Vt(e);
|
|
1821
|
+
}, Ut = (e, t, n = !1) => {
|
|
1806
1822
|
let r = e.plan;
|
|
1807
1823
|
if (!r) return;
|
|
1808
1824
|
let i = Math.min(Math.max(Math.round(t), 0), r.count), a = i !== e.step;
|
|
1809
|
-
e.step = i, e.figure.style.setProperty("--_step", String(i)),
|
|
1825
|
+
e.step = i, e.figure.style.setProperty("--_step", String(i)), Vt(e);
|
|
1810
1826
|
let [o, s] = e.controls?.querySelectorAll("button") ?? [];
|
|
1811
1827
|
o && (o.disabled = i === 0), s && (s.disabled = i === r.count), a && !n && e.figure.dispatchEvent(new CustomEvent("tablechart:step", {
|
|
1812
1828
|
bubbles: !0,
|
|
@@ -1815,7 +1831,7 @@ var Ye = (e) => {
|
|
|
1815
1831
|
steps: r.count
|
|
1816
1832
|
}
|
|
1817
1833
|
}));
|
|
1818
|
-
},
|
|
1834
|
+
}, Wt = (e, t, n) => {
|
|
1819
1835
|
let r = document.createElement("div");
|
|
1820
1836
|
r.className = "tablechart-controls";
|
|
1821
1837
|
let i = (r) => {
|
|
@@ -1823,11 +1839,11 @@ var Ye = (e) => {
|
|
|
1823
1839
|
i.type = "button", i.className = `tablechart-${r}`, i.dataset.go = r;
|
|
1824
1840
|
let a = document.createElement("span");
|
|
1825
1841
|
a.className = "tablechart-control-icon", a.setAttribute("aria-hidden", "true");
|
|
1826
|
-
let o =
|
|
1842
|
+
let o = F("svg", {
|
|
1827
1843
|
viewBox: "0 0 16 16",
|
|
1828
1844
|
focusable: "false"
|
|
1829
1845
|
});
|
|
1830
|
-
o.appendChild(
|
|
1846
|
+
o.appendChild(F("path", { d: r === "next" ? "M6 3l5 5-5 5" : "M10 3L5 8l5 5" })), a.appendChild(o);
|
|
1831
1847
|
let s = document.createElement("span");
|
|
1832
1848
|
s.className = "tablechart-control-label", s.textContent = e[r];
|
|
1833
1849
|
let c = t[r];
|
|
@@ -1844,66 +1860,67 @@ var Ye = (e) => {
|
|
|
1844
1860
|
]), i;
|
|
1845
1861
|
};
|
|
1846
1862
|
return r.append(i("previous"), i("next")), r;
|
|
1847
|
-
},
|
|
1863
|
+
}, Gt = (e, t, n, r = {
|
|
1848
1864
|
x: 0,
|
|
1849
1865
|
y: 0,
|
|
1850
1866
|
scale: 1
|
|
1851
1867
|
}, i = 2, a = 8, o = 12) => {
|
|
1852
1868
|
let s = e.getBoundingClientRect(), c = s.width, l = s.height, u = Number.parseFloat(getComputedStyle(e).borderLeftWidth) || 0, d = t.getBoundingClientRect().height / 2 + (i - u) * r.scale, f = o * r.scale, { clientWidth: p, clientHeight: m } = document.documentElement, h = n.top - a, g = m - n.bottom - a, _ = l + d <= h ? !0 : l + d <= g ? !1 : h >= g, v = _ ? n.top - d - l : n.bottom + d, y = n.left + n.width / 2, b = Math.max(a, Math.min(y - c / 2, p - c - a));
|
|
1853
1869
|
e.style.left = `${(b - r.x) / r.scale}px`, e.style.top = `${(Math.max(a, Math.min(v, m - l - a)) - r.y) / r.scale}px`, e.dataset.side = _ ? "top" : "bottom", t.style.left = `${Math.max(f, Math.min(y - b, c - f)) / r.scale - u}px`;
|
|
1854
|
-
},
|
|
1870
|
+
}, Kt = "tablechart-tooltip", qt = [
|
|
1855
1871
|
"--tablechart-surface",
|
|
1872
|
+
"--_surface",
|
|
1856
1873
|
"--tablechart-tooltip-surface",
|
|
1857
1874
|
"--tablechart-tooltip-color",
|
|
1858
1875
|
"--tablechart-tooltip-border",
|
|
1859
1876
|
"--tablechart-tooltip-radius",
|
|
1860
1877
|
"--tablechart-tooltip-padding",
|
|
1861
1878
|
"--tablechart-tooltip-shadow"
|
|
1862
|
-
], $ = null,
|
|
1863
|
-
clearTimeout(
|
|
1864
|
-
},
|
|
1865
|
-
if (
|
|
1866
|
-
|
|
1867
|
-
e.pointerType === "mouse" && (
|
|
1879
|
+
], $ = null, Jt, Yt, Xt = null, Zt = null, Qt = 0, $t = () => {
|
|
1880
|
+
clearTimeout(Qt), $ && Xt && ($.hidden = !0, Xt = null, Zt = null);
|
|
1881
|
+
}, en = !1, tn = !0, nn = NaN, rn = NaN, an = !1, on = () => {
|
|
1882
|
+
if (an) return;
|
|
1883
|
+
an = !0, document.addEventListener("pointermove", (e) => {
|
|
1884
|
+
e.pointerType === "mouse" && (tn = e.screenX !== nn || e.screenY !== rn, nn = e.screenX, rn = e.screenY, tn && (en = !1));
|
|
1868
1885
|
}, {
|
|
1869
1886
|
capture: !0,
|
|
1870
1887
|
passive: !0
|
|
1871
1888
|
});
|
|
1872
1889
|
let e = () => {
|
|
1873
|
-
|
|
1890
|
+
en = !0, $t();
|
|
1874
1891
|
};
|
|
1875
1892
|
document.addEventListener("keydown", e, !0), window.addEventListener("scroll", e, {
|
|
1876
1893
|
capture: !0,
|
|
1877
1894
|
passive: !0
|
|
1878
1895
|
});
|
|
1879
|
-
},
|
|
1896
|
+
}, sn = (e, t) => t / Number.parseFloat(getComputedStyle(e).width) || 1, cn = (e) => {
|
|
1880
1897
|
let t = e.tooltipparent;
|
|
1881
1898
|
return (typeof t == "string" ? document.querySelector(t) : t) ?? document.body;
|
|
1882
|
-
},
|
|
1883
|
-
clearTimeout(
|
|
1884
|
-
},
|
|
1899
|
+
}, ln = () => {
|
|
1900
|
+
clearTimeout(Qt), Qt = window.setTimeout($t, 120);
|
|
1901
|
+
}, un = () => {
|
|
1885
1902
|
let e = document.createElement("div");
|
|
1886
|
-
return e.className =
|
|
1903
|
+
return e.className = Kt, e.setAttribute("aria-hidden", "true"), e.hidden = !0, Jt = document.createElement("div"), Yt = document.createElement("div"), Yt.className = `${Kt}-arrow`, e.append(Jt, Yt), document.body.append(e), e.addEventListener("pointerenter", () => clearTimeout(Qt)), e.addEventListener("pointerleave", (e) => e.pointerType === "mouse" && ln()), document.addEventListener("pointerdown", (t) => {
|
|
1887
1904
|
let n = t.target;
|
|
1888
|
-
|
|
1889
|
-
}), window.addEventListener("resize",
|
|
1890
|
-
},
|
|
1905
|
+
Xt && !Xt.plot.contains(n) && !e.contains(n) && $t();
|
|
1906
|
+
}), window.addEventListener("resize", $t), e;
|
|
1907
|
+
}, dn = (e, t) => {
|
|
1891
1908
|
let n = t ? t.style.getPropertyValue("--step") : "x";
|
|
1892
1909
|
return n === "" || Number(n) < e.step;
|
|
1893
|
-
},
|
|
1910
|
+
}, fn = (e, t) => {
|
|
1894
1911
|
let n = e.svg.querySelector(`[data-series="${t + 1}"]:not(.tablechart-hole)`);
|
|
1895
1912
|
if (!n) return;
|
|
1896
1913
|
let r = getComputedStyle(n);
|
|
1897
1914
|
return r.fill && r.fill !== "none" ? r.fill : r.stroke;
|
|
1898
|
-
},
|
|
1915
|
+
}, pn = (e, t, n) => {
|
|
1899
1916
|
let r = e.series.length > 1, i = [];
|
|
1900
1917
|
for (let [n, a] of e.seriesValues.entries()) {
|
|
1901
|
-
if (!
|
|
1918
|
+
if (!dn(e, a[t])) continue;
|
|
1902
1919
|
let o = r ? e.figure.querySelector(`.tablechart-name[data-series="${n + 1}"]`) : null;
|
|
1903
1920
|
i.push({
|
|
1904
1921
|
name: r ? o?.textContent ?? e.series[n].name : "",
|
|
1905
1922
|
value: a[t].textContent ?? "",
|
|
1906
|
-
colour: r ?
|
|
1923
|
+
colour: r ? fn(e, n) : void 0,
|
|
1907
1924
|
sample: o ? {
|
|
1908
1925
|
marker: o.dataset.marker ?? null,
|
|
1909
1926
|
open: o.hasAttribute("data-open"),
|
|
@@ -1913,15 +1930,15 @@ var Ye = (e) => {
|
|
|
1913
1930
|
});
|
|
1914
1931
|
}
|
|
1915
1932
|
let a = e.totals[t];
|
|
1916
|
-
return i.length > 1 &&
|
|
1933
|
+
return i.length > 1 && dn(e, a) && i.push({
|
|
1917
1934
|
name: n.totallabel,
|
|
1918
1935
|
value: a.textContent ?? ""
|
|
1919
1936
|
}), i;
|
|
1920
|
-
},
|
|
1937
|
+
}, mn = (e, t) => {
|
|
1921
1938
|
if (e.type.centre && e.values[t]) return e.values[t].getBoundingClientRect();
|
|
1922
1939
|
let n = e.pointOf?.(t);
|
|
1923
1940
|
if (n) {
|
|
1924
|
-
let t = e.svg.getBoundingClientRect(), r = t.width /
|
|
1941
|
+
let t = e.svg.getBoundingClientRect(), r = t.width / O, i = 4 * r * (O / e.plot.clientWidth);
|
|
1925
1942
|
return new DOMRect(t.left + n[0] * r - i, t.top + n[1] * r - i, 2 * i, 2 * i);
|
|
1926
1943
|
}
|
|
1927
1944
|
let r = e.svg.querySelectorAll(`[data-row="${t + 1}"]:not(.tablechart-connector, .tablechart-leader)`), i = null;
|
|
@@ -1937,49 +1954,49 @@ var Ye = (e) => {
|
|
|
1937
1954
|
100
|
|
1938
1955
|
];
|
|
1939
1956
|
return new DOMRect(a.left + a.width * o / 100, a.top + a.height * s / 100, a.width * c / 100, a.height * l / 100);
|
|
1940
|
-
},
|
|
1941
|
-
if (clearTimeout(
|
|
1942
|
-
let r = (e.type.tooltip ??
|
|
1943
|
-
if (!r.length) return
|
|
1944
|
-
|
|
1957
|
+
}, hn = (e, t, n) => {
|
|
1958
|
+
if (clearTimeout(Qt), Xt === e && Zt === t) return;
|
|
1959
|
+
let r = (e.type.tooltip ?? pn)(e, t, n);
|
|
1960
|
+
if (!r.length) return $t();
|
|
1961
|
+
Xt && Xt !== e && $t(), $ ?? ($ = un());
|
|
1945
1962
|
let i = (e, t, n, r = !1, i) => {
|
|
1946
1963
|
let a = document.createElement("div");
|
|
1947
|
-
if (a.className = `${
|
|
1964
|
+
if (a.className = `${Kt}-line`, n) {
|
|
1948
1965
|
let e = document.createElement("span");
|
|
1949
|
-
e.className = `${
|
|
1966
|
+
e.className = `${Kt}-key`, e.style.background = n, i?.box ? e.dataset.sample = "box" : i && (e.dataset.sample = "line", i.marker && (e.dataset.marker = i.marker), i.line && (e.dataset.line = i.line), e.toggleAttribute("data-open", i.open)), a.append(e);
|
|
1950
1967
|
}
|
|
1951
1968
|
let o = document.createElement("span");
|
|
1952
|
-
if (o.className = `${
|
|
1969
|
+
if (o.className = `${Kt}-${r ? "title" : "name"}`, o.textContent = e, a.append(o), t) {
|
|
1953
1970
|
e && o.append(":");
|
|
1954
1971
|
let n = document.createElement("span");
|
|
1955
|
-
n.className = `${
|
|
1972
|
+
n.className = `${Kt}-value`, n.textContent = t, a.append(n);
|
|
1956
1973
|
}
|
|
1957
1974
|
return a;
|
|
1958
|
-
}, a = (e.figure.querySelectorAll("tbody tr")[t]?.querySelector("th"))?.textContent?.trim() || e.categories[t]?.textContent || e.rows[t].label, o = r.length === 1 && !r[0].name, s = r.every((e) => e.name && !e.value), c =
|
|
1959
|
-
className: `${
|
|
1975
|
+
}, a = (e.figure.querySelectorAll("tbody tr")[t]?.querySelector("th"))?.textContent?.trim() || e.categories[t]?.textContent || e.rows[t].label, o = r.length === 1 && !r[0].name, s = r.every((e) => e.name && !e.value), c = ut(e.figure, t)?.textContent?.trim(), l = c ? [Object.assign(document.createElement("div"), {
|
|
1976
|
+
className: `${Kt}-note`,
|
|
1960
1977
|
textContent: c
|
|
1961
1978
|
})] : [];
|
|
1962
|
-
|
|
1979
|
+
Jt.replaceChildren(...s ? [] : [i(a, o ? r[0].value : "", void 0, !0)], ...o ? [] : r.map(({ name: e, value: t, colour: n, sample: r }) => i(e, t, n, !1, r)), ...l);
|
|
1963
1980
|
let u = getComputedStyle(e.figure);
|
|
1964
|
-
for (let e of
|
|
1981
|
+
for (let e of qt) {
|
|
1965
1982
|
let t = u.getPropertyValue(e).trim();
|
|
1966
1983
|
t ? $.style.setProperty(e, t) : $.style.removeProperty(e);
|
|
1967
1984
|
}
|
|
1968
1985
|
$.style.setProperty("--_color", u.color), $.style.colorScheme = u.colorScheme, $.style.fontFamily = u.fontFamily;
|
|
1969
|
-
let d =
|
|
1970
|
-
$.parentElement !== d && d.append($),
|
|
1986
|
+
let d = cn(n);
|
|
1987
|
+
$.parentElement !== d && d.append($), Xt = e, Zt = t, $.hidden = !1, $.style.left = "0px", $.style.top = "0px";
|
|
1971
1988
|
let f = $.getBoundingClientRect(), p = {
|
|
1972
1989
|
x: f.left,
|
|
1973
1990
|
y: f.top,
|
|
1974
|
-
scale:
|
|
1975
|
-
}, m =
|
|
1976
|
-
$.style.fontSize = `${Number.parseFloat(u.fontSize) * m / p.scale}px`,
|
|
1977
|
-
},
|
|
1991
|
+
scale: sn($, f.width)
|
|
1992
|
+
}, m = sn(e.plot, e.plot.getBoundingClientRect().width);
|
|
1993
|
+
$.style.fontSize = `${Number.parseFloat(u.fontSize) * m / p.scale}px`, Gt($, Yt, mn(e, t), p);
|
|
1994
|
+
}, gn = (e, t, n = !1) => {
|
|
1978
1995
|
let { plot: r } = e;
|
|
1979
|
-
r.setAttribute("data-hover", ""),
|
|
1996
|
+
r.setAttribute("data-hover", ""), on();
|
|
1980
1997
|
let i = (t) => {
|
|
1981
1998
|
if (e.rowAt) {
|
|
1982
|
-
let n = r.getBoundingClientRect(), i =
|
|
1999
|
+
let n = r.getBoundingClientRect(), i = sn(r, n.width);
|
|
1983
2000
|
return e.rowAt((t.clientX - n.left) / i, (t.clientY - n.top) / i);
|
|
1984
2001
|
}
|
|
1985
2002
|
let n = t.target.closest?.("[data-row]")?.getAttribute("data-row");
|
|
@@ -1989,13 +2006,13 @@ var Ye = (e) => {
|
|
|
1989
2006
|
else if (t.getAttribute("data-row") === String(e + 1)) return !0;
|
|
1990
2007
|
return !1;
|
|
1991
2008
|
}, s = null, c = (a) => {
|
|
1992
|
-
if (a.type === "pointerdown")
|
|
1993
|
-
else if (a.pointerType === "mouse" && (!
|
|
2009
|
+
if (a.type === "pointerdown") en = !1;
|
|
2010
|
+
else if (a.pointerType === "mouse" && (!tn || en)) return;
|
|
1994
2011
|
if (!r.classList.contains("is-placed") || !e.figure.classList.contains("is-shown")) return;
|
|
1995
|
-
if (n && !e.figure.hasAttribute("data-left-out")) return
|
|
2012
|
+
if (n && !e.figure.hasAttribute("data-left-out")) return Xt === e ? $t() : void 0;
|
|
1996
2013
|
let c = i(a);
|
|
1997
|
-
if (s = c, c === null || o(c)) return
|
|
1998
|
-
|
|
2014
|
+
if (s = c, c === null || o(c)) return Xt === e ? $t() : void 0;
|
|
2015
|
+
hn(e, c, t);
|
|
1999
2016
|
}, l = (t) => {
|
|
2000
2017
|
let n = t.target;
|
|
2001
2018
|
return e.svg.contains(n) && n.hasAttribute("data-row") ? n : null;
|
|
@@ -2009,37 +2026,37 @@ var Ye = (e) => {
|
|
|
2009
2026
|
if (!r) return;
|
|
2010
2027
|
a.delete(r);
|
|
2011
2028
|
let i = Number(r.getAttribute("data-row")) - 1;
|
|
2012
|
-
s === i && !o(i) && !
|
|
2029
|
+
s === i && !o(i) && !en && hn(e, i, t);
|
|
2013
2030
|
};
|
|
2014
2031
|
e.svg.addEventListener("transitionend", u), e.svg.addEventListener("transitioncancel", u), r.addEventListener("pointermove", c), r.addEventListener("pointerdown", c), r.addEventListener("pointerleave", (t) => {
|
|
2015
|
-
t.pointerType === "mouse" && (s = null,
|
|
2032
|
+
t.pointerType === "mouse" && (s = null, Xt === e && ln());
|
|
2016
2033
|
});
|
|
2017
|
-
},
|
|
2018
|
-
|
|
2019
|
-
},
|
|
2020
|
-
area:
|
|
2021
|
-
bar:
|
|
2022
|
-
column:
|
|
2023
|
-
donut:
|
|
2024
|
-
line:
|
|
2025
|
-
waterfall:
|
|
2026
|
-
},
|
|
2027
|
-
|
|
2028
|
-
},
|
|
2034
|
+
}, _n = (e) => {
|
|
2035
|
+
Xt === e && $t();
|
|
2036
|
+
}, vn = {
|
|
2037
|
+
area: it,
|
|
2038
|
+
bar: ze,
|
|
2039
|
+
column: Be,
|
|
2040
|
+
donut: Ue,
|
|
2041
|
+
line: rt,
|
|
2042
|
+
waterfall: st
|
|
2043
|
+
}, yn = (e, t) => {
|
|
2044
|
+
vn[e] = t, Object.assign(bn, t.annotations), xn.splice(0, Infinity, ...Object.keys(bn));
|
|
2045
|
+
}, bn = {
|
|
2029
2046
|
"axis-break": ne,
|
|
2030
|
-
trend:
|
|
2031
|
-
bracket:
|
|
2032
|
-
reference:
|
|
2033
|
-
note:
|
|
2034
|
-
},
|
|
2047
|
+
trend: ke,
|
|
2048
|
+
bracket: le,
|
|
2049
|
+
reference: De,
|
|
2050
|
+
note: Te
|
|
2051
|
+
}, xn = Object.keys(bn), Sn = (e) => {
|
|
2035
2052
|
let t = "";
|
|
2036
2053
|
for (let n = e.previousSibling; n && (t = (n.textContent ?? "") + t, !t.trim()); n = n.previousSibling);
|
|
2037
2054
|
return t.trim();
|
|
2038
|
-
},
|
|
2055
|
+
}, Cn = [
|
|
2039
2056
|
"straight",
|
|
2040
2057
|
"step",
|
|
2041
2058
|
"smooth"
|
|
2042
|
-
],
|
|
2059
|
+
], wn = (e, t, n, r, i) => {
|
|
2043
2060
|
let a = t === r, [o, s, c] = a ? [
|
|
2044
2061
|
Math.min(e, n),
|
|
2045
2062
|
Math.max(e, n),
|
|
@@ -2050,17 +2067,17 @@ var Ye = (e) => {
|
|
|
2050
2067
|
e
|
|
2051
2068
|
], l = i.filter(([e, t, n, r]) => a ? t <= c && c <= t + r : e <= c && c <= e + n).map(([e, t, n, r]) => a ? [e, e + n] : [t, t + r]).sort((e, t) => e[0] - t[0]), u = [], d = o;
|
|
2052
2069
|
for (let [e, t] of l) e > d && u.push([d, Math.min(e, s)]), d = Math.max(d, t);
|
|
2053
|
-
return d < s && u.push([d, s]), u.map(([e, t]) => a ? `M${
|
|
2054
|
-
},
|
|
2070
|
+
return d < s && u.push([d, s]), u.map(([e, t]) => a ? `M${P(e)},${P(c)}H${P(t)}` : `M${P(c)},${P(e)}V${P(t)}`).join("");
|
|
2071
|
+
}, Tn = (e, t) => {
|
|
2055
2072
|
let [n, r, i, a] = [
|
|
2056
2073
|
"x1",
|
|
2057
2074
|
"y1",
|
|
2058
2075
|
"x2",
|
|
2059
2076
|
"y2"
|
|
2060
|
-
].map((t) => Number(e.getAttribute(t))), o =
|
|
2077
|
+
].map((t) => Number(e.getAttribute(t))), o = F("path", { d: wn(n, r, i, a, t) });
|
|
2061
2078
|
for (let { name: t, value: n } of Array.from(e.attributes)) /^[xy][12]$/.test(t) || o.setAttribute(t, n);
|
|
2062
2079
|
e.replaceWith(o);
|
|
2063
|
-
},
|
|
2080
|
+
}, En = (e) => Array.from((e.getAttribute("d") ?? "").matchAll(/M(-?[\d.]+),(-?[\d.]+)([HV])(-?[\d.]+)/g), ([, e, t, n, r]) => n === "H" ? [
|
|
2064
2081
|
+e,
|
|
2065
2082
|
+t,
|
|
2066
2083
|
+r,
|
|
@@ -2070,19 +2087,19 @@ var Ye = (e) => {
|
|
|
2070
2087
|
+t,
|
|
2071
2088
|
+e,
|
|
2072
2089
|
+r
|
|
2073
|
-
]),
|
|
2090
|
+
]), Dn = (e, [t, n, r, i]) => e.map(([e, a, o, s]) => a === s ? n <= a && a <= n + i && Math.max(e, t) < Math.min(o, t + r) ? `M${P(Math.max(e, t))},${P(a)}H${P(Math.min(o, t + r))}` : "" : t <= e && e <= t + r && Math.max(a, n) < Math.min(s, n + i) ? `M${P(e)},${P(Math.max(a, n))}V${P(Math.min(s, n + i))}` : "").join(""), On = (e, t, n) => {
|
|
2074
2091
|
let r = e.getAttribute(t);
|
|
2075
2092
|
return r === null ? n : r !== "false";
|
|
2076
|
-
},
|
|
2093
|
+
}, kn = (e, t) => !!t.animate && e.getAttribute("data-chart-animate") !== "false", An = (e, t) => {
|
|
2077
2094
|
let n = e.dataset.chartShape;
|
|
2078
|
-
return n &&
|
|
2079
|
-
},
|
|
2095
|
+
return n && Cn.includes(n) ? n : Cn.includes(t.shape) ? t.shape : "straight";
|
|
2096
|
+
}, jn = (e) => {
|
|
2080
2097
|
for (let t of e.querySelectorAll("br")) {
|
|
2081
|
-
if (t.previousElementSibling?.classList.contains("tablechart-sr") || /[.!?:;,…]$/.test(
|
|
2098
|
+
if (t.previousElementSibling?.classList.contains("tablechart-sr") || /[.!?:;,…]$/.test(Sn(t))) continue;
|
|
2082
2099
|
let e = document.createElement("span");
|
|
2083
2100
|
e.className = y, e.textContent = ". ", t.before(e);
|
|
2084
2101
|
}
|
|
2085
|
-
},
|
|
2102
|
+
}, Mn = (e, t, n) => {
|
|
2086
2103
|
let r = e.querySelector("table");
|
|
2087
2104
|
if (!r) return null;
|
|
2088
2105
|
let i = r.querySelector("tfoot [data-chart-total]");
|
|
@@ -2093,23 +2110,23 @@ var Ye = (e) => {
|
|
|
2093
2110
|
s && n.langattribute && o.setAttribute(n.langattribute, `${s}-total`);
|
|
2094
2111
|
let c = a.insertCell();
|
|
2095
2112
|
return c.setAttribute("data-chart-total", ""), c.dataset.value = t.dataset.value ?? "0", a.prepend(o), c;
|
|
2096
|
-
},
|
|
2113
|
+
}, Nn = 0, Pn = (e) => {
|
|
2097
2114
|
let t = e.querySelector(":scope > figcaption");
|
|
2098
2115
|
if (!t) return;
|
|
2099
|
-
|
|
2116
|
+
jn(t);
|
|
2100
2117
|
let n = (e) => e.hasAttribute("aria-label") || e.hasAttribute("aria-labelledby"), r = (e) => {
|
|
2101
|
-
t.id || (t.id = `tablechart-caption-${++
|
|
2118
|
+
t.id || (t.id = `tablechart-caption-${++Nn}`), e.setAttribute("aria-labelledby", t.id);
|
|
2102
2119
|
};
|
|
2103
2120
|
e.tagName === "FIGURE" && !n(e) && r(e);
|
|
2104
2121
|
let i = e.querySelector("table");
|
|
2105
2122
|
i && !n(i) && !i.querySelector(":scope > caption") && r(i);
|
|
2106
|
-
},
|
|
2107
|
-
let o = a ?? (r.getAttribute("data-chart") || "column"), s =
|
|
2108
|
-
if (!s) return console.warn(`[${e}] Unknown chart type "${o}". Known types: ${Object.keys(
|
|
2109
|
-
let c =
|
|
2123
|
+
}, Fn = (r, i, a = null) => {
|
|
2124
|
+
let o = a ?? (r.getAttribute("data-chart") || "column"), s = vn[o];
|
|
2125
|
+
if (!s) return console.warn(`[${e}] Unknown chart type "${o}". Known types: ${Object.keys(vn).join(", ")}.`), r.setAttribute("data-chart-empty", ""), null;
|
|
2126
|
+
let c = dt(r, i.langattribute);
|
|
2110
2127
|
if (!c.length) return console.warn(r.querySelector("table") ? `[${e}] A chart has no rows in its table, so there is nothing to draw.` : `[${e}] A chart has no table, so there is nothing to draw.`, r), r.setAttribute("data-chart-empty", ""), null;
|
|
2111
|
-
|
|
2112
|
-
let l =
|
|
2128
|
+
Pn(r);
|
|
2129
|
+
let l = mt(r, c, i.langattribute);
|
|
2113
2130
|
if (l.length > 1 && !s.series && !s.columns && (console.warn(`[${e}] A ${o} chart uses only the first of its ${l.length} value columns.`), l = l.slice(0, 1)), l.some((e) => e.chart)) {
|
|
2114
2131
|
let t = s.lines ? l.every((e) => e.chart) ? "Every series has data-chart=\"line\", so the chart is a line chart: set data-chart=\"line\" on the figure." : null : `A ${o} chart cannot draw a series as a line.`;
|
|
2115
2132
|
t && (console.warn(`[${e}] ${t}`), l = l.map((e) => ({
|
|
@@ -2123,40 +2140,40 @@ var Ye = (e) => {
|
|
|
2123
2140
|
m && !s.stackable && console.warn(`[${e}] A ${o} chart cannot be stacked.`), m && u && console.warn(`[${e}] A chart with a line cannot be stacked.`);
|
|
2124
2141
|
let h = m && !!s.stackable && d && !u, _ = document.createElement("div");
|
|
2125
2142
|
_.className = t, _.setAttribute("aria-hidden", "true");
|
|
2126
|
-
let v =
|
|
2143
|
+
let v = F("svg", {
|
|
2127
2144
|
role: "presentation",
|
|
2128
2145
|
focusable: "false"
|
|
2129
2146
|
});
|
|
2130
2147
|
_.appendChild(v);
|
|
2131
2148
|
let y = r.querySelector(":scope > table"), b = (e) => y ? y.before(e) : r.append(e);
|
|
2132
2149
|
b(_);
|
|
2133
|
-
let x = s.centre ? c.filter((e) => !e.isTotal) : c, S = Math.max(0,
|
|
2134
|
-
|
|
2150
|
+
let x = s.centre ? c.filter((e) => !e.isTotal) : c, S = Math.max(0, G(x.flatMap((e) => e.cells.slice(0, l.length).map((e) => re(e.number))))), C = l.map((e, t) => Math.max(0, G(c.map((e) => re(e.cells[t]?.number ?? ""))))), w = document.createElement("div");
|
|
2151
|
+
w.className = "tablechart-values", _.appendChild(w);
|
|
2135
2152
|
let D = l.map((e, t) => c.map((e, r) => {
|
|
2136
|
-
let i = e.cells[t] ?? e.cells[0], a =
|
|
2153
|
+
let i = e.cells[t] ?? e.cells[0], a = L(n, w);
|
|
2137
2154
|
return a.classList.add(...e.classes), a.dataset.value = String(i.value), i.prefix && (a.dataset.prefix = i.prefix), i.suffix && (a.dataset.suffix = i.suffix), i.missing && (a.dataset.missing = i.raw), d && (a.dataset.series = String(t + 1)), s.columns && (a.dataset.decimals = String(C[t])), a.dataset.row = String(r + 1), a.style.setProperty("--i", String(e.slot)), s.numbers === !1 && (t || r) && (a.dataset.place = "none"), a;
|
|
2138
2155
|
})), O = D[0], k = h && s.totals ? c.map((e, t) => {
|
|
2139
|
-
let r =
|
|
2140
|
-
r.classList.add(...e.classes), r.dataset.kind = "total", r.dataset.row = String(t + 1), r.dataset.value = String(
|
|
2156
|
+
let r = L(n, w);
|
|
2157
|
+
r.classList.add(...e.classes), r.dataset.kind = "total", r.dataset.row = String(t + 1), r.dataset.value = String(Fe(e, l.length));
|
|
2141
2158
|
let i = e.cells[0];
|
|
2142
2159
|
return i.prefix && (r.dataset.prefix = i.prefix), i.suffix && (r.dataset.suffix = i.suffix), r.style.setProperty("--i", String(e.slot)), r;
|
|
2143
2160
|
}) : [], A = c[c.length - 1], j = l.some((e) => e.focus), M = r.getAttribute("data-chart-legend"), N = d && !s.columns && (M === null ? i.legend || s.legend !== void 0 : M !== "false") ? document.createElement("div") : null;
|
|
2144
2161
|
N && (N.className = p, N.setAttribute("aria-hidden", "true"), N.inert = !0);
|
|
2145
|
-
let
|
|
2146
|
-
let n =
|
|
2162
|
+
let P = l.filter((e) => e.chart), I = d && !s.columns ? l.map((e, t) => {
|
|
2163
|
+
let n = L(f, N ?? _);
|
|
2147
2164
|
N && (n.dataset.place = "legend");
|
|
2148
2165
|
let a = e.chart ? void 0 : s.legend ?? s.swatch;
|
|
2149
|
-
if (a && (n.dataset.swatch = a), n.textContent = e.name, !a &&
|
|
2150
|
-
let r = e.chart ?
|
|
2166
|
+
if (a && (n.dataset.swatch = a), n.textContent = e.name, !a && An(r, i) !== "step") {
|
|
2167
|
+
let r = e.chart ? We(P, P.indexOf(e)) : We(l, t);
|
|
2151
2168
|
n.dataset.marker = r.shape, n.toggleAttribute("data-open", r.open);
|
|
2152
2169
|
}
|
|
2153
2170
|
return e.line && !a && (n.dataset.line = e.line), e.key && i.langattribute && n.setAttribute(i.langattribute, e.key), n.dataset.series = String(t + 1), n.style.setProperty("--n", String(t)), n.style.setProperty("--palette", `var(--tablechart-color-${t + 1})`), n.style.setProperty("--m", j && !e.focus ? "1" : "0"), n.style.setProperty("--i", String(A.slot)), n;
|
|
2154
|
-
}) : [], R = s.centre ?
|
|
2171
|
+
}) : [], R = s.centre ? L(g, _) : null;
|
|
2155
2172
|
if (R) {
|
|
2156
2173
|
let e = c.find((e) => e.isTotal), t = e ? e.value : c.reduce((e, t) => e + Math.abs(t.value), 0);
|
|
2157
2174
|
R.dataset.value = String(t), e && (R.dataset.decimals = String(re(e.number)));
|
|
2158
2175
|
}
|
|
2159
|
-
let z = R && !c.some((e) => e.isTotal) ?
|
|
2176
|
+
let z = R && !c.some((e) => e.isTotal) ? Mn(r, R, i) : null, B = s.categories === "beside", V = document.createElement("div");
|
|
2160
2177
|
V.className = "tablechart-categories", V.setAttribute("aria-hidden", "true"), V.inert = !0, B ? V.dataset.place = "beside" : s.centre && (V.dataset.place = "key"), V.style.setProperty("--_columns", String(c.length));
|
|
2161
2178
|
let H = 0;
|
|
2162
2179
|
for (let [e, t] of c.entries()) {
|
|
@@ -2164,16 +2181,16 @@ var Ye = (e) => {
|
|
|
2164
2181
|
n.classList.add(...t.classes), n.textContent = t.short ?? t.label, t.key && i.langattribute && n.setAttribute(i.langattribute, t.short ? `${t.key}-short` : t.key), s.centre && (n.dataset.kind = t.isTotal ? "total" : "slice", t.isTotal || (n.dataset.slice = String(H + 1), n.style.setProperty("--n", String(H)), n.style.setProperty("--palette", `var(--tablechart-color-${H + 1})`), H += 1)), n.style.setProperty("--i", String(t.slot)), n.dataset.row = String(e + 1), V.appendChild(n);
|
|
2165
2182
|
}
|
|
2166
2183
|
s.centre && r.style.setProperty("--_slice-count", String(H)), B ? _.appendChild(V) : b(V), N && b(N);
|
|
2167
|
-
let U = l.filter((e) => !e.group), ee = !s.axes && !s.centre &&
|
|
2184
|
+
let U = l.filter((e) => !e.group), ee = !s.axes && !s.centre && On(r, "data-chart-axis", i.axis), te = s.axes ? {
|
|
2168
2185
|
titles: U.slice(0, 2).map((e, t) => {
|
|
2169
|
-
let n =
|
|
2186
|
+
let n = L(`${T}-title`, _);
|
|
2170
2187
|
return n.dataset.axis = t ? "y" : "x", n.textContent = e.name, e.key && i.langattribute && n.setAttribute(i.langattribute, e.key), n;
|
|
2171
2188
|
}),
|
|
2172
|
-
ticks:
|
|
2189
|
+
ticks: L(`${E}s`, _),
|
|
2173
2190
|
numbers: !0
|
|
2174
|
-
} : ee || !s.centre &&
|
|
2191
|
+
} : ee || !s.centre && On(r, "data-chart-grid", i.grid) ? {
|
|
2175
2192
|
titles: [],
|
|
2176
|
-
ticks:
|
|
2193
|
+
ticks: L(`${E}s`, _),
|
|
2177
2194
|
numbers: ee
|
|
2178
2195
|
} : null;
|
|
2179
2196
|
s.text?.({
|
|
@@ -2183,21 +2200,21 @@ var Ye = (e) => {
|
|
|
2183
2200
|
series: l,
|
|
2184
2201
|
config: i
|
|
2185
2202
|
});
|
|
2186
|
-
let
|
|
2187
|
-
s.axes && r.querySelector("tbody [data-fragment], thead [data-fragment]") && Q.log(`A ${o} chart has one step, with data-fragment on the figure; its rows and columns have no steps of their own.`, r),
|
|
2188
|
-
let
|
|
2203
|
+
let W = kn(r, i) ? Bt(r, !!s.axes) : null;
|
|
2204
|
+
s.axes && r.querySelector("tbody [data-fragment], thead [data-fragment]") && Q.log(`A ${o} chart has one step, with data-fragment on the figure; its rows and columns have no steps of their own.`, r), W && r.setAttribute("data-steps", "");
|
|
2205
|
+
let ne = r.getAttribute("data-chart-keys"), K = W && i.controls ? Wt({
|
|
2189
2206
|
previous: i.previouslabel,
|
|
2190
2207
|
next: i.nextlabel,
|
|
2191
2208
|
hint: i.stephint
|
|
2192
2209
|
}, {
|
|
2193
|
-
previous:
|
|
2194
|
-
next:
|
|
2195
|
-
hint:
|
|
2210
|
+
previous: ne && `${ne}-previous`,
|
|
2211
|
+
next: ne && `${ne}-next`,
|
|
2212
|
+
hint: ne && `${ne}-step`
|
|
2196
2213
|
}, i.langattribute) : null;
|
|
2197
2214
|
K && b(K);
|
|
2198
2215
|
let ie = Array.from(r.querySelectorAll("[data-annotation]")).map((t) => {
|
|
2199
|
-
let n = t.getAttribute("data-annotation"), r =
|
|
2200
|
-
if (!r) return console.warn(`[${e}] Unknown annotation "${n}". Known annotations: ${Object.keys(
|
|
2216
|
+
let n = t.getAttribute("data-annotation"), r = bn[n];
|
|
2217
|
+
if (!r) return console.warn(`[${e}] Unknown annotation "${n}". Known annotations: ${Object.keys(bn).join(", ")}.`), null;
|
|
2201
2218
|
let i = Number.parseInt(t.getAttribute("data-series") ?? "1", 10), a = i >= 1 && i <= l.length ? i - 1 : 0;
|
|
2202
2219
|
return i !== a + 1 && console.warn(`[${e}] An annotation reads line ${i}, which is not there; it reads line 1.`), {
|
|
2203
2220
|
spec: t,
|
|
@@ -2212,13 +2229,13 @@ var Ye = (e) => {
|
|
|
2212
2229
|
let n = document.createElement("span");
|
|
2213
2230
|
n.dataset.annotation = "note", n.dataset.row = String(e + 1), n.textContent = t.note, t.noteKey && n.setAttribute("data-i18n", t.noteKey), ie.push({
|
|
2214
2231
|
spec: n,
|
|
2215
|
-
type:
|
|
2216
|
-
badge:
|
|
2232
|
+
type: Te,
|
|
2233
|
+
badge: Te.create(n, _),
|
|
2217
2234
|
series: 0,
|
|
2218
2235
|
after: c.length
|
|
2219
2236
|
});
|
|
2220
2237
|
}
|
|
2221
|
-
|
|
2238
|
+
kn(r, i) && r.setAttribute("data-animate", Rn(r, o, i, !!W));
|
|
2222
2239
|
let q = {
|
|
2223
2240
|
figure: r,
|
|
2224
2241
|
plot: _,
|
|
@@ -2229,7 +2246,7 @@ var Ye = (e) => {
|
|
|
2229
2246
|
values: O,
|
|
2230
2247
|
series: l,
|
|
2231
2248
|
seriesValues: D,
|
|
2232
|
-
names: N ? [] :
|
|
2249
|
+
names: N ? [] : I,
|
|
2233
2250
|
categories: Array.from(V.children),
|
|
2234
2251
|
centre: R,
|
|
2235
2252
|
axes: te,
|
|
@@ -2241,41 +2258,41 @@ var Ye = (e) => {
|
|
|
2241
2258
|
pointOf: null,
|
|
2242
2259
|
annotations: ie,
|
|
2243
2260
|
checks: [],
|
|
2244
|
-
plan:
|
|
2261
|
+
plan: W,
|
|
2245
2262
|
step: 0,
|
|
2246
2263
|
controls: K
|
|
2247
|
-
}, ae = () =>
|
|
2264
|
+
}, ae = () => $n(r, v);
|
|
2248
2265
|
v.addEventListener("transitionend", ae), v.addEventListener("transitioncancel", ae), K?.addEventListener("click", (e) => {
|
|
2249
2266
|
let t = e.target.closest("button")?.dataset.go;
|
|
2250
|
-
t &&
|
|
2251
|
-
}),
|
|
2267
|
+
t && Ut(q, q.step + (t === "next" ? 1 : -1));
|
|
2268
|
+
}), Ut(q, 0, !0);
|
|
2252
2269
|
let oe = r.getAttribute("data-chart-tooltip"), se = oe === "false" ? !1 : oe === "auto" ? "auto" : oe !== null || i.tooltip;
|
|
2253
|
-
return se &&
|
|
2254
|
-
},
|
|
2270
|
+
return se && gn(q, i, se === "auto"), Jn(q, i), q;
|
|
2271
|
+
}, In = {
|
|
2255
2272
|
grow: "grow",
|
|
2256
2273
|
sweep: "sweep"
|
|
2257
|
-
},
|
|
2274
|
+
}, Ln = [
|
|
2258
2275
|
"never",
|
|
2259
2276
|
"auto",
|
|
2260
2277
|
"print",
|
|
2261
2278
|
"always"
|
|
2262
|
-
],
|
|
2263
|
-
let i = t === "line" || t === "area", a =
|
|
2279
|
+
], Rn = (e, t, n, r) => {
|
|
2280
|
+
let i = t === "line" || t === "area", a = In[e.getAttribute("data-chart-animate") ?? ""] ?? In[String(n.animate)];
|
|
2264
2281
|
return i ? r ? "sweep" : a ?? "sweep" : t === "donut" || t === "waterfall" ? a ?? "grow" : "grow";
|
|
2265
|
-
},
|
|
2282
|
+
}, zn = (e) => {
|
|
2266
2283
|
let t = getComputedStyle(e).getPropertyValue("--tablechart-value-align").trim();
|
|
2267
2284
|
return t === "start" || t === "center" || t === "end" ? t : null;
|
|
2268
|
-
},
|
|
2285
|
+
}, Bn = (e, t, n) => e.dataset.chartLabels === "inside" || e.dataset.chartLabels !== "outside" && (t.labels === "inside" || n) ? "inside" : "outside", Vn = (e, t, n, r) => {
|
|
2269
2286
|
let i = getComputedStyle(e), a = (i.getPropertyValue(n).trim() || r).match(/^(\d+(?:\.\d+)?)(px|%|em|rem)$/);
|
|
2270
2287
|
if (!a) return null;
|
|
2271
2288
|
let o = Number(a[1]);
|
|
2272
|
-
return a[2] === "%" ? o / 100 *
|
|
2273
|
-
},
|
|
2274
|
-
let n = e.getBoundingClientRect(), r =
|
|
2289
|
+
return a[2] === "%" ? o / 100 * O : o * (a[2] === "em" ? Number.parseFloat(i.fontSize) : a[2] === "rem" ? Number.parseFloat(getComputedStyle(document.documentElement).fontSize) : 1) * t;
|
|
2290
|
+
}, Hn = (e, t) => Vn(e, t, "--tablechart-bar-max", "60px") ?? Infinity, Un = (e, t) => {
|
|
2291
|
+
let n = e.getBoundingClientRect(), r = O / n.width, i = getComputedStyle(e), a = Number.parseFloat(i.lineHeight) / Number.parseFloat(i.fontSize) || 1.2;
|
|
2275
2292
|
return (e) => {
|
|
2276
2293
|
if (e.dataset.place === "none" || e.hidden || e.hasAttribute("data-left-out")) return [];
|
|
2277
2294
|
let i = e.getBoundingClientRect(), o = i.height * r / a, s = Array.from(e.style).filter((e) => e.startsWith("--")).map((t) => `${t}:${e.style.getPropertyValue(t)}`);
|
|
2278
|
-
return i.width ? [
|
|
2295
|
+
return i.width ? [F("rect", {
|
|
2279
2296
|
class: h,
|
|
2280
2297
|
"data-for": "text",
|
|
2281
2298
|
x: (i.left - n.left) * r - 3 * t,
|
|
@@ -2285,21 +2302,21 @@ var Ye = (e) => {
|
|
|
2285
2302
|
style: s.join("; ")
|
|
2286
2303
|
})] : [];
|
|
2287
2304
|
};
|
|
2288
|
-
},
|
|
2305
|
+
}, Wn = [
|
|
2289
2306
|
"first",
|
|
2290
2307
|
"last",
|
|
2291
2308
|
"highest",
|
|
2292
2309
|
"lowest",
|
|
2293
2310
|
"outliers"
|
|
2294
|
-
],
|
|
2311
|
+
], Gn = (t, n) => {
|
|
2295
2312
|
let r = (t.getAttribute("data-chart-values") ?? n.values).trim().toLowerCase().split(/\s+/).filter(Boolean);
|
|
2296
2313
|
for (let t of r) [
|
|
2297
2314
|
"auto",
|
|
2298
2315
|
"all",
|
|
2299
2316
|
"none",
|
|
2300
|
-
...
|
|
2301
|
-
].includes(t) || console.warn(`[${e}] data-chart-values knows no "${t}". It takes auto, all, none, ${
|
|
2302
|
-
let i = r.filter((e) =>
|
|
2317
|
+
...Wn
|
|
2318
|
+
].includes(t) || console.warn(`[${e}] data-chart-values knows no "${t}". It takes auto, all, none, ${Wn.join(", ")}.`);
|
|
2319
|
+
let i = r.filter((e) => Wn.includes(e));
|
|
2303
2320
|
return r.includes("all") ? {
|
|
2304
2321
|
mode: "all",
|
|
2305
2322
|
keys: []
|
|
@@ -2308,27 +2325,27 @@ var Ye = (e) => {
|
|
|
2308
2325
|
keys: []
|
|
2309
2326
|
} : r.includes("auto") || !i.length ? {
|
|
2310
2327
|
mode: "auto",
|
|
2311
|
-
keys: i.length ? i :
|
|
2328
|
+
keys: i.length ? i : Wn
|
|
2312
2329
|
} : {
|
|
2313
2330
|
mode: "set",
|
|
2314
2331
|
keys: i
|
|
2315
2332
|
};
|
|
2316
|
-
},
|
|
2317
|
-
let i = e.getAttribute("data-chart-table"), a = i &&
|
|
2333
|
+
}, Kn = ({ figure: e, rows: t, series: n }, r) => {
|
|
2334
|
+
let i = e.getAttribute("data-chart-table"), a = i && Ln.includes(i) ? i : r.table;
|
|
2318
2335
|
a === "never" ? e.removeAttribute("data-table") : e.setAttribute("data-table", a);
|
|
2319
2336
|
let o = e.getAttribute("data-chart-summary");
|
|
2320
|
-
e.setAttribute("data-summary", o &&
|
|
2321
|
-
},
|
|
2337
|
+
e.setAttribute("data-summary", o && Ln.includes(o) ? o : r.summary), e.toggleAttribute("data-long", t.length * n.filter((e) => !e.group).length > r.tablelimit);
|
|
2338
|
+
}, qn = (t, n) => {
|
|
2322
2339
|
let { plot: r, svg: i, rows: l, type: m, values: g, series: _, seriesValues: y, names: b, annotations: x } = t;
|
|
2323
|
-
|
|
2340
|
+
Kn(t, n);
|
|
2324
2341
|
let S = getComputedStyle(t.figure);
|
|
2325
2342
|
t.figure.toggleAttribute("data-series-range", !!S.getPropertyValue("--tablechart-series-color-end").trim()), t.figure.toggleAttribute("data-slice-range", !!S.getPropertyValue("--tablechart-slice-color-end").trim());
|
|
2326
|
-
let C = Number.parseFloat(t.figure.dataset.chartAspect ?? ""),
|
|
2343
|
+
let C = Number.parseFloat(t.figure.dataset.chartAspect ?? ""), w = C > 0 ? C : m.aspect ?? n.aspect, k = m.categories === "beside", A = t.axes && !m.axes ? t.axes : null, j = k ? null : t.categories[0]?.parentElement, M = null;
|
|
2327
2344
|
if (A) {
|
|
2328
2345
|
r.style.margin = "", j && (j.style.marginLeft = "");
|
|
2329
2346
|
let e = r.clientWidth;
|
|
2330
2347
|
if (!e) return !1;
|
|
2331
|
-
let i = m.segments?.(l) ?? [], a = t.stacked ? l.flatMap((e) => Object.values(
|
|
2348
|
+
let i = m.segments?.(l) ?? [], a = t.stacked ? l.flatMap((e) => Object.values(Pe(e, _.length, m.running))) : i.some((e) => e.kind === "up" || e.kind === "down") ? i.flatMap((e) => [e.from, e.to]) : l.flatMap((e) => e.cells.slice(0, _.length).filter((e) => !e.missing).map((e) => e.value)), o = Math.min(0, -G(a.map((e) => -e))), s = Math.max(0, G(a)), c = Number.parseFloat(getComputedStyle(r).fontSize) || 16, { chartScaleY: u, chartScale: d } = t.figure.dataset, f = bt(u ?? d);
|
|
2332
2349
|
if (f && f.length > 2) M = {
|
|
2333
2350
|
min: f[0],
|
|
2334
2351
|
max: f[f.length - 1],
|
|
@@ -2336,46 +2353,46 @@ var Ye = (e) => {
|
|
|
2336
2353
|
ticks: f
|
|
2337
2354
|
};
|
|
2338
2355
|
else {
|
|
2339
|
-
let [t, n] = f ?? [o, s], r =
|
|
2356
|
+
let [t, n] = f ?? [o, s], r = _t(n - t, Math.max((k ? e / 9 : e * w / 3) / c, 2)), i = (e, t) => f ? e : Number(((t ? Math.ceil : Math.floor)(e / r - 1e-9 * (t ? 1 : -1)) * r).toPrecision(12)), a = i(t, !1), l = i(n, !0);
|
|
2340
2357
|
M = {
|
|
2341
2358
|
min: a,
|
|
2342
2359
|
max: l,
|
|
2343
2360
|
step: r,
|
|
2344
|
-
ticks:
|
|
2361
|
+
ticks: vt(a, l, r)
|
|
2345
2362
|
};
|
|
2346
2363
|
}
|
|
2347
2364
|
A.ticks.textContent = "";
|
|
2348
|
-
let p = l.find((e) => !e.missing), h =
|
|
2365
|
+
let p = l.find((e) => !e.missing), h = G(M.ticks.map((e) => re(String(e))));
|
|
2349
2366
|
for (let e of M.ticks) {
|
|
2350
|
-
let t =
|
|
2351
|
-
t.dataset.value = String(e), t.dataset.place = "none", p?.prefix && (t.dataset.prefix = p.prefix), p?.suffix && (t.dataset.suffix = p.suffix),
|
|
2367
|
+
let t = L(E, A.ticks);
|
|
2368
|
+
t.dataset.value = String(e), t.dataset.place = "none", p?.prefix && (t.dataset.prefix = p.prefix), p?.suffix && (t.dataset.suffix = p.suffix), Yn(t, h, n.locale);
|
|
2352
2369
|
}
|
|
2353
2370
|
if (A.numbers) {
|
|
2354
2371
|
let e = Array.from(A.ticks.children);
|
|
2355
2372
|
for (let t of e) delete t.dataset.place;
|
|
2356
|
-
|
|
2373
|
+
me(e), k ? r.style.marginBottom = `${(e[0] ? J(e[0]).height : 0) + 6}px` : (r.style.marginLeft = `${G([0, ...e.map((e) => J(e).width)]) + 10}px`, j && (j.style.marginLeft = r.style.marginLeft));
|
|
2357
2374
|
}
|
|
2358
2375
|
}
|
|
2359
|
-
let
|
|
2360
|
-
if (!
|
|
2361
|
-
let
|
|
2376
|
+
let N = r.clientWidth;
|
|
2377
|
+
if (!N) return !1;
|
|
2378
|
+
let I = O / N, z = O * w;
|
|
2362
2379
|
r.classList.add(v);
|
|
2363
2380
|
let B = m.numbers === !1 ? g.slice(0, 1) : [...y.flat(), ...t.totals];
|
|
2364
2381
|
for (let e of B) delete e.dataset.place, e.removeAttribute("data-left-out"), e.removeAttribute("data-cut");
|
|
2365
2382
|
r.style.removeProperty("--_fit"), r.toggleAttribute("data-grouped", !!m.groups && !t.stacked && _.filter((e) => !e.chart && !e.group).length > 1), t.categories[0]?.parentElement?.style.removeProperty("--_beside");
|
|
2366
|
-
let V = m.axes ? t.axes : null,
|
|
2383
|
+
let V = m.axes ? t.axes : null, H = [];
|
|
2367
2384
|
if (V) {
|
|
2368
|
-
let e = Number.parseFloat(getComputedStyle(r).fontSize) || 16, i = _.flatMap((e, t) => e.group ? [] : [t]).slice(0, 2), a = l.filter((e) => i.every((t) => e.cells[t] && !e.cells[t].missing)), { chartScaleX: o, chartScaleY: s, chartScale: c } = t.figure.dataset, u = [
|
|
2369
|
-
|
|
2370
|
-
let r = a[0]?.cells[i[t]], o =
|
|
2385
|
+
let e = Number.parseFloat(getComputedStyle(r).fontSize) || 16, i = _.flatMap((e, t) => e.group ? [] : [t]).slice(0, 2), a = l.filter((e) => i.every((t) => e.cells[t] && !e.cells[t].missing)), { chartScaleX: o, chartScaleY: s, chartScale: c } = t.figure.dataset, u = [bt(o), bt(s ?? c)];
|
|
2386
|
+
H = i.map((t, n) => xt(a.length ? a.map((e) => e.cells[t].value) : [0, 1], Math.max(n ? z / I / (e * 4) : N / (e * 9), 4), u[n])), V.ticks.textContent = "", H.forEach((e, t) => {
|
|
2387
|
+
let r = a[0]?.cells[i[t]], o = G(e.ticks.map((e) => re(String(e))));
|
|
2371
2388
|
for (let i of e.ticks) {
|
|
2372
|
-
let e =
|
|
2373
|
-
e.dataset.axis = t ? "y" : "x", e.dataset.value = String(i), r?.prefix && (e.dataset.prefix = r.prefix), r?.suffix && (e.dataset.suffix = r.suffix),
|
|
2389
|
+
let e = L(E, V.ticks);
|
|
2390
|
+
e.dataset.axis = t ? "y" : "x", e.dataset.value = String(i), r?.prefix && (e.dataset.prefix = r.prefix), r?.suffix && (e.dataset.suffix = r.suffix), Yn(e, o, n.locale);
|
|
2374
2391
|
}
|
|
2375
2392
|
});
|
|
2376
2393
|
}
|
|
2377
2394
|
let te = V ? Array.from(V.ticks.children) : [];
|
|
2378
|
-
|
|
2395
|
+
me([
|
|
2379
2396
|
...y.flat(),
|
|
2380
2397
|
...t.totals,
|
|
2381
2398
|
...b,
|
|
@@ -2384,18 +2401,18 @@ var Ye = (e) => {
|
|
|
2384
2401
|
...V?.titles ?? [],
|
|
2385
2402
|
...te
|
|
2386
2403
|
]);
|
|
2387
|
-
let
|
|
2404
|
+
let W = (g[0] ? J(g[0]).height : 0) * I;
|
|
2388
2405
|
m.numbers === !1 && g[0] && (g[0].dataset.place = "none");
|
|
2389
|
-
let
|
|
2390
|
-
labelHeight:
|
|
2391
|
-
nameHeight: Math.max(0,
|
|
2392
|
-
unit:
|
|
2406
|
+
let ne = x[0]?.badge ? J(x[0].badge).height * I : 0, K = Math.max(z, Vn(t.figure, I, "--tablechart-min-height", "200px") ?? 0, m.minHeight?.({
|
|
2407
|
+
labelHeight: W,
|
|
2408
|
+
nameHeight: Math.max(0, G(t.categories.map((e) => J(e).height))) * I,
|
|
2409
|
+
unit: I,
|
|
2393
2410
|
rows: l.length,
|
|
2394
2411
|
series: _.length,
|
|
2395
2412
|
stacked: t.stacked,
|
|
2396
|
-
labels:
|
|
2413
|
+
labels: Bn(t.figure, n, _.some((e) => e.chart))
|
|
2397
2414
|
}) ?? 0), ie = t.stacked ? l.map((e) => {
|
|
2398
|
-
let t =
|
|
2415
|
+
let t = Fe(e, _.length);
|
|
2399
2416
|
return {
|
|
2400
2417
|
...e,
|
|
2401
2418
|
value: t,
|
|
@@ -2413,21 +2430,21 @@ var Ye = (e) => {
|
|
|
2413
2430
|
...e,
|
|
2414
2431
|
cells: [e.cells[0]]
|
|
2415
2432
|
})) : l), ae = {
|
|
2416
|
-
labelHeight:
|
|
2417
|
-
badgeHeight:
|
|
2433
|
+
labelHeight: W,
|
|
2434
|
+
badgeHeight: ne,
|
|
2418
2435
|
hasAnnotations: x.length > 0,
|
|
2419
|
-
unit:
|
|
2436
|
+
unit: I,
|
|
2420
2437
|
series: _.length,
|
|
2421
2438
|
focused: _.some((e) => e.focus),
|
|
2422
2439
|
stacked: t.stacked
|
|
2423
|
-
}, oe = Math.max(((e) => t.stacked ? e(l.map((e) =>
|
|
2440
|
+
}, oe = Math.max(((e) => t.stacked ? e(l.map((e) => Pe(e, _.length, m.running).top)) : e([...q.flatMap((e) => [
|
|
2424
2441
|
e.from,
|
|
2425
2442
|
e.to,
|
|
2426
2443
|
e.value
|
|
2427
|
-
]), ...l.flatMap((e) => e.cells.slice(0, _.length).map((e) => e.value))]))(
|
|
2444
|
+
]), ...l.flatMap((e) => e.cells.slice(0, _.length).map((e) => e.value))]))(G), 0), se = q.some((e) => e.kind === "up" || e.kind === "down") ? q.flatMap((e) => [e.from, e.to]) : t.stacked ? l.map((e) => Pe(e, _.length, m.running).bottom) : l.flatMap((e) => e.cells.slice(0, _.length).map((e) => e.value)), ce = Math.min(-G(se.map((e) => -e)), 0), le = _.flatMap((e, t) => e.chart ? [t] : []), ue = l.some((e) => e.note) ? ne + 4 * I : 0, de = Math.max(m.headroom?.(ae) ?? W, le.length ? rt.headroom?.(ae) ?? 0 : 0) + ue, fe = 2 * I + (m.footroom?.(ae) ?? 0) + (ce < 0 ? W + 4 * I : 0), pe = K - de - fe, he = M ? Math.max(M.max, oe) : oe * 1.02, ge = M ? Math.min(M.min, ce) : ce * 1.02, _e = x.find((e) => e.spec.getAttribute("data-annotation") === "axis-break")?.spec, ve = (e) => {
|
|
2428
2445
|
let t = Number.parseFloat(_e?.getAttribute(e) ?? "");
|
|
2429
2446
|
return Number.isFinite(t) ? t : null;
|
|
2430
|
-
}, be =
|
|
2447
|
+
}, be = ve("data-from") ?? ve("data-at"), xe = ve("data-to"), Y = null;
|
|
2431
2448
|
if (_e && (be !== null || xe !== null)) {
|
|
2432
2449
|
let t = be ?? 0, n = xe ?? he, r = xe === null ? t : be === null ? n : (t + n) / 2, i = _e.getAttribute("data-size"), a = i?.match(/^\s*(\d+(?:\.\d+)?)\s*%\s*$/);
|
|
2433
2450
|
i !== null && !a && console.warn(`[${e}] data-size="${i}" is not a percentage, such as 30%. Using the default.`);
|
|
@@ -2439,35 +2456,35 @@ var Ye = (e) => {
|
|
|
2439
2456
|
share: o
|
|
2440
2457
|
} : console.warn(`[${e}] This kind of chart cannot break its scale.`);
|
|
2441
2458
|
}
|
|
2442
|
-
let we = Y ? Y.gap : null, Te = (Y &&
|
|
2459
|
+
let we = Y ? Y.gap : null, Te = (Y && Vn(t.figure, I, "--tablechart-break-gap", "")) ?? 13, Ee = K - fe, De = he - ge || 1, Oe = (e) => Ee - (e - ge) / De * pe;
|
|
2443
2460
|
if (Y) {
|
|
2444
|
-
let { lo: e, hi: t, gap: n, share: r } = Y, i =
|
|
2461
|
+
let { lo: e, hi: t, gap: n, share: r } = Y, i = pe * r, a = (pe - i - Te) / (e + (he - t)), o = i / (t - e);
|
|
2445
2462
|
Oe = (r) => r <= e ? Ee - r * a : r <= n ? Ee - e * a - (r - e) * o : r <= t ? Ee - e * a - (r - e) * o - Te : Ee - e * a - i - Te - (r - t) * a;
|
|
2446
2463
|
}
|
|
2447
2464
|
let ke, Ae, je = [];
|
|
2448
2465
|
if (V) {
|
|
2449
|
-
let e = 6 *
|
|
2466
|
+
let e = 6 * I, [t, n] = V.titles, r = (e) => e ? J(e).width * I : 0, i = (e) => e ? J(e).height * I : 0, a = te.filter((e) => e.dataset.axis === "x"), o = te.filter((e) => e.dataset.axis === "y"), s = i(te[0]), c = r(n) + G([0, ...o.map(r)]) + 2 * e, l = s / 2;
|
|
2450
2467
|
Ae = [
|
|
2451
2468
|
c,
|
|
2452
2469
|
l,
|
|
2453
|
-
|
|
2470
|
+
O - c - G([0, ...a.map(r)]) / 2,
|
|
2454
2471
|
K - l - i(t) - s - 2 * e
|
|
2455
2472
|
];
|
|
2456
|
-
let [u, d, f, p] = Ae, [m, h] =
|
|
2473
|
+
let [u, d, f, p] = Ae, [m, h] = H, g = (e) => u + (e - m.min) / (m.max - m.min || 1) * f, _ = (e) => d + p - (e - h.min) / (h.max - h.min || 1) * p;
|
|
2457
2474
|
ke = g, Oe = _;
|
|
2458
2475
|
let v = (e) => r(a.find((t) => Number(t.dataset.value) === e));
|
|
2459
|
-
je = [
|
|
2476
|
+
je = [St(m, (t) => t.every((n, r) => !r || g(n) - g(t[r - 1]) > (v(n) + v(t[r - 1])) / 2 + e)).ticks, St(h, (t) => t.every((n, r) => !r || _(t[r - 1]) - _(n) > s + e / 2)).ticks];
|
|
2460
2477
|
for (let t of te) {
|
|
2461
2478
|
let n = Number(t.dataset.value), r = t.dataset.axis === "x" ? 0 : 1, i = je[r].includes(n);
|
|
2462
|
-
t.dataset.place = i ? r ? "before" : "below" : "none", i &&
|
|
2479
|
+
t.dataset.place = i ? r ? "before" : "below" : "none", i && R(t, r ? u - e : g(n), r ? _(n) : d + p + e, O, K);
|
|
2463
2480
|
}
|
|
2464
|
-
t &&
|
|
2481
|
+
t && R(t, u + f / 2, K - i(t), O, K), n && R(n, 0, d + p / 2, O, K);
|
|
2465
2482
|
}
|
|
2466
|
-
let Me = b.length ?
|
|
2467
|
-
|
|
2468
|
-
let Ie = (
|
|
2469
|
-
t.rowAt = m.centre ? null : m.categories === "beside" ? (e, t) => Re(Math.floor(t *
|
|
2470
|
-
let ze = Ie /
|
|
2483
|
+
let Me = b.length ? G(b.map((e) => J(e).width)) * I + 12 * I : 0, Ne = t.categories[0]?.parentElement;
|
|
2484
|
+
Ne && (Ne.style.paddingRight = Me ? `${Me / O * 100}%` : "");
|
|
2485
|
+
let Ie = (O - Me) / l.length, Le = (e) => (e + .5) * Ie, Re = (e) => e >= 0 && e < l.length ? e : null;
|
|
2486
|
+
t.rowAt = m.centre ? null : m.categories === "beside" ? (e, t) => Re(Math.floor(t * I / (K / l.length))) : (e) => Re(Math.floor(e * I / Ie));
|
|
2487
|
+
let ze = Ie / O * 100, Be = 100 / l.length;
|
|
2471
2488
|
if (t.rowBox = m.categories === "beside" ? (e) => [
|
|
2472
2489
|
0,
|
|
2473
2490
|
e * Be,
|
|
@@ -2478,17 +2495,17 @@ var Ye = (e) => {
|
|
|
2478
2495
|
0,
|
|
2479
2496
|
ze,
|
|
2480
2497
|
100
|
|
2481
|
-
], i.setAttribute("viewBox", `0 0 ${
|
|
2498
|
+
], i.setAttribute("viewBox", `0 0 ${O} ${P(K)}`), i.textContent = "", Ae && ke) {
|
|
2482
2499
|
let [e, r, a, o] = Ae, [s, c] = je, l = ke;
|
|
2483
|
-
|
|
2484
|
-
class:
|
|
2485
|
-
d: [...s.map((e) => `M${
|
|
2486
|
-
})), i.appendChild(
|
|
2487
|
-
class:
|
|
2500
|
+
On(t.figure, "data-chart-grid", n.grid) && i.appendChild(F("path", {
|
|
2501
|
+
class: D,
|
|
2502
|
+
d: [...s.map((e) => `M${P(l(e))},${P(r)}V${P(r + o)}`), ...c.map((t) => `M${P(e)},${P(Oe(t))}H${P(e + a)}`)].join("")
|
|
2503
|
+
})), i.appendChild(F("path", {
|
|
2504
|
+
class: T,
|
|
2488
2505
|
d: [
|
|
2489
|
-
`M${
|
|
2490
|
-
...s.map((e) => `M${
|
|
2491
|
-
...c.map((t) => `M${
|
|
2506
|
+
`M${P(e)},${P(r)}V${P(r + o)}H${P(e + a)}`,
|
|
2507
|
+
...s.map((e) => `M${P(l(e))},${P(r + o)}v${P(4 * I)}`),
|
|
2508
|
+
...c.map((t) => `M${P(e)},${P(Oe(t))}h${P(-4 * I)}`)
|
|
2492
2509
|
].join("")
|
|
2493
2510
|
}));
|
|
2494
2511
|
}
|
|
@@ -2500,24 +2517,24 @@ var Ye = (e) => {
|
|
|
2500
2517
|
y: Oe,
|
|
2501
2518
|
x: ke,
|
|
2502
2519
|
frame: Ae,
|
|
2503
|
-
length: (e, n) =>
|
|
2504
|
-
barWidth: Math.min(Ie * n.barfill,
|
|
2505
|
-
barMax:
|
|
2520
|
+
length: (e, n) => Vn(t.figure, I, e, n),
|
|
2521
|
+
barWidth: Math.min(Ie * n.barfill, Hn(t.figure, I)),
|
|
2522
|
+
barMax: Hn(t.figure, I),
|
|
2506
2523
|
height: K,
|
|
2507
|
-
unit:
|
|
2508
|
-
labelHeight:
|
|
2509
|
-
badgeHeight:
|
|
2524
|
+
unit: I,
|
|
2525
|
+
labelHeight: W,
|
|
2526
|
+
badgeHeight: ne,
|
|
2510
2527
|
after: l.length,
|
|
2511
2528
|
note: 0,
|
|
2512
|
-
labels:
|
|
2513
|
-
insideAlign:
|
|
2529
|
+
labels: Bn(t.figure, n, le.length > 0),
|
|
2530
|
+
insideAlign: zn(t.figure),
|
|
2514
2531
|
breakAt: we,
|
|
2515
2532
|
squeeze: Y,
|
|
2516
2533
|
breakGap: Te,
|
|
2517
2534
|
domain: M ? [M.min, M.max] : null,
|
|
2518
2535
|
stacked: t.stacked,
|
|
2519
|
-
shape:
|
|
2520
|
-
pick:
|
|
2536
|
+
shape: An(t.figure, n),
|
|
2537
|
+
pick: Gn(t.figure, n),
|
|
2521
2538
|
totals: t.totals,
|
|
2522
2539
|
svg: i,
|
|
2523
2540
|
plot: r,
|
|
@@ -2557,7 +2574,7 @@ var Ye = (e) => {
|
|
|
2557
2574
|
...Ve,
|
|
2558
2575
|
own: e,
|
|
2559
2576
|
...e.length === 1 && He(e[0])
|
|
2560
|
-
}),
|
|
2577
|
+
}), rt.draw({
|
|
2561
2578
|
...Ve,
|
|
2562
2579
|
own: le
|
|
2563
2580
|
});
|
|
@@ -2565,20 +2582,20 @@ var Ye = (e) => {
|
|
|
2565
2582
|
Ve.rowAt && (t.rowAt = Ve.rowAt), t.pointOf = Ve.pointOf ?? null;
|
|
2566
2583
|
let Ue = Number(r.style.getPropertyValue("--count")) || l.length;
|
|
2567
2584
|
for (let e of t.figure.querySelectorAll(`.${f}`)) e.style.setProperty("--i", String(Math.min(l[l.length - 1].slot, Ue - 1)));
|
|
2568
|
-
if (!t.stacked && !r.hasAttribute("data-grouped")) for (let e of y) Se(e,
|
|
2585
|
+
if (!t.stacked && !r.hasAttribute("data-grouped")) for (let e of y) Se(e, I, O), Ce(e, I, O, K);
|
|
2569
2586
|
if (A && M) {
|
|
2570
|
-
let e = 6 *
|
|
2587
|
+
let e = 6 * I, r = k && Ve.x ? Ve.x : Oe, a = Array.from(A.ticks.children), o = (e) => J(a.find((t) => Number(t.dataset.value) === e) ?? a[0]), s = St(M, (t) => t.every((n, i) => !i || (k ? r(n) - r(t[i - 1]) > (o(n).width + o(t[i - 1]).width) / 2 * I + e : r(t[i - 1]) - r(n) > o(n).height * I + e / 2))).ticks.filter((e) => !Y || e <= Y.lo || e >= Y.hi);
|
|
2571
2588
|
for (let t of a) {
|
|
2572
2589
|
let n = Number(t.dataset.value), i = A.numbers && s.includes(n);
|
|
2573
|
-
t.dataset.place = i ? k ? "below" : "before" : "none", i &&
|
|
2590
|
+
t.dataset.place = i ? k ? "below" : "before" : "none", i && R(t, k ? r(n) : -e, k ? K + e : r(n), O, K);
|
|
2574
2591
|
}
|
|
2575
|
-
let c =
|
|
2576
|
-
|
|
2577
|
-
class:
|
|
2578
|
-
d: s.map((e) => k ? `M${
|
|
2579
|
-
})), A.numbers && i.appendChild(
|
|
2580
|
-
class:
|
|
2581
|
-
d: [k ? `M${
|
|
2592
|
+
let c = O - Me;
|
|
2593
|
+
On(t.figure, "data-chart-grid", n.grid) && i.prepend(F("path", {
|
|
2594
|
+
class: D,
|
|
2595
|
+
d: s.map((e) => k ? `M${P(r(e))},0V${P(K)}` : `M0,${P(r(e))}H${P(c)}`).join("")
|
|
2596
|
+
})), A.numbers && i.appendChild(F("path", {
|
|
2597
|
+
class: T,
|
|
2598
|
+
d: [k ? `M${P(r(M.min))},${P(K)}H${P(r(M.max))}` : `M0,${P(r(M.max))}V${P(r(M.min))}`, ...s.map((e) => k ? `M${P(r(e))},${P(K)}v${P(4 * I)}` : `M0,${P(r(e))}h${P(-4 * I)}`)].join("")
|
|
2582
2599
|
}));
|
|
2583
2600
|
}
|
|
2584
2601
|
for (let [e, n] of x.entries()) {
|
|
@@ -2595,7 +2612,7 @@ var Ye = (e) => {
|
|
|
2595
2612
|
note: e + 1
|
|
2596
2613
|
});
|
|
2597
2614
|
}
|
|
2598
|
-
|
|
2615
|
+
Ht(t);
|
|
2599
2616
|
for (let e of t.figure.querySelectorAll(`.${p}`)) {
|
|
2600
2617
|
let n = Array.from(e.children);
|
|
2601
2618
|
if (t.plan) for (let e of n) e.style.getPropertyValue("--step") || e.style.setProperty("--i", "0");
|
|
@@ -2607,13 +2624,13 @@ var Ye = (e) => {
|
|
|
2607
2624
|
X.style.height = `${X.offsetHeight}px`, X.removeAttribute("data-thinned");
|
|
2608
2625
|
for (let e of t.categories) e.removeAttribute("data-left-out"), e.removeAttribute("data-edge");
|
|
2609
2626
|
let e = t.categories.filter((e) => e.offsetParent !== null);
|
|
2610
|
-
if (!
|
|
2627
|
+
if (!ye(X, e, (e) => ({
|
|
2611
2628
|
size: e.scrollWidth,
|
|
2612
2629
|
room: e.clientWidth
|
|
2613
2630
|
}), "--_name-fit") && e.length > 1) {
|
|
2614
2631
|
let t = getComputedStyle(X), n = (X.clientWidth - Number.parseFloat(t.paddingLeft) - Number.parseFloat(t.paddingRight)) / l.length;
|
|
2615
2632
|
X.style.setProperty("--_name-fit", "1"), X.setAttribute("data-thinned", "");
|
|
2616
|
-
let r =
|
|
2633
|
+
let r = G(e.map((e) => e.offsetWidth)), i = Math.max(Math.ceil((r + 8) / n), Math.ceil((1.5 * r + 8) / n - .5), 1);
|
|
2617
2634
|
e.forEach((e, t) => {
|
|
2618
2635
|
t % i && e.setAttribute("data-left-out", "");
|
|
2619
2636
|
});
|
|
@@ -2624,16 +2641,16 @@ var Ye = (e) => {
|
|
|
2624
2641
|
e && e.getBoundingClientRect().right + 8 > s.getBoundingClientRect().left && s.setAttribute("data-left-out", "");
|
|
2625
2642
|
}
|
|
2626
2643
|
}
|
|
2627
|
-
let r = (m ===
|
|
2644
|
+
let r = (m === rt || m === it) && On(t.figure, "data-chart-ticks", n.ticks);
|
|
2628
2645
|
if (X.toggleAttribute("data-ticks", r), X.style.removeProperty("--_tick-reach"), r) {
|
|
2629
2646
|
let e = K - Number(i.querySelector(".tablechart-rule")?.getAttribute("y1") ?? K);
|
|
2630
|
-
e > 0 && e < 10 *
|
|
2647
|
+
e > 0 && e < 10 * I && X.style.setProperty("--_tick-reach", `${P(e / I)}px`);
|
|
2631
2648
|
let n = X.getBoundingClientRect(), r = n.width / (X.offsetWidth || 1), a = getComputedStyle(X), o = Number.parseFloat(a.paddingLeft), s = (X.clientWidth - o - Number.parseFloat(a.paddingRight)) / l.length;
|
|
2632
2649
|
t.categories.forEach((e, t) => {
|
|
2633
2650
|
if (e.hasAttribute("data-left-out")) e.style.removeProperty("--_tick");
|
|
2634
2651
|
else {
|
|
2635
2652
|
let i = (e.getBoundingClientRect().left - n.left) / r - X.clientLeft;
|
|
2636
|
-
e.style.setProperty("--_tick", `${
|
|
2653
|
+
e.style.setProperty("--_tick", `${P(o + (t + .5) * s - i)}px`);
|
|
2637
2654
|
}
|
|
2638
2655
|
});
|
|
2639
2656
|
}
|
|
@@ -2641,8 +2658,8 @@ var Ye = (e) => {
|
|
|
2641
2658
|
}
|
|
2642
2659
|
let We = x.flatMap(({ badge: e }) => {
|
|
2643
2660
|
if (!(e instanceof HTMLElement) || !e.offsetWidth) return [];
|
|
2644
|
-
let t = e.offsetWidth *
|
|
2645
|
-
return [
|
|
2661
|
+
let t = e.offsetWidth * I, n = e.offsetHeight * I, r = Number.parseFloat(e.style.left) / 100 * O, i = Number.parseFloat(e.style.top) / 100 * K, a = getComputedStyle(e).borderTopLeftRadius, o = a.endsWith("%") ? Number.parseFloat(a) / 100 : null, s = (Number.parseFloat(a) || 0) * I;
|
|
2662
|
+
return [F("rect", {
|
|
2646
2663
|
class: h,
|
|
2647
2664
|
"data-for": "badge",
|
|
2648
2665
|
"data-note": e.dataset.note ?? "",
|
|
@@ -2654,8 +2671,8 @@ var Ye = (e) => {
|
|
|
2654
2671
|
ry: o === null ? s : n * o,
|
|
2655
2672
|
style: ["--after", "--step"].map((t) => e.style.getPropertyValue(t) && `${t}:${e.style.getPropertyValue(t)}`).filter(Boolean).join("; ")
|
|
2656
2673
|
})];
|
|
2657
|
-
}),
|
|
2658
|
-
if (Ke.length ||
|
|
2674
|
+
}), Ge = i.querySelector(`.${D}`), Z = Array.from(i.querySelectorAll(`.${o}`)), Ke = [...Ge ? [Ge] : [], ...i.querySelectorAll(`:scope > .${s}`)], qe = Un(r, I), Je = t.figure.getAttribute("data-animate") === "grow", Ye = y.flat().filter((e) => e.hasAttribute("data-cut")).flatMap(qe), Xe = [...le.flatMap((e) => y[e].flatMap(qe)), ...Je ? Ye : []];
|
|
2675
|
+
if (Ke.length || Z.length) {
|
|
2659
2676
|
let e = [
|
|
2660
2677
|
...y.flat(),
|
|
2661
2678
|
...t.totals,
|
|
@@ -2666,14 +2683,13 @@ var Ye = (e) => {
|
|
|
2666
2683
|
"width",
|
|
2667
2684
|
"height"
|
|
2668
2685
|
].map((t) => Number(e.getAttribute(t)));
|
|
2669
|
-
for (let t of
|
|
2670
|
-
|
|
2671
|
-
|
|
2672
|
-
|
|
2673
|
-
t.setAttribute("d", i.map(([e, t, i, a]) => mn(e, t, i, a, r.map(n))).join(""));
|
|
2686
|
+
for (let t of Z) Tn(t, [...e, ...We].map(n));
|
|
2687
|
+
for (let t of Ke) {
|
|
2688
|
+
let r = [...e, ...We], i = En(t);
|
|
2689
|
+
t.setAttribute("d", i.map(([e, t, i, a]) => wn(e, t, i, a, r.map(n))).join(""));
|
|
2674
2690
|
for (let e of r) {
|
|
2675
|
-
let r =
|
|
2676
|
-
r && t.after(
|
|
2691
|
+
let r = Dn(i, n(e)), a = e.dataset.for === "badge" ? "badge" : "";
|
|
2692
|
+
r && t.after(F("path", {
|
|
2677
2693
|
class: t.getAttribute("class") ?? "tablechart-grid",
|
|
2678
2694
|
"data-gap": a,
|
|
2679
2695
|
d: r,
|
|
@@ -2682,51 +2698,77 @@ var Ye = (e) => {
|
|
|
2682
2698
|
}
|
|
2683
2699
|
}
|
|
2684
2700
|
}
|
|
2685
|
-
if (
|
|
2701
|
+
if (U(i, We, O, K, Array.from(i.querySelectorAll(`.${a}, .${c}`))), !Je && (Ve.lineHoles.length || Ye.length)) {
|
|
2686
2702
|
let e = Array.from(i.querySelectorAll(`.${u}`)).map((e) => {
|
|
2687
|
-
let t =
|
|
2703
|
+
let t = F("g", {});
|
|
2688
2704
|
return e.before(t), t.append(e), t;
|
|
2689
2705
|
});
|
|
2690
|
-
|
|
2706
|
+
U(i, [...Ve.lineHoles, ...Ye], O, K, [...e, ...i.querySelectorAll(`.${d}`)]);
|
|
2691
2707
|
}
|
|
2692
2708
|
let Ze = [
|
|
2693
2709
|
o,
|
|
2694
2710
|
s,
|
|
2695
2711
|
a,
|
|
2696
2712
|
c,
|
|
2697
|
-
|
|
2713
|
+
D
|
|
2698
2714
|
];
|
|
2699
|
-
|
|
2715
|
+
ee(i, [...We, ...Xe], O, K, void 0, Ze.map((e) => `.${e}`).join(", ")), t.figure.hasAttribute("data-animate") && !t.figure.hasAttribute("data-steps") && !t.figure.classList.contains("is-shown") && er(i);
|
|
2700
2716
|
let Qe = (e) => e.dataset.missing !== void 0 || m.centre && l[Number(e.dataset.row) - 1]?.isTotal, $e = (e) => e.dataset.place !== "none" && !e.hasAttribute("data-left-out"), et = (e, t) => {
|
|
2701
2717
|
let n = Number(e.dataset.row);
|
|
2702
2718
|
return t.some((e) => $e(e) && Number(e.dataset.row) <= n && n <= Number(e.dataset.rowEnd ?? e.dataset.row));
|
|
2703
2719
|
};
|
|
2704
|
-
return t.figure.toggleAttribute("data-left-out", (m.columns ? [t.categories] : [...y, t.totals]).some((e) => e.some((t) => !Qe(t) && !$e(t) && !et(t, e)))),
|
|
2705
|
-
},
|
|
2720
|
+
return t.figure.toggleAttribute("data-left-out", (m.columns ? [t.categories] : [...y, t.totals]).some((e) => e.some((t) => !Qe(t) && !$e(t) && !et(t, e)))), Mt(t.figure), Rt(t.figure), !0;
|
|
2721
|
+
}, Jn = (e, t) => {
|
|
2706
2722
|
let n = [
|
|
2707
2723
|
...e.seriesValues.flat(),
|
|
2708
2724
|
...e.totals,
|
|
2709
2725
|
...e.totalCell ? [e.totalCell] : []
|
|
2710
2726
|
];
|
|
2711
|
-
for (let r of e.centre ? [...n, e.centre] : n) r.dataset.missing === void 0 ?
|
|
2712
|
-
},
|
|
2713
|
-
let { prefix: r = "", suffix: i = "" } = e.dataset, [a, o] =
|
|
2727
|
+
for (let r of e.centre ? [...n, e.centre] : n) r.dataset.missing === void 0 ? Yn(r, r.dataset.decimals ? Number(r.dataset.decimals) : e.decimals, t.locale) : r.textContent = r.dataset.missing;
|
|
2728
|
+
}, Yn = (e, t, n) => {
|
|
2729
|
+
let { prefix: r = "", suffix: i = "" } = e.dataset, [a, o] = ie(Number.parseFloat(e.dataset.value || "0"), t, n);
|
|
2714
2730
|
if (e.textContent = r + (r ? a : "") + o + i, a && !r) {
|
|
2715
2731
|
let t = document.createElement("span");
|
|
2716
2732
|
t.className = "tablechart-minus", t.textContent = a, e.prepend(t);
|
|
2717
2733
|
}
|
|
2718
|
-
},
|
|
2719
|
-
|
|
2720
|
-
},
|
|
2721
|
-
!t && !e.figure.hasAttribute("data-steps") &&
|
|
2722
|
-
|
|
2723
|
-
|
|
2724
|
-
},
|
|
2734
|
+
}, Xn = (e) => {
|
|
2735
|
+
_n(e), e.plot.remove(), e.categories[0]?.parentElement?.remove(), e.figure.querySelector(`:scope > .${p}`)?.remove(), e.controls?.remove();
|
|
2736
|
+
}, Zn = (e, t, n = !1) => {
|
|
2737
|
+
!t && !e.figure.hasAttribute("data-steps") && er(e.svg), e.figure.classList.remove(C), n ? (e.figure.classList.add(S), e.figure.classList.toggle(b, t), e.figure.offsetWidth, t && tr(e.svg), e.figure.classList.toggle(C, t), requestAnimationFrame(() => e.figure.classList.remove(S))) : (e.figure.classList.toggle(b, t), t && requestAnimationFrame(() => requestAnimationFrame(() => {
|
|
2738
|
+
$n(e.figure, e.svg), Qn(e.figure);
|
|
2739
|
+
})));
|
|
2740
|
+
}, Qn = (e) => {
|
|
2741
|
+
let t = e.getAnimations({ subtree: !0 }).map((e) => e.finished.catch(() => void 0));
|
|
2742
|
+
Promise.all(t).then(() => {
|
|
2743
|
+
e.classList.contains("is-shown") && e.classList.add(C);
|
|
2744
|
+
});
|
|
2745
|
+
}, $n = (e, t) => {
|
|
2746
|
+
e.classList.contains("is-shown") && Array.from(t.querySelectorAll("[data-mask]")).every((e) => !e.getAnimations({ subtree: !0 }).length) && tr(t);
|
|
2747
|
+
}, er = (e) => {
|
|
2725
2748
|
for (let t of e.querySelectorAll("[mask^=\"url(#tablechart-cut-\"]")) t.dataset.mask = t.getAttribute("mask") ?? "", t.removeAttribute("mask");
|
|
2726
|
-
},
|
|
2749
|
+
}, tr = (e) => {
|
|
2727
2750
|
for (let t of e.querySelectorAll("[data-mask]")) t.setAttribute("mask", t.dataset.mask ?? ""), t.removeAttribute("data-mask");
|
|
2728
|
-
},
|
|
2729
|
-
|
|
2751
|
+
}, nr = {
|
|
2752
|
+
2: {
|
|
2753
|
+
part: 3,
|
|
2754
|
+
text: 4.5,
|
|
2755
|
+
large: 3,
|
|
2756
|
+
show: (e) => `${(Math.floor(e * 100) / 100).toFixed(2)}:1`,
|
|
2757
|
+
need: (e) => `${e}:1`,
|
|
2758
|
+
partRule: "WCAG 1.4.11",
|
|
2759
|
+
textRule: "WCAG 1.4.3"
|
|
2760
|
+
},
|
|
2761
|
+
3: {
|
|
2762
|
+
part: 30,
|
|
2763
|
+
text: 60,
|
|
2764
|
+
large: 45,
|
|
2765
|
+
show: (e) => `Lc ${Math.floor(e)}`,
|
|
2766
|
+
need: (e) => `Lc ${e}`,
|
|
2767
|
+
partRule: "APCA, WCAG 3 draft",
|
|
2768
|
+
textRule: "APCA, WCAG 3 draft"
|
|
2769
|
+
}
|
|
2770
|
+
}, rr = (t) => {
|
|
2771
|
+
let n = Nt(t), r = nr[Et(t)], i = Array.from(t.querySelectorAll("table thead tr:first-child > *")).map((e) => (e.textContent ?? "").trim()), a = Array.from(t.querySelectorAll("tbody tr > :first-child")).map((e) => (e.textContent ?? "").trim()), o = [
|
|
2730
2772
|
[
|
|
2731
2773
|
".tablechart-series",
|
|
2732
2774
|
"Line",
|
|
@@ -2742,75 +2784,95 @@ var Ye = (e) => {
|
|
|
2742
2784
|
"Bar",
|
|
2743
2785
|
(e) => getComputedStyle(e).fill
|
|
2744
2786
|
]
|
|
2745
|
-
],
|
|
2746
|
-
for (let [e,
|
|
2747
|
-
let
|
|
2748
|
-
for (let e of
|
|
2749
|
-
let
|
|
2750
|
-
|
|
2751
|
-
|
|
2752
|
-
|
|
2753
|
-
].map((e, t) => e *
|
|
2754
|
-
if (
|
|
2755
|
-
let
|
|
2756
|
-
kind:
|
|
2757
|
-
column:
|
|
2787
|
+
], s = /* @__PURE__ */ new Map();
|
|
2788
|
+
for (let [e, c, l] of o) {
|
|
2789
|
+
let o = Array.from(t.querySelectorAll(`${e}:not([data-muted])`));
|
|
2790
|
+
for (let e of o) {
|
|
2791
|
+
let u = l(e), [d, f, p, m] = wt(u), h = [
|
|
2792
|
+
d,
|
|
2793
|
+
f,
|
|
2794
|
+
p
|
|
2795
|
+
].map((e, t) => e * m + n[t] * (1 - m)), g = kt(Et(t), h, n);
|
|
2796
|
+
if (g >= r.part) continue;
|
|
2797
|
+
let _ = e.getAttribute("data-series"), v = a[Number(e.getAttribute("data-row") ?? 0) - 1] ?? "", y = c === "Slice" ? "" : _ ? i[Number(_)] : "", b = `${c}|${y}|${u}`, x = s.get(b) ?? {
|
|
2798
|
+
kind: c,
|
|
2799
|
+
column: y,
|
|
2758
2800
|
rows: /* @__PURE__ */ new Set(),
|
|
2759
2801
|
all: 0,
|
|
2760
|
-
contrast:
|
|
2802
|
+
contrast: g
|
|
2761
2803
|
};
|
|
2762
|
-
|
|
2804
|
+
x.rows.add(v), x.all = o.filter((e) => e.getAttribute("data-series") === _).length, s.set(b, x);
|
|
2763
2805
|
}
|
|
2764
2806
|
}
|
|
2765
|
-
for (let { kind: n, column:
|
|
2766
|
-
let
|
|
2767
|
-
console.warn(`[${e}] ${
|
|
2807
|
+
for (let { kind: n, column: i, rows: a, all: o, contrast: c } of s.values()) {
|
|
2808
|
+
let s = Array.from(a).filter(Boolean).map((e) => `"${e}"`), l = s.join(", "), u = s.length > 1, d = n === "Line" ? i ? `Line "${i}" has` : "The line has" : n === "Slice" ? `${u ? "Slices" : "Slice"} ${l} ${u ? "have" : "has"}` : a.size >= o || !l ? `The bars${i ? ` of column "${i}"` : ""} have` : `${u ? "Bars" : "Bar"} ${l}${i ? ` in column "${i}"` : ""} ${u ? "have" : "has"}`;
|
|
2809
|
+
console.warn(`[${e}] ${d} a contrast of ${r.show(c)} with the background. It needs at least ${r.need(r.part)} (${r.partRule}).`, t);
|
|
2768
2810
|
}
|
|
2769
|
-
},
|
|
2770
|
-
let n = () => {
|
|
2771
|
-
let
|
|
2772
|
-
|
|
2773
|
-
|
|
2774
|
-
|
|
2775
|
-
|
|
2776
|
-
|
|
2777
|
-
|
|
2778
|
-
let
|
|
2811
|
+
}, ir = (t) => {
|
|
2812
|
+
let n = 0, r = () => {
|
|
2813
|
+
let r = Array.from(t.querySelectorAll(".tablechart-value[data-place='inside'], .tablechart-value[data-place='middle']")).filter((e) => !e.hasAttribute("data-left-out") && !e.hidden);
|
|
2814
|
+
if (r.some((e) => wt(getComputedStyle(e).color)[3] < 1)) {
|
|
2815
|
+
++n <= 20 && setTimeout(i, 500);
|
|
2816
|
+
return;
|
|
2817
|
+
}
|
|
2818
|
+
let a = Array.from(t.querySelectorAll("tbody tr > :first-child")).map((e) => (e.textContent ?? "").trim()), o = nr[Et(t)], s = t.dataset.chart === "bar" ? "bar" : "column", c = /* @__PURE__ */ new Map();
|
|
2819
|
+
for (let e of r) {
|
|
2820
|
+
let n = Pt(t, e);
|
|
2821
|
+
if (!n) continue;
|
|
2822
|
+
let r = getComputedStyle(e), i = getComputedStyle(n).fill, l = kt(Et(t), wt(r.color), wt(i)), u = Number.parseFloat(r.fontSize), d = u >= 24 || u >= 18.66 && Number(r.fontWeight) >= 700 ? o.large : o.text;
|
|
2823
|
+
if (l >= d) continue;
|
|
2824
|
+
let f = n.classList.contains("tablechart-piece") ? `${s} part` : s, p = `${r.color}|${i}`, m = c.get(p) ?? {
|
|
2825
|
+
what: f,
|
|
2779
2826
|
names: [],
|
|
2780
|
-
contrast:
|
|
2781
|
-
needed:
|
|
2827
|
+
contrast: l,
|
|
2828
|
+
needed: d
|
|
2782
2829
|
};
|
|
2783
|
-
|
|
2830
|
+
m.names.push(`"${a[Number(e.dataset.row) - 1] ?? ""}" ("${e.textContent?.trim()}")`), c.set(p, m);
|
|
2831
|
+
}
|
|
2832
|
+
for (let { what: n, names: r, contrast: i, needed: a } of c.values()) {
|
|
2833
|
+
let s = r.length > 1;
|
|
2834
|
+
console.warn(`[${e}] The text inside the ${n}${s ? "s" : ""} of ${r.join(", ")} has a contrast of ${o.show(i)} with ${s ? "those" : "that"} ${n}${s ? "s" : ""}. Text needs at least ${o.need(a)} (${o.textRule}).`, t);
|
|
2784
2835
|
}
|
|
2785
|
-
|
|
2786
|
-
|
|
2787
|
-
|
|
2788
|
-
|
|
2789
|
-
|
|
2836
|
+
}, i = () => requestAnimationFrame(() => requestAnimationFrame(() => {
|
|
2837
|
+
let e = t.getAnimations({ subtree: !0 }).map((e) => e.finished.catch(() => void 0));
|
|
2838
|
+
Promise.all(e).then(r);
|
|
2839
|
+
}));
|
|
2840
|
+
if (t.classList.contains("is-shown")) return void i();
|
|
2841
|
+
let a = new MutationObserver(() => {
|
|
2842
|
+
t.classList.contains("is-shown") && (a.disconnect(), i());
|
|
2790
2843
|
});
|
|
2791
|
-
|
|
2844
|
+
a.observe(t, {
|
|
2792
2845
|
attributes: !0,
|
|
2793
2846
|
attributeFilter: ["class"]
|
|
2794
2847
|
});
|
|
2795
|
-
},
|
|
2848
|
+
}, ar = [
|
|
2849
|
+
"bar",
|
|
2850
|
+
"piece",
|
|
2851
|
+
"up",
|
|
2852
|
+
"down",
|
|
2853
|
+
"total"
|
|
2854
|
+
].map((e) => `--tablechart-${e}-value-color`), or = /* @__PURE__ */ new Set(), sr = (t) => {
|
|
2855
|
+
let n = getComputedStyle(t);
|
|
2856
|
+
for (let r of ar) !or.has(r) && n.getPropertyValue(r).trim() && (or.add(r), console.warn(`[${e}] ${r} is old and goes in 1.3.0. --tablechart-value-on-dark and --tablechart-value-on-light set the colour of the numbers inside bars, with a contrast check.`, t));
|
|
2857
|
+
}, cr = (e) => e === "id" || e === "style" || e.startsWith("data-chart"), lr = /^\s*(?:Table)?:\s+/, ur = (e) => e?.tagName === "P" && lr.test(e.textContent ?? ""), dr = (e) => {
|
|
2796
2858
|
let t = document.createElement("figcaption");
|
|
2797
2859
|
for (let { name: n, value: r } of Array.from(e.attributes)) t.setAttribute(n, r);
|
|
2798
2860
|
let n = e.firstChild;
|
|
2799
|
-
n?.nodeType === Node.TEXT_NODE && (n.textContent = (n.textContent ?? "").replace(
|
|
2861
|
+
n?.nodeType === Node.TEXT_NODE && (n.textContent = (n.textContent ?? "").replace(lr, ""), n.textContent || n.remove());
|
|
2800
2862
|
let r = Array.from(e.childNodes), i = r.findIndex((e) => e.nodeName === "BR");
|
|
2801
2863
|
if (t.append(...i === -1 ? r : r.slice(0, i + 1)), i !== -1 && i < r.length - 1) {
|
|
2802
2864
|
let e = document.createElement("span");
|
|
2803
2865
|
e.append(...r.slice(i + 1)), t.append(e);
|
|
2804
2866
|
}
|
|
2805
2867
|
return e.remove(), t;
|
|
2806
|
-
},
|
|
2807
|
-
let t =
|
|
2868
|
+
}, fr = /^\s*([a-z][\w-]*)((?:\s+[\w-]+=[^\s:]+)*)\s*(:\s*|$)/, pr = (e) => {
|
|
2869
|
+
let t = xr(e);
|
|
2808
2870
|
return t?.tagName === "P" ? t : e;
|
|
2809
|
-
},
|
|
2810
|
-
let t =
|
|
2871
|
+
}, mr = (e) => {
|
|
2872
|
+
let t = pr(e).firstChild;
|
|
2811
2873
|
if (t?.nodeType !== Node.TEXT_NODE) return null;
|
|
2812
|
-
let n =
|
|
2813
|
-
if (!n || !
|
|
2874
|
+
let n = fr.exec(t.textContent ?? "");
|
|
2875
|
+
if (!n || !xn.includes(n[1]) || !n[3] && t.nextSibling) return null;
|
|
2814
2876
|
let r = n[2].trim().split(/\s+/).filter(Boolean).map((e) => e.split("="));
|
|
2815
2877
|
return {
|
|
2816
2878
|
name: n[1],
|
|
@@ -2818,11 +2880,11 @@ var Ye = (e) => {
|
|
|
2818
2880
|
text: t,
|
|
2819
2881
|
length: n[0].length
|
|
2820
2882
|
};
|
|
2821
|
-
},
|
|
2883
|
+
}, hr = (e) => {
|
|
2822
2884
|
if (e?.tagName !== "UL" && e?.tagName !== "OL") return null;
|
|
2823
|
-
let t = Array.from(e.children), n = t.map((e) => e.hasAttribute("data-annotation") ? null :
|
|
2885
|
+
let t = Array.from(e.children), n = t.map((e) => e.hasAttribute("data-annotation") ? null : mr(e));
|
|
2824
2886
|
return !t.length || t.some((e, t) => !n[t] && !e.hasAttribute("data-annotation")) ? null : (t.forEach((e, t) => {
|
|
2825
|
-
let r = n[t], i =
|
|
2887
|
+
let r = n[t], i = pr(e);
|
|
2826
2888
|
if (i !== e && i.replaceWith(...i.childNodes), r) {
|
|
2827
2889
|
e.setAttribute("data-annotation", r.name);
|
|
2828
2890
|
for (let [t, n] of r.options) e.setAttribute(`data-${t}`, n);
|
|
@@ -2833,18 +2895,18 @@ var Ye = (e) => {
|
|
|
2833
2895
|
t === 0 && e instanceof HTMLElement && e.matches("em, i") ? (n.className = "tablechart-caption", n.append(...e.childNodes), e.replaceWith(n)) : e.nodeType === Node.TEXT_NODE && (n.textContent = (e.textContent ?? "").trim(), e.replaceWith(n));
|
|
2834
2896
|
});
|
|
2835
2897
|
}), e.classList.add("chart-annotations"), e);
|
|
2836
|
-
},
|
|
2837
|
-
for (let { name: n, value: r } of Array.from(e.attributes)) (n === "class" ||
|
|
2838
|
-
},
|
|
2839
|
-
let t = e.closest("p"), n =
|
|
2898
|
+
}, gr = (e, t) => {
|
|
2899
|
+
for (let { name: n, value: r } of Array.from(e.attributes)) (n === "class" || cr(n)) && (t.setAttribute(n, r), e.removeAttribute(n));
|
|
2900
|
+
}, _r = (e) => e.map((e) => {
|
|
2901
|
+
let t = e.closest("p"), n = ur(t) ? t : e;
|
|
2840
2902
|
if (n.tagName !== "TABLE" && n.tagName !== "P") return n;
|
|
2841
2903
|
let r = document.createElement("figure");
|
|
2842
|
-
|
|
2843
|
-
let i = n.tagName === "TABLE" ? n : null, a = n.previousElementSibling, o = n.nextElementSibling, s = i ?
|
|
2904
|
+
gr(e, r), e.classList.length || e.removeAttribute("class");
|
|
2905
|
+
let i = n.tagName === "TABLE" ? n : null, a = n.previousElementSibling, o = n.nextElementSibling, s = i ? ur(a) ? a : ur(o) ? o : null : n;
|
|
2844
2906
|
i && s === o && (o = o?.nextElementSibling ?? null);
|
|
2845
|
-
let c = o?.classList.contains("chart-annotations") ? o :
|
|
2846
|
-
return n.replaceWith(r), s && r.append(
|
|
2847
|
-
}),
|
|
2907
|
+
let c = o?.classList.contains("chart-annotations") ? o : hr(o);
|
|
2908
|
+
return n.replaceWith(r), s && r.append(dr(s)), i && r.append(i), c && r.append(c), Q?.log?.(`A ${i ? "table" : "caption"} with chart attributes was wrapped in a figure of its own`), r;
|
|
2909
|
+
}), vr = (e, t, n, r = document.createElement("table"), i = "Note") => {
|
|
2848
2910
|
for (let e of r.querySelectorAll(":scope > tbody, :scope > tfoot, :scope > tr")) e.remove();
|
|
2849
2911
|
let a = e.some((e) => e.note);
|
|
2850
2912
|
if (!r.tHead && (t.length || n || a)) {
|
|
@@ -2873,7 +2935,7 @@ var Ye = (e) => {
|
|
|
2873
2935
|
n.dataset.note = "", n.textContent = i, s.append(n);
|
|
2874
2936
|
}
|
|
2875
2937
|
return r;
|
|
2876
|
-
},
|
|
2938
|
+
}, yr = (e) => {
|
|
2877
2939
|
if (!e || typeof e != "object") return;
|
|
2878
2940
|
let t = Object.entries(e), n = (e) => e === null || typeof e == "string" || typeof e == "number";
|
|
2879
2941
|
if (t.length && t.every(([, e]) => n(e) || Array.isArray(e) && e.every(n))) return t.map(([e, t]) => Array.isArray(t) ? {
|
|
@@ -2883,16 +2945,16 @@ var Ye = (e) => {
|
|
|
2883
2945
|
label: e,
|
|
2884
2946
|
value: t
|
|
2885
2947
|
});
|
|
2886
|
-
},
|
|
2948
|
+
}, br = async (t) => {
|
|
2887
2949
|
await Promise.all(t.filter((e) => e.hasAttribute("data-chart-src")).map(async (t) => {
|
|
2888
2950
|
let n = t.getAttribute("data-chart-src"), r = Array.from(t.querySelectorAll("table")).find((e) => e.tHead) ?? null;
|
|
2889
2951
|
for (let e of t.querySelectorAll("table")) e !== r && e.remove();
|
|
2890
2952
|
try {
|
|
2891
2953
|
let e = await fetch(n);
|
|
2892
2954
|
if (!e.ok) throw Error(`${e.status} ${e.statusText}`);
|
|
2893
|
-
let i = await e.json(), a = Array.isArray(i) ? i : i?.rows ? Array.isArray(i.rows) ? i.rows :
|
|
2955
|
+
let i = await e.json(), a = Array.isArray(i) ? i : i?.rows ? Array.isArray(i.rows) ? i.rows : yr(i.rows) : yr(i);
|
|
2894
2956
|
if (!Array.isArray(a)) throw Error("no rows in it: a list of rows, an object with rows, or names with their values");
|
|
2895
|
-
let o =
|
|
2957
|
+
let o = vr(a, Array.isArray(i?.series) ? i.series.map(String) : [], typeof i?.label == "string" ? i.label : "", r ?? void 0, typeof i?.note == "string" ? i.note : void 0);
|
|
2896
2958
|
if (!r) {
|
|
2897
2959
|
let e = t.querySelector(":scope > figcaption");
|
|
2898
2960
|
e ? e.after(o) : t.prepend(o);
|
|
@@ -2903,10 +2965,10 @@ var Ye = (e) => {
|
|
|
2903
2965
|
console.warn(`[${e}] Could not read the chart data in "${n}": ${t.message}.` + (r ? " A page opened as a file cannot fetch files; open it from a server." : ""));
|
|
2904
2966
|
}
|
|
2905
2967
|
}));
|
|
2906
|
-
},
|
|
2968
|
+
}, xr = (e) => {
|
|
2907
2969
|
let t = Array.from(e.childNodes).filter((e) => e.nodeType === Node.ELEMENT_NODE || e.nodeType === Node.TEXT_NODE && e.textContent?.trim());
|
|
2908
2970
|
return t.length === 1 && t[0] instanceof HTMLElement ? t[0] : null;
|
|
2909
|
-
},
|
|
2971
|
+
}, Sr = "strong, b, span.total", Cr = (e) => {
|
|
2910
2972
|
for (let t of e) {
|
|
2911
2973
|
for (let e of t.querySelectorAll("tbody tr")) {
|
|
2912
2974
|
let t = e.cells[0];
|
|
@@ -2914,16 +2976,16 @@ var Ye = (e) => {
|
|
|
2914
2976
|
let n = document.createElement("th");
|
|
2915
2977
|
for (let { name: e, value: r } of Array.from(t.attributes)) n.setAttribute(e, r);
|
|
2916
2978
|
n.append(...t.childNodes), t.replaceWith(n);
|
|
2917
|
-
for (let t =
|
|
2979
|
+
for (let t = xr(n); t?.matches(Sr); t = xr(n)) e.dataset.kind = "total", t.replaceWith(...t.childNodes);
|
|
2918
2980
|
}
|
|
2919
2981
|
let e = Array.from(t.querySelector("thead tr:last-child")?.children ?? []);
|
|
2920
|
-
for (let t of e.slice(1)) for (let e =
|
|
2982
|
+
for (let t of e.slice(1)) for (let e = xr(t); e?.matches(Sr); e = xr(t)) t.setAttribute("data-kind", "focus"), e.replaceWith(...e.childNodes);
|
|
2921
2983
|
}
|
|
2922
|
-
},
|
|
2984
|
+
}, wr = "data-chart-made", Tr = () => window.matchMedia("(prefers-reduced-motion: reduce)").matches, Er = (e) => new Promise((t) => setTimeout(t, e)), Dr = (e, t) => {
|
|
2923
2985
|
let n = Number.parseFloat(e.dataset.chartEntrance ?? ""), r = Number.isFinite(n) ? n : t.entrance;
|
|
2924
2986
|
return Math.min(Math.max(r, 0), 1);
|
|
2925
|
-
},
|
|
2926
|
-
if (
|
|
2987
|
+
}, Or = async (e, t) => {
|
|
2988
|
+
if (Tr()) return;
|
|
2927
2989
|
await new Promise(requestAnimationFrame);
|
|
2928
2990
|
let n = e.getAnimations().filter((e) => e instanceof CSSAnimation);
|
|
2929
2991
|
for (let t = e.parentElement; t && t !== document.body; t = t.parentElement) n.push(...t.getAnimations());
|
|
@@ -2934,11 +2996,11 @@ var Ye = (e) => {
|
|
|
2934
2996
|
let a = Number(n.delay ?? 0) + i * t;
|
|
2935
2997
|
r = Math.max(r, a - Number(e.currentTime ?? 0));
|
|
2936
2998
|
}
|
|
2937
|
-
r > 0 && await
|
|
2938
|
-
},
|
|
2999
|
+
r > 0 && await Er(r);
|
|
3000
|
+
}, kr = (e) => {
|
|
2939
3001
|
for (let t = e; t && t !== document.body; t = t.parentElement) if (getComputedStyle(t).opacity === "0") return t;
|
|
2940
3002
|
return null;
|
|
2941
|
-
},
|
|
3003
|
+
}, Ar = (e) => new Promise((t) => {
|
|
2942
3004
|
let n = ["animationstart", "transitionrun"], r = () => {
|
|
2943
3005
|
for (let e of n) document.removeEventListener(e, i, !0);
|
|
2944
3006
|
a.disconnect(), t();
|
|
@@ -2952,62 +3014,60 @@ var Ye = (e) => {
|
|
|
2952
3014
|
attributes: !0,
|
|
2953
3015
|
attributeFilter: ["class", "style"]
|
|
2954
3016
|
});
|
|
2955
|
-
}),
|
|
2956
|
-
|
|
2957
|
-
for (let e of
|
|
3017
|
+
}), jr = /* @__PURE__ */ new Set(), Mr = null, Nr = (e) => {
|
|
3018
|
+
jr.add(e), !Mr && (Mr = new MutationObserver(() => {
|
|
3019
|
+
for (let e of jr) e.relabel();
|
|
2958
3020
|
requestAnimationFrame(() => requestAnimationFrame(() => {
|
|
2959
|
-
for (let e of
|
|
3021
|
+
for (let e of jr) e.refresh();
|
|
2960
3022
|
}));
|
|
2961
|
-
}),
|
|
3023
|
+
}), Mr.observe(document.documentElement, {
|
|
2962
3024
|
attributes: !0,
|
|
2963
3025
|
attributeFilter: ["lang"]
|
|
2964
3026
|
}));
|
|
2965
|
-
},
|
|
2966
|
-
|
|
2967
|
-
},
|
|
3027
|
+
}, Pr = (e) => {
|
|
3028
|
+
jr.delete(e), !jr.size && Mr && (Mr.disconnect(), Mr = null);
|
|
3029
|
+
}, Fr = ["column", "bar"], Ir = (e) => {
|
|
2968
3030
|
let t = e.getAttribute("data-chart") || "column";
|
|
2969
|
-
if (!
|
|
3031
|
+
if (!Fr.includes(t)) return null;
|
|
2970
3032
|
let n = getComputedStyle(e).getPropertyValue("--tablechart-type").trim();
|
|
2971
|
-
return
|
|
2972
|
-
},
|
|
2973
|
-
let n = e, r =
|
|
2974
|
-
if (!
|
|
3033
|
+
return Fr.includes(n) ? n : t;
|
|
3034
|
+
}, Lr = (e, t) => {
|
|
3035
|
+
let n = e, r = Ir(n.figure), i = null, a = !1, o = !1, s = !1, c = async () => {
|
|
3036
|
+
if (!kn(n.figure, t)) return Zn(n, !0);
|
|
2975
3037
|
let e = n.figure.classList.contains("is-shown");
|
|
2976
|
-
if (
|
|
2977
|
-
|
|
2978
|
-
let e =
|
|
2979
|
-
e && await
|
|
2980
|
-
} else !
|
|
2981
|
-
}, c = () => {
|
|
2982
|
-
let e = wr(n.figure);
|
|
2983
|
-
if (!e || e === r) return;
|
|
2984
|
-
let a = Q.timed("Building", n.figure, () => Tn(n.figure, t, e));
|
|
2985
|
-
a && (Bn(n), Nt(a, n.step, !0), n = a, r = e, i = null);
|
|
3038
|
+
if (o && i !== null && !e && !s) {
|
|
3039
|
+
s = !0;
|
|
3040
|
+
let e = Tr() ? null : kr(n.figure);
|
|
3041
|
+
e && await Ar(e), await Or(n.figure, Dr(n.figure, t)), s = !1, (o || !t.replay) && Zn(n, !0);
|
|
3042
|
+
} else !o && t.replay && e && Zn(n, !1);
|
|
2986
3043
|
}, l = () => {
|
|
2987
|
-
|
|
3044
|
+
let e = Ir(n.figure);
|
|
3045
|
+
if (!e || e === r) return;
|
|
3046
|
+
let a = Q.timed("Building", n.figure, () => Fn(n.figure, t, e));
|
|
3047
|
+
a && (Xn(n), Ut(a, n.step, !0), n = a, r = e, i = null);
|
|
3048
|
+
}, u = () => {
|
|
3049
|
+
l();
|
|
2988
3050
|
let e = n.plot.clientWidth;
|
|
2989
|
-
e && e !== i && Q.timed("Layout", n.figure, () =>
|
|
2990
|
-
},
|
|
2991
|
-
u
|
|
2992
|
-
|
|
2993
|
-
|
|
2994
|
-
}),
|
|
2995
|
-
|
|
2996
|
-
},
|
|
2997
|
-
|
|
2998
|
-
},
|
|
2999
|
-
|
|
3000
|
-
|
|
3001
|
-
relabel: () => Rn(n, t),
|
|
3002
|
-
refresh: h
|
|
3051
|
+
e && e !== i && Q.timed("Layout", n.figure, () => qn(n, t)) && (a || (a = !0, rr(n.figure), ir(n.figure), sr(n.figure)), i = e, c());
|
|
3052
|
+
}, d = !1, f = new ResizeObserver(() => {
|
|
3053
|
+
u(), f.unobserve(n.figure), requestAnimationFrame(() => d || f.observe(n.figure));
|
|
3054
|
+
}), p = new IntersectionObserver((e) => {
|
|
3055
|
+
for (let t of e) o = t.isIntersecting, c();
|
|
3056
|
+
}, { threshold: t.threshold }), m = () => {
|
|
3057
|
+
n.figure.classList.add(x), Zn(n, !0), tr(n.svg), n.figure.offsetWidth;
|
|
3058
|
+
}, h = () => n.figure.classList.remove(x), g = () => {
|
|
3059
|
+
i = null, u();
|
|
3060
|
+
}, _ = {
|
|
3061
|
+
relabel: () => Jn(n, t),
|
|
3062
|
+
refresh: g
|
|
3003
3063
|
};
|
|
3004
|
-
|
|
3005
|
-
let
|
|
3064
|
+
l(), u(), f.observe(n.figure), p.observe(n.figure), window.addEventListener("beforeprint", m), window.addEventListener("afterprint", h), Nr(_);
|
|
3065
|
+
let v = {
|
|
3006
3066
|
figure: n.figure,
|
|
3007
|
-
refresh:
|
|
3008
|
-
next: () =>
|
|
3009
|
-
previous: () =>
|
|
3010
|
-
stepTo: (e) =>
|
|
3067
|
+
refresh: g,
|
|
3068
|
+
next: () => Ut(n, n.step + 1),
|
|
3069
|
+
previous: () => Ut(n, n.step - 1),
|
|
3070
|
+
stepTo: (e) => Ut(n, e),
|
|
3011
3071
|
get step() {
|
|
3012
3072
|
return n.step;
|
|
3013
3073
|
},
|
|
@@ -3015,41 +3075,41 @@ var Ye = (e) => {
|
|
|
3015
3075
|
return n.plan?.count ?? 0;
|
|
3016
3076
|
},
|
|
3017
3077
|
destroy() {
|
|
3018
|
-
d.disconnect(),
|
|
3078
|
+
d = !0, f.disconnect(), p.disconnect(), window.removeEventListener("beforeprint", m), window.removeEventListener("afterprint", h), Pr(_), _n(n), n.figure.tablechart === v && delete n.figure.tablechart;
|
|
3019
3079
|
}
|
|
3020
3080
|
};
|
|
3021
|
-
return n.figure.tablechart =
|
|
3022
|
-
},
|
|
3081
|
+
return n.figure.tablechart = v, v;
|
|
3082
|
+
}, Rr = !1, zr = (t) => {
|
|
3023
3083
|
let n = t.find((e) => e.tagName !== "FIGURE");
|
|
3024
|
-
!
|
|
3025
|
-
},
|
|
3026
|
-
let n =
|
|
3027
|
-
|
|
3084
|
+
!Rr && n && (Rr = !0, console.warn(`[${e}] A chart is a <${n.tagName.toLowerCase()}>. Use a <figure> with a <figcaption>, so the chart has a title, also for screen readers.`, n));
|
|
3085
|
+
}, Br = async (e, t) => {
|
|
3086
|
+
let n = _r(e.filter((e) => !e.hasAttribute(wr) && e.tagName !== "TH"));
|
|
3087
|
+
zr(n), await br(n), Cr(n), ht(n, t.langattribute);
|
|
3028
3088
|
for (let e of n) e.dispatchEvent(new CustomEvent("tablechart:table", { bubbles: !0 }));
|
|
3029
3089
|
return n;
|
|
3030
|
-
},
|
|
3031
|
-
let n = Q.timed("Building", e, () =>
|
|
3032
|
-
return n ? (e.setAttribute(
|
|
3033
|
-
},
|
|
3034
|
-
|
|
3035
|
-
for (let e of document.querySelectorAll(`[${
|
|
3090
|
+
}, Vr = (e, t) => {
|
|
3091
|
+
let n = Q.timed("Building", e, () => Fn(e, t));
|
|
3092
|
+
return n ? (e.setAttribute(wr, ""), Ur(), Lr(n, t)) : null;
|
|
3093
|
+
}, Hr = !1, Ur = () => {
|
|
3094
|
+
Hr || typeof matchMedia != "function" || (Hr = !0, matchMedia("(prefers-color-scheme: dark)").addEventListener("change", () => {
|
|
3095
|
+
for (let e of document.querySelectorAll(`[${wr}]`)) Mt(e), Rt(e);
|
|
3036
3096
|
}));
|
|
3037
|
-
},
|
|
3097
|
+
}, Wr = async (e, t = {}) => {
|
|
3038
3098
|
if (e.tablechart) return e.tablechart;
|
|
3039
3099
|
let n = {
|
|
3040
|
-
...
|
|
3100
|
+
...k,
|
|
3041
3101
|
...t
|
|
3042
3102
|
};
|
|
3043
3103
|
n.debug && (Q.enabled = !0);
|
|
3044
|
-
let [r] = await
|
|
3045
|
-
return r ?
|
|
3046
|
-
},
|
|
3104
|
+
let [r] = await Br([e], n);
|
|
3105
|
+
return r ? Vr(r, n) : null;
|
|
3106
|
+
}, Gr = async (e = {}, t = document) => {
|
|
3047
3107
|
let n = {
|
|
3048
|
-
...
|
|
3108
|
+
...k,
|
|
3049
3109
|
...e
|
|
3050
3110
|
};
|
|
3051
3111
|
n.debug && (Q.enabled = !0);
|
|
3052
|
-
let r = (await
|
|
3112
|
+
let r = (await Br(Array.from(t.querySelectorAll(n.selector)), n)).map((e) => Vr(e, n)).filter((e) => e !== null);
|
|
3053
3113
|
return Q.log(`Made ${r.length} chart(s).`), {
|
|
3054
3114
|
charts: r,
|
|
3055
3115
|
refresh: () => {
|
|
@@ -3060,4 +3120,4 @@ var Ye = (e) => {
|
|
|
3060
3120
|
}
|
|
3061
3121
|
};
|
|
3062
3122
|
};
|
|
3063
|
-
export {
|
|
3123
|
+
export { L as A, t as B, Y as C, re as D, ue as E, D as F, b as G, x as H, p as I, O as K, e as L, P as M, F as N, G as O, S as P, f as R, Ge as S, fe as T, s as U, m as V, w as W, ht as _, _r as a, $e as b, rr as c, Fn as d, qn as f, Ut as g, Xn as h, Br as i, R as j, ie as k, ir as l, Zn as m, Dr as n, br as o, Jn as p, k as q, Gr as r, Cr as s, Wr as t, yn as u, mt as v, J as w, et as x, dt as y, v as z };
|