@martinomagnifico/tablechart 1.2.4 → 1.2.6
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 +20 -0
- package/dist/tablechart-shared.d.mts +4 -0
- package/dist/tablechart-shared.mjs +799 -702
- 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,
|
|
@@ -862,44 +921,44 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
862
921
|
to: e.value,
|
|
863
922
|
kind: "bar"
|
|
864
923
|
})),
|
|
865
|
-
draw({ rows: e, height: t, unit: n, labelHeight: r, svg: i, values: a, config: o, centre: s }) {
|
|
866
|
-
let
|
|
867
|
-
if (!
|
|
868
|
-
let
|
|
924
|
+
draw({ rows: e, height: t, unit: n, labelHeight: r, svg: i, values: a, config: o, centre: s, sliceRadius: c }) {
|
|
925
|
+
let u = O / 2, d = t / 2, f = qe(e).reduce((e, t) => e + Math.abs(t.value), 0);
|
|
926
|
+
if (!f) return;
|
|
927
|
+
let p = r * 1.2 + 10 * n, m = Math.max(Math.min(O, t) / 2 - p, 10), h = m * o.ringfill, g = m - h / 2, _ = 2 * Math.PI * g, v = [], y = [], b = 0, x = 0, S = 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
|
|
876
|
-
|
|
934
|
+
let c = Math.abs(e.value) / f, p = j(S, c), C = `--share:${c.toFixed(4)}; --start:${p.start.toFixed(4)}; --span:${p.span.toFixed(4)};`, w = c * _, T = b / _ * 2 * Math.PI - Math.PI / 2;
|
|
935
|
+
v.push(T), y.push(w / _ * 2 * Math.PI), i.appendChild(F("circle", {
|
|
877
936
|
class: I(l, e),
|
|
878
|
-
"data-slice":
|
|
937
|
+
"data-slice": x + 1,
|
|
879
938
|
"data-row": o + 1,
|
|
880
|
-
cx:
|
|
881
|
-
cy:
|
|
882
|
-
r:
|
|
883
|
-
"stroke-width":
|
|
884
|
-
transform: `rotate(-90 ${
|
|
885
|
-
"stroke-dasharray": `${
|
|
886
|
-
"stroke-dashoffset": (-
|
|
887
|
-
style: `--n:${
|
|
939
|
+
cx: u,
|
|
940
|
+
cy: d,
|
|
941
|
+
r: g,
|
|
942
|
+
"stroke-width": h,
|
|
943
|
+
transform: `rotate(-90 ${u} ${d})`,
|
|
944
|
+
"stroke-dasharray": `${w.toFixed(1)} ${(_ - w).toFixed(1)}`,
|
|
945
|
+
"stroke-dashoffset": (-b).toFixed(1),
|
|
946
|
+
style: `--n:${x}; --palette:var(--tablechart-color-${x + 1}); --arc:${w.toFixed(1)}; --circ:${_.toFixed(1)}; ${C} --ease:${p.easing}; ${M("--i", e.slot)}`
|
|
888
947
|
}));
|
|
889
|
-
let
|
|
948
|
+
let E = T + w / _ * Math.PI, D = Math.cos(E), k = Math.sin(E);
|
|
890
949
|
i.appendChild(F("line", {
|
|
891
950
|
class: "tablechart-leader",
|
|
892
|
-
x1:
|
|
893
|
-
y1:
|
|
894
|
-
x2:
|
|
895
|
-
y2:
|
|
951
|
+
x1: u + D * (m + 2 * n),
|
|
952
|
+
y1: d + k * (m + 2 * n),
|
|
953
|
+
x2: u + D * (m + 7 * n),
|
|
954
|
+
y2: d + k * (m + 7 * n),
|
|
896
955
|
"data-row": o + 1,
|
|
897
|
-
style: `${
|
|
898
|
-
})), s.style.setProperty("--start",
|
|
899
|
-
let
|
|
900
|
-
R(s,
|
|
901
|
-
}),
|
|
902
|
-
let e =
|
|
956
|
+
style: `${C} ${M("--i", e.slot)}`
|
|
957
|
+
})), s.style.setProperty("--start", p.start.toFixed(4)), s.style.setProperty("--span", p.span.toFixed(4));
|
|
958
|
+
let A = m + 9 * n, N = J(s).width * n / 2;
|
|
959
|
+
R(s, u + D * (A + Math.abs(D) * N), d + k * (A + Math.abs(k) * r * .7), O, t), s.dataset.place = "around", b += w, S += c, x += 1;
|
|
960
|
+
}), v.length > 1) {
|
|
961
|
+
let e = g - h / 2 - 1, n = g + h / 2 + 1, r = `tablechart-slices-${++Y}`, a = F("mask", {
|
|
903
962
|
id: r,
|
|
904
963
|
maskUnits: "userSpaceOnUse"
|
|
905
964
|
});
|
|
@@ -910,36 +969,46 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
910
969
|
height: t,
|
|
911
970
|
fill: "white"
|
|
912
971
|
}));
|
|
913
|
-
for (let t of
|
|
972
|
+
for (let t of v) a.appendChild(F("line", {
|
|
914
973
|
class: "tablechart-divide",
|
|
915
|
-
x1:
|
|
916
|
-
y1:
|
|
917
|
-
x2:
|
|
918
|
-
y2:
|
|
974
|
+
x1: u + Math.cos(t) * e,
|
|
975
|
+
y1: d + Math.sin(t) * e,
|
|
976
|
+
x2: u + Math.cos(t) * n,
|
|
977
|
+
y2: d + Math.sin(t) * n
|
|
919
978
|
}));
|
|
979
|
+
if (c > 0) {
|
|
980
|
+
let e = Number.parseFloat(getComputedStyle(i).getPropertyValue("--tablechart-slice-gap").trim() || "4"), t = [g - h / 2, g + h / 2], n = (n) => Math.min(c, h / 2, Math.max((y[n] * t[0] - e) / 2, 0));
|
|
981
|
+
v.forEach((r, i) => {
|
|
982
|
+
let o = n((i - 1 + v.length) % v.length);
|
|
983
|
+
for (let [s, c] of [[1, n(i)], [-1, o]]) if (c > 0) for (let n of t) a.appendChild(F("path", {
|
|
984
|
+
d: Ke(u, d, r, n, s, e / 2, c, n === t[1]),
|
|
985
|
+
fill: "black"
|
|
986
|
+
}));
|
|
987
|
+
});
|
|
988
|
+
}
|
|
920
989
|
let o = F("g", { mask: `url(#${r})` });
|
|
921
990
|
for (let e of Array.from(i.querySelectorAll(`.${l}`))) o.appendChild(e);
|
|
922
991
|
let s = F("defs");
|
|
923
992
|
s.appendChild(a), i.prepend(s, o);
|
|
924
993
|
}
|
|
925
|
-
s && R(s,
|
|
994
|
+
s && R(s, u, d, O, t);
|
|
926
995
|
}
|
|
927
|
-
},
|
|
996
|
+
}, X = [
|
|
928
997
|
"circle",
|
|
929
998
|
"square",
|
|
930
999
|
"diamond"
|
|
931
|
-
],
|
|
1000
|
+
], Ye = (e, t) => {
|
|
932
1001
|
let n = e[t]?.marker?.toLowerCase().split(/\s+/) ?? [];
|
|
933
1002
|
if (n.includes("none")) return {
|
|
934
1003
|
shape: "none",
|
|
935
1004
|
open: !1
|
|
936
1005
|
};
|
|
937
|
-
let r =
|
|
1006
|
+
let r = X.find((e) => n.includes(e));
|
|
938
1007
|
return {
|
|
939
|
-
shape: r ??
|
|
1008
|
+
shape: r ?? X[Math.floor(t / 2) % X.length],
|
|
940
1009
|
open: n.includes("open") || !n.includes("filled") && !r && t % 2 == 1
|
|
941
1010
|
};
|
|
942
|
-
},
|
|
1011
|
+
}, Xe = (e, t, n, r, i = {}) => {
|
|
943
1012
|
if (e === "square") {
|
|
944
1013
|
let e = r * .88;
|
|
945
1014
|
return F("rect", {
|
|
@@ -970,8 +1039,8 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
|
|
|
970
1039
|
r,
|
|
971
1040
|
...i
|
|
972
1041
|
});
|
|
973
|
-
},
|
|
974
|
-
function
|
|
1042
|
+
}, Z = (e) => Number(e.toFixed(2));
|
|
1043
|
+
function Ze(e, t) {
|
|
975
1044
|
let n = e.length;
|
|
976
1045
|
if (n < 2) return e.map(() => 0);
|
|
977
1046
|
let r = (n) => (t[n + 1] - t[n]) / (e[n + 1] - e[n] || 1), i = Array(n).fill(0);
|
|
@@ -988,24 +1057,24 @@ function Z(e, t) {
|
|
|
988
1057
|
};
|
|
989
1058
|
return i[0] = a(0, 1, i[1]), i[n - 1] = a(n - 2, n - 1, i[n - 2]), i;
|
|
990
1059
|
}
|
|
991
|
-
function
|
|
1060
|
+
function Qe(e, t, n, r) {
|
|
992
1061
|
let i = (t[0] - e[0]) / 3;
|
|
993
1062
|
return [[e[0] + i, e[1] + n * i], [t[0] - i, t[1] - r * i]];
|
|
994
1063
|
}
|
|
995
|
-
function
|
|
996
|
-
let [i, a] =
|
|
1064
|
+
function $e(e, t, n, r) {
|
|
1065
|
+
let [i, a] = Qe(e, t, n, r), o = ([e, t]) => `${Z(e)},${Z(t)}`;
|
|
997
1066
|
return `C${o(i)} ${o(a)} ${o(t)}`;
|
|
998
1067
|
}
|
|
999
|
-
function
|
|
1068
|
+
function et(e, t, n) {
|
|
1000
1069
|
let r = Array(e).fill(0), i = [], a = () => {
|
|
1001
|
-
|
|
1070
|
+
Ze(i.map((e) => n(e)[0]), i.map((e) => n(e)[1])).forEach((e, t) => {
|
|
1002
1071
|
r[i[t]] = e;
|
|
1003
1072
|
}), i = [];
|
|
1004
1073
|
};
|
|
1005
1074
|
for (let n = 0; n < e; n++) t(n) ? a() : i.push(n);
|
|
1006
1075
|
return a(), r;
|
|
1007
1076
|
}
|
|
1008
|
-
var
|
|
1077
|
+
var tt = (e) => {
|
|
1009
1078
|
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
1079
|
return {
|
|
1011
1080
|
at: o,
|
|
@@ -1013,7 +1082,7 @@ var Xe = (e) => {
|
|
|
1013
1082
|
t: c ? a / c : a ? Infinity : 0,
|
|
1014
1083
|
n: t
|
|
1015
1084
|
};
|
|
1016
|
-
},
|
|
1085
|
+
}, nt = [
|
|
1017
1086
|
12.71,
|
|
1018
1087
|
4.3,
|
|
1019
1088
|
3.18,
|
|
@@ -1029,29 +1098,29 @@ var Xe = (e) => {
|
|
|
1029
1098
|
2.16,
|
|
1030
1099
|
2.14,
|
|
1031
1100
|
2.13
|
|
1032
|
-
],
|
|
1101
|
+
], rt = (e) => nt[e - 1] ?? (e < 30 ? 2.1 : 2), it = (e) => {
|
|
1033
1102
|
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
1103
|
return {
|
|
1035
1104
|
mean: t.reduce((e, t) => e + t, 0) / t.length,
|
|
1036
1105
|
share: (e, t) => e / (i ? a : Math.abs(t) || a) * 100
|
|
1037
1106
|
};
|
|
1038
|
-
},
|
|
1107
|
+
}, at = (e, t = 5, n = 25) => {
|
|
1039
1108
|
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) >=
|
|
1109
|
+
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);
|
|
1110
|
+
c.length && o(c) && (s = tt(e.filter((e) => !c.includes(e))), c = a(s.at)), o(c) || (s = tt(e), c = []);
|
|
1111
|
+
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
1112
|
return {
|
|
1044
1113
|
course: g,
|
|
1045
1114
|
line: l,
|
|
1046
1115
|
outside: g === "unclear" ? [] : c
|
|
1047
1116
|
};
|
|
1048
|
-
},
|
|
1117
|
+
}, ot = (e) => e.map((e) => ({
|
|
1049
1118
|
...e,
|
|
1050
1119
|
from: 0,
|
|
1051
1120
|
to: e.value,
|
|
1052
1121
|
kind: "bar"
|
|
1053
|
-
})),
|
|
1054
|
-
segments:
|
|
1122
|
+
})), st = (e) => ({
|
|
1123
|
+
segments: ot,
|
|
1055
1124
|
series: !0,
|
|
1056
1125
|
stackable: !0,
|
|
1057
1126
|
running: !0,
|
|
@@ -1060,8 +1129,8 @@ var Xe = (e) => {
|
|
|
1060
1129
|
footroom: ({ labelHeight: t, unit: n, series: r, focused: i, stacked: a }) => !e && !a && r === 2 && !i ? t + 7 * n : 0,
|
|
1061
1130
|
draw(t) {
|
|
1062
1131
|
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:${
|
|
1132
|
+
_.style.setProperty("--_base", `${Z(T)}px`);
|
|
1133
|
+
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
1134
|
if (!S) return {
|
|
1066
1135
|
attrs: {},
|
|
1067
1136
|
ink: ""
|
|
@@ -1076,67 +1145,70 @@ var Xe = (e) => {
|
|
|
1076
1145
|
};
|
|
1077
1146
|
}), L = y ? w : Math.min(w, 6);
|
|
1078
1147
|
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:${
|
|
1148
|
+
let z = w > 0 ? L / (b ? n.length : w) : 1, B = (e) => e * z, V = (e) => `--i:${Z(B(e))}`, H = (e) => {
|
|
1080
1149
|
let t = [], r = -1;
|
|
1081
1150
|
return n.forEach((n, i) => {
|
|
1082
1151
|
A(e, i) || (r < 0 && (r = i), (i === w || A(e, i + 1)) && ((b || i > r) && t.push([r, i]), r = -1));
|
|
1083
1152
|
}), t;
|
|
1084
|
-
},
|
|
1153
|
+
}, U = (e, t) => `--i:${Z(B(e) + 1)}; --d:${Z(B(b ? t + 1 : t) - B(e))}`, ee = (e, t) => ({
|
|
1085
1154
|
"data-from": e + 1,
|
|
1086
1155
|
"data-to": t + 1,
|
|
1087
1156
|
...b && { "data-flat": "" }
|
|
1088
|
-
}),
|
|
1157
|
+
}), 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
1158
|
let r = [];
|
|
1090
1159
|
return e.forEach(([i, a], o) => {
|
|
1091
|
-
b ? (r.push(`H${
|
|
1160
|
+
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
1161
|
}), r;
|
|
1093
|
-
},
|
|
1162
|
+
}, 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, {
|
|
1163
|
+
style: I[e].ink,
|
|
1164
|
+
...C && !r[e].focus && { "data-muted": "" }
|
|
1165
|
+
})}); `, le = (e) => {
|
|
1094
1166
|
let t = F("g", {
|
|
1095
1167
|
class: d,
|
|
1096
1168
|
...I[e].attrs,
|
|
1097
1169
|
...v && { "data-stacked": "" },
|
|
1098
|
-
style: I[e].ink
|
|
1099
|
-
}), n =
|
|
1170
|
+
style: `${I[e].ink}${v ? "" : ce(e)}`
|
|
1171
|
+
}), n = H(e), r = F("g", {
|
|
1100
1172
|
class: "tablechart-area-fill",
|
|
1101
|
-
style: `--rows:${
|
|
1173
|
+
style: `--rows:${Z(L + 1)}; ${n.length ? U(...n[0]) : ""}`
|
|
1102
1174
|
});
|
|
1103
1175
|
t.appendChild(r);
|
|
1104
1176
|
for (let [t, i] of n) {
|
|
1105
|
-
let n =
|
|
1106
|
-
`M${
|
|
1107
|
-
`L${
|
|
1108
|
-
...
|
|
1109
|
-
`L${
|
|
1110
|
-
...
|
|
1177
|
+
let n = K(e, t, i, M), a = K(e, t, i, N), o = q(re, e, t, i)?.reverse() ?? null, s = [
|
|
1178
|
+
`M${Z(ie(t))},${Z(a[0][1])}`,
|
|
1179
|
+
`L${Z(ie(t))},${Z(n[0][1])}`,
|
|
1180
|
+
...G(n, q(te, e, t, i), 1),
|
|
1181
|
+
`L${Z(ae(i))},${Z(a[a.length - 1][1])}`,
|
|
1182
|
+
...G(a.reverse(), o, -1),
|
|
1111
1183
|
"Z"
|
|
1112
1184
|
].join(" ");
|
|
1113
1185
|
r.appendChild(F("path", {
|
|
1114
1186
|
d: s,
|
|
1115
|
-
...
|
|
1116
|
-
style:
|
|
1187
|
+
...ee(t, i),
|
|
1188
|
+
style: U(t, i)
|
|
1117
1189
|
}));
|
|
1118
1190
|
}
|
|
1119
1191
|
_.appendChild(t);
|
|
1120
|
-
},
|
|
1192
|
+
}, ue = (e) => {
|
|
1121
1193
|
let t = r[e];
|
|
1122
|
-
for (let [n, r] of
|
|
1123
|
-
let i =
|
|
1194
|
+
for (let [n, r] of H(e)) {
|
|
1195
|
+
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
1196
|
_.appendChild(F("path", {
|
|
1125
1197
|
class: u,
|
|
1126
1198
|
...I[e].attrs,
|
|
1127
1199
|
d: a,
|
|
1128
1200
|
...t.line && { "data-line": t.line },
|
|
1129
|
-
...
|
|
1130
|
-
style: `${I[e].ink}${
|
|
1201
|
+
...ee(n, r),
|
|
1202
|
+
style: `${I[e].ink}${U(n, r)}`
|
|
1131
1203
|
}));
|
|
1132
1204
|
}
|
|
1133
|
-
},
|
|
1134
|
-
let i = a.map((e) => r[e]), o = r.map((e, t) => y ?
|
|
1205
|
+
}, de = (e) => {
|
|
1206
|
+
let i = a.map((e) => r[e]), o = r.map((e, t) => y ? Ye(i, a.indexOf(t)) : S ? Ye(r, t) : {
|
|
1135
1207
|
shape: "circle",
|
|
1136
1208
|
open: !1
|
|
1137
1209
|
}), s = (e, t, n) => {
|
|
1138
1210
|
let [r, i] = P(e, t);
|
|
1139
|
-
return
|
|
1211
|
+
return Xe(o[e].shape, r, i, 3 * p, {
|
|
1140
1212
|
...n,
|
|
1141
1213
|
style: `${n.style ?? ""}${D(i)}${V(t)}`
|
|
1142
1214
|
});
|
|
@@ -1145,7 +1217,7 @@ var Xe = (e) => {
|
|
|
1145
1217
|
"data-row": t + 1,
|
|
1146
1218
|
...S && { "data-series": e + 1 }
|
|
1147
1219
|
})) : []);
|
|
1148
|
-
_.closest("[data-animate]")?.getAttribute("data-animate") === "grow" ?
|
|
1220
|
+
_.closest("[data-animate]")?.getAttribute("data-animate") === "grow" ? ne(_, l, O, f) : t.lineHoles.push(...l), a.forEach((e) => {
|
|
1149
1221
|
for (let t of c(e)) _.appendChild(s(e, t, {
|
|
1150
1222
|
class: m,
|
|
1151
1223
|
...I[e].attrs,
|
|
@@ -1156,11 +1228,11 @@ var Xe = (e) => {
|
|
|
1156
1228
|
}));
|
|
1157
1229
|
});
|
|
1158
1230
|
};
|
|
1159
|
-
e && a.forEach((e) =>
|
|
1160
|
-
let
|
|
1231
|
+
e && a.forEach((e) => le(e)), a.forEach((e) => ue(e));
|
|
1232
|
+
let fe = y ? r.flatMap((e, t) => a.includes(t) ? [] : o[t].flatMap((e) => {
|
|
1161
1233
|
let t = e.dataset.place;
|
|
1162
1234
|
if (!t || t === "none" || e.hasAttribute("data-left-out")) return [];
|
|
1163
|
-
let [n, r, i, a] =
|
|
1235
|
+
let [n, r, i, a] = Te(e, p, O, f);
|
|
1164
1236
|
return [{
|
|
1165
1237
|
label: e,
|
|
1166
1238
|
box: [
|
|
@@ -1170,7 +1242,7 @@ var Xe = (e) => {
|
|
|
1170
1242
|
a + 6 * p
|
|
1171
1243
|
]
|
|
1172
1244
|
}];
|
|
1173
|
-
})) : [],
|
|
1245
|
+
})) : [], me = b ? [] : a.flatMap((e) => n.flatMap((t, n) => {
|
|
1174
1246
|
if (A(e, n)) return [];
|
|
1175
1247
|
let [r, i] = P(e, n);
|
|
1176
1248
|
return [[
|
|
@@ -1179,22 +1251,22 @@ var Xe = (e) => {
|
|
|
1179
1251
|
8 * p,
|
|
1180
1252
|
8 * p
|
|
1181
1253
|
]];
|
|
1182
|
-
})),
|
|
1183
|
-
let n =
|
|
1254
|
+
})), ge = fe.filter(({ label: e, box: t }) => {
|
|
1255
|
+
let n = me.some((e) => pe(e, t));
|
|
1184
1256
|
return n && e.setAttribute("data-left-out", ""), !n;
|
|
1185
|
-
}),
|
|
1257
|
+
}), _e = (e, t) => {
|
|
1186
1258
|
let n = t;
|
|
1187
1259
|
for (; n < w && !A(e, n + 1) && k(e, n + 1)?.value === k(e, t)?.value;) n++;
|
|
1188
1260
|
return n;
|
|
1189
|
-
},
|
|
1190
|
-
let [r, i] = P(e, t), a =
|
|
1261
|
+
}, ve = (e) => e === "above" ? "below" : "above", ye = (e, t, n) => {
|
|
1262
|
+
let [r, i] = P(e, t), a = J(o[e][t]).width * p, s = [
|
|
1191
1263
|
r - a / 2,
|
|
1192
1264
|
n === "above" ? i - 7 * p - g : i + 7 * p,
|
|
1193
1265
|
a,
|
|
1194
1266
|
g
|
|
1195
1267
|
];
|
|
1196
|
-
return s[1] + g > f ? Infinity : [t - 1, t + 1].filter((t) => t >= 0 && t <= w && !A(e, t)).flatMap((n) =>
|
|
1197
|
-
},
|
|
1268
|
+
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;
|
|
1269
|
+
}, be = (e, t, n, r) => {
|
|
1198
1270
|
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
1271
|
return Array.from({ length: c + 1 }, (e, t) => {
|
|
1200
1272
|
let n = t / c;
|
|
@@ -1205,43 +1277,43 @@ var Xe = (e) => {
|
|
|
1205
1277
|
2 * r
|
|
1206
1278
|
];
|
|
1207
1279
|
});
|
|
1208
|
-
},
|
|
1280
|
+
}, xe = (t, n) => {
|
|
1209
1281
|
let i = k(t, n);
|
|
1210
1282
|
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
1283
|
if (v) return "middle";
|
|
1212
1284
|
let a = i.value < 0 ? "below" : "above";
|
|
1213
|
-
if (!S || C || r.length > 2) return e || b ||
|
|
1285
|
+
if (!S || C || r.length > 2) return e || b || ye(t, n, a) <= ye(t, n, ve(a)) ? a : ve(a);
|
|
1214
1286
|
let o = k(1 - t, n);
|
|
1215
1287
|
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
|
-
},
|
|
1288
|
+
}, Se = (e) => {
|
|
1217
1289
|
let t = w;
|
|
1218
1290
|
for (; t > 0 && A(e, t);) t--;
|
|
1219
1291
|
return t;
|
|
1220
|
-
},
|
|
1221
|
-
let e = (s[0] ?
|
|
1292
|
+
}, 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 = () => {
|
|
1293
|
+
let e = (s[0] ? J(s[0]).height : 0) * p, n = 2 * p, r = a.flatMap((e) => {
|
|
1222
1294
|
let t = s[e];
|
|
1223
1295
|
if (!t) return [];
|
|
1224
|
-
let [n, r] = P(e,
|
|
1296
|
+
let [n, r] = P(e, Se(e));
|
|
1225
1297
|
return [{
|
|
1226
1298
|
name: t,
|
|
1227
|
-
x: n +
|
|
1299
|
+
x: n + Ee,
|
|
1228
1300
|
y: r
|
|
1229
1301
|
}];
|
|
1230
|
-
}), i = t.numbersAtEnd ?
|
|
1231
|
-
return
|
|
1302
|
+
}), i = t.numbersAtEnd ? Ee - 7 * p : 0;
|
|
1303
|
+
return Ce(r, e).map((t) => [
|
|
1232
1304
|
t.x - n - i,
|
|
1233
1305
|
t.y - e / 2 - n,
|
|
1234
|
-
|
|
1306
|
+
J(t.name).width * p + 2 * n + i,
|
|
1235
1307
|
e + 2 * n
|
|
1236
1308
|
]);
|
|
1237
|
-
},
|
|
1238
|
-
if (
|
|
1309
|
+
}, ke = (y || S && !C && r.length > 2 && !v) && !b, Ae = /* @__PURE__ */ new Map();
|
|
1310
|
+
if (ke) {
|
|
1239
1311
|
let e = n.flatMap((e, t) => a.map((e) => ({
|
|
1240
1312
|
s: e,
|
|
1241
1313
|
i: t,
|
|
1242
1314
|
value: k(e, t)?.value ?? 0
|
|
1243
|
-
}))).filter(({ s: e, i: t }) =>
|
|
1244
|
-
let i =
|
|
1315
|
+
}))).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 }) => {
|
|
1316
|
+
let i = J(o[e][n]).width * p, [a, s] = P(e, n);
|
|
1245
1317
|
return t(r).map((e) => [
|
|
1246
1318
|
a - i / 2,
|
|
1247
1319
|
e === "above" ? s - 7 * p - g : s + 7 * p,
|
|
@@ -1259,24 +1331,47 @@ var Xe = (e) => {
|
|
|
1259
1331
|
8 * p
|
|
1260
1332
|
]];
|
|
1261
1333
|
})),
|
|
1262
|
-
...
|
|
1263
|
-
...
|
|
1334
|
+
...De(),
|
|
1335
|
+
...ge.map(({ box: e }) => e)
|
|
1264
1336
|
], [
|
|
1265
1337
|
0,
|
|
1266
1338
|
0,
|
|
1267
1339
|
c(w) + c(0),
|
|
1268
1340
|
f
|
|
1269
1341
|
]);
|
|
1270
|
-
e.forEach(({ s: e, i: n, value: i }, a) =>
|
|
1342
|
+
e.forEach(({ s: e, i: n, value: i }, a) => Ae.set(o[e][n], r[a] === null ? null : t(i)[r[a]]));
|
|
1271
1343
|
}
|
|
1272
|
-
let
|
|
1344
|
+
let je = (e, t) => {
|
|
1345
|
+
if (ke) return Ae.get(o[e][t]) === null;
|
|
1346
|
+
if (!v && !b) return !1;
|
|
1347
|
+
let n = J(o[e][t]).width * p;
|
|
1348
|
+
if (n > (b ? _e(e, t) - t + 1 : 1) * E - 4 * p || v && e > 0 && M(e, t) < N(e, t)) return !0;
|
|
1349
|
+
if (v && !b && t > 0 && t < w) {
|
|
1350
|
+
let r = (l(N(e, t)) + l(M(e, t))) / 2, i = [
|
|
1351
|
+
c(t) - n / 2,
|
|
1352
|
+
r - g / 2,
|
|
1353
|
+
n,
|
|
1354
|
+
g
|
|
1355
|
+
];
|
|
1356
|
+
if (a.some((e) => {
|
|
1357
|
+
let [n, r] = P(e, t);
|
|
1358
|
+
return !A(e, t) && pe([
|
|
1359
|
+
n - 4 * p,
|
|
1360
|
+
r - 4 * p,
|
|
1361
|
+
8 * p,
|
|
1362
|
+
8 * p
|
|
1363
|
+
], i);
|
|
1364
|
+
})) return !0;
|
|
1365
|
+
}
|
|
1366
|
+
return v && Math.abs(l(N(e, t)) - l(M(e, t))) < g * 1.2;
|
|
1367
|
+
};
|
|
1273
1368
|
a.forEach((e) => {
|
|
1274
1369
|
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(
|
|
1370
|
+
t.style.setProperty("--i", String(Z(b ? (B(n) + B(n + 1)) / 2 : B(n))));
|
|
1371
|
+
let r = Ae.get(t) ?? xe(e, n);
|
|
1372
|
+
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;
|
|
1373
|
+
let i = J(t).width * p / 2 + 4 * p, a = c(n);
|
|
1374
|
+
b ? a = (c(n) + c(_e(e, n))) / 2 : r === "middle" && n === 0 ? a += i : r === "middle" && n === w && (a -= i);
|
|
1280
1375
|
let o = l(M(e, n)), s = {
|
|
1281
1376
|
middle: (l(N(e, n)) - o) / 2,
|
|
1282
1377
|
above: -7 * p,
|
|
@@ -1285,30 +1380,30 @@ var Xe = (e) => {
|
|
|
1285
1380
|
R(t, a, o + s[r], O, f);
|
|
1286
1381
|
});
|
|
1287
1382
|
});
|
|
1288
|
-
let
|
|
1383
|
+
let Me = (e) => {
|
|
1289
1384
|
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(...
|
|
1385
|
+
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
1386
|
x: e,
|
|
1292
1387
|
y: a(e)
|
|
1293
1388
|
})))?.outside.map((e) => e.x) ?? []));
|
|
1294
1389
|
let c = [];
|
|
1295
1390
|
for (let t of r) {
|
|
1296
1391
|
let n = o[e][t];
|
|
1297
|
-
c.includes(t) || n.dataset.place === "none" || c.every((t) =>
|
|
1392
|
+
c.includes(t) || n.dataset.place === "none" || c.every((t) => Oe([o[e][t], n], p, 1e3, f) === 1) && c.push(t);
|
|
1298
1393
|
}
|
|
1299
1394
|
return new Set(c);
|
|
1300
|
-
},
|
|
1395
|
+
}, 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
1396
|
for (let e of a) {
|
|
1302
|
-
let n = t.pick.mode === "all" || t.pick.mode === "auto" &&
|
|
1303
|
-
|
|
1397
|
+
let n = t.pick.mode === "all" || t.pick.mode === "auto" && Ne(e) ? null : Me(e);
|
|
1398
|
+
Pe.set(e, n), n && o[e].forEach((e, t) => {
|
|
1304
1399
|
e.dataset.place !== "none" && !n.has(t) && e.setAttribute("data-left-out", "");
|
|
1305
1400
|
});
|
|
1306
1401
|
}
|
|
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) ? [] :
|
|
1402
|
+
if (!v && !b && a.some((e) => Pe.get(e))) {
|
|
1403
|
+
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
1404
|
s: e,
|
|
1310
1405
|
i: t
|
|
1311
|
-
}))), d = ({ s: e, i: n }) => t.numbersAtEnd && n ===
|
|
1406
|
+
}))), d = ({ s: e, i: n }) => t.numbersAtEnd && n === Se(e), m = u.filter((e) => !d(e)), h = ({ s: e, i: t }) => {
|
|
1312
1407
|
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
1408
|
return (r ?? i) !== void 0 && (r === void 0 || n <= r) && (i === void 0 || n <= i) ? [
|
|
1314
1409
|
"below",
|
|
@@ -1326,7 +1421,7 @@ var Xe = (e) => {
|
|
|
1326
1421
|
"before"
|
|
1327
1422
|
];
|
|
1328
1423
|
}, _ = ({ s: t, i: n }, r) => {
|
|
1329
|
-
let i =
|
|
1424
|
+
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
1425
|
return r === "outside" ? [
|
|
1331
1426
|
l,
|
|
1332
1427
|
c - 7 * p - a,
|
|
@@ -1371,7 +1466,7 @@ var Xe = (e) => {
|
|
|
1371
1466
|
...x,
|
|
1372
1467
|
...l,
|
|
1373
1468
|
...b
|
|
1374
|
-
].some((t) =>
|
|
1469
|
+
].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
1470
|
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
1471
|
});
|
|
1377
1472
|
m.forEach((e, t) => {
|
|
@@ -1383,45 +1478,45 @@ var Xe = (e) => {
|
|
|
1383
1478
|
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
1479
|
});
|
|
1385
1480
|
}
|
|
1386
|
-
b ||
|
|
1387
|
-
let n =
|
|
1481
|
+
b || de((e, t) => {
|
|
1482
|
+
let n = Pe.get(e);
|
|
1388
1483
|
return n ? n.has(t) : E >= 10 * p;
|
|
1389
1484
|
}), t.pointOf = (e) => {
|
|
1390
1485
|
let t = a.filter((t) => !A(t, e)).map((t) => P(t, e));
|
|
1391
1486
|
return t.length ? t.reduce((e, t) => t[1] < e[1] ? t : e) : null;
|
|
1392
1487
|
};
|
|
1393
|
-
let
|
|
1394
|
-
let n =
|
|
1488
|
+
let Fe = (y ? [] : s).map((e, t) => {
|
|
1489
|
+
let n = Se(t), [r, i] = P(t, n);
|
|
1395
1490
|
return {
|
|
1396
1491
|
name: e,
|
|
1397
1492
|
s: t,
|
|
1398
|
-
x: (b ? r + E / 2 : r) +
|
|
1493
|
+
x: (b ? r + E / 2 : r) + Ee,
|
|
1399
1494
|
y: v ? (i + l(N(t, n))) / 2 : i
|
|
1400
1495
|
};
|
|
1401
|
-
}),
|
|
1402
|
-
for (let e of
|
|
1496
|
+
}), Ie = (s[0] ? J(s[0]).height : 0) * p;
|
|
1497
|
+
for (let e of Ce(Fe, Ie)) {
|
|
1403
1498
|
if (R(e.name, e.x, e.y, O, f), !t.numbersAtEnd) continue;
|
|
1404
|
-
let n = o[e.s][
|
|
1499
|
+
let n = o[e.s][Se(e.s)];
|
|
1405
1500
|
n.dataset.place = "before", n.removeAttribute("data-left-out"), n.removeAttribute("data-cut"), R(n, e.x - 4 * p, e.y, O, f);
|
|
1406
1501
|
}
|
|
1407
|
-
let
|
|
1502
|
+
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
1503
|
y || _.appendChild(F("line", {
|
|
1409
1504
|
class: i,
|
|
1410
1505
|
x1: 0,
|
|
1411
1506
|
x2: c(w) + c(0),
|
|
1412
|
-
y1:
|
|
1413
|
-
y2:
|
|
1507
|
+
y1: ze,
|
|
1508
|
+
y2: ze
|
|
1414
1509
|
}));
|
|
1415
1510
|
}
|
|
1416
|
-
}),
|
|
1511
|
+
}), ct = st(!1), lt = st(!0), ut = /* @__PURE__ */ new Set(), dt = (t, n) => {
|
|
1417
1512
|
if (Math.abs(t - n) <= Math.abs(n) / 100) return;
|
|
1418
1513
|
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
|
-
},
|
|
1514
|
+
ut.has(r) || (ut.add(r), console.warn(r));
|
|
1515
|
+
}, ft = {
|
|
1421
1516
|
segments: (e) => {
|
|
1422
1517
|
let t = 0, n = !1;
|
|
1423
1518
|
return e.map((e) => {
|
|
1424
|
-
if (e.isTotal) return n &&
|
|
1519
|
+
if (e.isTotal) return n && dt(e.value, t), n = !1, t = e.value, {
|
|
1425
1520
|
...e,
|
|
1426
1521
|
from: 0,
|
|
1427
1522
|
to: e.value,
|
|
@@ -1439,16 +1534,16 @@ var Xe = (e) => {
|
|
|
1439
1534
|
breakable: !0,
|
|
1440
1535
|
headroom: ({ labelHeight: e, badgeHeight: t, hasAnnotations: n, unit: r }) => e + 6 * r + (n ? t * 1.6 : 0),
|
|
1441
1536
|
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 =
|
|
1537
|
+
let f = n(0), p = ye(l, a, s), m = d ?? "center", h = e.map((t, r) => {
|
|
1443
1538
|
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
1539
|
return {
|
|
1445
1540
|
top: i,
|
|
1446
1541
|
length: a,
|
|
1447
1542
|
down: t.kind === "down" || t.kind === "total" && (c ? t.to >= 0 : t.to < 0),
|
|
1448
|
-
inside: !o && !p &&
|
|
1543
|
+
inside: !o && !p && be(l[r], a, s)
|
|
1449
1544
|
};
|
|
1450
|
-
}), g = l[0] ?
|
|
1451
|
-
for (let [e, t] of h.entries()) t.inside && (_ = Math.min(_, (a -
|
|
1545
|
+
}), g = l[0] ? J(l[0]).height * s * .56 : 0, _ = Infinity;
|
|
1546
|
+
for (let [e, t] of h.entries()) t.inside && (_ = Math.min(_, (a - J(l[e]).width * s) / 2));
|
|
1452
1547
|
let v = e.length, y = (e, t, n = !1) => `--start:${(e / v).toFixed(4)}; --span:${(t / v).toFixed(4)}; --ease:${n ? A : "linear"};`;
|
|
1453
1548
|
e.forEach((r, i) => {
|
|
1454
1549
|
let o = e[i + 1];
|
|
@@ -1480,7 +1575,7 @@ var Xe = (e) => {
|
|
|
1480
1575
|
b.style.setProperty("--start", (i / v).toFixed(4)), b.style.setProperty("--span", (1 / v).toFixed(4));
|
|
1481
1576
|
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
1577
|
b.dataset.place = p ? "inside" : "outside", b.dataset.kind = n.kind;
|
|
1483
|
-
let T = p ? w : n.kind === "down" ? u + d +
|
|
1578
|
+
let T = p ? w : n.kind === "down" ? u + d + J(b).height * s + 3 * s : u - 3 * s;
|
|
1484
1579
|
R(b, t(i), T, O, o);
|
|
1485
1580
|
}), c.appendChild(F("line", {
|
|
1486
1581
|
class: i,
|
|
@@ -1500,7 +1595,7 @@ var Xe = (e) => {
|
|
|
1500
1595
|
let i = performance.now(), a = r(), o = performance.now() - i, s = n.querySelectorAll("tbody tr").length;
|
|
1501
1596
|
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
1597
|
}
|
|
1503
|
-
},
|
|
1598
|
+
}, pt = (e) => {
|
|
1504
1599
|
let t = (e?.textContent || "").trim(), n = t.match(/^(.*?)(-?\d+(?:[.,]\d+)?)(.*)$/);
|
|
1505
1600
|
return {
|
|
1506
1601
|
raw: t,
|
|
@@ -1510,14 +1605,14 @@ var Xe = (e) => {
|
|
|
1510
1605
|
missing: !n,
|
|
1511
1606
|
value: n ? Number.parseFloat(n[2].replace(",", ".")) : 0
|
|
1512
1607
|
};
|
|
1513
|
-
},
|
|
1514
|
-
let n =
|
|
1608
|
+
}, mt = (e) => Array.from(e.querySelector("thead tr:last-child")?.children ?? []).slice(1).flatMap((e, t) => e.hasAttribute("data-note") ? [t] : []), ht = (e, t) => {
|
|
1609
|
+
let n = mt(e), r = e.querySelectorAll("tbody tr")[t]?.querySelectorAll("td") ?? [];
|
|
1515
1610
|
return n.map((e) => r[e]).find((e) => e?.textContent?.trim()) ?? null;
|
|
1516
|
-
},
|
|
1517
|
-
let n =
|
|
1611
|
+
}, gt = (e, t = "data-i18n") => {
|
|
1612
|
+
let n = mt(e);
|
|
1518
1613
|
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(
|
|
1614
|
+
let i = e.querySelector("th"), a = Array.from(e.querySelectorAll("td")), o = a.filter((e, t) => !n.includes(t)).map(pt);
|
|
1615
|
+
o.length || o.push(pt(null));
|
|
1521
1616
|
let s = n.map((e) => a[e]).find((e) => e?.textContent?.trim());
|
|
1522
1617
|
return {
|
|
1523
1618
|
...o[0],
|
|
@@ -1533,8 +1628,8 @@ var Xe = (e) => {
|
|
|
1533
1628
|
slot: r
|
|
1534
1629
|
};
|
|
1535
1630
|
});
|
|
1536
|
-
},
|
|
1537
|
-
let r =
|
|
1631
|
+
}, _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") => {
|
|
1632
|
+
let r = _t(e), i = Math.max(1, q(t.map((e) => e.cells.length)));
|
|
1538
1633
|
return Array.from({ length: i }, (e, t) => {
|
|
1539
1634
|
let i = r[t];
|
|
1540
1635
|
return {
|
|
@@ -1542,12 +1637,12 @@ var Xe = (e) => {
|
|
|
1542
1637
|
key: n && i?.getAttribute(n) || null,
|
|
1543
1638
|
focus: i?.getAttribute("data-kind") === "focus",
|
|
1544
1639
|
marker: i?.getAttribute("data-marker") ?? null,
|
|
1545
|
-
line:
|
|
1640
|
+
line: vt(i?.getAttribute("data-line")),
|
|
1546
1641
|
group: !!i?.hasAttribute("data-group"),
|
|
1547
1642
|
chart: i?.getAttribute("data-chart") === "line" ? "line" : null
|
|
1548
1643
|
};
|
|
1549
1644
|
});
|
|
1550
|
-
},
|
|
1645
|
+
}, bt = (t, n) => {
|
|
1551
1646
|
if (!n) return;
|
|
1552
1647
|
let r = /* @__PURE__ */ new Map();
|
|
1553
1648
|
for (let i of t) {
|
|
@@ -1560,7 +1655,7 @@ var Xe = (e) => {
|
|
|
1560
1655
|
i.querySelectorAll("tbody th").forEach((e, r) => {
|
|
1561
1656
|
e.getAttribute(n) || e.setAttribute(n, `${t}-row${r + 1}`);
|
|
1562
1657
|
});
|
|
1563
|
-
let a =
|
|
1658
|
+
let a = _t(i);
|
|
1564
1659
|
a.length > 1 && a.forEach((e, r) => {
|
|
1565
1660
|
e.getAttribute(n) || e.setAttribute(n, `${t}-col${r + 1}`);
|
|
1566
1661
|
}), a.forEach((e, r) => {
|
|
@@ -1571,7 +1666,7 @@ var Xe = (e) => {
|
|
|
1571
1666
|
a.includes(r) || a.push(r), e.getAttribute(n) || e.setAttribute(n, `${t}-group${a.indexOf(r) + 1}`);
|
|
1572
1667
|
});
|
|
1573
1668
|
});
|
|
1574
|
-
let o =
|
|
1669
|
+
let o = mt(i);
|
|
1575
1670
|
i.querySelectorAll("tbody tr").forEach((e, r) => {
|
|
1576
1671
|
let i = e.querySelectorAll("td");
|
|
1577
1672
|
for (let e of o) {
|
|
@@ -1580,93 +1675,93 @@ var Xe = (e) => {
|
|
|
1580
1675
|
}
|
|
1581
1676
|
}), Q?.log?.(`Keys for "${t}" written onto ${i.querySelectorAll("tbody th").length} rows`);
|
|
1582
1677
|
}
|
|
1583
|
-
},
|
|
1678
|
+
}, xt = (e) => Number(e.toPrecision(12)), St = (e, t) => {
|
|
1584
1679
|
let n = e / Math.max(1, t) || 1, r = 10 ** Math.floor(Math.log10(n)), i = n / r;
|
|
1585
|
-
return
|
|
1586
|
-
},
|
|
1680
|
+
return xt((i < 1.42 ? 1 : i < 3.17 ? 2 : i < 7.08 ? 5 : 10) * r);
|
|
1681
|
+
}, Ct = (e, t, n) => {
|
|
1587
1682
|
let r = [];
|
|
1588
|
-
for (let i = Math.ceil(e / n - 1e-9); i * n <= t + n * 1e-9; i++) r.push(
|
|
1683
|
+
for (let i = Math.ceil(e / n - 1e-9); i * n <= t + n * 1e-9; i++) r.push(xt(i * n));
|
|
1589
1684
|
return r;
|
|
1590
|
-
},
|
|
1685
|
+
}, wt = (e, t = e) => {
|
|
1591
1686
|
do {
|
|
1592
1687
|
let t = Math.round(e / 10 ** Math.floor(Math.log10(e) + 1e-9));
|
|
1593
|
-
e =
|
|
1688
|
+
e = xt(e * (t === 2 ? 2.5 : 2));
|
|
1594
1689
|
} while (Math.abs(e / t - Math.round(e / t)) > 1e-9);
|
|
1595
1690
|
return e;
|
|
1596
|
-
},
|
|
1691
|
+
}, Tt = (e) => {
|
|
1597
1692
|
let t = (e ?? "").trim().split(/\s+/).map(Number.parseFloat);
|
|
1598
1693
|
return t.length > 1 && t.every(Number.isFinite) ? t.sort((e, t) => e - t) : null;
|
|
1599
|
-
},
|
|
1694
|
+
}, Et = (e, t, n) => {
|
|
1600
1695
|
if (n && n.length > 2) return {
|
|
1601
1696
|
min: n[0],
|
|
1602
1697
|
max: n[n.length - 1],
|
|
1603
1698
|
step: 0,
|
|
1604
1699
|
ticks: n
|
|
1605
1700
|
};
|
|
1606
|
-
let r = n?.[0] ?? -
|
|
1701
|
+
let r = n?.[0] ?? -q(e.map((e) => -e)), i = n?.[1] ?? q(e);
|
|
1607
1702
|
if (!n) {
|
|
1608
1703
|
let e = (i - r || Math.abs(i) || 1) * .05;
|
|
1609
1704
|
r -= e, i += e;
|
|
1610
1705
|
}
|
|
1611
|
-
let a =
|
|
1706
|
+
let a = St(i - r, t);
|
|
1612
1707
|
return {
|
|
1613
1708
|
min: r,
|
|
1614
1709
|
max: i,
|
|
1615
1710
|
step: a,
|
|
1616
|
-
ticks:
|
|
1711
|
+
ticks: Ct(r, i, a)
|
|
1617
1712
|
};
|
|
1618
|
-
},
|
|
1713
|
+
}, Dt = (e, t) => {
|
|
1619
1714
|
let { step: n, ticks: r } = e;
|
|
1620
|
-
for (; n && r.length > 2 && !t(r);) n =
|
|
1715
|
+
for (; n && r.length > 2 && !t(r);) n = wt(n, e.step), r = Ct(e.min, e.max, n);
|
|
1621
1716
|
return {
|
|
1622
1717
|
...e,
|
|
1623
1718
|
step: n,
|
|
1624
1719
|
ticks: r
|
|
1625
1720
|
};
|
|
1626
|
-
},
|
|
1627
|
-
if (
|
|
1721
|
+
}, Ot = null, kt = (e) => {
|
|
1722
|
+
if (Ot ?? (Ot = document.createElement("canvas").getContext("2d", { willReadFrequently: !0 })), !Ot) return [
|
|
1628
1723
|
0,
|
|
1629
1724
|
0,
|
|
1630
1725
|
0,
|
|
1631
1726
|
1
|
|
1632
1727
|
];
|
|
1633
|
-
|
|
1634
|
-
let [t, n, r, i] =
|
|
1728
|
+
Ot.clearRect(0, 0, 1, 1), Ot.fillStyle = e, Ot.fillRect(0, 0, 1, 1);
|
|
1729
|
+
let [t, n, r, i] = Ot.getImageData(0, 0, 1, 1).data;
|
|
1635
1730
|
return [
|
|
1636
1731
|
t,
|
|
1637
1732
|
n,
|
|
1638
1733
|
r,
|
|
1639
1734
|
i / 255
|
|
1640
1735
|
];
|
|
1641
|
-
},
|
|
1736
|
+
}, At = ([e, t, n]) => {
|
|
1642
1737
|
let r = (e) => {
|
|
1643
1738
|
let t = e / 255;
|
|
1644
1739
|
return t <= .03928 ? t / 12.92 : ((t + .055) / 1.055) ** 2.4;
|
|
1645
1740
|
};
|
|
1646
1741
|
return .2126 * r(e) + .7152 * r(t) + .0722 * r(n);
|
|
1647
|
-
},
|
|
1742
|
+
}, jt = (e) => getComputedStyle(e).getPropertyValue("--tablechart-contrast-wcag").trim() === "3" ? 3 : 2, Mt = ([e, t, n]) => {
|
|
1648
1743
|
let r = .2126729 * (e / 255) ** 2.4 + .7151522 * (t / 255) ** 2.4 + .072175 * (n / 255) ** 2.4;
|
|
1649
1744
|
return r < .022 ? r + (.022 - r) ** 1.414 : r;
|
|
1650
|
-
},
|
|
1651
|
-
let n =
|
|
1745
|
+
}, Nt = (e, t) => {
|
|
1746
|
+
let n = Mt(e), r = Mt(t);
|
|
1652
1747
|
if (Math.abs(r - n) < 5e-4) return 0;
|
|
1653
1748
|
let i = r > n ? (r ** .56 - n ** .57) * 1.14 : (r ** .65 - n ** .62) * 1.14;
|
|
1654
1749
|
return Math.abs(i) < .1 ? 0 : (Math.abs(i) - .027) * 100;
|
|
1655
|
-
},
|
|
1656
|
-
let [n, r] = [
|
|
1750
|
+
}, Pt = (e, t, n) => e === 3 ? Nt(t, n) : Ft(t, n), Ft = (e, t) => {
|
|
1751
|
+
let [n, r] = [At(e), At(t)].sort((e, t) => t - e);
|
|
1657
1752
|
return (n + .05) / (r + .05);
|
|
1658
|
-
},
|
|
1753
|
+
}, It = (e, t) => {
|
|
1659
1754
|
let n = document.createElement("span");
|
|
1660
1755
|
n.style.color = t, e.append(n);
|
|
1661
|
-
let r =
|
|
1756
|
+
let r = kt(getComputedStyle(n).color);
|
|
1662
1757
|
return n.remove(), r;
|
|
1663
|
-
},
|
|
1758
|
+
}, Lt = (e) => {
|
|
1664
1759
|
let t = [], n = null;
|
|
1665
1760
|
for (let r = e; r && !n; r = r.parentElement) {
|
|
1666
|
-
let { background: e, backgroundColor: i } = r.dataset, a =
|
|
1761
|
+
let { background: e, backgroundColor: i } = r.dataset, a = kt(i || (e && CSS.supports("color", e) ? e : "") || getComputedStyle(r).backgroundColor);
|
|
1667
1762
|
a[3] >= 1 ? n = a : a[3] > 0 && t.push(a);
|
|
1668
1763
|
}
|
|
1669
|
-
n ?? (n =
|
|
1764
|
+
n ?? (n = It(e, "Canvas"));
|
|
1670
1765
|
for (let [e, r, i, a] of t.reverse()) n = [
|
|
1671
1766
|
e,
|
|
1672
1767
|
r,
|
|
@@ -1674,56 +1769,56 @@ var Xe = (e) => {
|
|
|
1674
1769
|
].map((e, t) => e * a + n[t] * (1 - a));
|
|
1675
1770
|
let r = `rgb(${n.slice(0, 3).map(Math.round).join(" ")})`;
|
|
1676
1771
|
return e.style.getPropertyValue("--_surface") !== r && (e.style.setProperty("--_surface", r), !0);
|
|
1677
|
-
},
|
|
1772
|
+
}, 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
1773
|
255,
|
|
1679
1774
|
255,
|
|
1680
1775
|
255
|
|
1681
|
-
],
|
|
1776
|
+
], Vt = [
|
|
1682
1777
|
0,
|
|
1683
1778
|
0,
|
|
1684
1779
|
0
|
|
1685
|
-
],
|
|
1686
|
-
let r =
|
|
1687
|
-
return r >= t ?
|
|
1688
|
-
},
|
|
1780
|
+
], Ht = (e, t, n) => {
|
|
1781
|
+
let r = Pt(n, Bt, e), i = Pt(n, Vt, e);
|
|
1782
|
+
return r >= t ? Bt : i >= t ? Vt : n === 2 && r >= 4.5 || r > i ? Bt : Vt;
|
|
1783
|
+
}, Ut = (e) => {
|
|
1689
1784
|
let t = e.querySelectorAll(".tablechart-value[data-place='inside']");
|
|
1690
1785
|
if (!t.length) return;
|
|
1691
|
-
let n =
|
|
1692
|
-
let [r, i, a, o] =
|
|
1786
|
+
let n = Rt(e).slice(0, 3), r = At(n) > .179, i = (t, n) => {
|
|
1787
|
+
let [r, i, a, o] = It(e, `var(${t}, transparent)`);
|
|
1693
1788
|
return o > 0 ? [
|
|
1694
1789
|
r,
|
|
1695
1790
|
i,
|
|
1696
1791
|
a
|
|
1697
1792
|
] : n;
|
|
1698
|
-
}, a =
|
|
1793
|
+
}, 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
1794
|
for (let n of t) {
|
|
1700
|
-
let t =
|
|
1795
|
+
let t = zt(e, n);
|
|
1701
1796
|
if (!t || n.hasAttribute("data-left-out")) continue;
|
|
1702
|
-
let r =
|
|
1797
|
+
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
1798
|
n.style.setProperty("--_ink", `rgb(${s.join(" ")})`);
|
|
1704
1799
|
}
|
|
1705
|
-
},
|
|
1800
|
+
}, Wt = (e) => {
|
|
1706
1801
|
let t = e.querySelectorAll(".tablechart-name:not([data-place='legend'])");
|
|
1707
1802
|
if (!t.length) return;
|
|
1708
|
-
let n =
|
|
1803
|
+
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
1804
|
for (let o of t) {
|
|
1710
1805
|
let t = e.querySelector(`.tablechart-series[data-series="${o.dataset.series}"]:not([data-muted])`);
|
|
1711
1806
|
if (o.style.removeProperty("--_ink"), !t) continue;
|
|
1712
|
-
let s =
|
|
1807
|
+
let s = kt(getComputedStyle(t).stroke).slice(0, 3);
|
|
1713
1808
|
for (let e = 0; e <= 20; e++) {
|
|
1714
1809
|
let t = s.map((t, n) => Math.round(t + (a[n] - t) * e / 20));
|
|
1715
|
-
if (!(
|
|
1810
|
+
if (!(Pt(n, t, i) < r && e < 20)) {
|
|
1716
1811
|
e && o.style.setProperty("--_ink", `rgb(${t.join(" ")})`);
|
|
1717
1812
|
break;
|
|
1718
1813
|
}
|
|
1719
1814
|
}
|
|
1720
1815
|
}
|
|
1721
|
-
},
|
|
1816
|
+
}, Gt = [
|
|
1722
1817
|
"axis-break",
|
|
1723
1818
|
"trend",
|
|
1724
1819
|
"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) =>
|
|
1820
|
+
], Kt = (e, t = !1) => {
|
|
1821
|
+
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
1822
|
if (!n && !r.some(o) && !i.some(o) && !s.flat().some(o) && !a.some(o) || t && !n) return null;
|
|
1728
1823
|
let c = [], l = /* @__PURE__ */ new Map(), u = [], d = (e) => {
|
|
1729
1824
|
let t = e === null ? void 0 : l.get(e);
|
|
@@ -1785,7 +1880,7 @@ var Xe = (e) => {
|
|
|
1785
1880
|
count: c.length,
|
|
1786
1881
|
indexes: c
|
|
1787
1882
|
};
|
|
1788
|
-
},
|
|
1883
|
+
}, qt = (e) => {
|
|
1789
1884
|
let t = e.plan;
|
|
1790
1885
|
if (!t) return;
|
|
1791
1886
|
let n = (t) => t === null || e.step - t >= 1;
|
|
@@ -1796,7 +1891,7 @@ var Xe = (e) => {
|
|
|
1796
1891
|
let u = r.hasAttribute("data-flat") ? (l - e + 1) / (i - e + 1) : i > e ? Math.max(0, l - e) / (i - e) : 0;
|
|
1797
1892
|
r.style.setProperty("--reveal", String(u));
|
|
1798
1893
|
}
|
|
1799
|
-
},
|
|
1894
|
+
}, Jt = (e) => {
|
|
1800
1895
|
let t = e.plan;
|
|
1801
1896
|
if (!t) return;
|
|
1802
1897
|
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 +1969,12 @@ var Xe = (e) => {
|
|
|
1874
1969
|
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
1970
|
}
|
|
1876
1971
|
}
|
|
1877
|
-
|
|
1878
|
-
},
|
|
1972
|
+
qt(e);
|
|
1973
|
+
}, Yt = (e, t, n = !1) => {
|
|
1879
1974
|
let r = e.plan;
|
|
1880
1975
|
if (!r) return;
|
|
1881
1976
|
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)),
|
|
1977
|
+
e.step = i, e.figure.style.setProperty("--_step", String(i)), qt(e);
|
|
1883
1978
|
let [o, s] = e.controls?.querySelectorAll("button") ?? [];
|
|
1884
1979
|
o && (o.disabled = i === 0), s && (s.disabled = i === r.count), a && !n && e.figure.dispatchEvent(new CustomEvent("tablechart:step", {
|
|
1885
1980
|
bubbles: !0,
|
|
@@ -1888,7 +1983,7 @@ var Xe = (e) => {
|
|
|
1888
1983
|
steps: r.count
|
|
1889
1984
|
}
|
|
1890
1985
|
}));
|
|
1891
|
-
},
|
|
1986
|
+
}, Xt = (e, t, n) => {
|
|
1892
1987
|
let r = document.createElement("div");
|
|
1893
1988
|
r.className = "tablechart-controls";
|
|
1894
1989
|
let i = (r) => {
|
|
@@ -1917,14 +2012,14 @@ var Xe = (e) => {
|
|
|
1917
2012
|
]), i;
|
|
1918
2013
|
};
|
|
1919
2014
|
return r.append(i("previous"), i("next")), r;
|
|
1920
|
-
},
|
|
2015
|
+
}, Zt = (e, t, n, r = {
|
|
1921
2016
|
x: 0,
|
|
1922
2017
|
y: 0,
|
|
1923
2018
|
scale: 1
|
|
1924
2019
|
}, i = 2, a = 8, o = 12) => {
|
|
1925
2020
|
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
2021
|
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
|
-
},
|
|
2022
|
+
}, Qt = "tablechart-tooltip", $t = [
|
|
1928
2023
|
"--tablechart-surface",
|
|
1929
2024
|
"--_surface",
|
|
1930
2025
|
"--tablechart-tooltip-surface",
|
|
@@ -1933,51 +2028,51 @@ var Xe = (e) => {
|
|
|
1933
2028
|
"--tablechart-tooltip-radius",
|
|
1934
2029
|
"--tablechart-tooltip-padding",
|
|
1935
2030
|
"--tablechart-tooltip-shadow"
|
|
1936
|
-
], $ = null,
|
|
1937
|
-
clearTimeout(
|
|
1938
|
-
},
|
|
1939
|
-
if (
|
|
1940
|
-
|
|
1941
|
-
e.pointerType === "mouse" && (
|
|
2031
|
+
], $ = null, en, tn, nn = null, rn = null, an = 0, on = () => {
|
|
2032
|
+
clearTimeout(an), $ && nn && ($.hidden = !0, nn = null, rn = null);
|
|
2033
|
+
}, sn = !1, cn = !0, ln = NaN, un = NaN, dn = !1, fn = () => {
|
|
2034
|
+
if (dn) return;
|
|
2035
|
+
dn = !0, document.addEventListener("pointermove", (e) => {
|
|
2036
|
+
e.pointerType === "mouse" && (cn = e.screenX !== ln || e.screenY !== un, ln = e.screenX, un = e.screenY, cn && (sn = !1));
|
|
1942
2037
|
}, {
|
|
1943
2038
|
capture: !0,
|
|
1944
2039
|
passive: !0
|
|
1945
2040
|
});
|
|
1946
2041
|
let e = () => {
|
|
1947
|
-
|
|
2042
|
+
sn = !0, on();
|
|
1948
2043
|
};
|
|
1949
2044
|
document.addEventListener("keydown", e, !0), window.addEventListener("scroll", e, {
|
|
1950
2045
|
capture: !0,
|
|
1951
2046
|
passive: !0
|
|
1952
2047
|
});
|
|
1953
|
-
},
|
|
2048
|
+
}, pn = (e, t) => t / Number.parseFloat(getComputedStyle(e).width) || 1, mn = (e) => {
|
|
1954
2049
|
let t = e.tooltipparent;
|
|
1955
2050
|
return (typeof t == "string" ? document.querySelector(t) : t) ?? document.body;
|
|
1956
|
-
},
|
|
1957
|
-
clearTimeout(
|
|
1958
|
-
},
|
|
2051
|
+
}, hn = () => {
|
|
2052
|
+
clearTimeout(an), an = window.setTimeout(on, 120);
|
|
2053
|
+
}, gn = () => {
|
|
1959
2054
|
let e = document.createElement("div");
|
|
1960
|
-
return e.className =
|
|
2055
|
+
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
2056
|
let n = t.target;
|
|
1962
|
-
|
|
1963
|
-
}), window.addEventListener("resize",
|
|
1964
|
-
},
|
|
2057
|
+
nn && !nn.plot.contains(n) && !e.contains(n) && on();
|
|
2058
|
+
}), window.addEventListener("resize", on), e;
|
|
2059
|
+
}, _n = (e, t) => {
|
|
1965
2060
|
let n = t ? t.style.getPropertyValue("--step") : "x";
|
|
1966
2061
|
return n === "" || Number(n) < e.step;
|
|
1967
|
-
},
|
|
1968
|
-
let n = e.svg.querySelector(`[data-series="${t + 1}"]:not(.tablechart-hole)`);
|
|
2062
|
+
}, vn = (e, t) => {
|
|
2063
|
+
let n = e.svg.querySelector(`[data-series="${t + 1}"]:not(.tablechart-hole, .tablechart-area:not([data-stacked]))`);
|
|
1969
2064
|
if (!n) return;
|
|
1970
2065
|
let r = getComputedStyle(n);
|
|
1971
2066
|
return r.fill && r.fill !== "none" ? r.fill : r.stroke;
|
|
1972
|
-
},
|
|
2067
|
+
}, yn = (e, t, n) => {
|
|
1973
2068
|
let r = e.series.length > 1, i = [];
|
|
1974
2069
|
for (let [n, a] of e.seriesValues.entries()) {
|
|
1975
|
-
if (!
|
|
2070
|
+
if (!_n(e, a[t])) continue;
|
|
1976
2071
|
let o = r ? e.figure.querySelector(`.tablechart-name[data-series="${n + 1}"]`) : null;
|
|
1977
2072
|
i.push({
|
|
1978
2073
|
name: r ? o?.textContent ?? e.series[n].name : "",
|
|
1979
2074
|
value: a[t].textContent ?? "",
|
|
1980
|
-
colour: r ?
|
|
2075
|
+
colour: r ? vn(e, n) : void 0,
|
|
1981
2076
|
sample: o ? {
|
|
1982
2077
|
marker: o.dataset.marker ?? null,
|
|
1983
2078
|
open: o.hasAttribute("data-open"),
|
|
@@ -1988,11 +2083,11 @@ var Xe = (e) => {
|
|
|
1988
2083
|
});
|
|
1989
2084
|
}
|
|
1990
2085
|
let a = e.totals[t];
|
|
1991
|
-
return i.length > 1 &&
|
|
2086
|
+
return i.length > 1 && _n(e, a) && i.push({
|
|
1992
2087
|
name: n.totallabel,
|
|
1993
2088
|
value: a.textContent ?? ""
|
|
1994
2089
|
}), i;
|
|
1995
|
-
},
|
|
2090
|
+
}, bn = (e, t) => {
|
|
1996
2091
|
if (e.type.centre && e.values[t]) return e.values[t].getBoundingClientRect();
|
|
1997
2092
|
let n = e.pointOf?.(t);
|
|
1998
2093
|
if (n) {
|
|
@@ -2012,49 +2107,49 @@ var Xe = (e) => {
|
|
|
2012
2107
|
100
|
|
2013
2108
|
];
|
|
2014
2109
|
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
|
-
|
|
2110
|
+
}, xn = (e, t, n) => {
|
|
2111
|
+
if (clearTimeout(an), nn === e && rn === t) return;
|
|
2112
|
+
let r = (e.type.tooltip ?? yn)(e, t, n);
|
|
2113
|
+
if (!r.length) return on();
|
|
2114
|
+
nn && nn !== e && on(), $ ?? ($ = gn());
|
|
2020
2115
|
let i = (e, t, n, r = !1, i) => {
|
|
2021
2116
|
let a = document.createElement("div");
|
|
2022
|
-
if (a.className = `${
|
|
2117
|
+
if (a.className = `${Qt}-line`, n) {
|
|
2023
2118
|
let e = document.createElement("span");
|
|
2024
|
-
e.className = `${
|
|
2119
|
+
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
2120
|
}
|
|
2026
2121
|
let o = document.createElement("span");
|
|
2027
|
-
if (o.className = `${
|
|
2122
|
+
if (o.className = `${Qt}-${r ? "title" : "name"}`, o.textContent = e, a.append(o), t) {
|
|
2028
2123
|
e && o.append(":");
|
|
2029
2124
|
let n = document.createElement("span");
|
|
2030
|
-
n.className = `${
|
|
2125
|
+
n.className = `${Qt}-value`, n.textContent = t, a.append(n);
|
|
2031
2126
|
}
|
|
2032
2127
|
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: `${
|
|
2128
|
+
}, 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"), {
|
|
2129
|
+
className: `${Qt}-note`,
|
|
2035
2130
|
textContent: c
|
|
2036
2131
|
})] : [];
|
|
2037
|
-
|
|
2132
|
+
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
2133
|
let u = getComputedStyle(e.figure);
|
|
2039
|
-
for (let e of
|
|
2134
|
+
for (let e of $t) {
|
|
2040
2135
|
let t = u.getPropertyValue(e).trim();
|
|
2041
2136
|
t ? $.style.setProperty(e, t) : $.style.removeProperty(e);
|
|
2042
2137
|
}
|
|
2043
2138
|
$.style.setProperty("--_color", u.color), $.style.colorScheme = u.colorScheme, $.style.fontFamily = u.fontFamily;
|
|
2044
|
-
let d =
|
|
2045
|
-
$.parentElement !== d && d.append($),
|
|
2139
|
+
let d = mn(n);
|
|
2140
|
+
$.parentElement !== d && d.append($), nn = e, rn = t, $.hidden = !1, $.style.left = "0px", $.style.top = "0px";
|
|
2046
2141
|
let f = $.getBoundingClientRect(), p = {
|
|
2047
2142
|
x: f.left,
|
|
2048
2143
|
y: f.top,
|
|
2049
|
-
scale:
|
|
2050
|
-
}, m =
|
|
2051
|
-
$.style.fontSize = `${Number.parseFloat(u.fontSize) * m / p.scale}px`,
|
|
2052
|
-
},
|
|
2144
|
+
scale: pn($, f.width)
|
|
2145
|
+
}, m = pn(e.plot, e.plot.getBoundingClientRect().width);
|
|
2146
|
+
$.style.fontSize = `${Number.parseFloat(u.fontSize) * m / p.scale}px`, Zt($, tn, bn(e, t), p);
|
|
2147
|
+
}, Sn = (e, t, n = !1) => {
|
|
2053
2148
|
let { plot: r } = e;
|
|
2054
|
-
r.setAttribute("data-hover", ""),
|
|
2149
|
+
r.setAttribute("data-hover", ""), fn();
|
|
2055
2150
|
let i = (t) => {
|
|
2056
2151
|
if (e.rowAt) {
|
|
2057
|
-
let n = r.getBoundingClientRect(), i =
|
|
2152
|
+
let n = r.getBoundingClientRect(), i = pn(r, n.width);
|
|
2058
2153
|
return e.rowAt((t.clientX - n.left) / i, (t.clientY - n.top) / i);
|
|
2059
2154
|
}
|
|
2060
2155
|
let n = t.target.closest?.("[data-row]")?.getAttribute("data-row");
|
|
@@ -2064,13 +2159,13 @@ var Xe = (e) => {
|
|
|
2064
2159
|
else if (t.getAttribute("data-row") === String(e + 1)) return !0;
|
|
2065
2160
|
return !1;
|
|
2066
2161
|
}, s = null, c = (a) => {
|
|
2067
|
-
if (a.type === "pointerdown")
|
|
2068
|
-
else if (a.pointerType === "mouse" && (!
|
|
2162
|
+
if (a.type === "pointerdown") sn = !1;
|
|
2163
|
+
else if (a.pointerType === "mouse" && (!cn || sn)) return;
|
|
2069
2164
|
if (!r.classList.contains("is-placed") || !e.figure.classList.contains("is-shown")) return;
|
|
2070
|
-
if (n && !e.figure.hasAttribute("data-left-out")) return
|
|
2165
|
+
if (n && !e.figure.hasAttribute("data-left-out")) return nn === e ? on() : void 0;
|
|
2071
2166
|
let c = i(a);
|
|
2072
|
-
if (s = c, c === null || o(c)) return
|
|
2073
|
-
|
|
2167
|
+
if (s = c, c === null || o(c)) return nn === e ? on() : void 0;
|
|
2168
|
+
xn(e, c, t);
|
|
2074
2169
|
}, l = (t) => {
|
|
2075
2170
|
let n = t.target;
|
|
2076
2171
|
return e.svg.contains(n) && n.hasAttribute("data-row") ? n : null;
|
|
@@ -2084,37 +2179,37 @@ var Xe = (e) => {
|
|
|
2084
2179
|
if (!r) return;
|
|
2085
2180
|
a.delete(r);
|
|
2086
2181
|
let i = Number(r.getAttribute("data-row")) - 1;
|
|
2087
|
-
s === i && !o(i) && !
|
|
2182
|
+
s === i && !o(i) && !sn && xn(e, i, t);
|
|
2088
2183
|
};
|
|
2089
2184
|
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,
|
|
2185
|
+
t.pointerType === "mouse" && (s = null, nn === e && hn());
|
|
2091
2186
|
});
|
|
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
|
-
},
|
|
2187
|
+
}, Cn = (e) => {
|
|
2188
|
+
nn === e && on();
|
|
2189
|
+
}, wn = {
|
|
2190
|
+
area: lt,
|
|
2191
|
+
bar: We,
|
|
2192
|
+
column: Ge,
|
|
2193
|
+
donut: Je,
|
|
2194
|
+
line: ct,
|
|
2195
|
+
waterfall: ft
|
|
2196
|
+
}, Tn = (e, t) => {
|
|
2197
|
+
wn[e] = t, Object.assign(En, t.annotations), Dn.splice(0, Infinity, ...Object.keys(En));
|
|
2198
|
+
}, En = {
|
|
2199
|
+
"axis-break": K,
|
|
2200
|
+
trend: Ne,
|
|
2201
|
+
bracket: fe,
|
|
2202
|
+
reference: je,
|
|
2203
|
+
note: ke
|
|
2204
|
+
}, Dn = Object.keys(En), On = (e) => {
|
|
2110
2205
|
let t = "";
|
|
2111
2206
|
for (let n = e.previousSibling; n && (t = (n.textContent ?? "") + t, !t.trim()); n = n.previousSibling);
|
|
2112
2207
|
return t.trim();
|
|
2113
|
-
},
|
|
2208
|
+
}, kn = [
|
|
2114
2209
|
"straight",
|
|
2115
2210
|
"step",
|
|
2116
2211
|
"smooth"
|
|
2117
|
-
],
|
|
2212
|
+
], An = (e, t, n, r, i) => {
|
|
2118
2213
|
let a = t === r, [o, s, c] = a ? [
|
|
2119
2214
|
Math.min(e, n),
|
|
2120
2215
|
Math.max(e, n),
|
|
@@ -2126,16 +2221,16 @@ var Xe = (e) => {
|
|
|
2126
2221
|
], 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
2222
|
for (let [e, t] of l) e > d && u.push([d, Math.min(e, s)]), d = Math.max(d, t);
|
|
2128
2223
|
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
|
-
},
|
|
2224
|
+
}, jn = (e, t) => {
|
|
2130
2225
|
let [n, r, i, a] = [
|
|
2131
2226
|
"x1",
|
|
2132
2227
|
"y1",
|
|
2133
2228
|
"x2",
|
|
2134
2229
|
"y2"
|
|
2135
|
-
].map((t) => Number(e.getAttribute(t))), o = F("path", { d:
|
|
2230
|
+
].map((t) => Number(e.getAttribute(t))), o = F("path", { d: An(n, r, i, a, t) });
|
|
2136
2231
|
for (let { name: t, value: n } of Array.from(e.attributes)) /^[xy][12]$/.test(t) || o.setAttribute(t, n);
|
|
2137
2232
|
e.replaceWith(o);
|
|
2138
|
-
},
|
|
2233
|
+
}, Mn = (e) => Array.from((e.getAttribute("d") ?? "").matchAll(/M(-?[\d.]+),(-?[\d.]+)([HV])(-?[\d.]+)/g), ([, e, t, n, r]) => n === "H" ? [
|
|
2139
2234
|
+e,
|
|
2140
2235
|
+t,
|
|
2141
2236
|
+r,
|
|
@@ -2145,19 +2240,19 @@ var Xe = (e) => {
|
|
|
2145
2240
|
+t,
|
|
2146
2241
|
+e,
|
|
2147
2242
|
+r
|
|
2148
|
-
]),
|
|
2243
|
+
]), 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
2244
|
let r = e.getAttribute(t);
|
|
2150
2245
|
return r === null ? n : r !== "false";
|
|
2151
|
-
},
|
|
2246
|
+
}, Fn = (e, t) => !!t.animate && e.getAttribute("data-chart-animate") !== "false", In = (e, t) => {
|
|
2152
2247
|
let n = e.dataset.chartShape;
|
|
2153
|
-
return n &&
|
|
2154
|
-
},
|
|
2248
|
+
return n && kn.includes(n) ? n : kn.includes(t.shape) ? t.shape : "straight";
|
|
2249
|
+
}, Ln = (e) => {
|
|
2155
2250
|
for (let t of e.querySelectorAll("br")) {
|
|
2156
|
-
if (t.previousElementSibling?.classList.contains("tablechart-sr") || /[.!?:;,…]$/.test(
|
|
2251
|
+
if (t.previousElementSibling?.classList.contains("tablechart-sr") || /[.!?:;,…]$/.test(On(t))) continue;
|
|
2157
2252
|
let e = document.createElement("span");
|
|
2158
2253
|
e.className = y, e.textContent = ". ", t.before(e);
|
|
2159
2254
|
}
|
|
2160
|
-
},
|
|
2255
|
+
}, Rn = (e, t, n) => {
|
|
2161
2256
|
let r = e.querySelector("table");
|
|
2162
2257
|
if (!r) return null;
|
|
2163
2258
|
let i = r.querySelector("tfoot [data-chart-total]");
|
|
@@ -2168,22 +2263,22 @@ var Xe = (e) => {
|
|
|
2168
2263
|
s && n.langattribute && o.setAttribute(n.langattribute, `${s}-total`);
|
|
2169
2264
|
let c = a.insertCell();
|
|
2170
2265
|
return c.setAttribute("data-chart-total", ""), c.dataset.value = t.dataset.value ?? "0", a.prepend(o), c;
|
|
2171
|
-
},
|
|
2266
|
+
}, zn = 0, Bn = (e) => {
|
|
2172
2267
|
let t = e.querySelector(":scope > figcaption");
|
|
2173
2268
|
if (!t) return;
|
|
2174
|
-
|
|
2269
|
+
Ln(t);
|
|
2175
2270
|
let n = (e) => e.hasAttribute("aria-label") || e.hasAttribute("aria-labelledby"), r = (e) => {
|
|
2176
|
-
t.id || (t.id = `tablechart-caption-${++
|
|
2271
|
+
t.id || (t.id = `tablechart-caption-${++zn}`), e.setAttribute("aria-labelledby", t.id);
|
|
2177
2272
|
};
|
|
2178
2273
|
e.tagName === "FIGURE" && !n(e) && r(e);
|
|
2179
2274
|
let i = e.querySelector("table");
|
|
2180
2275
|
i && !n(i) && !i.querySelector(":scope > caption") && r(i);
|
|
2181
|
-
},
|
|
2276
|
+
}, Vn = [
|
|
2182
2277
|
null,
|
|
2183
2278
|
"dashed",
|
|
2184
2279
|
"dotted",
|
|
2185
2280
|
"dash-dot"
|
|
2186
|
-
],
|
|
2281
|
+
], Hn = (t, n, r, i) => {
|
|
2187
2282
|
let a = t.closest("[data-chart-lines]")?.getAttribute("data-chart-lines"), o = i.lines;
|
|
2188
2283
|
if (a) try {
|
|
2189
2284
|
o = JSON.parse(a);
|
|
@@ -2192,19 +2287,19 @@ var Xe = (e) => {
|
|
|
2192
2287
|
}
|
|
2193
2288
|
(r === "line" || r === "area" ? n : n.filter((e) => e.chart)).forEach((e, t) => {
|
|
2194
2289
|
if (!o?.length) {
|
|
2195
|
-
e.line ?? (e.line =
|
|
2290
|
+
e.line ?? (e.line = Vn[Math.floor(t / 6) % Vn.length]);
|
|
2196
2291
|
return;
|
|
2197
2292
|
}
|
|
2198
2293
|
let n = o[t % o.length];
|
|
2199
2294
|
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
2295
|
});
|
|
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 =
|
|
2296
|
+
}, Un = (r, i, a = null) => {
|
|
2297
|
+
let o = a ?? (r.getAttribute("data-chart") || "column"), s = wn[o];
|
|
2298
|
+
if (!s) return console.warn(`[${e}] Unknown chart type "${o}". Known types: ${Object.keys(wn).join(", ")}.`), r.setAttribute("data-chart-empty", ""), null;
|
|
2299
|
+
let c = gt(r, i.langattribute);
|
|
2205
2300
|
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 =
|
|
2301
|
+
Bn(r);
|
|
2302
|
+
let l = yt(r, c, i.langattribute);
|
|
2208
2303
|
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
2304
|
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
2305
|
t && (console.warn(`[${e}] ${t}`), l = l.map((e) => ({
|
|
@@ -2212,7 +2307,7 @@ var Xe = (e) => {
|
|
|
2212
2307
|
chart: null
|
|
2213
2308
|
})));
|
|
2214
2309
|
}
|
|
2215
|
-
|
|
2310
|
+
Hn(r, l, o, i);
|
|
2216
2311
|
let u = l.some((e) => e.chart), d = l.length > 1;
|
|
2217
2312
|
d && r.style.setProperty("--_series-count", String(l.length));
|
|
2218
2313
|
let m = r.hasAttribute("data-chart-stack");
|
|
@@ -2226,14 +2321,14 @@ var Xe = (e) => {
|
|
|
2226
2321
|
_.appendChild(v);
|
|
2227
2322
|
let y = r.querySelector(":scope > table"), b = (e) => y ? y.before(e) : r.append(e);
|
|
2228
2323
|
b(_);
|
|
2229
|
-
let x = s.centre ? c.filter((e) => !e.isTotal) : c, S = Math.max(0,
|
|
2324
|
+
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
2325
|
w.className = "tablechart-values", _.appendChild(w);
|
|
2231
2326
|
let D = l.map((e, t) => c.map((e, r) => {
|
|
2232
2327
|
let i = e.cells[t] ?? e.cells[0], a = L(n, w);
|
|
2233
2328
|
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
2329
|
})), O = D[0], k = h && s.totals ? c.map((e, t) => {
|
|
2235
2330
|
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(
|
|
2331
|
+
r.classList.add(...e.classes), r.dataset.kind = "total", r.dataset.row = String(t + 1), r.dataset.value = String(ze(e, l.length));
|
|
2237
2332
|
let i = e.cells[0];
|
|
2238
2333
|
return i.prefix && (r.dataset.prefix = i.prefix), i.suffix && (r.dataset.suffix = i.suffix), r.style.setProperty("--i", String(e.slot)), r;
|
|
2239
2334
|
}) : [], 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 +2337,8 @@ var Xe = (e) => {
|
|
|
2242
2337
|
let n = L(f, N ?? _);
|
|
2243
2338
|
N && (n.dataset.place = "legend");
|
|
2244
2339
|
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 ?
|
|
2340
|
+
if (a && (n.dataset.swatch = a), n.textContent = e.name, !a && In(r, i) !== "step") {
|
|
2341
|
+
let r = e.chart ? Ye(P, P.indexOf(e)) : Ye(l, t);
|
|
2247
2342
|
n.dataset.marker = r.shape, n.toggleAttribute("data-open", r.open);
|
|
2248
2343
|
}
|
|
2249
2344
|
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 +2347,25 @@ var Xe = (e) => {
|
|
|
2252
2347
|
let e = c.find((e) => e.isTotal), t = e ? e.value : c.reduce((e, t) => e + Math.abs(t.value), 0);
|
|
2253
2348
|
R.dataset.value = String(t), e && (R.dataset.decimals = String(ie(e.number)));
|
|
2254
2349
|
}
|
|
2255
|
-
let z = R && !c.some((e) => e.isTotal) ?
|
|
2350
|
+
let z = R && !c.some((e) => e.isTotal) ? Rn(r, R, i) : null, B = s.categories === "beside", V = document.createElement("div");
|
|
2256
2351
|
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
|
|
2352
|
+
let H = 0;
|
|
2258
2353
|
for (let [e, t] of c.entries()) {
|
|
2259
2354
|
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(
|
|
2355
|
+
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
2356
|
}
|
|
2262
|
-
s.centre && r.style.setProperty("--_slice-count", String(
|
|
2263
|
-
let
|
|
2264
|
-
titles:
|
|
2357
|
+
s.centre && r.style.setProperty("--_slice-count", String(H)), B ? _.appendChild(V) : b(V), N && b(N);
|
|
2358
|
+
let U = l.filter((e) => !e.group), W = !s.axes && !s.centre && Pn(r, "data-chart-axis", i.axis), ee = s.axes ? {
|
|
2359
|
+
titles: U.slice(0, 2).map((e, t) => {
|
|
2265
2360
|
let n = L(`${T}-title`, _);
|
|
2266
2361
|
return n.dataset.axis = t ? "y" : "x", n.textContent = e.name, e.key && i.langattribute && n.setAttribute(i.langattribute, e.key), n;
|
|
2267
2362
|
}),
|
|
2268
2363
|
ticks: L(`${E}s`, _),
|
|
2269
2364
|
numbers: !0
|
|
2270
|
-
} :
|
|
2365
|
+
} : W || !s.centre && Pn(r, "data-chart-grid", i.grid) ? {
|
|
2271
2366
|
titles: [],
|
|
2272
2367
|
ticks: L(`${E}s`, _),
|
|
2273
|
-
numbers:
|
|
2368
|
+
numbers: W
|
|
2274
2369
|
} : null;
|
|
2275
2370
|
s.text?.({
|
|
2276
2371
|
figure: r,
|
|
@@ -2279,21 +2374,21 @@ var Xe = (e) => {
|
|
|
2279
2374
|
series: l,
|
|
2280
2375
|
config: i
|
|
2281
2376
|
});
|
|
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
|
|
2377
|
+
let te = Fn(r, i) ? Kt(r, !!s.axes) : null;
|
|
2378
|
+
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", "");
|
|
2379
|
+
let ne = r.getAttribute("data-chart-keys"), re = te && i.controls ? Xt({
|
|
2285
2380
|
previous: i.previouslabel,
|
|
2286
2381
|
next: i.nextlabel,
|
|
2287
2382
|
hint: i.stephint
|
|
2288
2383
|
}, {
|
|
2289
|
-
previous:
|
|
2290
|
-
next:
|
|
2291
|
-
hint:
|
|
2384
|
+
previous: ne && `${ne}-previous`,
|
|
2385
|
+
next: ne && `${ne}-next`,
|
|
2386
|
+
hint: ne && `${ne}-step`
|
|
2292
2387
|
}, 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(
|
|
2388
|
+
re && b(re);
|
|
2389
|
+
let G = Array.from(r.querySelectorAll("[data-annotation]")).map((t) => {
|
|
2390
|
+
let n = t.getAttribute("data-annotation"), r = En[n];
|
|
2391
|
+
if (!r) return console.warn(`[${e}] Unknown annotation "${n}". Known annotations: ${Object.keys(En).join(", ")}.`), null;
|
|
2297
2392
|
let i = Number.parseInt(t.getAttribute("data-series") ?? "1", 10), a = i >= 1 && i <= l.length ? i - 1 : 0;
|
|
2298
2393
|
return i !== a + 1 && console.warn(`[${e}] An annotation reads line ${i}, which is not there; it reads line 1.`), {
|
|
2299
2394
|
spec: t,
|
|
@@ -2306,15 +2401,15 @@ var Xe = (e) => {
|
|
|
2306
2401
|
if (!B && !s.centre && !s.axes) for (let [e, t] of c.entries()) {
|
|
2307
2402
|
if (!t.note) continue;
|
|
2308
2403
|
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),
|
|
2404
|
+
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
2405
|
spec: n,
|
|
2311
|
-
type:
|
|
2312
|
-
badge:
|
|
2406
|
+
type: ke,
|
|
2407
|
+
badge: ke.create(n, _),
|
|
2313
2408
|
series: 0,
|
|
2314
2409
|
after: c.length
|
|
2315
2410
|
});
|
|
2316
2411
|
}
|
|
2317
|
-
|
|
2412
|
+
Fn(r, i) && r.setAttribute("data-animate", Kn(r, o, i, !!te));
|
|
2318
2413
|
let K = {
|
|
2319
2414
|
figure: r,
|
|
2320
2415
|
plot: _,
|
|
@@ -2328,45 +2423,45 @@ var Xe = (e) => {
|
|
|
2328
2423
|
names: N ? [] : I,
|
|
2329
2424
|
categories: Array.from(V.children),
|
|
2330
2425
|
centre: R,
|
|
2331
|
-
axes:
|
|
2426
|
+
axes: ee,
|
|
2332
2427
|
stacked: h,
|
|
2333
2428
|
totals: k,
|
|
2334
2429
|
totalCell: z,
|
|
2335
2430
|
rowAt: null,
|
|
2336
2431
|
rowBox: null,
|
|
2337
2432
|
pointOf: null,
|
|
2338
|
-
annotations:
|
|
2433
|
+
annotations: G,
|
|
2339
2434
|
checks: [],
|
|
2340
|
-
plan:
|
|
2435
|
+
plan: te,
|
|
2341
2436
|
step: 0,
|
|
2342
|
-
controls:
|
|
2343
|
-
},
|
|
2344
|
-
v.addEventListener("transitionend",
|
|
2437
|
+
controls: re
|
|
2438
|
+
}, ae = () => cr(r, v);
|
|
2439
|
+
v.addEventListener("transitionend", ae), v.addEventListener("transitioncancel", ae), re?.addEventListener("click", (e) => {
|
|
2345
2440
|
let t = e.target.closest("button")?.dataset.go;
|
|
2346
|
-
t &&
|
|
2347
|
-
}),
|
|
2348
|
-
let
|
|
2349
|
-
return
|
|
2350
|
-
},
|
|
2441
|
+
t && Yt(K, K.step + (t === "next" ? 1 : -1));
|
|
2442
|
+
}), Yt(K, 0, !0);
|
|
2443
|
+
let oe = r.getAttribute("data-chart-tooltip"), se = oe === "false" ? !1 : oe === "auto" ? "auto" : oe !== null || i.tooltip;
|
|
2444
|
+
return se && Sn(K, i, se === "auto"), rr(K, i), K;
|
|
2445
|
+
}, Wn = {
|
|
2351
2446
|
grow: "grow",
|
|
2352
2447
|
sweep: "sweep"
|
|
2353
|
-
},
|
|
2448
|
+
}, Gn = [
|
|
2354
2449
|
"never",
|
|
2355
2450
|
"auto",
|
|
2356
2451
|
"print",
|
|
2357
2452
|
"always"
|
|
2358
|
-
],
|
|
2359
|
-
let i = t === "line" || t === "area", a =
|
|
2453
|
+
], Kn = (e, t, n, r) => {
|
|
2454
|
+
let i = t === "line" || t === "area", a = Wn[e.getAttribute("data-chart-animate") ?? ""] ?? Wn[String(n.animate)];
|
|
2360
2455
|
return i ? r ? "sweep" : a ?? "sweep" : t === "donut" || t === "waterfall" ? a ?? "grow" : "grow";
|
|
2361
|
-
},
|
|
2456
|
+
}, qn = (e) => {
|
|
2362
2457
|
let t = getComputedStyle(e).getPropertyValue("--tablechart-value-align").trim();
|
|
2363
2458
|
return t === "start" || t === "center" || t === "end" ? t : null;
|
|
2364
|
-
},
|
|
2459
|
+
}, Jn = (e, t, n) => e.dataset.chartLabels === "inside" || e.dataset.chartLabels !== "outside" && (t.labels === "inside" || n) ? "inside" : "outside", Yn = (e, t, n, r) => {
|
|
2365
2460
|
let i = getComputedStyle(e), a = (i.getPropertyValue(n).trim() || r).match(/^(\d+(?:\.\d+)?)(px|%|em|rem)$/);
|
|
2366
2461
|
if (!a) return null;
|
|
2367
2462
|
let o = Number(a[1]);
|
|
2368
2463
|
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
|
-
},
|
|
2464
|
+
}, Xn = (e, t, n) => Yn(e, t, getComputedStyle(e).getPropertyValue(n).trim() ? n : "--tablechart-corner-radius", "0px") ?? 0, Zn = (e, t) => Yn(e, t, "--tablechart-bar-max", "60px") ?? Infinity, Qn = (e, t) => {
|
|
2370
2465
|
let n = e.getBoundingClientRect(), r = O / n.width, i = getComputedStyle(e), a = Number.parseFloat(i.lineHeight) / Number.parseFloat(i.fontSize) || 1.2;
|
|
2371
2466
|
return (e) => {
|
|
2372
2467
|
if (e.dataset.place === "none" || e.hidden || e.hasAttribute("data-left-out")) return [];
|
|
@@ -2381,21 +2476,21 @@ var Xe = (e) => {
|
|
|
2381
2476
|
style: s.join("; ")
|
|
2382
2477
|
})] : [];
|
|
2383
2478
|
};
|
|
2384
|
-
},
|
|
2479
|
+
}, $n = [
|
|
2385
2480
|
"first",
|
|
2386
2481
|
"last",
|
|
2387
2482
|
"highest",
|
|
2388
2483
|
"lowest",
|
|
2389
2484
|
"outliers"
|
|
2390
|
-
],
|
|
2485
|
+
], er = (t, n) => {
|
|
2391
2486
|
let r = (t.getAttribute("data-chart-values") ?? n.values).trim().toLowerCase().split(/\s+/).filter(Boolean);
|
|
2392
2487
|
for (let t of r) [
|
|
2393
2488
|
"auto",
|
|
2394
2489
|
"all",
|
|
2395
2490
|
"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) =>
|
|
2491
|
+
...$n
|
|
2492
|
+
].includes(t) || console.warn(`[${e}] data-chart-values knows no "${t}". It takes auto, all, none, ${$n.join(", ")}.`);
|
|
2493
|
+
let i = r.filter((e) => $n.includes(e));
|
|
2399
2494
|
return r.includes("all") ? {
|
|
2400
2495
|
mode: "all",
|
|
2401
2496
|
keys: []
|
|
@@ -2404,19 +2499,19 @@ var Xe = (e) => {
|
|
|
2404
2499
|
keys: []
|
|
2405
2500
|
} : r.includes("auto") || !i.length ? {
|
|
2406
2501
|
mode: "auto",
|
|
2407
|
-
keys: i.length ? i :
|
|
2502
|
+
keys: i.length ? i : $n
|
|
2408
2503
|
} : {
|
|
2409
2504
|
mode: "set",
|
|
2410
2505
|
keys: i
|
|
2411
2506
|
};
|
|
2412
|
-
},
|
|
2413
|
-
let i = e.getAttribute("data-chart-table"), a = i &&
|
|
2507
|
+
}, tr = ({ figure: e, rows: t, series: n }, r) => {
|
|
2508
|
+
let i = e.getAttribute("data-chart-table"), a = i && Gn.includes(i) ? i : r.table;
|
|
2414
2509
|
a === "never" ? e.removeAttribute("data-table") : e.setAttribute("data-table", a);
|
|
2415
2510
|
let o = e.getAttribute("data-chart-summary");
|
|
2416
|
-
e.setAttribute("data-summary", o &&
|
|
2417
|
-
},
|
|
2511
|
+
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);
|
|
2512
|
+
}, nr = (t, n) => {
|
|
2418
2513
|
let { plot: r, svg: i, rows: l, type: m, values: g, series: _, seriesValues: y, names: b, annotations: x } = t;
|
|
2419
|
-
|
|
2514
|
+
tr(t, n);
|
|
2420
2515
|
let S = getComputedStyle(t.figure);
|
|
2421
2516
|
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
2517
|
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 +2519,7 @@ var Xe = (e) => {
|
|
|
2424
2519
|
r.style.margin = "", j && (j.style.marginLeft = "");
|
|
2425
2520
|
let e = r.clientWidth;
|
|
2426
2521
|
if (!e) return !1;
|
|
2427
|
-
let i = m.segments?.(l) ?? [], a = t.stacked ? l.flatMap((e) => Object.values(
|
|
2522
|
+
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
2523
|
if (f && f.length > 2) M = {
|
|
2429
2524
|
min: f[0],
|
|
2430
2525
|
max: f[f.length - 1],
|
|
@@ -2432,24 +2527,24 @@ var Xe = (e) => {
|
|
|
2432
2527
|
ticks: f
|
|
2433
2528
|
};
|
|
2434
2529
|
else {
|
|
2435
|
-
let [t, n] = f ?? [o, s], r =
|
|
2530
|
+
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
2531
|
M = {
|
|
2437
2532
|
min: a,
|
|
2438
2533
|
max: l,
|
|
2439
2534
|
step: r,
|
|
2440
|
-
ticks:
|
|
2535
|
+
ticks: Ct(a, l, r)
|
|
2441
2536
|
};
|
|
2442
2537
|
}
|
|
2443
2538
|
A.ticks.textContent = "";
|
|
2444
|
-
let p = l.find((e) => !e.missing), h =
|
|
2539
|
+
let p = l.find((e) => !e.missing), h = q(M.ticks.map((e) => ie(String(e))));
|
|
2445
2540
|
for (let e of M.ticks) {
|
|
2446
2541
|
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),
|
|
2542
|
+
t.dataset.value = String(e), t.dataset.place = "none", p?.prefix && (t.dataset.prefix = p.prefix), p?.suffix && (t.dataset.suffix = p.suffix), ir(t, h, n.locale);
|
|
2448
2543
|
}
|
|
2449
2544
|
if (A.numbers) {
|
|
2450
2545
|
let e = Array.from(A.ticks.children);
|
|
2451
2546
|
for (let t of e) delete t.dataset.place;
|
|
2452
|
-
|
|
2547
|
+
_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
2548
|
}
|
|
2454
2549
|
}
|
|
2455
2550
|
let N = r.clientWidth;
|
|
@@ -2459,39 +2554,39 @@ var Xe = (e) => {
|
|
|
2459
2554
|
let B = m.numbers === !1 ? g.slice(0, 1) : [...y.flat(), ...t.totals];
|
|
2460
2555
|
for (let e of B) delete e.dataset.place, e.removeAttribute("data-left-out"), e.removeAttribute("data-cut");
|
|
2461
2556
|
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,
|
|
2557
|
+
let V = m.axes ? t.axes : null, H = [];
|
|
2463
2558
|
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 =
|
|
2559
|
+
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)];
|
|
2560
|
+
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) => {
|
|
2561
|
+
let r = a[0]?.cells[i[t]], o = q(e.ticks.map((e) => ie(String(e))));
|
|
2467
2562
|
for (let i of e.ticks) {
|
|
2468
2563
|
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),
|
|
2564
|
+
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), ir(e, o, n.locale);
|
|
2470
2565
|
}
|
|
2471
2566
|
});
|
|
2472
2567
|
}
|
|
2473
|
-
let
|
|
2474
|
-
|
|
2568
|
+
let W = V ? Array.from(V.ticks.children) : [];
|
|
2569
|
+
_e([
|
|
2475
2570
|
...y.flat(),
|
|
2476
2571
|
...t.totals,
|
|
2477
2572
|
...b,
|
|
2478
2573
|
...t.categories,
|
|
2479
2574
|
...x.map((e) => e.badge),
|
|
2480
2575
|
...V?.titles ?? [],
|
|
2481
|
-
...
|
|
2576
|
+
...W
|
|
2482
2577
|
]);
|
|
2483
|
-
let
|
|
2578
|
+
let ee = (g[0] ? J(g[0]).height : 0) * I;
|
|
2484
2579
|
m.numbers === !1 && g[0] && (g[0].dataset.place = "none");
|
|
2485
|
-
let re = x[0]?.badge ?
|
|
2486
|
-
labelHeight:
|
|
2487
|
-
nameHeight: Math.max(0,
|
|
2580
|
+
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?.({
|
|
2581
|
+
labelHeight: ee,
|
|
2582
|
+
nameHeight: Math.max(0, q(t.categories.map((e) => J(e).height))) * I,
|
|
2488
2583
|
unit: I,
|
|
2489
2584
|
rows: l.length,
|
|
2490
2585
|
series: _.length,
|
|
2491
2586
|
stacked: t.stacked,
|
|
2492
|
-
labels:
|
|
2493
|
-
}) ?? 0),
|
|
2494
|
-
let t =
|
|
2587
|
+
labels: Jn(t.figure, n, _.some((e) => e.chart))
|
|
2588
|
+
}) ?? 0), K = t.stacked ? l.map((e) => {
|
|
2589
|
+
let t = ze(e, _.length);
|
|
2495
2590
|
return {
|
|
2496
2591
|
...e,
|
|
2497
2592
|
value: t,
|
|
@@ -2500,121 +2595,123 @@ var Xe = (e) => {
|
|
|
2500
2595
|
value: t
|
|
2501
2596
|
} : e)
|
|
2502
2597
|
};
|
|
2503
|
-
}) : l,
|
|
2598
|
+
}) : l, ae = (m.segments ?? ((e) => e.map((e) => ({
|
|
2504
2599
|
...e,
|
|
2505
2600
|
from: 0,
|
|
2506
2601
|
to: e.value,
|
|
2507
2602
|
kind: "bar"
|
|
2508
|
-
}))))(t.stacked ?
|
|
2603
|
+
}))))(t.stacked ? K.map((e) => ({
|
|
2509
2604
|
...e,
|
|
2510
2605
|
cells: [e.cells[0]]
|
|
2511
2606
|
})) : l), oe = {
|
|
2512
|
-
labelHeight:
|
|
2607
|
+
labelHeight: ee,
|
|
2513
2608
|
badgeHeight: re,
|
|
2514
2609
|
hasAnnotations: x.length > 0,
|
|
2515
2610
|
unit: I,
|
|
2516
2611
|
series: _.length,
|
|
2517
2612
|
focused: _.some((e) => e.focus),
|
|
2518
2613
|
stacked: t.stacked
|
|
2519
|
-
}, se = Math.max(((e) => t.stacked ? e(l.map((e) =>
|
|
2614
|
+
}, se = Math.max(((e) => t.stacked ? e(l.map((e) => Re(e, _.length, m.running).top)) : e([...ae.flatMap((e) => [
|
|
2520
2615
|
e.from,
|
|
2521
2616
|
e.to,
|
|
2522
2617
|
e.value
|
|
2523
|
-
]), ...l.flatMap((e) => e.cells.slice(0, _.length).map((e) => e.value))]))(
|
|
2618
|
+
]), ...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
2619
|
let t = Number.parseFloat(ve?.getAttribute(e) ?? "");
|
|
2525
2620
|
return Number.isFinite(t) ? t : null;
|
|
2526
|
-
},
|
|
2527
|
-
if (ve && (
|
|
2528
|
-
let t =
|
|
2621
|
+
}, be = ye("data-from") ?? ye("data-at"), xe = ye("data-to"), Ce = null;
|
|
2622
|
+
if (ve && (be !== null || xe !== null)) {
|
|
2623
|
+
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
2624
|
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 >
|
|
2625
|
+
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);
|
|
2626
|
+
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
2627
|
lo: t,
|
|
2533
2628
|
hi: n,
|
|
2534
2629
|
gap: r,
|
|
2535
2630
|
share: o
|
|
2536
2631
|
} : console.warn(`[${e}] This kind of chart cannot break its scale.`);
|
|
2537
2632
|
}
|
|
2538
|
-
let
|
|
2539
|
-
if (
|
|
2540
|
-
let { lo: e, hi: t, gap: n, share: r } =
|
|
2541
|
-
|
|
2633
|
+
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;
|
|
2634
|
+
if (Ce) {
|
|
2635
|
+
let { lo: e, hi: t, gap: n, share: r } = Ce, i = me * r, a = (me - i - Te) / (e + (he - t)), o = i / (t - e);
|
|
2636
|
+
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
2637
|
}
|
|
2543
|
-
let
|
|
2638
|
+
let je, Me, Ne = [];
|
|
2544
2639
|
if (V) {
|
|
2545
|
-
let e = 6 * I, [t, n] = V.titles, r = (e) => e ?
|
|
2546
|
-
|
|
2640
|
+
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;
|
|
2641
|
+
Me = [
|
|
2547
2642
|
c,
|
|
2548
2643
|
l,
|
|
2549
|
-
O - c -
|
|
2644
|
+
O - c - q([0, ...a.map(r)]) / 2,
|
|
2550
2645
|
G - l - i(t) - s - 2 * e
|
|
2551
2646
|
];
|
|
2552
|
-
let [u, d, f, p] =
|
|
2553
|
-
|
|
2647
|
+
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;
|
|
2648
|
+
je = g, Ae = _;
|
|
2554
2649
|
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 =
|
|
2650
|
+
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];
|
|
2651
|
+
for (let t of W) {
|
|
2652
|
+
let n = Number(t.dataset.value), r = t.dataset.axis === "x" ? 0 : 1, i = Ne[r].includes(n);
|
|
2558
2653
|
t.dataset.place = i ? r ? "before" : "below" : "none", i && R(t, r ? u - e : g(n), r ? _(n) : d + p + e, O, G);
|
|
2559
2654
|
}
|
|
2560
2655
|
t && R(t, u + f / 2, G - i(t), O, G), n && R(n, 0, d + p / 2, O, G);
|
|
2561
2656
|
}
|
|
2562
|
-
let
|
|
2563
|
-
|
|
2564
|
-
let
|
|
2565
|
-
t.rowAt = m.centre ? null : m.categories === "beside" ? (e, t) =>
|
|
2566
|
-
let
|
|
2657
|
+
let Pe = er(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;
|
|
2658
|
+
Ve && (Ve.style.paddingRight = Be ? `${Be / O * 100}%` : "");
|
|
2659
|
+
let He = (O - Be) / l.length, Ue = (e) => (e + .5) * He, We = (e) => e >= 0 && e < l.length ? e : null;
|
|
2660
|
+
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));
|
|
2661
|
+
let Ge = He / O * 100, Ke = 100 / l.length;
|
|
2567
2662
|
if (t.rowBox = m.categories === "beside" ? (e) => [
|
|
2568
2663
|
0,
|
|
2569
|
-
e *
|
|
2664
|
+
e * Ke,
|
|
2570
2665
|
100,
|
|
2571
|
-
|
|
2666
|
+
Ke
|
|
2572
2667
|
] : (e) => [
|
|
2573
|
-
e *
|
|
2668
|
+
e * Ge,
|
|
2574
2669
|
0,
|
|
2575
|
-
|
|
2670
|
+
Ge,
|
|
2576
2671
|
100
|
|
2577
|
-
], i.setAttribute("viewBox", `0 0 ${O} ${P(G)}`), i.textContent = "",
|
|
2578
|
-
let [e, r, a, o] =
|
|
2579
|
-
|
|
2672
|
+
], i.setAttribute("viewBox", `0 0 ${O} ${P(G)}`), i.textContent = "", Me && je) {
|
|
2673
|
+
let [e, r, a, o] = Me, [s, c] = Ne, l = je;
|
|
2674
|
+
Pn(t.figure, "data-chart-grid", n.grid) && i.appendChild(F("path", {
|
|
2580
2675
|
class: D,
|
|
2581
|
-
d: [...s.map((e) => `M${P(l(e))},${P(r)}V${P(r + o)}`), ...c.map((t) => `M${P(e)},${P(
|
|
2676
|
+
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
2677
|
})), i.appendChild(F("path", {
|
|
2583
2678
|
class: T,
|
|
2584
2679
|
d: [
|
|
2585
2680
|
`M${P(e)},${P(r)}V${P(r + o)}H${P(e + a)}`,
|
|
2586
2681
|
...s.map((e) => `M${P(l(e))},${P(r + o)}v${P(4 * I)}`),
|
|
2587
|
-
...c.map((t) => `M${P(e)},${P(
|
|
2682
|
+
...c.map((t) => `M${P(e)},${P(Ae(t))}h${P(-4 * I)}`)
|
|
2588
2683
|
].join("")
|
|
2589
2684
|
}));
|
|
2590
2685
|
}
|
|
2591
2686
|
t.checks = [];
|
|
2592
2687
|
let Y = {
|
|
2593
2688
|
rows: l,
|
|
2594
|
-
segments:
|
|
2595
|
-
cx:
|
|
2596
|
-
y:
|
|
2597
|
-
x:
|
|
2598
|
-
frame:
|
|
2599
|
-
length: (e, n) =>
|
|
2600
|
-
barWidth: Math.min(
|
|
2601
|
-
barMax:
|
|
2689
|
+
segments: ae,
|
|
2690
|
+
cx: Ue,
|
|
2691
|
+
y: Ae,
|
|
2692
|
+
x: je,
|
|
2693
|
+
frame: Me,
|
|
2694
|
+
length: (e, n) => Yn(t.figure, I, e, n),
|
|
2695
|
+
barWidth: Math.min(He * n.barfill, Zn(t.figure, I)),
|
|
2696
|
+
barMax: Zn(t.figure, I),
|
|
2697
|
+
barRadius: Xn(t.figure, I, "--tablechart-bar-radius"),
|
|
2698
|
+
sliceRadius: Xn(t.figure, I, "--tablechart-slice-radius"),
|
|
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 = Qn(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") && lr(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
|
+
}, rr = (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 ? ir(r, r.dataset.decimals ? Number(r.dataset.decimals) : e.decimals, t.locale) : r.textContent = r.dataset.missing;
|
|
2905
|
+
}, ir = (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
|
+
}, ar = (e) => {
|
|
2912
|
+
Cn(e), e.plot.remove(), e.categories[0]?.parentElement?.remove(), e.figure.querySelector(`:scope > .${p}`)?.remove(), e.controls?.remove();
|
|
2913
|
+
}, or = (e, t, n = !1) => {
|
|
2914
|
+
!t && !e.figure.hasAttribute("data-steps") && lr(e.svg), e.figure.classList.remove(C), n ? (e.figure.classList.add(S), e.figure.classList.toggle(b, t), e.figure.offsetWidth, t && ur(e.svg), e.figure.classList.toggle(C, t), requestAnimationFrame(() => e.figure.classList.remove(S))) : (e.figure.classList.toggle(b, t), t && requestAnimationFrame(() => requestAnimationFrame(() => {
|
|
2915
|
+
cr(e.figure, e.svg), sr(e.figure);
|
|
2819
2916
|
})));
|
|
2820
|
-
},
|
|
2917
|
+
}, sr = (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
|
+
}, cr = (e, t) => {
|
|
2923
|
+
e.classList.contains("is-shown") && Array.from(t.querySelectorAll("[data-mask]")).every((e) => !e.getAnimations({ subtree: !0 }).length) && ur(t);
|
|
2924
|
+
}, lr = (e) => {
|
|
2828
2925
|
for (let t of e.querySelectorAll("[mask^=\"url(#tablechart-cut-\"]")) t.dataset.mask = t.getAttribute("mask") ?? "", t.removeAttribute("mask");
|
|
2829
|
-
},
|
|
2926
|
+
}, ur = (e) => {
|
|
2830
2927
|
for (let t of e.querySelectorAll("[data-mask]")) t.setAttribute("mask", t.dataset.mask ?? ""), t.removeAttribute("data-mask");
|
|
2831
|
-
},
|
|
2928
|
+
}, dr = {
|
|
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
|
+
}, fr = (t) => {
|
|
2948
|
+
let n = Rt(t), r = dr[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
|
+
}, pr = ".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", mr = (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(pr)).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 = dr[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
|
+
}, hr = [
|
|
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`), gr = /* @__PURE__ */ new Set(), _r = (t) => {
|
|
2951
3048
|
let n = getComputedStyle(t);
|
|
2952
|
-
for (let r of
|
|
2953
|
-
},
|
|
3049
|
+
for (let r of hr) !gr.has(r) && n.getPropertyValue(r).trim() && (gr.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
|
+
}, vr = (e) => e === "id" || e === "style" || e.startsWith("data-chart"), yr = /^\s*(?:Table)?:\s+/, br = (e) => e?.tagName === "P" && yr.test(e.textContent ?? ""), xr = (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(yr, ""), 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
|
+
}, Sr = /^\s*([a-z][\w-]*)((?:\s+[\w-]+=[^\s:]+)*)\s*(:\s*|$)/, Cr = (e) => {
|
|
3062
|
+
let t = jr(e);
|
|
2966
3063
|
return t?.tagName === "P" ? t : e;
|
|
2967
|
-
},
|
|
2968
|
-
let t =
|
|
3064
|
+
}, wr = (e) => {
|
|
3065
|
+
let t = Cr(e).firstChild;
|
|
2969
3066
|
if (t?.nodeType !== Node.TEXT_NODE) return null;
|
|
2970
|
-
let n =
|
|
2971
|
-
if (!n || !
|
|
3067
|
+
let n = Sr.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
|
+
}, Tr = (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 : wr(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 = Cr(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
|
+
}, Er = (e, t) => {
|
|
3092
|
+
for (let { name: n, value: r } of Array.from(e.attributes)) (n === "class" || vr(n)) && (t.setAttribute(n, r), e.removeAttribute(n));
|
|
3093
|
+
}, Dr = (e) => e.map((e) => {
|
|
3094
|
+
let t = e.closest("p"), n = br(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
|
+
Er(e, r), e.classList.length || e.removeAttribute("class");
|
|
3098
|
+
let i = n.tagName === "TABLE" ? n : null, a = n.previousElementSibling, o = n.nextElementSibling, s = i ? br(a) ? a : br(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 : Tr(o);
|
|
3101
|
+
return n.replaceWith(r), s && r.append(xr(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
|
+
}), Or = (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
|
+
}, kr = (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
|
+
}, Ar = 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 : kr(i.rows) : kr(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 = Or(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
|
+
}, jr = (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
|
+
}, Mr = "strong, b, span.total", Nr = (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 = jr(n); t?.matches(Mr); t = jr(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 = jr(t); e?.matches(Mr); e = jr(t)) t.setAttribute("data-kind", "focus"), e.replaceWith(...e.childNodes);
|
|
3079
3176
|
}
|
|
3080
|
-
},
|
|
3177
|
+
}, Pr = "data-chart-made", Fr = () => window.matchMedia("(prefers-reduced-motion: reduce)").matches, Ir = (e) => new Promise((t) => setTimeout(t, e)), Lr = (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
|
+
}, Rr = async (e, t) => {
|
|
3181
|
+
if (Fr()) 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 Ir(r);
|
|
3193
|
+
}, zr = (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
|
+
}, Br = (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
|
+
}), Vr = /* @__PURE__ */ new Set(), Hr = null, Ur = (e) => {
|
|
3211
|
+
Vr.add(e), !Hr && (Hr = new MutationObserver(() => {
|
|
3212
|
+
for (let e of Vr) e.relabel();
|
|
3116
3213
|
requestAnimationFrame(() => requestAnimationFrame(() => {
|
|
3117
|
-
for (let e of
|
|
3214
|
+
for (let e of Vr) e.refresh();
|
|
3118
3215
|
}));
|
|
3119
|
-
}),
|
|
3216
|
+
}), Hr.observe(document.documentElement, {
|
|
3120
3217
|
attributes: !0,
|
|
3121
3218
|
attributeFilter: ["lang"]
|
|
3122
3219
|
}));
|
|
3123
|
-
},
|
|
3124
|
-
|
|
3125
|
-
},
|
|
3220
|
+
}, Wr = (e) => {
|
|
3221
|
+
Vr.delete(e), !Vr.size && Hr && (Hr.disconnect(), Hr = null);
|
|
3222
|
+
}, Gr = ["column", "bar"], Kr = (e) => {
|
|
3126
3223
|
let t = e.getAttribute("data-chart") || "column";
|
|
3127
|
-
if (!
|
|
3224
|
+
if (!Gr.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 Gr.includes(n) ? n : t;
|
|
3227
|
+
}, qr = (e, t) => {
|
|
3228
|
+
let n = e, r = Kr(n.figure), i = null, a = !1, o = !1, s = !1, c = async () => {
|
|
3229
|
+
if (!Fn(n.figure, t)) return or(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 = Fr() ? null : zr(n.figure);
|
|
3234
|
+
e && await Br(e), await Rr(n.figure, Lr(n.figure, t)), s = !1, (o || !t.replay) && or(n, !0);
|
|
3235
|
+
} else !o && t.replay && e && or(n, !1);
|
|
3139
3236
|
}, l = () => {
|
|
3140
|
-
let e =
|
|
3237
|
+
let e = Kr(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 && (ar(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, () => nr(n, t)) && (a || (a = !0, fr(n.figure), mr(n.figure), _r(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), or(n, !0), ur(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: () => rr(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), Ur(_);
|
|
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), Wr(_), Cn(n), n.figure.tablechart === v && delete n.figure.tablechart;
|
|
3175
3272
|
}
|
|
3176
3273
|
};
|
|
3177
3274
|
return n.figure.tablechart = v, v;
|
|
3178
|
-
},
|
|
3275
|
+
}, Jr = !1, Yr = (t) => {
|
|
3179
3276
|
let n = t.find((e) => e.tagName !== "FIGURE");
|
|
3180
|
-
!
|
|
3181
|
-
},
|
|
3182
|
-
let n =
|
|
3183
|
-
|
|
3277
|
+
!Jr && n && (Jr = !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
|
+
}, Xr = async (e, t) => {
|
|
3279
|
+
let n = Dr(e.filter((e) => !e.hasAttribute(Pr) && e.tagName !== "TH"));
|
|
3280
|
+
Yr(n), await Ar(n), Nr(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
|
+
}, Zr = (e, t) => {
|
|
3284
|
+
let n = Q.timed("Building", e, () => Un(e, t));
|
|
3285
|
+
return n ? (e.setAttribute(Pr, ""), ei(), qr(n, t)) : null;
|
|
3286
|
+
}, Qr = !1, $r = /* @__PURE__ */ new WeakMap(), ei = () => {
|
|
3287
|
+
if (Qr || typeof matchMedia != "function") return;
|
|
3288
|
+
Qr = !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(`[${Pr}]`)) {
|
|
3291
|
+
let t = getComputedStyle(e).color, n = Lt(e) || $r.get(e) !== t;
|
|
3292
|
+
$r.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
|
+
}, ti = 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 Xr([e], n);
|
|
3309
|
+
return r ? Zr(r, n) : null;
|
|
3310
|
+
}, ni = 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 Xr(Array.from(t.querySelectorAll(n.selector)), n)).map((e) => Zr(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 _, Dr as a, it as b, fr as c, Un as d, nr as f, Yt as g, ar as h, Xr as i, R as j, oe as k, mr as l, or as m, Lr as n, Ar as o, rr as p, k as q, ni as r, Nr as s, ti as t, Tn as u, yt as v, J as w, at as x, gt as y, v as z };
|