@martinomagnifico/tablechart 1.2.4 → 1.2.6

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