@martinomagnifico/tablechart 1.1.1 → 1.1.2

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