@martinomagnifico/tablechart 1.2.1 → 1.2.3

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