@martinomagnifico/tablechart 1.2.4 → 1.2.5
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 +16 -0
- package/dist/tablechart-shared.d.mts +2 -0
- package/dist/tablechart-shared.mjs +789 -692
- package/dist/tablechart.css +1 -1
- package/dist/tablechart.js +1 -1
- package/package.json +1 -1
|
@@ -44,9 +44,59 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
44
44
|
return n.className = e, n.inert = !0, t.appendChild(n), n;
|
|
45
45
|
}, R = (e, t, n, r, i) => {
|
|
46
46
|
e.style.left = `${t / r * 100}%`, e.style.top = `${n / i * 100}%`;
|
|
47
|
-
}, z = 0, B = 0, V = (e) => {
|
|
47
|
+
}, z = 0, B = 0, V = 0, H = (e) => {
|
|
48
48
|
let t = e.querySelector(":scope > defs");
|
|
49
49
|
return t || (t = F("defs"), e.prepend(t)), t;
|
|
50
|
+
}, U = (e, t) => {
|
|
51
|
+
for (let n of e.querySelectorAll("rect[data-end]")) {
|
|
52
|
+
let [e, r, i, a] = [
|
|
53
|
+
"x",
|
|
54
|
+
"y",
|
|
55
|
+
"width",
|
|
56
|
+
"height"
|
|
57
|
+
].map((e) => Number(n.getAttribute(e))), o = n.getAttribute("data-end"), s = o === "left" || o === "right", c = P(Math.min(t, s ? a / 2 : i / 2, s ? i : a)), l = (e, t) => `a${c},${c} 0 0 1 ${e},${t}`, u = {
|
|
58
|
+
top: `M${e},${P(r + a)}v${P(c - a)}${l(c, -c)}h${P(i - 2 * c)}${l(c, c)}v${P(a - c)}z`,
|
|
59
|
+
bottom: `M${P(e + i)},${r}v${P(a - c)}${l(-c, c)}h${P(2 * c - i)}${l(-c, -c)}v${P(c - a)}z`,
|
|
60
|
+
right: `M${e},${r}h${P(i - c)}${l(c, c)}v${P(a - 2 * c)}${l(-c, c)}h${P(c - i)}z`,
|
|
61
|
+
left: `M${P(e + i)},${P(r + a)}h${P(c - i)}${l(-c, -c)}v${P(2 * c - a)}${l(c, -c)}h${P(i - c)}z`
|
|
62
|
+
}[o], d = F("path", { d: u });
|
|
63
|
+
for (let { name: e, value: t } of Array.from(n.attributes)) [
|
|
64
|
+
"x",
|
|
65
|
+
"y",
|
|
66
|
+
"width",
|
|
67
|
+
"height"
|
|
68
|
+
].includes(e) || d.setAttribute(e, t);
|
|
69
|
+
n.replaceWith(d);
|
|
70
|
+
}
|
|
71
|
+
}, W = (e, t, n, r, i) => {
|
|
72
|
+
let a = `tablechart-fade-${++V}`, o = F("linearGradient", {
|
|
73
|
+
id: a,
|
|
74
|
+
gradientUnits: "userSpaceOnUse",
|
|
75
|
+
x1: 0,
|
|
76
|
+
x2: 0,
|
|
77
|
+
y1: P(t),
|
|
78
|
+
y2: P(r),
|
|
79
|
+
...i
|
|
80
|
+
}), s = [
|
|
81
|
+
...t < n ? [{
|
|
82
|
+
offset: 0,
|
|
83
|
+
faded: !1
|
|
84
|
+
}] : [],
|
|
85
|
+
{
|
|
86
|
+
offset: r > t ? (n - t) / (r - t) : 0,
|
|
87
|
+
faded: !0
|
|
88
|
+
},
|
|
89
|
+
...r > n ? [{
|
|
90
|
+
offset: 1,
|
|
91
|
+
faded: !1
|
|
92
|
+
}] : []
|
|
93
|
+
];
|
|
94
|
+
for (let { offset: e, faded: t } of s) o.appendChild(F("stop", {
|
|
95
|
+
class: "tablechart-area-stop",
|
|
96
|
+
offset: P(e),
|
|
97
|
+
...t && { "data-faded": "" }
|
|
98
|
+
}));
|
|
99
|
+
return H(e).appendChild(o), a;
|
|
50
100
|
}, ee = (e) => {
|
|
51
101
|
if (e.tagName === "circle") {
|
|
52
102
|
let [t, n, r] = [
|
|
@@ -66,7 +116,7 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
66
116
|
"ry"
|
|
67
117
|
].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)}` : "";
|
|
68
118
|
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`;
|
|
69
|
-
},
|
|
119
|
+
}, te = (e, t, n, r, i) => {
|
|
70
120
|
if (!t.length || !i.length) return;
|
|
71
121
|
let a = `tablechart-clip-${++B}`, o = F("clipPath", {
|
|
72
122
|
id: a,
|
|
@@ -75,9 +125,9 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
75
125
|
o.appendChild(F("path", {
|
|
76
126
|
d: s + t.map(ee).join(""),
|
|
77
127
|
"clip-rule": "evenodd"
|
|
78
|
-
})),
|
|
128
|
+
})), H(e).appendChild(o);
|
|
79
129
|
for (let e of i) e.setAttribute("clip-path", `url(#${a})`);
|
|
80
|
-
},
|
|
130
|
+
}, ne = (e, t, n, r, i, a) => {
|
|
81
131
|
if (!t.length) return;
|
|
82
132
|
let o = `tablechart-cut-${++z}`, s = F("mask", {
|
|
83
133
|
id: o,
|
|
@@ -91,14 +141,14 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
91
141
|
fill: "white"
|
|
92
142
|
}));
|
|
93
143
|
for (let e of t) e.setAttribute("fill", "black"), s.appendChild(e);
|
|
94
|
-
let c =
|
|
144
|
+
let c = H(e);
|
|
95
145
|
if (c.appendChild(s), i) {
|
|
96
146
|
for (let e of i) e.setAttribute("mask", `url(#${o})`);
|
|
97
147
|
return;
|
|
98
148
|
}
|
|
99
149
|
let l = null;
|
|
100
150
|
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)));
|
|
101
|
-
},
|
|
151
|
+
}, re = 0, G = (e) => Array.from(e.querySelectorAll(`.${r}`)).map((e) => {
|
|
102
152
|
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("; ");
|
|
103
153
|
return {
|
|
104
154
|
row: Number(e.dataset.row),
|
|
@@ -109,7 +159,7 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
109
159
|
sideways: e.dataset.grow === "right",
|
|
110
160
|
part: s
|
|
111
161
|
};
|
|
112
|
-
}),
|
|
162
|
+
}), K = {
|
|
113
163
|
create: () => null,
|
|
114
164
|
draw(e, t, n) {
|
|
115
165
|
let { rows: r, y: i, svg: a, breakAt: o } = n;
|
|
@@ -136,7 +186,7 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
136
186
|
[c + 2 * l, t + o],
|
|
137
187
|
[c + i, t - o]
|
|
138
188
|
];
|
|
139
|
-
}, 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-${++
|
|
189
|
+
}, 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-${++re}`, d = F("mask", {
|
|
140
190
|
id: u,
|
|
141
191
|
maskUnits: "userSpaceOnUse"
|
|
142
192
|
});
|
|
@@ -148,7 +198,7 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
148
198
|
fill: "white"
|
|
149
199
|
}));
|
|
150
200
|
let f = [], p = i(o);
|
|
151
|
-
for (let e of
|
|
201
|
+
for (let e of G(a)) {
|
|
152
202
|
let t = e.sideways ? n.breakX : p;
|
|
153
203
|
if (t === void 0 || !(e.sideways ? e.x < t && e.x + e.width > t : e.y < p && e.y + e.height > p)) continue;
|
|
154
204
|
let [i, o] = e.sideways ? [c(e, t), c(e, t + n.breakGap)] : [c(e, p - n.breakGap), c(e, p)];
|
|
@@ -171,17 +221,17 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
171
221
|
let g = F("defs");
|
|
172
222
|
g.appendChild(d), a.prepend(g, h);
|
|
173
223
|
}
|
|
174
|
-
},
|
|
224
|
+
}, q = (e) => {
|
|
175
225
|
let t = -Infinity;
|
|
176
226
|
for (let n of e) t = Math.max(t, n);
|
|
177
227
|
return t;
|
|
178
|
-
}, ie = (e) => (e.split(/[.,]/)[1] || "").length,
|
|
228
|
+
}, ie = (e) => (e.split(/[.,]/)[1] || "").length, ae = (e, t) => new Intl.NumberFormat(t || document.documentElement.lang || void 0, {
|
|
179
229
|
minimumFractionDigits: e,
|
|
180
230
|
maximumFractionDigits: e
|
|
181
|
-
}),
|
|
182
|
-
let r =
|
|
231
|
+
}), oe = (e, t, n) => {
|
|
232
|
+
let r = ae(t, n).formatToParts(e), i = r[0]?.type === "minusSign" ? r[0].value : "";
|
|
183
233
|
return [i, r.slice(+!!i).map((e) => e.value).join("")];
|
|
184
|
-
},
|
|
234
|
+
}, se = (e) => Number.parseFloat((e.match(/-?[\d.,]+/) || ["NaN"])[0].replace(",", ".")), ce = (e, t) => {
|
|
185
235
|
let n = document.createElement("span");
|
|
186
236
|
if (n.className = "tablechart-badge", n.inert = !0, e.childElementCount > 0) for (let t of Array.from(e.children)) n.appendChild(t.cloneNode(!0));
|
|
187
237
|
else {
|
|
@@ -190,24 +240,24 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
190
240
|
t && n.setAttribute("data-i18n", t);
|
|
191
241
|
}
|
|
192
242
|
return t.appendChild(n), n;
|
|
193
|
-
},
|
|
194
|
-
let o = t?.textContent || "", s =
|
|
243
|
+
}, le = (t, n, r, i, a = "%") => {
|
|
244
|
+
let o = t?.textContent || "", s = se(o), c = a ? .5 : .5 * 10 ** -ie(o.match(/-?[\d.,]+/)?.[0] ?? ""), l = Number.isNaN(s) ? !0 : Math.abs(n - s) <= c + 1e-9, u = {
|
|
195
245
|
label: r,
|
|
196
246
|
computed: n,
|
|
197
247
|
stated: s,
|
|
198
248
|
agrees: l
|
|
199
249
|
};
|
|
200
250
|
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.`);
|
|
201
|
-
},
|
|
251
|
+
}, ue = (e, t) => (t - e) / Math.abs(e) * 100, de = (e, t) => {
|
|
202
252
|
let n = (t, n) => {
|
|
203
253
|
let r = Number.parseInt(e.getAttribute(t) ?? "", 10);
|
|
204
254
|
return Number.isFinite(r) ? r - 1 : n;
|
|
205
255
|
};
|
|
206
256
|
return [n("data-from", 0), n("data-to", t - 1)];
|
|
207
|
-
},
|
|
208
|
-
create:
|
|
257
|
+
}, fe = {
|
|
258
|
+
create: ce,
|
|
209
259
|
draw(t, n, r) {
|
|
210
|
-
let { rows: i, cx: o, y: s, unit: l, labelHeight: u, badgeHeight: d, height: f, svg: p, after: m } = r, [h, g] =
|
|
260
|
+
let { rows: i, cx: o, y: s, unit: l, labelHeight: u, badgeHeight: d, height: f, svg: p, after: m } = r, [h, g] = de(t, i.length), _ = i[h], v = i[g];
|
|
211
261
|
if (!_ || !v) {
|
|
212
262
|
console.warn(`[${e}] A bracket points at a row that is not there (row ${h + 1} to ${g + 1}, of ${i.length}).`);
|
|
213
263
|
return;
|
|
@@ -225,9 +275,9 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
225
275
|
"data-note": r.note,
|
|
226
276
|
points: `${S},${D} ${S - y * .45},${D - y} ${S + y * .45},${D - y}`,
|
|
227
277
|
style: M("--after", m)
|
|
228
|
-
})), n && (R(n, (x + S) / 2, C, O, f), n.style.setProperty("--after", String(m))),
|
|
278
|
+
})), n && (R(n, (x + S) / 2, C, O, f), n.style.setProperty("--after", String(m))), le(n, ue(_.value, v.value), `${_.value} to ${v.value}`, r);
|
|
229
279
|
}
|
|
230
|
-
},
|
|
280
|
+
}, pe = (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], me = (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], he = (e, t, n) => {
|
|
231
281
|
if (e.length > 400) return e.map(() => null);
|
|
232
282
|
let r = 1;
|
|
233
283
|
for (let t of e) for (let [, , e, n] of t) r = Math.max(r, e, n);
|
|
@@ -237,21 +287,21 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
237
287
|
return a;
|
|
238
288
|
}, o = (e) => {
|
|
239
289
|
for (let t of a(e)) i.get(t)?.push(e) ?? i.set(t, [e]);
|
|
240
|
-
}, s = (e) =>
|
|
290
|
+
}, s = (e) => me(e, n) && a(e).every((t) => !i.get(t)?.some((t) => pe(e, t)));
|
|
241
291
|
return t.forEach(o), e.map((e) => {
|
|
242
292
|
let t = e.findIndex(s);
|
|
243
293
|
return t < 0 ? null : (o(e[t]), t);
|
|
244
294
|
});
|
|
245
|
-
},
|
|
295
|
+
}, ge = /* @__PURE__ */ new WeakMap(), _e = (e) => {
|
|
246
296
|
let t = [...e].filter((e) => !!e), n = t.map((e) => ({
|
|
247
297
|
width: e.offsetWidth,
|
|
248
298
|
height: e.offsetHeight
|
|
249
299
|
}));
|
|
250
|
-
t.forEach((e, t) =>
|
|
251
|
-
},
|
|
300
|
+
t.forEach((e, t) => ge.set(e, n[t]));
|
|
301
|
+
}, J = (e) => ge.get(e) ?? {
|
|
252
302
|
width: e.offsetWidth,
|
|
253
303
|
height: e.offsetHeight
|
|
254
|
-
},
|
|
304
|
+
}, ve = 6, ye = (e, t, n) => e.some((e) => J(e).width * n > t - ve * n), be = (e, t, n) => t >= J(e).height * n * 1.6, xe = (e, t, n) => t >= J(e).width * n * 1.5, Se = (e, t, n, r, i = .7) => {
|
|
255
305
|
e.style.setProperty(r, "1");
|
|
256
306
|
let a = 1;
|
|
257
307
|
for (let e of t) {
|
|
@@ -260,7 +310,7 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
260
310
|
}
|
|
261
311
|
let o = a >= i ? a : 0;
|
|
262
312
|
return e.style.setProperty(r, String(o || i)), o;
|
|
263
|
-
},
|
|
313
|
+
}, Ce = (e, t) => {
|
|
264
314
|
e.sort((e, t) => e.y - t.y);
|
|
265
315
|
let n = [], r = (e) => e.sum / e.items.length - (e.items.length - 1) * t / 2;
|
|
266
316
|
for (let i of e) {
|
|
@@ -276,39 +326,39 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
276
326
|
}
|
|
277
327
|
for (let e of n) e.items.forEach((n, i) => n.y = r(e) + i * t);
|
|
278
328
|
return e;
|
|
279
|
-
},
|
|
329
|
+
}, we = {
|
|
280
330
|
outside: [.5, 1],
|
|
281
331
|
below: [.5, 0],
|
|
282
332
|
after: [0, .5],
|
|
283
333
|
before: [1, .5]
|
|
284
|
-
},
|
|
285
|
-
let [a, o] =
|
|
334
|
+
}, Te = (e, t, n, r, i = [.5, .5]) => {
|
|
335
|
+
let [a, o] = we[e.dataset.place ?? ""] ?? i, { width: s, height: c } = J(e);
|
|
286
336
|
return [
|
|
287
337
|
Number.parseFloat(e.style.left) / 100 * n - s * t * a,
|
|
288
338
|
Number.parseFloat(e.style.top) / 100 * r - c * t * o,
|
|
289
339
|
s * t,
|
|
290
340
|
c * t
|
|
291
341
|
];
|
|
292
|
-
},
|
|
342
|
+
}, Ee = (e, t, n) => {
|
|
293
343
|
for (let r of e) {
|
|
294
344
|
if (r.dataset.place === "none" || !r.style.left) continue;
|
|
295
|
-
let [e] =
|
|
345
|
+
let [e] = we[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));
|
|
296
346
|
o !== a && (r.style.left = `${o / n * 100}%`);
|
|
297
347
|
}
|
|
298
|
-
},
|
|
299
|
-
let i = e.filter((e) => e.dataset.place !== "none" && !e.hasAttribute("data-left-out")), a =
|
|
348
|
+
}, De = (e, t, n, r) => {
|
|
349
|
+
let i = e.filter((e) => e.dataset.place !== "none" && !e.hasAttribute("data-left-out")), a = Oe(i, t, n, r);
|
|
300
350
|
i.forEach((e, t) => {
|
|
301
351
|
t % a && e.setAttribute("data-left-out", "");
|
|
302
352
|
});
|
|
303
|
-
},
|
|
353
|
+
}, Oe = (e, t, n, r) => {
|
|
304
354
|
if (e.length < 2) return 1;
|
|
305
|
-
let i = e.map((e) =>
|
|
355
|
+
let i = e.map((e) => Te(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;
|
|
306
356
|
for (; s < e.length && i.some((e, t) => t >= s && t % s === 0 && !o(i[t - s], e));) s++;
|
|
307
357
|
return s;
|
|
308
|
-
},
|
|
358
|
+
}, ke = {
|
|
309
359
|
create(e, t) {
|
|
310
360
|
if (!e.textContent?.trim()) return null;
|
|
311
|
-
let n =
|
|
361
|
+
let n = ce(e, t);
|
|
312
362
|
return n.dataset.kind = "note", n;
|
|
313
363
|
},
|
|
314
364
|
draw(t, n, r) {
|
|
@@ -333,9 +383,9 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
333
383
|
y2: _,
|
|
334
384
|
style: M("--after", d)
|
|
335
385
|
}), u.querySelector(`:scope > .${m}`)), !n) return;
|
|
336
|
-
let v =
|
|
386
|
+
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") ? [] : [{
|
|
337
387
|
label: e,
|
|
338
|
-
box:
|
|
388
|
+
box: Te(e, l, O, c)
|
|
339
389
|
}]), S = [0, y + b / 2].flatMap((e) => [
|
|
340
390
|
[
|
|
341
391
|
g - v / 2,
|
|
@@ -355,15 +405,15 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
355
405
|
v,
|
|
356
406
|
y
|
|
357
407
|
]
|
|
358
|
-
]), [C] =
|
|
408
|
+
]), [C] = he([S], [...r.taken, ...x.map((e) => e.box)], [
|
|
359
409
|
0,
|
|
360
410
|
0,
|
|
361
411
|
O,
|
|
362
412
|
c
|
|
363
413
|
]), w = S[C ?? 0];
|
|
364
|
-
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)
|
|
414
|
+
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) pe(e.box, w) && e.label.setAttribute("data-left-out", "");
|
|
365
415
|
}
|
|
366
|
-
},
|
|
416
|
+
}, Ae = (e, t, n) => {
|
|
367
417
|
let r = n.reduce((e, t) => e + t, 0);
|
|
368
418
|
if (e === "mean") return r ? t.reduce((e, t, r) => e + t * n[r], 0) / r : null;
|
|
369
419
|
if (e === "median") {
|
|
@@ -376,25 +426,25 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
376
426
|
}
|
|
377
427
|
let i = Number.parseFloat(e);
|
|
378
428
|
return Number.isFinite(i) ? i : null;
|
|
379
|
-
},
|
|
429
|
+
}, je = {
|
|
380
430
|
create(e, t) {
|
|
381
431
|
if (!e.textContent?.trim()) return null;
|
|
382
|
-
let n =
|
|
432
|
+
let n = ce(e, t);
|
|
383
433
|
return n.dataset.kind = "reference", n;
|
|
384
434
|
},
|
|
385
435
|
draw(t, n, r) {
|
|
386
436
|
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;
|
|
387
437
|
if (h) {
|
|
388
|
-
let t = p.map((e) =>
|
|
438
|
+
let t = p.map((e) => se(e.label));
|
|
389
439
|
if (r.categories[0]?.parentElement?.dataset.place === "beside" || t.some(Number.isNaN)) {
|
|
390
440
|
console.warn(`[${e}] A reference line among the names needs names that are numbers, under columns or points.`);
|
|
391
441
|
return;
|
|
392
442
|
}
|
|
393
|
-
let n =
|
|
443
|
+
let n = Ae(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]);
|
|
394
444
|
y = n, v = o < 0 ? null : s + l * (c - s), _ = !1;
|
|
395
445
|
} else {
|
|
396
446
|
let e = !!r.frame && t.getAttribute("data-axis") === "y", n = r.frame ? r.series.flatMap((e, t) => e.group ? [] : [t])[+!!e] ?? 0 : 0;
|
|
397
|
-
y =
|
|
447
|
+
y = Ae(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);
|
|
398
448
|
}
|
|
399
449
|
if (v === null || y === null) {
|
|
400
450
|
console.warn(`[${e}] A reference line needs a number, "mean" or "median", not "${g}".`);
|
|
@@ -428,7 +478,7 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
428
478
|
},
|
|
429
479
|
style: M("--after", f)
|
|
430
480
|
}), d.querySelector(`:scope > .${m}`)), n) {
|
|
431
|
-
let e =
|
|
481
|
+
let e = J(n).width * u, t = J(n).height * u, i = 4 * u, a = _ ? [
|
|
432
482
|
[
|
|
433
483
|
S - e,
|
|
434
484
|
v - t / 2,
|
|
@@ -470,17 +520,17 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
470
520
|
e,
|
|
471
521
|
t
|
|
472
522
|
]
|
|
473
|
-
]), [o] =
|
|
523
|
+
]), [o] = he([a], r.taken, [
|
|
474
524
|
0,
|
|
475
525
|
0,
|
|
476
526
|
O,
|
|
477
527
|
l
|
|
478
528
|
]), s = a[o ?? 0];
|
|
479
|
-
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") &&
|
|
529
|
+
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") && le(n, y, `the ${g}`, r, "");
|
|
480
530
|
}
|
|
481
531
|
}
|
|
482
|
-
},
|
|
483
|
-
create:
|
|
532
|
+
}, Me = (e, t, n) => ((t / e) ** (1 / n) - 1) * 100, Ne = {
|
|
533
|
+
create: ce,
|
|
484
534
|
draw(e, t, n) {
|
|
485
535
|
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];
|
|
486
536
|
if (!m || !h) return;
|
|
@@ -493,9 +543,9 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
493
543
|
y -= D * _, b -= k * _, x += D * _, S += k * _;
|
|
494
544
|
let A = Number.parseFloat(e.getAttribute("data-at") || "0.5");
|
|
495
545
|
if (t) {
|
|
496
|
-
let e = y + (x - y) * A, n = b + (S - b) * A, a =
|
|
546
|
+
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;
|
|
497
547
|
r.forEach((t, n) => {
|
|
498
|
-
let r = (f[n] ?
|
|
548
|
+
let r = (f[n] ? J(f[n]).width : 0) * s / 2;
|
|
499
549
|
if (Math.abs(i(n) - e) >= a + r) return;
|
|
500
550
|
let d = o(t.value) - 7 * s - l;
|
|
501
551
|
u = Math.max(u, c - d);
|
|
@@ -523,27 +573,27 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
523
573
|
style: M("--after", p)
|
|
524
574
|
})), t && (R(t, y + (x - y) * A, b + (S - b) * A, O, u), t.style.setProperty("--after", String(p)));
|
|
525
575
|
let B = Number.parseFloat(e.getAttribute("data-years") || "");
|
|
526
|
-
!Number.isNaN(B) && B > 0 &&
|
|
576
|
+
!Number.isNaN(B) && B > 0 && le(t, Me(m.value, h.value, B), `${m.value} to ${h.value} over ${B} years`, n);
|
|
527
577
|
}
|
|
528
|
-
},
|
|
578
|
+
}, Pe = (e, t, n, r, i) => {
|
|
529
579
|
if (!r) return e / t * n;
|
|
530
580
|
let { lo: a, hi: o, gap: s, share: c } = r, l = n * c, u = (n - l - i) / (a + (t - o)), d = l / (o - a);
|
|
531
581
|
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;
|
|
532
|
-
},
|
|
582
|
+
}, Fe = (e, t, n) => {
|
|
533
583
|
let r = .15, i = Math.min(e * .7 / (t + (t - 1) * r), n), a = t * i + (t - 1) * i * r;
|
|
534
584
|
return {
|
|
535
585
|
size: i,
|
|
536
586
|
gap: i * r,
|
|
537
587
|
offset: (e) => -a / 2 + e * i * 1.15
|
|
538
588
|
};
|
|
539
|
-
},
|
|
589
|
+
}, Ie = (e, t, n) => {
|
|
540
590
|
let r = e.series[n], i = e.series.some((e) => e.focus) && !r.focus;
|
|
541
591
|
return {
|
|
542
592
|
"data-series": n + 1,
|
|
543
593
|
...i && { "data-muted": "" },
|
|
544
594
|
style: `--n:${n}; --m:${+!!i}; --palette:var(--tablechart-color-${n + 1}); ${M("--i", t.slot)}`
|
|
545
595
|
};
|
|
546
|
-
},
|
|
596
|
+
}, Le = (e, t, n = !1) => {
|
|
547
597
|
let r = 0, i = 0;
|
|
548
598
|
return Array.from({ length: t }, (t, a) => {
|
|
549
599
|
let o = e.cells[a] ?? e.cells[0], s = o.missing ? 0 : o.value;
|
|
@@ -570,19 +620,19 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
570
620
|
cell: o
|
|
571
621
|
};
|
|
572
622
|
});
|
|
573
|
-
},
|
|
574
|
-
let r =
|
|
623
|
+
}, Re = (e, t, n = !1) => {
|
|
624
|
+
let r = Le(e, t, n);
|
|
575
625
|
return {
|
|
576
626
|
top: Math.max(0, ...r.map((e) => e.to)),
|
|
577
627
|
bottom: Math.min(0, ...r.map((e) => e.to))
|
|
578
628
|
};
|
|
579
|
-
},
|
|
580
|
-
let { top: n, bottom: r } =
|
|
629
|
+
}, ze = (e, t) => {
|
|
630
|
+
let { top: n, bottom: r } = Re(e, t);
|
|
581
631
|
return n + r;
|
|
582
|
-
},
|
|
632
|
+
}, Be = (e, t, n) => {
|
|
583
633
|
let r = t.series.some((e) => e.focus);
|
|
584
634
|
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})`);
|
|
585
|
-
},
|
|
635
|
+
}, Ve = (e, t) => e.barRadius ? { "data-end": t } : {}, He = (e, t) => e.some((n, r) => r !== t && !n.cell.missing && n.to !== n.from && n.from === e[t].to), Ue = (e, t, n, i = {}, a = "") => {
|
|
586
636
|
let o = {
|
|
587
637
|
class: I(r, t),
|
|
588
638
|
"data-kind": "bar",
|
|
@@ -600,10 +650,10 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
600
650
|
...a,
|
|
601
651
|
class: I("tablechart-piece", t),
|
|
602
652
|
"data-row": n + 1,
|
|
603
|
-
...
|
|
653
|
+
...Ie(e, t, r)
|
|
604
654
|
}));
|
|
605
655
|
};
|
|
606
|
-
},
|
|
656
|
+
}, We = {
|
|
607
657
|
segments: (e) => e.map((e) => ({
|
|
608
658
|
...e,
|
|
609
659
|
from: 0,
|
|
@@ -624,15 +674,15 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
624
674
|
categories: "beside",
|
|
625
675
|
headroom: () => 0,
|
|
626
676
|
draw(e) {
|
|
627
|
-
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(
|
|
677
|
+
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(q(c.map((e) => J(e).width * a)), 0), p = Math.min(f + 10 * a, O * .42);
|
|
628
678
|
c[0]?.parentElement?.style.setProperty("--_beside", `${((p - 8 * a) / O * 100).toFixed(2)}%`);
|
|
629
|
-
let m = O - 4 * a, h = e.stacked ? Math.max(
|
|
679
|
+
let m = O - 4 * a, h = e.stacked ? Math.max(q(e.rows.map((t) => Re(t, e.series.length).top)), 0) || 1 : Math.max(q(e.rows.flatMap((t) => t.cells.slice(0, e.series.length).map((e) => Math.abs(e.value)))), 0) || 1, g = e.stacked ? Math.max(q(e.rows.map((t) => -Re(t, e.series.length).bottom)), 0) : Math.max(q(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) => Pe(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 = Fe(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 ? q(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) => ({
|
|
630
680
|
label: e,
|
|
631
681
|
value: j(t, n)
|
|
632
682
|
}))), P = (t) => {
|
|
633
|
-
let n =
|
|
683
|
+
let n = Re(e.rows[t], e.series.length);
|
|
634
684
|
return n.top === 0 && n.bottom < 0;
|
|
635
|
-
}, 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" &&
|
|
685
|
+
}, 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" && xe(t, n, a), V = d && !e.stacked && e.labels === "inside" && !!T && J(T).height * a <= w.size;
|
|
636
686
|
if (V && (L = z = 0), V || !d && !e.stacked) {
|
|
637
687
|
let e = d ? N.filter(({ label: e }) => e.dataset.missing === void 0) : t.map((e, t) => ({
|
|
638
688
|
label: s[t],
|
|
@@ -644,39 +694,40 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
644
694
|
L = Math.max(L, r), z = Math.max(z, i);
|
|
645
695
|
}
|
|
646
696
|
}
|
|
647
|
-
let
|
|
648
|
-
if (e.squeeze && (e.breakX =
|
|
697
|
+
let H = m - p - L - z, U = p + z + b(v, H), W = (e) => e < 0 ? U - b(e, H) : U + b(e, H);
|
|
698
|
+
if (e.squeeze && (e.breakX = W(e.squeeze.gap)), e.x = W, e.stacked) {
|
|
649
699
|
let t = e.length("--tablechart-stack-gap", "1px") ?? a;
|
|
650
700
|
e.rows.forEach((r, i) => {
|
|
651
|
-
let o =
|
|
701
|
+
let o = Re(r, e.series.length), s = Ue(e, r, i, { "data-grow": "right" }, o.bottom < 0 ? `${U - W(o.bottom)}px center` : ""), l = S(i) - C / 2, u = Le(r, e.series.length);
|
|
652
702
|
u.forEach(({ from: r, to: o, cell: c }, d) => {
|
|
653
703
|
let f = e.seriesValues[d][i];
|
|
654
704
|
if (f.dataset.place = "none", c.missing || o === r) return;
|
|
655
|
-
let p = Math.min(
|
|
705
|
+
let p = Math.min(W(r), W(o)), m = Math.max(W(r), W(o)), h = He(u, d) ? Math.min(t, (m - p) / 2) : 0, [g, _] = W(o) > W(r) ? [p, m - h] : [p + h, m];
|
|
656
706
|
s(d, {
|
|
657
707
|
x: g,
|
|
658
708
|
y: l,
|
|
659
709
|
width: Math.max(_ - g, 1),
|
|
660
710
|
height: C,
|
|
661
|
-
...o < r && { "data-grow": "left" }
|
|
662
|
-
|
|
711
|
+
...o < r && { "data-grow": "left" },
|
|
712
|
+
...!He(u, d) && Ve(e, o < r ? "left" : "right")
|
|
713
|
+
}), f.dataset.place = "inside", f.toggleAttribute("data-left-out", !xe(f, m - p, a) || J(f).height * a > C), Be(f, e, d), R(f, (p + m) / 2, S(i), O, n);
|
|
663
714
|
});
|
|
664
715
|
let d = e.totals[i];
|
|
665
|
-
d && (d.dataset.place = P(i) ? "before" : "after", R(d, P(i) ?
|
|
716
|
+
d && (d.dataset.place = P(i) ? "before" : "after", R(d, P(i) ? W(o.bottom) - D : W(o.top) + D, S(i), O, n));
|
|
666
717
|
let f = c[i];
|
|
667
718
|
f && R(f, p - 8 * a, S(i), O, n);
|
|
668
719
|
}), o.appendChild(F("line", {
|
|
669
720
|
class: i,
|
|
670
|
-
x1:
|
|
671
|
-
x2:
|
|
721
|
+
x1: U,
|
|
722
|
+
x2: U,
|
|
672
723
|
y1: 0,
|
|
673
724
|
y2: n
|
|
674
725
|
}));
|
|
675
726
|
return;
|
|
676
727
|
}
|
|
677
728
|
if (d) {
|
|
678
|
-
let t = e.seriesValues.flat().filter((e) => e.dataset.missing === void 0), s =
|
|
679
|
-
size:
|
|
729
|
+
let t = e.seriesValues.flat().filter((e) => e.dataset.missing === void 0), s = Se(e.plot, t, (e) => ({
|
|
730
|
+
size: J(e).height * a,
|
|
680
731
|
room: w.size + w.gap * .5
|
|
681
732
|
}), "--_fit");
|
|
682
733
|
e.rows.forEach((t, i) => {
|
|
@@ -686,59 +737,61 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
686
737
|
d.dataset.place = "none";
|
|
687
738
|
return;
|
|
688
739
|
}
|
|
689
|
-
let f =
|
|
740
|
+
let f = W(u.value), p = u.value < 0, m = S(i) + w.offset(l), h = Math.max(Math.abs(f - U), 1);
|
|
690
741
|
u.value !== 0 && o.appendChild(F("rect", {
|
|
691
742
|
class: I(r, t),
|
|
692
743
|
"data-kind": "bar",
|
|
693
744
|
"data-row": i + 1,
|
|
694
745
|
"data-grow": p ? "left" : "right",
|
|
695
|
-
x: p ?
|
|
746
|
+
x: p ? U - h : U,
|
|
696
747
|
y: m,
|
|
697
748
|
width: h,
|
|
698
749
|
height: w.size,
|
|
699
|
-
...
|
|
750
|
+
...Ve(e, p ? "left" : "right"),
|
|
751
|
+
...Ie(e, t, l)
|
|
700
752
|
}));
|
|
701
|
-
let g = V && B(d, Math.abs(f -
|
|
702
|
-
d.dataset.place = g ? "inside" : p ? "before" : "after", d.toggleAttribute("data-left-out", !s), g &&
|
|
753
|
+
let g = V && B(d, Math.abs(f - U)), _ = Math.max(Math.min(D, Math.abs(f - U) - k(d) - 6 * a), 6 * a), v = p ? 1 : -1;
|
|
754
|
+
d.dataset.place = g ? "inside" : p ? "before" : "after", d.toggleAttribute("data-left-out", !s), g && Be(d, e, l), R(d, g ? e.insideAlign === "center" ? (U + f) / 2 : e.insideAlign === "start" ? U - v * (_ + k(d) / 2) : f + v * (_ + k(d) / 2) : p ? f - D : f + D, m + w.size / 2, O, n);
|
|
703
755
|
});
|
|
704
756
|
let l = c[i];
|
|
705
757
|
l && R(l, p - 8 * a, S(i), O, n);
|
|
706
758
|
}), o.appendChild(F("line", {
|
|
707
759
|
class: i,
|
|
708
|
-
x1:
|
|
709
|
-
x2:
|
|
760
|
+
x1: U,
|
|
761
|
+
x2: U,
|
|
710
762
|
y1: 0,
|
|
711
763
|
y2: n
|
|
712
764
|
}));
|
|
713
765
|
return;
|
|
714
766
|
}
|
|
715
|
-
let
|
|
767
|
+
let ee = t.map((e, t) => B(s[t], Math.abs(W(e.value) - U)));
|
|
716
768
|
t.forEach((t, i) => {
|
|
717
|
-
let l =
|
|
769
|
+
let l = W(t.value), u = S(i), d = t.value < 0, f = Math.abs(l - U), m = Math.max(f, 1);
|
|
718
770
|
t.value !== 0 && o.appendChild(F("rect", {
|
|
719
771
|
class: I(r, t),
|
|
720
772
|
"data-kind": t.kind,
|
|
721
773
|
"data-row": i + 1,
|
|
722
774
|
"data-grow": d ? "left" : "right",
|
|
723
|
-
x: d ?
|
|
775
|
+
x: d ? U - m : U,
|
|
724
776
|
y: u - C / 2,
|
|
725
777
|
width: m,
|
|
726
778
|
height: C,
|
|
779
|
+
...Ve(e, d ? "left" : "right"),
|
|
727
780
|
style: M("--i", t.slot)
|
|
728
781
|
}));
|
|
729
782
|
let h = s[i], g = Math.max(Math.min(D, f - k(h) - 6 * a), 6 * a), _ = d ? 1 : -1;
|
|
730
|
-
h.dataset.place =
|
|
783
|
+
h.dataset.place = ee[i] ? "inside" : d ? "before" : "after", h.dataset.kind = t.kind, R(h, ee[i] ? e.insideAlign === "center" ? (U + l) / 2 : e.insideAlign === "start" ? U - _ * (g + k(h) / 2) : l + _ * (g + k(h) / 2) : l - _ * D, u, O, n);
|
|
731
784
|
let v = c[i];
|
|
732
785
|
v && R(v, p - 8 * a, u, O, n);
|
|
733
786
|
}), o.appendChild(F("line", {
|
|
734
787
|
class: i,
|
|
735
|
-
x1:
|
|
736
|
-
x2:
|
|
788
|
+
x1: U,
|
|
789
|
+
x2: U,
|
|
737
790
|
y1: 0,
|
|
738
791
|
y2: n
|
|
739
792
|
}));
|
|
740
793
|
}
|
|
741
|
-
},
|
|
794
|
+
}, Ge = {
|
|
742
795
|
segments: (e) => e.map((e) => ({
|
|
743
796
|
...e,
|
|
744
797
|
from: 0,
|
|
@@ -758,18 +811,19 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
758
811
|
if (e.stacked) {
|
|
759
812
|
let t = e.length("--tablechart-stack-gap", "1px") ?? c;
|
|
760
813
|
e.rows.forEach((r, i) => {
|
|
761
|
-
let l =
|
|
814
|
+
let l = Re(r, e.series.length), u = Ue(e, r, i, {}, l.bottom < 0 ? `center ${p - a(l.top)}px` : ""), d = n(i) - o / 2, f = Le(r, e.series.length);
|
|
762
815
|
f.forEach(({ from: r, to: l, cell: p }, m) => {
|
|
763
816
|
let h = e.seriesValues[m][i];
|
|
764
817
|
if (h.dataset.place = "none", p.missing || l === r) return;
|
|
765
|
-
let g = Math.min(a(l), a(r)), _ = Math.max(a(l), a(r)), v =
|
|
818
|
+
let g = Math.min(a(l), a(r)), _ = Math.max(a(l), a(r)), v = He(f, m) ? Math.min(t, (_ - g) / 2) : 0, [y, b] = a(l) < a(r) ? [g + v, _] : [g, _ - v];
|
|
766
819
|
u(m, {
|
|
767
820
|
x: d,
|
|
768
821
|
y,
|
|
769
822
|
width: o,
|
|
770
823
|
height: Math.max(b - y, 1),
|
|
771
|
-
...l < r && { "data-grow": "down" }
|
|
772
|
-
|
|
824
|
+
...l < r && { "data-grow": "down" },
|
|
825
|
+
...!He(f, m) && Ve(e, l < r ? "bottom" : "top")
|
|
826
|
+
}), h.dataset.place = "inside", h.toggleAttribute("data-left-out", !be(h, _ - g, c) || J(h).width * c > o - 4 * c), Be(h, e, m), R(h, n(i), (g + _) / 2, O, s);
|
|
773
827
|
});
|
|
774
828
|
let m = e.totals[i];
|
|
775
829
|
if (m) {
|
|
@@ -786,10 +840,10 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
786
840
|
return;
|
|
787
841
|
}
|
|
788
842
|
if (e.own.length > 1) {
|
|
789
|
-
let t =
|
|
790
|
-
size:
|
|
843
|
+
let t = Fe(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 = Se(e.plot, o, (e) => ({
|
|
844
|
+
size: J(e).width * c,
|
|
791
845
|
room: t.size + t.gap * .5
|
|
792
|
-
}), "--_fit"), m = d === "inside" && !
|
|
846
|
+
}), "--_fit"), m = d === "inside" && !ye(o, t.size, c), h = o[0] ? J(o[0]).height * c * .56 : 0, g = Math.min(...o.map((e) => (t.size - J(e).width * c) / 2));
|
|
793
847
|
e.rows.forEach((i, o) => {
|
|
794
848
|
e.own.forEach((d, _) => {
|
|
795
849
|
let v = i.cells[d] ?? i.cells[0], y = e.seriesValues[d][o], b = n(o) + t.offset(_);
|
|
@@ -807,10 +861,11 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
807
861
|
y: S ? p : p - C,
|
|
808
862
|
width: t.size,
|
|
809
863
|
height: C,
|
|
810
|
-
...
|
|
864
|
+
...Ve(e, S ? "bottom" : "top"),
|
|
865
|
+
...Ie(e, i, d)
|
|
811
866
|
}));
|
|
812
|
-
let w = m &&
|
|
813
|
-
y.dataset.place = w ? "inside" : S ? "below" : "outside", y.toggleAttribute("data-left-out", !u), w &&
|
|
867
|
+
let w = m && be(y, Math.abs(p - x), c), T = S ? -1 : 1, E = Math.min(g, (Math.abs(p - x) - h) / 2), D = f === "center" ? (x + p) / 2 : f === "start" ? p - T * (E + h / 2) : x + T * (E + h / 2);
|
|
868
|
+
y.dataset.place = w ? "inside" : S ? "below" : "outside", y.toggleAttribute("data-left-out", !u), w && Be(y, e, d), R(y, b + t.size / 2, w ? D : S ? x + 4 * c : x - 4 * c, O, s);
|
|
814
869
|
});
|
|
815
870
|
}), l.appendChild(F("line", {
|
|
816
871
|
class: i,
|
|
@@ -821,8 +876,8 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
821
876
|
}));
|
|
822
877
|
return;
|
|
823
878
|
}
|
|
824
|
-
let m = e.own[0], h = e.own.length < e.series.length, g =
|
|
825
|
-
for (let [e, t] of u.entries()) _[e] && (y = Math.min(y, (o -
|
|
879
|
+
let m = e.own[0], h = e.own.length < e.series.length, g = ye(u, o, c), _ = t.map((e, t) => d === "inside" && !g && !e.missing && be(u[t], Math.abs(p - a(e.value)), c)), v = u[0] ? J(u[0]).height * c * .56 : 0, y = Infinity;
|
|
880
|
+
for (let [e, t] of u.entries()) _[e] && (y = Math.min(y, (o - J(t).width * c) / 2));
|
|
826
881
|
t.forEach((t, i) => {
|
|
827
882
|
let d = a(t.value), g = t.value < 0;
|
|
828
883
|
if (t.missing) {
|
|
@@ -839,11 +894,12 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
839
894
|
y: g ? p : p - b,
|
|
840
895
|
width: o,
|
|
841
896
|
height: b,
|
|
897
|
+
...Ve(e, g ? "bottom" : "top"),
|
|
842
898
|
style: M("--i", t.slot),
|
|
843
|
-
...h &&
|
|
899
|
+
...h && Ie(e, t, m)
|
|
844
900
|
}));
|
|
845
901
|
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;
|
|
846
|
-
R(u[i], n(i), _[i] ? C : w, O, s), u[i].dataset.place = _[i] ? "inside" : g ? "below" : "outside", h && _[i] &&
|
|
902
|
+
R(u[i], n(i), _[i] ? C : w, O, s), u[i].dataset.place = _[i] ? "inside" : g ? "below" : "outside", h && _[i] && Be(u[i], e, m);
|
|
847
903
|
}), l.appendChild(F("line", {
|
|
848
904
|
class: i,
|
|
849
905
|
x1: 0,
|
|
@@ -852,7 +908,10 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
852
908
|
y2: p
|
|
853
909
|
}));
|
|
854
910
|
}
|
|
855
|
-
},
|
|
911
|
+
}, Ke = (e, t, n, r, i, a, o, s) => {
|
|
912
|
+
let c = (r, a) => [e + r * Math.cos(n) - i * a * Math.sin(n), t + r * Math.sin(n) + i * a * Math.cos(n)], l = s ? r - o : r + o, u = Math.sqrt(Math.max(l ** 2 - (a + o) ** 2, 0)), d = r / l, f = s ? r + 8 : r - 3, p = f / l, m = Math.max(a - 1, 0), [h, g] = c(u * d, (a + o) * d), [_, v] = c(u, a), [y, b] = c(u, a + o), x = +((h - y) * (v - b) - (g - b) * (_ - y) > 0), S = (e) => `${P(e[0])},${P(e[1])}`;
|
|
913
|
+
return `M${S([h, g])}A${P(o)},${P(o)} 0 0 ${x} ${S([_, v])}L${S(c(u, m))}L${S(c(f, m))}L${S(c(u * p, (a + o) * p))}Z`;
|
|
914
|
+
}, Y = 0, qe = (e) => e.filter((e) => !e.isTotal), Je = {
|
|
856
915
|
aspect: .66,
|
|
857
916
|
centre: !0,
|
|
858
917
|
headroom: () => 0,
|
|
@@ -863,43 +922,43 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
863
922
|
kind: "bar"
|
|
864
923
|
})),
|
|
865
924
|
draw({ rows: e, height: t, unit: n, labelHeight: r, svg: i, values: a, config: o, centre: s }) {
|
|
866
|
-
let c = O / 2, u = t / 2, d =
|
|
925
|
+
let c = O / 2, u = t / 2, d = qe(e).reduce((e, t) => e + Math.abs(t.value), 0);
|
|
867
926
|
if (!d) return;
|
|
868
|
-
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 =
|
|
927
|
+
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 = [], y = 0, b = 0, x = 0;
|
|
869
928
|
if (e.forEach((e, o) => {
|
|
870
929
|
let s = a[o];
|
|
871
930
|
if (e.isTotal) {
|
|
872
931
|
s.dataset.place = "none";
|
|
873
932
|
return;
|
|
874
933
|
}
|
|
875
|
-
let f = Math.abs(e.value) / d,
|
|
876
|
-
_.push(w), i.appendChild(F("circle", {
|
|
934
|
+
let f = Math.abs(e.value) / d, S = j(x, f), C = `--share:${f.toFixed(4)}; --start:${S.start.toFixed(4)}; --span:${S.span.toFixed(4)};`, w = f * g, T = y / g * 2 * Math.PI - Math.PI / 2;
|
|
935
|
+
_.push(T), v.push(w / g * 2 * Math.PI), i.appendChild(F("circle", {
|
|
877
936
|
class: I(l, e),
|
|
878
|
-
"data-slice":
|
|
937
|
+
"data-slice": b + 1,
|
|
879
938
|
"data-row": o + 1,
|
|
880
939
|
cx: c,
|
|
881
940
|
cy: u,
|
|
882
941
|
r: h,
|
|
883
942
|
"stroke-width": m,
|
|
884
943
|
transform: `rotate(-90 ${c} ${u})`,
|
|
885
|
-
"stroke-dasharray": `${
|
|
886
|
-
"stroke-dashoffset": (-
|
|
887
|
-
style: `--n:${
|
|
944
|
+
"stroke-dasharray": `${w.toFixed(1)} ${(g - w).toFixed(1)}`,
|
|
945
|
+
"stroke-dashoffset": (-y).toFixed(1),
|
|
946
|
+
style: `--n:${b}; --palette:var(--tablechart-color-${b + 1}); --arc:${w.toFixed(1)}; --circ:${g.toFixed(1)}; ${C} --ease:${S.easing}; ${M("--i", e.slot)}`
|
|
888
947
|
}));
|
|
889
|
-
let
|
|
948
|
+
let E = T + w / g * Math.PI, D = Math.cos(E), k = Math.sin(E);
|
|
890
949
|
i.appendChild(F("line", {
|
|
891
950
|
class: "tablechart-leader",
|
|
892
|
-
x1: c +
|
|
893
|
-
y1: u +
|
|
894
|
-
x2: c +
|
|
895
|
-
y2: u +
|
|
951
|
+
x1: c + D * (p + 2 * n),
|
|
952
|
+
y1: u + k * (p + 2 * n),
|
|
953
|
+
x2: c + D * (p + 7 * n),
|
|
954
|
+
y2: u + k * (p + 7 * n),
|
|
896
955
|
"data-row": o + 1,
|
|
897
|
-
style: `${
|
|
898
|
-
})), s.style.setProperty("--start",
|
|
899
|
-
let
|
|
900
|
-
R(s, c +
|
|
956
|
+
style: `${C} ${M("--i", e.slot)}`
|
|
957
|
+
})), s.style.setProperty("--start", S.start.toFixed(4)), s.style.setProperty("--span", S.span.toFixed(4));
|
|
958
|
+
let A = p + 9 * n, N = J(s).width * n / 2;
|
|
959
|
+
R(s, c + D * (A + Math.abs(D) * N), u + k * (A + Math.abs(k) * r * .7), O, t), s.dataset.place = "around", y += w, x += f, b += 1;
|
|
901
960
|
}), _.length > 1) {
|
|
902
|
-
let e = h - m / 2 - 1, n = h + m / 2 + 1, r = `tablechart-slices-${++
|
|
961
|
+
let e = h - m / 2 - 1, n = h + m / 2 + 1, r = `tablechart-slices-${++Y}`, a = F("mask", {
|
|
903
962
|
id: r,
|
|
904
963
|
maskUnits: "userSpaceOnUse"
|
|
905
964
|
});
|
|
@@ -917,29 +976,40 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
917
976
|
x2: c + Math.cos(t) * n,
|
|
918
977
|
y2: u + Math.sin(t) * n
|
|
919
978
|
}));
|
|
920
|
-
let o =
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
979
|
+
let o = getComputedStyle(i), s = Number.parseFloat(o.getPropertyValue("--tablechart-slice-radius")) || 0;
|
|
980
|
+
if (s > 0) {
|
|
981
|
+
let e = Number.parseFloat(o.getPropertyValue("--tablechart-slice-gap").trim() || "4"), t = [h - m / 2, h + m / 2], n = (n) => Math.min(s, m / 2, Math.max((v[n] * t[0] - e) / 2, 0));
|
|
982
|
+
_.forEach((r, i) => {
|
|
983
|
+
let o = n((i - 1 + _.length) % _.length);
|
|
984
|
+
for (let [s, l] of [[1, n(i)], [-1, o]]) if (l > 0) for (let n of t) a.appendChild(F("path", {
|
|
985
|
+
d: Ke(c, u, r, n, s, e / 2, l, n === t[1]),
|
|
986
|
+
fill: "black"
|
|
987
|
+
}));
|
|
988
|
+
});
|
|
989
|
+
}
|
|
990
|
+
let d = F("g", { mask: `url(#${r})` });
|
|
991
|
+
for (let e of Array.from(i.querySelectorAll(`.${l}`))) d.appendChild(e);
|
|
992
|
+
let f = F("defs");
|
|
993
|
+
f.appendChild(a), i.prepend(f, d);
|
|
924
994
|
}
|
|
925
995
|
s && R(s, c, u, O, t);
|
|
926
996
|
}
|
|
927
|
-
},
|
|
997
|
+
}, X = [
|
|
928
998
|
"circle",
|
|
929
999
|
"square",
|
|
930
1000
|
"diamond"
|
|
931
|
-
],
|
|
1001
|
+
], Ye = (e, t) => {
|
|
932
1002
|
let n = e[t]?.marker?.toLowerCase().split(/\s+/) ?? [];
|
|
933
1003
|
if (n.includes("none")) return {
|
|
934
1004
|
shape: "none",
|
|
935
1005
|
open: !1
|
|
936
1006
|
};
|
|
937
|
-
let r =
|
|
1007
|
+
let r = X.find((e) => n.includes(e));
|
|
938
1008
|
return {
|
|
939
|
-
shape: r ??
|
|
1009
|
+
shape: r ?? X[Math.floor(t / 2) % X.length],
|
|
940
1010
|
open: n.includes("open") || !n.includes("filled") && !r && t % 2 == 1
|
|
941
1011
|
};
|
|
942
|
-
},
|
|
1012
|
+
}, Xe = (e, t, n, r, i = {}) => {
|
|
943
1013
|
if (e === "square") {
|
|
944
1014
|
let e = r * .88;
|
|
945
1015
|
return F("rect", {
|
|
@@ -970,8 +1040,8 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
970
1040
|
r,
|
|
971
1041
|
...i
|
|
972
1042
|
});
|
|
973
|
-
},
|
|
974
|
-
function
|
|
1043
|
+
}, Z = (e) => Number(e.toFixed(2));
|
|
1044
|
+
function Ze(e, t) {
|
|
975
1045
|
let n = e.length;
|
|
976
1046
|
if (n < 2) return e.map(() => 0);
|
|
977
1047
|
let r = (n) => (t[n + 1] - t[n]) / (e[n + 1] - e[n] || 1), i = Array(n).fill(0);
|
|
@@ -988,24 +1058,24 @@ function Z(e, t) {
|
|
|
988
1058
|
};
|
|
989
1059
|
return i[0] = a(0, 1, i[1]), i[n - 1] = a(n - 2, n - 1, i[n - 2]), i;
|
|
990
1060
|
}
|
|
991
|
-
function
|
|
1061
|
+
function Qe(e, t, n, r) {
|
|
992
1062
|
let i = (t[0] - e[0]) / 3;
|
|
993
1063
|
return [[e[0] + i, e[1] + n * i], [t[0] - i, t[1] - r * i]];
|
|
994
1064
|
}
|
|
995
|
-
function
|
|
996
|
-
let [i, a] =
|
|
1065
|
+
function $e(e, t, n, r) {
|
|
1066
|
+
let [i, a] = Qe(e, t, n, r), o = ([e, t]) => `${Z(e)},${Z(t)}`;
|
|
997
1067
|
return `C${o(i)} ${o(a)} ${o(t)}`;
|
|
998
1068
|
}
|
|
999
|
-
function
|
|
1069
|
+
function et(e, t, n) {
|
|
1000
1070
|
let r = Array(e).fill(0), i = [], a = () => {
|
|
1001
|
-
|
|
1071
|
+
Ze(i.map((e) => n(e)[0]), i.map((e) => n(e)[1])).forEach((e, t) => {
|
|
1002
1072
|
r[i[t]] = e;
|
|
1003
1073
|
}), i = [];
|
|
1004
1074
|
};
|
|
1005
1075
|
for (let n = 0; n < e; n++) t(n) ? a() : i.push(n);
|
|
1006
1076
|
return a(), r;
|
|
1007
1077
|
}
|
|
1008
|
-
var
|
|
1078
|
+
var tt = (e) => {
|
|
1009
1079
|
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;
|
|
1010
1080
|
return {
|
|
1011
1081
|
at: o,
|
|
@@ -1013,7 +1083,7 @@ var Xe = (e) => {
|
|
|
1013
1083
|
t: c ? a / c : a ? Infinity : 0,
|
|
1014
1084
|
n: t
|
|
1015
1085
|
};
|
|
1016
|
-
},
|
|
1086
|
+
}, nt = [
|
|
1017
1087
|
12.71,
|
|
1018
1088
|
4.3,
|
|
1019
1089
|
3.18,
|
|
@@ -1029,29 +1099,29 @@ var Xe = (e) => {
|
|
|
1029
1099
|
2.16,
|
|
1030
1100
|
2.14,
|
|
1031
1101
|
2.13
|
|
1032
|
-
],
|
|
1102
|
+
], rt = (e) => nt[e - 1] ?? (e < 30 ? 2.1 : 2), it = (e) => {
|
|
1033
1103
|
let t = e.map((e) => e.y), n = Math.min(...t), r = Math.max(...t), i = n < 0 && r > 0, a = r - n || 1;
|
|
1034
1104
|
return {
|
|
1035
1105
|
mean: t.reduce((e, t) => e + t, 0) / t.length,
|
|
1036
1106
|
share: (e, t) => e / (i ? a : Math.abs(t) || a) * 100
|
|
1037
1107
|
};
|
|
1038
|
-
},
|
|
1108
|
+
}, at = (e, t = 5, n = 25) => {
|
|
1039
1109
|
if (e.length < 4) return null;
|
|
1040
|
-
let { mean: r, share: i } =
|
|
1041
|
-
c.length && o(c) && (s =
|
|
1042
|
-
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) >=
|
|
1110
|
+
let { mean: r, share: i } = it(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 = tt(e), c = a(s.at);
|
|
1111
|
+
c.length && o(c) && (s = tt(e.filter((e) => !c.includes(e))), c = a(s.at)), o(c) || (s = tt(e), c = []);
|
|
1112
|
+
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) >= rt(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";
|
|
1043
1113
|
return {
|
|
1044
1114
|
course: g,
|
|
1045
1115
|
line: l,
|
|
1046
1116
|
outside: g === "unclear" ? [] : c
|
|
1047
1117
|
};
|
|
1048
|
-
},
|
|
1118
|
+
}, ot = (e) => e.map((e) => ({
|
|
1049
1119
|
...e,
|
|
1050
1120
|
from: 0,
|
|
1051
1121
|
to: e.value,
|
|
1052
1122
|
kind: "bar"
|
|
1053
|
-
})),
|
|
1054
|
-
segments:
|
|
1123
|
+
})), st = (e) => ({
|
|
1124
|
+
segments: ot,
|
|
1055
1125
|
series: !0,
|
|
1056
1126
|
stackable: !0,
|
|
1057
1127
|
running: !0,
|
|
@@ -1060,8 +1130,8 @@ var Xe = (e) => {
|
|
|
1060
1130
|
footroom: ({ labelHeight: t, unit: n, series: r, focused: i, stacked: a }) => !e && !a && r === 2 && !i ? t + 7 * n : 0,
|
|
1061
1131
|
draw(t) {
|
|
1062
1132
|
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;
|
|
1063
|
-
_.style.setProperty("--_base", `${
|
|
1064
|
-
let D = (e) => `--rise:${
|
|
1133
|
+
_.style.setProperty("--_base", `${Z(T)}px`);
|
|
1134
|
+
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 ? Le(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) => {
|
|
1065
1135
|
if (!S) return {
|
|
1066
1136
|
attrs: {},
|
|
1067
1137
|
ink: ""
|
|
@@ -1076,67 +1146,70 @@ var Xe = (e) => {
|
|
|
1076
1146
|
};
|
|
1077
1147
|
}), L = y ? w : Math.min(w, 6);
|
|
1078
1148
|
t.plot.style.setProperty("--count", String(L + 1));
|
|
1079
|
-
let z = w > 0 ? L / (b ? n.length : w) : 1, B = (e) => e * z, V = (e) => `--i:${
|
|
1149
|
+
let z = w > 0 ? L / (b ? n.length : w) : 1, B = (e) => e * z, V = (e) => `--i:${Z(B(e))}`, H = (e) => {
|
|
1080
1150
|
let t = [], r = -1;
|
|
1081
1151
|
return n.forEach((n, i) => {
|
|
1082
1152
|
A(e, i) || (r < 0 && (r = i), (i === w || A(e, i + 1)) && ((b || i > r) && t.push([r, i]), r = -1));
|
|
1083
1153
|
}), t;
|
|
1084
|
-
},
|
|
1154
|
+
}, U = (e, t) => `--i:${Z(B(e) + 1)}; --d:${Z(B(b ? t + 1 : t) - B(e))}`, ee = (e, t) => ({
|
|
1085
1155
|
"data-from": e + 1,
|
|
1086
1156
|
"data-to": t + 1,
|
|
1087
1157
|
...b && { "data-flat": "" }
|
|
1088
|
-
}),
|
|
1158
|
+
}), te = x ? r.map((e, t) => et(n.length, (e) => A(t, e), (e) => P(t, e))) : [], re = x && e ? r.map((e, t) => et(n.length, (e) => A(t, e), (e) => [c(e), l(N(t, e))])) : [], G = (e, t, n) => {
|
|
1089
1159
|
let r = [];
|
|
1090
1160
|
return e.forEach(([i, a], o) => {
|
|
1091
|
-
b ? (r.push(`H${
|
|
1161
|
+
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 ? $e(e[o - 1], [i, a], t[o - 1], t[o]) : `L${Z(i)},${Z(a)}`);
|
|
1092
1162
|
}), r;
|
|
1093
|
-
},
|
|
1163
|
+
}, K = (e, t, r, i) => n.slice(t, r + 1).map((n, r) => [c(t + r), l(i(e, t + r))]), q = (e, t, n, r) => x ? e[t].slice(n, r + 1) : null, ie = (e) => c(e) - (b ? E / 2 : 0), ae = (e) => c(e) + (b ? E / 2 : 0), [oe, se] = (v ? [] : a.flatMap((e) => n.flatMap((t, n) => A(e, n) ? [] : [l(M(e, n))]))).reduce(([e, t], n) => [Math.min(e, n), Math.max(t, n)], [T, T]), ce = (e) => `fill:url(#${W(_, oe, T, se, {
|
|
1164
|
+
style: I[e].ink,
|
|
1165
|
+
...C && !r[e].focus && { "data-muted": "" }
|
|
1166
|
+
})}); `, le = (e) => {
|
|
1094
1167
|
let t = F("g", {
|
|
1095
1168
|
class: d,
|
|
1096
1169
|
...I[e].attrs,
|
|
1097
1170
|
...v && { "data-stacked": "" },
|
|
1098
|
-
style: I[e].ink
|
|
1099
|
-
}), n =
|
|
1171
|
+
style: `${I[e].ink}${v ? "" : ce(e)}`
|
|
1172
|
+
}), n = H(e), r = F("g", {
|
|
1100
1173
|
class: "tablechart-area-fill",
|
|
1101
|
-
style: `--rows:${
|
|
1174
|
+
style: `--rows:${Z(L + 1)}; ${n.length ? U(...n[0]) : ""}`
|
|
1102
1175
|
});
|
|
1103
1176
|
t.appendChild(r);
|
|
1104
1177
|
for (let [t, i] of n) {
|
|
1105
|
-
let n =
|
|
1106
|
-
`M${
|
|
1107
|
-
`L${
|
|
1108
|
-
...
|
|
1109
|
-
`L${
|
|
1110
|
-
...
|
|
1178
|
+
let n = K(e, t, i, M), a = K(e, t, i, N), o = q(re, e, t, i)?.reverse() ?? null, s = [
|
|
1179
|
+
`M${Z(ie(t))},${Z(a[0][1])}`,
|
|
1180
|
+
`L${Z(ie(t))},${Z(n[0][1])}`,
|
|
1181
|
+
...G(n, q(te, e, t, i), 1),
|
|
1182
|
+
`L${Z(ae(i))},${Z(a[a.length - 1][1])}`,
|
|
1183
|
+
...G(a.reverse(), o, -1),
|
|
1111
1184
|
"Z"
|
|
1112
1185
|
].join(" ");
|
|
1113
1186
|
r.appendChild(F("path", {
|
|
1114
1187
|
d: s,
|
|
1115
|
-
...
|
|
1116
|
-
style:
|
|
1188
|
+
...ee(t, i),
|
|
1189
|
+
style: U(t, i)
|
|
1117
1190
|
}));
|
|
1118
1191
|
}
|
|
1119
1192
|
_.appendChild(t);
|
|
1120
|
-
},
|
|
1193
|
+
}, ue = (e) => {
|
|
1121
1194
|
let t = r[e];
|
|
1122
|
-
for (let [n, r] of
|
|
1123
|
-
let i =
|
|
1195
|
+
for (let [n, r] of H(e)) {
|
|
1196
|
+
let i = K(e, n, r, M), a = [`M${Z(ie(n))},${Z(i[0][1])}`, ...G(i, q(te, e, n, r), 1)].join(" ");
|
|
1124
1197
|
_.appendChild(F("path", {
|
|
1125
1198
|
class: u,
|
|
1126
1199
|
...I[e].attrs,
|
|
1127
1200
|
d: a,
|
|
1128
1201
|
...t.line && { "data-line": t.line },
|
|
1129
|
-
...
|
|
1130
|
-
style: `${I[e].ink}${
|
|
1202
|
+
...ee(n, r),
|
|
1203
|
+
style: `${I[e].ink}${U(n, r)}`
|
|
1131
1204
|
}));
|
|
1132
1205
|
}
|
|
1133
|
-
},
|
|
1134
|
-
let i = a.map((e) => r[e]), o = r.map((e, t) => y ?
|
|
1206
|
+
}, de = (e) => {
|
|
1207
|
+
let i = a.map((e) => r[e]), o = r.map((e, t) => y ? Ye(i, a.indexOf(t)) : S ? Ye(r, t) : {
|
|
1135
1208
|
shape: "circle",
|
|
1136
1209
|
open: !1
|
|
1137
1210
|
}), s = (e, t, n) => {
|
|
1138
1211
|
let [r, i] = P(e, t);
|
|
1139
|
-
return
|
|
1212
|
+
return Xe(o[e].shape, r, i, 3 * p, {
|
|
1140
1213
|
...n,
|
|
1141
1214
|
style: `${n.style ?? ""}${D(i)}${V(t)}`
|
|
1142
1215
|
});
|
|
@@ -1145,7 +1218,7 @@ var Xe = (e) => {
|
|
|
1145
1218
|
"data-row": t + 1,
|
|
1146
1219
|
...S && { "data-series": e + 1 }
|
|
1147
1220
|
})) : []);
|
|
1148
|
-
_.closest("[data-animate]")?.getAttribute("data-animate") === "grow" ?
|
|
1221
|
+
_.closest("[data-animate]")?.getAttribute("data-animate") === "grow" ? ne(_, l, O, f) : t.lineHoles.push(...l), a.forEach((e) => {
|
|
1149
1222
|
for (let t of c(e)) _.appendChild(s(e, t, {
|
|
1150
1223
|
class: m,
|
|
1151
1224
|
...I[e].attrs,
|
|
@@ -1156,11 +1229,11 @@ var Xe = (e) => {
|
|
|
1156
1229
|
}));
|
|
1157
1230
|
});
|
|
1158
1231
|
};
|
|
1159
|
-
e && a.forEach((e) =>
|
|
1160
|
-
let
|
|
1232
|
+
e && a.forEach((e) => le(e)), a.forEach((e) => ue(e));
|
|
1233
|
+
let fe = y ? r.flatMap((e, t) => a.includes(t) ? [] : o[t].flatMap((e) => {
|
|
1161
1234
|
let t = e.dataset.place;
|
|
1162
1235
|
if (!t || t === "none" || e.hasAttribute("data-left-out")) return [];
|
|
1163
|
-
let [n, r, i, a] =
|
|
1236
|
+
let [n, r, i, a] = Te(e, p, O, f);
|
|
1164
1237
|
return [{
|
|
1165
1238
|
label: e,
|
|
1166
1239
|
box: [
|
|
@@ -1170,7 +1243,7 @@ var Xe = (e) => {
|
|
|
1170
1243
|
a + 6 * p
|
|
1171
1244
|
]
|
|
1172
1245
|
}];
|
|
1173
|
-
})) : [],
|
|
1246
|
+
})) : [], me = b ? [] : a.flatMap((e) => n.flatMap((t, n) => {
|
|
1174
1247
|
if (A(e, n)) return [];
|
|
1175
1248
|
let [r, i] = P(e, n);
|
|
1176
1249
|
return [[
|
|
@@ -1179,22 +1252,22 @@ var Xe = (e) => {
|
|
|
1179
1252
|
8 * p,
|
|
1180
1253
|
8 * p
|
|
1181
1254
|
]];
|
|
1182
|
-
})),
|
|
1183
|
-
let n =
|
|
1255
|
+
})), ge = fe.filter(({ label: e, box: t }) => {
|
|
1256
|
+
let n = me.some((e) => pe(e, t));
|
|
1184
1257
|
return n && e.setAttribute("data-left-out", ""), !n;
|
|
1185
|
-
}),
|
|
1258
|
+
}), _e = (e, t) => {
|
|
1186
1259
|
let n = t;
|
|
1187
1260
|
for (; n < w && !A(e, n + 1) && k(e, n + 1)?.value === k(e, t)?.value;) n++;
|
|
1188
1261
|
return n;
|
|
1189
|
-
},
|
|
1190
|
-
let [r, i] = P(e, t), a =
|
|
1262
|
+
}, ve = (e) => e === "above" ? "below" : "above", ye = (e, t, n) => {
|
|
1263
|
+
let [r, i] = P(e, t), a = J(o[e][t]).width * p, s = [
|
|
1191
1264
|
r - a / 2,
|
|
1192
1265
|
n === "above" ? i - 7 * p - g : i + 7 * p,
|
|
1193
1266
|
a,
|
|
1194
1267
|
g
|
|
1195
1268
|
];
|
|
1196
|
-
return s[1] + g > f ? Infinity : [t - 1, t + 1].filter((t) => t >= 0 && t <= w && !A(e, t)).flatMap((n) =>
|
|
1197
|
-
},
|
|
1269
|
+
return s[1] + g > f ? Infinity : [t - 1, t + 1].filter((t) => t >= 0 && t <= w && !A(e, t)).flatMap((n) => be(e, t, n, 0)).filter((e) => pe(e, s)).length;
|
|
1270
|
+
}, be = (e, t, n, r) => {
|
|
1198
1271
|
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)));
|
|
1199
1272
|
return Array.from({ length: c + 1 }, (e, t) => {
|
|
1200
1273
|
let n = t / c;
|
|
@@ -1205,43 +1278,43 @@ var Xe = (e) => {
|
|
|
1205
1278
|
2 * r
|
|
1206
1279
|
];
|
|
1207
1280
|
});
|
|
1208
|
-
},
|
|
1281
|
+
}, xe = (t, n) => {
|
|
1209
1282
|
let i = k(t, n);
|
|
1210
1283
|
if (!i || i.missing || b && n > 0 && !A(t, n - 1) && k(t, n - 1)?.value === i.value || C && !r[t].focus) return "none";
|
|
1211
1284
|
if (v) return "middle";
|
|
1212
1285
|
let a = i.value < 0 ? "below" : "above";
|
|
1213
|
-
if (!S || C || r.length > 2) return e || b ||
|
|
1286
|
+
if (!S || C || r.length > 2) return e || b || ye(t, n, a) <= ye(t, n, ve(a)) ? a : ve(a);
|
|
1214
1287
|
let o = k(1 - t, n);
|
|
1215
1288
|
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";
|
|
1216
|
-
},
|
|
1289
|
+
}, Se = (e) => {
|
|
1217
1290
|
let t = w;
|
|
1218
1291
|
for (; t > 0 && A(e, t);) t--;
|
|
1219
1292
|
return t;
|
|
1220
|
-
},
|
|
1221
|
-
let e = (s[0] ?
|
|
1293
|
+
}, we = b || v ? 10 * p : Math.max(10 * p, ...a.map((e) => J(o[e][w]).width * p / 2 + 6 * p)), Ee = t.numbersAtEnd ? Math.max(...a.map((e) => J(o[e][Se(e)]).width * p)) + 11 * p : we, De = () => {
|
|
1294
|
+
let e = (s[0] ? J(s[0]).height : 0) * p, n = 2 * p, r = a.flatMap((e) => {
|
|
1222
1295
|
let t = s[e];
|
|
1223
1296
|
if (!t) return [];
|
|
1224
|
-
let [n, r] = P(e,
|
|
1297
|
+
let [n, r] = P(e, Se(e));
|
|
1225
1298
|
return [{
|
|
1226
1299
|
name: t,
|
|
1227
|
-
x: n +
|
|
1300
|
+
x: n + Ee,
|
|
1228
1301
|
y: r
|
|
1229
1302
|
}];
|
|
1230
|
-
}), i = t.numbersAtEnd ?
|
|
1231
|
-
return
|
|
1303
|
+
}), i = t.numbersAtEnd ? Ee - 7 * p : 0;
|
|
1304
|
+
return Ce(r, e).map((t) => [
|
|
1232
1305
|
t.x - n - i,
|
|
1233
1306
|
t.y - e / 2 - n,
|
|
1234
|
-
|
|
1307
|
+
J(t.name).width * p + 2 * n + i,
|
|
1235
1308
|
e + 2 * n
|
|
1236
1309
|
]);
|
|
1237
|
-
},
|
|
1238
|
-
if (
|
|
1310
|
+
}, ke = (y || S && !C && r.length > 2 && !v) && !b, Ae = /* @__PURE__ */ new Map();
|
|
1311
|
+
if (ke) {
|
|
1239
1312
|
let e = n.flatMap((e, t) => a.map((e) => ({
|
|
1240
1313
|
s: e,
|
|
1241
1314
|
i: t,
|
|
1242
1315
|
value: k(e, t)?.value ?? 0
|
|
1243
|
-
}))).filter(({ s: e, i: t }) =>
|
|
1244
|
-
let i =
|
|
1316
|
+
}))).filter(({ s: e, i: t }) => xe(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 = he(e.map(({ s: e, i: n, value: r }) => {
|
|
1317
|
+
let i = J(o[e][n]).width * p, [a, s] = P(e, n);
|
|
1245
1318
|
return t(r).map((e) => [
|
|
1246
1319
|
a - i / 2,
|
|
1247
1320
|
e === "above" ? s - 7 * p - g : s + 7 * p,
|
|
@@ -1259,24 +1332,47 @@ var Xe = (e) => {
|
|
|
1259
1332
|
8 * p
|
|
1260
1333
|
]];
|
|
1261
1334
|
})),
|
|
1262
|
-
...
|
|
1263
|
-
...
|
|
1335
|
+
...De(),
|
|
1336
|
+
...ge.map(({ box: e }) => e)
|
|
1264
1337
|
], [
|
|
1265
1338
|
0,
|
|
1266
1339
|
0,
|
|
1267
1340
|
c(w) + c(0),
|
|
1268
1341
|
f
|
|
1269
1342
|
]);
|
|
1270
|
-
e.forEach(({ s: e, i: n, value: i }, a) =>
|
|
1343
|
+
e.forEach(({ s: e, i: n, value: i }, a) => Ae.set(o[e][n], r[a] === null ? null : t(i)[r[a]]));
|
|
1271
1344
|
}
|
|
1272
|
-
let
|
|
1345
|
+
let je = (e, t) => {
|
|
1346
|
+
if (ke) return Ae.get(o[e][t]) === null;
|
|
1347
|
+
if (!v && !b) return !1;
|
|
1348
|
+
let n = J(o[e][t]).width * p;
|
|
1349
|
+
if (n > (b ? _e(e, t) - t + 1 : 1) * E - 4 * p || v && e > 0 && M(e, t) < N(e, t)) return !0;
|
|
1350
|
+
if (v && !b && t > 0 && t < w) {
|
|
1351
|
+
let r = (l(N(e, t)) + l(M(e, t))) / 2, i = [
|
|
1352
|
+
c(t) - n / 2,
|
|
1353
|
+
r - g / 2,
|
|
1354
|
+
n,
|
|
1355
|
+
g
|
|
1356
|
+
];
|
|
1357
|
+
if (a.some((e) => {
|
|
1358
|
+
let [n, r] = P(e, t);
|
|
1359
|
+
return !A(e, t) && pe([
|
|
1360
|
+
n - 4 * p,
|
|
1361
|
+
r - 4 * p,
|
|
1362
|
+
8 * p,
|
|
1363
|
+
8 * p
|
|
1364
|
+
], i);
|
|
1365
|
+
})) return !0;
|
|
1366
|
+
}
|
|
1367
|
+
return v && Math.abs(l(N(e, t)) - l(M(e, t))) < g * 1.2;
|
|
1368
|
+
};
|
|
1273
1369
|
a.forEach((e) => {
|
|
1274
1370
|
o[e].forEach((t, n) => {
|
|
1275
|
-
t.style.setProperty("--i", String(
|
|
1276
|
-
let r =
|
|
1277
|
-
if (t.dataset.place = r === "above" ? "outside" : r, t.toggleAttribute("data-left-out", r !== "none" &&
|
|
1278
|
-
let i =
|
|
1279
|
-
b ? a = (c(n) + c(
|
|
1371
|
+
t.style.setProperty("--i", String(Z(b ? (B(n) + B(n + 1)) / 2 : B(n))));
|
|
1372
|
+
let r = Ae.get(t) ?? xe(e, n);
|
|
1373
|
+
if (t.dataset.place = r === "above" ? "outside" : r, t.toggleAttribute("data-left-out", r !== "none" && je(e, n)), b && r !== "none" ? t.dataset.rowEnd = String(_e(e, n) + 1) : delete t.dataset.rowEnd, r === "none") return;
|
|
1374
|
+
let i = J(t).width * p / 2 + 4 * p, a = c(n);
|
|
1375
|
+
b ? a = (c(n) + c(_e(e, n))) / 2 : r === "middle" && n === 0 ? a += i : r === "middle" && n === w && (a -= i);
|
|
1280
1376
|
let o = l(M(e, n)), s = {
|
|
1281
1377
|
middle: (l(N(e, n)) - o) / 2,
|
|
1282
1378
|
above: -7 * p,
|
|
@@ -1285,30 +1381,30 @@ var Xe = (e) => {
|
|
|
1285
1381
|
R(t, a, o + s[r], O, f);
|
|
1286
1382
|
});
|
|
1287
1383
|
});
|
|
1288
|
-
let
|
|
1384
|
+
let Me = (e) => {
|
|
1289
1385
|
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;
|
|
1290
|
-
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(...
|
|
1386
|
+
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(...at(i.map((e) => ({
|
|
1291
1387
|
x: e,
|
|
1292
1388
|
y: a(e)
|
|
1293
1389
|
})))?.outside.map((e) => e.x) ?? []));
|
|
1294
1390
|
let c = [];
|
|
1295
1391
|
for (let t of r) {
|
|
1296
1392
|
let n = o[e][t];
|
|
1297
|
-
c.includes(t) || n.dataset.place === "none" || c.every((t) =>
|
|
1393
|
+
c.includes(t) || n.dataset.place === "none" || c.every((t) => Oe([o[e][t], n], p, 1e3, f) === 1) && c.push(t);
|
|
1298
1394
|
}
|
|
1299
1395
|
return new Set(c);
|
|
1300
|
-
},
|
|
1396
|
+
}, Ne = (e) => Oe(o[e].filter((e) => e.dataset.place !== "none" && !e.hasAttribute("data-left-out")), p, O, f) === 1, Pe = /* @__PURE__ */ new Map();
|
|
1301
1397
|
for (let e of a) {
|
|
1302
|
-
let n = t.pick.mode === "all" || t.pick.mode === "auto" &&
|
|
1303
|
-
|
|
1398
|
+
let n = t.pick.mode === "all" || t.pick.mode === "auto" && Ne(e) ? null : Me(e);
|
|
1399
|
+
Pe.set(e, n), n && o[e].forEach((e, t) => {
|
|
1304
1400
|
e.dataset.place !== "none" && !n.has(t) && e.setAttribute("data-left-out", "");
|
|
1305
1401
|
});
|
|
1306
1402
|
}
|
|
1307
|
-
if (!v && !b && a.some((e) =>
|
|
1308
|
-
let e = c(w) + c(0), r = 2 * p, i = (e) => n.flatMap((t, n) => n === w || A(e, n) || A(e, n + 1) ? [] :
|
|
1403
|
+
if (!v && !b && a.some((e) => Pe.get(e))) {
|
|
1404
|
+
let e = c(w) + c(0), r = 2 * p, i = (e) => n.flatMap((t, n) => n === w || A(e, n) || A(e, n + 1) ? [] : be(e, n, n + 1, r)), s = a.flatMap(i), l = De(), u = a.flatMap((e) => [...Pe.get(e) ?? []].map((t) => ({
|
|
1309
1405
|
s: e,
|
|
1310
1406
|
i: t
|
|
1311
|
-
}))), d = ({ s: e, i: n }) => t.numbersAtEnd && n ===
|
|
1407
|
+
}))), d = ({ s: e, i: n }) => t.numbersAtEnd && n === Se(e), m = u.filter((e) => !d(e)), h = ({ s: e, i: t }) => {
|
|
1312
1408
|
let n = k(e, t)?.value ?? 0, r = t > 0 && !A(e, t - 1) ? k(e, t - 1)?.value : void 0, i = t < w && !A(e, t + 1) ? k(e, t + 1)?.value : void 0;
|
|
1313
1409
|
return (r ?? i) !== void 0 && (r === void 0 || n <= r) && (i === void 0 || n <= i) ? [
|
|
1314
1410
|
"below",
|
|
@@ -1326,7 +1422,7 @@ var Xe = (e) => {
|
|
|
1326
1422
|
"before"
|
|
1327
1423
|
];
|
|
1328
1424
|
}, _ = ({ s: t, i: n }, r) => {
|
|
1329
|
-
let i =
|
|
1425
|
+
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);
|
|
1330
1426
|
return r === "outside" ? [
|
|
1331
1427
|
l,
|
|
1332
1428
|
c - 7 * p - a,
|
|
@@ -1371,7 +1467,7 @@ var Xe = (e) => {
|
|
|
1371
1467
|
...x,
|
|
1372
1468
|
...l,
|
|
1373
1469
|
...b
|
|
1374
|
-
].some((t) =>
|
|
1470
|
+
].some((t) => pe(e, t)), o = a.filter((t) => t !== e.s).flatMap(i), c = (n) => !v[t][n].endsWith("far") || !o.some((r) => pe(_(e, v[t][n].split(" ")[0]), r)), u = n.findIndex((e, t) => r(e) && c(t) && !s.some((t) => pe(e, t)));
|
|
1375
1471
|
return u < 0 && (u = n.findIndex((e, t) => r(e) && c(t)), u >= 0 && S.add(t)), u >= 0 && x.push(n[u]), u < 0 ? null : u;
|
|
1376
1472
|
});
|
|
1377
1473
|
m.forEach((e, t) => {
|
|
@@ -1383,45 +1479,45 @@ var Xe = (e) => {
|
|
|
1383
1479
|
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);
|
|
1384
1480
|
});
|
|
1385
1481
|
}
|
|
1386
|
-
b ||
|
|
1387
|
-
let n =
|
|
1482
|
+
b || de((e, t) => {
|
|
1483
|
+
let n = Pe.get(e);
|
|
1388
1484
|
return n ? n.has(t) : E >= 10 * p;
|
|
1389
1485
|
}), t.pointOf = (e) => {
|
|
1390
1486
|
let t = a.filter((t) => !A(t, e)).map((t) => P(t, e));
|
|
1391
1487
|
return t.length ? t.reduce((e, t) => t[1] < e[1] ? t : e) : null;
|
|
1392
1488
|
};
|
|
1393
|
-
let
|
|
1394
|
-
let n =
|
|
1489
|
+
let Fe = (y ? [] : s).map((e, t) => {
|
|
1490
|
+
let n = Se(t), [r, i] = P(t, n);
|
|
1395
1491
|
return {
|
|
1396
1492
|
name: e,
|
|
1397
1493
|
s: t,
|
|
1398
|
-
x: (b ? r + E / 2 : r) +
|
|
1494
|
+
x: (b ? r + E / 2 : r) + Ee,
|
|
1399
1495
|
y: v ? (i + l(N(t, n))) / 2 : i
|
|
1400
1496
|
};
|
|
1401
|
-
}),
|
|
1402
|
-
for (let e of
|
|
1497
|
+
}), Ie = (s[0] ? J(s[0]).height : 0) * p;
|
|
1498
|
+
for (let e of Ce(Fe, Ie)) {
|
|
1403
1499
|
if (R(e.name, e.x, e.y, O, f), !t.numbersAtEnd) continue;
|
|
1404
|
-
let n = o[e.s][
|
|
1500
|
+
let n = o[e.s][Se(e.s)];
|
|
1405
1501
|
n.dataset.place = "before", n.removeAttribute("data-left-out"), n.removeAttribute("data-cut"), R(n, e.x - 4 * p, e.y, O, f);
|
|
1406
1502
|
}
|
|
1407
|
-
let
|
|
1503
|
+
let Re = n.some((e) => e.cells.some((e) => !e.missing && e.value < 0)), ze = !e && !v && r.length === 2 && !C && !Re ? f - 2 * p : T;
|
|
1408
1504
|
y || _.appendChild(F("line", {
|
|
1409
1505
|
class: i,
|
|
1410
1506
|
x1: 0,
|
|
1411
1507
|
x2: c(w) + c(0),
|
|
1412
|
-
y1:
|
|
1413
|
-
y2:
|
|
1508
|
+
y1: ze,
|
|
1509
|
+
y2: ze
|
|
1414
1510
|
}));
|
|
1415
1511
|
}
|
|
1416
|
-
}),
|
|
1512
|
+
}), ct = st(!1), lt = st(!0), ut = /* @__PURE__ */ new Set(), dt = (t, n) => {
|
|
1417
1513
|
if (Math.abs(t - n) <= Math.abs(n) / 100) return;
|
|
1418
1514
|
let r = `[${e}] A total reads ${t}, but the steps before it add up to ${Number(n.toFixed(6))}. The chart shows your number.`;
|
|
1419
|
-
|
|
1420
|
-
},
|
|
1515
|
+
ut.has(r) || (ut.add(r), console.warn(r));
|
|
1516
|
+
}, ft = {
|
|
1421
1517
|
segments: (e) => {
|
|
1422
1518
|
let t = 0, n = !1;
|
|
1423
1519
|
return e.map((e) => {
|
|
1424
|
-
if (e.isTotal) return n &&
|
|
1520
|
+
if (e.isTotal) return n && dt(e.value, t), n = !1, t = e.value, {
|
|
1425
1521
|
...e,
|
|
1426
1522
|
from: 0,
|
|
1427
1523
|
to: e.value,
|
|
@@ -1439,16 +1535,16 @@ var Xe = (e) => {
|
|
|
1439
1535
|
breakable: !0,
|
|
1440
1536
|
headroom: ({ labelHeight: e, badgeHeight: t, hasAnnotations: n, unit: r }) => e + 6 * r + (n ? t * 1.6 : 0),
|
|
1441
1537
|
draw({ segments: e, cx: t, y: n, barWidth: a, height: o, unit: s, svg: c, values: l, breakAt: u, insideAlign: d }) {
|
|
1442
|
-
let f = n(0), p =
|
|
1538
|
+
let f = n(0), p = ye(l, a, s), m = d ?? "center", h = e.map((t, r) => {
|
|
1443
1539
|
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;
|
|
1444
1540
|
return {
|
|
1445
1541
|
top: i,
|
|
1446
1542
|
length: a,
|
|
1447
1543
|
down: t.kind === "down" || t.kind === "total" && (c ? t.to >= 0 : t.to < 0),
|
|
1448
|
-
inside: !o && !p &&
|
|
1544
|
+
inside: !o && !p && be(l[r], a, s)
|
|
1449
1545
|
};
|
|
1450
|
-
}), g = l[0] ?
|
|
1451
|
-
for (let [e, t] of h.entries()) t.inside && (_ = Math.min(_, (a -
|
|
1546
|
+
}), g = l[0] ? J(l[0]).height * s * .56 : 0, _ = Infinity;
|
|
1547
|
+
for (let [e, t] of h.entries()) t.inside && (_ = Math.min(_, (a - J(l[e]).width * s) / 2));
|
|
1452
1548
|
let v = e.length, y = (e, t, n = !1) => `--start:${(e / v).toFixed(4)}; --span:${(t / v).toFixed(4)}; --ease:${n ? A : "linear"};`;
|
|
1453
1549
|
e.forEach((r, i) => {
|
|
1454
1550
|
let o = e[i + 1];
|
|
@@ -1480,7 +1576,7 @@ var Xe = (e) => {
|
|
|
1480
1576
|
b.style.setProperty("--start", (i / v).toFixed(4)), b.style.setProperty("--span", (1 / v).toFixed(4));
|
|
1481
1577
|
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;
|
|
1482
1578
|
b.dataset.place = p ? "inside" : "outside", b.dataset.kind = n.kind;
|
|
1483
|
-
let T = p ? w : n.kind === "down" ? u + d +
|
|
1579
|
+
let T = p ? w : n.kind === "down" ? u + d + J(b).height * s + 3 * s : u - 3 * s;
|
|
1484
1580
|
R(b, t(i), T, O, o);
|
|
1485
1581
|
}), c.appendChild(F("line", {
|
|
1486
1582
|
class: i,
|
|
@@ -1500,7 +1596,7 @@ var Xe = (e) => {
|
|
|
1500
1596
|
let i = performance.now(), a = r(), o = performance.now() - i, s = n.querySelectorAll("tbody tr").length;
|
|
1501
1597
|
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;
|
|
1502
1598
|
}
|
|
1503
|
-
},
|
|
1599
|
+
}, pt = (e) => {
|
|
1504
1600
|
let t = (e?.textContent || "").trim(), n = t.match(/^(.*?)(-?\d+(?:[.,]\d+)?)(.*)$/);
|
|
1505
1601
|
return {
|
|
1506
1602
|
raw: t,
|
|
@@ -1510,14 +1606,14 @@ var Xe = (e) => {
|
|
|
1510
1606
|
missing: !n,
|
|
1511
1607
|
value: n ? Number.parseFloat(n[2].replace(",", ".")) : 0
|
|
1512
1608
|
};
|
|
1513
|
-
},
|
|
1514
|
-
let n =
|
|
1609
|
+
}, mt = (e) => Array.from(e.querySelector("thead tr:last-child")?.children ?? []).slice(1).flatMap((e, t) => e.hasAttribute("data-note") ? [t] : []), ht = (e, t) => {
|
|
1610
|
+
let n = mt(e), r = e.querySelectorAll("tbody tr")[t]?.querySelectorAll("td") ?? [];
|
|
1515
1611
|
return n.map((e) => r[e]).find((e) => e?.textContent?.trim()) ?? null;
|
|
1516
|
-
},
|
|
1517
|
-
let n =
|
|
1612
|
+
}, gt = (e, t = "data-i18n") => {
|
|
1613
|
+
let n = mt(e);
|
|
1518
1614
|
return Array.from(e.querySelectorAll("tbody tr")).map((e, r) => {
|
|
1519
|
-
let i = e.querySelector("th"), a = Array.from(e.querySelectorAll("td")), o = a.filter((e, t) => !n.includes(t)).map(
|
|
1520
|
-
o.length || o.push(
|
|
1615
|
+
let i = e.querySelector("th"), a = Array.from(e.querySelectorAll("td")), o = a.filter((e, t) => !n.includes(t)).map(pt);
|
|
1616
|
+
o.length || o.push(pt(null));
|
|
1521
1617
|
let s = n.map((e) => a[e]).find((e) => e?.textContent?.trim());
|
|
1522
1618
|
return {
|
|
1523
1619
|
...o[0],
|
|
@@ -1533,8 +1629,8 @@ var Xe = (e) => {
|
|
|
1533
1629
|
slot: r
|
|
1534
1630
|
};
|
|
1535
1631
|
});
|
|
1536
|
-
},
|
|
1537
|
-
let r =
|
|
1632
|
+
}, _t = (e) => Array.from(e.querySelector("thead tr:last-child")?.children ?? []).slice(1).filter((e) => !e.hasAttribute("data-note")), vt = (e) => e === "dashed" || e === "dotted" || e === "dash-dot" ? e : null, yt = (e, t, n = "data-i18n") => {
|
|
1633
|
+
let r = _t(e), i = Math.max(1, q(t.map((e) => e.cells.length)));
|
|
1538
1634
|
return Array.from({ length: i }, (e, t) => {
|
|
1539
1635
|
let i = r[t];
|
|
1540
1636
|
return {
|
|
@@ -1542,12 +1638,12 @@ var Xe = (e) => {
|
|
|
1542
1638
|
key: n && i?.getAttribute(n) || null,
|
|
1543
1639
|
focus: i?.getAttribute("data-kind") === "focus",
|
|
1544
1640
|
marker: i?.getAttribute("data-marker") ?? null,
|
|
1545
|
-
line:
|
|
1641
|
+
line: vt(i?.getAttribute("data-line")),
|
|
1546
1642
|
group: !!i?.hasAttribute("data-group"),
|
|
1547
1643
|
chart: i?.getAttribute("data-chart") === "line" ? "line" : null
|
|
1548
1644
|
};
|
|
1549
1645
|
});
|
|
1550
|
-
},
|
|
1646
|
+
}, bt = (t, n) => {
|
|
1551
1647
|
if (!n) return;
|
|
1552
1648
|
let r = /* @__PURE__ */ new Map();
|
|
1553
1649
|
for (let i of t) {
|
|
@@ -1560,7 +1656,7 @@ var Xe = (e) => {
|
|
|
1560
1656
|
i.querySelectorAll("tbody th").forEach((e, r) => {
|
|
1561
1657
|
e.getAttribute(n) || e.setAttribute(n, `${t}-row${r + 1}`);
|
|
1562
1658
|
});
|
|
1563
|
-
let a =
|
|
1659
|
+
let a = _t(i);
|
|
1564
1660
|
a.length > 1 && a.forEach((e, r) => {
|
|
1565
1661
|
e.getAttribute(n) || e.setAttribute(n, `${t}-col${r + 1}`);
|
|
1566
1662
|
}), a.forEach((e, r) => {
|
|
@@ -1571,7 +1667,7 @@ var Xe = (e) => {
|
|
|
1571
1667
|
a.includes(r) || a.push(r), e.getAttribute(n) || e.setAttribute(n, `${t}-group${a.indexOf(r) + 1}`);
|
|
1572
1668
|
});
|
|
1573
1669
|
});
|
|
1574
|
-
let o =
|
|
1670
|
+
let o = mt(i);
|
|
1575
1671
|
i.querySelectorAll("tbody tr").forEach((e, r) => {
|
|
1576
1672
|
let i = e.querySelectorAll("td");
|
|
1577
1673
|
for (let e of o) {
|
|
@@ -1580,93 +1676,93 @@ var Xe = (e) => {
|
|
|
1580
1676
|
}
|
|
1581
1677
|
}), Q?.log?.(`Keys for "${t}" written onto ${i.querySelectorAll("tbody th").length} rows`);
|
|
1582
1678
|
}
|
|
1583
|
-
},
|
|
1679
|
+
}, xt = (e) => Number(e.toPrecision(12)), St = (e, t) => {
|
|
1584
1680
|
let n = e / Math.max(1, t) || 1, r = 10 ** Math.floor(Math.log10(n)), i = n / r;
|
|
1585
|
-
return
|
|
1586
|
-
},
|
|
1681
|
+
return xt((i < 1.42 ? 1 : i < 3.17 ? 2 : i < 7.08 ? 5 : 10) * r);
|
|
1682
|
+
}, Ct = (e, t, n) => {
|
|
1587
1683
|
let r = [];
|
|
1588
|
-
for (let i = Math.ceil(e / n - 1e-9); i * n <= t + n * 1e-9; i++) r.push(
|
|
1684
|
+
for (let i = Math.ceil(e / n - 1e-9); i * n <= t + n * 1e-9; i++) r.push(xt(i * n));
|
|
1589
1685
|
return r;
|
|
1590
|
-
},
|
|
1686
|
+
}, wt = (e, t = e) => {
|
|
1591
1687
|
do {
|
|
1592
1688
|
let t = Math.round(e / 10 ** Math.floor(Math.log10(e) + 1e-9));
|
|
1593
|
-
e =
|
|
1689
|
+
e = xt(e * (t === 2 ? 2.5 : 2));
|
|
1594
1690
|
} while (Math.abs(e / t - Math.round(e / t)) > 1e-9);
|
|
1595
1691
|
return e;
|
|
1596
|
-
},
|
|
1692
|
+
}, Tt = (e) => {
|
|
1597
1693
|
let t = (e ?? "").trim().split(/\s+/).map(Number.parseFloat);
|
|
1598
1694
|
return t.length > 1 && t.every(Number.isFinite) ? t.sort((e, t) => e - t) : null;
|
|
1599
|
-
},
|
|
1695
|
+
}, Et = (e, t, n) => {
|
|
1600
1696
|
if (n && n.length > 2) return {
|
|
1601
1697
|
min: n[0],
|
|
1602
1698
|
max: n[n.length - 1],
|
|
1603
1699
|
step: 0,
|
|
1604
1700
|
ticks: n
|
|
1605
1701
|
};
|
|
1606
|
-
let r = n?.[0] ?? -
|
|
1702
|
+
let r = n?.[0] ?? -q(e.map((e) => -e)), i = n?.[1] ?? q(e);
|
|
1607
1703
|
if (!n) {
|
|
1608
1704
|
let e = (i - r || Math.abs(i) || 1) * .05;
|
|
1609
1705
|
r -= e, i += e;
|
|
1610
1706
|
}
|
|
1611
|
-
let a =
|
|
1707
|
+
let a = St(i - r, t);
|
|
1612
1708
|
return {
|
|
1613
1709
|
min: r,
|
|
1614
1710
|
max: i,
|
|
1615
1711
|
step: a,
|
|
1616
|
-
ticks:
|
|
1712
|
+
ticks: Ct(r, i, a)
|
|
1617
1713
|
};
|
|
1618
|
-
},
|
|
1714
|
+
}, Dt = (e, t) => {
|
|
1619
1715
|
let { step: n, ticks: r } = e;
|
|
1620
|
-
for (; n && r.length > 2 && !t(r);) n =
|
|
1716
|
+
for (; n && r.length > 2 && !t(r);) n = wt(n, e.step), r = Ct(e.min, e.max, n);
|
|
1621
1717
|
return {
|
|
1622
1718
|
...e,
|
|
1623
1719
|
step: n,
|
|
1624
1720
|
ticks: r
|
|
1625
1721
|
};
|
|
1626
|
-
},
|
|
1627
|
-
if (
|
|
1722
|
+
}, Ot = null, kt = (e) => {
|
|
1723
|
+
if (Ot ?? (Ot = document.createElement("canvas").getContext("2d", { willReadFrequently: !0 })), !Ot) return [
|
|
1628
1724
|
0,
|
|
1629
1725
|
0,
|
|
1630
1726
|
0,
|
|
1631
1727
|
1
|
|
1632
1728
|
];
|
|
1633
|
-
|
|
1634
|
-
let [t, n, r, i] =
|
|
1729
|
+
Ot.clearRect(0, 0, 1, 1), Ot.fillStyle = e, Ot.fillRect(0, 0, 1, 1);
|
|
1730
|
+
let [t, n, r, i] = Ot.getImageData(0, 0, 1, 1).data;
|
|
1635
1731
|
return [
|
|
1636
1732
|
t,
|
|
1637
1733
|
n,
|
|
1638
1734
|
r,
|
|
1639
1735
|
i / 255
|
|
1640
1736
|
];
|
|
1641
|
-
},
|
|
1737
|
+
}, At = ([e, t, n]) => {
|
|
1642
1738
|
let r = (e) => {
|
|
1643
1739
|
let t = e / 255;
|
|
1644
1740
|
return t <= .03928 ? t / 12.92 : ((t + .055) / 1.055) ** 2.4;
|
|
1645
1741
|
};
|
|
1646
1742
|
return .2126 * r(e) + .7152 * r(t) + .0722 * r(n);
|
|
1647
|
-
},
|
|
1743
|
+
}, jt = (e) => getComputedStyle(e).getPropertyValue("--tablechart-contrast-wcag").trim() === "3" ? 3 : 2, Mt = ([e, t, n]) => {
|
|
1648
1744
|
let r = .2126729 * (e / 255) ** 2.4 + .7151522 * (t / 255) ** 2.4 + .072175 * (n / 255) ** 2.4;
|
|
1649
1745
|
return r < .022 ? r + (.022 - r) ** 1.414 : r;
|
|
1650
|
-
},
|
|
1651
|
-
let n =
|
|
1746
|
+
}, Nt = (e, t) => {
|
|
1747
|
+
let n = Mt(e), r = Mt(t);
|
|
1652
1748
|
if (Math.abs(r - n) < 5e-4) return 0;
|
|
1653
1749
|
let i = r > n ? (r ** .56 - n ** .57) * 1.14 : (r ** .65 - n ** .62) * 1.14;
|
|
1654
1750
|
return Math.abs(i) < .1 ? 0 : (Math.abs(i) - .027) * 100;
|
|
1655
|
-
},
|
|
1656
|
-
let [n, r] = [
|
|
1751
|
+
}, Pt = (e, t, n) => e === 3 ? Nt(t, n) : Ft(t, n), Ft = (e, t) => {
|
|
1752
|
+
let [n, r] = [At(e), At(t)].sort((e, t) => t - e);
|
|
1657
1753
|
return (n + .05) / (r + .05);
|
|
1658
|
-
},
|
|
1754
|
+
}, It = (e, t) => {
|
|
1659
1755
|
let n = document.createElement("span");
|
|
1660
1756
|
n.style.color = t, e.append(n);
|
|
1661
|
-
let r =
|
|
1757
|
+
let r = kt(getComputedStyle(n).color);
|
|
1662
1758
|
return n.remove(), r;
|
|
1663
|
-
},
|
|
1759
|
+
}, Lt = (e) => {
|
|
1664
1760
|
let t = [], n = null;
|
|
1665
1761
|
for (let r = e; r && !n; r = r.parentElement) {
|
|
1666
|
-
let { background: e, backgroundColor: i } = r.dataset, a =
|
|
1762
|
+
let { background: e, backgroundColor: i } = r.dataset, a = kt(i || (e && CSS.supports("color", e) ? e : "") || getComputedStyle(r).backgroundColor);
|
|
1667
1763
|
a[3] >= 1 ? n = a : a[3] > 0 && t.push(a);
|
|
1668
1764
|
}
|
|
1669
|
-
n ?? (n =
|
|
1765
|
+
n ?? (n = It(e, "Canvas"));
|
|
1670
1766
|
for (let [e, r, i, a] of t.reverse()) n = [
|
|
1671
1767
|
e,
|
|
1672
1768
|
r,
|
|
@@ -1674,56 +1770,56 @@ var Xe = (e) => {
|
|
|
1674
1770
|
].map((e, t) => e * a + n[t] * (1 - a));
|
|
1675
1771
|
let r = `rgb(${n.slice(0, 3).map(Math.round).join(" ")})`;
|
|
1676
1772
|
return e.style.getPropertyValue("--_surface") !== r && (e.style.setProperty("--_surface", r), !0);
|
|
1677
|
-
},
|
|
1773
|
+
}, Rt = (e) => It(e, "var(--tablechart-surface, var(--_surface, Canvas))"), zt = (e, t) => e.querySelector(`:is(.tablechart-bar, .tablechart-piece)[data-row="${t.dataset.row}"]${t.dataset.series ? `[data-series="${t.dataset.series}"]` : ""}`), Bt = [
|
|
1678
1774
|
255,
|
|
1679
1775
|
255,
|
|
1680
1776
|
255
|
|
1681
|
-
],
|
|
1777
|
+
], Vt = [
|
|
1682
1778
|
0,
|
|
1683
1779
|
0,
|
|
1684
1780
|
0
|
|
1685
|
-
],
|
|
1686
|
-
let r =
|
|
1687
|
-
return r >= t ?
|
|
1688
|
-
},
|
|
1781
|
+
], Ht = (e, t, n) => {
|
|
1782
|
+
let r = Pt(n, Bt, e), i = Pt(n, Vt, e);
|
|
1783
|
+
return r >= t ? Bt : i >= t ? Vt : n === 2 && r >= 4.5 || r > i ? Bt : Vt;
|
|
1784
|
+
}, Ut = (e) => {
|
|
1689
1785
|
let t = e.querySelectorAll(".tablechart-value[data-place='inside']");
|
|
1690
1786
|
if (!t.length) return;
|
|
1691
|
-
let n =
|
|
1692
|
-
let [r, i, a, o] =
|
|
1787
|
+
let n = Rt(e).slice(0, 3), r = At(n) > .179, i = (t, n) => {
|
|
1788
|
+
let [r, i, a, o] = It(e, `var(${t}, transparent)`);
|
|
1693
1789
|
return o > 0 ? [
|
|
1694
1790
|
r,
|
|
1695
1791
|
i,
|
|
1696
1792
|
a
|
|
1697
1793
|
] : n;
|
|
1698
|
-
}, a =
|
|
1794
|
+
}, a = jt(e), o = Number.parseFloat(getComputedStyle(e).getPropertyValue("--tablechart-value-contrast")) || (a === 3 ? 60 : 5), s = kt(getComputedStyle(e).color).slice(0, 3), c = i("--tablechart-value-on-dark", r ? n : s), l = i("--tablechart-value-on-light", r ? s : n);
|
|
1699
1795
|
for (let n of t) {
|
|
1700
|
-
let t =
|
|
1796
|
+
let t = zt(e, n);
|
|
1701
1797
|
if (!t || n.hasAttribute("data-left-out")) continue;
|
|
1702
|
-
let r =
|
|
1798
|
+
let r = kt(getComputedStyle(t).fill), i = Pt(a, c, r) > Pt(a, l, r) ? c : l, s = Pt(a, i, r) >= o ? i : Ht(r, o, a);
|
|
1703
1799
|
n.style.setProperty("--_ink", `rgb(${s.join(" ")})`);
|
|
1704
1800
|
}
|
|
1705
|
-
},
|
|
1801
|
+
}, Wt = (e) => {
|
|
1706
1802
|
let t = e.querySelectorAll(".tablechart-name:not([data-place='legend'])");
|
|
1707
1803
|
if (!t.length) return;
|
|
1708
|
-
let n =
|
|
1804
|
+
let n = jt(e), r = n === 3 ? 60 : 4.5, i = Rt(e).slice(0, 3), a = kt(getComputedStyle(e).color).slice(0, 3);
|
|
1709
1805
|
for (let o of t) {
|
|
1710
1806
|
let t = e.querySelector(`.tablechart-series[data-series="${o.dataset.series}"]:not([data-muted])`);
|
|
1711
1807
|
if (o.style.removeProperty("--_ink"), !t) continue;
|
|
1712
|
-
let s =
|
|
1808
|
+
let s = kt(getComputedStyle(t).stroke).slice(0, 3);
|
|
1713
1809
|
for (let e = 0; e <= 20; e++) {
|
|
1714
1810
|
let t = s.map((t, n) => Math.round(t + (a[n] - t) * e / 20));
|
|
1715
|
-
if (!(
|
|
1811
|
+
if (!(Pt(n, t, i) < r && e < 20)) {
|
|
1716
1812
|
e && o.style.setProperty("--_ink", `rgb(${t.join(" ")})`);
|
|
1717
1813
|
break;
|
|
1718
1814
|
}
|
|
1719
1815
|
}
|
|
1720
1816
|
}
|
|
1721
|
-
},
|
|
1817
|
+
}, Gt = [
|
|
1722
1818
|
"axis-break",
|
|
1723
1819
|
"trend",
|
|
1724
1820
|
"bracket"
|
|
1725
|
-
],
|
|
1726
|
-
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) =>
|
|
1821
|
+
], Kt = (e, t = !1) => {
|
|
1822
|
+
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) => Gt.includes(e.getAttribute("data-annotation") ?? "")), o = (e) => e.hasAttribute("data-fragment"), s = r.map((e) => Array.from(e.querySelectorAll(":scope > td")));
|
|
1727
1823
|
if (!n && !r.some(o) && !i.some(o) && !s.flat().some(o) && !a.some(o) || t && !n) return null;
|
|
1728
1824
|
let c = [], l = /* @__PURE__ */ new Map(), u = [], d = (e) => {
|
|
1729
1825
|
let t = e === null ? void 0 : l.get(e);
|
|
@@ -1785,7 +1881,7 @@ var Xe = (e) => {
|
|
|
1785
1881
|
count: c.length,
|
|
1786
1882
|
indexes: c
|
|
1787
1883
|
};
|
|
1788
|
-
},
|
|
1884
|
+
}, qt = (e) => {
|
|
1789
1885
|
let t = e.plan;
|
|
1790
1886
|
if (!t) return;
|
|
1791
1887
|
let n = (t) => t === null || e.step - t >= 1;
|
|
@@ -1796,7 +1892,7 @@ var Xe = (e) => {
|
|
|
1796
1892
|
let u = r.hasAttribute("data-flat") ? (l - e + 1) / (i - e + 1) : i > e ? Math.max(0, l - e) / (i - e) : 0;
|
|
1797
1893
|
r.style.setProperty("--reveal", String(u));
|
|
1798
1894
|
}
|
|
1799
|
-
},
|
|
1895
|
+
}, Jt = (e) => {
|
|
1800
1896
|
let t = e.plan;
|
|
1801
1897
|
if (!t) return;
|
|
1802
1898
|
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) => {
|
|
@@ -1874,12 +1970,12 @@ var Xe = (e) => {
|
|
|
1874
1970
|
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));
|
|
1875
1971
|
}
|
|
1876
1972
|
}
|
|
1877
|
-
|
|
1878
|
-
},
|
|
1973
|
+
qt(e);
|
|
1974
|
+
}, Yt = (e, t, n = !1) => {
|
|
1879
1975
|
let r = e.plan;
|
|
1880
1976
|
if (!r) return;
|
|
1881
1977
|
let i = Math.min(Math.max(Math.round(t), 0), r.count), a = i !== e.step;
|
|
1882
|
-
e.step = i, e.figure.style.setProperty("--_step", String(i)),
|
|
1978
|
+
e.step = i, e.figure.style.setProperty("--_step", String(i)), qt(e);
|
|
1883
1979
|
let [o, s] = e.controls?.querySelectorAll("button") ?? [];
|
|
1884
1980
|
o && (o.disabled = i === 0), s && (s.disabled = i === r.count), a && !n && e.figure.dispatchEvent(new CustomEvent("tablechart:step", {
|
|
1885
1981
|
bubbles: !0,
|
|
@@ -1888,7 +1984,7 @@ var Xe = (e) => {
|
|
|
1888
1984
|
steps: r.count
|
|
1889
1985
|
}
|
|
1890
1986
|
}));
|
|
1891
|
-
},
|
|
1987
|
+
}, Xt = (e, t, n) => {
|
|
1892
1988
|
let r = document.createElement("div");
|
|
1893
1989
|
r.className = "tablechart-controls";
|
|
1894
1990
|
let i = (r) => {
|
|
@@ -1917,14 +2013,14 @@ var Xe = (e) => {
|
|
|
1917
2013
|
]), i;
|
|
1918
2014
|
};
|
|
1919
2015
|
return r.append(i("previous"), i("next")), r;
|
|
1920
|
-
},
|
|
2016
|
+
}, Zt = (e, t, n, r = {
|
|
1921
2017
|
x: 0,
|
|
1922
2018
|
y: 0,
|
|
1923
2019
|
scale: 1
|
|
1924
2020
|
}, i = 2, a = 8, o = 12) => {
|
|
1925
2021
|
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));
|
|
1926
2022
|
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`;
|
|
1927
|
-
},
|
|
2023
|
+
}, Qt = "tablechart-tooltip", $t = [
|
|
1928
2024
|
"--tablechart-surface",
|
|
1929
2025
|
"--_surface",
|
|
1930
2026
|
"--tablechart-tooltip-surface",
|
|
@@ -1933,51 +2029,51 @@ var Xe = (e) => {
|
|
|
1933
2029
|
"--tablechart-tooltip-radius",
|
|
1934
2030
|
"--tablechart-tooltip-padding",
|
|
1935
2031
|
"--tablechart-tooltip-shadow"
|
|
1936
|
-
], $ = null,
|
|
1937
|
-
clearTimeout(
|
|
1938
|
-
},
|
|
1939
|
-
if (
|
|
1940
|
-
|
|
1941
|
-
e.pointerType === "mouse" && (
|
|
2032
|
+
], $ = null, en, tn, nn = null, rn = null, an = 0, on = () => {
|
|
2033
|
+
clearTimeout(an), $ && nn && ($.hidden = !0, nn = null, rn = null);
|
|
2034
|
+
}, sn = !1, cn = !0, ln = NaN, un = NaN, dn = !1, fn = () => {
|
|
2035
|
+
if (dn) return;
|
|
2036
|
+
dn = !0, document.addEventListener("pointermove", (e) => {
|
|
2037
|
+
e.pointerType === "mouse" && (cn = e.screenX !== ln || e.screenY !== un, ln = e.screenX, un = e.screenY, cn && (sn = !1));
|
|
1942
2038
|
}, {
|
|
1943
2039
|
capture: !0,
|
|
1944
2040
|
passive: !0
|
|
1945
2041
|
});
|
|
1946
2042
|
let e = () => {
|
|
1947
|
-
|
|
2043
|
+
sn = !0, on();
|
|
1948
2044
|
};
|
|
1949
2045
|
document.addEventListener("keydown", e, !0), window.addEventListener("scroll", e, {
|
|
1950
2046
|
capture: !0,
|
|
1951
2047
|
passive: !0
|
|
1952
2048
|
});
|
|
1953
|
-
},
|
|
2049
|
+
}, pn = (e, t) => t / Number.parseFloat(getComputedStyle(e).width) || 1, mn = (e) => {
|
|
1954
2050
|
let t = e.tooltipparent;
|
|
1955
2051
|
return (typeof t == "string" ? document.querySelector(t) : t) ?? document.body;
|
|
1956
|
-
},
|
|
1957
|
-
clearTimeout(
|
|
1958
|
-
},
|
|
2052
|
+
}, hn = () => {
|
|
2053
|
+
clearTimeout(an), an = window.setTimeout(on, 120);
|
|
2054
|
+
}, gn = () => {
|
|
1959
2055
|
let e = document.createElement("div");
|
|
1960
|
-
return e.className =
|
|
2056
|
+
return e.className = Qt, e.setAttribute("aria-hidden", "true"), e.hidden = !0, en = document.createElement("div"), tn = document.createElement("div"), tn.className = `${Qt}-arrow`, e.append(en, tn), document.body.append(e), e.addEventListener("pointerenter", () => clearTimeout(an)), e.addEventListener("pointerleave", (e) => e.pointerType === "mouse" && hn()), document.addEventListener("pointerdown", (t) => {
|
|
1961
2057
|
let n = t.target;
|
|
1962
|
-
|
|
1963
|
-
}), window.addEventListener("resize",
|
|
1964
|
-
},
|
|
2058
|
+
nn && !nn.plot.contains(n) && !e.contains(n) && on();
|
|
2059
|
+
}), window.addEventListener("resize", on), e;
|
|
2060
|
+
}, _n = (e, t) => {
|
|
1965
2061
|
let n = t ? t.style.getPropertyValue("--step") : "x";
|
|
1966
2062
|
return n === "" || Number(n) < e.step;
|
|
1967
|
-
},
|
|
1968
|
-
let n = e.svg.querySelector(`[data-series="${t + 1}"]:not(.tablechart-hole)`);
|
|
2063
|
+
}, vn = (e, t) => {
|
|
2064
|
+
let n = e.svg.querySelector(`[data-series="${t + 1}"]:not(.tablechart-hole, .tablechart-area:not([data-stacked]))`);
|
|
1969
2065
|
if (!n) return;
|
|
1970
2066
|
let r = getComputedStyle(n);
|
|
1971
2067
|
return r.fill && r.fill !== "none" ? r.fill : r.stroke;
|
|
1972
|
-
},
|
|
2068
|
+
}, yn = (e, t, n) => {
|
|
1973
2069
|
let r = e.series.length > 1, i = [];
|
|
1974
2070
|
for (let [n, a] of e.seriesValues.entries()) {
|
|
1975
|
-
if (!
|
|
2071
|
+
if (!_n(e, a[t])) continue;
|
|
1976
2072
|
let o = r ? e.figure.querySelector(`.tablechart-name[data-series="${n + 1}"]`) : null;
|
|
1977
2073
|
i.push({
|
|
1978
2074
|
name: r ? o?.textContent ?? e.series[n].name : "",
|
|
1979
2075
|
value: a[t].textContent ?? "",
|
|
1980
|
-
colour: r ?
|
|
2076
|
+
colour: r ? vn(e, n) : void 0,
|
|
1981
2077
|
sample: o ? {
|
|
1982
2078
|
marker: o.dataset.marker ?? null,
|
|
1983
2079
|
open: o.hasAttribute("data-open"),
|
|
@@ -1988,11 +2084,11 @@ var Xe = (e) => {
|
|
|
1988
2084
|
});
|
|
1989
2085
|
}
|
|
1990
2086
|
let a = e.totals[t];
|
|
1991
|
-
return i.length > 1 &&
|
|
2087
|
+
return i.length > 1 && _n(e, a) && i.push({
|
|
1992
2088
|
name: n.totallabel,
|
|
1993
2089
|
value: a.textContent ?? ""
|
|
1994
2090
|
}), i;
|
|
1995
|
-
},
|
|
2091
|
+
}, bn = (e, t) => {
|
|
1996
2092
|
if (e.type.centre && e.values[t]) return e.values[t].getBoundingClientRect();
|
|
1997
2093
|
let n = e.pointOf?.(t);
|
|
1998
2094
|
if (n) {
|
|
@@ -2012,49 +2108,49 @@ var Xe = (e) => {
|
|
|
2012
2108
|
100
|
|
2013
2109
|
];
|
|
2014
2110
|
return new DOMRect(a.left + a.width * o / 100, a.top + a.height * s / 100, a.width * c / 100, a.height * l / 100);
|
|
2015
|
-
},
|
|
2016
|
-
if (clearTimeout(
|
|
2017
|
-
let r = (e.type.tooltip ??
|
|
2018
|
-
if (!r.length) return
|
|
2019
|
-
|
|
2111
|
+
}, xn = (e, t, n) => {
|
|
2112
|
+
if (clearTimeout(an), nn === e && rn === t) return;
|
|
2113
|
+
let r = (e.type.tooltip ?? yn)(e, t, n);
|
|
2114
|
+
if (!r.length) return on();
|
|
2115
|
+
nn && nn !== e && on(), $ ?? ($ = gn());
|
|
2020
2116
|
let i = (e, t, n, r = !1, i) => {
|
|
2021
2117
|
let a = document.createElement("div");
|
|
2022
|
-
if (a.className = `${
|
|
2118
|
+
if (a.className = `${Qt}-line`, n) {
|
|
2023
2119
|
let e = document.createElement("span");
|
|
2024
|
-
e.className = `${
|
|
2120
|
+
e.className = `${Qt}-key`, e.style.backgroundColor = 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), i.point && e.style.setProperty("--tablechart-point-color", i.point), e.toggleAttribute("data-open", i.open)), a.append(e);
|
|
2025
2121
|
}
|
|
2026
2122
|
let o = document.createElement("span");
|
|
2027
|
-
if (o.className = `${
|
|
2123
|
+
if (o.className = `${Qt}-${r ? "title" : "name"}`, o.textContent = e, a.append(o), t) {
|
|
2028
2124
|
e && o.append(":");
|
|
2029
2125
|
let n = document.createElement("span");
|
|
2030
|
-
n.className = `${
|
|
2126
|
+
n.className = `${Qt}-value`, n.textContent = t, a.append(n);
|
|
2031
2127
|
}
|
|
2032
2128
|
return a;
|
|
2033
|
-
}, 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 =
|
|
2034
|
-
className: `${
|
|
2129
|
+
}, 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 = ht(e.figure, t)?.textContent?.trim(), l = c ? [Object.assign(document.createElement("div"), {
|
|
2130
|
+
className: `${Qt}-note`,
|
|
2035
2131
|
textContent: c
|
|
2036
2132
|
})] : [];
|
|
2037
|
-
|
|
2133
|
+
en.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);
|
|
2038
2134
|
let u = getComputedStyle(e.figure);
|
|
2039
|
-
for (let e of
|
|
2135
|
+
for (let e of $t) {
|
|
2040
2136
|
let t = u.getPropertyValue(e).trim();
|
|
2041
2137
|
t ? $.style.setProperty(e, t) : $.style.removeProperty(e);
|
|
2042
2138
|
}
|
|
2043
2139
|
$.style.setProperty("--_color", u.color), $.style.colorScheme = u.colorScheme, $.style.fontFamily = u.fontFamily;
|
|
2044
|
-
let d =
|
|
2045
|
-
$.parentElement !== d && d.append($),
|
|
2140
|
+
let d = mn(n);
|
|
2141
|
+
$.parentElement !== d && d.append($), nn = e, rn = t, $.hidden = !1, $.style.left = "0px", $.style.top = "0px";
|
|
2046
2142
|
let f = $.getBoundingClientRect(), p = {
|
|
2047
2143
|
x: f.left,
|
|
2048
2144
|
y: f.top,
|
|
2049
|
-
scale:
|
|
2050
|
-
}, m =
|
|
2051
|
-
$.style.fontSize = `${Number.parseFloat(u.fontSize) * m / p.scale}px`,
|
|
2052
|
-
},
|
|
2145
|
+
scale: pn($, f.width)
|
|
2146
|
+
}, m = pn(e.plot, e.plot.getBoundingClientRect().width);
|
|
2147
|
+
$.style.fontSize = `${Number.parseFloat(u.fontSize) * m / p.scale}px`, Zt($, tn, bn(e, t), p);
|
|
2148
|
+
}, Sn = (e, t, n = !1) => {
|
|
2053
2149
|
let { plot: r } = e;
|
|
2054
|
-
r.setAttribute("data-hover", ""),
|
|
2150
|
+
r.setAttribute("data-hover", ""), fn();
|
|
2055
2151
|
let i = (t) => {
|
|
2056
2152
|
if (e.rowAt) {
|
|
2057
|
-
let n = r.getBoundingClientRect(), i =
|
|
2153
|
+
let n = r.getBoundingClientRect(), i = pn(r, n.width);
|
|
2058
2154
|
return e.rowAt((t.clientX - n.left) / i, (t.clientY - n.top) / i);
|
|
2059
2155
|
}
|
|
2060
2156
|
let n = t.target.closest?.("[data-row]")?.getAttribute("data-row");
|
|
@@ -2064,13 +2160,13 @@ var Xe = (e) => {
|
|
|
2064
2160
|
else if (t.getAttribute("data-row") === String(e + 1)) return !0;
|
|
2065
2161
|
return !1;
|
|
2066
2162
|
}, s = null, c = (a) => {
|
|
2067
|
-
if (a.type === "pointerdown")
|
|
2068
|
-
else if (a.pointerType === "mouse" && (!
|
|
2163
|
+
if (a.type === "pointerdown") sn = !1;
|
|
2164
|
+
else if (a.pointerType === "mouse" && (!cn || sn)) return;
|
|
2069
2165
|
if (!r.classList.contains("is-placed") || !e.figure.classList.contains("is-shown")) return;
|
|
2070
|
-
if (n && !e.figure.hasAttribute("data-left-out")) return
|
|
2166
|
+
if (n && !e.figure.hasAttribute("data-left-out")) return nn === e ? on() : void 0;
|
|
2071
2167
|
let c = i(a);
|
|
2072
|
-
if (s = c, c === null || o(c)) return
|
|
2073
|
-
|
|
2168
|
+
if (s = c, c === null || o(c)) return nn === e ? on() : void 0;
|
|
2169
|
+
xn(e, c, t);
|
|
2074
2170
|
}, l = (t) => {
|
|
2075
2171
|
let n = t.target;
|
|
2076
2172
|
return e.svg.contains(n) && n.hasAttribute("data-row") ? n : null;
|
|
@@ -2084,37 +2180,37 @@ var Xe = (e) => {
|
|
|
2084
2180
|
if (!r) return;
|
|
2085
2181
|
a.delete(r);
|
|
2086
2182
|
let i = Number(r.getAttribute("data-row")) - 1;
|
|
2087
|
-
s === i && !o(i) && !
|
|
2183
|
+
s === i && !o(i) && !sn && xn(e, i, t);
|
|
2088
2184
|
};
|
|
2089
2185
|
e.svg.addEventListener("transitionend", u), e.svg.addEventListener("transitioncancel", u), r.addEventListener("pointermove", c), r.addEventListener("pointerdown", c), r.addEventListener("pointerleave", (t) => {
|
|
2090
|
-
t.pointerType === "mouse" && (s = null,
|
|
2186
|
+
t.pointerType === "mouse" && (s = null, nn === e && hn());
|
|
2091
2187
|
});
|
|
2092
|
-
},
|
|
2093
|
-
|
|
2094
|
-
},
|
|
2095
|
-
area:
|
|
2096
|
-
bar:
|
|
2097
|
-
column:
|
|
2098
|
-
donut:
|
|
2099
|
-
line:
|
|
2100
|
-
waterfall:
|
|
2101
|
-
},
|
|
2102
|
-
|
|
2103
|
-
},
|
|
2104
|
-
"axis-break":
|
|
2105
|
-
trend:
|
|
2106
|
-
bracket:
|
|
2107
|
-
reference:
|
|
2108
|
-
note:
|
|
2109
|
-
},
|
|
2188
|
+
}, Cn = (e) => {
|
|
2189
|
+
nn === e && on();
|
|
2190
|
+
}, wn = {
|
|
2191
|
+
area: lt,
|
|
2192
|
+
bar: We,
|
|
2193
|
+
column: Ge,
|
|
2194
|
+
donut: Je,
|
|
2195
|
+
line: ct,
|
|
2196
|
+
waterfall: ft
|
|
2197
|
+
}, Tn = (e, t) => {
|
|
2198
|
+
wn[e] = t, Object.assign(En, t.annotations), Dn.splice(0, Infinity, ...Object.keys(En));
|
|
2199
|
+
}, En = {
|
|
2200
|
+
"axis-break": K,
|
|
2201
|
+
trend: Ne,
|
|
2202
|
+
bracket: fe,
|
|
2203
|
+
reference: je,
|
|
2204
|
+
note: ke
|
|
2205
|
+
}, Dn = Object.keys(En), On = (e) => {
|
|
2110
2206
|
let t = "";
|
|
2111
2207
|
for (let n = e.previousSibling; n && (t = (n.textContent ?? "") + t, !t.trim()); n = n.previousSibling);
|
|
2112
2208
|
return t.trim();
|
|
2113
|
-
},
|
|
2209
|
+
}, kn = [
|
|
2114
2210
|
"straight",
|
|
2115
2211
|
"step",
|
|
2116
2212
|
"smooth"
|
|
2117
|
-
],
|
|
2213
|
+
], An = (e, t, n, r, i) => {
|
|
2118
2214
|
let a = t === r, [o, s, c] = a ? [
|
|
2119
2215
|
Math.min(e, n),
|
|
2120
2216
|
Math.max(e, n),
|
|
@@ -2126,16 +2222,16 @@ var Xe = (e) => {
|
|
|
2126
2222
|
], 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;
|
|
2127
2223
|
for (let [e, t] of l) e > d && u.push([d, Math.min(e, s)]), d = Math.max(d, t);
|
|
2128
2224
|
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("");
|
|
2129
|
-
},
|
|
2225
|
+
}, jn = (e, t) => {
|
|
2130
2226
|
let [n, r, i, a] = [
|
|
2131
2227
|
"x1",
|
|
2132
2228
|
"y1",
|
|
2133
2229
|
"x2",
|
|
2134
2230
|
"y2"
|
|
2135
|
-
].map((t) => Number(e.getAttribute(t))), o = F("path", { d:
|
|
2231
|
+
].map((t) => Number(e.getAttribute(t))), o = F("path", { d: An(n, r, i, a, t) });
|
|
2136
2232
|
for (let { name: t, value: n } of Array.from(e.attributes)) /^[xy][12]$/.test(t) || o.setAttribute(t, n);
|
|
2137
2233
|
e.replaceWith(o);
|
|
2138
|
-
},
|
|
2234
|
+
}, Mn = (e) => Array.from((e.getAttribute("d") ?? "").matchAll(/M(-?[\d.]+),(-?[\d.]+)([HV])(-?[\d.]+)/g), ([, e, t, n, r]) => n === "H" ? [
|
|
2139
2235
|
+e,
|
|
2140
2236
|
+t,
|
|
2141
2237
|
+r,
|
|
@@ -2145,19 +2241,19 @@ var Xe = (e) => {
|
|
|
2145
2241
|
+t,
|
|
2146
2242
|
+e,
|
|
2147
2243
|
+r
|
|
2148
|
-
]),
|
|
2244
|
+
]), Nn = (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(""), Pn = (e, t, n) => {
|
|
2149
2245
|
let r = e.getAttribute(t);
|
|
2150
2246
|
return r === null ? n : r !== "false";
|
|
2151
|
-
},
|
|
2247
|
+
}, Fn = (e, t) => !!t.animate && e.getAttribute("data-chart-animate") !== "false", In = (e, t) => {
|
|
2152
2248
|
let n = e.dataset.chartShape;
|
|
2153
|
-
return n &&
|
|
2154
|
-
},
|
|
2249
|
+
return n && kn.includes(n) ? n : kn.includes(t.shape) ? t.shape : "straight";
|
|
2250
|
+
}, Ln = (e) => {
|
|
2155
2251
|
for (let t of e.querySelectorAll("br")) {
|
|
2156
|
-
if (t.previousElementSibling?.classList.contains("tablechart-sr") || /[.!?:;,…]$/.test(
|
|
2252
|
+
if (t.previousElementSibling?.classList.contains("tablechart-sr") || /[.!?:;,…]$/.test(On(t))) continue;
|
|
2157
2253
|
let e = document.createElement("span");
|
|
2158
2254
|
e.className = y, e.textContent = ". ", t.before(e);
|
|
2159
2255
|
}
|
|
2160
|
-
},
|
|
2256
|
+
}, Rn = (e, t, n) => {
|
|
2161
2257
|
let r = e.querySelector("table");
|
|
2162
2258
|
if (!r) return null;
|
|
2163
2259
|
let i = r.querySelector("tfoot [data-chart-total]");
|
|
@@ -2168,22 +2264,22 @@ var Xe = (e) => {
|
|
|
2168
2264
|
s && n.langattribute && o.setAttribute(n.langattribute, `${s}-total`);
|
|
2169
2265
|
let c = a.insertCell();
|
|
2170
2266
|
return c.setAttribute("data-chart-total", ""), c.dataset.value = t.dataset.value ?? "0", a.prepend(o), c;
|
|
2171
|
-
},
|
|
2267
|
+
}, zn = 0, Bn = (e) => {
|
|
2172
2268
|
let t = e.querySelector(":scope > figcaption");
|
|
2173
2269
|
if (!t) return;
|
|
2174
|
-
|
|
2270
|
+
Ln(t);
|
|
2175
2271
|
let n = (e) => e.hasAttribute("aria-label") || e.hasAttribute("aria-labelledby"), r = (e) => {
|
|
2176
|
-
t.id || (t.id = `tablechart-caption-${++
|
|
2272
|
+
t.id || (t.id = `tablechart-caption-${++zn}`), e.setAttribute("aria-labelledby", t.id);
|
|
2177
2273
|
};
|
|
2178
2274
|
e.tagName === "FIGURE" && !n(e) && r(e);
|
|
2179
2275
|
let i = e.querySelector("table");
|
|
2180
2276
|
i && !n(i) && !i.querySelector(":scope > caption") && r(i);
|
|
2181
|
-
},
|
|
2277
|
+
}, Vn = [
|
|
2182
2278
|
null,
|
|
2183
2279
|
"dashed",
|
|
2184
2280
|
"dotted",
|
|
2185
2281
|
"dash-dot"
|
|
2186
|
-
],
|
|
2282
|
+
], Hn = (t, n, r, i) => {
|
|
2187
2283
|
let a = t.closest("[data-chart-lines]")?.getAttribute("data-chart-lines"), o = i.lines;
|
|
2188
2284
|
if (a) try {
|
|
2189
2285
|
o = JSON.parse(a);
|
|
@@ -2192,19 +2288,19 @@ var Xe = (e) => {
|
|
|
2192
2288
|
}
|
|
2193
2289
|
(r === "line" || r === "area" ? n : n.filter((e) => e.chart)).forEach((e, t) => {
|
|
2194
2290
|
if (!o?.length) {
|
|
2195
|
-
e.line ?? (e.line =
|
|
2291
|
+
e.line ?? (e.line = Vn[Math.floor(t / 6) % Vn.length]);
|
|
2196
2292
|
return;
|
|
2197
2293
|
}
|
|
2198
2294
|
let n = o[t % o.length];
|
|
2199
2295
|
e.marker ?? (e.marker = n.marker || n.open !== void 0 ? [n.marker, n.open ? "open" : "filled"].filter(Boolean).join(" ") : null), e.line === null && n.line !== "solid" && (e.line = n.line ?? null);
|
|
2200
2296
|
});
|
|
2201
|
-
},
|
|
2202
|
-
let o = a ?? (r.getAttribute("data-chart") || "column"), s =
|
|
2203
|
-
if (!s) return console.warn(`[${e}] Unknown chart type "${o}". Known types: ${Object.keys(
|
|
2204
|
-
let c =
|
|
2297
|
+
}, Un = (r, i, a = null) => {
|
|
2298
|
+
let o = a ?? (r.getAttribute("data-chart") || "column"), s = wn[o];
|
|
2299
|
+
if (!s) return console.warn(`[${e}] Unknown chart type "${o}". Known types: ${Object.keys(wn).join(", ")}.`), r.setAttribute("data-chart-empty", ""), null;
|
|
2300
|
+
let c = gt(r, i.langattribute);
|
|
2205
2301
|
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;
|
|
2206
|
-
|
|
2207
|
-
let l =
|
|
2302
|
+
Bn(r);
|
|
2303
|
+
let l = yt(r, c, i.langattribute);
|
|
2208
2304
|
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)) {
|
|
2209
2305
|
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.`;
|
|
2210
2306
|
t && (console.warn(`[${e}] ${t}`), l = l.map((e) => ({
|
|
@@ -2212,7 +2308,7 @@ var Xe = (e) => {
|
|
|
2212
2308
|
chart: null
|
|
2213
2309
|
})));
|
|
2214
2310
|
}
|
|
2215
|
-
|
|
2311
|
+
Hn(r, l, o, i);
|
|
2216
2312
|
let u = l.some((e) => e.chart), d = l.length > 1;
|
|
2217
2313
|
d && r.style.setProperty("--_series-count", String(l.length));
|
|
2218
2314
|
let m = r.hasAttribute("data-chart-stack");
|
|
@@ -2226,14 +2322,14 @@ var Xe = (e) => {
|
|
|
2226
2322
|
_.appendChild(v);
|
|
2227
2323
|
let y = r.querySelector(":scope > table"), b = (e) => y ? y.before(e) : r.append(e);
|
|
2228
2324
|
b(_);
|
|
2229
|
-
let x = s.centre ? c.filter((e) => !e.isTotal) : c, S = Math.max(0,
|
|
2325
|
+
let x = s.centre ? c.filter((e) => !e.isTotal) : c, S = Math.max(0, q(x.flatMap((e) => e.cells.slice(0, l.length).map((e) => ie(e.number))))), C = l.map((e, t) => Math.max(0, q(c.map((e) => ie(e.cells[t]?.number ?? ""))))), w = document.createElement("div");
|
|
2230
2326
|
w.className = "tablechart-values", _.appendChild(w);
|
|
2231
2327
|
let D = l.map((e, t) => c.map((e, r) => {
|
|
2232
2328
|
let i = e.cells[t] ?? e.cells[0], a = L(n, w);
|
|
2233
2329
|
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;
|
|
2234
2330
|
})), O = D[0], k = h && s.totals ? c.map((e, t) => {
|
|
2235
2331
|
let r = L(n, w);
|
|
2236
|
-
r.classList.add(...e.classes), r.dataset.kind = "total", r.dataset.row = String(t + 1), r.dataset.value = String(
|
|
2332
|
+
r.classList.add(...e.classes), r.dataset.kind = "total", r.dataset.row = String(t + 1), r.dataset.value = String(ze(e, l.length));
|
|
2237
2333
|
let i = e.cells[0];
|
|
2238
2334
|
return i.prefix && (r.dataset.prefix = i.prefix), i.suffix && (r.dataset.suffix = i.suffix), r.style.setProperty("--i", String(e.slot)), r;
|
|
2239
2335
|
}) : [], 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;
|
|
@@ -2242,8 +2338,8 @@ var Xe = (e) => {
|
|
|
2242
2338
|
let n = L(f, N ?? _);
|
|
2243
2339
|
N && (n.dataset.place = "legend");
|
|
2244
2340
|
let a = e.chart ? void 0 : s.legend ?? s.swatch;
|
|
2245
|
-
if (a && (n.dataset.swatch = a), n.textContent = e.name, !a &&
|
|
2246
|
-
let r = e.chart ?
|
|
2341
|
+
if (a && (n.dataset.swatch = a), n.textContent = e.name, !a && In(r, i) !== "step") {
|
|
2342
|
+
let r = e.chart ? Ye(P, P.indexOf(e)) : Ye(l, t);
|
|
2247
2343
|
n.dataset.marker = r.shape, n.toggleAttribute("data-open", r.open);
|
|
2248
2344
|
}
|
|
2249
2345
|
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;
|
|
@@ -2252,25 +2348,25 @@ var Xe = (e) => {
|
|
|
2252
2348
|
let e = c.find((e) => e.isTotal), t = e ? e.value : c.reduce((e, t) => e + Math.abs(t.value), 0);
|
|
2253
2349
|
R.dataset.value = String(t), e && (R.dataset.decimals = String(ie(e.number)));
|
|
2254
2350
|
}
|
|
2255
|
-
let z = R && !c.some((e) => e.isTotal) ?
|
|
2351
|
+
let z = R && !c.some((e) => e.isTotal) ? Rn(r, R, i) : null, B = s.categories === "beside", V = document.createElement("div");
|
|
2256
2352
|
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));
|
|
2257
|
-
let
|
|
2353
|
+
let H = 0;
|
|
2258
2354
|
for (let [e, t] of c.entries()) {
|
|
2259
2355
|
let n = document.createElement("span");
|
|
2260
|
-
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(
|
|
2356
|
+
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);
|
|
2261
2357
|
}
|
|
2262
|
-
s.centre && r.style.setProperty("--_slice-count", String(
|
|
2263
|
-
let
|
|
2264
|
-
titles:
|
|
2358
|
+
s.centre && r.style.setProperty("--_slice-count", String(H)), B ? _.appendChild(V) : b(V), N && b(N);
|
|
2359
|
+
let U = l.filter((e) => !e.group), W = !s.axes && !s.centre && Pn(r, "data-chart-axis", i.axis), ee = s.axes ? {
|
|
2360
|
+
titles: U.slice(0, 2).map((e, t) => {
|
|
2265
2361
|
let n = L(`${T}-title`, _);
|
|
2266
2362
|
return n.dataset.axis = t ? "y" : "x", n.textContent = e.name, e.key && i.langattribute && n.setAttribute(i.langattribute, e.key), n;
|
|
2267
2363
|
}),
|
|
2268
2364
|
ticks: L(`${E}s`, _),
|
|
2269
2365
|
numbers: !0
|
|
2270
|
-
} :
|
|
2366
|
+
} : W || !s.centre && Pn(r, "data-chart-grid", i.grid) ? {
|
|
2271
2367
|
titles: [],
|
|
2272
2368
|
ticks: L(`${E}s`, _),
|
|
2273
|
-
numbers:
|
|
2369
|
+
numbers: W
|
|
2274
2370
|
} : null;
|
|
2275
2371
|
s.text?.({
|
|
2276
2372
|
figure: r,
|
|
@@ -2279,21 +2375,21 @@ var Xe = (e) => {
|
|
|
2279
2375
|
series: l,
|
|
2280
2376
|
config: i
|
|
2281
2377
|
});
|
|
2282
|
-
let
|
|
2283
|
-
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),
|
|
2284
|
-
let
|
|
2378
|
+
let te = Fn(r, i) ? Kt(r, !!s.axes) : null;
|
|
2379
|
+
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), te && r.setAttribute("data-steps", "");
|
|
2380
|
+
let ne = r.getAttribute("data-chart-keys"), re = te && i.controls ? Xt({
|
|
2285
2381
|
previous: i.previouslabel,
|
|
2286
2382
|
next: i.nextlabel,
|
|
2287
2383
|
hint: i.stephint
|
|
2288
2384
|
}, {
|
|
2289
|
-
previous:
|
|
2290
|
-
next:
|
|
2291
|
-
hint:
|
|
2385
|
+
previous: ne && `${ne}-previous`,
|
|
2386
|
+
next: ne && `${ne}-next`,
|
|
2387
|
+
hint: ne && `${ne}-step`
|
|
2292
2388
|
}, i.langattribute) : null;
|
|
2293
|
-
|
|
2294
|
-
let
|
|
2295
|
-
let n = t.getAttribute("data-annotation"), r =
|
|
2296
|
-
if (!r) return console.warn(`[${e}] Unknown annotation "${n}". Known annotations: ${Object.keys(
|
|
2389
|
+
re && b(re);
|
|
2390
|
+
let G = Array.from(r.querySelectorAll("[data-annotation]")).map((t) => {
|
|
2391
|
+
let n = t.getAttribute("data-annotation"), r = En[n];
|
|
2392
|
+
if (!r) return console.warn(`[${e}] Unknown annotation "${n}". Known annotations: ${Object.keys(En).join(", ")}.`), null;
|
|
2297
2393
|
let i = Number.parseInt(t.getAttribute("data-series") ?? "1", 10), a = i >= 1 && i <= l.length ? i - 1 : 0;
|
|
2298
2394
|
return i !== a + 1 && console.warn(`[${e}] An annotation reads line ${i}, which is not there; it reads line 1.`), {
|
|
2299
2395
|
spec: t,
|
|
@@ -2306,15 +2402,15 @@ var Xe = (e) => {
|
|
|
2306
2402
|
if (!B && !s.centre && !s.axes) for (let [e, t] of c.entries()) {
|
|
2307
2403
|
if (!t.note) continue;
|
|
2308
2404
|
let n = document.createElement("span");
|
|
2309
|
-
n.dataset.annotation = "note", n.dataset.row = String(e + 1), n.textContent = t.note, t.noteKey && n.setAttribute("data-i18n", t.noteKey),
|
|
2405
|
+
n.dataset.annotation = "note", n.dataset.row = String(e + 1), n.textContent = t.note, t.noteKey && n.setAttribute("data-i18n", t.noteKey), G.push({
|
|
2310
2406
|
spec: n,
|
|
2311
|
-
type:
|
|
2312
|
-
badge:
|
|
2407
|
+
type: ke,
|
|
2408
|
+
badge: ke.create(n, _),
|
|
2313
2409
|
series: 0,
|
|
2314
2410
|
after: c.length
|
|
2315
2411
|
});
|
|
2316
2412
|
}
|
|
2317
|
-
|
|
2413
|
+
Fn(r, i) && r.setAttribute("data-animate", Kn(r, o, i, !!te));
|
|
2318
2414
|
let K = {
|
|
2319
2415
|
figure: r,
|
|
2320
2416
|
plot: _,
|
|
@@ -2328,45 +2424,45 @@ var Xe = (e) => {
|
|
|
2328
2424
|
names: N ? [] : I,
|
|
2329
2425
|
categories: Array.from(V.children),
|
|
2330
2426
|
centre: R,
|
|
2331
|
-
axes:
|
|
2427
|
+
axes: ee,
|
|
2332
2428
|
stacked: h,
|
|
2333
2429
|
totals: k,
|
|
2334
2430
|
totalCell: z,
|
|
2335
2431
|
rowAt: null,
|
|
2336
2432
|
rowBox: null,
|
|
2337
2433
|
pointOf: null,
|
|
2338
|
-
annotations:
|
|
2434
|
+
annotations: G,
|
|
2339
2435
|
checks: [],
|
|
2340
|
-
plan:
|
|
2436
|
+
plan: te,
|
|
2341
2437
|
step: 0,
|
|
2342
|
-
controls:
|
|
2343
|
-
},
|
|
2344
|
-
v.addEventListener("transitionend",
|
|
2438
|
+
controls: re
|
|
2439
|
+
}, ae = () => sr(r, v);
|
|
2440
|
+
v.addEventListener("transitionend", ae), v.addEventListener("transitioncancel", ae), re?.addEventListener("click", (e) => {
|
|
2345
2441
|
let t = e.target.closest("button")?.dataset.go;
|
|
2346
|
-
t &&
|
|
2347
|
-
}),
|
|
2348
|
-
let
|
|
2349
|
-
return
|
|
2350
|
-
},
|
|
2442
|
+
t && Yt(K, K.step + (t === "next" ? 1 : -1));
|
|
2443
|
+
}), Yt(K, 0, !0);
|
|
2444
|
+
let oe = r.getAttribute("data-chart-tooltip"), se = oe === "false" ? !1 : oe === "auto" ? "auto" : oe !== null || i.tooltip;
|
|
2445
|
+
return se && Sn(K, i, se === "auto"), nr(K, i), K;
|
|
2446
|
+
}, Wn = {
|
|
2351
2447
|
grow: "grow",
|
|
2352
2448
|
sweep: "sweep"
|
|
2353
|
-
},
|
|
2449
|
+
}, Gn = [
|
|
2354
2450
|
"never",
|
|
2355
2451
|
"auto",
|
|
2356
2452
|
"print",
|
|
2357
2453
|
"always"
|
|
2358
|
-
],
|
|
2359
|
-
let i = t === "line" || t === "area", a =
|
|
2454
|
+
], Kn = (e, t, n, r) => {
|
|
2455
|
+
let i = t === "line" || t === "area", a = Wn[e.getAttribute("data-chart-animate") ?? ""] ?? Wn[String(n.animate)];
|
|
2360
2456
|
return i ? r ? "sweep" : a ?? "sweep" : t === "donut" || t === "waterfall" ? a ?? "grow" : "grow";
|
|
2361
|
-
},
|
|
2457
|
+
}, qn = (e) => {
|
|
2362
2458
|
let t = getComputedStyle(e).getPropertyValue("--tablechart-value-align").trim();
|
|
2363
2459
|
return t === "start" || t === "center" || t === "end" ? t : null;
|
|
2364
|
-
},
|
|
2460
|
+
}, Jn = (e, t, n) => e.dataset.chartLabels === "inside" || e.dataset.chartLabels !== "outside" && (t.labels === "inside" || n) ? "inside" : "outside", Yn = (e, t, n, r) => {
|
|
2365
2461
|
let i = getComputedStyle(e), a = (i.getPropertyValue(n).trim() || r).match(/^(\d+(?:\.\d+)?)(px|%|em|rem)$/);
|
|
2366
2462
|
if (!a) return null;
|
|
2367
2463
|
let o = Number(a[1]);
|
|
2368
2464
|
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;
|
|
2369
|
-
},
|
|
2465
|
+
}, Xn = (e, t) => Yn(e, t, "--tablechart-bar-max", "60px") ?? Infinity, Zn = (e, t) => {
|
|
2370
2466
|
let n = e.getBoundingClientRect(), r = O / n.width, i = getComputedStyle(e), a = Number.parseFloat(i.lineHeight) / Number.parseFloat(i.fontSize) || 1.2;
|
|
2371
2467
|
return (e) => {
|
|
2372
2468
|
if (e.dataset.place === "none" || e.hidden || e.hasAttribute("data-left-out")) return [];
|
|
@@ -2381,21 +2477,21 @@ var Xe = (e) => {
|
|
|
2381
2477
|
style: s.join("; ")
|
|
2382
2478
|
})] : [];
|
|
2383
2479
|
};
|
|
2384
|
-
},
|
|
2480
|
+
}, Qn = [
|
|
2385
2481
|
"first",
|
|
2386
2482
|
"last",
|
|
2387
2483
|
"highest",
|
|
2388
2484
|
"lowest",
|
|
2389
2485
|
"outliers"
|
|
2390
|
-
],
|
|
2486
|
+
], $n = (t, n) => {
|
|
2391
2487
|
let r = (t.getAttribute("data-chart-values") ?? n.values).trim().toLowerCase().split(/\s+/).filter(Boolean);
|
|
2392
2488
|
for (let t of r) [
|
|
2393
2489
|
"auto",
|
|
2394
2490
|
"all",
|
|
2395
2491
|
"none",
|
|
2396
|
-
...
|
|
2397
|
-
].includes(t) || console.warn(`[${e}] data-chart-values knows no "${t}". It takes auto, all, none, ${
|
|
2398
|
-
let i = r.filter((e) =>
|
|
2492
|
+
...Qn
|
|
2493
|
+
].includes(t) || console.warn(`[${e}] data-chart-values knows no "${t}". It takes auto, all, none, ${Qn.join(", ")}.`);
|
|
2494
|
+
let i = r.filter((e) => Qn.includes(e));
|
|
2399
2495
|
return r.includes("all") ? {
|
|
2400
2496
|
mode: "all",
|
|
2401
2497
|
keys: []
|
|
@@ -2404,19 +2500,19 @@ var Xe = (e) => {
|
|
|
2404
2500
|
keys: []
|
|
2405
2501
|
} : r.includes("auto") || !i.length ? {
|
|
2406
2502
|
mode: "auto",
|
|
2407
|
-
keys: i.length ? i :
|
|
2503
|
+
keys: i.length ? i : Qn
|
|
2408
2504
|
} : {
|
|
2409
2505
|
mode: "set",
|
|
2410
2506
|
keys: i
|
|
2411
2507
|
};
|
|
2412
|
-
},
|
|
2413
|
-
let i = e.getAttribute("data-chart-table"), a = i &&
|
|
2508
|
+
}, er = ({ figure: e, rows: t, series: n }, r) => {
|
|
2509
|
+
let i = e.getAttribute("data-chart-table"), a = i && Gn.includes(i) ? i : r.table;
|
|
2414
2510
|
a === "never" ? e.removeAttribute("data-table") : e.setAttribute("data-table", a);
|
|
2415
2511
|
let o = e.getAttribute("data-chart-summary");
|
|
2416
|
-
e.setAttribute("data-summary", o &&
|
|
2417
|
-
},
|
|
2512
|
+
e.setAttribute("data-summary", o && Gn.includes(o) ? o : r.summary), e.toggleAttribute("data-long", t.length * n.filter((e) => !e.group).length > r.tablelimit);
|
|
2513
|
+
}, tr = (t, n) => {
|
|
2418
2514
|
let { plot: r, svg: i, rows: l, type: m, values: g, series: _, seriesValues: y, names: b, annotations: x } = t;
|
|
2419
|
-
|
|
2515
|
+
er(t, n);
|
|
2420
2516
|
let S = getComputedStyle(t.figure);
|
|
2421
2517
|
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());
|
|
2422
2518
|
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;
|
|
@@ -2424,7 +2520,7 @@ var Xe = (e) => {
|
|
|
2424
2520
|
r.style.margin = "", j && (j.style.marginLeft = "");
|
|
2425
2521
|
let e = r.clientWidth;
|
|
2426
2522
|
if (!e) return !1;
|
|
2427
|
-
let i = m.segments?.(l) ?? [], a = t.stacked ? l.flatMap((e) => Object.values(
|
|
2523
|
+
let i = m.segments?.(l) ?? [], a = t.stacked ? l.flatMap((e) => Object.values(Re(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, -q(a.map((e) => -e))), s = Math.max(0, q(a)), c = Number.parseFloat(getComputedStyle(r).fontSize) || 16, { chartScaleY: u, chartScale: d } = t.figure.dataset, f = Tt(u ?? d);
|
|
2428
2524
|
if (f && f.length > 2) M = {
|
|
2429
2525
|
min: f[0],
|
|
2430
2526
|
max: f[f.length - 1],
|
|
@@ -2432,24 +2528,24 @@ var Xe = (e) => {
|
|
|
2432
2528
|
ticks: f
|
|
2433
2529
|
};
|
|
2434
2530
|
else {
|
|
2435
|
-
let [t, n] = f ?? [o, s], r =
|
|
2531
|
+
let [t, n] = f ?? [o, s], r = St(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);
|
|
2436
2532
|
M = {
|
|
2437
2533
|
min: a,
|
|
2438
2534
|
max: l,
|
|
2439
2535
|
step: r,
|
|
2440
|
-
ticks:
|
|
2536
|
+
ticks: Ct(a, l, r)
|
|
2441
2537
|
};
|
|
2442
2538
|
}
|
|
2443
2539
|
A.ticks.textContent = "";
|
|
2444
|
-
let p = l.find((e) => !e.missing), h =
|
|
2540
|
+
let p = l.find((e) => !e.missing), h = q(M.ticks.map((e) => ie(String(e))));
|
|
2445
2541
|
for (let e of M.ticks) {
|
|
2446
2542
|
let t = L(E, A.ticks);
|
|
2447
|
-
t.dataset.value = String(e), t.dataset.place = "none", p?.prefix && (t.dataset.prefix = p.prefix), p?.suffix && (t.dataset.suffix = p.suffix),
|
|
2543
|
+
t.dataset.value = String(e), t.dataset.place = "none", p?.prefix && (t.dataset.prefix = p.prefix), p?.suffix && (t.dataset.suffix = p.suffix), rr(t, h, n.locale);
|
|
2448
2544
|
}
|
|
2449
2545
|
if (A.numbers) {
|
|
2450
2546
|
let e = Array.from(A.ticks.children);
|
|
2451
2547
|
for (let t of e) delete t.dataset.place;
|
|
2452
|
-
|
|
2548
|
+
_e(e), k ? r.style.marginBottom = `${(e[0] ? J(e[0]).height : 0) + 6}px` : (r.style.marginLeft = `${q([0, ...e.map((e) => J(e).width)]) + 10}px`, j && (j.style.marginLeft = r.style.marginLeft));
|
|
2453
2549
|
}
|
|
2454
2550
|
}
|
|
2455
2551
|
let N = r.clientWidth;
|
|
@@ -2459,39 +2555,39 @@ var Xe = (e) => {
|
|
|
2459
2555
|
let B = m.numbers === !1 ? g.slice(0, 1) : [...y.flat(), ...t.totals];
|
|
2460
2556
|
for (let e of B) delete e.dataset.place, e.removeAttribute("data-left-out"), e.removeAttribute("data-cut");
|
|
2461
2557
|
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");
|
|
2462
|
-
let V = m.axes ? t.axes : null,
|
|
2558
|
+
let V = m.axes ? t.axes : null, H = [];
|
|
2463
2559
|
if (V) {
|
|
2464
|
-
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 = [
|
|
2465
|
-
|
|
2466
|
-
let r = a[0]?.cells[i[t]], o =
|
|
2560
|
+
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 = [Tt(o), Tt(s ?? c)];
|
|
2561
|
+
H = i.map((t, n) => Et(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) => {
|
|
2562
|
+
let r = a[0]?.cells[i[t]], o = q(e.ticks.map((e) => ie(String(e))));
|
|
2467
2563
|
for (let i of e.ticks) {
|
|
2468
2564
|
let e = L(E, V.ticks);
|
|
2469
|
-
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),
|
|
2565
|
+
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), rr(e, o, n.locale);
|
|
2470
2566
|
}
|
|
2471
2567
|
});
|
|
2472
2568
|
}
|
|
2473
|
-
let
|
|
2474
|
-
|
|
2569
|
+
let W = V ? Array.from(V.ticks.children) : [];
|
|
2570
|
+
_e([
|
|
2475
2571
|
...y.flat(),
|
|
2476
2572
|
...t.totals,
|
|
2477
2573
|
...b,
|
|
2478
2574
|
...t.categories,
|
|
2479
2575
|
...x.map((e) => e.badge),
|
|
2480
2576
|
...V?.titles ?? [],
|
|
2481
|
-
...
|
|
2577
|
+
...W
|
|
2482
2578
|
]);
|
|
2483
|
-
let
|
|
2579
|
+
let ee = (g[0] ? J(g[0]).height : 0) * I;
|
|
2484
2580
|
m.numbers === !1 && g[0] && (g[0].dataset.place = "none");
|
|
2485
|
-
let re = x[0]?.badge ?
|
|
2486
|
-
labelHeight:
|
|
2487
|
-
nameHeight: Math.max(0,
|
|
2581
|
+
let re = x[0]?.badge ? J(x[0].badge).height * I : 0, G = Math.max(z, Yn(t.figure, I, "--tablechart-min-height", "200px") ?? 0, m.minHeight?.({
|
|
2582
|
+
labelHeight: ee,
|
|
2583
|
+
nameHeight: Math.max(0, q(t.categories.map((e) => J(e).height))) * I,
|
|
2488
2584
|
unit: I,
|
|
2489
2585
|
rows: l.length,
|
|
2490
2586
|
series: _.length,
|
|
2491
2587
|
stacked: t.stacked,
|
|
2492
|
-
labels:
|
|
2493
|
-
}) ?? 0),
|
|
2494
|
-
let t =
|
|
2588
|
+
labels: Jn(t.figure, n, _.some((e) => e.chart))
|
|
2589
|
+
}) ?? 0), K = t.stacked ? l.map((e) => {
|
|
2590
|
+
let t = ze(e, _.length);
|
|
2495
2591
|
return {
|
|
2496
2592
|
...e,
|
|
2497
2593
|
value: t,
|
|
@@ -2500,121 +2596,122 @@ var Xe = (e) => {
|
|
|
2500
2596
|
value: t
|
|
2501
2597
|
} : e)
|
|
2502
2598
|
};
|
|
2503
|
-
}) : l,
|
|
2599
|
+
}) : l, ae = (m.segments ?? ((e) => e.map((e) => ({
|
|
2504
2600
|
...e,
|
|
2505
2601
|
from: 0,
|
|
2506
2602
|
to: e.value,
|
|
2507
2603
|
kind: "bar"
|
|
2508
|
-
}))))(t.stacked ?
|
|
2604
|
+
}))))(t.stacked ? K.map((e) => ({
|
|
2509
2605
|
...e,
|
|
2510
2606
|
cells: [e.cells[0]]
|
|
2511
2607
|
})) : l), oe = {
|
|
2512
|
-
labelHeight:
|
|
2608
|
+
labelHeight: ee,
|
|
2513
2609
|
badgeHeight: re,
|
|
2514
2610
|
hasAnnotations: x.length > 0,
|
|
2515
2611
|
unit: I,
|
|
2516
2612
|
series: _.length,
|
|
2517
2613
|
focused: _.some((e) => e.focus),
|
|
2518
2614
|
stacked: t.stacked
|
|
2519
|
-
}, se = Math.max(((e) => t.stacked ? e(l.map((e) =>
|
|
2615
|
+
}, se = Math.max(((e) => t.stacked ? e(l.map((e) => Re(e, _.length, m.running).top)) : e([...ae.flatMap((e) => [
|
|
2520
2616
|
e.from,
|
|
2521
2617
|
e.to,
|
|
2522
2618
|
e.value
|
|
2523
|
-
]), ...l.flatMap((e) => e.cells.slice(0, _.length).map((e) => e.value))]))(
|
|
2619
|
+
]), ...l.flatMap((e) => e.cells.slice(0, _.length).map((e) => e.value))]))(q), 0), ce = ae.some((e) => e.kind === "up" || e.kind === "down") ? ae.flatMap((e) => [e.from, e.to]) : t.stacked ? l.map((e) => Re(e, _.length, m.running).bottom) : l.flatMap((e) => e.cells.slice(0, _.length).map((e) => e.value)), le = Math.min(-q(ce.map((e) => -e)), 0), ue = _.flatMap((e, t) => e.chart ? [t] : []), de = l.some((e) => e.note) ? re + 4 * I : 0, fe = Math.max(m.headroom?.(oe) ?? ee, ue.length ? ct.headroom?.(oe) ?? 0 : 0) + de, pe = 2 * I + (m.footroom?.(oe) ?? 0) + (le < 0 ? ee + 4 * I : 0), me = G - fe - pe, he = M ? Math.max(M.max, se) : se * 1.02, ge = M ? Math.min(M.min, le) : le * 1.02, ve = x.find((e) => e.spec.getAttribute("data-annotation") === "axis-break")?.spec, ye = (e) => {
|
|
2524
2620
|
let t = Number.parseFloat(ve?.getAttribute(e) ?? "");
|
|
2525
2621
|
return Number.isFinite(t) ? t : null;
|
|
2526
|
-
},
|
|
2527
|
-
if (ve && (
|
|
2528
|
-
let t =
|
|
2622
|
+
}, be = ye("data-from") ?? ye("data-at"), xe = ye("data-to"), Ce = null;
|
|
2623
|
+
if (ve && (be !== null || xe !== null)) {
|
|
2624
|
+
let t = be ?? 0, n = xe ?? he, r = xe === null ? t : be === null ? n : (t + n) / 2, i = ve.getAttribute("data-size"), a = i?.match(/^\s*(\d+(?:\.\d+)?)\s*%\s*$/);
|
|
2529
2625
|
i !== null && !a && console.warn(`[${e}] data-size="${i}" is not a percentage, such as 30%. Using the default.`);
|
|
2530
|
-
let o = Math.min(Math.max(a ? Number(a[1]) / 100 :
|
|
2531
|
-
m.breakable ? le < 0 ? console.warn(`[${e}] A chart with values below zero cannot break its scale.`) : t < 0 || n <= t || n >
|
|
2626
|
+
let o = Math.min(Math.max(a ? Number(a[1]) / 100 : xe === null ? .22 : .3, .05), .8), s = ae.filter((e) => (e.kind === "up" || e.kind === "down") && Math.max(e.from, e.to) > t && Math.min(e.from, e.to) < n);
|
|
2627
|
+
m.breakable ? le < 0 ? console.warn(`[${e}] A chart with values below zero cannot break its scale.`) : t < 0 || n <= t || n > he || t === 0 && n === he ? console.warn(`[${e}] A break from ${t} to ${n} does not fit a scale that runs from 0 to ${se}.`) : s.length ? console.warn(`[${e}] A break from ${t} to ${n} would cut a step that floats. Keep it below or above the steps.`) : Ce = {
|
|
2532
2628
|
lo: t,
|
|
2533
2629
|
hi: n,
|
|
2534
2630
|
gap: r,
|
|
2535
2631
|
share: o
|
|
2536
2632
|
} : console.warn(`[${e}] This kind of chart cannot break its scale.`);
|
|
2537
2633
|
}
|
|
2538
|
-
let
|
|
2539
|
-
if (
|
|
2540
|
-
let { lo: e, hi: t, gap: n, share: r } =
|
|
2541
|
-
|
|
2634
|
+
let we = Ce ? Ce.gap : null, Te = (Ce && Yn(t.figure, I, "--tablechart-break-gap", "")) ?? 13, Oe = G - pe, ke = he - ge || 1, Ae = (e) => Oe - (e - ge) / ke * me;
|
|
2635
|
+
if (Ce) {
|
|
2636
|
+
let { lo: e, hi: t, gap: n, share: r } = Ce, i = me * r, a = (me - i - Te) / (e + (he - t)), o = i / (t - e);
|
|
2637
|
+
Ae = (r) => r <= e ? Oe - r * a : r <= n ? Oe - e * a - (r - e) * o : r <= t ? Oe - e * a - (r - e) * o - Te : Oe - e * a - i - Te - (r - t) * a;
|
|
2542
2638
|
}
|
|
2543
|
-
let
|
|
2639
|
+
let je, Me, Ne = [];
|
|
2544
2640
|
if (V) {
|
|
2545
|
-
let e = 6 * I, [t, n] = V.titles, r = (e) => e ?
|
|
2546
|
-
|
|
2641
|
+
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 = W.filter((e) => e.dataset.axis === "x"), o = W.filter((e) => e.dataset.axis === "y"), s = i(W[0]), c = r(n) + q([0, ...o.map(r)]) + 2 * e, l = s / 2;
|
|
2642
|
+
Me = [
|
|
2547
2643
|
c,
|
|
2548
2644
|
l,
|
|
2549
|
-
O - c -
|
|
2645
|
+
O - c - q([0, ...a.map(r)]) / 2,
|
|
2550
2646
|
G - l - i(t) - s - 2 * e
|
|
2551
2647
|
];
|
|
2552
|
-
let [u, d, f, p] =
|
|
2553
|
-
|
|
2648
|
+
let [u, d, f, p] = Me, [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;
|
|
2649
|
+
je = g, Ae = _;
|
|
2554
2650
|
let v = (e) => r(a.find((t) => Number(t.dataset.value) === e));
|
|
2555
|
-
|
|
2556
|
-
for (let t of
|
|
2557
|
-
let n = Number(t.dataset.value), r = t.dataset.axis === "x" ? 0 : 1, i =
|
|
2651
|
+
Ne = [Dt(m, (t) => t.every((n, r) => !r || g(n) - g(t[r - 1]) > (v(n) + v(t[r - 1])) / 2 + e)).ticks, Dt(h, (t) => t.every((n, r) => !r || _(t[r - 1]) - _(n) > s + e / 2)).ticks];
|
|
2652
|
+
for (let t of W) {
|
|
2653
|
+
let n = Number(t.dataset.value), r = t.dataset.axis === "x" ? 0 : 1, i = Ne[r].includes(n);
|
|
2558
2654
|
t.dataset.place = i ? r ? "before" : "below" : "none", i && R(t, r ? u - e : g(n), r ? _(n) : d + p + e, O, G);
|
|
2559
2655
|
}
|
|
2560
2656
|
t && R(t, u + f / 2, G - i(t), O, G), n && R(n, 0, d + p / 2, O, G);
|
|
2561
2657
|
}
|
|
2562
|
-
let
|
|
2563
|
-
|
|
2564
|
-
let
|
|
2565
|
-
t.rowAt = m.centre ? null : m.categories === "beside" ? (e, t) =>
|
|
2566
|
-
let
|
|
2658
|
+
let Pe = $n(t.figure, n), Fe = In(t.figure, n), Ie = !!m.running && b.length > 0 && !t.stacked && Fe !== "step" && Pe.mode === "set" && Pe.keys.includes("last"), Le = Ie ? q(y.flat().map((e) => J(e).width)) * I : 0, Be = b.length ? q(b.map((e) => J(e).width)) * I + 12 * I + Le : 0, Ve = t.categories[0]?.parentElement;
|
|
2659
|
+
Ve && (Ve.style.paddingRight = Be ? `${Be / O * 100}%` : "");
|
|
2660
|
+
let He = (O - Be) / l.length, Ue = (e) => (e + .5) * He, We = (e) => e >= 0 && e < l.length ? e : null;
|
|
2661
|
+
t.rowAt = m.centre ? null : m.categories === "beside" ? (e, t) => We(Math.floor(t * I / (G / l.length))) : (e) => We(Math.floor(e * I / He));
|
|
2662
|
+
let Ge = He / O * 100, Ke = 100 / l.length;
|
|
2567
2663
|
if (t.rowBox = m.categories === "beside" ? (e) => [
|
|
2568
2664
|
0,
|
|
2569
|
-
e *
|
|
2665
|
+
e * Ke,
|
|
2570
2666
|
100,
|
|
2571
|
-
|
|
2667
|
+
Ke
|
|
2572
2668
|
] : (e) => [
|
|
2573
|
-
e *
|
|
2669
|
+
e * Ge,
|
|
2574
2670
|
0,
|
|
2575
|
-
|
|
2671
|
+
Ge,
|
|
2576
2672
|
100
|
|
2577
|
-
], i.setAttribute("viewBox", `0 0 ${O} ${P(G)}`), i.textContent = "",
|
|
2578
|
-
let [e, r, a, o] =
|
|
2579
|
-
|
|
2673
|
+
], i.setAttribute("viewBox", `0 0 ${O} ${P(G)}`), i.textContent = "", Me && je) {
|
|
2674
|
+
let [e, r, a, o] = Me, [s, c] = Ne, l = je;
|
|
2675
|
+
Pn(t.figure, "data-chart-grid", n.grid) && i.appendChild(F("path", {
|
|
2580
2676
|
class: D,
|
|
2581
|
-
d: [...s.map((e) => `M${P(l(e))},${P(r)}V${P(r + o)}`), ...c.map((t) => `M${P(e)},${P(
|
|
2677
|
+
d: [...s.map((e) => `M${P(l(e))},${P(r)}V${P(r + o)}`), ...c.map((t) => `M${P(e)},${P(Ae(t))}H${P(e + a)}`)].join("")
|
|
2582
2678
|
})), i.appendChild(F("path", {
|
|
2583
2679
|
class: T,
|
|
2584
2680
|
d: [
|
|
2585
2681
|
`M${P(e)},${P(r)}V${P(r + o)}H${P(e + a)}`,
|
|
2586
2682
|
...s.map((e) => `M${P(l(e))},${P(r + o)}v${P(4 * I)}`),
|
|
2587
|
-
...c.map((t) => `M${P(e)},${P(
|
|
2683
|
+
...c.map((t) => `M${P(e)},${P(Ae(t))}h${P(-4 * I)}`)
|
|
2588
2684
|
].join("")
|
|
2589
2685
|
}));
|
|
2590
2686
|
}
|
|
2591
2687
|
t.checks = [];
|
|
2592
2688
|
let Y = {
|
|
2593
2689
|
rows: l,
|
|
2594
|
-
segments:
|
|
2595
|
-
cx:
|
|
2596
|
-
y:
|
|
2597
|
-
x:
|
|
2598
|
-
frame:
|
|
2599
|
-
length: (e, n) =>
|
|
2600
|
-
barWidth: Math.min(
|
|
2601
|
-
barMax:
|
|
2690
|
+
segments: ae,
|
|
2691
|
+
cx: Ue,
|
|
2692
|
+
y: Ae,
|
|
2693
|
+
x: je,
|
|
2694
|
+
frame: Me,
|
|
2695
|
+
length: (e, n) => Yn(t.figure, I, e, n),
|
|
2696
|
+
barWidth: Math.min(He * n.barfill, Xn(t.figure, I)),
|
|
2697
|
+
barMax: Xn(t.figure, I),
|
|
2698
|
+
barRadius: Yn(t.figure, I, "--tablechart-bar-radius", "0px") ?? 0,
|
|
2602
2699
|
height: G,
|
|
2603
2700
|
unit: I,
|
|
2604
|
-
labelHeight:
|
|
2701
|
+
labelHeight: ee,
|
|
2605
2702
|
badgeHeight: re,
|
|
2606
2703
|
after: l.length,
|
|
2607
2704
|
note: 0,
|
|
2608
|
-
labels:
|
|
2609
|
-
insideAlign:
|
|
2610
|
-
breakAt:
|
|
2611
|
-
squeeze:
|
|
2612
|
-
breakGap:
|
|
2705
|
+
labels: Jn(t.figure, n, ue.length > 0),
|
|
2706
|
+
insideAlign: qn(t.figure),
|
|
2707
|
+
breakAt: we,
|
|
2708
|
+
squeeze: Ce,
|
|
2709
|
+
breakGap: Te,
|
|
2613
2710
|
domain: M ? [M.min, M.max] : null,
|
|
2614
2711
|
stacked: t.stacked,
|
|
2615
|
-
shape:
|
|
2616
|
-
pick:
|
|
2617
|
-
numbersAtEnd:
|
|
2712
|
+
shape: Fe,
|
|
2713
|
+
pick: Pe,
|
|
2714
|
+
numbersAtEnd: Ie,
|
|
2618
2715
|
totals: t.totals,
|
|
2619
2716
|
svg: i,
|
|
2620
2717
|
plot: r,
|
|
@@ -2631,14 +2728,14 @@ var Xe = (e) => {
|
|
|
2631
2728
|
lineHoles: []
|
|
2632
2729
|
};
|
|
2633
2730
|
r.style.setProperty("--count", String(Math.max(1, ...l.map((e) => e.slot + 1))));
|
|
2634
|
-
let
|
|
2731
|
+
let qe = (e) => {
|
|
2635
2732
|
let t = (t) => ({
|
|
2636
2733
|
...t,
|
|
2637
2734
|
...t.cells[e] ?? t.cells[0]
|
|
2638
2735
|
});
|
|
2639
2736
|
return {
|
|
2640
2737
|
rows: l.map(t),
|
|
2641
|
-
segments:
|
|
2738
|
+
segments: ae.map((e) => {
|
|
2642
2739
|
let n = t(e);
|
|
2643
2740
|
return e.kind === "bar" ? {
|
|
2644
2741
|
...n,
|
|
@@ -2653,24 +2750,24 @@ var Xe = (e) => {
|
|
|
2653
2750
|
m.draw({
|
|
2654
2751
|
...Y,
|
|
2655
2752
|
own: e,
|
|
2656
|
-
...e.length === 1 &&
|
|
2657
|
-
}),
|
|
2753
|
+
...e.length === 1 && qe(e[0])
|
|
2754
|
+
}), ct.draw({
|
|
2658
2755
|
...Y,
|
|
2659
2756
|
own: ue
|
|
2660
2757
|
});
|
|
2661
2758
|
} else m.draw(Y);
|
|
2662
2759
|
Y.rowAt && (t.rowAt = Y.rowAt), t.pointOf = Y.pointOf ?? null;
|
|
2663
|
-
let
|
|
2664
|
-
for (let e of t.figure.querySelectorAll(`.${f}`)) e.style.setProperty("--i", String(Math.min(l[l.length - 1].slot,
|
|
2665
|
-
if (!t.stacked && !r.hasAttribute("data-grouped")) for (let e of y)
|
|
2760
|
+
let Je = Number(r.style.getPropertyValue("--count")) || l.length;
|
|
2761
|
+
for (let e of t.figure.querySelectorAll(`.${f}`)) e.style.setProperty("--i", String(Math.min(l[l.length - 1].slot, Je - 1)));
|
|
2762
|
+
if (!t.stacked && !r.hasAttribute("data-grouped")) for (let e of y) Ee(e, I, O), De(e, I, O, G);
|
|
2666
2763
|
if (A && M) {
|
|
2667
|
-
let e = 6 * I, r = k && Y.x ? Y.x :
|
|
2764
|
+
let e = 6 * I, r = k && Y.x ? Y.x : Ae, a = Array.from(A.ticks.children), o = (e) => J(a.find((t) => Number(t.dataset.value) === e) ?? a[0]), s = Dt(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) => !Ce || e <= Ce.lo || e >= Ce.hi);
|
|
2668
2765
|
for (let t of a) {
|
|
2669
2766
|
let n = Number(t.dataset.value), i = A.numbers && s.includes(n);
|
|
2670
2767
|
t.dataset.place = i ? k ? "below" : "before" : "none", i && R(t, k ? r(n) : -e, k ? G + e : r(n), O, G);
|
|
2671
2768
|
}
|
|
2672
|
-
let c = O -
|
|
2673
|
-
|
|
2769
|
+
let c = O - Be;
|
|
2770
|
+
Pn(t.figure, "data-chart-grid", n.grid) && i.prepend(F("path", {
|
|
2674
2771
|
class: D,
|
|
2675
2772
|
d: s.map((e) => k ? `M${P(r(e))},0V${P(G)}` : `M0,${P(r(e))}H${P(c)}`).join("")
|
|
2676
2773
|
})), A.numbers && i.appendChild(F("path", {
|
|
@@ -2684,59 +2781,59 @@ var Xe = (e) => {
|
|
|
2684
2781
|
n.type.draw(n.spec, n.badge, {
|
|
2685
2782
|
...Y,
|
|
2686
2783
|
...t.stacked && {
|
|
2687
|
-
rows:
|
|
2784
|
+
rows: K,
|
|
2688
2785
|
...t.totals.length && { values: t.totals }
|
|
2689
2786
|
},
|
|
2690
|
-
...i > 0 && !t.stacked &&
|
|
2787
|
+
...i > 0 && !t.stacked && qe(i),
|
|
2691
2788
|
after: t.plan ? n.after : Math.min(n.after, Number(r.style.getPropertyValue("--count")) || n.after),
|
|
2692
2789
|
note: e + 1
|
|
2693
2790
|
});
|
|
2694
2791
|
}
|
|
2695
|
-
|
|
2792
|
+
Jt(t);
|
|
2696
2793
|
for (let e of t.figure.querySelectorAll(`.${p}`)) {
|
|
2697
2794
|
let n = Array.from(e.children);
|
|
2698
2795
|
if (t.plan) for (let e of n) e.style.getPropertyValue("--step") || e.style.setProperty("--i", "0");
|
|
2699
2796
|
let r = n.map((e) => Number.parseFloat(e.style.getPropertyValue("--step")));
|
|
2700
2797
|
e.style.setProperty("--i", String(Math.min(...n.map((e) => Number(e.style.getPropertyValue("--i")) || 0)))), r.length && r.every(Number.isFinite) ? e.style.setProperty("--step", String(Math.min(...r))) : e.style.removeProperty("--step");
|
|
2701
2798
|
}
|
|
2702
|
-
let
|
|
2703
|
-
if (
|
|
2704
|
-
|
|
2799
|
+
let X = t.categories[0]?.parentElement;
|
|
2800
|
+
if (X && m.categories !== "beside" && !m.centre) {
|
|
2801
|
+
X.style.height = `${X.offsetHeight}px`, X.removeAttribute("data-thinned");
|
|
2705
2802
|
for (let e of t.categories) e.removeAttribute("data-left-out"), e.removeAttribute("data-edge");
|
|
2706
2803
|
let e = t.categories.filter((e) => e.offsetParent !== null);
|
|
2707
|
-
if (!
|
|
2804
|
+
if (!Se(X, e, (e) => ({
|
|
2708
2805
|
size: e.scrollWidth,
|
|
2709
2806
|
room: e.clientWidth
|
|
2710
2807
|
}), "--_name-fit") && e.length > 1) {
|
|
2711
|
-
let t = getComputedStyle(
|
|
2712
|
-
|
|
2713
|
-
let r =
|
|
2808
|
+
let t = getComputedStyle(X), n = (X.clientWidth - Number.parseFloat(t.paddingLeft) - Number.parseFloat(t.paddingRight)) / l.length;
|
|
2809
|
+
X.style.setProperty("--_name-fit", "1"), X.setAttribute("data-thinned", "");
|
|
2810
|
+
let r = q(e.map((e) => e.offsetWidth)), i = Math.max(Math.ceil((r + 8) / n), Math.ceil((1.5 * r + 8) / n - .5), 1);
|
|
2714
2811
|
e.forEach((e, t) => {
|
|
2715
2812
|
t % i && e.setAttribute("data-left-out", "");
|
|
2716
2813
|
});
|
|
2717
|
-
let a = e.filter((e) => !e.hasAttribute("data-left-out")), o = a[0], s = a.at(-1), c =
|
|
2814
|
+
let a = e.filter((e) => !e.hasAttribute("data-left-out")), o = a[0], s = a.at(-1), c = X.getBoundingClientRect(), u = [o, s].map((e) => e?.getBoundingClientRect());
|
|
2718
2815
|
if (o && u[0] && u[0].left < c.left && o.setAttribute("data-edge", "start"), s && s !== o && u[1] && u[1].right > c.right - Number.parseFloat(t.paddingRight)) {
|
|
2719
2816
|
s.setAttribute("data-edge", "end");
|
|
2720
2817
|
let e = a.at(-2);
|
|
2721
2818
|
e && e.getBoundingClientRect().right + 8 > s.getBoundingClientRect().left && s.setAttribute("data-left-out", "");
|
|
2722
2819
|
}
|
|
2723
2820
|
}
|
|
2724
|
-
let r = (m ===
|
|
2725
|
-
if (
|
|
2821
|
+
let r = (m === ct || m === lt) && Pn(t.figure, "data-chart-ticks", n.ticks);
|
|
2822
|
+
if (X.toggleAttribute("data-ticks", r), X.style.removeProperty("--_tick-reach"), r) {
|
|
2726
2823
|
let e = G - Number(i.querySelector(".tablechart-rule")?.getAttribute("y1") ?? G);
|
|
2727
|
-
e > 0 && e < 10 * I &&
|
|
2728
|
-
let n =
|
|
2824
|
+
e > 0 && e < 10 * I && X.style.setProperty("--_tick-reach", `${P(e / I)}px`);
|
|
2825
|
+
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;
|
|
2729
2826
|
t.categories.forEach((e, t) => {
|
|
2730
2827
|
if (e.hasAttribute("data-left-out")) e.style.removeProperty("--_tick");
|
|
2731
2828
|
else {
|
|
2732
|
-
let i = (e.getBoundingClientRect().left - n.left) / r -
|
|
2829
|
+
let i = (e.getBoundingClientRect().left - n.left) / r - X.clientLeft;
|
|
2733
2830
|
e.style.setProperty("--_tick", `${P(o + (t + .5) * s - i)}px`);
|
|
2734
2831
|
}
|
|
2735
2832
|
});
|
|
2736
2833
|
}
|
|
2737
|
-
|
|
2834
|
+
X.style.height = "";
|
|
2738
2835
|
}
|
|
2739
|
-
let
|
|
2836
|
+
let Ye = x.flatMap(({ badge: e }) => {
|
|
2740
2837
|
if (!(e instanceof HTMLElement) || !e.offsetWidth) return [];
|
|
2741
2838
|
let t = e.offsetWidth * I, n = e.offsetHeight * I, r = Number.parseFloat(e.style.left) / 100 * O, i = Number.parseFloat(e.style.top) / 100 * G, a = getComputedStyle(e).borderTopLeftRadius, o = a.endsWith("%") ? Number.parseFloat(a) / 100 : null, s = (Number.parseFloat(a) || 0) * I;
|
|
2742
2839
|
return [F("rect", {
|
|
@@ -2751,24 +2848,24 @@ var Xe = (e) => {
|
|
|
2751
2848
|
ry: o === null ? s : n * o,
|
|
2752
2849
|
style: ["--after", "--step"].map((t) => e.style.getPropertyValue(t) && `${t}:${e.style.getPropertyValue(t)}`).filter(Boolean).join("; ")
|
|
2753
2850
|
})];
|
|
2754
|
-
}),
|
|
2755
|
-
if (
|
|
2851
|
+
}), Xe = i.querySelector(`.${D}`), Z = Array.from(i.querySelectorAll(`.${o}`)), Ze = [...Xe ? [Xe] : [], ...i.querySelectorAll(`:scope > .${s}`)], Qe = Zn(r, I), $e = t.figure.getAttribute("data-animate") === "grow", et = y.flat().filter((e) => e.hasAttribute("data-cut")).flatMap(Qe), tt = [...ue.flatMap((e) => y[e].flatMap(Qe)), ...$e ? et : []];
|
|
2852
|
+
if (Ze.length || Z.length) {
|
|
2756
2853
|
let e = [
|
|
2757
2854
|
...y.flat(),
|
|
2758
2855
|
...t.totals,
|
|
2759
2856
|
...m.categories === "beside" ? t.categories : []
|
|
2760
|
-
].flatMap(
|
|
2857
|
+
].flatMap(Qe), n = (e) => [
|
|
2761
2858
|
"x",
|
|
2762
2859
|
"y",
|
|
2763
2860
|
"width",
|
|
2764
2861
|
"height"
|
|
2765
2862
|
].map((t) => Number(e.getAttribute(t)));
|
|
2766
|
-
for (let t of
|
|
2767
|
-
for (let t of
|
|
2768
|
-
let r = [...e, ...
|
|
2769
|
-
t.setAttribute("d", i.map(([e, t, i, a]) =>
|
|
2863
|
+
for (let t of Z) jn(t, [...e, ...Ye].map(n));
|
|
2864
|
+
for (let t of Ze) {
|
|
2865
|
+
let r = [...e, ...Ye], i = Mn(t);
|
|
2866
|
+
t.setAttribute("d", i.map(([e, t, i, a]) => An(e, t, i, a, r.map(n))).join(""));
|
|
2770
2867
|
for (let e of r) {
|
|
2771
|
-
let r =
|
|
2868
|
+
let r = Nn(i, n(e)), a = e.dataset.for === "badge" ? "badge" : "";
|
|
2772
2869
|
r && t.after(F("path", {
|
|
2773
2870
|
class: t.getAttribute("class") ?? "tablechart-grid",
|
|
2774
2871
|
"data-gap": a,
|
|
@@ -2778,57 +2875,57 @@ var Xe = (e) => {
|
|
|
2778
2875
|
}
|
|
2779
2876
|
}
|
|
2780
2877
|
}
|
|
2781
|
-
if (
|
|
2878
|
+
if (te(i, Ye, O, G, Array.from(i.querySelectorAll(`.${a}, .${c}`))), !$e && (Y.lineHoles.length || et.length)) {
|
|
2782
2879
|
let e = Array.from(i.querySelectorAll(`.${u}`)).map((e) => {
|
|
2783
2880
|
let t = F("g", {});
|
|
2784
2881
|
return e.before(t), t.append(e), t;
|
|
2785
2882
|
});
|
|
2786
|
-
|
|
2883
|
+
te(i, [...Y.lineHoles, ...et], O, G, [...e, ...i.querySelectorAll(`.${d}`)]);
|
|
2787
2884
|
}
|
|
2788
|
-
let
|
|
2885
|
+
let nt = [
|
|
2789
2886
|
o,
|
|
2790
2887
|
s,
|
|
2791
2888
|
a,
|
|
2792
2889
|
c,
|
|
2793
2890
|
D
|
|
2794
2891
|
];
|
|
2795
|
-
|
|
2796
|
-
let
|
|
2892
|
+
ne(i, [...Ye, ...tt], O, G, void 0, nt.map((e) => `.${e}`).join(", ")), t.figure.hasAttribute("data-animate") && !t.figure.hasAttribute("data-steps") && !t.figure.classList.contains("is-shown") && cr(i);
|
|
2893
|
+
let rt = (e) => e.dataset.missing !== void 0 || m.centre && l[Number(e.dataset.row) - 1]?.isTotal, it = (e) => e.dataset.place !== "none" && !e.hasAttribute("data-left-out"), at = (e, t) => {
|
|
2797
2894
|
let n = Number(e.dataset.row);
|
|
2798
|
-
return t.some((e) =>
|
|
2895
|
+
return t.some((e) => it(e) && Number(e.dataset.row) <= n && n <= Number(e.dataset.rowEnd ?? e.dataset.row));
|
|
2799
2896
|
};
|
|
2800
|
-
return t.figure.toggleAttribute("data-left-out", (m.columns ? [t.categories] : [...y, t.totals]).some((e) => e.some((t) => !
|
|
2801
|
-
},
|
|
2897
|
+
return t.figure.toggleAttribute("data-left-out", (m.columns ? [t.categories] : [...y, t.totals]).some((e) => e.some((t) => !rt(t) && !it(t) && !at(t, e)))), Y.barRadius && U(i, Y.barRadius), Lt(t.figure), Ut(t.figure), Wt(t.figure), !0;
|
|
2898
|
+
}, nr = (e, t) => {
|
|
2802
2899
|
let n = [
|
|
2803
2900
|
...e.seriesValues.flat(),
|
|
2804
2901
|
...e.totals,
|
|
2805
2902
|
...e.totalCell ? [e.totalCell] : []
|
|
2806
2903
|
];
|
|
2807
|
-
for (let r of e.centre ? [...n, e.centre] : n) r.dataset.missing === void 0 ?
|
|
2808
|
-
},
|
|
2809
|
-
let { prefix: r = "", suffix: i = "" } = e.dataset, [a, o] =
|
|
2904
|
+
for (let r of e.centre ? [...n, e.centre] : n) r.dataset.missing === void 0 ? rr(r, r.dataset.decimals ? Number(r.dataset.decimals) : e.decimals, t.locale) : r.textContent = r.dataset.missing;
|
|
2905
|
+
}, rr = (e, t, n) => {
|
|
2906
|
+
let { prefix: r = "", suffix: i = "" } = e.dataset, [a, o] = oe(Number.parseFloat(e.dataset.value || "0"), t, n);
|
|
2810
2907
|
if (e.textContent = r + (r ? a : "") + o + i, a && !r) {
|
|
2811
2908
|
let t = document.createElement("span");
|
|
2812
2909
|
t.className = "tablechart-minus", t.textContent = a, e.prepend(t);
|
|
2813
2910
|
}
|
|
2814
|
-
},
|
|
2815
|
-
|
|
2816
|
-
},
|
|
2817
|
-
!t && !e.figure.hasAttribute("data-steps") &&
|
|
2818
|
-
|
|
2911
|
+
}, ir = (e) => {
|
|
2912
|
+
Cn(e), e.plot.remove(), e.categories[0]?.parentElement?.remove(), e.figure.querySelector(`:scope > .${p}`)?.remove(), e.controls?.remove();
|
|
2913
|
+
}, ar = (e, t, n = !1) => {
|
|
2914
|
+
!t && !e.figure.hasAttribute("data-steps") && cr(e.svg), e.figure.classList.remove(C), n ? (e.figure.classList.add(S), e.figure.classList.toggle(b, t), e.figure.offsetWidth, t && lr(e.svg), e.figure.classList.toggle(C, t), requestAnimationFrame(() => e.figure.classList.remove(S))) : (e.figure.classList.toggle(b, t), t && requestAnimationFrame(() => requestAnimationFrame(() => {
|
|
2915
|
+
sr(e.figure, e.svg), or(e.figure);
|
|
2819
2916
|
})));
|
|
2820
|
-
},
|
|
2917
|
+
}, or = (e) => {
|
|
2821
2918
|
let t = e.getAnimations({ subtree: !0 }).map((e) => e.finished.catch(() => void 0));
|
|
2822
2919
|
Promise.all(t).then(() => {
|
|
2823
2920
|
e.classList.contains("is-shown") && e.classList.add(C);
|
|
2824
2921
|
});
|
|
2825
|
-
},
|
|
2826
|
-
e.classList.contains("is-shown") && Array.from(t.querySelectorAll("[data-mask]")).every((e) => !e.getAnimations({ subtree: !0 }).length) &&
|
|
2827
|
-
},
|
|
2922
|
+
}, sr = (e, t) => {
|
|
2923
|
+
e.classList.contains("is-shown") && Array.from(t.querySelectorAll("[data-mask]")).every((e) => !e.getAnimations({ subtree: !0 }).length) && lr(t);
|
|
2924
|
+
}, cr = (e) => {
|
|
2828
2925
|
for (let t of e.querySelectorAll("[mask^=\"url(#tablechart-cut-\"]")) t.dataset.mask = t.getAttribute("mask") ?? "", t.removeAttribute("mask");
|
|
2829
|
-
},
|
|
2926
|
+
}, lr = (e) => {
|
|
2830
2927
|
for (let t of e.querySelectorAll("[data-mask]")) t.setAttribute("mask", t.dataset.mask ?? ""), t.removeAttribute("data-mask");
|
|
2831
|
-
},
|
|
2928
|
+
}, ur = {
|
|
2832
2929
|
2: {
|
|
2833
2930
|
part: 3,
|
|
2834
2931
|
text: 4.5,
|
|
@@ -2847,8 +2944,8 @@ var Xe = (e) => {
|
|
|
2847
2944
|
partRule: "APCA, WCAG 3 draft",
|
|
2848
2945
|
textRule: "APCA, WCAG 3 draft"
|
|
2849
2946
|
}
|
|
2850
|
-
},
|
|
2851
|
-
let n =
|
|
2947
|
+
}, dr = (t) => {
|
|
2948
|
+
let n = Rt(t), r = ur[jt(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 = [
|
|
2852
2949
|
[
|
|
2853
2950
|
".tablechart-series",
|
|
2854
2951
|
"Line",
|
|
@@ -2868,11 +2965,11 @@ var Xe = (e) => {
|
|
|
2868
2965
|
for (let [e, c, l] of o) {
|
|
2869
2966
|
let o = Array.from(t.querySelectorAll(`${e}:not([data-muted])`));
|
|
2870
2967
|
for (let e of o) {
|
|
2871
|
-
let u = l(e), [d, f, p, m] =
|
|
2968
|
+
let u = l(e), [d, f, p, m] = kt(u), h = [
|
|
2872
2969
|
d,
|
|
2873
2970
|
f,
|
|
2874
2971
|
p
|
|
2875
|
-
].map((e, t) => e * m + n[t] * (1 - m)), g =
|
|
2972
|
+
].map((e, t) => e * m + n[t] * (1 - m)), g = Pt(jt(t), h, n);
|
|
2876
2973
|
if (g >= r.part) continue;
|
|
2877
2974
|
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) ?? {
|
|
2878
2975
|
kind: c,
|
|
@@ -2888,18 +2985,18 @@ var Xe = (e) => {
|
|
|
2888
2985
|
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"}`;
|
|
2889
2986
|
console.warn(`[${e}] ${d} a contrast of ${r.show(c)} with the background. It needs at least ${r.need(r.part)} (${r.partRule}).`, t);
|
|
2890
2987
|
}
|
|
2891
|
-
},
|
|
2988
|
+
}, fr = ".tablechart-name, .tablechart-value:not([data-place='inside'], [data-place='middle']), .tablechart-categories span, .tablechart-centre, .tablechart-tick, .tablechart-quadrant-name, figcaption b, figcaption span", pr = (t) => {
|
|
2892
2989
|
let n = 0, r = () => {
|
|
2893
|
-
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), a = Array.from(t.querySelectorAll(
|
|
2894
|
-
if ([...r, ...a].some((e) =>
|
|
2990
|
+
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), a = Array.from(t.querySelectorAll(fr)).filter((e) => !e.hasAttribute("data-left-out") && !e.hidden && e.style.getPropertyValue("--m") !== "1" && (e.textContent ?? "").trim() && getComputedStyle(e).visibility !== "hidden");
|
|
2991
|
+
if ([...r, ...a].some((e) => kt(getComputedStyle(e).color)[3] === 0 && n < 20)) {
|
|
2895
2992
|
n++, setTimeout(i, 500);
|
|
2896
2993
|
return;
|
|
2897
2994
|
}
|
|
2898
|
-
let o = Array.from(t.querySelectorAll("tbody tr > :first-child")).map((e) => (e.textContent ?? "").trim()), s =
|
|
2995
|
+
let o = Array.from(t.querySelectorAll("tbody tr > :first-child")).map((e) => (e.textContent ?? "").trim()), s = ur[jt(t)], c = t.dataset.chart === "bar" ? "bar" : "column", l = /* @__PURE__ */ new Map();
|
|
2899
2996
|
for (let e of r) {
|
|
2900
|
-
let n =
|
|
2997
|
+
let n = zt(t, e);
|
|
2901
2998
|
if (!n) continue;
|
|
2902
|
-
let r = getComputedStyle(e), i = getComputedStyle(n).fill, a =
|
|
2999
|
+
let r = getComputedStyle(e), i = getComputedStyle(n).fill, a = Pt(jt(t), kt(r.color), kt(i)), u = Number.parseFloat(r.fontSize), d = u >= 24 || u >= 18.66 && Number(r.fontWeight) >= 700 ? s.large : s.text;
|
|
2903
3000
|
if (a >= d) continue;
|
|
2904
3001
|
let f = n.classList.contains("tablechart-piece") ? `${c} part` : c, p = `${r.color}|${i}`, m = l.get(p) ?? {
|
|
2905
3002
|
what: f,
|
|
@@ -2909,13 +3006,13 @@ var Xe = (e) => {
|
|
|
2909
3006
|
};
|
|
2910
3007
|
m.names.push(`"${o[Number(e.dataset.row) - 1] ?? ""}" ("${e.textContent?.trim()}")`), l.set(p, m);
|
|
2911
3008
|
}
|
|
2912
|
-
let u =
|
|
3009
|
+
let u = Rt(t), d = /* @__PURE__ */ new Map();
|
|
2913
3010
|
for (let e of a) {
|
|
2914
|
-
let n = getComputedStyle(e), [r, i, a, o] =
|
|
3011
|
+
let n = getComputedStyle(e), [r, i, a, o] = kt(n.color), c = [
|
|
2915
3012
|
r,
|
|
2916
3013
|
i,
|
|
2917
3014
|
a
|
|
2918
|
-
].map((e, t) => e * o + u[t] * (1 - o)), l =
|
|
3015
|
+
].map((e, t) => e * o + u[t] * (1 - o)), l = Pt(jt(t), c, u), f = Number.parseFloat(n.fontSize), p = f >= 24 || f >= 18.66 && Number(n.fontWeight) >= 700 ? s.large : s.text;
|
|
2919
3016
|
if (l >= p) continue;
|
|
2920
3017
|
let m = d.get(n.color) ?? {
|
|
2921
3018
|
names: [],
|
|
@@ -2941,34 +3038,34 @@ var Xe = (e) => {
|
|
|
2941
3038
|
attributes: !0,
|
|
2942
3039
|
attributeFilter: ["class"]
|
|
2943
3040
|
});
|
|
2944
|
-
},
|
|
3041
|
+
}, mr = [
|
|
2945
3042
|
"bar",
|
|
2946
3043
|
"piece",
|
|
2947
3044
|
"up",
|
|
2948
3045
|
"down",
|
|
2949
3046
|
"total"
|
|
2950
|
-
].map((e) => `--tablechart-${e}-value-color`),
|
|
3047
|
+
].map((e) => `--tablechart-${e}-value-color`), hr = /* @__PURE__ */ new Set(), gr = (t) => {
|
|
2951
3048
|
let n = getComputedStyle(t);
|
|
2952
|
-
for (let r of
|
|
2953
|
-
},
|
|
3049
|
+
for (let r of mr) !hr.has(r) && n.getPropertyValue(r).trim() && (hr.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));
|
|
3050
|
+
}, _r = (e) => e === "id" || e === "style" || e.startsWith("data-chart"), vr = /^\s*(?:Table)?:\s+/, yr = (e) => e?.tagName === "P" && vr.test(e.textContent ?? ""), br = (e) => {
|
|
2954
3051
|
let t = document.createElement("figcaption");
|
|
2955
3052
|
for (let { name: n, value: r } of Array.from(e.attributes)) t.setAttribute(n, r);
|
|
2956
3053
|
let n = e.firstChild;
|
|
2957
|
-
n?.nodeType === Node.TEXT_NODE && (n.textContent = (n.textContent ?? "").replace(
|
|
3054
|
+
n?.nodeType === Node.TEXT_NODE && (n.textContent = (n.textContent ?? "").replace(vr, ""), n.textContent || n.remove());
|
|
2958
3055
|
let r = Array.from(e.childNodes), i = r.findIndex((e) => e.nodeName === "BR");
|
|
2959
3056
|
if (t.append(...i === -1 ? r : r.slice(0, i + 1)), i !== -1 && i < r.length - 1) {
|
|
2960
3057
|
let e = document.createElement("span");
|
|
2961
3058
|
e.append(...r.slice(i + 1)), t.append(e);
|
|
2962
3059
|
}
|
|
2963
3060
|
return e.remove(), t;
|
|
2964
|
-
},
|
|
2965
|
-
let t =
|
|
3061
|
+
}, xr = /^\s*([a-z][\w-]*)((?:\s+[\w-]+=[^\s:]+)*)\s*(:\s*|$)/, Sr = (e) => {
|
|
3062
|
+
let t = Ar(e);
|
|
2966
3063
|
return t?.tagName === "P" ? t : e;
|
|
2967
|
-
},
|
|
2968
|
-
let t =
|
|
3064
|
+
}, Cr = (e) => {
|
|
3065
|
+
let t = Sr(e).firstChild;
|
|
2969
3066
|
if (t?.nodeType !== Node.TEXT_NODE) return null;
|
|
2970
|
-
let n =
|
|
2971
|
-
if (!n || !
|
|
3067
|
+
let n = xr.exec(t.textContent ?? "");
|
|
3068
|
+
if (!n || !Dn.includes(n[1]) || !n[3] && t.nextSibling) return null;
|
|
2972
3069
|
let r = n[2].trim().split(/\s+/).filter(Boolean).map((e) => e.split("="));
|
|
2973
3070
|
return {
|
|
2974
3071
|
name: n[1],
|
|
@@ -2976,11 +3073,11 @@ var Xe = (e) => {
|
|
|
2976
3073
|
text: t,
|
|
2977
3074
|
length: n[0].length
|
|
2978
3075
|
};
|
|
2979
|
-
},
|
|
3076
|
+
}, wr = (e) => {
|
|
2980
3077
|
if (e?.tagName !== "UL" && e?.tagName !== "OL") return null;
|
|
2981
|
-
let t = Array.from(e.children), n = t.map((e) => e.hasAttribute("data-annotation") ? null :
|
|
3078
|
+
let t = Array.from(e.children), n = t.map((e) => e.hasAttribute("data-annotation") ? null : Cr(e));
|
|
2982
3079
|
return !t.length || t.some((e, t) => !n[t] && !e.hasAttribute("data-annotation")) ? null : (t.forEach((e, t) => {
|
|
2983
|
-
let r = n[t], i =
|
|
3080
|
+
let r = n[t], i = Sr(e);
|
|
2984
3081
|
if (i !== e && i.replaceWith(...i.childNodes), r) {
|
|
2985
3082
|
e.setAttribute("data-annotation", r.name);
|
|
2986
3083
|
for (let [t, n] of r.options) e.setAttribute(`data-${t}`, n);
|
|
@@ -2991,18 +3088,18 @@ var Xe = (e) => {
|
|
|
2991
3088
|
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));
|
|
2992
3089
|
});
|
|
2993
3090
|
}), e.classList.add("chart-annotations"), e);
|
|
2994
|
-
},
|
|
2995
|
-
for (let { name: n, value: r } of Array.from(e.attributes)) (n === "class" ||
|
|
2996
|
-
},
|
|
2997
|
-
let t = e.closest("p"), n =
|
|
3091
|
+
}, Tr = (e, t) => {
|
|
3092
|
+
for (let { name: n, value: r } of Array.from(e.attributes)) (n === "class" || _r(n)) && (t.setAttribute(n, r), e.removeAttribute(n));
|
|
3093
|
+
}, Er = (e) => e.map((e) => {
|
|
3094
|
+
let t = e.closest("p"), n = yr(t) ? t : e;
|
|
2998
3095
|
if (n.tagName !== "TABLE" && n.tagName !== "P") return n;
|
|
2999
3096
|
let r = document.createElement("figure");
|
|
3000
|
-
|
|
3001
|
-
let i = n.tagName === "TABLE" ? n : null, a = n.previousElementSibling, o = n.nextElementSibling, s = i ?
|
|
3097
|
+
Tr(e, r), e.classList.length || e.removeAttribute("class");
|
|
3098
|
+
let i = n.tagName === "TABLE" ? n : null, a = n.previousElementSibling, o = n.nextElementSibling, s = i ? yr(a) ? a : yr(o) ? o : null : n;
|
|
3002
3099
|
i && s === o && (o = o?.nextElementSibling ?? null);
|
|
3003
|
-
let c = o?.classList.contains("chart-annotations") ? o :
|
|
3004
|
-
return n.replaceWith(r), s && r.append(
|
|
3005
|
-
}),
|
|
3100
|
+
let c = o?.classList.contains("chart-annotations") ? o : wr(o);
|
|
3101
|
+
return n.replaceWith(r), s && r.append(br(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;
|
|
3102
|
+
}), Dr = (e, t, n, r = document.createElement("table"), i = "Note") => {
|
|
3006
3103
|
for (let e of r.querySelectorAll(":scope > tbody, :scope > tfoot, :scope > tr")) e.remove();
|
|
3007
3104
|
let a = e.some((e) => e.note);
|
|
3008
3105
|
if (!r.tHead && (t.length || n || a)) {
|
|
@@ -3031,7 +3128,7 @@ var Xe = (e) => {
|
|
|
3031
3128
|
n.dataset.note = "", n.textContent = i, s.append(n);
|
|
3032
3129
|
}
|
|
3033
3130
|
return r;
|
|
3034
|
-
},
|
|
3131
|
+
}, Or = (e) => {
|
|
3035
3132
|
if (!e || typeof e != "object") return;
|
|
3036
3133
|
let t = Object.entries(e), n = (e) => e === null || typeof e == "string" || typeof e == "number";
|
|
3037
3134
|
if (t.length && t.every(([, e]) => n(e) || Array.isArray(e) && e.every(n))) return t.map(([e, t]) => Array.isArray(t) ? {
|
|
@@ -3041,16 +3138,16 @@ var Xe = (e) => {
|
|
|
3041
3138
|
label: e,
|
|
3042
3139
|
value: t
|
|
3043
3140
|
});
|
|
3044
|
-
},
|
|
3141
|
+
}, kr = async (t) => {
|
|
3045
3142
|
await Promise.all(t.filter((e) => e.hasAttribute("data-chart-src")).map(async (t) => {
|
|
3046
3143
|
let n = t.getAttribute("data-chart-src"), r = Array.from(t.querySelectorAll("table")).find((e) => e.tHead) ?? null;
|
|
3047
3144
|
for (let e of t.querySelectorAll("table")) e !== r && e.remove();
|
|
3048
3145
|
try {
|
|
3049
3146
|
let e = await fetch(n);
|
|
3050
3147
|
if (!e.ok) throw Error(`${e.status} ${e.statusText}`);
|
|
3051
|
-
let i = await e.json(), a = Array.isArray(i) ? i : i?.rows ? Array.isArray(i.rows) ? i.rows :
|
|
3148
|
+
let i = await e.json(), a = Array.isArray(i) ? i : i?.rows ? Array.isArray(i.rows) ? i.rows : Or(i.rows) : Or(i);
|
|
3052
3149
|
if (!Array.isArray(a)) throw Error("no rows in it: a list of rows, an object with rows, or names with their values");
|
|
3053
|
-
let o =
|
|
3150
|
+
let o = Dr(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);
|
|
3054
3151
|
if (!r) {
|
|
3055
3152
|
let e = t.querySelector(":scope > figcaption");
|
|
3056
3153
|
e ? e.after(o) : t.prepend(o);
|
|
@@ -3061,10 +3158,10 @@ var Xe = (e) => {
|
|
|
3061
3158
|
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." : ""));
|
|
3062
3159
|
}
|
|
3063
3160
|
}));
|
|
3064
|
-
},
|
|
3161
|
+
}, Ar = (e) => {
|
|
3065
3162
|
let t = Array.from(e.childNodes).filter((e) => e.nodeType === Node.ELEMENT_NODE || e.nodeType === Node.TEXT_NODE && e.textContent?.trim());
|
|
3066
3163
|
return t.length === 1 && t[0] instanceof HTMLElement ? t[0] : null;
|
|
3067
|
-
},
|
|
3164
|
+
}, jr = "strong, b, span.total", Mr = (e) => {
|
|
3068
3165
|
for (let t of e) {
|
|
3069
3166
|
for (let e of t.querySelectorAll("tbody tr")) {
|
|
3070
3167
|
let t = e.cells[0];
|
|
@@ -3072,16 +3169,16 @@ var Xe = (e) => {
|
|
|
3072
3169
|
let n = document.createElement("th");
|
|
3073
3170
|
for (let { name: e, value: r } of Array.from(t.attributes)) n.setAttribute(e, r);
|
|
3074
3171
|
n.append(...t.childNodes), t.replaceWith(n);
|
|
3075
|
-
for (let t =
|
|
3172
|
+
for (let t = Ar(n); t?.matches(jr); t = Ar(n)) e.dataset.kind = "total", t.replaceWith(...t.childNodes);
|
|
3076
3173
|
}
|
|
3077
3174
|
let e = Array.from(t.querySelector("thead tr:last-child")?.children ?? []);
|
|
3078
|
-
for (let t of e.slice(1)) for (let e =
|
|
3175
|
+
for (let t of e.slice(1)) for (let e = Ar(t); e?.matches(jr); e = Ar(t)) t.setAttribute("data-kind", "focus"), e.replaceWith(...e.childNodes);
|
|
3079
3176
|
}
|
|
3080
|
-
},
|
|
3177
|
+
}, Nr = "data-chart-made", Pr = () => window.matchMedia("(prefers-reduced-motion: reduce)").matches, Fr = (e) => new Promise((t) => setTimeout(t, e)), Ir = (e, t) => {
|
|
3081
3178
|
let n = Number.parseFloat(e.dataset.chartEntrance ?? ""), r = Number.isFinite(n) ? n : t.entrance;
|
|
3082
3179
|
return Math.min(Math.max(r, 0), 1);
|
|
3083
|
-
},
|
|
3084
|
-
if (
|
|
3180
|
+
}, Lr = async (e, t) => {
|
|
3181
|
+
if (Pr()) return;
|
|
3085
3182
|
await new Promise(requestAnimationFrame);
|
|
3086
3183
|
let n = e.getAnimations().filter((e) => e instanceof CSSAnimation);
|
|
3087
3184
|
for (let t = e.parentElement; t && t !== document.body; t = t.parentElement) n.push(...t.getAnimations());
|
|
@@ -3092,11 +3189,11 @@ var Xe = (e) => {
|
|
|
3092
3189
|
let a = Number(n.delay ?? 0) + i * t;
|
|
3093
3190
|
r = Math.max(r, a - Number(e.currentTime ?? 0));
|
|
3094
3191
|
}
|
|
3095
|
-
r > 0 && await
|
|
3096
|
-
},
|
|
3192
|
+
r > 0 && await Fr(r);
|
|
3193
|
+
}, Rr = (e) => {
|
|
3097
3194
|
for (let t = e; t && t !== document.body; t = t.parentElement) if (getComputedStyle(t).opacity === "0") return t;
|
|
3098
3195
|
return null;
|
|
3099
|
-
},
|
|
3196
|
+
}, zr = (e) => new Promise((t) => {
|
|
3100
3197
|
let n = ["animationstart", "transitionrun"], r = () => {
|
|
3101
3198
|
for (let e of n) document.removeEventListener(e, i, !0);
|
|
3102
3199
|
a.disconnect(), t();
|
|
@@ -3110,60 +3207,60 @@ var Xe = (e) => {
|
|
|
3110
3207
|
attributes: !0,
|
|
3111
3208
|
attributeFilter: ["class", "style"]
|
|
3112
3209
|
});
|
|
3113
|
-
}),
|
|
3114
|
-
|
|
3115
|
-
for (let e of
|
|
3210
|
+
}), Br = /* @__PURE__ */ new Set(), Vr = null, Hr = (e) => {
|
|
3211
|
+
Br.add(e), !Vr && (Vr = new MutationObserver(() => {
|
|
3212
|
+
for (let e of Br) e.relabel();
|
|
3116
3213
|
requestAnimationFrame(() => requestAnimationFrame(() => {
|
|
3117
|
-
for (let e of
|
|
3214
|
+
for (let e of Br) e.refresh();
|
|
3118
3215
|
}));
|
|
3119
|
-
}),
|
|
3216
|
+
}), Vr.observe(document.documentElement, {
|
|
3120
3217
|
attributes: !0,
|
|
3121
3218
|
attributeFilter: ["lang"]
|
|
3122
3219
|
}));
|
|
3123
|
-
},
|
|
3124
|
-
|
|
3125
|
-
},
|
|
3220
|
+
}, Ur = (e) => {
|
|
3221
|
+
Br.delete(e), !Br.size && Vr && (Vr.disconnect(), Vr = null);
|
|
3222
|
+
}, Wr = ["column", "bar"], Gr = (e) => {
|
|
3126
3223
|
let t = e.getAttribute("data-chart") || "column";
|
|
3127
|
-
if (!
|
|
3224
|
+
if (!Wr.includes(t)) return null;
|
|
3128
3225
|
let n = getComputedStyle(e).getPropertyValue("--tablechart-type").trim();
|
|
3129
|
-
return
|
|
3130
|
-
},
|
|
3131
|
-
let n = e, r =
|
|
3132
|
-
if (!
|
|
3226
|
+
return Wr.includes(n) ? n : t;
|
|
3227
|
+
}, Kr = (e, t) => {
|
|
3228
|
+
let n = e, r = Gr(n.figure), i = null, a = !1, o = !1, s = !1, c = async () => {
|
|
3229
|
+
if (!Fn(n.figure, t)) return ar(n, !0);
|
|
3133
3230
|
let e = n.figure.classList.contains("is-shown");
|
|
3134
3231
|
if (o && i !== null && !e && !s) {
|
|
3135
3232
|
s = !0;
|
|
3136
|
-
let e =
|
|
3137
|
-
e && await
|
|
3138
|
-
} else !o && t.replay && e &&
|
|
3233
|
+
let e = Pr() ? null : Rr(n.figure);
|
|
3234
|
+
e && await zr(e), await Lr(n.figure, Ir(n.figure, t)), s = !1, (o || !t.replay) && ar(n, !0);
|
|
3235
|
+
} else !o && t.replay && e && ar(n, !1);
|
|
3139
3236
|
}, l = () => {
|
|
3140
|
-
let e =
|
|
3237
|
+
let e = Gr(n.figure);
|
|
3141
3238
|
if (!e || e === r) return;
|
|
3142
|
-
let a = Q.timed("Building", n.figure, () =>
|
|
3143
|
-
a && (
|
|
3239
|
+
let a = Q.timed("Building", n.figure, () => Un(n.figure, t, e));
|
|
3240
|
+
a && (ir(n), Yt(a, n.step, !0), n = a, r = e, i = null);
|
|
3144
3241
|
}, u = () => {
|
|
3145
3242
|
l();
|
|
3146
3243
|
let e = n.plot.clientWidth;
|
|
3147
|
-
e && e !== i && Q.timed("Layout", n.figure, () =>
|
|
3244
|
+
e && e !== i && Q.timed("Layout", n.figure, () => tr(n, t)) && (a || (a = !0, dr(n.figure), pr(n.figure), gr(n.figure)), i = e, c());
|
|
3148
3245
|
}, d = !1, f = new ResizeObserver(() => {
|
|
3149
3246
|
u(), f.unobserve(n.figure), requestAnimationFrame(() => d || f.observe(n.figure));
|
|
3150
3247
|
}), p = new IntersectionObserver((e) => {
|
|
3151
3248
|
for (let t of e) o = t.isIntersecting, c();
|
|
3152
3249
|
}, { threshold: t.threshold }), m = () => {
|
|
3153
|
-
n.figure.classList.add(x),
|
|
3250
|
+
n.figure.classList.add(x), ar(n, !0), lr(n.svg), n.figure.offsetWidth;
|
|
3154
3251
|
}, h = () => n.figure.classList.remove(x), g = () => {
|
|
3155
3252
|
i = null, u();
|
|
3156
3253
|
}, _ = {
|
|
3157
|
-
relabel: () =>
|
|
3254
|
+
relabel: () => nr(n, t),
|
|
3158
3255
|
refresh: g
|
|
3159
3256
|
};
|
|
3160
|
-
l(), u(), f.observe(n.figure), p.observe(n.figure), window.addEventListener("beforeprint", m), window.addEventListener("afterprint", h),
|
|
3257
|
+
l(), u(), f.observe(n.figure), p.observe(n.figure), window.addEventListener("beforeprint", m), window.addEventListener("afterprint", h), Hr(_);
|
|
3161
3258
|
let v = {
|
|
3162
3259
|
figure: n.figure,
|
|
3163
3260
|
refresh: g,
|
|
3164
|
-
next: () =>
|
|
3165
|
-
previous: () =>
|
|
3166
|
-
stepTo: (e) =>
|
|
3261
|
+
next: () => Yt(n, n.step + 1),
|
|
3262
|
+
previous: () => Yt(n, n.step - 1),
|
|
3263
|
+
stepTo: (e) => Yt(n, e),
|
|
3167
3264
|
get step() {
|
|
3168
3265
|
return n.step;
|
|
3169
3266
|
},
|
|
@@ -3171,28 +3268,28 @@ var Xe = (e) => {
|
|
|
3171
3268
|
return n.plan?.count ?? 0;
|
|
3172
3269
|
},
|
|
3173
3270
|
destroy() {
|
|
3174
|
-
d = !0, f.disconnect(), p.disconnect(), window.removeEventListener("beforeprint", m), window.removeEventListener("afterprint", h),
|
|
3271
|
+
d = !0, f.disconnect(), p.disconnect(), window.removeEventListener("beforeprint", m), window.removeEventListener("afterprint", h), Ur(_), Cn(n), n.figure.tablechart === v && delete n.figure.tablechart;
|
|
3175
3272
|
}
|
|
3176
3273
|
};
|
|
3177
3274
|
return n.figure.tablechart = v, v;
|
|
3178
|
-
},
|
|
3275
|
+
}, qr = !1, Jr = (t) => {
|
|
3179
3276
|
let n = t.find((e) => e.tagName !== "FIGURE");
|
|
3180
|
-
!
|
|
3181
|
-
},
|
|
3182
|
-
let n =
|
|
3183
|
-
|
|
3277
|
+
!qr && n && (qr = !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));
|
|
3278
|
+
}, Yr = async (e, t) => {
|
|
3279
|
+
let n = Er(e.filter((e) => !e.hasAttribute(Nr) && e.tagName !== "TH"));
|
|
3280
|
+
Jr(n), await kr(n), Mr(n), bt(n, t.langattribute);
|
|
3184
3281
|
for (let e of n) e.dispatchEvent(new CustomEvent("tablechart:table", { bubbles: !0 }));
|
|
3185
3282
|
return n;
|
|
3186
|
-
},
|
|
3187
|
-
let n = Q.timed("Building", e, () =>
|
|
3188
|
-
return n ? (e.setAttribute(
|
|
3189
|
-
},
|
|
3190
|
-
if (
|
|
3191
|
-
|
|
3283
|
+
}, Xr = (e, t) => {
|
|
3284
|
+
let n = Q.timed("Building", e, () => Un(e, t));
|
|
3285
|
+
return n ? (e.setAttribute(Nr, ""), $r(), Kr(n, t)) : null;
|
|
3286
|
+
}, Zr = !1, Qr = /* @__PURE__ */ new WeakMap(), $r = () => {
|
|
3287
|
+
if (Zr || typeof matchMedia != "function") return;
|
|
3288
|
+
Zr = !0;
|
|
3192
3289
|
let e = () => {
|
|
3193
|
-
for (let e of document.querySelectorAll(`[${
|
|
3194
|
-
let t = getComputedStyle(e).color, n =
|
|
3195
|
-
|
|
3290
|
+
for (let e of document.querySelectorAll(`[${Nr}]`)) {
|
|
3291
|
+
let t = getComputedStyle(e).color, n = Lt(e) || Qr.get(e) !== t;
|
|
3292
|
+
Qr.set(e, t), n && (Ut(e), Wt(e));
|
|
3196
3293
|
}
|
|
3197
3294
|
};
|
|
3198
3295
|
matchMedia("(prefers-color-scheme: dark)").addEventListener("change", e);
|
|
@@ -3201,22 +3298,22 @@ var Xe = (e) => {
|
|
|
3201
3298
|
document.addEventListener("transitionend", (t) => {
|
|
3202
3299
|
(t.target === document.documentElement || t.target === document.body) && e();
|
|
3203
3300
|
});
|
|
3204
|
-
},
|
|
3301
|
+
}, ei = async (e, t = {}) => {
|
|
3205
3302
|
if (e.tablechart) return e.tablechart;
|
|
3206
3303
|
let n = {
|
|
3207
3304
|
...k,
|
|
3208
3305
|
...t
|
|
3209
3306
|
};
|
|
3210
3307
|
n.debug && (Q.enabled = !0);
|
|
3211
|
-
let [r] = await
|
|
3212
|
-
return r ?
|
|
3213
|
-
},
|
|
3308
|
+
let [r] = await Yr([e], n);
|
|
3309
|
+
return r ? Xr(r, n) : null;
|
|
3310
|
+
}, ti = async (e = {}, t = document) => {
|
|
3214
3311
|
let n = {
|
|
3215
3312
|
...k,
|
|
3216
3313
|
...e
|
|
3217
3314
|
};
|
|
3218
3315
|
n.debug && (Q.enabled = !0);
|
|
3219
|
-
let r = (await
|
|
3316
|
+
let r = (await Yr(Array.from(t.querySelectorAll(n.selector)), n)).map((e) => Xr(e, n)).filter((e) => e !== null);
|
|
3220
3317
|
return Q.log(`Made ${r.length} chart(s).`), {
|
|
3221
3318
|
charts: r,
|
|
3222
3319
|
refresh: () => {
|
|
@@ -3227,4 +3324,4 @@ var Xe = (e) => {
|
|
|
3227
3324
|
}
|
|
3228
3325
|
};
|
|
3229
3326
|
};
|
|
3230
|
-
export { L as A, t as B,
|
|
3327
|
+
export { L as A, t as B, Te as C, ie as D, pe 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, q as O, S as P, f as R, Xe as S, he as T, s as U, m as V, w as W, bt as _, Er as a, it as b, dr as c, Un as d, tr as f, Yt as g, ir as h, Yr as i, R as j, oe as k, pr as l, ar as m, Ir as n, kr as o, nr as p, k as q, ti as r, Mr as s, ei as t, Tn as u, yt as v, J as w, at as x, gt as y, v as z };
|