@martinomagnifico/tablechart 1.2.4 → 1.2.5

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