@martinomagnifico/tablechart 1.1.0 → 1.1.1

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.
@@ -1,10 +1,64 @@
1
- import { A as e, B as t, C as n, D as r, E as i, F as a, G as o, I as s, J as c, K as l, L as u, M as d, N as f, O as p, P as m, Q as h, R as g, S as _, T as v, U as y, V as b, W as x, X as S, Y as C, Z as w, _ as T, a as E, b as D, c as O, d as k, f as A, g as j, h as M, i as N, j as P, k as F, l as I, m as L, n as R, o as z, p as B, q as V, r as H, s as U, t as ee, u as te, v as ne, w as W, x as G, y as re, z as ie } from "./tablechart-shared2.mjs";
2
- //#region src/js/functions/timing.ts
3
- var K = "cubic-bezier(0.3, 0.3, 0.6, 1)", q = (e, t, n = 1) => ({
1
+ //#region src/js/config.ts
2
+ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablechart-bar", i = "tablechart-rule", a = "tablechart-line", o = "tablechart-head", s = "tablechart-slice", c = "tablechart-name", l = "tablechart-legend", u = "tablechart-point", d = "tablechart-hole", f = "tablechart-centre", p = "tablechart-break", m = "is-placed", h = "tablechart-sr", g = "is-shown", _ = "is-printing", v = "tablechart-queued", y = "tablechart-axis", b = "tablechart-tick", x = "tablechart-grid", S = 1e3, C = {
3
+ selector: "[data-chart]",
4
+ aspect: .38,
5
+ barfill: .58,
6
+ ringfill: .42,
7
+ animate: !0,
8
+ entrance: .5,
9
+ labels: "outside",
10
+ shape: "straight",
11
+ legend: !1,
12
+ axis: !1,
13
+ grid: !1,
14
+ names: !0,
15
+ tooltip: "auto",
16
+ tooltipparent: null,
17
+ table: "never",
18
+ totallabel: "Total",
19
+ controls: !0,
20
+ previouslabel: "Previous",
21
+ nextlabel: "Next",
22
+ stephint: "step of the chart",
23
+ threshold: .5,
24
+ replay: !1,
25
+ langattribute: "data-i18n"
26
+ }, w = "cubic-bezier(0.3, 0.3, 0.6, 1)", T = (e, t, n = 1) => ({
4
27
  start: e,
5
28
  span: t,
6
- easing: e + t >= n - 1e-4 ? K : "linear"
7
- }), J = (e, t) => `${e}:${t}`, ae = 0, oe = (e) => Array.from(e.querySelectorAll(`.${G}`)).map((e) => {
29
+ easing: e + t >= n - 1e-4 ? w : "linear"
30
+ }), E = (e, t) => `${e}:${t}`, D = "http://www.w3.org/2000/svg", O = (e) => Math.round(e * 100) / 100, k = (e, t = {}) => {
31
+ let n = document.createElementNS(D, e);
32
+ for (let e in t) {
33
+ let r = t[e];
34
+ n.setAttribute(e, String(typeof r == "number" ? O(r) : r));
35
+ }
36
+ return n;
37
+ }, A = (e, t) => [e, ...t.classes].join(" "), j = (e, t) => {
38
+ let n = document.createElement("span");
39
+ return n.className = e, n.inert = !0, t.appendChild(n), n;
40
+ }, M = (e, t, n, r, i) => {
41
+ e.style.left = `${t / r * 100}%`, e.style.top = `${n / i * 100}%`;
42
+ }, N = 0, P = (e, t, n, r, i) => {
43
+ if (!t.length) return;
44
+ let a = `tablechart-cut-${++N}`, o = k("mask", {
45
+ id: a,
46
+ maskUnits: "userSpaceOnUse"
47
+ });
48
+ o.appendChild(k("rect", {
49
+ x: -n,
50
+ y: -r,
51
+ width: n * 3,
52
+ height: r * 3,
53
+ fill: "white"
54
+ }));
55
+ for (let e of t) e.setAttribute("fill", "black"), o.appendChild(e);
56
+ let s = e.querySelector(":scope > defs");
57
+ if (s || (s = k("defs"), e.prepend(s)), s.appendChild(o), i) return i.setAttribute("mask", `url(#${a})`);
58
+ let c = k("g", { mask: `url(#${a})` });
59
+ for (let t of Array.from(e.childNodes)) t !== s && c.appendChild(t);
60
+ e.appendChild(c);
61
+ }, F = 0, ee = (e) => Array.from(e.querySelectorAll(`.${r}`)).map((e) => {
8
62
  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("; ");
9
63
  return {
10
64
  row: Number(e.dataset.row),
@@ -15,7 +69,7 @@ var K = "cubic-bezier(0.3, 0.3, 0.6, 1)", q = (e, t, n = 1) => ({
15
69
  sideways: e.dataset.grow === "right",
16
70
  part: s
17
71
  };
18
- }), se = {
72
+ }), I = {
19
73
  create: () => null,
20
74
  draw(e, t, n) {
21
75
  let { rows: r, y: i, svg: a, breakAt: o } = n;
@@ -42,29 +96,29 @@ var K = "cubic-bezier(0.3, 0.3, 0.6, 1)", q = (e, t, n = 1) => ({
42
96
  [c + 2 * l, t + o],
43
97
  [c + i, t - o]
44
98
  ];
45
- }, 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-${++ae}`, d = L("mask", {
99
+ }, 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-${++F}`, d = k("mask", {
46
100
  id: u,
47
101
  maskUnits: "userSpaceOnUse"
48
102
  });
49
- d.appendChild(L("rect", {
50
- x: -w,
103
+ d.appendChild(k("rect", {
104
+ x: -S,
51
105
  y: -n.height,
52
- width: w * 3,
106
+ width: S * 3,
53
107
  height: n.height * 3,
54
108
  fill: "white"
55
109
  }));
56
- let f = [], p = i(o);
57
- for (let e of oe(a)) {
58
- let t = e.sideways ? n.breakX : p;
59
- if (t === void 0 || !(e.sideways ? e.x < t && e.x + e.width > t : e.y < p && e.y + e.height > p)) continue;
60
- let [i, o] = e.sideways ? [c(e, t), c(e, t + n.breakGap)] : [c(e, p - n.breakGap), c(e, p)];
61
- d.appendChild(L("path", {
110
+ let f = [], m = i(o);
111
+ for (let e of ee(a)) {
112
+ let t = e.sideways ? n.breakX : m;
113
+ if (t === void 0 || !(e.sideways ? e.x < t && e.x + e.width > t : e.y < m && e.y + e.height > m)) continue;
114
+ let [i, o] = e.sideways ? [c(e, t), c(e, t + n.breakGap)] : [c(e, m - n.breakGap), c(e, m)];
115
+ d.appendChild(k("path", {
62
116
  d: l([...i, ...o.slice().reverse()], !0),
63
117
  fill: "black"
64
118
  })), f.push(i, o);
65
- let s = [J("--after", r[e.row - 1]?.slot ?? 0), e.part].filter(Boolean).join("; ");
66
- for (let e of [i, o]) a.appendChild(L("path", {
67
- class: _,
119
+ let s = [E("--after", r[e.row - 1]?.slot ?? 0), e.part].filter(Boolean).join("; ");
120
+ for (let e of [i, o]) a.appendChild(k("path", {
121
+ class: p,
68
122
  "data-part": "edge",
69
123
  "data-note": n.note,
70
124
  d: l(e),
@@ -72,58 +126,92 @@ var K = "cubic-bezier(0.3, 0.3, 0.6, 1)", q = (e, t, n = 1) => ({
72
126
  }));
73
127
  }
74
128
  if (!f.length) return;
75
- let m = Array.from(a.querySelectorAll(`.${_}`)), h = L("g", { mask: `url(#${u})` });
76
- for (let e of Array.from(a.childNodes)) m.includes(e) || h.appendChild(e);
77
- let g = L("defs");
78
- g.appendChild(d), a.prepend(g, h);
129
+ let h = Array.from(a.querySelectorAll(`.${p}`)), g = k("g", { mask: `url(#${u})` });
130
+ for (let e of Array.from(a.childNodes)) h.includes(e) || g.appendChild(e);
131
+ let _ = k("defs");
132
+ _.appendChild(d), a.prepend(_, g);
79
133
  }
80
- }, Y = (e, t) => {
134
+ }, L = (e) => {
135
+ let t = -Infinity;
136
+ for (let n of e) t = Math.max(t, n);
137
+ return t;
138
+ }, R = (e) => (e.split(/[.,]/)[1] || "").length, z = (e, t) => new Intl.NumberFormat(t || document.documentElement.lang || void 0, {
139
+ minimumFractionDigits: e,
140
+ maximumFractionDigits: e
141
+ }), B = (e, t, n) => {
142
+ let r = z(t, n).formatToParts(e), i = r[0]?.type === "minusSign" ? r[0].value : "";
143
+ return [i, r.slice(+!!i).map((e) => e.value).join("")];
144
+ }, V = (e) => Number.parseFloat((e.match(/-?[\d.,]+/) || ["NaN"])[0].replace(",", ".")), H = (e, t) => {
81
145
  let n = document.createElement("span");
82
- if (n.className = D, n.inert = !0, e.childElementCount > 0) for (let t of Array.from(e.children)) n.appendChild(t.cloneNode(!0));
146
+ if (n.className = "tablechart-badge", n.inert = !0, e.childElementCount > 0) for (let t of Array.from(e.children)) n.appendChild(t.cloneNode(!0));
83
147
  else {
84
148
  n.textContent = (e.textContent || "").trim();
85
149
  let t = e.getAttribute("data-i18n");
86
150
  t && n.setAttribute("data-i18n", t);
87
151
  }
88
152
  return t.appendChild(n), n;
89
- }, ce = (e, t, n, r, i = "%") => {
90
- let a = e?.textContent || "", o = O(a), s = i ? .5 : .5 * 10 ** -z(a.match(/-?[\d.,]+/)?.[0] ?? ""), c = Number.isNaN(o) ? !0 : Math.abs(t - o) <= s + 1e-9, l = {
91
- label: n,
92
- computed: t,
93
- stated: o,
94
- agrees: c
153
+ }, U = (t, n, r, i, a = "%") => {
154
+ let o = t?.textContent || "", s = V(o), c = a ? .5 : .5 * 10 ** -R(o.match(/-?[\d.,]+/)?.[0] ?? ""), l = Number.isNaN(s) ? !0 : Math.abs(n - s) <= c + 1e-9, u = {
155
+ label: r,
156
+ computed: n,
157
+ stated: s,
158
+ agrees: l
95
159
  };
96
- r.checks.push(l), c || console.warn(`[${f}] An annotation reads ${o}${i}, but ${n} is ${Number(t.toFixed(2))}${i}. The chart shows your number.`);
97
- }, le = (e, t) => (t - e) / Math.abs(e) * 100, ue = (e, t) => {
160
+ 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.`);
161
+ }, W = (e, t) => (t - e) / Math.abs(e) * 100, te = (e, t) => {
98
162
  let n = (t, n) => {
99
163
  let r = Number.parseInt(e.getAttribute(t) ?? "", 10);
100
164
  return Number.isFinite(r) ? r - 1 : n;
101
165
  };
102
166
  return [n("data-from", 0), n("data-to", t - 1)];
103
- }, de = {
104
- create: Y,
105
- draw(e, t, n) {
106
- let { rows: r, cx: i, y: a, unit: o, labelHeight: s, badgeHeight: c, height: l, svg: u, after: d } = n, [p, h] = ue(e, r.length), g = r[p], _ = r[h];
107
- if (!g || !_) {
108
- console.warn(`[${f}] A bracket points at a row that is not there (row ${p + 1} to ${h + 1}, of ${r.length}).`);
167
+ }, ne = {
168
+ create: H,
169
+ draw(t, n, r) {
170
+ let { rows: i, cx: s, y: c, unit: l, labelHeight: u, badgeHeight: d, height: f, svg: p, after: m } = r, [h, g] = te(t, i.length), _ = i[h], v = i[g];
171
+ if (!_ || !v) {
172
+ console.warn(`[${e}] A bracket points at a row that is not there (row ${h + 1} to ${g + 1}, of ${i.length}).`);
109
173
  return;
110
174
  }
111
- let v = 7 * o, y = 4 * o, b = i(p), x = i(h), S = Math.min(a(g.value), a(_.value)) - s - y - c * .9, C = (e) => a(e) - s - y, T = `M ${b} ${C(g.value)} L ${b} ${S} L ${x} ${S} L ${x} ${C(_.value) - v}`, E = (C(g.value) - S + Math.abs(x - b) + (C(_.value) - v - S)) / o + 1;
112
- u.appendChild(L("path", {
113
- class: m,
114
- "data-note": n.note,
115
- d: T,
116
- style: `--len:${E.toFixed(1)}; ${J("--after", d)}`
175
+ let y = 7 * l, b = 4 * l, x = s(h), C = s(g), w = Math.min(c(_.value), c(v.value)) - u - b - d * .9, T = (e) => c(e) - u - b, D = `M ${x} ${T(_.value)} L ${x} ${w} L ${C} ${w} L ${C} ${T(v.value) - y}`, O = (T(_.value) - w + Math.abs(C - x) + (T(v.value) - y - w)) / l + 1;
176
+ p.appendChild(k("path", {
177
+ class: a,
178
+ "data-note": r.note,
179
+ d: D,
180
+ style: `--len:${O.toFixed(1)}; ${E("--after", m)}`
117
181
  }));
118
- let D = C(_.value);
119
- u.appendChild(L("polygon", {
120
- class: F,
121
- "data-note": n.note,
122
- points: `${x},${D} ${x - v * .45},${D - v} ${x + v * .45},${D - v}`,
123
- style: J("--after", d)
124
- })), t && (A(t, (b + x) / 2, S, w, l), t.style.setProperty("--after", String(d))), ce(t, le(g.value, _.value), `${g.value} to ${_.value}`, n);
182
+ let A = T(v.value);
183
+ p.appendChild(k("polygon", {
184
+ class: o,
185
+ "data-note": r.note,
186
+ points: `${C},${A} ${C - y * .45},${A - y} ${C + y * .45},${A - y}`,
187
+ style: E("--after", m)
188
+ })), n && (M(n, (x + C) / 2, w, S, f), n.style.setProperty("--after", String(m))), U(n, W(_.value, v.value), `${_.value} to ${v.value}`, r);
125
189
  }
126
- }, fe = (e, t, n) => {
190
+ }, re = (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], ie = (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], G = (e, t, n) => {
191
+ if (e.length > 400) return e.map(() => null);
192
+ let r = 1;
193
+ for (let t of e) for (let [, , e, n] of t) r = Math.max(r, e, n);
194
+ let i = /* @__PURE__ */ new Map(), a = ([e, t, n, i]) => {
195
+ let a = [];
196
+ for (let o = Math.floor(e / r); o <= Math.floor((e + n) / r); o++) for (let e = Math.floor(t / r); e <= Math.floor((t + i) / r); e++) a.push(`${o} ${e}`);
197
+ return a;
198
+ }, o = (e) => {
199
+ for (let t of a(e)) i.get(t)?.push(e) ?? i.set(t, [e]);
200
+ }, s = (e) => ie(e, n) && a(e).every((t) => !i.get(t)?.some((t) => re(e, t)));
201
+ return t.forEach(o), e.map((e) => {
202
+ let t = e.findIndex(s);
203
+ return t < 0 ? null : (o(e[t]), t);
204
+ });
205
+ }, K = /* @__PURE__ */ new WeakMap(), ae = (e) => {
206
+ let t = [...e].filter((e) => !!e), n = t.map((e) => ({
207
+ width: e.offsetWidth,
208
+ height: e.offsetHeight
209
+ }));
210
+ t.forEach((e, t) => K.set(e, n[t]));
211
+ }, q = (e) => K.get(e) ?? {
212
+ width: e.offsetWidth,
213
+ height: e.offsetHeight
214
+ }, oe = (e, t, n) => {
127
215
  let r = n.reduce((e, t) => e + t, 0);
128
216
  if (e === "mean") return r ? t.reduce((e, t, r) => e + t * n[r], 0) / r : null;
129
217
  if (e === "median") {
@@ -136,32 +224,32 @@ var K = "cubic-bezier(0.3, 0.3, 0.6, 1)", q = (e, t, n = 1) => ({
136
224
  }
137
225
  let i = Number.parseFloat(e);
138
226
  return Number.isFinite(i) ? i : null;
139
- }, pe = {
227
+ }, se = {
140
228
  create(e, t) {
141
229
  if (!e.textContent?.trim()) return null;
142
- let n = Y(e, t);
230
+ let n = H(e, t);
143
231
  return n.dataset.kind = "reference", n;
144
232
  },
145
- draw(e, t, n) {
146
- let { rows: r, cx: i, y: a, x: o, height: s, unit: c, svg: l, after: u } = n, d = r.filter((e) => !e.isTotal && !e.missing), p = e.hasAttribute("data-name"), m = (e.getAttribute(p ? "data-name" : "data-value") ?? "").trim(), h, g, _;
233
+ draw(t, n, r) {
234
+ let { rows: i, cx: a, y: o, x: s, height: c, unit: l, svg: u, after: d } = r, f = i.filter((e) => !e.isTotal && !e.missing), p = t.hasAttribute("data-name"), m = (t.getAttribute(p ? "data-name" : "data-value") ?? "").trim(), h, g, _;
147
235
  if (p) {
148
- let e = d.map((e) => O(e.label));
149
- if (n.categories[0]?.parentElement?.dataset.place === "beside" || e.some(Number.isNaN)) {
150
- console.warn(`[${f}] A reference line among the names needs names that are numbers, under columns or points.`);
236
+ let t = f.map((e) => V(e.label));
237
+ if (r.categories[0]?.parentElement?.dataset.place === "beside" || t.some(Number.isNaN)) {
238
+ console.warn(`[${e}] A reference line among the names needs names that are numbers, under columns or points.`);
151
239
  return;
152
240
  }
153
- let t = fe(m, e, d.map((e) => e.value)), a = t === null ? -1 : e.findIndex((n, r) => n <= t && t <= (e[r + 1] ?? n)), [o, s] = [d[a], d[a + 1] ?? d[a]].map((e) => i(r.indexOf(e))), c = t === null || a < 0 || e[a + 1] === void 0 || e[a + 1] === e[a] ? 0 : (t - e[a]) / (e[a + 1] - e[a]);
154
- _ = t, g = a < 0 ? null : o + c * (s - o), h = !1;
155
- } else _ = fe(m, d.map((e) => e.value), d.map(() => 1)), h = !o, g = _ === null ? null : o ? o(_) : a(_);
241
+ let n = oe(m, t, f.map((e) => e.value)), o = n === null ? -1 : t.findIndex((e, r) => e <= n && n <= (t[r + 1] ?? e)), [s, c] = [f[o], f[o + 1] ?? f[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]);
242
+ _ = n, g = o < 0 ? null : s + l * (c - s), h = !1;
243
+ } else _ = oe(m, f.map((e) => e.value), f.map(() => 1)), h = !s, g = _ === null ? null : s ? s(_) : o(_);
156
244
  if (g === null || _ === null) {
157
- console.warn(`[${f}] A reference line needs a number, "mean" or "median", not "${m}".`);
245
+ console.warn(`[${e}] A reference line needs a number, "mean" or "median", not "${m}".`);
158
246
  return;
159
247
  }
160
- let v = r.length > 0 ? i(r.length - 1) + i(0) : w, b = o ? s : a(0);
161
- if (l.appendChild(L("line", {
162
- class: y,
163
- "data-note": n.note,
164
- ...e.getAttribute("data-line") === "dotted" && { "data-line": "dotted" },
248
+ let v = i.length > 0 ? a(i.length - 1) + a(0) : S, y = s ? c : o(0);
249
+ if (u.appendChild(k("line", {
250
+ class: "tablechart-reference",
251
+ "data-note": r.note,
252
+ ...t.getAttribute("data-line") === "dotted" && { "data-line": "dotted" },
165
253
  ...h ? {
166
254
  x1: 0,
167
255
  x2: v,
@@ -171,126 +259,126 @@ var K = "cubic-bezier(0.3, 0.3, 0.6, 1)", q = (e, t, n = 1) => ({
171
259
  x1: g,
172
260
  x2: g,
173
261
  y1: 0,
174
- y2: b
262
+ y2: y
175
263
  },
176
- style: J("--after", u)
177
- })), t) {
178
- let e = N(t).width * c, r = N(t).height * c, i = 4 * c, a = h ? [
264
+ style: E("--after", d)
265
+ })), n) {
266
+ let e = q(n).width * l, t = q(n).height * l, i = 4 * l, a = h ? [
179
267
  [
180
268
  v - e,
181
- g - r / 2,
269
+ g - t / 2,
182
270
  e,
183
- r
271
+ t
184
272
  ],
185
273
  [
186
274
  v - e,
187
- g - r - i,
275
+ g - t - i,
188
276
  e,
189
- r
277
+ t
190
278
  ],
191
279
  [
192
280
  v - e,
193
281
  g + i,
194
282
  e,
195
- r
283
+ t
196
284
  ]
197
285
  ] : [
198
286
  0,
199
- r,
200
- 2 * r
201
- ].flatMap((t) => [
287
+ t,
288
+ 2 * t
289
+ ].flatMap((n) => [
202
290
  [
203
291
  g - e / 2,
204
- t,
292
+ n,
205
293
  e,
206
- r
294
+ t
207
295
  ],
208
296
  [
209
297
  g + i,
210
- t,
298
+ n,
211
299
  e,
212
- r
300
+ t
213
301
  ],
214
302
  [
215
303
  g - i - e,
216
- t,
304
+ n,
217
305
  e,
218
- r
306
+ t
219
307
  ]
220
- ]), [o] = E([a], n.taken, [
308
+ ]), [o] = G([a], r.taken, [
221
309
  0,
222
310
  0,
223
- w,
224
- s
225
- ]), l = a[o ?? 0];
226
- n.taken.push(l), A(t, l[0] + e / 2, l[1] + r / 2, w, s), t.style.setProperty("--after", String(u)), (m === "mean" || m === "median") && ce(t, _, `the ${m}`, n, "");
311
+ S,
312
+ c
313
+ ]), s = a[o ?? 0];
314
+ r.taken.push(s), M(n, s[0] + e / 2, s[1] + t / 2, S, c), n.style.setProperty("--after", String(d)), (m === "mean" || m === "median") && U(n, _, `the ${m}`, r, "");
227
315
  }
228
316
  }
229
- }, me = (e, t, n) => ((t / e) ** (1 / n) - 1) * 100, he = {
230
- create: Y,
317
+ }, ce = (e, t, n) => ((t / e) ** (1 / n) - 1) * 100, J = {
318
+ create: H,
231
319
  draw(e, t, n) {
232
- let { rows: r, cx: i, y: a, unit: o, labelHeight: s, height: c, svg: l, values: u, after: d } = n, f = r[0], p = r[r.length - 1];
233
- if (!f || !p) return;
234
- let h = s + 18 * o, g = 10 * o, _ = 10 * o, v = i(0), y = a(f.value) - h, b = i(r.length - 1), x = a(p.value) - h, S = 0;
320
+ let { rows: r, cx: i, y: s, unit: c, labelHeight: l, height: u, svg: d, values: f, after: p } = n, m = r[0], h = r[r.length - 1];
321
+ if (!m || !h) return;
322
+ let g = l + 18 * c, _ = 10 * c, v = 10 * c, y = i(0), b = s(m.value) - g, x = i(r.length - 1), C = s(h.value) - g, w = 0;
235
323
  r.forEach((e, t) => {
236
- let n = b === v ? 0 : (i(t) - v) / (b - v), r = y + n * (x - y) - (a(e.value) - h);
237
- r > S && (S = r);
238
- }), y -= S, x -= S;
239
- let C = b - v, T = x - y, E = Math.hypot(C, T) || 1, D = C / E, O = T / E;
240
- v -= D * g, y -= O * g, b += D * g, x += O * g;
241
- let k = Number.parseFloat(e.getAttribute("data-at") || "0.5");
324
+ let n = x === y ? 0 : (i(t) - y) / (x - y), r = b + n * (C - b) - (s(e.value) - g);
325
+ r > w && (w = r);
326
+ }), b -= w, C -= w;
327
+ let T = x - y, D = C - b, O = Math.hypot(T, D) || 1, A = T / O, j = D / O;
328
+ y -= A * _, b -= j * _, x += A * _, C += j * _;
329
+ let N = Number.parseFloat(e.getAttribute("data-at") || "0.5");
242
330
  if (t) {
243
- let e = v + (b - v) * k, n = y + (x - y) * k, c = N(t).width * o / 2, l = n + N(t).height * o / 2 + 8 * o, d = 0;
331
+ let e = y + (x - y) * N, n = b + (C - b) * N, a = q(t).width * c / 2, o = n + q(t).height * c / 2 + 8 * c, u = 0;
244
332
  r.forEach((t, n) => {
245
- let r = (u[n] ? N(u[n]).width : 0) * o / 2;
246
- if (Math.abs(i(n) - e) >= c + r) return;
247
- let f = a(t.value) - 7 * o - s;
248
- d = Math.max(d, l - f);
249
- }), y -= d, x -= d;
333
+ let r = (f[n] ? q(f[n]).width : 0) * c / 2;
334
+ if (Math.abs(i(n) - e) >= a + r) return;
335
+ let d = s(t.value) - 7 * c - l;
336
+ u = Math.max(u, o - d);
337
+ }), b -= u, C -= u;
250
338
  }
251
- let j = b - D * _, M = x - O * _, P = Math.hypot(j - v, M - y) / o + 1;
252
- l.appendChild(L("line", {
253
- class: m,
339
+ let P = x - A * v, F = C - j * v, ee = Math.hypot(P - y, F - b) / c + 1;
340
+ d.appendChild(k("line", {
341
+ class: a,
254
342
  "data-note": n.note,
255
- x1: v,
256
- y1: y,
257
- x2: j,
258
- y2: M,
259
- style: `--len:${P.toFixed(1)}; ${J("--after", d)}`
343
+ x1: y,
344
+ y1: b,
345
+ x2: P,
346
+ y2: F,
347
+ style: `--len:${ee.toFixed(1)}; ${E("--after", p)}`
260
348
  }));
261
- let I = -O, R = D, z = _ * .42;
262
- l.appendChild(L("polygon", {
263
- class: F,
349
+ let I = -j, L = A, R = v * .42;
350
+ d.appendChild(k("polygon", {
351
+ class: o,
264
352
  "data-note": n.note,
265
353
  points: [
266
- `${b},${x}`,
267
- `${j + I * z},${M + R * z}`,
268
- `${j - I * z},${M - R * z}`
354
+ `${x},${C}`,
355
+ `${P + I * R},${F + L * R}`,
356
+ `${P - I * R},${F - L * R}`
269
357
  ].join(" "),
270
- style: J("--after", d)
271
- })), t && (A(t, v + (b - v) * k, y + (x - y) * k, w, c), t.style.setProperty("--after", String(d)));
272
- let B = Number.parseFloat(e.getAttribute("data-years") || "");
273
- !Number.isNaN(B) && B > 0 && ce(t, me(f.value, p.value, B), `${f.value} to ${p.value} over ${B} years`, n);
358
+ style: E("--after", p)
359
+ })), t && (M(t, y + (x - y) * N, b + (C - b) * N, S, u), t.style.setProperty("--after", String(p)));
360
+ let z = Number.parseFloat(e.getAttribute("data-years") || "");
361
+ !Number.isNaN(z) && z > 0 && U(t, ce(m.value, h.value, z), `${m.value} to ${h.value} over ${z} years`, n);
274
362
  }
275
- }, ge = (e, t, n, r, i) => {
363
+ }, le = (e, t, n, r, i) => {
276
364
  if (!r) return e / t * n;
277
365
  let { lo: a, hi: o, gap: s, share: c } = r, l = n * c, u = (n - l - i) / (a + (t - o)), d = l / (o - a);
278
366
  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;
279
- }, _e = (e, t, n) => {
367
+ }, ue = (e, t, n) => {
280
368
  let r = .15, i = Math.min(e * .7 / (t + (t - 1) * r), n), a = t * i + (t - 1) * i * r;
281
369
  return {
282
370
  size: i,
283
371
  gap: i * r,
284
372
  offset: (e) => -a / 2 + e * i * 1.15
285
373
  };
286
- }, ve = (e, t, n) => {
374
+ }, de = (e, t, n) => {
287
375
  let r = e.series[n], i = e.series.some((e) => e.focus) && !r.focus;
288
376
  return {
289
377
  "data-series": n + 1,
290
378
  ...i && { "data-muted": "" },
291
- style: `--n:${n}; --m:${+!!i}; --palette:var(--tablechart-color-${n + 1}); ${J("--i", t.slot)}`
379
+ style: `--n:${n}; --m:${+!!i}; --palette:var(--tablechart-color-${n + 1}); ${E("--i", t.slot)}`
292
380
  };
293
- }, ye = (e, t, n = !1) => {
381
+ }, fe = (e, t, n = !1) => {
294
382
  let r = 0, i = 0;
295
383
  return Array.from({ length: t }, (t, a) => {
296
384
  let o = e.cells[a] ?? e.cells[0], s = o.missing ? 0 : o.value;
@@ -317,40 +405,40 @@ var K = "cubic-bezier(0.3, 0.3, 0.6, 1)", q = (e, t, n = 1) => ({
317
405
  cell: o
318
406
  };
319
407
  });
320
- }, be = (e, t, n = !1) => {
321
- let r = ye(e, t, n);
408
+ }, Y = (e, t, n = !1) => {
409
+ let r = fe(e, t, n);
322
410
  return {
323
411
  top: Math.max(0, ...r.map((e) => e.to)),
324
412
  bottom: Math.min(0, ...r.map((e) => e.to))
325
413
  };
326
- }, xe = (e, t) => {
327
- let { top: n, bottom: r } = be(e, t);
414
+ }, pe = (e, t) => {
415
+ let { top: n, bottom: r } = Y(e, t);
328
416
  return n + r;
329
- }, Se = (e, t, n) => {
417
+ }, me = (e, t, n) => {
330
418
  let r = t.series.some((e) => e.focus);
331
419
  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})`);
332
- }, Ce = (e, t, n, r = {}, i = "") => {
333
- let a = {
334
- class: M(G, t),
420
+ }, he = (e, t, n, i = {}, a = "") => {
421
+ let o = {
422
+ class: A(r, t),
335
423
  "data-kind": "bar",
336
424
  "data-row": n + 1,
337
- ...r
338
- }, o = J("--i", t.slot) + (i ? `; transform-origin: ${i}` : ""), s = L("g", {
339
- ...a,
425
+ ...i
426
+ }, s = E("--i", t.slot) + (a ? `; transform-origin: ${a}` : ""), c = k("g", {
427
+ ...o,
340
428
  "data-stack": "",
341
- style: o
429
+ style: s
342
430
  });
343
- return e.svg.appendChild(s), (i, a) => {
344
- let o = r["data-grow"] === void 0 ? {} : { "data-grow": r["data-grow"] };
345
- s.appendChild(L("rect", {
431
+ return e.svg.appendChild(c), (r, a) => {
432
+ let o = i["data-grow"] === void 0 ? {} : { "data-grow": i["data-grow"] };
433
+ c.appendChild(k("rect", {
346
434
  ...o,
347
435
  ...a,
348
- class: M(u, t),
436
+ class: A("tablechart-piece", t),
349
437
  "data-row": n + 1,
350
- ...ve(e, t, i)
438
+ ...de(e, t, r)
351
439
  }));
352
440
  };
353
- }, we = 6, Te = (e, t, n) => e.some((e) => N(e).width * n > t - we * n), Ee = (e, t, n) => t >= N(e).height * n * 1.6, De = (e, t, n) => t >= N(e).width * n * 1.5, Oe = (e, t, n, r, i = .7) => {
441
+ }, ge = 6, _e = (e, t, n) => e.some((e) => q(e).width * n > t - ge * n), ve = (e, t, n) => t >= q(e).height * n * 1.6, ye = (e, t, n) => t >= q(e).width * n * 1.5, be = (e, t, n, r, i = .7) => {
354
442
  e.style.setProperty(r, "1");
355
443
  let a = 1;
356
444
  for (let e of t) {
@@ -359,10 +447,10 @@ var K = "cubic-bezier(0.3, 0.3, 0.6, 1)", q = (e, t, n = 1) => ({
359
447
  }
360
448
  let o = a >= i ? a : 0;
361
449
  return e.style.setProperty(r, String(o || i)), o;
362
- }, ke = (e, t) => (e.sort((e, t) => e.y - t.y), e.forEach((n, r) => {
450
+ }, xe = (e, t) => (e.sort((e, t) => e.y - t.y), e.forEach((n, r) => {
363
451
  let i = e[r - 1];
364
452
  i && n.y < i.y + t && (n.y = i.y + t);
365
- }), e), Ae = {
453
+ }), e), Se = {
366
454
  segments: (e) => e.map((e) => ({
367
455
  ...e,
368
456
  from: 0,
@@ -382,116 +470,116 @@ var K = "cubic-bezier(0.3, 0.3, 0.6, 1)", q = (e, t, n = 1) => ({
382
470
  categories: "beside",
383
471
  headroom: () => 0,
384
472
  draw(e) {
385
- let { segments: t, height: n, unit: r, svg: i, values: a, categories: o, config: s, barMax: c } = e, l = e.series.length > 1, u = Math.max(U(o.map((e) => N(e).width * r)), 0), d = Math.min(u + 10 * r, w * .42);
386
- o[0]?.parentElement?.style.setProperty("--_beside", `${((d - 8 * r) / w * 100).toFixed(2)}%`);
387
- let f = w - 4 * r, p = e.stacked ? Math.max(U(e.rows.map((t) => be(t, e.series.length).top)), 0) || 1 : Math.max(U(e.rows.flatMap((t) => t.cells.slice(0, e.series.length).map((e) => Math.abs(e.value)))), 0) || 1, m = e.stacked ? Math.max(U(e.rows.map((t) => -be(t, e.series.length).bottom)), 0) : Math.max(U(e.rows.flatMap((t) => t.cells.slice(0, e.series.length).map((e) => -e.value))), 0), h = Math.max(p, e.domain?.[1] ?? 0), g = Math.max(m, -(e.domain?.[0] ?? 0)), _ = Math.max(h, e.squeeze?.hi ?? 0) + g, v = (t, n) => ge(Math.abs(t), _, n, e.squeeze, e.breakGap), y = n / t.length, b = (e) => (e + .5) * y, S = Math.min(y * s.barfill, c), C = _e(y, e.series.length, c), T = a[0] ?? e.totals[0], E = T ? N(T).height * r * .56 : 0, D = Math.max(((l && !e.stacked ? C.size : S) - E) / 2, 5 * r), O = (e) => N(e).width * r, k = (e) => e.length ? U(e.map(O)) + D + 4 * r : 0, j = (t, n) => (e.rows[n].cells[t] ?? e.rows[n].cells[0]).value, P = e.seriesValues.flatMap((e, t) => e.map((e, n) => ({
473
+ 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(L(c.map((e) => q(e).width * a)), 0), p = Math.min(f + 10 * a, S * .42);
474
+ c[0]?.parentElement?.style.setProperty("--_beside", `${((p - 8 * a) / S * 100).toFixed(2)}%`);
475
+ let m = S - 4 * a, h = e.stacked ? Math.max(L(e.rows.map((t) => Y(t, e.series.length).top)), 0) || 1 : Math.max(L(e.rows.flatMap((t) => t.cells.slice(0, e.series.length).map((e) => Math.abs(e.value)))), 0) || 1, g = e.stacked ? Math.max(L(e.rows.map((t) => -Y(t, e.series.length).bottom)), 0) : Math.max(L(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) => le(Math.abs(t), y, n, e.squeeze, e.breakGap), x = n / t.length, C = (e) => (e + .5) * x, w = Math.min(x * l.barfill, u), T = ue(x, e.series.length, u), D = s[0] ?? e.totals[0], O = D ? q(D).height * a * .56 : 0, j = Math.max(((d && !e.stacked ? T.size : w) - O) / 2, 5 * a), N = (e) => q(e).width * a, P = (e) => e.length ? L(e.map(N)) + j + 4 * a : 0, F = (t, n) => (e.rows[n].cells[t] ?? e.rows[n].cells[0]).value, ee = e.seriesValues.flatMap((e, t) => e.map((e, n) => ({
388
476
  label: e,
389
- value: j(t, n)
390
- }))), F = (t) => {
391
- let n = be(e.rows[t], e.series.length);
477
+ value: F(t, n)
478
+ }))), I = (t) => {
479
+ let n = Y(e.rows[t], e.series.length);
392
480
  return n.top === 0 && n.bottom < 0;
393
- }, I = e.stacked ? k(e.totals.filter((e, t) => !F(t))) : l ? k(P.filter((e) => e.value >= 0).map((e) => e.label)) : 0, R = e.stacked ? k(e.totals.filter((e, t) => F(t))) : l ? k(P.filter((e) => e.value < 0).map((e) => e.label)) : 0;
394
- if (!l && !e.stacked) for (let e = 0; e < 3; e++) {
395
- let e = f - d - I - R, n = t.map((e, t) => ({
481
+ }, R = e.stacked ? P(e.totals.filter((e, t) => !I(t))) : d ? P(ee.filter((e) => e.value >= 0).map((e) => e.label)) : 0, z = e.stacked ? P(e.totals.filter((e, t) => I(t))) : d ? P(ee.filter((e) => e.value < 0).map((e) => e.label)) : 0;
482
+ if (!d && !e.stacked) for (let e = 0; e < 3; e++) {
483
+ let e = m - p - R - z, n = t.map((e, t) => ({
396
484
  seg: e,
397
- label: a[t]
398
- })).filter(({ seg: t, label: n }) => !De(n, v(t.value, e), r)), i = k(n.filter(({ seg: e }) => e.value >= 0).map(({ label: e }) => e)), o = k(n.filter(({ seg: e }) => e.value < 0).map(({ label: e }) => e));
399
- if (i <= I && o <= R) break;
400
- I = Math.max(I, i), R = Math.max(R, o);
485
+ label: s[t]
486
+ })).filter(({ seg: t, label: n }) => !ye(n, b(t.value, e), a)), r = P(n.filter(({ seg: e }) => e.value >= 0).map(({ label: e }) => e)), i = P(n.filter(({ seg: e }) => e.value < 0).map(({ label: e }) => e));
487
+ if (r <= R && i <= z) break;
488
+ R = Math.max(R, r), z = Math.max(z, i);
401
489
  }
402
- let z = f - d - I - R, B = d + R + v(g, z), V = (e) => e < 0 ? B - v(e, z) : B + v(e, z);
403
- if (e.squeeze && (e.breakX = V(e.squeeze.gap)), e.x = V, e.stacked) {
404
- e.rows.forEach((t, i) => {
405
- let a = be(t, e.series.length), s = Ce(e, t, i, { "data-grow": "right" }, a.bottom < 0 ? `${B - V(a.bottom)}px center` : ""), c = b(i) - S / 2;
406
- ye(t, e.series.length).forEach(({ from: t, to: a, cell: o }, l) => {
407
- let u = e.seriesValues[l][i];
408
- if (u.dataset.place = "none", o.missing || a === t) return;
409
- let d = Math.min(V(t), V(a)), f = Math.max(V(t), V(a));
410
- s(l, {
490
+ let B = m - p - R - z, V = p + z + b(v, B), H = (e) => e < 0 ? V - b(e, B) : V + b(e, B);
491
+ if (e.squeeze && (e.breakX = H(e.squeeze.gap)), e.x = H, e.stacked) {
492
+ e.rows.forEach((t, r) => {
493
+ let i = Y(t, e.series.length), o = he(e, t, r, { "data-grow": "right" }, i.bottom < 0 ? `${V - H(i.bottom)}px center` : ""), s = C(r) - w / 2;
494
+ fe(t, e.series.length).forEach(({ from: t, to: i, cell: c }, l) => {
495
+ let u = e.seriesValues[l][r];
496
+ if (u.dataset.place = "none", c.missing || i === t) return;
497
+ let d = Math.min(H(t), H(i)), f = Math.max(H(t), H(i));
498
+ o(l, {
411
499
  x: d,
412
- y: c,
500
+ y: s,
413
501
  width: Math.max(f - d, 1),
414
- height: S,
415
- ...a < t && { "data-grow": "left" }
416
- }), u.dataset.place = "inside", u.toggleAttribute("data-left-out", !De(u, f - d, r) || N(u).height * r > S), Se(u, e, l), A(u, (d + f) / 2, b(i), w, n);
502
+ height: w,
503
+ ...i < t && { "data-grow": "left" }
504
+ }), u.dataset.place = "inside", u.toggleAttribute("data-left-out", !ye(u, f - d, a) || q(u).height * a > w), me(u, e, l), M(u, (d + f) / 2, C(r), S, n);
417
505
  });
418
- let l = e.totals[i];
419
- l && (l.dataset.place = F(i) ? "before" : "after", A(l, F(i) ? V(a.bottom) - D : V(a.top) + D, b(i), w, n));
420
- let u = o[i];
421
- u && A(u, d - 8 * r, b(i), w, n);
422
- }), i.appendChild(L("line", {
423
- class: x,
424
- x1: B,
425
- x2: B,
506
+ let l = e.totals[r];
507
+ l && (l.dataset.place = I(r) ? "before" : "after", M(l, I(r) ? H(i.bottom) - j : H(i.top) + j, C(r), S, n));
508
+ let u = c[r];
509
+ u && M(u, p - 8 * a, C(r), S, n);
510
+ }), o.appendChild(k("line", {
511
+ class: i,
512
+ x1: V,
513
+ x2: V,
426
514
  y1: 0,
427
515
  y2: n
428
516
  }));
429
517
  return;
430
518
  }
431
- if (l) {
519
+ if (d) {
432
520
  e.plot.dataset.grouped = "";
433
- let t = e.seriesValues.flat().filter((e) => e.dataset.missing === void 0), a = Oe(e.plot, t, (e) => ({
434
- size: N(e).height * r,
435
- room: C.size + C.gap * .5
521
+ let t = e.seriesValues.flat().filter((e) => e.dataset.missing === void 0), s = be(e.plot, t, (e) => ({
522
+ size: q(e).height * a,
523
+ room: T.size + T.gap * .5
436
524
  }), "--_fit");
437
- e.rows.forEach((t, s) => {
438
- e.series.forEach((r, o) => {
439
- let c = t.cells[o] ?? t.cells[0], l = e.seriesValues[o][s];
440
- if (c.missing) {
441
- l.dataset.place = "none";
525
+ e.rows.forEach((t, i) => {
526
+ e.series.forEach((a, c) => {
527
+ let l = t.cells[c] ?? t.cells[0], u = e.seriesValues[c][i];
528
+ if (l.missing) {
529
+ u.dataset.place = "none";
442
530
  return;
443
531
  }
444
- let u = V(c.value), d = c.value < 0, f = b(s) + C.offset(o);
445
- i.appendChild(L("rect", {
446
- class: M(G, t),
532
+ let d = H(l.value), f = l.value < 0, p = C(i) + T.offset(c), m = Math.max(Math.abs(d - V), 1);
533
+ l.value !== 0 && o.appendChild(k("rect", {
534
+ class: A(r, t),
447
535
  "data-kind": "bar",
448
- "data-row": s + 1,
449
- "data-grow": d ? "left" : "right",
450
- x: Math.min(u, B),
451
- y: f,
452
- width: Math.max(Math.abs(u - B), 1),
453
- height: C.size,
454
- ...ve(e, t, o)
455
- })), l.dataset.place = d ? "before" : "after", l.toggleAttribute("data-left-out", !a), A(l, d ? u - D : u + D, f + C.size / 2, w, n);
536
+ "data-row": i + 1,
537
+ "data-grow": f ? "left" : "right",
538
+ x: f ? V - m : V,
539
+ y: p,
540
+ width: m,
541
+ height: T.size,
542
+ ...de(e, t, c)
543
+ })), u.dataset.place = f ? "before" : "after", u.toggleAttribute("data-left-out", !s), M(u, f ? d - j : d + j, p + T.size / 2, S, n);
456
544
  });
457
- let c = o[s];
458
- c && A(c, d - 8 * r, b(s), w, n);
459
- }), i.appendChild(L("line", {
460
- class: x,
461
- x1: B,
462
- x2: B,
545
+ let l = c[i];
546
+ l && M(l, p - 8 * a, C(i), S, n);
547
+ }), o.appendChild(k("line", {
548
+ class: i,
549
+ x1: V,
550
+ x2: V,
463
551
  y1: 0,
464
552
  y2: n
465
553
  }));
466
554
  return;
467
555
  }
468
- let H = t.map((e, t) => De(a[t], Math.abs(V(e.value) - B), r));
469
- t.forEach((t, s) => {
470
- let c = V(t.value), l = b(s), u = t.value < 0, f = Math.abs(c - B);
471
- i.appendChild(L("rect", {
472
- class: M(G, t),
556
+ let U = t.map((e, t) => ye(s[t], Math.abs(H(e.value) - V), a));
557
+ t.forEach((t, i) => {
558
+ let l = H(t.value), u = C(i), d = t.value < 0, f = Math.abs(l - V), m = Math.max(f, 1);
559
+ t.value !== 0 && o.appendChild(k("rect", {
560
+ class: A(r, t),
473
561
  "data-kind": t.kind,
474
- "data-row": s + 1,
475
- "data-grow": u ? "left" : "right",
476
- x: Math.min(c, B),
477
- y: l - S / 2,
478
- width: Math.max(f, 1),
479
- height: S,
480
- style: J("--i", t.slot)
562
+ "data-row": i + 1,
563
+ "data-grow": d ? "left" : "right",
564
+ x: d ? V - m : V,
565
+ y: u - w / 2,
566
+ width: m,
567
+ height: w,
568
+ style: E("--i", t.slot)
481
569
  }));
482
- let p = a[s], m = Math.max(Math.min(D, f - O(p) - 6 * r), 6 * r), h = u ? 1 : -1;
483
- p.dataset.place = H[s] ? "inside" : u ? "before" : "after", p.dataset.kind = t.kind, A(p, H[s] ? e.insideAlign === "center" ? (B + c) / 2 : e.insideAlign === "start" ? B - h * (m + O(p) / 2) : c + h * (m + O(p) / 2) : c - h * D, l, w, n);
484
- let g = o[s];
485
- g && A(g, d - 8 * r, l, w, n);
486
- }), i.appendChild(L("line", {
487
- class: x,
488
- x1: B,
489
- x2: B,
570
+ let h = s[i], g = Math.max(Math.min(j, f - N(h) - 6 * a), 6 * a), _ = d ? 1 : -1;
571
+ h.dataset.place = U[i] ? "inside" : d ? "before" : "after", h.dataset.kind = t.kind, M(h, U[i] ? e.insideAlign === "center" ? (V + l) / 2 : e.insideAlign === "start" ? V - _ * (g + N(h) / 2) : l + _ * (g + N(h) / 2) : l - _ * j, u, S, n);
572
+ let v = c[i];
573
+ v && M(v, p - 8 * a, u, S, n);
574
+ }), o.appendChild(k("line", {
575
+ class: i,
576
+ x1: V,
577
+ x2: V,
490
578
  y1: 0,
491
579
  y2: n
492
580
  }));
493
581
  }
494
- }, je = {
582
+ }, Ce = {
495
583
  segments: (e) => e.map((e) => ({
496
584
  ...e,
497
585
  from: 0,
@@ -505,102 +593,103 @@ var K = "cubic-bezier(0.3, 0.3, 0.6, 1)", q = (e, t, n = 1) => ({
505
593
  breakable: !0,
506
594
  headroom: ({ labelHeight: e, badgeHeight: t, hasAnnotations: n, unit: r }) => e + 4 * r + (n ? t * 1.6 : 0),
507
595
  draw(e) {
508
- let { segments: t, cx: n, y: r, barWidth: i, height: a, unit: o, svg: s, values: c, labels: l, insideAlign: u } = e, d = r(0);
596
+ let { segments: t, cx: n, y: a, barWidth: o, height: s, unit: c, svg: l, values: u, labels: d, insideAlign: f } = e, p = a(0);
509
597
  if (e.stacked) {
510
- e.rows.forEach((t, s) => {
511
- let c = be(t, e.series.length), l = Ce(e, t, s, {}, c.bottom < 0 ? `center ${d - r(c.top)}px` : ""), u = n(s) - i / 2;
512
- ye(t, e.series.length).forEach(({ from: t, to: c, cell: d }, f) => {
513
- let p = e.seriesValues[f][s];
514
- if (p.dataset.place = "none", d.missing || c === t) return;
515
- let m = Math.min(r(c), r(t)), h = Math.max(r(c), r(t));
598
+ e.rows.forEach((t, r) => {
599
+ let i = Y(t, e.series.length), l = he(e, t, r, {}, i.bottom < 0 ? `center ${p - a(i.top)}px` : ""), u = n(r) - o / 2;
600
+ fe(t, e.series.length).forEach(({ from: t, to: i, cell: d }, f) => {
601
+ let p = e.seriesValues[f][r];
602
+ if (p.dataset.place = "none", d.missing || i === t) return;
603
+ let m = Math.min(a(i), a(t)), h = Math.max(a(i), a(t));
516
604
  l(f, {
517
605
  x: u,
518
606
  y: m,
519
- width: i,
607
+ width: o,
520
608
  height: Math.max(h - m, 1),
521
- ...c < t && { "data-grow": "down" }
522
- }), p.dataset.place = "inside", p.toggleAttribute("data-left-out", !Ee(p, h - m, o) || N(p).width * o > i - 4 * o), Se(p, e, f), A(p, n(s), (m + h) / 2, w, a);
609
+ ...i < t && { "data-grow": "down" }
610
+ }), p.dataset.place = "inside", p.toggleAttribute("data-left-out", !ve(p, h - m, c) || q(p).width * c > o - 4 * c), me(p, e, f), M(p, n(r), (m + h) / 2, S, s);
523
611
  });
524
- let f = e.totals[s];
525
- if (f) {
526
- let e = c.top === 0 && c.bottom < 0;
527
- f.dataset.place = e ? "below" : "outside", A(f, n(s), e ? r(c.bottom) + 4 * o : r(c.top) - 4 * o, w, a);
612
+ let d = e.totals[r];
613
+ if (d) {
614
+ let e = i.top === 0 && i.bottom < 0;
615
+ d.dataset.place = e ? "below" : "outside", M(d, n(r), e ? a(i.bottom) + 4 * c : a(i.top) - 4 * c, S, s);
528
616
  }
529
- }), s.appendChild(L("line", {
530
- class: x,
617
+ }), l.appendChild(k("line", {
618
+ class: i,
531
619
  x1: 0,
532
- x2: w,
533
- y1: d,
534
- y2: d
620
+ x2: S,
621
+ y1: p,
622
+ y2: p
535
623
  }));
536
624
  return;
537
625
  }
538
626
  if (e.series.length > 1) {
539
- let t = _e(n(1) - n(0) || n(0) * 2, e.series.length, e.barMax);
627
+ let t = ue(n(1) - n(0) || n(0) * 2, e.series.length, e.barMax);
540
628
  e.plot.dataset.grouped = "";
541
- let i = e.seriesValues.flat().filter((e) => e.dataset.missing === void 0), c = Oe(e.plot, i, (e) => ({
542
- size: N(e).width * o,
629
+ let o = e.seriesValues.flat().filter((e) => e.dataset.missing === void 0), u = be(e.plot, o, (e) => ({
630
+ size: q(e).width * c,
543
631
  room: t.size + t.gap * .5
544
632
  }), "--_fit");
545
- e.rows.forEach((i, l) => {
546
- e.series.forEach((u, f) => {
547
- let p = i.cells[f] ?? i.cells[0], m = e.seriesValues[f][l], h = n(l) + t.offset(f);
548
- if (p.missing) {
549
- m.dataset.place = "none";
633
+ e.rows.forEach((i, o) => {
634
+ e.series.forEach((d, f) => {
635
+ let m = i.cells[f] ?? i.cells[0], h = e.seriesValues[f][o], g = n(o) + t.offset(f);
636
+ if (m.missing) {
637
+ h.dataset.place = "none";
550
638
  return;
551
639
  }
552
- let g = r(p.value), _ = p.value < 0;
553
- s.appendChild(L("rect", {
554
- class: M(G, i),
640
+ let _ = a(m.value), v = m.value < 0, y = Math.max(Math.abs(p - _), 1);
641
+ m.value !== 0 && l.appendChild(k("rect", {
642
+ class: A(r, i),
555
643
  "data-kind": "bar",
556
- "data-row": l + 1,
557
- ..._ && { "data-grow": "down" },
558
- x: h,
559
- y: Math.min(g, d),
644
+ "data-row": o + 1,
645
+ ...v && { "data-grow": "down" },
646
+ x: g,
647
+ y: v ? p : p - y,
560
648
  width: t.size,
561
- height: Math.max(Math.abs(d - g), 1),
562
- ...ve(e, i, f)
563
- })), m.dataset.place = _ ? "below" : "outside", m.toggleAttribute("data-left-out", !c), A(m, h + t.size / 2, _ ? g + 4 * o : g - 4 * o, w, a);
649
+ height: y,
650
+ ...de(e, i, f)
651
+ })), h.dataset.place = v ? "below" : "outside", h.toggleAttribute("data-left-out", !u), M(h, g + t.size / 2, v ? _ + 4 * c : _ - 4 * c, S, s);
564
652
  });
565
- }), s.appendChild(L("line", {
566
- class: x,
653
+ }), l.appendChild(k("line", {
654
+ class: i,
567
655
  x1: 0,
568
- x2: w,
569
- y1: d,
570
- y2: d
656
+ x2: S,
657
+ y1: p,
658
+ y2: p
571
659
  }));
572
660
  return;
573
661
  }
574
- let f = Te(c, i, o), p = t.map((e, t) => l === "inside" && !f && !e.missing && Ee(c[t], Math.abs(d - r(e.value)), o)), m = c[0] ? N(c[0]).height * o * .56 : 0, h = Infinity;
575
- for (let [e, t] of c.entries()) p[e] && (h = Math.min(h, (i - N(t).width * o) / 2));
662
+ let m = _e(u, o, c), h = t.map((e, t) => d === "inside" && !m && !e.missing && ve(u[t], Math.abs(p - a(e.value)), c)), g = u[0] ? q(u[0]).height * c * .56 : 0, _ = Infinity;
663
+ for (let [e, t] of u.entries()) h[e] && (_ = Math.min(_, (o - q(t).width * c) / 2));
576
664
  t.forEach((e, t) => {
577
- let l = r(e.value), f = e.value < 0;
665
+ let i = a(e.value), d = e.value < 0;
578
666
  if (e.missing) {
579
- A(c[t], n(t), d - 4 * o, w, a), c[t].dataset.place = "outside";
667
+ M(u[t], n(t), p - 4 * c, S, s), u[t].dataset.place = "outside";
580
668
  return;
581
669
  }
582
- s.appendChild(L("rect", {
583
- class: M(G, e),
670
+ let m = Math.max(Math.abs(p - i), 1);
671
+ e.value !== 0 && l.appendChild(k("rect", {
672
+ class: A(r, e),
584
673
  "data-kind": e.kind,
585
674
  "data-row": t + 1,
586
- ...f && { "data-grow": "down" },
587
- x: n(t) - i / 2,
588
- y: Math.min(l, d),
589
- width: i,
590
- height: Math.max(Math.abs(d - l), 1),
591
- style: J("--i", e.slot)
675
+ ...d && { "data-grow": "down" },
676
+ x: n(t) - o / 2,
677
+ y: d ? p : p - m,
678
+ width: o,
679
+ height: m,
680
+ style: E("--i", e.slot)
592
681
  }));
593
- let g = f ? -1 : 1, _ = Math.min(h, (Math.abs(d - l) - m) / 2), v = u === "center" ? (l + d) / 2 : u === "start" ? d - g * (_ + m / 2) : l + g * (_ + m / 2), y = f ? l + 4 * o : l - 4 * o;
594
- A(c[t], n(t), p[t] ? v : y, w, a), c[t].dataset.place = p[t] ? "inside" : f ? "below" : "outside";
595
- }), s.appendChild(L("line", {
596
- class: x,
682
+ let v = d ? -1 : 1, y = Math.min(_, (Math.abs(p - i) - g) / 2), b = f === "center" ? (i + p) / 2 : f === "start" ? p - v * (y + g / 2) : i + v * (y + g / 2), x = d ? i + 4 * c : i - 4 * c;
683
+ M(u[t], n(t), h[t] ? b : x, S, s), u[t].dataset.place = h[t] ? "inside" : d ? "below" : "outside";
684
+ }), l.appendChild(k("line", {
685
+ class: i,
597
686
  x1: 0,
598
- x2: w,
599
- y1: d,
600
- y2: d
687
+ x2: S,
688
+ y1: p,
689
+ y2: p
601
690
  }));
602
691
  }
603
- }, Me = 0, Ne = (e) => e.filter((e) => !e.isTotal), Pe = {
692
+ }, we = 0, Te = (e) => e.filter((e) => !e.isTotal), Ee = {
604
693
  aspect: .66,
605
694
  centre: !0,
606
695
  headroom: () => 0,
@@ -610,70 +699,111 @@ var K = "cubic-bezier(0.3, 0.3, 0.6, 1)", q = (e, t, n = 1) => ({
610
699
  to: e.value,
611
700
  kind: "bar"
612
701
  })),
613
- draw({ rows: e, height: t, unit: n, labelHeight: i, svg: a, values: o, config: s, centre: c }) {
614
- let l = w / 2, u = t / 2, d = Ne(e).reduce((e, t) => e + Math.abs(t.value), 0);
702
+ draw({ rows: e, height: t, unit: n, labelHeight: r, svg: i, values: a, config: o, centre: c }) {
703
+ let l = S / 2, u = t / 2, d = Te(e).reduce((e, t) => e + Math.abs(t.value), 0);
615
704
  if (!d) return;
616
- let f = i * 1.2 + 10 * n, p = Math.max(Math.min(w, t) / 2 - f, 10), m = p * s.ringfill, h = p - m / 2, g = 2 * Math.PI * h, _ = [], v = 0, y = 0, b = 0;
617
- if (e.forEach((e, r) => {
618
- let s = o[r];
705
+ let f = r * 1.2 + 10 * n, p = Math.max(Math.min(S, t) / 2 - f, 10), m = p * o.ringfill, h = p - m / 2, g = 2 * Math.PI * h, _ = [], v = 0, y = 0, b = 0;
706
+ if (e.forEach((e, o) => {
707
+ let c = a[o];
619
708
  if (e.isTotal) {
620
- s.dataset.place = "none";
709
+ c.dataset.place = "none";
621
710
  return;
622
711
  }
623
- let c = Math.abs(e.value) / d, f = q(b, c), x = `--share:${c.toFixed(4)}; --start:${f.start.toFixed(4)}; --span:${f.span.toFixed(4)};`, S = c * g, C = v / g * 2 * Math.PI - Math.PI / 2;
624
- _.push(C), a.appendChild(L("circle", {
625
- class: M(V, e),
712
+ let f = Math.abs(e.value) / d, x = T(b, f), C = `--share:${f.toFixed(4)}; --start:${x.start.toFixed(4)}; --span:${x.span.toFixed(4)};`, w = f * g, D = v / g * 2 * Math.PI - Math.PI / 2;
713
+ _.push(D), i.appendChild(k("circle", {
714
+ class: A(s, e),
626
715
  "data-slice": y + 1,
627
- "data-row": r + 1,
716
+ "data-row": o + 1,
628
717
  cx: l,
629
718
  cy: u,
630
719
  r: h,
631
720
  "stroke-width": m,
632
721
  transform: `rotate(-90 ${l} ${u})`,
633
- "stroke-dasharray": `${S.toFixed(1)} ${(g - S).toFixed(1)}`,
722
+ "stroke-dasharray": `${w.toFixed(1)} ${(g - w).toFixed(1)}`,
634
723
  "stroke-dashoffset": (-v).toFixed(1),
635
- style: `--n:${y}; --palette:var(--tablechart-color-${y + 1}); --arc:${S.toFixed(1)}; --circ:${g.toFixed(1)}; ${x} --ease:${f.easing}; ${J("--i", e.slot)}`
724
+ style: `--n:${y}; --palette:var(--tablechart-color-${y + 1}); --arc:${w.toFixed(1)}; --circ:${g.toFixed(1)}; ${C} --ease:${x.easing}; ${E("--i", e.slot)}`
636
725
  }));
637
- let T = C + S / g * Math.PI, E = Math.cos(T), D = Math.sin(T);
638
- a.appendChild(L("line", {
639
- class: P,
640
- x1: l + E * (p + 2 * n),
641
- y1: u + D * (p + 2 * n),
642
- x2: l + E * (p + 7 * n),
643
- y2: u + D * (p + 7 * n),
644
- "data-row": r + 1,
645
- style: `${x} ${J("--i", e.slot)}`
646
- })), s.style.setProperty("--start", f.start.toFixed(4)), s.style.setProperty("--span", f.span.toFixed(4));
647
- let O = p + 9 * n, k = N(s).width * n / 2;
648
- A(s, l + E * (O + Math.abs(E) * k), u + D * (O + Math.abs(D) * i * .7), w, t), s.dataset.place = "around", v += S, b += c, y += 1;
726
+ let O = D + w / g * Math.PI, j = Math.cos(O), N = Math.sin(O);
727
+ i.appendChild(k("line", {
728
+ class: "tablechart-leader",
729
+ x1: l + j * (p + 2 * n),
730
+ y1: u + N * (p + 2 * n),
731
+ x2: l + j * (p + 7 * n),
732
+ y2: u + N * (p + 7 * n),
733
+ "data-row": o + 1,
734
+ style: `${C} ${E("--i", e.slot)}`
735
+ })), c.style.setProperty("--start", x.start.toFixed(4)), c.style.setProperty("--span", x.span.toFixed(4));
736
+ let P = p + 9 * n, F = q(c).width * n / 2;
737
+ M(c, l + j * (P + Math.abs(j) * F), u + N * (P + Math.abs(N) * r * .7), S, t), c.dataset.place = "around", v += w, b += f, y += 1;
649
738
  }), _.length > 1) {
650
- let e = h - m / 2 - 1, n = h + m / 2 + 1, i = `tablechart-slices-${++Me}`, o = L("mask", {
651
- id: i,
739
+ let e = h - m / 2 - 1, n = h + m / 2 + 1, r = `tablechart-slices-${++we}`, a = k("mask", {
740
+ id: r,
652
741
  maskUnits: "userSpaceOnUse"
653
742
  });
654
- o.appendChild(L("rect", {
743
+ a.appendChild(k("rect", {
655
744
  x: 0,
656
745
  y: 0,
657
- width: w,
746
+ width: S,
658
747
  height: t,
659
748
  fill: "white"
660
749
  }));
661
- for (let t of _) o.appendChild(L("line", {
662
- class: r,
750
+ for (let t of _) a.appendChild(k("line", {
751
+ class: "tablechart-divide",
663
752
  x1: l + Math.cos(t) * e,
664
753
  y1: u + Math.sin(t) * e,
665
754
  x2: l + Math.cos(t) * n,
666
755
  y2: u + Math.sin(t) * n
667
756
  }));
668
- let s = L("g", { mask: `url(#${i})` });
669
- for (let e of Array.from(a.querySelectorAll(`.${V}`))) s.appendChild(e);
670
- let c = L("defs");
671
- c.appendChild(o), a.prepend(c, s);
757
+ let o = k("g", { mask: `url(#${r})` });
758
+ for (let e of Array.from(i.querySelectorAll(`.${s}`))) o.appendChild(e);
759
+ let c = k("defs");
760
+ c.appendChild(a), i.prepend(c, o);
672
761
  }
673
- c && A(c, l, u, w, t);
762
+ c && M(c, l, u, S, t);
763
+ }
764
+ }, De = [
765
+ "circle",
766
+ "square",
767
+ "diamond"
768
+ ], Oe = (e, t) => {
769
+ let n = e[t]?.marker?.toLowerCase().split(/\s+/) ?? [], r = De.find((e) => n.includes(e));
770
+ return {
771
+ shape: r ?? De[Math.floor(t / 2) % De.length],
772
+ open: n.includes("open") || !n.includes("filled") && !r && t % 2 == 1
773
+ };
774
+ }, ke = (e, t, n, r, i = {}) => {
775
+ if (e === "square") {
776
+ let e = r * .88;
777
+ return k("rect", {
778
+ x: t - e,
779
+ y: n - e,
780
+ width: e * 2,
781
+ height: e * 2,
782
+ ...i
783
+ });
784
+ }
785
+ if (e === "diamond") {
786
+ let e = r * 1.2;
787
+ return k("polygon", {
788
+ points: `${t},${n - e} ${t + e},${n} ${t},${n + e} ${t - e},${n}`,
789
+ ...i
790
+ });
791
+ }
792
+ if (e === "triangle") {
793
+ let e = r * 1.3;
794
+ return k("polygon", {
795
+ points: `${t},${n - e} ${t + e * .87},${n + e / 2} ${t - e * .87},${n + e / 2}`,
796
+ ...i
797
+ });
674
798
  }
799
+ return k("circle", {
800
+ cx: t,
801
+ cy: n,
802
+ r,
803
+ ...i
804
+ });
675
805
  }, X = (e) => Number(e.toFixed(2));
676
- function Fe(e, t) {
806
+ function Ae(e, t) {
677
807
  let n = e.length;
678
808
  if (n < 2) return e.map(() => 0);
679
809
  let r = (n) => (t[n + 1] - t[n]) / (e[n + 1] - e[n] || 1), i = Array(n).fill(0);
@@ -690,17 +820,17 @@ function Fe(e, t) {
690
820
  };
691
821
  return i[0] = a(0, 1, i[1]), i[n - 1] = a(n - 2, n - 1, i[n - 2]), i;
692
822
  }
693
- function Ie(e, t, n, r) {
823
+ function je(e, t, n, r) {
694
824
  let i = (t[0] - e[0]) / 3;
695
825
  return [[e[0] + i, e[1] + n * i], [t[0] - i, t[1] - r * i]];
696
826
  }
697
- function Le(e, t, n, r) {
698
- let [i, a] = Ie(e, t, n, r), o = ([e, t]) => `${X(e)},${X(t)}`;
827
+ function Me(e, t, n, r) {
828
+ let [i, a] = je(e, t, n, r), o = ([e, t]) => `${X(e)},${X(t)}`;
699
829
  return `C${o(i)} ${o(a)} ${o(t)}`;
700
830
  }
701
- function Re(e, t, n) {
831
+ function Ne(e, t, n) {
702
832
  let r = Array(e).fill(0), i = [], a = () => {
703
- Fe(i.map((e) => n(e)[0]), i.map((e) => n(e)[1])).forEach((e, t) => {
833
+ Ae(i.map((e) => n(e)[0]), i.map((e) => n(e)[1])).forEach((e, t) => {
704
834
  r[i[t]] = e;
705
835
  }), i = [];
706
836
  };
@@ -709,23 +839,23 @@ function Re(e, t, n) {
709
839
  }
710
840
  //#endregion
711
841
  //#region src/js/charts/line.ts
712
- var ze = (e) => e.map((e) => ({
842
+ var Pe = (e) => e.map((e) => ({
713
843
  ...e,
714
844
  from: 0,
715
845
  to: e.value,
716
846
  kind: "bar"
717
- })), Be = (n) => ({
718
- segments: ze,
847
+ })), Fe = (e) => ({
848
+ segments: Pe,
719
849
  series: !0,
720
850
  stackable: !0,
721
851
  running: !0,
722
- swatch: n ? "box" : void 0,
852
+ swatch: e ? "box" : void 0,
723
853
  headroom: ({ labelHeight: e, unit: t }) => e * 1.6 + 6 * t,
724
- footroom: ({ labelHeight: e, unit: t, series: r, focused: i, stacked: a }) => !n && !a && r === 2 && !i ? e + 7 * t : 0,
725
- draw(r) {
726
- let { rows: i, series: a, seriesValues: s, names: c, cx: l, y: u, height: d, unit: f, labelHeight: p, svg: m, stacked: h } = r, g = r.shape === "step", _ = r.shape === "smooth", v = a.length > 1, y = a.some((e) => e.focus), b = i.length - 1, S = u(0), C = i.length > 1 ? l(1) - l(0) : l(0) * 2;
727
- m.style.setProperty("--_base", `${X(S)}px`);
728
- let D = (e) => `--rise:${X(S - e)}px; `, O = (e, t) => i[t]?.cells[e] ?? i[t]?.cells[0], k = (e, t) => !O(e, t) || !!O(e, t)?.missing, M = i.map((e) => h ? ye(e, a.length, !0) : null), P = (e, t) => M[t]?.[e].to ?? O(e, t)?.value ?? 0, F = (e, t) => M[t]?.[e].from ?? 0, I = (e, t) => [l(t), u(P(e, t))], z = a.map((e, t) => {
854
+ footroom: ({ labelHeight: t, unit: n, series: r, focused: i, stacked: a }) => !e && !a && r === 2 && !i ? t + 7 * n : 0,
855
+ draw(t) {
856
+ let { rows: n, series: r, seriesValues: a, names: o, cx: s, y: c, height: l, unit: f, labelHeight: p, svg: m, stacked: h } = t, g = t.shape === "step", _ = t.shape === "smooth", v = r.length > 1, y = r.some((e) => e.focus), b = n.length - 1, x = c(0), C = n.length > 1 ? s(1) - s(0) : s(0) * 2;
857
+ m.style.setProperty("--_base", `${X(x)}px`);
858
+ let w = (e) => `--rise:${X(x - e)}px; `, T = (e, t) => n[t]?.cells[e] ?? n[t]?.cells[0], E = (e, t) => !T(e, t) || !!T(e, t)?.missing, D = n.map((e) => h ? fe(e, r.length, !0) : null), O = (e, t) => D[t]?.[e].to ?? T(e, t)?.value ?? 0, A = (e, t) => D[t]?.[e].from ?? 0, j = (e, t) => [s(t), c(O(e, t))], N = r.map((e, t) => {
729
859
  if (!v) return {
730
860
  attrs: {},
731
861
  ink: ""
@@ -738,177 +868,177 @@ var ze = (e) => e.map((e) => ({
738
868
  },
739
869
  ink: `--n:${t}; --m:${+!!n}; --palette:var(--tablechart-color-${t + 1}); `
740
870
  };
741
- }), B = Math.min(b, 6);
742
- r.plot.style.setProperty("--count", String(B + 1));
743
- let V = b > 0 ? B / (g ? i.length : b) : 1, H = (e) => e * V, U = (e) => `--i:${X(H(e))}`, ne = (e) => {
744
- let t = [], n = -1;
745
- return i.forEach((r, i) => {
746
- k(e, i) || (n < 0 && (n = i), (i === b || k(e, i + 1)) && ((g || i > n) && t.push([n, i]), n = -1));
871
+ }), F = Math.min(b, 6);
872
+ t.plot.style.setProperty("--count", String(F + 1));
873
+ let ee = b > 0 ? F / (g ? n.length : b) : 1, I = (e) => e * ee, L = (e) => `--i:${X(I(e))}`, R = (e) => {
874
+ let t = [], r = -1;
875
+ return n.forEach((n, i) => {
876
+ E(e, i) || (r < 0 && (r = i), (i === b || E(e, i + 1)) && ((g || i > r) && t.push([r, i]), r = -1));
747
877
  }), t;
748
- }, W = (e, t) => `--i:${X(H(e) + 1)}; --d:${X(H(g ? t + 1 : t) - H(e))}`, G = (e, t) => ({
878
+ }, z = (e, t) => `--i:${X(I(e) + 1)}; --d:${X(I(g ? t + 1 : t) - I(e))}`, B = (e, t) => ({
749
879
  "data-from": e + 1,
750
880
  "data-to": t + 1,
751
881
  ...g && { "data-flat": "" }
752
- }), re = _ ? a.map((e, t) => Re(i.length, (e) => k(t, e), (e) => I(t, e))) : [], ie = _ && n ? a.map((e, t) => Re(i.length, (e) => k(t, e), (e) => [l(e), u(F(t, e))])) : [], K = (e, t, n) => {
882
+ }), V = _ ? r.map((e, t) => Ne(n.length, (e) => E(t, e), (e) => j(t, e))) : [], H = _ && e ? r.map((e, t) => Ne(n.length, (e) => E(t, e), (e) => [s(e), c(A(t, e))])) : [], U = (e, t, n) => {
753
883
  let r = [];
754
884
  return e.forEach(([i, a], o) => {
755
- g ? (r.push(`H${X(i + n * C / 2)}`), o < e.length - 1 && r.push(`V${X(e[o + 1][1])}`)) : o > 0 && r.push(t ? Le(e[o - 1], [i, a], t[o - 1], t[o]) : `L${X(i)},${X(a)}`);
885
+ g ? (r.push(`H${X(i + n * C / 2)}`), o < e.length - 1 && r.push(`V${X(e[o + 1][1])}`)) : o > 0 && r.push(t ? Me(e[o - 1], [i, a], t[o - 1], t[o]) : `L${X(i)},${X(a)}`);
756
886
  }), r;
757
- }, q = (e, t, n, r) => i.slice(t, n + 1).map((n, i) => [l(t + i), u(r(e, t + i))]), J = (e, t, n, r) => _ ? e[t].slice(n, r + 1) : null, ae = (e) => l(e) - (g ? C / 2 : 0), oe = (e) => l(e) + (g ? C / 2 : 0), se = (e) => {
758
- let t = L("g", {
759
- class: j,
760
- ...z[e].attrs,
887
+ }, W = (e, t, r, i) => n.slice(t, r + 1).map((n, r) => [s(t + r), c(i(e, t + r))]), te = (e, t, n, r) => _ ? e[t].slice(n, r + 1) : null, ne = (e) => s(e) - (g ? C / 2 : 0), re = (e) => s(e) + (g ? C / 2 : 0), ie = (e) => {
888
+ let t = k("g", {
889
+ class: "tablechart-area",
890
+ ...N[e].attrs,
761
891
  ...h && { "data-stacked": "" },
762
- style: z[e].ink
763
- }), n = ne(e), r = L("g", {
764
- class: T,
765
- style: `--rows:${X(B + 1)}; ${n.length ? W(...n[0]) : ""}`
892
+ style: N[e].ink
893
+ }), n = R(e), r = k("g", {
894
+ class: "tablechart-area-fill",
895
+ style: `--rows:${X(F + 1)}; ${n.length ? z(...n[0]) : ""}`
766
896
  });
767
897
  t.appendChild(r);
768
898
  for (let [t, i] of n) {
769
- let n = q(e, t, i, P), a = q(e, t, i, F), o = J(ie, e, t, i)?.reverse() ?? null, s = [
770
- `M${X(ae(t))},${X(a[0][1])}`,
771
- `L${X(ae(t))},${X(n[0][1])}`,
772
- ...K(n, J(re, e, t, i), 1),
773
- `L${X(oe(i))},${X(a[a.length - 1][1])}`,
774
- ...K(a.reverse(), o, -1),
899
+ let n = W(e, t, i, O), a = W(e, t, i, A), o = te(H, e, t, i)?.reverse() ?? null, s = [
900
+ `M${X(ne(t))},${X(a[0][1])}`,
901
+ `L${X(ne(t))},${X(n[0][1])}`,
902
+ ...U(n, te(V, e, t, i), 1),
903
+ `L${X(re(i))},${X(a[a.length - 1][1])}`,
904
+ ...U(a.reverse(), o, -1),
775
905
  "Z"
776
906
  ].join(" ");
777
- r.appendChild(L("path", {
907
+ r.appendChild(k("path", {
778
908
  d: s,
779
- ...G(t, i),
780
- style: W(t, i)
909
+ ...B(t, i),
910
+ style: z(t, i)
781
911
  }));
782
912
  }
783
913
  m.appendChild(t);
784
- }, Y = (e) => {
785
- let t = a[e];
786
- for (let [n, r] of ne(e)) {
787
- let i = q(e, n, r, P), a = [`M${X(ae(n))},${X(i[0][1])}`, ...K(i, J(re, e, n, r), 1)].join(" ");
788
- m.appendChild(L("path", {
789
- class: o,
790
- ...z[e].attrs,
914
+ }, K = (e) => {
915
+ let t = r[e];
916
+ for (let [n, r] of R(e)) {
917
+ let i = W(e, n, r, O), a = [`M${X(ne(n))},${X(i[0][1])}`, ...U(i, te(V, e, n, r), 1)].join(" ");
918
+ m.appendChild(k("path", {
919
+ class: "tablechart-series",
920
+ ...N[e].attrs,
791
921
  d: a,
792
922
  ...t.line && { "data-line": t.line },
793
- ...G(n, r),
794
- style: `${z[e].ink}${W(n, r)}`
923
+ ...B(n, r),
924
+ style: `${N[e].ink}${z(n, r)}`
795
925
  }));
796
926
  }
797
927
  };
798
- n && a.forEach((e, t) => se(t)), a.forEach((e, t) => Y(t)), g || (() => {
799
- let n = a.map((e, t) => v ? R(a, t) : {
928
+ e && r.forEach((e, t) => ie(t)), r.forEach((e, t) => K(t)), g || (() => {
929
+ let e = r.map((e, t) => v ? Oe(r, t) : {
800
930
  shape: "circle",
801
931
  open: !1
802
- }), r = (e, t, r) => {
803
- let [i, a] = I(e, t);
804
- return ee(n[e].shape, i, a, 4 * f, {
932
+ }), t = (t, n, r) => {
933
+ let [i, a] = j(t, n);
934
+ return ke(e[t].shape, i, a, 4 * f, {
805
935
  ...r,
806
- style: `${r.style ?? ""}${D(a)}${U(t)}`
936
+ style: `${r.style ?? ""}${w(a)}${L(n)}`
807
937
  });
808
- }, o = (e) => i.map((e, t) => t).filter((t) => !k(e, t)), s = a.flatMap((t, i) => n[i].open ? o(i).map((t) => r(i, t, {
809
- class: e,
810
- "data-row": t + 1,
811
- ...v && { "data-series": i + 1 }
938
+ }, i = (e) => n.map((e, t) => t).filter((t) => !E(e, t)), a = r.flatMap((n, r) => e[r].open ? i(r).map((e) => t(r, e, {
939
+ class: d,
940
+ "data-row": e + 1,
941
+ ...v && { "data-series": r + 1 }
812
942
  })) : []);
813
- te(m, s, w, d), a.forEach((e, i) => {
814
- for (let e of o(i)) m.appendChild(r(i, e, {
815
- class: t,
816
- ...z[i].attrs,
817
- "data-marker": n[i].shape,
818
- ...n[i].open && { "data-open": "" },
819
- "data-row": e + 1,
820
- style: z[i].ink
943
+ P(m, a, S, l), r.forEach((n, r) => {
944
+ for (let n of i(r)) m.appendChild(t(r, n, {
945
+ class: u,
946
+ ...N[r].attrs,
947
+ "data-marker": e[r].shape,
948
+ ...e[r].open && { "data-open": "" },
949
+ "data-row": n + 1,
950
+ style: N[r].ink
821
951
  }));
822
952
  });
823
953
  })();
824
- let ce = (e, t) => {
954
+ let ae = (e, t) => {
825
955
  let n = t;
826
- for (; n < b && !k(e, n + 1) && O(e, n + 1)?.value === O(e, t)?.value;) n++;
956
+ for (; n < b && !E(e, n + 1) && T(e, n + 1)?.value === T(e, t)?.value;) n++;
827
957
  return n;
828
- }, le = (e, t) => {
829
- let r = O(e, t);
830
- if (!r || r.missing || g && t > 0 && !k(e, t - 1) && O(e, t - 1)?.value === r.value || y && !a[e].focus) return "none";
958
+ }, oe = (t, n) => {
959
+ let i = T(t, n);
960
+ if (!i || i.missing || g && n > 0 && !E(t, n - 1) && T(t, n - 1)?.value === i.value || y && !r[t].focus) return "none";
831
961
  if (h) return "middle";
832
- let i = r.value < 0 ? "below" : "above";
833
- if (!v || y || a.length > 2) return i;
834
- let o = O(1 - e, t);
835
- return !o || o.missing ? i : r.value > o.value || r.value === o.value && e === 0 || n && r.value >= 0 && I(e, t)[1] + 7 * f + p > S ? "above" : "below";
836
- }, ue = v && !y && a.length > 2 && !h && !g, de = /* @__PURE__ */ new Map();
837
- if (ue) {
838
- let e = i.flatMap((e, t) => a.map((e, n) => ({
962
+ let a = i.value < 0 ? "below" : "above";
963
+ if (!v || y || r.length > 2) return a;
964
+ let o = T(1 - t, n);
965
+ return !o || o.missing ? a : i.value > o.value || i.value === o.value && t === 0 || e && i.value >= 0 && j(t, n)[1] + 7 * f + p > x ? "above" : "below";
966
+ }, se = v && !y && r.length > 2 && !h && !g, ce = /* @__PURE__ */ new Map();
967
+ if (se) {
968
+ let e = n.flatMap((e, t) => r.map((e, n) => ({
839
969
  s: n,
840
970
  i: t,
841
- value: O(n, t)?.value ?? 0
842
- }))).filter(({ s: e, i: t }) => le(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"], n = e.map(({ s: e, i: n, value: r }) => {
843
- let i = N(s[e][n]).width * f, [a, o] = I(e, n);
971
+ value: T(n, t)?.value ?? 0
972
+ }))).filter(({ s: e, i: t }) => oe(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"], i = G(e.map(({ s: e, i: n, value: r }) => {
973
+ let i = q(a[e][n]).width * f, [o, s] = j(e, n);
844
974
  return t(r).map((e) => [
845
- a - i / 2,
846
- e === "above" ? o - 7 * f - p : o + 7 * f,
975
+ o - i / 2,
976
+ e === "above" ? s - 7 * f - p : s + 7 * f,
847
977
  i,
848
978
  p
849
979
  ]);
850
- }), r = a.flatMap((e, t) => i.flatMap((e, n) => {
851
- if (k(t, n)) return [];
852
- let [r, i] = I(t, n);
980
+ }), r.flatMap((e, t) => n.flatMap((e, n) => {
981
+ if (E(t, n)) return [];
982
+ let [r, i] = j(t, n);
853
983
  return [[
854
984
  r - 4 * f,
855
985
  i - 4 * f,
856
986
  8 * f,
857
987
  8 * f
858
988
  ]];
859
- })), o = E(n, r, [
989
+ })), [
860
990
  0,
861
991
  0,
862
- l(b) + l(0),
863
- d
992
+ s(b) + s(0),
993
+ l
864
994
  ]);
865
- e.forEach(({ s: e, i: n, value: r }, i) => de.set(s[e][n], o[i] === null ? null : t(r)[o[i]]));
995
+ e.forEach(({ s: e, i: n, value: r }, o) => ce.set(a[e][n], i[o] === null ? null : t(r)[i[o]]));
866
996
  }
867
- let fe = (e, t) => ue ? de.get(s[e][t]) === null : !h && !g ? !1 : N(s[e][t]).width * f > (g ? ce(e, t) - t + 1 : 1) * C - 4 * f || h && e > 0 && P(e, t) < F(e, t) ? !0 : h && Math.abs(u(F(e, t)) - u(P(e, t))) < p * 1.2;
868
- s.forEach((e, t) => {
997
+ let J = (e, t) => se ? ce.get(a[e][t]) === null : !h && !g ? !1 : q(a[e][t]).width * f > (g ? ae(e, t) - t + 1 : 1) * C - 4 * f || h && e > 0 && O(e, t) < A(e, t) ? !0 : h && Math.abs(c(A(e, t)) - c(O(e, t))) < p * 1.2;
998
+ a.forEach((e, t) => {
869
999
  e.forEach((e, n) => {
870
- e.style.setProperty("--i", String(X(g ? (H(n) + H(n + 1)) / 2 : H(n))));
871
- let r = de.get(e) ?? le(t, n);
872
- if (e.dataset.place = r === "above" ? "outside" : r, e.toggleAttribute("data-left-out", r !== "none" && fe(t, n)), g && r !== "none" ? e.dataset.rowEnd = String(ce(t, n) + 1) : delete e.dataset.rowEnd, r === "none") return;
873
- let i = N(e).width * f / 2 + 4 * f, a = l(n);
874
- g ? a = (l(n) + l(ce(t, n))) / 2 : r === "middle" && n === 0 ? a += i : r === "middle" && n === b && (a -= i);
875
- let o = u(P(t, n)), s = {
876
- middle: (u(F(t, n)) - o) / 2,
1000
+ e.style.setProperty("--i", String(X(g ? (I(n) + I(n + 1)) / 2 : I(n))));
1001
+ let r = ce.get(e) ?? oe(t, n);
1002
+ if (e.dataset.place = r === "above" ? "outside" : r, e.toggleAttribute("data-left-out", r !== "none" && J(t, n)), g && r !== "none" ? e.dataset.rowEnd = String(ae(t, n) + 1) : delete e.dataset.rowEnd, r === "none") return;
1003
+ let i = q(e).width * f / 2 + 4 * f, a = s(n);
1004
+ g ? a = (s(n) + s(ae(t, n))) / 2 : r === "middle" && n === 0 ? a += i : r === "middle" && n === b && (a -= i);
1005
+ let o = c(O(t, n)), u = {
1006
+ middle: (c(A(t, n)) - o) / 2,
877
1007
  above: -7 * f,
878
1008
  below: 7 * f
879
1009
  };
880
- A(e, a, o + s[r], w, d);
1010
+ M(e, a, o + u[r], S, l);
881
1011
  });
882
1012
  });
883
- let pe = c.map((e, t) => {
1013
+ let le = o.map((e, t) => {
884
1014
  let n = b;
885
- for (; n > 0 && k(t, n);) n--;
886
- let [r, i] = I(t, n);
1015
+ for (; n > 0 && E(t, n);) n--;
1016
+ let [r, i] = j(t, n);
887
1017
  return {
888
1018
  name: e,
889
1019
  x: (g ? r + C / 2 : r) + 10 * f,
890
- y: h ? (i + u(F(t, n))) / 2 : i
1020
+ y: h ? (i + c(A(t, n))) / 2 : i
891
1021
  };
892
- }), me = (c[0] ? N(c[0]).height : 0) * f;
893
- for (let e of ke(pe, me)) A(e.name, e.x, e.y, w, d);
894
- let he = i.some((e) => e.cells.some((e) => !e.missing && e.value < 0)), ge = !n && !h && a.length === 2 && !y && !he ? d - 2 * f : S;
895
- m.appendChild(L("line", {
896
- class: x,
1022
+ }), ue = (o[0] ? q(o[0]).height : 0) * f;
1023
+ for (let e of xe(le, ue)) M(e.name, e.x, e.y, S, l);
1024
+ let de = n.some((e) => e.cells.some((e) => !e.missing && e.value < 0)), Y = !e && !h && r.length === 2 && !y && !de ? l - 2 * f : x;
1025
+ m.appendChild(k("line", {
1026
+ class: i,
897
1027
  x1: 0,
898
- x2: l(b) + l(0),
899
- y1: ge,
900
- y2: ge
1028
+ x2: s(b) + s(0),
1029
+ y1: Y,
1030
+ y2: Y
901
1031
  }));
902
1032
  }
903
- }), Ve = Be(!1), He = Be(!0), Ue = /* @__PURE__ */ new Set(), We = (e, t) => {
904
- if (Math.abs(e - t) <= Math.abs(t) / 100) return;
905
- let n = `[${f}] A total reads ${e}, but the steps before it add up to ${Number(t.toFixed(6))}. The chart shows your number.`;
906
- Ue.has(n) || (Ue.add(n), console.warn(n));
907
- }, Ge = {
1033
+ }), Ie = Fe(!1), Le = Fe(!0), Re = /* @__PURE__ */ new Set(), ze = (t, n) => {
1034
+ if (Math.abs(t - n) <= Math.abs(n) / 100) return;
1035
+ let r = `[${e}] A total reads ${t}, but the steps before it add up to ${Number(n.toFixed(6))}. The chart shows your number.`;
1036
+ Re.has(r) || (Re.add(r), console.warn(r));
1037
+ }, Be = {
908
1038
  segments: (e) => {
909
1039
  let t = 0, n = !1;
910
1040
  return e.map((e) => {
911
- if (e.isTotal) return n && We(e.value, t), n = !1, t = e.value, {
1041
+ if (e.isTotal) return n && ze(e.value, t), n = !1, t = e.value, {
912
1042
  ...e,
913
1043
  from: 0,
914
1044
  to: e.value,
@@ -925,69 +1055,69 @@ var ze = (e) => e.map((e) => ({
925
1055
  },
926
1056
  breakable: !0,
927
1057
  headroom: ({ labelHeight: e, badgeHeight: t, hasAnnotations: n, unit: r }) => e + 6 * r + (n ? t * 1.6 : 0),
928
- draw({ segments: e, cx: t, y: n, barWidth: r, height: i, unit: a, svg: o, values: s, breakAt: c, insideAlign: l }) {
929
- let u = n(0), d = Te(s, r, a), f = l ?? "center", p = e.map((t, r) => {
930
- let i = n(Math.max(t.from, t.to)), o = Math.abs(n(t.from) - n(t.to)), l = c !== null && Math.min(t.from, t.to) < c && Math.max(t.from, t.to) > c, u = t.kind === "total" && r > 0 && r === e.length - 1;
1058
+ draw({ segments: e, cx: t, y: n, barWidth: a, height: o, unit: s, svg: c, values: l, breakAt: u, insideAlign: d }) {
1059
+ let f = n(0), p = _e(l, a, s), m = d ?? "center", h = e.map((t, r) => {
1060
+ 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;
931
1061
  return {
932
1062
  top: i,
933
- length: o,
934
- down: t.kind === "down" || t.kind === "total" && (u ? t.to >= 0 : t.to < 0),
935
- inside: !l && !d && Ee(s[r], o, a)
1063
+ length: a,
1064
+ down: t.kind === "down" || t.kind === "total" && (c ? t.to >= 0 : t.to < 0),
1065
+ inside: !o && !p && ve(l[r], a, s)
936
1066
  };
937
- }), m = s[0] ? N(s[0]).height * a * .56 : 0, h = Infinity;
938
- for (let [e, t] of p.entries()) t.inside && (h = Math.min(h, (r - N(s[e]).width * a) / 2));
939
- let g = e.length, _ = (e, t, n = !1) => `--start:${(e / g).toFixed(4)}; --span:${(t / g).toFixed(4)}; --ease:${n ? K : "linear"};`;
940
- e.forEach((i, a) => {
941
- let s = e[a + 1];
942
- if (!s) return;
943
- let c = n(i.to), l = t(a) + r / 2, u = t(a + 1) - r / 2;
944
- o.appendChild(L("line", {
945
- class: v,
1067
+ }), g = l[0] ? q(l[0]).height * s * .56 : 0, _ = Infinity;
1068
+ for (let [e, t] of h.entries()) t.inside && (_ = Math.min(_, (a - q(l[e]).width * s) / 2));
1069
+ let v = e.length, y = (e, t, n = !1) => `--start:${(e / v).toFixed(4)}; --span:${(t / v).toFixed(4)}; --ease:${n ? w : "linear"};`;
1070
+ e.forEach((r, i) => {
1071
+ let o = e[i + 1];
1072
+ if (!o) return;
1073
+ let s = n(r.to), l = t(i) + a / 2, u = t(i + 1) - a / 2;
1074
+ c.appendChild(k("line", {
1075
+ class: "tablechart-connector",
946
1076
  x1: l,
947
1077
  x2: u,
948
- y1: c,
949
- y2: c,
950
- "data-row": a + 2,
951
- style: `${J("--i", s.slot)}; ${_(a + 1, 1 / 3)}`
1078
+ y1: s,
1079
+ y2: s,
1080
+ "data-row": i + 2,
1081
+ style: `${E("--i", o.slot)}; ${y(i + 1, 1 / 3)}`
952
1082
  }));
953
- }), e.forEach((n, c) => {
954
- let { top: l, length: u, down: d, inside: v } = p[c];
955
- o.appendChild(L("rect", {
956
- class: M(G, n),
1083
+ }), e.forEach((n, i) => {
1084
+ let { top: u, length: d, down: f, inside: p } = h[i];
1085
+ c.appendChild(k("rect", {
1086
+ class: A(r, n),
957
1087
  "data-kind": n.kind,
958
- "data-row": c + 1,
959
- "data-grow": d ? "down" : "up",
960
- x: t(c) - r / 2,
961
- y: l,
962
- width: r,
963
- height: Math.max(u, 1),
964
- style: `${J("--i", n.slot)}; ${_(c, 1, c === e.length - 1)}`
1088
+ "data-row": i + 1,
1089
+ "data-grow": f ? "down" : "up",
1090
+ x: t(i) - a / 2,
1091
+ y: u,
1092
+ width: a,
1093
+ height: Math.max(d, 1),
1094
+ style: `${E("--i", n.slot)}; ${y(i, 1, i === e.length - 1)}`
965
1095
  }));
966
- let y = s[c];
967
- y.style.setProperty("--start", (c / g).toFixed(4)), y.style.setProperty("--span", (1 / g).toFixed(4));
968
- let b = Math.min(h, (u - m) / 2), x = l + b + m / 2, S = l + u - b - m / 2, C = f === "center" ? l + u / 2 : f === "end" === d ? S : x;
969
- y.dataset.place = v ? "inside" : "outside", y.dataset.kind = n.kind;
970
- let T = v ? C : n.kind === "down" ? l + u + N(y).height * a + 3 * a : l - 3 * a;
971
- A(y, t(c), T, w, i);
972
- }), o.appendChild(L("line", {
973
- class: x,
1096
+ let b = l[i];
1097
+ b.style.setProperty("--start", (i / v).toFixed(4)), b.style.setProperty("--span", (1 / v).toFixed(4));
1098
+ let x = Math.min(_, (d - g) / 2), C = u + x + g / 2, w = u + d - x - g / 2, T = m === "center" ? u + d / 2 : m === "end" === f ? w : C;
1099
+ b.dataset.place = p ? "inside" : "outside", b.dataset.kind = n.kind;
1100
+ let D = p ? T : n.kind === "down" ? u + d + q(b).height * s + 3 * s : u - 3 * s;
1101
+ M(b, t(i), D, S, o);
1102
+ }), c.appendChild(k("line", {
1103
+ class: i,
974
1104
  x1: 0,
975
- x2: w,
976
- y1: u,
977
- y2: u
1105
+ x2: S,
1106
+ y1: f,
1107
+ y2: f
978
1108
  }));
979
1109
  }
980
1110
  }, Z = {
981
1111
  enabled: !1,
982
- log(...e) {
983
- Z.enabled && console.log(`[${f}]`, ...e);
1112
+ log(...t) {
1113
+ Z.enabled && console.log(`[${e}]`, ...t);
984
1114
  },
985
- timed(e, t, n) {
986
- if (!Z.enabled) return n();
987
- let r = performance.now(), i = n(), a = performance.now() - r, o = t.querySelectorAll("tbody tr").length;
988
- return a > 50 ? console.warn(`[${f}] ${e} took ${a.toFixed(1)} ms for ${o} rows, more than 50 ms.`, t) : Z.log(`${e} took ${a.toFixed(1)} ms for ${o} rows.`, t), i;
1115
+ timed(t, n, r) {
1116
+ if (!Z.enabled) return r();
1117
+ let i = performance.now(), a = r(), o = performance.now() - i, s = n.querySelectorAll("tbody tr").length;
1118
+ return o > 50 ? console.warn(`[${e}] ${t} took ${o.toFixed(1)} ms for ${s} rows, more than 50 ms.`, n) : Z.log(`${t} took ${o.toFixed(1)} ms for ${s} rows.`, n), a;
989
1119
  }
990
- }, Ke = (e) => {
1120
+ }, Ve = (e) => {
991
1121
  let t = (e?.textContent || "").trim(), n = t.match(/^(.*?)(-?\d+(?:[.,]\d+)?)(.*)$/);
992
1122
  return {
993
1123
  raw: t,
@@ -997,9 +1127,9 @@ var ze = (e) => e.map((e) => ({
997
1127
  missing: !n,
998
1128
  value: n ? Number.parseFloat(n[2].replace(",", ".")) : 0
999
1129
  };
1000
- }, qe = (e, t = "data-i18n") => Array.from(e.querySelectorAll("tbody tr")).map((e, n) => {
1001
- let r = e.querySelector("th"), i = Array.from(e.querySelectorAll("td")).map(Ke);
1002
- return i.length || i.push(Ke(null)), {
1130
+ }, He = (e, t = "data-i18n") => Array.from(e.querySelectorAll("tbody tr")).map((e, n) => {
1131
+ let r = e.querySelector("th"), i = Array.from(e.querySelectorAll("td")).map(Ve);
1132
+ return i.length || i.push(Ve(null)), {
1003
1133
  ...i[0],
1004
1134
  label: (r?.textContent || "").trim(),
1005
1135
  key: t && r?.getAttribute(t) || null,
@@ -1008,8 +1138,8 @@ var ze = (e) => e.map((e) => ({
1008
1138
  isTotal: e.getAttribute("data-kind") === "total",
1009
1139
  slot: n
1010
1140
  };
1011
- }), Je = (e) => Array.from(e.querySelector("thead tr:last-child")?.children ?? []).slice(1), Ye = (e) => e === "dashed" || e === "dotted" ? e : null, Xe = (e, t, n = "data-i18n") => {
1012
- let r = Je(e), i = Math.max(1, U(t.map((e) => e.cells.length)));
1141
+ }), Ue = (e) => Array.from(e.querySelector("thead tr:last-child")?.children ?? []).slice(1), We = (e) => e === "dashed" || e === "dotted" ? e : null, Ge = (e, t, n = "data-i18n") => {
1142
+ let r = Ue(e), i = Math.max(1, L(t.map((e) => e.cells.length)));
1013
1143
  return Array.from({ length: i }, (e, t) => {
1014
1144
  let i = r[t];
1015
1145
  return {
@@ -1017,84 +1147,84 @@ var ze = (e) => e.map((e) => ({
1017
1147
  key: n && i?.getAttribute(n) || null,
1018
1148
  focus: i?.getAttribute("data-kind") === "focus",
1019
1149
  marker: i?.getAttribute("data-marker") ?? null,
1020
- line: Ye(i?.getAttribute("data-line")),
1150
+ line: We(i?.getAttribute("data-line")),
1021
1151
  group: !!i?.hasAttribute("data-group")
1022
1152
  };
1023
1153
  });
1024
- }, Ze = (e, t) => {
1025
- if (!t) return;
1026
- let n = /* @__PURE__ */ new Map();
1027
- for (let r of e) {
1028
- let e = r.getAttribute("data-chart-keys") || null;
1029
- if (!e) continue;
1030
- if (n.has(e)) {
1031
- let t = n.get(e) + 1;
1032
- n.set(e, t), console.warn(`[${f}] Two charts have data-chart-keys="${e}", so this one uses "${e}-${t}" to keep their translations apart.`), e = `${e}-${t}`;
1033
- } else n.set(e, 1);
1034
- r.querySelectorAll("tbody th").forEach((n, r) => {
1035
- n.getAttribute(t) || n.setAttribute(t, `${e}-row${r + 1}`);
1154
+ }, Ke = (t, n) => {
1155
+ if (!n) return;
1156
+ let r = /* @__PURE__ */ new Map();
1157
+ for (let i of t) {
1158
+ let t = i.getAttribute("data-chart-keys") || null;
1159
+ if (!t) continue;
1160
+ if (r.has(t)) {
1161
+ let n = r.get(t) + 1;
1162
+ r.set(t, n), console.warn(`[${e}] Two charts have data-chart-keys="${t}", so this one uses "${t}-${n}" to keep their translations apart.`), t = `${t}-${n}`;
1163
+ } else r.set(t, 1);
1164
+ i.querySelectorAll("tbody th").forEach((e, r) => {
1165
+ e.getAttribute(n) || e.setAttribute(n, `${t}-row${r + 1}`);
1036
1166
  });
1037
- let i = Je(r);
1038
- i.length > 1 && i.forEach((n, r) => {
1039
- n.getAttribute(t) || n.setAttribute(t, `${e}-col${r + 1}`);
1040
- }), i.forEach((n, i) => {
1041
- if (!n.hasAttribute("data-group")) return;
1167
+ let a = Ue(i);
1168
+ a.length > 1 && a.forEach((e, r) => {
1169
+ e.getAttribute(n) || e.setAttribute(n, `${t}-col${r + 1}`);
1170
+ }), a.forEach((e, r) => {
1171
+ if (!e.hasAttribute("data-group")) return;
1042
1172
  let a = [];
1043
- r.querySelectorAll(`tbody tr > td:nth-of-type(${i + 1})`).forEach((n) => {
1044
- let r = (n.textContent || "").trim();
1045
- a.includes(r) || a.push(r), n.getAttribute(t) || n.setAttribute(t, `${e}-group${a.indexOf(r) + 1}`);
1173
+ i.querySelectorAll(`tbody tr > td:nth-of-type(${r + 1})`).forEach((e) => {
1174
+ let r = (e.textContent || "").trim();
1175
+ a.includes(r) || a.push(r), e.getAttribute(n) || e.setAttribute(n, `${t}-group${a.indexOf(r) + 1}`);
1046
1176
  });
1047
- }), Z?.log?.(`Keys for "${e}" written onto ${r.querySelectorAll("tbody th").length} rows`);
1177
+ }), Z?.log?.(`Keys for "${t}" written onto ${i.querySelectorAll("tbody th").length} rows`);
1048
1178
  }
1049
- }, Qe = (e) => Number(e.toPrecision(12)), $e = (e, t) => {
1179
+ }, qe = (e) => Number(e.toPrecision(12)), Je = (e, t) => {
1050
1180
  let n = e / Math.max(1, t) || 1, r = 10 ** Math.floor(Math.log10(n)), i = n / r;
1051
- return Qe((i < 1.42 ? 1 : i < 3.17 ? 2 : i < 7.08 ? 5 : 10) * r);
1052
- }, et = (e, t, n) => {
1181
+ return qe((i < 1.42 ? 1 : i < 3.17 ? 2 : i < 7.08 ? 5 : 10) * r);
1182
+ }, Ye = (e, t, n) => {
1053
1183
  let r = [];
1054
- for (let i = Math.ceil(e / n - 1e-9); i * n <= t + n * 1e-9; i++) r.push(Qe(i * n));
1184
+ for (let i = Math.ceil(e / n - 1e-9); i * n <= t + n * 1e-9; i++) r.push(qe(i * n));
1055
1185
  return r;
1056
- }, tt = (e, t = e) => {
1186
+ }, Xe = (e, t = e) => {
1057
1187
  do {
1058
1188
  let t = Math.round(e / 10 ** Math.floor(Math.log10(e) + 1e-9));
1059
- e = Qe(e * (t === 2 ? 2.5 : 2));
1189
+ e = qe(e * (t === 2 ? 2.5 : 2));
1060
1190
  } while (Math.abs(e / t - Math.round(e / t)) > 1e-9);
1061
1191
  return e;
1062
- }, nt = (e) => {
1192
+ }, Ze = (e) => {
1063
1193
  let t = (e ?? "").trim().split(/\s+/).map(Number.parseFloat);
1064
1194
  return t.length > 1 && t.every(Number.isFinite) ? t.sort((e, t) => e - t) : null;
1065
- }, rt = (e, t, n) => {
1195
+ }, Qe = (e, t, n) => {
1066
1196
  if (n && n.length > 2) return {
1067
1197
  min: n[0],
1068
1198
  max: n[n.length - 1],
1069
1199
  step: 0,
1070
1200
  ticks: n
1071
1201
  };
1072
- let r = n?.[0] ?? -U(e.map((e) => -e)), i = n?.[1] ?? U(e);
1202
+ let r = n?.[0] ?? -L(e.map((e) => -e)), i = n?.[1] ?? L(e);
1073
1203
  if (!n) {
1074
1204
  let e = (i - r || Math.abs(i) || 1) * .05;
1075
1205
  r -= e, i += e;
1076
1206
  }
1077
- let a = $e(i - r, t);
1207
+ let a = Je(i - r, t);
1078
1208
  return {
1079
1209
  min: r,
1080
1210
  max: i,
1081
1211
  step: a,
1082
- ticks: et(r, i, a)
1212
+ ticks: Ye(r, i, a)
1083
1213
  };
1084
- }, it = (e, t) => {
1214
+ }, $e = (e, t) => {
1085
1215
  let { step: n, ticks: r } = e;
1086
- for (; n && r.length > 2 && !t(r);) n = tt(n, e.step), r = et(e.min, e.max, n);
1216
+ for (; n && r.length > 2 && !t(r);) n = Xe(n, e.step), r = Ye(e.min, e.max, n);
1087
1217
  return {
1088
1218
  ...e,
1089
1219
  step: n,
1090
1220
  ticks: r
1091
1221
  };
1092
- }, at = [
1222
+ }, et = [
1093
1223
  "axis-break",
1094
1224
  "trend",
1095
1225
  "bracket"
1096
- ], ot = (e) => {
1097
- let t = e.hasAttribute("data-fragment"), n = Array.from(e.querySelectorAll("tbody tr")), r = Array.from(e.querySelector("thead tr:last-child")?.children ?? []).slice(1), i = Array.from(e.querySelectorAll("[data-annotation]")).filter((e) => at.includes(e.getAttribute("data-annotation") ?? "")), a = (e) => e.hasAttribute("data-fragment"), o = n.map((e) => Array.from(e.querySelectorAll(":scope > td")));
1226
+ ], tt = (e) => {
1227
+ let t = e.hasAttribute("data-fragment"), n = Array.from(e.querySelectorAll("tbody tr")), r = Array.from(e.querySelector("thead tr:last-child")?.children ?? []).slice(1), i = Array.from(e.querySelectorAll("[data-annotation]")).filter((e) => et.includes(e.getAttribute("data-annotation") ?? "")), a = (e) => e.hasAttribute("data-fragment"), o = n.map((e) => Array.from(e.querySelectorAll(":scope > td")));
1098
1228
  if (!t && !n.some(a) && !r.some(a) && !o.flat().some(a) && !i.some(a)) return null;
1099
1229
  let s = [], c = /* @__PURE__ */ new Map(), l = [], u = (e) => {
1100
1230
  let t = e === null ? void 0 : c.get(e);
@@ -1152,7 +1282,7 @@ var ze = (e) => e.map((e) => ({
1152
1282
  count: s.length,
1153
1283
  indexes: s
1154
1284
  };
1155
- }, st = (e) => {
1285
+ }, nt = (e) => {
1156
1286
  let t = e.plan;
1157
1287
  if (!t) return;
1158
1288
  let n = (t) => t === null || e.step - t >= 1;
@@ -1163,90 +1293,90 @@ var ze = (e) => e.map((e) => ({
1163
1293
  let u = r.hasAttribute("data-flat") ? (l - e + 1) / (i - e + 1) : i > e ? Math.max(0, l - e) / (i - e) : 0;
1164
1294
  r.style.setProperty("--reveal", String(u));
1165
1295
  }
1166
- }, ct = (e) => {
1296
+ }, rt = (e) => {
1167
1297
  let t = e.plan;
1168
1298
  if (!t) return;
1169
- let n = t.rows.length - 1, r = (e) => t.series.map((n, r) => t.cells[e]?.[r]?.step ?? n.step ?? t.rows[e]?.step ?? null), i = (e) => {
1170
- let t = r(e);
1299
+ 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) => {
1300
+ let t = i(e);
1171
1301
  return t.some((e) => e === null) ? null : Math.min(...t);
1172
- }, a = new Set(e.totals), o = (e, t, n, r) => {
1302
+ }, o = new Set(e.totals), c = (e, t, n, r) => {
1173
1303
  e.style.setProperty(n, String(r)), e.style.removeProperty("--d"), t === null ? e.style.removeProperty("--step") : e.style.setProperty("--step", String(t));
1174
1304
  };
1175
- for (let s of e.figure.querySelectorAll("[data-row], [data-series], [data-note]")) {
1176
- if (s.closest("table, .tablechart-controls") || s.hasAttribute("data-from")) continue;
1177
- let e = Number(s.dataset.note);
1305
+ for (let r of e.figure.querySelectorAll("[data-row], [data-series], [data-note]")) {
1306
+ if (r.closest("table, .tablechart-controls") || r.hasAttribute("data-from")) continue;
1307
+ let e = Number(r.dataset.note);
1178
1308
  if (e > 0) {
1179
1309
  let n = t.notes[e - 1];
1180
- n && o(s, n.step, "--after", n.after);
1310
+ n && c(r, n.step, "--after", n.after);
1181
1311
  continue;
1182
1312
  }
1183
- let c = s.dataset.row ? Number(s.dataset.row) - 1 : n;
1184
- if (s.classList.contains("tablechart-connector")) {
1185
- let e = t.rows[c - 1], n = t.rows[c];
1313
+ let s = r.dataset.row ? Number(r.dataset.row) - 1 : n;
1314
+ if (r.classList.contains("tablechart-connector")) {
1315
+ let e = t.rows[s - 1], n = t.rows[s];
1186
1316
  if (e && n) {
1187
1317
  let t = (e.step ?? -1) > (n.step ?? -1);
1188
- o(s, t ? e.step : n.step, "--i", t ? e.slot + 1 : n.slot);
1318
+ c(r, t ? e.step : n.step, "--i", t ? e.slot + 1 : n.slot);
1189
1319
  }
1190
1320
  continue;
1191
1321
  }
1192
- if (a.has(s)) {
1193
- let e = r(c).filter((e) => e !== null);
1194
- o(s, e.length ? Math.max(...e) : null, "--i", t.rows[c]?.slot ?? 0);
1322
+ if (o.has(r)) {
1323
+ let e = i(s).filter((e) => e !== null);
1324
+ c(r, e.length ? Math.max(...e) : null, "--i", t.rows[s]?.slot ?? 0);
1195
1325
  continue;
1196
1326
  }
1197
- if (s.hasAttribute("data-stack")) {
1198
- o(s, i(c), "--i", t.rows[c]?.slot ?? 0);
1327
+ if (r.hasAttribute("data-stack")) {
1328
+ c(r, a(s), "--i", t.rows[s]?.slot ?? 0);
1199
1329
  continue;
1200
1330
  }
1201
- let l = s.dataset.series ? Number(s.dataset.series) - 1 : 0, u = s.dataset.series ? t.series[l] : void 0;
1202
- if (s.classList.contains("tablechart-piece")) {
1203
- let e = r(c)[l] ?? null, n = t.cells[c]?.[l];
1204
- o(s, e === i(c) ? null : e, "--i", n && n.step !== null ? n.slot : c);
1331
+ let l = r.dataset.series ? Number(r.dataset.series) - 1 : 0, u = r.dataset.series ? t.series[l] : void 0;
1332
+ if (r.classList.contains("tablechart-piece")) {
1333
+ let e = i(s)[l] ?? null, n = t.cells[s]?.[l];
1334
+ c(r, e === a(s) ? null : e, "--i", n && n.step !== null ? n.slot : s);
1205
1335
  continue;
1206
1336
  }
1207
- if (s.dataset.place === "legend") {
1337
+ if (r.dataset.place === "legend") {
1208
1338
  let e = Math.min(...t.cells.map((e) => e[l]?.step ?? Infinity));
1209
- o(s, u?.step ?? (Number.isFinite(e) ? e : null), "--i", 0);
1339
+ c(r, u?.step ?? (Number.isFinite(e) ? e : null), "--i", 0);
1210
1340
  continue;
1211
1341
  }
1212
- let d = t.cells[c]?.[l];
1213
- d && d.step !== null ? o(s, d.step, "--i", d.slot) : u && u.step !== null ? o(s, u.step, "--i", c) : t.rows[c] && o(s, t.rows[c].step, "--i", t.rows[c].slot);
1342
+ let d = t.cells[s]?.[l];
1343
+ d && d.step !== null ? c(r, d.step, "--i", d.slot) : u && u.step !== null ? c(r, u.step, "--i", s) : t.rows[s] && c(r, t.rows[s].step, "--i", t.rows[s].slot);
1214
1344
  }
1215
- let s = e.figure.querySelector(`.${W}`);
1216
- if (s) {
1345
+ let l = e.figure.querySelector(`.${f}`);
1346
+ if (l) {
1217
1347
  let e = [...t.rows, ...t.cells.flat()].map((e) => e.step ?? -1), n = Math.max(-1, ...e);
1218
- n < 0 ? o(s, null, "--i", 0) : o(s, n, "--i", e.filter((e) => e === n).length);
1348
+ n < 0 ? c(l, null, "--i", 0) : c(l, n, "--i", e.filter((e) => e === n).length);
1219
1349
  }
1220
- let c = [...t.rows, ...t.cells.flat()].map((e) => e.slot + 1), l = t.series.some((e) => e.step !== null) ? t.rows.length : 1;
1221
- e.plot.style.setProperty("--count", String(Math.max(l, ...c)));
1222
- let u = e.figure.querySelectorAll(`.${G}`), d = u[u.length - 1];
1223
- if (e.figure.dataset.chart === "waterfall" && d?.dataset.kind === "total" && u.length > 1) {
1224
- let e = Number(d.dataset.row) - 1;
1225
- (t.rows[e - 1]?.step ?? -1) > (t.rows[e]?.step ?? -1) && (d.dataset.grow = d.dataset.grow === "down" ? "up" : "down");
1350
+ let u = [...t.rows, ...t.cells.flat()].map((e) => e.slot + 1), d = t.series.some((e) => e.step !== null) ? t.rows.length : 1;
1351
+ e.plot.style.setProperty("--count", String(Math.max(d, ...u)));
1352
+ let p = e.figure.querySelectorAll(`.${r}`), m = p[p.length - 1];
1353
+ if (e.figure.dataset.chart === "waterfall" && m?.dataset.kind === "total" && p.length > 1) {
1354
+ let e = Number(m.dataset.row) - 1;
1355
+ (t.rows[e - 1]?.step ?? -1) > (t.rows[e]?.step ?? -1) && (m.dataset.grow = m.dataset.grow === "down" ? "up" : "down");
1226
1356
  }
1227
- let f = Array.from(e.figure.querySelectorAll(`.${V}`));
1228
- if (f.length) {
1229
- let t = (e) => e.style.getPropertyValue("--step") || "none", n = (e) => Number(e.style.getPropertyValue("--share") || 0), r = f.length, i = Math.max(0, f.findIndex((e, n) => t(e) !== t(f[(n - 1 + r) % r]))), a = [];
1357
+ let h = Array.from(e.figure.querySelectorAll(`.${s}`));
1358
+ if (h.length) {
1359
+ let t = (e) => e.style.getPropertyValue("--step") || "none", n = (e) => Number(e.style.getPropertyValue("--share") || 0), r = h.length, i = Math.max(0, h.findIndex((e, n) => t(e) !== t(h[(n - 1 + r) % r]))), a = [];
1230
1360
  for (let e = 0; e < r; e++) {
1231
- let n = f[(i + e) % r], o = a[a.length - 1];
1361
+ let n = h[(i + e) % r], o = a[a.length - 1];
1232
1362
  o && t(o[0]) === t(n) ? o.push(n) : a.push([n]);
1233
1363
  }
1234
1364
  let o = /* @__PURE__ */ new Map();
1235
1365
  for (let e of a) {
1236
1366
  let t = e.reduce((e, t) => e + n(t), 0), r = 0;
1237
- for (let i of e) o.set(i.dataset.row ?? "", q(r, n(i), t)), r += n(i);
1367
+ for (let i of e) o.set(i.dataset.row ?? "", T(r, n(i), t)), r += n(i);
1238
1368
  }
1239
1369
  for (let t of e.figure.querySelectorAll("[data-row]")) {
1240
1370
  let e = o.get(t.dataset.row ?? "");
1241
1371
  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));
1242
1372
  }
1243
1373
  }
1244
- st(e);
1245
- }, lt = (e, t, n = !1) => {
1374
+ nt(e);
1375
+ }, it = (e, t, n = !1) => {
1246
1376
  let r = e.plan;
1247
1377
  if (!r) return;
1248
1378
  let i = Math.min(Math.max(Math.round(t), 0), r.count), a = i !== e.step;
1249
- e.step = i, e.figure.style.setProperty("--_step", String(i)), st(e);
1379
+ e.step = i, e.figure.style.setProperty("--_step", String(i)), nt(e);
1250
1380
  let [o, s] = e.controls?.querySelectorAll("button") ?? [];
1251
1381
  o && (o.disabled = i === 0), s && (s.disabled = i === r.count), a && !n && e.figure.dispatchEvent(new CustomEvent("tablechart:step", {
1252
1382
  bubbles: !0,
@@ -1255,43 +1385,43 @@ var ze = (e) => e.map((e) => ({
1255
1385
  steps: r.count
1256
1386
  }
1257
1387
  }));
1258
- }, ut = (e, t, n) => {
1388
+ }, at = (e, t, n) => {
1259
1389
  let r = document.createElement("div");
1260
- r.className = i;
1261
- let a = (r) => {
1390
+ r.className = "tablechart-controls";
1391
+ let i = (r) => {
1262
1392
  let i = document.createElement("button");
1263
1393
  i.type = "button", i.className = `tablechart-${r}`, i.dataset.go = r;
1264
1394
  let a = document.createElement("span");
1265
1395
  a.className = "tablechart-control-icon", a.setAttribute("aria-hidden", "true");
1266
- let o = L("svg", {
1396
+ let o = k("svg", {
1267
1397
  viewBox: "0 0 16 16",
1268
1398
  focusable: "false"
1269
1399
  });
1270
- o.appendChild(L("path", { d: r === "next" ? "M6 3l5 5-5 5" : "M10 3L5 8l5 5" })), a.appendChild(o);
1400
+ o.appendChild(k("path", { d: r === "next" ? "M6 3l5 5-5 5" : "M10 3L5 8l5 5" })), a.appendChild(o);
1271
1401
  let s = document.createElement("span");
1272
1402
  s.className = "tablechart-control-label", s.textContent = e[r];
1273
- let l = t[r];
1274
- l && n && s.setAttribute(n, l);
1275
- let u = document.createElement("span");
1276
- return u.className = c, u.textContent = e.hint, t.hint && n && u.setAttribute(n, t.hint), i.append(...r === "next" ? [
1403
+ let c = t[r];
1404
+ c && n && s.setAttribute(n, c);
1405
+ let l = document.createElement("span");
1406
+ return l.className = h, l.textContent = e.hint, t.hint && n && l.setAttribute(n, t.hint), i.append(...r === "next" ? [
1277
1407
  s,
1278
- u,
1408
+ l,
1279
1409
  a
1280
1410
  ] : [
1281
1411
  a,
1282
1412
  s,
1283
- u
1413
+ l
1284
1414
  ]), i;
1285
1415
  };
1286
- return r.append(a("previous"), a("next")), r;
1287
- }, dt = (e, t, n, r = {
1416
+ return r.append(i("previous"), i("next")), r;
1417
+ }, ot = (e, t, n, r = {
1288
1418
  x: 0,
1289
1419
  y: 0,
1290
1420
  scale: 1
1291
1421
  }, i = 2, a = 8, o = 12) => {
1292
1422
  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));
1293
1423
  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`;
1294
- }, ft = "tablechart-tooltip", pt = [
1424
+ }, st = "tablechart-tooltip", ct = [
1295
1425
  "--tablechart-surface",
1296
1426
  "--tablechart-tooltip-surface",
1297
1427
  "--tablechart-tooltip-color",
@@ -1299,51 +1429,51 @@ var ze = (e) => e.map((e) => ({
1299
1429
  "--tablechart-tooltip-radius",
1300
1430
  "--tablechart-tooltip-padding",
1301
1431
  "--tablechart-tooltip-shadow"
1302
- ], Q = null, mt, ht, $ = null, gt = null, _t = 0, vt = () => {
1303
- clearTimeout(_t), Q && $ && (Q.hidden = !0, $ = null, gt = null);
1304
- }, yt = !1, bt = !0, xt = NaN, St = NaN, Ct = !1, wt = () => {
1305
- if (Ct) return;
1306
- Ct = !0, document.addEventListener("pointermove", (e) => {
1307
- e.pointerType === "mouse" && (bt = e.screenX !== xt || e.screenY !== St, xt = e.screenX, St = e.screenY, bt && (yt = !1));
1432
+ ], Q = null, lt, ut, $ = null, dt = null, ft = 0, pt = () => {
1433
+ clearTimeout(ft), Q && $ && (Q.hidden = !0, $ = null, dt = null);
1434
+ }, mt = !1, ht = !0, gt = NaN, _t = NaN, vt = !1, yt = () => {
1435
+ if (vt) return;
1436
+ vt = !0, document.addEventListener("pointermove", (e) => {
1437
+ e.pointerType === "mouse" && (ht = e.screenX !== gt || e.screenY !== _t, gt = e.screenX, _t = e.screenY, ht && (mt = !1));
1308
1438
  }, {
1309
1439
  capture: !0,
1310
1440
  passive: !0
1311
1441
  });
1312
1442
  let e = () => {
1313
- yt = !0, vt();
1443
+ mt = !0, pt();
1314
1444
  };
1315
1445
  document.addEventListener("keydown", e, !0), window.addEventListener("scroll", e, {
1316
1446
  capture: !0,
1317
1447
  passive: !0
1318
1448
  });
1319
- }, Tt = (e, t) => t / Number.parseFloat(getComputedStyle(e).width) || 1, Et = (e) => {
1449
+ }, bt = (e, t) => t / Number.parseFloat(getComputedStyle(e).width) || 1, xt = (e) => {
1320
1450
  let t = e.tooltipparent;
1321
1451
  return (typeof t == "string" ? document.querySelector(t) : t) ?? document.body;
1322
- }, Dt = () => {
1323
- clearTimeout(_t), _t = window.setTimeout(vt, 120);
1324
- }, Ot = () => {
1452
+ }, St = () => {
1453
+ clearTimeout(ft), ft = window.setTimeout(pt, 120);
1454
+ }, Ct = () => {
1325
1455
  let e = document.createElement("div");
1326
- return e.className = ft, e.setAttribute("aria-hidden", "true"), e.hidden = !0, mt = document.createElement("div"), ht = document.createElement("div"), ht.className = `${ft}-arrow`, e.append(mt, ht), document.body.append(e), e.addEventListener("pointerenter", () => clearTimeout(_t)), e.addEventListener("pointerleave", (e) => e.pointerType === "mouse" && Dt()), document.addEventListener("pointerdown", (t) => {
1456
+ return e.className = st, e.setAttribute("aria-hidden", "true"), e.hidden = !0, lt = document.createElement("div"), ut = document.createElement("div"), ut.className = `${st}-arrow`, e.append(lt, ut), document.body.append(e), e.addEventListener("pointerenter", () => clearTimeout(ft)), e.addEventListener("pointerleave", (e) => e.pointerType === "mouse" && St()), document.addEventListener("pointerdown", (t) => {
1327
1457
  let n = t.target;
1328
- $ && !$.plot.contains(n) && !e.contains(n) && vt();
1329
- }), window.addEventListener("resize", vt), e;
1330
- }, kt = (e, t) => {
1458
+ $ && !$.plot.contains(n) && !e.contains(n) && pt();
1459
+ }), window.addEventListener("resize", pt), e;
1460
+ }, wt = (e, t) => {
1331
1461
  let n = t ? t.style.getPropertyValue("--step") : "x";
1332
1462
  return n === "" || Number(n) < e.step;
1333
- }, At = (e, t) => {
1463
+ }, Tt = (e, t) => {
1334
1464
  let n = e.svg.querySelector(`[data-series="${t + 1}"]:not(.tablechart-hole)`);
1335
1465
  if (!n) return;
1336
1466
  let r = getComputedStyle(n);
1337
1467
  return r.fill && r.fill !== "none" ? r.fill : r.stroke;
1338
- }, jt = (e, t, n) => {
1468
+ }, Et = (e, t, n) => {
1339
1469
  let r = e.series.length > 1, i = [];
1340
1470
  for (let [n, a] of e.seriesValues.entries()) {
1341
- if (!kt(e, a[t])) continue;
1471
+ if (!wt(e, a[t])) continue;
1342
1472
  let o = r ? e.figure.querySelector(`.tablechart-name[data-series="${n + 1}"]`) : null;
1343
1473
  i.push({
1344
1474
  name: r ? o?.textContent ?? e.series[n].name : "",
1345
1475
  value: a[t].textContent ?? "",
1346
- colour: r ? At(e, n) : void 0,
1476
+ colour: r ? Tt(e, n) : void 0,
1347
1477
  sample: o ? {
1348
1478
  marker: o.dataset.marker ?? null,
1349
1479
  open: o.hasAttribute("data-open"),
@@ -1353,11 +1483,11 @@ var ze = (e) => e.map((e) => ({
1353
1483
  });
1354
1484
  }
1355
1485
  let a = e.totals[t];
1356
- return i.length > 1 && kt(e, a) && i.push({
1486
+ return i.length > 1 && wt(e, a) && i.push({
1357
1487
  name: n.totallabel,
1358
1488
  value: a.textContent ?? ""
1359
1489
  }), i;
1360
- }, Mt = (e, t) => {
1490
+ }, Dt = (e, t) => {
1361
1491
  if (e.type.centre && e.values[t]) return e.values[t].getBoundingClientRect();
1362
1492
  let n = e.svg.querySelectorAll(`[data-row="${t + 1}"]:not(.tablechart-connector, .tablechart-leader)`), r = null;
1363
1493
  for (let e of n) {
@@ -1372,46 +1502,46 @@ var ze = (e) => e.map((e) => ({
1372
1502
  100
1373
1503
  ];
1374
1504
  return new DOMRect(i.left + i.width * a / 100, i.top + i.height * o / 100, i.width * s / 100, i.height * c / 100);
1375
- }, Nt = (e, t, n) => {
1376
- if (clearTimeout(_t), $ === e && gt === t) return;
1377
- let r = (e.type.tooltip ?? jt)(e, t, n);
1378
- if (!r.length) return vt();
1379
- $ && $ !== e && vt(), Q ?? (Q = Ot());
1505
+ }, Ot = (e, t, n) => {
1506
+ if (clearTimeout(ft), $ === e && dt === t) return;
1507
+ let r = (e.type.tooltip ?? Et)(e, t, n);
1508
+ if (!r.length) return pt();
1509
+ $ && $ !== e && pt(), Q ?? (Q = Ct());
1380
1510
  let i = (e, t, n, r = !1, i) => {
1381
1511
  let a = document.createElement("div");
1382
- if (a.className = `${ft}-line`, n) {
1512
+ if (a.className = `${st}-line`, n) {
1383
1513
  let e = document.createElement("span");
1384
- e.className = `${ft}-key`, e.style.background = n, i?.box ? e.dataset.sample = "box" : i && (e.dataset.sample = "line", i.marker && (e.dataset.marker = i.marker), i.line && (e.dataset.line = i.line), e.toggleAttribute("data-open", i.open)), a.append(e);
1514
+ e.className = `${st}-key`, e.style.background = n, i?.box ? e.dataset.sample = "box" : i && (e.dataset.sample = "line", i.marker && (e.dataset.marker = i.marker), i.line && (e.dataset.line = i.line), e.toggleAttribute("data-open", i.open)), a.append(e);
1385
1515
  }
1386
1516
  let o = document.createElement("span");
1387
- if (o.className = `${ft}-${r ? "title" : "name"}`, o.textContent = e, a.append(o), t) {
1517
+ if (o.className = `${st}-${r ? "title" : "name"}`, o.textContent = e, a.append(o), t) {
1388
1518
  e && o.append(":");
1389
1519
  let n = document.createElement("span");
1390
- n.className = `${ft}-value`, n.textContent = t, a.append(n);
1520
+ n.className = `${st}-value`, n.textContent = t, a.append(n);
1391
1521
  }
1392
1522
  return a;
1393
1523
  }, a = e.categories[t]?.textContent ?? e.rows[t].label, o = r.length === 1 && !r[0].name, s = r.every((e) => e.name && !e.value);
1394
- mt.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)));
1524
+ lt.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)));
1395
1525
  let c = getComputedStyle(e.figure);
1396
- for (let e of pt) {
1526
+ for (let e of ct) {
1397
1527
  let t = c.getPropertyValue(e).trim();
1398
1528
  t ? Q.style.setProperty(e, t) : Q.style.removeProperty(e);
1399
1529
  }
1400
1530
  Q.style.setProperty("--_color", c.color), Q.style.colorScheme = c.colorScheme, Q.style.fontFamily = c.fontFamily;
1401
- let l = Et(n);
1402
- Q.parentElement !== l && l.append(Q), $ = e, gt = t, Q.hidden = !1, Q.style.left = "0px", Q.style.top = "0px";
1531
+ let l = xt(n);
1532
+ Q.parentElement !== l && l.append(Q), $ = e, dt = t, Q.hidden = !1, Q.style.left = "0px", Q.style.top = "0px";
1403
1533
  let u = Q.getBoundingClientRect(), d = {
1404
1534
  x: u.left,
1405
1535
  y: u.top,
1406
- scale: Tt(Q, u.width)
1407
- }, f = Tt(e.plot, e.plot.getBoundingClientRect().width);
1408
- Q.style.fontSize = `${Number.parseFloat(c.fontSize) * f / d.scale}px`, dt(Q, ht, Mt(e, t), d);
1409
- }, Pt = (e, t, n = !1) => {
1536
+ scale: bt(Q, u.width)
1537
+ }, f = bt(e.plot, e.plot.getBoundingClientRect().width);
1538
+ Q.style.fontSize = `${Number.parseFloat(c.fontSize) * f / d.scale}px`, ot(Q, ut, Dt(e, t), d);
1539
+ }, kt = (e, t, n = !1) => {
1410
1540
  let { plot: r } = e;
1411
- r.setAttribute("data-hover", ""), wt();
1541
+ r.setAttribute("data-hover", ""), yt();
1412
1542
  let i = (t) => {
1413
1543
  if (e.rowAt) {
1414
- let n = r.getBoundingClientRect(), i = Tt(r, n.width);
1544
+ let n = r.getBoundingClientRect(), i = bt(r, n.width);
1415
1545
  return e.rowAt((t.clientX - n.left) / i, (t.clientY - n.top) / i);
1416
1546
  }
1417
1547
  let n = t.target.closest?.("[data-row]")?.getAttribute("data-row");
@@ -1421,13 +1551,13 @@ var ze = (e) => e.map((e) => ({
1421
1551
  else if (t.getAttribute("data-row") === String(e + 1)) return !0;
1422
1552
  return !1;
1423
1553
  }, s = null, c = (a) => {
1424
- if (a.type === "pointerdown") yt = !1;
1425
- else if (a.pointerType === "mouse" && (!bt || yt)) return;
1554
+ if (a.type === "pointerdown") mt = !1;
1555
+ else if (a.pointerType === "mouse" && (!ht || mt)) return;
1426
1556
  if (!r.classList.contains("is-placed") || !e.figure.classList.contains("is-shown")) return;
1427
- if (n && !e.figure.hasAttribute("data-left-out")) return $ === e ? vt() : void 0;
1557
+ if (n && !e.figure.hasAttribute("data-left-out")) return $ === e ? pt() : void 0;
1428
1558
  let c = i(a);
1429
- if (s = c, c === null || o(c)) return $ === e ? vt() : void 0;
1430
- Nt(e, c, t);
1559
+ if (s = c, c === null || o(c)) return $ === e ? pt() : void 0;
1560
+ Ot(e, c, t);
1431
1561
  }, l = (t) => {
1432
1562
  let n = t.target;
1433
1563
  return e.svg.contains(n) && n.hasAttribute("data-row") ? n : null;
@@ -1441,48 +1571,48 @@ var ze = (e) => e.map((e) => ({
1441
1571
  if (!r) return;
1442
1572
  a.delete(r);
1443
1573
  let i = Number(r.getAttribute("data-row")) - 1;
1444
- s === i && !o(i) && !yt && Nt(e, i, t);
1574
+ s === i && !o(i) && !mt && Ot(e, i, t);
1445
1575
  };
1446
1576
  e.svg.addEventListener("transitionend", u), e.svg.addEventListener("transitioncancel", u), r.addEventListener("pointermove", c), r.addEventListener("pointerdown", c), r.addEventListener("pointerleave", (t) => {
1447
- t.pointerType === "mouse" && (s = null, $ === e && Dt());
1577
+ t.pointerType === "mouse" && (s = null, $ === e && St());
1448
1578
  });
1449
- }, Ft = (e) => {
1450
- $ === e && vt();
1451
- }, It = {
1452
- area: He,
1453
- bar: Ae,
1454
- column: je,
1455
- donut: Pe,
1456
- line: Ve,
1457
- waterfall: Ge
1458
- }, Lt = (e, t) => {
1459
- It[e] = t;
1460
- }, Rt = {
1461
- "axis-break": se,
1462
- trend: he,
1463
- bracket: de,
1464
- reference: pe
1465
- }, zt = Object.keys(Rt), Bt = (e) => {
1579
+ }, At = (e) => {
1580
+ $ === e && pt();
1581
+ }, jt = {
1582
+ area: Le,
1583
+ bar: Se,
1584
+ column: Ce,
1585
+ donut: Ee,
1586
+ line: Ie,
1587
+ waterfall: Be
1588
+ }, Mt = (e, t) => {
1589
+ jt[e] = t;
1590
+ }, Nt = {
1591
+ "axis-break": I,
1592
+ trend: J,
1593
+ bracket: ne,
1594
+ reference: se
1595
+ }, Pt = Object.keys(Nt), Ft = (e) => {
1466
1596
  let t = "";
1467
1597
  for (let n = e.previousSibling; n && (t = (n.textContent ?? "") + t, !t.trim()); n = n.previousSibling);
1468
1598
  return t.trim();
1469
- }, Vt = [
1599
+ }, It = [
1470
1600
  "straight",
1471
1601
  "step",
1472
1602
  "smooth"
1473
- ], Ht = (e, t, n) => {
1603
+ ], Lt = (e, t, n) => {
1474
1604
  let r = e.getAttribute(t);
1475
1605
  return r === null ? n : r !== "false";
1476
- }, Ut = (e, t) => !!t.animate && e.getAttribute("data-chart-animate") !== "false", Wt = (e, t) => {
1606
+ }, Rt = (e, t) => !!t.animate && e.getAttribute("data-chart-animate") !== "false", zt = (e, t) => {
1477
1607
  let n = e.dataset.chartShape;
1478
- return n && Vt.includes(n) ? n : Vt.includes(t.shape) ? t.shape : "straight";
1479
- }, Gt = (e) => {
1608
+ return n && It.includes(n) ? n : It.includes(t.shape) ? t.shape : "straight";
1609
+ }, Bt = (e) => {
1480
1610
  for (let t of e.querySelectorAll("br")) {
1481
- if (t.previousElementSibling?.classList.contains("tablechart-sr") || /[.!?:;,…]$/.test(Bt(t))) continue;
1611
+ if (t.previousElementSibling?.classList.contains("tablechart-sr") || /[.!?:;,…]$/.test(Ft(t))) continue;
1482
1612
  let e = document.createElement("span");
1483
- e.className = c, e.textContent = ". ", t.before(e);
1613
+ e.className = h, e.textContent = ". ", t.before(e);
1484
1614
  }
1485
- }, Kt = (e, t, n) => {
1615
+ }, Vt = (e, t, n) => {
1486
1616
  let r = e.querySelector("table");
1487
1617
  if (!r) return null;
1488
1618
  let i = r.querySelector("tfoot [data-chart-total]");
@@ -1493,238 +1623,244 @@ var ze = (e) => e.map((e) => ({
1493
1623
  s && n.langattribute && o.setAttribute(n.langattribute, `${s}-total`);
1494
1624
  let c = a.insertCell();
1495
1625
  return c.setAttribute("data-chart-total", ""), c.dataset.value = t.dataset.value ?? "0", a.prepend(o), c;
1496
- }, qt = 0, Jt = (e) => {
1626
+ }, Ht = 0, Ut = (e) => {
1497
1627
  let t = e.querySelector(":scope > figcaption");
1498
1628
  if (!t) return;
1499
- Gt(t);
1629
+ Bt(t);
1500
1630
  let n = (e) => e.hasAttribute("aria-label") || e.hasAttribute("aria-labelledby"), r = (e) => {
1501
- t.id || (t.id = `tablechart-caption-${++qt}`), e.setAttribute("aria-labelledby", t.id);
1631
+ t.id || (t.id = `tablechart-caption-${++Ht}`), e.setAttribute("aria-labelledby", t.id);
1502
1632
  };
1503
1633
  e.tagName === "FIGURE" && !n(e) && r(e);
1504
1634
  let i = e.querySelector("table");
1505
1635
  i && !n(i) && !i.querySelector(":scope > caption") && r(i);
1506
- }, Yt = (e, t, r = null) => {
1507
- let i = r ?? (e.getAttribute("data-chart") || "column"), a = It[i];
1508
- if (!a) return console.warn(`[${f}] Unknown chart type "${i}". Known types: ${Object.keys(It).join(", ")}.`), e.setAttribute("data-chart-empty", ""), null;
1509
- let o = qe(e, t.langattribute);
1510
- if (!o.length) return console.warn(e.querySelector("table") ? `[${f}] A chart has no rows in its table, so there is nothing to draw.` : `[${f}] A chart has no table, so there is nothing to draw.`, e), e.setAttribute("data-chart-empty", ""), null;
1511
- Jt(e);
1512
- let c = Xe(e, o, t.langattribute);
1513
- c.length > 1 && !a.series && !a.columns && (console.warn(`[${f}] A ${i} chart uses only the first of its ${c.length} value columns.`), c = c.slice(0, 1));
1514
- let l = c.length > 1;
1515
- l && e.style.setProperty("--_series-count", String(c.length));
1516
- let u = e.hasAttribute("data-chart-stack");
1517
- u && !a.stackable && console.warn(`[${f}] A ${i} chart cannot be stacked.`);
1518
- let p = u && !!a.stackable && l, m = document.createElement("div");
1519
- m.className = ie, m.setAttribute("aria-hidden", "true");
1520
- let h = L("svg", {
1636
+ }, Wt = (r, i, a = null) => {
1637
+ let o = a ?? (r.getAttribute("data-chart") || "column"), s = jt[o];
1638
+ if (!s) return console.warn(`[${e}] Unknown chart type "${o}". Known types: ${Object.keys(jt).join(", ")}.`), r.setAttribute("data-chart-empty", ""), null;
1639
+ let u = He(r, i.langattribute);
1640
+ if (!u.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;
1641
+ Ut(r);
1642
+ let d = Ge(r, u, i.langattribute);
1643
+ d.length > 1 && !s.series && !s.columns && (console.warn(`[${e}] A ${o} chart uses only the first of its ${d.length} value columns.`), d = d.slice(0, 1));
1644
+ let p = d.length > 1;
1645
+ p && r.style.setProperty("--_series-count", String(d.length));
1646
+ let m = r.hasAttribute("data-chart-stack");
1647
+ m && !s.stackable && console.warn(`[${e}] A ${o} chart cannot be stacked.`);
1648
+ let h = m && !!s.stackable && p, g = document.createElement("div");
1649
+ g.className = t, g.setAttribute("aria-hidden", "true");
1650
+ let _ = k("svg", {
1521
1651
  role: "presentation",
1522
1652
  focusable: "false"
1523
1653
  });
1524
- m.appendChild(h), e.appendChild(m);
1525
- let g = a.centre ? o.filter((e) => !e.isTotal) : o, _ = Math.max(0, U(g.flatMap((e) => e.cells.slice(0, c.length).map((e) => z(e.number))))), v = c.map((e, t) => Math.max(0, U(o.map((e) => z(e.cells[t]?.number ?? ""))))), y = c.map((e, t) => o.map((e, n) => {
1526
- let r = e.cells[t] ?? e.cells[0], i = k(S, m);
1527
- return i.classList.add(...e.classes), i.dataset.value = String(r.value), r.prefix && (i.dataset.prefix = r.prefix), r.suffix && (i.dataset.suffix = r.suffix), r.missing && (i.dataset.missing = r.raw), l && (i.dataset.series = String(t + 1)), a.columns && (i.dataset.decimals = String(v[t])), i.dataset.row = String(n + 1), i.style.setProperty("--i", String(e.slot)), i;
1528
- })), b = y[0], x = p && a.totals ? o.map((e, t) => {
1529
- let n = k(S, m);
1530
- n.classList.add(...e.classes), n.dataset.kind = "total", n.dataset.row = String(t + 1), n.dataset.value = String(xe(e, c.length));
1531
- let r = e.cells[0];
1532
- return r.prefix && (n.dataset.prefix = r.prefix), r.suffix && (n.dataset.suffix = r.suffix), n.style.setProperty("--i", String(e.slot)), n;
1533
- }) : [], w = o[o.length - 1], T = c.some((e) => e.focus), E = e.getAttribute("data-chart-legend"), D = l && !a.columns && (E === null ? t.legend || a.legend !== void 0 : E !== "false") ? document.createElement("div") : null;
1534
- D && (D.className = d, D.setAttribute("aria-hidden", "true"), D.inert = !0);
1535
- let O = l && !a.columns ? c.map((n, r) => {
1536
- let i = k(s, D ?? m);
1537
- D && (i.dataset.place = "legend");
1538
- let o = a.legend ?? a.swatch;
1539
- if (o && (i.dataset.swatch = o), i.textContent = n.name, !o && Wt(e, t) !== "step") {
1540
- let e = R(c, r);
1541
- i.dataset.marker = e.shape, i.toggleAttribute("data-open", e.open);
1654
+ g.appendChild(_), r.appendChild(g);
1655
+ let v = s.centre ? u.filter((e) => !e.isTotal) : u, x = Math.max(0, L(v.flatMap((e) => e.cells.slice(0, d.length).map((e) => R(e.number))))), S = d.map((e, t) => Math.max(0, L(u.map((e) => R(e.cells[t]?.number ?? ""))))), C = document.createElement("div");
1656
+ C.className = "tablechart-values", g.appendChild(C);
1657
+ let w = d.map((e, t) => u.map((e, r) => {
1658
+ let i = e.cells[t] ?? e.cells[0], a = j(n, C);
1659
+ 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), p && (a.dataset.series = String(t + 1)), s.columns && (a.dataset.decimals = String(S[t])), a.dataset.row = String(r + 1), a.style.setProperty("--i", String(e.slot)), a;
1660
+ })), T = w[0], E = h && s.totals ? u.map((e, t) => {
1661
+ let r = j(n, C);
1662
+ r.classList.add(...e.classes), r.dataset.kind = "total", r.dataset.row = String(t + 1), r.dataset.value = String(pe(e, d.length));
1663
+ let i = e.cells[0];
1664
+ return i.prefix && (r.dataset.prefix = i.prefix), i.suffix && (r.dataset.suffix = i.suffix), r.style.setProperty("--i", String(e.slot)), r;
1665
+ }) : [], D = u[u.length - 1], O = d.some((e) => e.focus), A = r.getAttribute("data-chart-legend"), M = p && !s.columns && (A === null ? i.legend || s.legend !== void 0 : A !== "false") ? document.createElement("div") : null;
1666
+ M && (M.className = l, M.setAttribute("aria-hidden", "true"), M.inert = !0);
1667
+ let N = p && !s.columns ? d.map((e, t) => {
1668
+ let n = j(c, M ?? g);
1669
+ M && (n.dataset.place = "legend");
1670
+ let a = s.legend ?? s.swatch;
1671
+ if (a && (n.dataset.swatch = a), n.textContent = e.name, !a && zt(r, i) !== "step") {
1672
+ let e = Oe(d, t);
1673
+ n.dataset.marker = e.shape, n.toggleAttribute("data-open", e.open);
1542
1674
  }
1543
- return n.line && !o && (i.dataset.line = n.line), n.key && t.langattribute && i.setAttribute(t.langattribute, n.key), i.dataset.series = String(r + 1), i.style.setProperty("--n", String(r)), i.style.setProperty("--palette", `var(--tablechart-color-${r + 1})`), i.style.setProperty("--m", T && !n.focus ? "1" : "0"), i.style.setProperty("--i", String(w.slot)), i;
1544
- }) : [], A = a.centre ? k(W, m) : null;
1545
- if (A) {
1546
- let e = o.find((e) => e.isTotal), t = e ? e.value : o.reduce((e, t) => e + Math.abs(t.value), 0);
1547
- A.dataset.value = String(t), e && (A.dataset.decimals = String(z(e.number)));
1675
+ 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", O && !e.focus ? "1" : "0"), n.style.setProperty("--i", String(D.slot)), n;
1676
+ }) : [], P = s.centre ? j(f, g) : null;
1677
+ if (P) {
1678
+ let e = u.find((e) => e.isTotal), t = e ? e.value : u.reduce((e, t) => e + Math.abs(t.value), 0);
1679
+ P.dataset.value = String(t), e && (P.dataset.decimals = String(R(e.number)));
1548
1680
  }
1549
- let j = A && !o.some((e) => e.isTotal) ? Kt(e, A, t) : null, M = a.categories === "beside", N = document.createElement("div");
1550
- N.className = n, N.setAttribute("aria-hidden", "true"), N.inert = !0, M ? N.dataset.place = "beside" : a.centre && (N.dataset.place = "key"), N.style.setProperty("--_columns", String(o.length));
1551
- let P = 0;
1552
- for (let [e, n] of o.entries()) {
1553
- let r = document.createElement("span");
1554
- r.classList.add(...n.classes), r.textContent = n.label, n.key && t.langattribute && r.setAttribute(t.langattribute, n.key), a.centre && (r.dataset.kind = n.isTotal ? "total" : "slice", n.isTotal || (r.dataset.slice = String(P + 1), r.style.setProperty("--n", String(P)), r.style.setProperty("--palette", `var(--tablechart-color-${P + 1})`), P += 1)), r.style.setProperty("--i", String(n.slot)), r.dataset.row = String(e + 1), N.appendChild(r);
1681
+ let F = P && !u.some((e) => e.isTotal) ? Vt(r, P, i) : null, ee = s.categories === "beside", I = document.createElement("div");
1682
+ I.className = "tablechart-categories", I.setAttribute("aria-hidden", "true"), I.inert = !0, ee ? I.dataset.place = "beside" : s.centre && (I.dataset.place = "key"), I.style.setProperty("--_columns", String(u.length));
1683
+ let z = 0;
1684
+ for (let [e, t] of u.entries()) {
1685
+ let n = document.createElement("span");
1686
+ n.classList.add(...t.classes), n.textContent = t.label, t.key && i.langattribute && n.setAttribute(i.langattribute, t.key), s.centre && (n.dataset.kind = t.isTotal ? "total" : "slice", t.isTotal || (n.dataset.slice = String(z + 1), n.style.setProperty("--n", String(z)), n.style.setProperty("--palette", `var(--tablechart-color-${z + 1})`), z += 1)), n.style.setProperty("--i", String(t.slot)), n.dataset.row = String(e + 1), I.appendChild(n);
1555
1687
  }
1556
- (M ? m : e).appendChild(N), D && e.appendChild(D);
1557
- let F = c.filter((e) => !e.group), I = !a.axes && !a.centre && Ht(e, "data-chart-axis", t.axis), B = a.axes ? {
1558
- titles: F.slice(0, 2).map((e, n) => {
1559
- let r = k(`${ne}-title`, m);
1560
- return r.dataset.axis = n ? "y" : "x", r.textContent = e.name, e.key && t.langattribute && r.setAttribute(t.langattribute, e.key), r;
1688
+ (ee ? g : r).appendChild(I), M && r.appendChild(M);
1689
+ let B = d.filter((e) => !e.group), V = !s.axes && !s.centre && Lt(r, "data-chart-axis", i.axis), H = s.axes ? {
1690
+ titles: B.slice(0, 2).map((e, t) => {
1691
+ let n = j(`${y}-title`, g);
1692
+ return n.dataset.axis = t ? "y" : "x", n.textContent = e.name, e.key && i.langattribute && n.setAttribute(i.langattribute, e.key), n;
1561
1693
  }),
1562
- ticks: k(`${C}s`, m),
1694
+ ticks: j(`${b}s`, g),
1563
1695
  numbers: !0
1564
- } : I || !a.centre && Ht(e, "data-chart-grid", t.grid) ? {
1696
+ } : V || !s.centre && Lt(r, "data-chart-grid", i.grid) ? {
1565
1697
  titles: [],
1566
- ticks: k(`${C}s`, m),
1567
- numbers: I
1698
+ ticks: j(`${b}s`, g),
1699
+ numbers: V
1568
1700
  } : null;
1569
- a.text?.({
1570
- figure: e,
1571
- plot: m,
1572
- rows: o,
1573
- series: c,
1574
- config: t
1701
+ s.text?.({
1702
+ figure: r,
1703
+ plot: g,
1704
+ rows: u,
1705
+ series: d,
1706
+ config: i
1575
1707
  });
1576
- let V = Ut(e, t) && !a.axes ? ot(e) : null;
1577
- a.axes && e.querySelector("[data-fragment]") && Z.log(`A ${i} chart has no steps, so it is shown whole.`, e), V && e.setAttribute("data-steps", "");
1578
- let H = e.getAttribute("data-chart-keys"), ee = V && t.controls ? ut({
1579
- previous: t.previouslabel,
1580
- next: t.nextlabel,
1581
- hint: t.stephint
1708
+ let U = Rt(r, i) && !s.axes ? tt(r) : null;
1709
+ s.axes && r.querySelector("[data-fragment]") && Z.log(`A ${o} chart has no steps, so it is shown whole.`, r), U && r.setAttribute("data-steps", "");
1710
+ let W = r.getAttribute("data-chart-keys"), te = U && i.controls ? at({
1711
+ previous: i.previouslabel,
1712
+ next: i.nextlabel,
1713
+ hint: i.stephint
1582
1714
  }, {
1583
- previous: H && `${H}-previous`,
1584
- next: H && `${H}-next`,
1585
- hint: H && `${H}-step`
1586
- }, t.langattribute) : null;
1587
- ee && e.appendChild(ee);
1588
- let te = e.getAttribute("data-chart-table"), G = te && Zt.includes(te) ? te : t.table;
1589
- if (G === "never") e.removeAttribute("data-table");
1715
+ previous: W && `${W}-previous`,
1716
+ next: W && `${W}-next`,
1717
+ hint: W && `${W}-step`
1718
+ }, i.langattribute) : null;
1719
+ te && r.appendChild(te);
1720
+ let ne = r.getAttribute("data-chart-table"), re = ne && Kt.includes(ne) ? ne : i.table;
1721
+ if (re === "never") r.removeAttribute("data-table");
1590
1722
  else {
1591
- e.setAttribute("data-table", G);
1592
- let t = e.querySelector(":scope > table");
1593
- t && e.append(t);
1723
+ r.setAttribute("data-table", re);
1724
+ let e = r.querySelector(":scope > table");
1725
+ e && r.append(e);
1594
1726
  }
1595
- let re = Array.from(e.querySelectorAll("[data-annotation]")).map((e) => {
1596
- let t = e.getAttribute("data-annotation"), n = Rt[t];
1597
- if (!n) return console.warn(`[${f}] Unknown annotation "${t}". Known annotations: ${Object.keys(Rt).join(", ")}.`), null;
1598
- let r = Number.parseInt(e.getAttribute("data-series") ?? "1", 10), i = r >= 1 && r <= c.length ? r - 1 : 0;
1599
- return r !== i + 1 && console.warn(`[${f}] An annotation reads line ${r}, which is not there; it reads line 1.`), {
1600
- spec: e,
1601
- type: n,
1602
- badge: n.create(e, m),
1603
- series: i,
1604
- after: o.length
1727
+ let ie = Array.from(r.querySelectorAll("[data-annotation]")).map((t) => {
1728
+ let n = t.getAttribute("data-annotation"), r = Nt[n];
1729
+ if (!r) return console.warn(`[${e}] Unknown annotation "${n}". Known annotations: ${Object.keys(Nt).join(", ")}.`), null;
1730
+ let i = Number.parseInt(t.getAttribute("data-series") ?? "1", 10), a = i >= 1 && i <= d.length ? i - 1 : 0;
1731
+ return i !== a + 1 && console.warn(`[${e}] An annotation reads line ${i}, which is not there; it reads line 1.`), {
1732
+ spec: t,
1733
+ type: r,
1734
+ badge: r.create(t, g),
1735
+ series: a,
1736
+ after: u.length
1605
1737
  };
1606
1738
  }).filter((e) => e !== null);
1607
- Ut(e, t) && e.setAttribute("data-animate", Qt(e, i, t, !!V));
1608
- let K = {
1609
- figure: e,
1610
- plot: m,
1611
- svg: h,
1612
- rows: o,
1613
- decimals: _,
1614
- type: a,
1615
- values: b,
1616
- series: c,
1617
- seriesValues: y,
1618
- names: D ? [] : O,
1619
- categories: Array.from(N.children),
1620
- centre: A,
1621
- axes: B,
1622
- stacked: p,
1623
- totals: x,
1624
- totalCell: j,
1739
+ Rt(r, i) && r.setAttribute("data-animate", qt(r, o, i, !!U)), r.classList.toggle("is-webkit", navigator.vendor === "Apple Computer, Inc.");
1740
+ let G = {
1741
+ figure: r,
1742
+ plot: g,
1743
+ svg: _,
1744
+ rows: u,
1745
+ decimals: x,
1746
+ type: s,
1747
+ values: T,
1748
+ series: d,
1749
+ seriesValues: w,
1750
+ names: M ? [] : N,
1751
+ categories: Array.from(I.children),
1752
+ centre: P,
1753
+ axes: H,
1754
+ stacked: h,
1755
+ totals: E,
1756
+ totalCell: F,
1625
1757
  rowAt: null,
1626
1758
  rowBox: null,
1627
- annotations: re,
1759
+ annotations: ie,
1628
1760
  checks: [],
1629
- plan: V,
1761
+ plan: U,
1630
1762
  step: 0,
1631
- controls: ee
1763
+ controls: te
1764
+ }, K = 0;
1765
+ _.addEventListener("transitionrun", () => K++);
1766
+ let ae = () => {
1767
+ K = Math.max(0, K - 1), !K && r.classList.contains("is-shown") && nn(_);
1632
1768
  };
1633
- ee?.addEventListener("click", (e) => {
1769
+ _.addEventListener("transitionend", ae), _.addEventListener("transitioncancel", ae), te?.addEventListener("click", (e) => {
1634
1770
  let t = e.target.closest("button")?.dataset.go;
1635
- t && lt(K, K.step + (t === "next" ? 1 : -1));
1636
- }), lt(K, 0, !0);
1637
- let q = e.getAttribute("data-chart-tooltip"), J = q === "false" ? !1 : q === "auto" ? "auto" : q !== null || t.tooltip;
1638
- return J && Pt(K, t, J === "auto"), rn(K, t), K;
1639
- }, Xt = {
1771
+ t && it(G, G.step + (t === "next" ? 1 : -1));
1772
+ }), it(G, 0, !0);
1773
+ let q = r.getAttribute("data-chart-tooltip"), oe = q === "false" ? !1 : q === "auto" ? "auto" : q !== null || i.tooltip;
1774
+ return oe && kt(G, i, oe === "auto"), Qt(G, i), G;
1775
+ }, Gt = {
1640
1776
  grow: "grow",
1641
1777
  sweep: "sweep"
1642
- }, Zt = [
1778
+ }, Kt = [
1643
1779
  "never",
1644
1780
  "auto",
1645
1781
  "print",
1646
1782
  "always"
1647
- ], Qt = (e, t, n, r) => {
1648
- let i = t === "line" || t === "area", a = Xt[e.getAttribute("data-chart-animate") ?? ""] ?? Xt[String(n.animate)];
1783
+ ], qt = (e, t, n, r) => {
1784
+ let i = t === "line" || t === "area", a = Gt[e.getAttribute("data-chart-animate") ?? ""] ?? Gt[String(n.animate)];
1649
1785
  return i ? r ? "sweep" : a ?? "sweep" : t === "donut" || t === "waterfall" ? a ?? "grow" : "grow";
1650
- }, $t = (e) => {
1786
+ }, Jt = (e) => {
1651
1787
  let t = getComputedStyle(e).getPropertyValue("--tablechart-value-align").trim();
1652
1788
  return t === "start" || t === "center" || t === "end" ? t : null;
1653
- }, en = (e, t, n, r) => {
1789
+ }, Yt = (e, t, n, r) => {
1654
1790
  let i = getComputedStyle(e), a = (i.getPropertyValue(n).trim() || r).match(/^(\d+(?:\.\d+)?)(px|%|em|rem)$/);
1655
1791
  if (!a) return null;
1656
1792
  let o = Number(a[1]);
1657
- return a[2] === "%" ? o / 100 * w : o * (a[2] === "em" ? Number.parseFloat(i.fontSize) : a[2] === "rem" ? Number.parseFloat(getComputedStyle(document.documentElement).fontSize) : 1) * t;
1658
- }, tn = (e, t) => en(e, t, "--tablechart-bar-max", "60px") ?? Infinity, nn = (t, n) => {
1659
- let { plot: r, svg: i, rows: a, type: o, values: s, series: c, seriesValues: l, names: u, annotations: d } = t, m = Number.parseFloat(t.figure.dataset.chartAspect ?? ""), h = m > 0 ? m : o.aspect ?? n.aspect, _ = o.categories === "beside", v = t.axes && !o.axes ? t.axes : null, y = _ ? null : t.categories[0]?.parentElement, b = null;
1660
- if (v) {
1661
- r.style.margin = "", y && (y.style.marginLeft = "");
1793
+ return a[2] === "%" ? o / 100 * S : o * (a[2] === "em" ? Number.parseFloat(i.fontSize) : a[2] === "rem" ? Number.parseFloat(getComputedStyle(document.documentElement).fontSize) : 1) * t;
1794
+ }, Xt = (e, t) => Yt(e, t, "--tablechart-bar-max", "60px") ?? Infinity, Zt = (t, n) => {
1795
+ let { plot: r, svg: i, rows: a, type: o, values: s, series: c, seriesValues: l, names: u, annotations: f } = t, p = Number.parseFloat(t.figure.dataset.chartAspect ?? ""), h = p > 0 ? p : o.aspect ?? n.aspect, g = o.categories === "beside", _ = t.axes && !o.axes ? t.axes : null, v = g ? null : t.categories[0]?.parentElement, C = null;
1796
+ if (_) {
1797
+ r.style.margin = "", v && (v.style.marginLeft = "");
1662
1798
  let e = r.clientWidth;
1663
1799
  if (!e) return !1;
1664
- let i = o.segments?.(a) ?? [], s = t.stacked ? a.flatMap((e) => Object.values(be(e, c.length, o.running))) : i.some((e) => e.kind === "up" || e.kind === "down") ? i.flatMap((e) => [e.from, e.to]) : a.flatMap((e) => e.cells.slice(0, c.length).filter((e) => !e.missing).map((e) => e.value)), l = Math.min(0, -U(s.map((e) => -e))), u = Math.max(0, U(s)), d = Number.parseFloat(getComputedStyle(r).fontSize) || 16, { chartScaleY: f, chartScale: p } = t.figure.dataset, m = nt(f ?? p);
1665
- if (m && m.length > 2) b = {
1800
+ let i = o.segments?.(a) ?? [], s = t.stacked ? a.flatMap((e) => Object.values(Y(e, c.length, o.running))) : i.some((e) => e.kind === "up" || e.kind === "down") ? i.flatMap((e) => [e.from, e.to]) : a.flatMap((e) => e.cells.slice(0, c.length).filter((e) => !e.missing).map((e) => e.value)), l = Math.min(0, -L(s.map((e) => -e))), u = Math.max(0, L(s)), d = Number.parseFloat(getComputedStyle(r).fontSize) || 16, { chartScaleY: f, chartScale: p } = t.figure.dataset, m = Ze(f ?? p);
1801
+ if (m && m.length > 2) C = {
1666
1802
  min: m[0],
1667
1803
  max: m[m.length - 1],
1668
1804
  step: 0,
1669
1805
  ticks: m
1670
1806
  };
1671
1807
  else {
1672
- let [t, n] = m ?? [l, u], r = $e(n - t, Math.max((_ ? e / 9 : e * h / 3) / d, 2)), i = (e, t) => m ? e : Number(((t ? Math.ceil : Math.floor)(e / r - 1e-9 * (t ? 1 : -1)) * r).toPrecision(12)), a = i(t, !1), o = i(n, !0);
1673
- b = {
1808
+ let [t, n] = m ?? [l, u], r = Je(n - t, Math.max((g ? e / 9 : e * h / 3) / d, 2)), i = (e, t) => m ? e : Number(((t ? Math.ceil : Math.floor)(e / r - 1e-9 * (t ? 1 : -1)) * r).toPrecision(12)), a = i(t, !1), o = i(n, !0);
1809
+ C = {
1674
1810
  min: a,
1675
1811
  max: o,
1676
1812
  step: r,
1677
- ticks: et(a, o, r)
1813
+ ticks: Ye(a, o, r)
1678
1814
  };
1679
1815
  }
1680
- v.ticks.textContent = "";
1681
- let g = a.find((e) => !e.missing), x = U(b.ticks.map((e) => z(String(e))));
1682
- for (let e of b.ticks) {
1683
- let t = k(C, v.ticks);
1684
- t.dataset.value = String(e), t.dataset.place = "none", g?.prefix && (t.dataset.prefix = g.prefix), g?.suffix && (t.dataset.suffix = g.suffix), an(t, x, n.locale);
1816
+ _.ticks.textContent = "";
1817
+ let y = a.find((e) => !e.missing), x = L(C.ticks.map((e) => R(String(e))));
1818
+ for (let e of C.ticks) {
1819
+ let t = j(b, _.ticks);
1820
+ t.dataset.value = String(e), t.dataset.place = "none", y?.prefix && (t.dataset.prefix = y.prefix), y?.suffix && (t.dataset.suffix = y.suffix), $t(t, x, n.locale);
1685
1821
  }
1686
- if (v.numbers) {
1687
- let e = Array.from(v.ticks.children);
1822
+ if (_.numbers) {
1823
+ let e = Array.from(_.ticks.children);
1688
1824
  for (let t of e) delete t.dataset.place;
1689
- H(e), _ ? r.style.marginBottom = `${(e[0] ? N(e[0]).height : 0) + 6}px` : (r.style.marginLeft = `${U([0, ...e.map((e) => N(e).width)]) + 10}px`, y && (y.style.marginLeft = r.style.marginLeft));
1825
+ ae(e), g ? r.style.marginBottom = `${(e[0] ? q(e[0]).height : 0) + 6}px` : (r.style.marginLeft = `${L([0, ...e.map((e) => q(e).width)]) + 10}px`, v && (v.style.marginLeft = r.style.marginLeft));
1690
1826
  }
1691
1827
  }
1692
- let x = r.clientWidth;
1693
- if (!x) return !1;
1694
- let S = w / x, T = w * h;
1695
- r.classList.add(g);
1828
+ let w = r.clientWidth;
1829
+ if (!w) return !1;
1830
+ let T = S / w, E = S * h;
1831
+ r.classList.add(m);
1696
1832
  for (let e of [...l.flat(), ...t.totals]) delete e.dataset.place;
1697
1833
  r.style.removeProperty("--_fit"), t.categories[0]?.parentElement?.style.removeProperty("--_beside");
1698
- let E = o.axes ? t.axes : null, D = [];
1699
- if (E) {
1700
- let e = Number.parseFloat(getComputedStyle(r).fontSize) || 16, i = c.flatMap((e, t) => e.group ? [] : [t]).slice(0, 2), o = a.filter((e) => i.every((t) => e.cells[t] && !e.cells[t].missing)), { chartScaleX: s, chartScaleY: l, chartScale: u } = t.figure.dataset, d = [nt(s), nt(l ?? u)];
1701
- D = i.map((t, n) => rt(o.length ? o.map((e) => e.cells[t].value) : [0, 1], Math.max(n ? T / S / (e * 4) : x / (e * 9), 4), d[n])), E.ticks.textContent = "", D.forEach((e, t) => {
1702
- let r = o[0]?.cells[i[t]], a = U(e.ticks.map((e) => z(String(e))));
1834
+ let D = o.axes ? t.axes : null, A = [];
1835
+ if (D) {
1836
+ let e = Number.parseFloat(getComputedStyle(r).fontSize) || 16, i = c.flatMap((e, t) => e.group ? [] : [t]).slice(0, 2), o = a.filter((e) => i.every((t) => e.cells[t] && !e.cells[t].missing)), { chartScaleX: s, chartScaleY: l, chartScale: u } = t.figure.dataset, d = [Ze(s), Ze(l ?? u)];
1837
+ A = i.map((t, n) => Qe(o.length ? o.map((e) => e.cells[t].value) : [0, 1], Math.max(n ? E / T / (e * 4) : w / (e * 9), 4), d[n])), D.ticks.textContent = "", A.forEach((e, t) => {
1838
+ let r = o[0]?.cells[i[t]], a = L(e.ticks.map((e) => R(String(e))));
1703
1839
  for (let i of e.ticks) {
1704
- let e = k(C, E.ticks);
1705
- 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), an(e, a, n.locale);
1840
+ let e = j(b, D.ticks);
1841
+ 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), $t(e, a, n.locale);
1706
1842
  }
1707
1843
  });
1708
1844
  }
1709
- let O = E ? Array.from(E.ticks.children) : [];
1710
- H([
1845
+ let N = D ? Array.from(D.ticks.children) : [];
1846
+ ae([
1711
1847
  ...l.flat(),
1712
1848
  ...t.totals,
1713
1849
  ...u,
1714
1850
  ...t.categories,
1715
- ...d.map((e) => e.badge),
1716
- ...E?.titles ?? [],
1717
- ...O
1851
+ ...f.map((e) => e.badge),
1852
+ ...D?.titles ?? [],
1853
+ ...N
1718
1854
  ]);
1719
- let j = (s[0] ? N(s[0]).height : 0) * S, M = d[0]?.badge ? N(d[0].badge).height * S : 0, P = Math.max(T, en(t.figure, S, "--tablechart-min-height", "200px") ?? 0, o.minHeight?.({
1720
- labelHeight: j,
1721
- nameHeight: Math.max(0, U(t.categories.map((e) => N(e).height))) * S,
1722
- unit: S,
1855
+ let F = (s[0] ? q(s[0]).height : 0) * T, ee = f[0]?.badge ? q(f[0].badge).height * T : 0, I = Math.max(E, Yt(t.figure, T, "--tablechart-min-height", "200px") ?? 0, o.minHeight?.({
1856
+ labelHeight: F,
1857
+ nameHeight: Math.max(0, L(t.categories.map((e) => q(e).height))) * T,
1858
+ unit: T,
1723
1859
  rows: a.length,
1724
1860
  series: c.length,
1725
1861
  stacked: t.stacked
1726
- }) ?? 0), F = t.stacked ? a.map((e) => {
1727
- let t = xe(e, c.length);
1862
+ }) ?? 0), z = t.stacked ? a.map((e) => {
1863
+ let t = pe(e, c.length);
1728
1864
  return {
1729
1865
  ...e,
1730
1866
  value: t,
@@ -1733,119 +1869,119 @@ var ze = (e) => e.map((e) => ({
1733
1869
  value: t
1734
1870
  } : e)
1735
1871
  };
1736
- }) : a, I = (o.segments ?? ((e) => e.map((e) => ({
1872
+ }) : a, B = (o.segments ?? ((e) => e.map((e) => ({
1737
1873
  ...e,
1738
1874
  from: 0,
1739
1875
  to: e.value,
1740
1876
  kind: "bar"
1741
- }))))(t.stacked ? F.map((e) => ({
1877
+ }))))(t.stacked ? z.map((e) => ({
1742
1878
  ...e,
1743
1879
  cells: [e.cells[0]]
1744
- })) : a), R = {
1745
- labelHeight: j,
1746
- badgeHeight: M,
1747
- hasAnnotations: d.length > 0,
1748
- unit: S,
1880
+ })) : a), V = {
1881
+ labelHeight: F,
1882
+ badgeHeight: ee,
1883
+ hasAnnotations: f.length > 0,
1884
+ unit: T,
1749
1885
  series: c.length,
1750
1886
  focused: c.some((e) => e.focus),
1751
1887
  stacked: t.stacked
1752
- }, V = Math.max(((e) => t.stacked ? e(a.map((e) => be(e, c.length, o.running).top)) : e([...I.flatMap((e) => [
1888
+ }, H = Math.max(((e) => t.stacked ? e(a.map((e) => Y(e, c.length, o.running).top)) : e([...B.flatMap((e) => [
1753
1889
  e.from,
1754
1890
  e.to,
1755
1891
  e.value
1756
- ]), ...a.flatMap((e) => e.cells.slice(0, c.length).map((e) => e.value))]))(U), 0), ee = I.some((e) => e.kind === "up" || e.kind === "down") ? I.flatMap((e) => [e.from, e.to]) : t.stacked ? a.map((e) => be(e, c.length, o.running).bottom) : a.flatMap((e) => e.cells.slice(0, c.length).map((e) => e.value)), W = Math.min(-U(ee.map((e) => -e)), 0), G = o.headroom?.(R) ?? j, re = 2 * S + (o.footroom?.(R) ?? 0) + (W < 0 ? j + 4 * S : 0), ie = P - G - re, K = b ? Math.max(b.max, V) : V * 1.02, q = b ? Math.min(b.min, W) : W * 1.02, J = d.find((e) => e.spec.getAttribute("data-annotation") === "axis-break")?.spec, ae = (e) => {
1757
- let t = Number.parseFloat(J?.getAttribute(e) ?? "");
1892
+ ]), ...a.flatMap((e) => e.cells.slice(0, c.length).map((e) => e.value))]))(L), 0), U = B.some((e) => e.kind === "up" || e.kind === "down") ? B.flatMap((e) => [e.from, e.to]) : t.stacked ? a.map((e) => Y(e, c.length, o.running).bottom) : a.flatMap((e) => e.cells.slice(0, c.length).map((e) => e.value)), W = Math.min(-L(U.map((e) => -e)), 0), te = o.headroom?.(V) ?? F, ne = 2 * T + (o.footroom?.(V) ?? 0) + (W < 0 ? F + 4 * T : 0), re = I - te - ne, ie = C ? Math.max(C.max, H) : H * 1.02, G = C ? Math.min(C.min, W) : W * 1.02, K = f.find((e) => e.spec.getAttribute("data-annotation") === "axis-break")?.spec, oe = (e) => {
1893
+ let t = Number.parseFloat(K?.getAttribute(e) ?? "");
1758
1894
  return Number.isFinite(t) ? t : null;
1759
- }, oe = ae("data-from") ?? ae("data-at"), se = ae("data-to"), Y = null;
1760
- if (J && (oe !== null || se !== null)) {
1761
- let e = oe ?? 0, t = se ?? K, n = se === null ? e : oe === null ? t : (e + t) / 2, r = J.getAttribute("data-size"), i = r?.match(/^\s*(\d+(?:\.\d+)?)\s*%\s*$/);
1762
- r !== null && !i && console.warn(`[${f}] data-size="${r}" is not a percentage, such as 30%. Using the default.`);
1763
- let a = Math.min(Math.max(i ? Number(i[1]) / 100 : se === null ? .22 : .3, .05), .8), s = I.filter((n) => (n.kind === "up" || n.kind === "down") && Math.max(n.from, n.to) > e && Math.min(n.from, n.to) < t);
1764
- o.breakable ? W < 0 ? console.warn(`[${f}] A chart with values below zero cannot break its scale.`) : e < 0 || t <= e || t > K || e === 0 && t === K ? console.warn(`[${f}] A break from ${e} to ${t} does not fit a scale that runs from 0 to ${V}.`) : s.length ? console.warn(`[${f}] A break from ${e} to ${t} would cut a step that floats. Keep it below or above the steps.`) : Y = {
1765
- lo: e,
1766
- hi: t,
1767
- gap: n,
1768
- share: a
1769
- } : console.warn(`[${f}] This kind of chart cannot break its scale.`);
1895
+ }, se = oe("data-from") ?? oe("data-at"), ce = oe("data-to"), J = null;
1896
+ if (K && (se !== null || ce !== null)) {
1897
+ let t = se ?? 0, n = ce ?? ie, r = ce === null ? t : se === null ? n : (t + n) / 2, i = K.getAttribute("data-size"), a = i?.match(/^\s*(\d+(?:\.\d+)?)\s*%\s*$/);
1898
+ i !== null && !a && console.warn(`[${e}] data-size="${i}" is not a percentage, such as 30%. Using the default.`);
1899
+ let s = Math.min(Math.max(a ? Number(a[1]) / 100 : ce === null ? .22 : .3, .05), .8), c = B.filter((e) => (e.kind === "up" || e.kind === "down") && Math.max(e.from, e.to) > t && Math.min(e.from, e.to) < n);
1900
+ o.breakable ? W < 0 ? console.warn(`[${e}] A chart with values below zero cannot break its scale.`) : t < 0 || n <= t || n > ie || t === 0 && n === ie ? console.warn(`[${e}] A break from ${t} to ${n} does not fit a scale that runs from 0 to ${H}.`) : c.length ? console.warn(`[${e}] A break from ${t} to ${n} would cut a step that floats. Keep it below or above the steps.`) : J = {
1901
+ lo: t,
1902
+ hi: n,
1903
+ gap: r,
1904
+ share: s
1905
+ } : console.warn(`[${e}] This kind of chart cannot break its scale.`);
1770
1906
  }
1771
- let ce = Y ? Y.gap : null, le = (Y && en(t.figure, S, "--tablechart-break-gap", "")) ?? 13, ue = P - re, de = K - q || 1, fe = (e) => ue - (e - q) / de * ie;
1772
- if (Y) {
1773
- let { lo: e, hi: t, gap: n, share: r } = Y, i = ie * r, a = (ie - i - le) / (e + (K - t)), o = i / (t - e);
1774
- fe = (r) => r <= e ? ue - r * a : r <= n ? ue - e * a - (r - e) * o : r <= t ? ue - e * a - (r - e) * o - le : ue - e * a - i - le - (r - t) * a;
1907
+ let le = J ? J.gap : null, ue = (J && Yt(t.figure, T, "--tablechart-break-gap", "")) ?? 13, de = I - ne, fe = ie - G || 1, me = (e) => de - (e - G) / fe * re;
1908
+ if (J) {
1909
+ let { lo: e, hi: t, gap: n, share: r } = J, i = re * r, a = (re - i - ue) / (e + (ie - t)), o = i / (t - e);
1910
+ me = (r) => r <= e ? de - r * a : r <= n ? de - e * a - (r - e) * o : r <= t ? de - e * a - (r - e) * o - ue : de - e * a - i - ue - (r - t) * a;
1775
1911
  }
1776
- let pe, me, he = [];
1777
- if (E) {
1778
- let e = 6 * S, [t, n] = E.titles, r = (e) => e ? N(e).width * S : 0, i = (e) => e ? N(e).height * S : 0, a = O.filter((e) => e.dataset.axis === "x"), o = O.filter((e) => e.dataset.axis === "y"), s = i(O[0]), c = r(n) + U([0, ...o.map(r)]) + 2 * e, l = s / 2;
1779
- me = [
1912
+ let he, ge, _e = [];
1913
+ if (D) {
1914
+ let e = 6 * T, [t, n] = D.titles, r = (e) => e ? q(e).width * T : 0, i = (e) => e ? q(e).height * T : 0, a = N.filter((e) => e.dataset.axis === "x"), o = N.filter((e) => e.dataset.axis === "y"), s = i(N[0]), c = r(n) + L([0, ...o.map(r)]) + 2 * e, l = s / 2;
1915
+ ge = [
1780
1916
  c,
1781
1917
  l,
1782
- w - c - U([0, ...a.map(r)]) / 2,
1783
- P - l - i(t) - s - 2 * e
1918
+ S - c - L([0, ...a.map(r)]) / 2,
1919
+ I - l - i(t) - s - 2 * e
1784
1920
  ];
1785
- let [u, d, f, p] = me, [m, h] = D, g = (e) => u + (e - m.min) / (m.max - m.min || 1) * f, _ = (e) => d + p - (e - h.min) / (h.max - h.min || 1) * p;
1786
- pe = g, fe = _;
1921
+ let [u, d, f, p] = ge, [m, h] = A, g = (e) => u + (e - m.min) / (m.max - m.min || 1) * f, _ = (e) => d + p - (e - h.min) / (h.max - h.min || 1) * p;
1922
+ he = g, me = _;
1787
1923
  let v = (e) => r(a.find((t) => Number(t.dataset.value) === e));
1788
- he = [it(m, (t) => t.every((n, r) => !r || g(n) - g(t[r - 1]) > (v(n) + v(t[r - 1])) / 2 + e)).ticks, it(h, (t) => t.every((n, r) => !r || _(t[r - 1]) - _(n) > s + e / 2)).ticks];
1789
- for (let t of O) {
1790
- let n = Number(t.dataset.value), r = t.dataset.axis === "x" ? 0 : 1, i = he[r].includes(n);
1791
- t.dataset.place = i ? r ? "before" : "below" : "none", i && A(t, r ? u - e : g(n), r ? _(n) : d + p + e, w, P);
1924
+ _e = [$e(m, (t) => t.every((n, r) => !r || g(n) - g(t[r - 1]) > (v(n) + v(t[r - 1])) / 2 + e)).ticks, $e(h, (t) => t.every((n, r) => !r || _(t[r - 1]) - _(n) > s + e / 2)).ticks];
1925
+ for (let t of N) {
1926
+ let n = Number(t.dataset.value), r = t.dataset.axis === "x" ? 0 : 1, i = _e[r].includes(n);
1927
+ t.dataset.place = i ? r ? "before" : "below" : "none", i && M(t, r ? u - e : g(n), r ? _(n) : d + p + e, S, I);
1792
1928
  }
1793
- t && A(t, u + f / 2, P - i(t), w, P), n && A(n, 0, d + p / 2, w, P);
1929
+ t && M(t, u + f / 2, I - i(t), S, I), n && M(n, 0, d + p / 2, S, I);
1794
1930
  }
1795
- let ge = u.length ? U(u.map((e) => N(e).width)) * S + 12 * S : 0, _e = t.categories[0]?.parentElement;
1796
- _e && (_e.style.paddingRight = ge ? `${ge / w * 100}%` : "");
1797
- let ve = (w - ge) / a.length, ye = (e) => (e + .5) * ve, Se = (e) => e >= 0 && e < a.length ? e : null;
1798
- t.rowAt = o.centre ? null : o.categories === "beside" ? (e, t) => Se(Math.floor(t * S / (P / a.length))) : (e) => Se(Math.floor(e * S / ve));
1799
- let Ce = ve / w * 100, we = 100 / a.length;
1931
+ let ve = u.length ? L(u.map((e) => q(e).width)) * T + 12 * T : 0, ye = t.categories[0]?.parentElement;
1932
+ ye && (ye.style.paddingRight = ve ? `${ve / S * 100}%` : "");
1933
+ let xe = (S - ve) / a.length, Se = (e) => (e + .5) * xe, Ce = (e) => e >= 0 && e < a.length ? e : null;
1934
+ t.rowAt = o.centre ? null : o.categories === "beside" ? (e, t) => Ce(Math.floor(t * T / (I / a.length))) : (e) => Ce(Math.floor(e * T / xe));
1935
+ let we = xe / S * 100, Te = 100 / a.length;
1800
1936
  if (t.rowBox = o.categories === "beside" ? (e) => [
1801
1937
  0,
1802
- e * we,
1938
+ e * Te,
1803
1939
  100,
1804
- we
1940
+ Te
1805
1941
  ] : (e) => [
1806
- e * Ce,
1942
+ e * we,
1807
1943
  0,
1808
- Ce,
1944
+ we,
1809
1945
  100
1810
- ], i.setAttribute("viewBox", `0 0 ${w} ${B(P)}`), i.textContent = "", me && pe) {
1811
- let [e, r, a, o] = me, [s, c] = he, l = pe;
1812
- Ht(t.figure, "data-chart-grid", n.grid) && i.appendChild(L("path", {
1813
- class: p,
1814
- d: [...s.map((e) => `M${B(l(e))},${B(r)}V${B(r + o)}`), ...c.map((t) => `M${B(e)},${B(fe(t))}H${B(e + a)}`)].join("")
1815
- })), i.appendChild(L("path", {
1816
- class: ne,
1946
+ ], i.setAttribute("viewBox", `0 0 ${S} ${O(I)}`), i.textContent = "", ge && he) {
1947
+ let [e, r, a, o] = ge, [s, c] = _e, l = he;
1948
+ Lt(t.figure, "data-chart-grid", n.grid) && i.appendChild(k("path", {
1949
+ class: x,
1950
+ d: [...s.map((e) => `M${O(l(e))},${O(r)}V${O(r + o)}`), ...c.map((t) => `M${O(e)},${O(me(t))}H${O(e + a)}`)].join("")
1951
+ })), i.appendChild(k("path", {
1952
+ class: y,
1817
1953
  d: [
1818
- `M${B(e)},${B(r)}V${B(r + o)}H${B(e + a)}`,
1819
- ...s.map((e) => `M${B(l(e))},${B(r + o)}v${B(4 * S)}`),
1820
- ...c.map((t) => `M${B(e)},${B(fe(t))}h${B(-4 * S)}`)
1954
+ `M${O(e)},${O(r)}V${O(r + o)}H${O(e + a)}`,
1955
+ ...s.map((e) => `M${O(l(e))},${O(r + o)}v${O(4 * T)}`),
1956
+ ...c.map((t) => `M${O(e)},${O(me(t))}h${O(-4 * T)}`)
1821
1957
  ].join("")
1822
1958
  }));
1823
1959
  }
1824
1960
  t.checks = [];
1825
- let Te = {
1961
+ let Ee = {
1826
1962
  rows: a,
1827
- segments: I,
1828
- cx: ye,
1829
- y: fe,
1830
- x: pe,
1831
- frame: me,
1832
- length: (e, n) => en(t.figure, S, e, n),
1833
- barWidth: Math.min(ve * n.barfill, tn(t.figure, S)),
1834
- barMax: tn(t.figure, S),
1835
- height: P,
1836
- unit: S,
1837
- labelHeight: j,
1838
- badgeHeight: M,
1963
+ segments: B,
1964
+ cx: Se,
1965
+ y: me,
1966
+ x: he,
1967
+ frame: ge,
1968
+ length: (e, n) => Yt(t.figure, T, e, n),
1969
+ barWidth: Math.min(xe * n.barfill, Xt(t.figure, T)),
1970
+ barMax: Xt(t.figure, T),
1971
+ height: I,
1972
+ unit: T,
1973
+ labelHeight: F,
1974
+ badgeHeight: ee,
1839
1975
  after: a.length,
1840
1976
  note: 0,
1841
1977
  labels: t.figure.dataset.chartLabels === "inside" || t.figure.dataset.chartLabels !== "outside" && n.labels === "inside" ? "inside" : "outside",
1842
- insideAlign: $t(t.figure),
1843
- breakAt: ce,
1844
- squeeze: Y,
1845
- breakGap: le,
1846
- domain: b ? [b.min, b.max] : null,
1978
+ insideAlign: Jt(t.figure),
1979
+ breakAt: le,
1980
+ squeeze: J,
1981
+ breakGap: ue,
1982
+ domain: C ? [C.min, C.max] : null,
1847
1983
  stacked: t.stacked,
1848
- shape: Wt(t.figure, n),
1984
+ shape: zt(t.figure, n),
1849
1985
  totals: t.totals,
1850
1986
  svg: i,
1851
1987
  plot: r,
@@ -1859,36 +1995,36 @@ var ze = (e) => e.map((e) => ({
1859
1995
  checks: t.checks,
1860
1996
  taken: []
1861
1997
  };
1862
- if (r.style.setProperty("--count", String(Math.max(1, ...a.map((e) => e.slot + 1)))), o.draw(Te), Te.rowAt && (t.rowAt = Te.rowAt), v && b) {
1863
- let e = 6 * S, r = _ && Te.x ? Te.x : fe, a = Array.from(v.ticks.children), o = (e) => N(a.find((t) => Number(t.dataset.value) === e) ?? a[0]), s = it(b, (t) => t.every((n, i) => !i || (_ ? r(n) - r(t[i - 1]) > (o(n).width + o(t[i - 1]).width) / 2 * S + e : r(t[i - 1]) - r(n) > o(n).height * S + e / 2))).ticks.filter((e) => !Y || e <= Y.lo || e >= Y.hi);
1998
+ if (r.style.setProperty("--count", String(Math.max(1, ...a.map((e) => e.slot + 1)))), o.draw(Ee), Ee.rowAt && (t.rowAt = Ee.rowAt), _ && C) {
1999
+ let e = 6 * T, r = g && Ee.x ? Ee.x : me, a = Array.from(_.ticks.children), o = (e) => q(a.find((t) => Number(t.dataset.value) === e) ?? a[0]), s = $e(C, (t) => t.every((n, i) => !i || (g ? r(n) - r(t[i - 1]) > (o(n).width + o(t[i - 1]).width) / 2 * T + e : r(t[i - 1]) - r(n) > o(n).height * T + e / 2))).ticks.filter((e) => !J || e <= J.lo || e >= J.hi);
1864
2000
  for (let t of a) {
1865
- let n = Number(t.dataset.value), i = v.numbers && s.includes(n);
1866
- t.dataset.place = i ? _ ? "below" : "before" : "none", i && A(t, _ ? r(n) : -e, _ ? P + e : r(n), w, P);
2001
+ let n = Number(t.dataset.value), i = _.numbers && s.includes(n);
2002
+ t.dataset.place = i ? g ? "below" : "before" : "none", i && M(t, g ? r(n) : -e, g ? I + e : r(n), S, I);
1867
2003
  }
1868
- let c = w - ge;
1869
- Ht(t.figure, "data-chart-grid", n.grid) && i.prepend(L("path", {
1870
- class: p,
1871
- d: s.map((e) => _ ? `M${B(r(e))},0V${B(P)}` : `M0,${B(r(e))}H${B(c)}`).join("")
1872
- })), v.numbers && i.appendChild(L("path", {
1873
- class: ne,
1874
- d: [_ ? `M${B(r(b.min))},${B(P)}H${B(r(b.max))}` : `M0,${B(r(b.max))}V${B(r(b.min))}`, ...s.map((e) => _ ? `M${B(r(e))},${B(P)}v${B(4 * S)}` : `M0,${B(r(e))}h${B(-4 * S)}`)].join("")
2004
+ let c = S - ve;
2005
+ Lt(t.figure, "data-chart-grid", n.grid) && i.prepend(k("path", {
2006
+ class: x,
2007
+ d: s.map((e) => g ? `M${O(r(e))},0V${O(I)}` : `M0,${O(r(e))}H${O(c)}`).join("")
2008
+ })), _.numbers && i.appendChild(k("path", {
2009
+ class: y,
2010
+ d: [g ? `M${O(r(C.min))},${O(I)}H${O(r(C.max))}` : `M0,${O(r(C.max))}V${O(r(C.min))}`, ...s.map((e) => g ? `M${O(r(e))},${O(I)}v${O(4 * T)}` : `M0,${O(r(e))}h${O(-4 * T)}`)].join("")
1875
2011
  }));
1876
2012
  }
1877
- for (let [e, n] of d.entries()) {
2013
+ for (let [e, n] of f.entries()) {
1878
2014
  n.badge?.setAttribute("data-note", String(e + 1));
1879
2015
  let r = n.series, i = (e) => ({
1880
2016
  ...e,
1881
2017
  ...e.cells[r] ?? e.cells[0]
1882
2018
  });
1883
2019
  n.type.draw(n.spec, n.badge, {
1884
- ...Te,
2020
+ ...Ee,
1885
2021
  ...t.stacked && {
1886
- rows: F,
2022
+ rows: z,
1887
2023
  ...t.totals.length && { values: t.totals }
1888
2024
  },
1889
2025
  ...r > 0 && !t.stacked && {
1890
2026
  rows: a.map(i),
1891
- segments: I.map((e) => {
2027
+ segments: B.map((e) => {
1892
2028
  let t = i(e);
1893
2029
  return e.kind === "bar" ? {
1894
2030
  ...t,
@@ -1901,90 +2037,94 @@ var ze = (e) => e.map((e) => ({
1901
2037
  note: e + 1
1902
2038
  });
1903
2039
  }
1904
- ct(t);
1905
- let Ee = t.categories[0]?.parentElement;
1906
- Ee && o.categories !== "beside" && !o.centre && Oe(Ee, t.categories.filter((e) => e.offsetParent !== null), (e) => ({
2040
+ rt(t);
2041
+ let De = t.categories[0]?.parentElement;
2042
+ De && o.categories !== "beside" && !o.centre && be(De, t.categories.filter((e) => e.offsetParent !== null), (e) => ({
1907
2043
  size: e.scrollWidth,
1908
2044
  room: e.clientWidth
1909
2045
  }), "--_name-fit");
1910
- let De = d.flatMap(({ badge: t }) => {
1911
- if (!(t instanceof HTMLElement) || !t.offsetWidth) return [];
1912
- let n = t.offsetWidth * S, r = t.offsetHeight * S, i = Number.parseFloat(t.style.left) / 100 * w, a = Number.parseFloat(t.style.top) / 100 * P, o = getComputedStyle(t).borderTopLeftRadius, s = o.endsWith("%") ? Number.parseFloat(o) / 100 : null, c = (Number.parseFloat(o) || 0) * S;
1913
- return [L("rect", {
1914
- class: e,
2046
+ let Oe = f.flatMap(({ badge: e }) => {
2047
+ if (!(e instanceof HTMLElement) || !e.offsetWidth) return [];
2048
+ let t = e.offsetWidth * T, n = e.offsetHeight * T, r = Number.parseFloat(e.style.left) / 100 * S, i = Number.parseFloat(e.style.top) / 100 * I, a = getComputedStyle(e).borderTopLeftRadius, o = a.endsWith("%") ? Number.parseFloat(a) / 100 : null, s = (Number.parseFloat(a) || 0) * T;
2049
+ return [k("rect", {
2050
+ class: d,
1915
2051
  "data-for": "badge",
1916
- "data-note": t.dataset.note ?? "",
1917
- x: i - n / 2,
1918
- y: a - r / 2,
1919
- width: n,
1920
- height: r,
1921
- rx: s === null ? c : n * s,
1922
- ry: s === null ? c : r * s,
1923
- style: ["--after", "--step"].map((e) => t.style.getPropertyValue(e) && `${e}:${t.style.getPropertyValue(e)}`).filter(Boolean).join("; ")
2052
+ "data-note": e.dataset.note ?? "",
2053
+ x: r - t / 2,
2054
+ y: i - n / 2,
2055
+ width: t,
2056
+ height: n,
2057
+ rx: o === null ? s : t * o,
2058
+ ry: o === null ? s : n * o,
2059
+ style: ["--after", "--step"].map((t) => e.style.getPropertyValue(t) && `${t}:${e.style.getPropertyValue(t)}`).filter(Boolean).join("; ")
1924
2060
  })];
1925
- }), ke = i.querySelector(`.${p}`);
2061
+ }), ke = i.querySelector(`.${x}`);
1926
2062
  if (ke) {
1927
- let n = r.getBoundingClientRect(), a = w / n.width, s = getComputedStyle(r), c = Number.parseFloat(s.lineHeight) / Number.parseFloat(s.fontSize) || 1.2, u = [
2063
+ let e = r.getBoundingClientRect(), n = S / e.width, a = getComputedStyle(r), s = Number.parseFloat(a.lineHeight) / Number.parseFloat(a.fontSize) || 1.2;
2064
+ P(i, [
1928
2065
  ...l.flat(),
1929
2066
  ...t.totals,
1930
2067
  ...o.categories === "beside" ? t.categories : []
1931
2068
  ].flatMap((t) => {
1932
2069
  if (t.dataset.place === "none" || t.hidden || t.hasAttribute("data-left-out")) return [];
1933
- let r = t.getBoundingClientRect(), i = r.height * a / c, o = Array.from(t.style).filter((e) => e.startsWith("--")).map((e) => `${e}:${t.style.getPropertyValue(e)}`);
1934
- return r.width ? [L("rect", {
1935
- class: e,
2070
+ let r = t.getBoundingClientRect(), i = r.height * n / s, a = Array.from(t.style).filter((e) => e.startsWith("--")).map((e) => `${e}:${t.style.getPropertyValue(e)}`);
2071
+ return r.width ? [k("rect", {
2072
+ class: d,
1936
2073
  "data-for": "text",
1937
- x: (r.left - n.left) * a - 3 * S,
1938
- y: (r.top - n.top) * a + (r.height * a - i) / 2 - S,
1939
- width: r.width * a + 6 * S,
1940
- height: i + 2 * S,
1941
- style: o.join("; ")
2074
+ x: (r.left - e.left) * n - 3 * T,
2075
+ y: (r.top - e.top) * n + (r.height * n - i) / 2 - T,
2076
+ width: r.width * n + 6 * T,
2077
+ height: i + 2 * T,
2078
+ style: a.join("; ")
1942
2079
  })] : [];
1943
- });
1944
- te(i, u, w, P, ke);
2080
+ }), S, I, ke);
1945
2081
  }
1946
- te(i, De, w, P);
1947
- let Ae = (e) => e.dataset.missing !== void 0 || o.centre && a[Number(e.dataset.row) - 1]?.isTotal, je = (e) => e.dataset.place !== "none" && !e.hasAttribute("data-left-out"), Me = (e, t) => {
2082
+ P(i, Oe, S, I);
2083
+ let X = Oe.length ? i.lastElementChild : null, Ae = t.figure.hasAttribute("data-animate") && !t.figure.hasAttribute("data-steps") && !t.figure.classList.contains("is-shown");
2084
+ X && Ae && (X.setAttribute("data-mask", X.getAttribute("mask") ?? ""), X.removeAttribute("mask"));
2085
+ let je = (e) => e.dataset.missing !== void 0 || o.centre && a[Number(e.dataset.row) - 1]?.isTotal, Me = (e) => e.dataset.place !== "none" && !e.hasAttribute("data-left-out"), Ne = (e, t) => {
1948
2086
  let n = Number(e.dataset.row);
1949
- return t.some((e) => je(e) && Number(e.dataset.row) <= n && n <= Number(e.dataset.rowEnd ?? e.dataset.row));
2087
+ return t.some((e) => Me(e) && Number(e.dataset.row) <= n && n <= Number(e.dataset.rowEnd ?? e.dataset.row));
1950
2088
  };
1951
- return t.figure.toggleAttribute("data-left-out", (o.columns ? [t.categories] : [...l, t.totals]).some((e) => e.some((t) => !Ae(t) && !je(t) && !Me(t, e)))), !0;
1952
- }, rn = (e, t) => {
2089
+ return t.figure.toggleAttribute("data-left-out", (o.columns ? [t.categories] : [...l, t.totals]).some((e) => e.some((t) => !je(t) && !Me(t) && !Ne(t, e)))), !0;
2090
+ }, Qt = (e, t) => {
1953
2091
  let n = [
1954
2092
  ...e.seriesValues.flat(),
1955
2093
  ...e.totals,
1956
2094
  ...e.totalCell ? [e.totalCell] : []
1957
2095
  ];
1958
- for (let r of e.centre ? [...n, e.centre] : n) r.dataset.missing === void 0 ? an(r, r.dataset.decimals ? Number(r.dataset.decimals) : e.decimals, t.locale) : r.textContent = r.dataset.missing;
1959
- }, an = (e, t, n) => {
1960
- let { prefix: r = "", suffix: i = "" } = e.dataset, [o, s] = I(Number.parseFloat(e.dataset.value || "0"), t, n);
1961
- if (e.textContent = r + (r ? o : "") + s + i, o && !r) {
2096
+ for (let r of e.centre ? [...n, e.centre] : n) r.dataset.missing === void 0 ? $t(r, r.dataset.decimals ? Number(r.dataset.decimals) : e.decimals, t.locale) : r.textContent = r.dataset.missing;
2097
+ }, $t = (e, t, n) => {
2098
+ let { prefix: r = "", suffix: i = "" } = e.dataset, [a, o] = B(Number.parseFloat(e.dataset.value || "0"), t, n);
2099
+ if (e.textContent = r + (r ? a : "") + o + i, a && !r) {
1962
2100
  let t = document.createElement("span");
1963
- t.className = a, t.textContent = o, e.prepend(t);
2101
+ t.className = "tablechart-minus", t.textContent = a, e.prepend(t);
1964
2102
  }
1965
- }, on = (e) => {
1966
- Ft(e), e.plot.remove(), e.categories[0]?.parentElement?.remove(), e.figure.querySelector(`:scope > .${d}`)?.remove(), e.controls?.remove();
1967
- }, sn = (e, t) => {
1968
- e.figure.classList.toggle(l, t);
1969
- }, cn = (e) => e === "id" || e === "style" || e.startsWith("data-chart"), ln = /^\s*(?:Table)?:\s+/, un = (e) => e?.tagName === "P" && ln.test(e.textContent ?? ""), dn = (e) => {
2103
+ }, en = (e) => {
2104
+ At(e), e.plot.remove(), e.categories[0]?.parentElement?.remove(), e.figure.querySelector(`:scope > .${l}`)?.remove(), e.controls?.remove();
2105
+ }, tn = (e, t) => {
2106
+ e.figure.classList.toggle(g, t);
2107
+ }, nn = (e) => {
2108
+ for (let t of e.querySelectorAll("[data-mask]")) t.setAttribute("mask", t.dataset.mask ?? ""), t.removeAttribute("data-mask");
2109
+ }, rn = (e) => e === "id" || e === "style" || e.startsWith("data-chart"), an = /^\s*(?:Table)?:\s+/, on = (e) => e?.tagName === "P" && an.test(e.textContent ?? ""), sn = (e) => {
1970
2110
  let t = document.createElement("figcaption");
1971
2111
  for (let { name: n, value: r } of Array.from(e.attributes)) t.setAttribute(n, r);
1972
2112
  let n = e.firstChild;
1973
- n?.nodeType === Node.TEXT_NODE && (n.textContent = (n.textContent ?? "").replace(ln, ""), n.textContent || n.remove());
2113
+ n?.nodeType === Node.TEXT_NODE && (n.textContent = (n.textContent ?? "").replace(an, ""), n.textContent || n.remove());
1974
2114
  let r = Array.from(e.childNodes), i = r.findIndex((e) => e.nodeName === "BR");
1975
2115
  if (t.append(...i === -1 ? r : r.slice(0, i + 1)), i !== -1 && i < r.length - 1) {
1976
2116
  let e = document.createElement("span");
1977
2117
  e.append(...r.slice(i + 1)), t.append(e);
1978
2118
  }
1979
2119
  return e.remove(), t;
1980
- }, fn = /^\s*([a-z][\w-]*)((?:\s+[\w-]+=[^\s:]+)*)\s*(:\s*|$)/, pn = (e) => {
1981
- let t = xn(e);
2120
+ }, cn = /^\s*([a-z][\w-]*)((?:\s+[\w-]+=[^\s:]+)*)\s*(:\s*|$)/, ln = (e) => {
2121
+ let t = _n(e);
1982
2122
  return t?.tagName === "P" ? t : e;
1983
- }, mn = (e) => {
1984
- let t = pn(e).firstChild;
2123
+ }, un = (e) => {
2124
+ let t = ln(e).firstChild;
1985
2125
  if (t?.nodeType !== Node.TEXT_NODE) return null;
1986
- let n = fn.exec(t.textContent ?? "");
1987
- if (!n || !zt.includes(n[1]) || !n[3] && t.nextSibling) return null;
2126
+ let n = cn.exec(t.textContent ?? "");
2127
+ if (!n || !Pt.includes(n[1]) || !n[3] && t.nextSibling) return null;
1988
2128
  let r = n[2].trim().split(/\s+/).filter(Boolean).map((e) => e.split("="));
1989
2129
  return {
1990
2130
  name: n[1],
@@ -1992,11 +2132,11 @@ var ze = (e) => e.map((e) => ({
1992
2132
  text: t,
1993
2133
  length: n[0].length
1994
2134
  };
1995
- }, hn = (e) => {
2135
+ }, dn = (e) => {
1996
2136
  if (e?.tagName !== "UL" && e?.tagName !== "OL") return null;
1997
- let t = Array.from(e.children), n = t.map((e) => e.hasAttribute("data-annotation") ? null : mn(e));
2137
+ let t = Array.from(e.children), n = t.map((e) => e.hasAttribute("data-annotation") ? null : un(e));
1998
2138
  return !t.length || t.some((e, t) => !n[t] && !e.hasAttribute("data-annotation")) ? null : (t.forEach((e, t) => {
1999
- let r = n[t], i = pn(e);
2139
+ let r = n[t], i = ln(e);
2000
2140
  if (i !== e && i.replaceWith(...i.childNodes), r) {
2001
2141
  e.setAttribute("data-annotation", r.name);
2002
2142
  for (let [t, n] of r.options) e.setAttribute(`data-${t}`, n);
@@ -2004,21 +2144,21 @@ var ze = (e) => e.map((e) => ({
2004
2144
  }
2005
2145
  e.children.length && Array.from(e.childNodes).filter((e) => e.nodeType === Node.ELEMENT_NODE || e.textContent?.trim()).forEach((e, t) => {
2006
2146
  let n = document.createElement("span");
2007
- t === 0 && e instanceof HTMLElement && e.matches("em, i") ? (n.className = re, n.append(...e.childNodes), e.replaceWith(n)) : e.nodeType === Node.TEXT_NODE && (n.textContent = (e.textContent ?? "").trim(), e.replaceWith(n));
2147
+ 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));
2008
2148
  });
2009
2149
  }), e.classList.add("chart-annotations"), e);
2010
- }, gn = (e, t) => {
2011
- for (let { name: n, value: r } of Array.from(e.attributes)) (n === "class" || cn(n)) && (t.setAttribute(n, r), e.removeAttribute(n));
2012
- }, _n = (e) => e.map((e) => {
2013
- let t = e.closest("p"), n = un(t) ? t : e;
2150
+ }, fn = (e, t) => {
2151
+ for (let { name: n, value: r } of Array.from(e.attributes)) (n === "class" || rn(n)) && (t.setAttribute(n, r), e.removeAttribute(n));
2152
+ }, pn = (e) => e.map((e) => {
2153
+ let t = e.closest("p"), n = on(t) ? t : e;
2014
2154
  if (n.tagName !== "TABLE" && n.tagName !== "P") return n;
2015
2155
  let r = document.createElement("figure");
2016
- gn(e, r), e.classList.length || e.removeAttribute("class");
2017
- let i = n.tagName === "TABLE" ? n : null, a = n.previousElementSibling, o = n.nextElementSibling, s = i ? un(a) ? a : un(o) ? o : null : n;
2156
+ fn(e, r), e.classList.length || e.removeAttribute("class");
2157
+ let i = n.tagName === "TABLE" ? n : null, a = n.previousElementSibling, o = n.nextElementSibling, s = i ? on(a) ? a : on(o) ? o : null : n;
2018
2158
  i && s === o && (o = o?.nextElementSibling ?? null);
2019
- let c = o?.classList.contains("chart-annotations") ? o : hn(o);
2020
- return n.replaceWith(r), s && r.append(dn(s)), i && r.append(i), c && r.append(c), Z?.log?.(`A ${i ? "table" : "caption"} with chart attributes was wrapped in a figure of its own`), r;
2021
- }), vn = (e, t, n, r = document.createElement("table")) => {
2159
+ let c = o?.classList.contains("chart-annotations") ? o : dn(o);
2160
+ return n.replaceWith(r), s && r.append(sn(s)), i && r.append(i), c && r.append(c), Z?.log?.(`A ${i ? "table" : "caption"} with chart attributes was wrapped in a figure of its own`), r;
2161
+ }), mn = (e, t, n, r = document.createElement("table")) => {
2022
2162
  for (let e of r.querySelectorAll(":scope > tbody, :scope > tfoot, :scope > tr")) e.remove();
2023
2163
  if (!r.tHead && (t.length || n)) {
2024
2164
  let e = r.createTHead().insertRow(), i = document.createElement("th");
@@ -2038,7 +2178,7 @@ var ze = (e) => e.map((e) => ({
2038
2178
  for (let n of t.values ?? [t.value ?? null]) e.insertCell().textContent = n === null ? "" : String(n);
2039
2179
  }
2040
2180
  return r;
2041
- }, yn = (e) => {
2181
+ }, hn = (e) => {
2042
2182
  if (!e || typeof e != "object") return;
2043
2183
  let t = Object.entries(e), n = (e) => e === null || typeof e == "string" || typeof e == "number";
2044
2184
  if (t.length && t.every(([, e]) => n(e) || Array.isArray(e) && e.every(n))) return t.map(([e, t]) => Array.isArray(t) ? {
@@ -2048,30 +2188,30 @@ var ze = (e) => e.map((e) => ({
2048
2188
  label: e,
2049
2189
  value: t
2050
2190
  });
2051
- }, bn = async (e) => {
2052
- await Promise.all(e.filter((e) => e.hasAttribute("data-chart-src")).map(async (e) => {
2053
- let t = e.getAttribute("data-chart-src"), n = Array.from(e.querySelectorAll("table")).find((e) => e.tHead) ?? null;
2054
- for (let t of e.querySelectorAll("table")) t !== n && t.remove();
2191
+ }, gn = async (t) => {
2192
+ await Promise.all(t.filter((e) => e.hasAttribute("data-chart-src")).map(async (t) => {
2193
+ let n = t.getAttribute("data-chart-src"), r = Array.from(t.querySelectorAll("table")).find((e) => e.tHead) ?? null;
2194
+ for (let e of t.querySelectorAll("table")) e !== r && e.remove();
2055
2195
  try {
2056
- let r = await fetch(t);
2057
- if (!r.ok) throw Error(`${r.status} ${r.statusText}`);
2058
- let i = await r.json(), a = Array.isArray(i) ? i : i?.rows ? Array.isArray(i.rows) ? i.rows : yn(i.rows) : yn(i);
2196
+ let e = await fetch(n);
2197
+ if (!e.ok) throw Error(`${e.status} ${e.statusText}`);
2198
+ let i = await e.json(), a = Array.isArray(i) ? i : i?.rows ? Array.isArray(i.rows) ? i.rows : hn(i.rows) : hn(i);
2059
2199
  if (!Array.isArray(a)) throw Error("no rows in it: a list of rows, an object with rows, or names with their values");
2060
- let o = vn(a, Array.isArray(i?.series) ? i.series.map(String) : [], typeof i?.label == "string" ? i.label : "", n ?? void 0);
2061
- if (!n) {
2062
- let t = e.querySelector(":scope > figcaption");
2063
- t ? t.after(o) : e.prepend(o);
2200
+ let o = mn(a, Array.isArray(i?.series) ? i.series.map(String) : [], typeof i?.label == "string" ? i.label : "", r ?? void 0);
2201
+ if (!r) {
2202
+ let e = t.querySelector(":scope > figcaption");
2203
+ e ? e.after(o) : t.prepend(o);
2064
2204
  }
2065
- o.tHead || Z?.log?.(`The table from "${t}" has no header row, so a screen reader cannot name its columns.`), Z?.log?.(`Read ${a.length} rows from "${t}"`);
2066
- } catch (e) {
2067
- let n = window.location.protocol === "file:";
2068
- console.warn(`[${f}] Could not read the chart data in "${t}": ${e.message}.` + (n ? " A page opened as a file cannot fetch files; open it from a server." : ""));
2205
+ o.tHead || Z?.log?.(`The table from "${n}" has no header row, so a screen reader cannot name its columns.`), Z?.log?.(`Read ${a.length} rows from "${n}"`);
2206
+ } catch (t) {
2207
+ let r = window.location.protocol === "file:";
2208
+ 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." : ""));
2069
2209
  }
2070
2210
  }));
2071
- }, xn = (e) => {
2211
+ }, _n = (e) => {
2072
2212
  let t = Array.from(e.childNodes).filter((e) => e.nodeType === Node.ELEMENT_NODE || e.nodeType === Node.TEXT_NODE && e.textContent?.trim());
2073
2213
  return t.length === 1 && t[0] instanceof HTMLElement ? t[0] : null;
2074
- }, Sn = "strong, b, span.total", Cn = (e) => {
2214
+ }, vn = "strong, b, span.total", yn = (e) => {
2075
2215
  for (let t of e) {
2076
2216
  for (let e of t.querySelectorAll("tbody tr")) {
2077
2217
  let t = e.cells[0];
@@ -2079,16 +2219,16 @@ var ze = (e) => e.map((e) => ({
2079
2219
  let n = document.createElement("th");
2080
2220
  for (let { name: e, value: r } of Array.from(t.attributes)) n.setAttribute(e, r);
2081
2221
  n.append(...t.childNodes), t.replaceWith(n);
2082
- for (let t = xn(n); t?.matches(Sn); t = xn(n)) e.dataset.kind = "total", t.replaceWith(...t.childNodes);
2222
+ for (let t = _n(n); t?.matches(vn); t = _n(n)) e.dataset.kind = "total", t.replaceWith(...t.childNodes);
2083
2223
  }
2084
2224
  let e = Array.from(t.querySelector("thead tr:last-child")?.children ?? []);
2085
- for (let t of e.slice(1)) for (let e = xn(t); e?.matches(Sn); e = xn(t)) t.setAttribute("data-kind", "focus"), e.replaceWith(...e.childNodes);
2225
+ for (let t of e.slice(1)) for (let e = _n(t); e?.matches(vn); e = _n(t)) t.setAttribute("data-kind", "focus"), e.replaceWith(...e.childNodes);
2086
2226
  }
2087
- }, wn = "data-chart-made", Tn = () => window.matchMedia("(prefers-reduced-motion: reduce)").matches, En = (e) => new Promise((t) => setTimeout(t, e)), Dn = (e, t) => {
2227
+ }, bn = "data-chart-made", xn = () => window.matchMedia("(prefers-reduced-motion: reduce)").matches, Sn = (e) => new Promise((t) => setTimeout(t, e)), Cn = (e, t) => {
2088
2228
  let n = Number.parseFloat(e.dataset.chartEntrance ?? ""), r = Number.isFinite(n) ? n : t.entrance;
2089
2229
  return Math.min(Math.max(r, 0), 1);
2090
- }, On = async (e, t) => {
2091
- if (Tn()) return;
2230
+ }, wn = async (e, t) => {
2231
+ if (xn()) return;
2092
2232
  await new Promise(requestAnimationFrame);
2093
2233
  let n = e.getAnimations().filter((e) => e instanceof CSSAnimation);
2094
2234
  for (let t = e.parentElement; t && t !== document.body; t = t.parentElement) n.push(...t.getAnimations());
@@ -2099,11 +2239,11 @@ var ze = (e) => e.map((e) => ({
2099
2239
  let a = Number(n.delay ?? 0) + i * t;
2100
2240
  r = Math.max(r, a - Number(e.currentTime ?? 0));
2101
2241
  }
2102
- r > 0 && await En(r);
2103
- }, kn = (e) => {
2242
+ r > 0 && await Sn(r);
2243
+ }, Tn = (e) => {
2104
2244
  for (let t = e; t && t !== document.body; t = t.parentElement) if (getComputedStyle(t).opacity === "0") return t;
2105
2245
  return null;
2106
- }, An = (e) => new Promise((t) => {
2246
+ }, En = (e) => new Promise((t) => {
2107
2247
  let n = ["animationstart", "transitionrun"], r = () => {
2108
2248
  for (let e of n) document.removeEventListener(e, i, !0);
2109
2249
  a.disconnect(), t();
@@ -2117,41 +2257,41 @@ var ze = (e) => e.map((e) => ({
2117
2257
  attributes: !0,
2118
2258
  attributeFilter: ["class", "style"]
2119
2259
  });
2120
- }), jn = /* @__PURE__ */ new Set(), Mn = null, Nn = (e) => {
2121
- jn.add(e), !Mn && (Mn = new MutationObserver(() => {
2122
- for (let e of jn) e.relabel();
2260
+ }), Dn = /* @__PURE__ */ new Set(), On = null, kn = (e) => {
2261
+ Dn.add(e), !On && (On = new MutationObserver(() => {
2262
+ for (let e of Dn) e.relabel();
2123
2263
  requestAnimationFrame(() => requestAnimationFrame(() => {
2124
- for (let e of jn) e.refresh();
2264
+ for (let e of Dn) e.refresh();
2125
2265
  }));
2126
- }), Mn.observe(document.documentElement, {
2266
+ }), On.observe(document.documentElement, {
2127
2267
  attributes: !0,
2128
2268
  attributeFilter: ["lang"]
2129
2269
  }));
2130
- }, Pn = (e) => {
2131
- jn.delete(e), !jn.size && Mn && (Mn.disconnect(), Mn = null);
2132
- }, Fn = ["column", "bar"], In = (e) => {
2270
+ }, An = (e) => {
2271
+ Dn.delete(e), !Dn.size && On && (On.disconnect(), On = null);
2272
+ }, jn = ["column", "bar"], Mn = (e) => {
2133
2273
  let t = e.getAttribute("data-chart") || "column";
2134
- if (!Fn.includes(t)) return null;
2274
+ if (!jn.includes(t)) return null;
2135
2275
  let n = getComputedStyle(e).getPropertyValue("--tablechart-type").trim();
2136
- return Fn.includes(n) ? n : t;
2137
- }, Ln = (e, t) => {
2138
- let n = e, r = In(n.figure), i = null, a = !1, o = !1, s = async () => {
2139
- if (!Ut(n.figure, t)) return sn(n, !0);
2276
+ return jn.includes(n) ? n : t;
2277
+ }, Nn = (e, t) => {
2278
+ let n = e, r = Mn(n.figure), i = null, a = !1, o = !1, s = async () => {
2279
+ if (!Rt(n.figure, t)) return tn(n, !0);
2140
2280
  let e = n.figure.classList.contains("is-shown");
2141
2281
  if (a && i !== null && !e && !o) {
2142
2282
  o = !0;
2143
- let e = Tn() ? null : kn(n.figure);
2144
- e && await An(e), await On(n.figure, Dn(n.figure, t)), o = !1, (a || !t.replay) && sn(n, !0);
2145
- } else !a && t.replay && e && sn(n, !1);
2283
+ let e = xn() ? null : Tn(n.figure);
2284
+ e && await En(e), await wn(n.figure, Cn(n.figure, t)), o = !1, (a || !t.replay) && tn(n, !0);
2285
+ } else !a && t.replay && e && tn(n, !1);
2146
2286
  }, c = () => {
2147
- let e = In(n.figure);
2287
+ let e = Mn(n.figure);
2148
2288
  if (!e || e === r) return;
2149
- let a = Z.timed("Building", n.figure, () => Yt(n.figure, t, e));
2150
- a && (on(n), lt(a, n.step, !0), n = a, r = e, i = null);
2289
+ let a = Z.timed("Building", n.figure, () => Wt(n.figure, t, e));
2290
+ a && (en(n), it(a, n.step, !0), n = a, r = e, i = null);
2151
2291
  }, l = () => {
2152
2292
  c();
2153
2293
  let e = n.plot.clientWidth;
2154
- e && e !== i && Z.timed("Layout", n.figure, () => nn(n, t)) && (i = e, s());
2294
+ e && e !== i && Z.timed("Layout", n.figure, () => Zt(n, t)) && (i = e, s());
2155
2295
  }, u = !1, d = new ResizeObserver(() => {
2156
2296
  u || (u = !0, requestAnimationFrame(() => {
2157
2297
  u = !1, l();
@@ -2159,20 +2299,20 @@ var ze = (e) => e.map((e) => ({
2159
2299
  }), f = new IntersectionObserver((e) => {
2160
2300
  for (let t of e) a = t.isIntersecting, s();
2161
2301
  }, { threshold: t.threshold }), p = () => {
2162
- n.figure.classList.add(b), sn(n, !0), n.figure.offsetWidth;
2163
- }, m = () => n.figure.classList.remove(b), h = () => {
2302
+ n.figure.classList.add(_), tn(n, !0), nn(n.svg), n.figure.offsetWidth;
2303
+ }, m = () => n.figure.classList.remove(_), h = () => {
2164
2304
  i = null, l();
2165
2305
  }, g = {
2166
- relabel: () => rn(n, t),
2306
+ relabel: () => Qt(n, t),
2167
2307
  refresh: h
2168
2308
  };
2169
- c(), l(), d.observe(n.figure), f.observe(n.figure), window.addEventListener("beforeprint", p), window.addEventListener("afterprint", m), Nn(g);
2170
- let _ = {
2309
+ c(), l(), d.observe(n.figure), f.observe(n.figure), window.addEventListener("beforeprint", p), window.addEventListener("afterprint", m), kn(g);
2310
+ let v = {
2171
2311
  figure: n.figure,
2172
2312
  refresh: h,
2173
- next: () => lt(n, n.step + 1),
2174
- previous: () => lt(n, n.step - 1),
2175
- stepTo: (e) => lt(n, e),
2313
+ next: () => it(n, n.step + 1),
2314
+ previous: () => it(n, n.step - 1),
2315
+ stepTo: (e) => it(n, e),
2176
2316
  get step() {
2177
2317
  return n.step;
2178
2318
  },
@@ -2180,35 +2320,35 @@ var ze = (e) => e.map((e) => ({
2180
2320
  return n.plan?.count ?? 0;
2181
2321
  },
2182
2322
  destroy() {
2183
- d.disconnect(), f.disconnect(), window.removeEventListener("beforeprint", p), window.removeEventListener("afterprint", m), Pn(g), Ft(n), n.figure.tablechart === _ && delete n.figure.tablechart;
2323
+ d.disconnect(), f.disconnect(), window.removeEventListener("beforeprint", p), window.removeEventListener("afterprint", m), An(g), At(n), n.figure.tablechart === v && delete n.figure.tablechart;
2184
2324
  }
2185
2325
  };
2186
- return n.figure.tablechart = _, _;
2187
- }, Rn = !1, zn = (e) => {
2188
- let t = e.find((e) => e.tagName !== "FIGURE");
2189
- !Rn && t && (Rn = !0, console.warn(`[${f}] A chart is a <${t.tagName.toLowerCase()}>. Use a <figure> with a <figcaption>, so the chart has a title, also for screen readers.`, t));
2190
- }, Bn = async (e, t) => {
2191
- let n = _n(e.filter((e) => !e.hasAttribute(wn)));
2192
- return zn(n), await bn(n), Cn(n), Ze(n, t.langattribute), n;
2193
- }, Vn = (e, t) => {
2194
- let n = Z.timed("Building", e, () => Yt(e, t));
2195
- return n ? (e.setAttribute(wn, ""), Ln(n, t)) : null;
2196
- }, Hn = async (e, t = {}) => {
2326
+ return n.figure.tablechart = v, v;
2327
+ }, Pn = !1, Fn = (t) => {
2328
+ let n = t.find((e) => e.tagName !== "FIGURE");
2329
+ !Pn && n && (Pn = !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));
2330
+ }, In = async (e, t) => {
2331
+ let n = pn(e.filter((e) => !e.hasAttribute(bn)));
2332
+ return Fn(n), await gn(n), yn(n), Ke(n, t.langattribute), n;
2333
+ }, Ln = (e, t) => {
2334
+ let n = Z.timed("Building", e, () => Wt(e, t));
2335
+ return n ? (e.setAttribute(bn, ""), Nn(n, t)) : null;
2336
+ }, Rn = async (e, t = {}) => {
2197
2337
  if (e.tablechart) return e.tablechart;
2198
2338
  let n = {
2199
- ...h,
2339
+ ...C,
2200
2340
  ...t
2201
2341
  };
2202
2342
  n.debug && (Z.enabled = !0);
2203
- let [r] = await Bn([e], n);
2204
- return r ? Vn(r, n) : null;
2205
- }, Un = async (e = {}, t = document) => {
2343
+ let [r] = await In([e], n);
2344
+ return r ? Ln(r, n) : null;
2345
+ }, zn = async (e = {}, t = document) => {
2206
2346
  let n = {
2207
- ...h,
2347
+ ...C,
2208
2348
  ...e
2209
2349
  };
2210
2350
  n.debug && (Z.enabled = !0);
2211
- let r = (await Bn(Array.from(t.querySelectorAll(n.selector)), n)).map((e) => Vn(e, n)).filter((e) => e !== null);
2351
+ let r = (await In(Array.from(t.querySelectorAll(n.selector)), n)).map((e) => Ln(e, n)).filter((e) => e !== null);
2212
2352
  return Z.log(`Made ${r.length} chart(s).`), {
2213
2353
  charts: r,
2214
2354
  refresh: () => {
@@ -2220,4 +2360,4 @@ var ze = (e) => e.map((e) => ({
2220
2360
  };
2221
2361
  };
2222
2362
  //#endregion
2223
- export { _n as a, Lt as c, rn as d, sn as f, Ze as h, Bn as i, Yt as l, lt as m, Dn as n, bn as o, on as p, Un as r, Cn as s, Hn as t, nn as u };
2363
+ export { g as A, l as C, u as D, t as E, C as M, _ as O, O as S, m as T, q as _, pn as a, j as b, Mt as c, Qt as d, tn as f, ke as g, Ke as h, In as i, S as j, v as k, Wt as l, it as m, Cn as n, gn as o, en as p, zn as r, yn as s, Rn as t, Zt as u, G as v, c as w, M as x, L as y };