@martinomagnifico/tablechart 1.2.3 → 1.2.4

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.
@@ -18,6 +18,7 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
18
18
  tooltipparent: null,
19
19
  table: "never",
20
20
  tablelimit: 15,
21
+ lines: null,
21
22
  summary: "auto",
22
23
  totallabel: "Total",
23
24
  controls: !0,
@@ -46,7 +47,7 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
46
47
  }, z = 0, B = 0, V = (e) => {
47
48
  let t = e.querySelector(":scope > defs");
48
49
  return t || (t = F("defs"), e.prepend(t)), t;
49
- }, H = (e) => {
50
+ }, ee = (e) => {
50
51
  if (e.tagName === "circle") {
51
52
  let [t, n, r] = [
52
53
  "cx",
@@ -65,18 +66,18 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
65
66
  "ry"
66
67
  ].map((t) => Number(e.getAttribute(t)) || 0), s = Math.min(a, r / 2), c = Math.min(o, i / 2), l = (e, t) => s && c ? `a${P(s)},${P(c)} 0 0 1 ${P(e)},${P(t)}` : "";
67
68
  return `M${P(t + s)},${P(n)}h${P(r - 2 * s)}${l(s, c)}v${P(i - 2 * c)}${l(-s, c)}h${P(2 * s - r)}${l(-s, -c)}v${P(2 * c - i)}${l(s, -c)}z`;
68
- }, U = (e, t, n, r, i) => {
69
+ }, H = (e, t, n, r, i) => {
69
70
  if (!t.length || !i.length) return;
70
71
  let a = `tablechart-clip-${++B}`, o = F("clipPath", {
71
72
  id: a,
72
73
  clipPathUnits: "userSpaceOnUse"
73
74
  }), s = `M${-n},${-r}h${n * 3}v${r * 3}h${-n * 3}z`;
74
75
  o.appendChild(F("path", {
75
- d: s + t.map(H).join(""),
76
+ d: s + t.map(ee).join(""),
76
77
  "clip-rule": "evenodd"
77
78
  })), V(e).appendChild(o);
78
79
  for (let e of i) e.setAttribute("clip-path", `url(#${a})`);
79
- }, ee = (e, t, n, r, i, a) => {
80
+ }, U = (e, t, n, r, i, a) => {
80
81
  if (!t.length) return;
81
82
  let o = `tablechart-cut-${++z}`, s = F("mask", {
82
83
  id: o,
@@ -97,7 +98,7 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
97
98
  }
98
99
  let l = null;
99
100
  for (let t of Array.from(e.childNodes)) t !== c && (a && t instanceof Element && t.matches(a) ? (l = null, e.appendChild(t)) : (l ?? (l = e.appendChild(F("g", { mask: `url(#${o})` }))), l.appendChild(t)));
100
- }, te = 0, W = (e) => Array.from(e.querySelectorAll(`.${r}`)).map((e) => {
101
+ }, te = 0, ne = (e) => Array.from(e.querySelectorAll(`.${r}`)).map((e) => {
101
102
  let t = e.tagName === "rect" ? [e] : Array.from(e.querySelectorAll("rect")), n = (e, t) => Number(e.getAttribute(t)), r = Math.min(...t.map((e) => n(e, "x"))), i = Math.min(...t.map((e) => n(e, "y"))), a = Math.max(...t.map((e) => n(e, "x") + n(e, "width"))), o = Math.max(...t.map((e) => n(e, "y") + n(e, "height"))), s = ["--start", "--span"].map((t) => e.style.getPropertyValue(t) && `${t}:${e.style.getPropertyValue(t)}`).filter(Boolean).join("; ");
102
103
  return {
103
104
  row: Number(e.dataset.row),
@@ -108,7 +109,7 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
108
109
  sideways: e.dataset.grow === "right",
109
110
  part: s
110
111
  };
111
- }), ne = {
112
+ }), re = {
112
113
  create: () => null,
113
114
  draw(e, t, n) {
114
115
  let { rows: r, y: i, svg: a, breakAt: o } = n;
@@ -147,7 +148,7 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
147
148
  fill: "white"
148
149
  }));
149
150
  let f = [], p = i(o);
150
- for (let e of W(a)) {
151
+ for (let e of ne(a)) {
151
152
  let t = e.sideways ? n.breakX : p;
152
153
  if (t === void 0 || !(e.sideways ? e.x < t && e.x + e.width > t : e.y < p && e.y + e.height > p)) continue;
153
154
  let [i, o] = e.sideways ? [c(e, t), c(e, t + n.breakGap)] : [c(e, p - n.breakGap), c(e, p)];
@@ -170,17 +171,17 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
170
171
  let g = F("defs");
171
172
  g.appendChild(d), a.prepend(g, h);
172
173
  }
173
- }, G = (e) => {
174
+ }, W = (e) => {
174
175
  let t = -Infinity;
175
176
  for (let n of e) t = Math.max(t, n);
176
177
  return t;
177
- }, re = (e) => (e.split(/[.,]/)[1] || "").length, K = (e, t) => new Intl.NumberFormat(t || document.documentElement.lang || void 0, {
178
+ }, ie = (e) => (e.split(/[.,]/)[1] || "").length, G = (e, t) => new Intl.NumberFormat(t || document.documentElement.lang || void 0, {
178
179
  minimumFractionDigits: e,
179
180
  maximumFractionDigits: e
180
- }), ie = (e, t, n) => {
181
- let r = K(t, n).formatToParts(e), i = r[0]?.type === "minusSign" ? r[0].value : "";
181
+ }), ae = (e, t, n) => {
182
+ let r = G(t, n).formatToParts(e), i = r[0]?.type === "minusSign" ? r[0].value : "";
182
183
  return [i, r.slice(+!!i).map((e) => e.value).join("")];
183
- }, q = (e) => Number.parseFloat((e.match(/-?[\d.,]+/) || ["NaN"])[0].replace(",", ".")), ae = (e, t) => {
184
+ }, K = (e) => Number.parseFloat((e.match(/-?[\d.,]+/) || ["NaN"])[0].replace(",", ".")), oe = (e, t) => {
184
185
  let n = document.createElement("span");
185
186
  if (n.className = "tablechart-badge", n.inert = !0, e.childElementCount > 0) for (let t of Array.from(e.children)) n.appendChild(t.cloneNode(!0));
186
187
  else {
@@ -189,24 +190,24 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
189
190
  t && n.setAttribute("data-i18n", t);
190
191
  }
191
192
  return t.appendChild(n), n;
192
- }, oe = (t, n, r, i, a = "%") => {
193
- let o = t?.textContent || "", s = q(o), c = a ? .5 : .5 * 10 ** -re(o.match(/-?[\d.,]+/)?.[0] ?? ""), l = Number.isNaN(s) ? !0 : Math.abs(n - s) <= c + 1e-9, u = {
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 = {
194
195
  label: r,
195
196
  computed: n,
196
197
  stated: s,
197
198
  agrees: l
198
199
  };
199
200
  i.checks.push(u), l || console.warn(`[${e}] An annotation reads ${s}${a}, but ${r} is ${Number(n.toFixed(2))}${a}. The chart shows your number.`);
200
- }, se = (e, t) => (t - e) / Math.abs(e) * 100, ce = (e, t) => {
201
+ }, ce = (e, t) => (t - e) / Math.abs(e) * 100, le = (e, t) => {
201
202
  let n = (t, n) => {
202
203
  let r = Number.parseInt(e.getAttribute(t) ?? "", 10);
203
204
  return Number.isFinite(r) ? r - 1 : n;
204
205
  };
205
206
  return [n("data-from", 0), n("data-to", t - 1)];
206
- }, le = {
207
- create: ae,
207
+ }, ue = {
208
+ create: oe,
208
209
  draw(t, n, r) {
209
- let { rows: i, cx: o, y: s, unit: l, labelHeight: u, badgeHeight: d, height: f, svg: p, after: m } = r, [h, g] = ce(t, i.length), _ = i[h], v = i[g];
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];
210
211
  if (!_ || !v) {
211
212
  console.warn(`[${e}] A bracket points at a row that is not there (row ${h + 1} to ${g + 1}, of ${i.length}).`);
212
213
  return;
@@ -224,9 +225,9 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
224
225
  "data-note": r.note,
225
226
  points: `${S},${D} ${S - y * .45},${D - y} ${S + y * .45},${D - y}`,
226
227
  style: M("--after", m)
227
- })), n && (R(n, (x + S) / 2, C, O, f), n.style.setProperty("--after", String(m))), oe(n, se(_.value, v.value), `${_.value} to ${v.value}`, r);
228
+ })), 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);
228
229
  }
229
- }, ue = (e, t) => e[0] < t[0] + t[2] && t[0] < e[0] + e[2] && e[1] < t[1] + t[3] && t[1] < e[1] + e[3], de = (e, t) => e[0] >= t[0] && e[1] >= t[1] && e[0] + e[2] <= t[0] + t[2] && e[1] + e[3] <= t[1] + t[3], fe = (e, t, n) => {
230
+ }, 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) => {
230
231
  if (e.length > 400) return e.map(() => null);
231
232
  let r = 1;
232
233
  for (let t of e) for (let [, , e, n] of t) r = Math.max(r, e, n);
@@ -236,21 +237,21 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
236
237
  return a;
237
238
  }, o = (e) => {
238
239
  for (let t of a(e)) i.get(t)?.push(e) ?? i.set(t, [e]);
239
- }, s = (e) => de(e, n) && a(e).every((t) => !i.get(t)?.some((t) => ue(e, t)));
240
+ }, s = (e) => fe(e, n) && a(e).every((t) => !i.get(t)?.some((t) => de(e, t)));
240
241
  return t.forEach(o), e.map((e) => {
241
242
  let t = e.findIndex(s);
242
243
  return t < 0 ? null : (o(e[t]), t);
243
244
  });
244
- }, pe = /* @__PURE__ */ new WeakMap(), me = (e) => {
245
+ }, me = /* @__PURE__ */ new WeakMap(), he = (e) => {
245
246
  let t = [...e].filter((e) => !!e), n = t.map((e) => ({
246
247
  width: e.offsetWidth,
247
248
  height: e.offsetHeight
248
249
  }));
249
- t.forEach((e, t) => pe.set(e, n[t]));
250
- }, J = (e) => pe.get(e) ?? {
250
+ t.forEach((e, t) => me.set(e, n[t]));
251
+ }, q = (e) => me.get(e) ?? {
251
252
  width: e.offsetWidth,
252
253
  height: e.offsetHeight
253
- }, he = 6, ge = (e, t, n) => e.some((e) => J(e).width * n > t - he * n), _e = (e, t, n) => t >= J(e).height * n * 1.6, ve = (e, t, n) => t >= J(e).width * n * 1.5, ye = (e, t, n, r, i = .7) => {
254
+ }, 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) => {
254
255
  e.style.setProperty(r, "1");
255
256
  let a = 1;
256
257
  for (let e of t) {
@@ -259,42 +260,55 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
259
260
  }
260
261
  let o = a >= i ? a : 0;
261
262
  return e.style.setProperty(r, String(o || i)), o;
262
- }, be = (e, t) => (e.sort((e, t) => e.y - t.y), e.forEach((n, r) => {
263
- let i = e[r - 1];
264
- i && n.y < i.y + t && (n.y = i.y + t);
265
- }), e), xe = {
263
+ }, xe = (e, t) => {
264
+ e.sort((e, t) => e.y - t.y);
265
+ let n = [], r = (e) => e.sum / e.items.length - (e.items.length - 1) * t / 2;
266
+ for (let i of e) {
267
+ let e = {
268
+ items: [i],
269
+ sum: i.y
270
+ };
271
+ for (let i = n.at(-1); i && r(i) + i.items.length * t > r(e); i = n.at(-1)) n.pop(), e = {
272
+ items: [...i.items, ...e.items],
273
+ sum: i.sum + e.sum
274
+ };
275
+ n.push(e);
276
+ }
277
+ for (let e of n) e.items.forEach((n, i) => n.y = r(e) + i * t);
278
+ return e;
279
+ }, Se = {
266
280
  outside: [.5, 1],
267
281
  below: [.5, 0],
268
282
  after: [0, .5],
269
283
  before: [1, .5]
270
- }, Y = (e, t, n, r, i = [.5, .5]) => {
271
- let [a, o] = xe[e.dataset.place ?? ""] ?? i, { width: s, height: c } = J(e);
284
+ }, J = (e, t, n, r, i = [.5, .5]) => {
285
+ let [a, o] = Se[e.dataset.place ?? ""] ?? i, { width: s, height: c } = q(e);
272
286
  return [
273
287
  Number.parseFloat(e.style.left) / 100 * n - s * t * a,
274
288
  Number.parseFloat(e.style.top) / 100 * r - c * t * o,
275
289
  s * t,
276
290
  c * t
277
291
  ];
278
- }, Se = (e, t, n) => {
292
+ }, Ce = (e, t, n) => {
279
293
  for (let r of e) {
280
294
  if (r.dataset.place === "none" || !r.style.left) continue;
281
- let [e] = xe[r.dataset.place ?? ""] ?? [.5, .5], i = J(r).width * t, a = Number.parseFloat(r.style.left) / 100 * n, o = Math.min(Math.max(a, i * e), n - i * (1 - e));
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));
282
296
  o !== a && (r.style.left = `${o / n * 100}%`);
283
297
  }
284
- }, Ce = (e, t, n, r) => {
285
- let i = e.filter((e) => e.dataset.place !== "none" && !e.hasAttribute("data-left-out")), a = we(i, t, n, r);
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);
286
300
  i.forEach((e, t) => {
287
301
  t % a && e.setAttribute("data-left-out", "");
288
302
  });
289
- }, we = (e, t, n, r) => {
303
+ }, Te = (e, t, n, r) => {
290
304
  if (e.length < 2) return 1;
291
- let i = e.map((e) => Y(e, t, n, r)), a = 2 * t, o = (e, t) => e[0] + e[2] + a <= t[0] || t[0] + t[2] + a <= e[0] || e[1] + e[3] <= t[1] || t[1] + t[3] <= e[1], s = 1;
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;
292
306
  for (; s < e.length && i.some((e, t) => t >= s && t % s === 0 && !o(i[t - s], e));) s++;
293
307
  return s;
294
- }, Te = {
308
+ }, Ee = {
295
309
  create(e, t) {
296
310
  if (!e.textContent?.trim()) return null;
297
- let n = ae(e, t);
311
+ let n = oe(e, t);
298
312
  return n.dataset.kind = "note", n;
299
313
  },
300
314
  draw(t, n, r) {
@@ -319,9 +333,9 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
319
333
  y2: _,
320
334
  style: M("--after", d)
321
335
  }), u.querySelector(`:scope > .${m}`)), !n) return;
322
- let v = J(n).width * l, y = J(n).height * l, b = 4 * l, x = f.flat().flatMap((e) => !e.style.left || e.dataset.place === "none" || e.hasAttribute("data-left-out") ? [] : [{
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") ? [] : [{
323
337
  label: e,
324
- box: Y(e, l, O, c)
338
+ box: J(e, l, O, c)
325
339
  }]), S = [0, y + b / 2].flatMap((e) => [
326
340
  [
327
341
  g - v / 2,
@@ -341,15 +355,15 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
341
355
  v,
342
356
  y
343
357
  ]
344
- ]), [C] = fe([S], [...r.taken, ...x.map((e) => e.box)], [
358
+ ]), [C] = pe([S], [...r.taken, ...x.map((e) => e.box)], [
345
359
  0,
346
360
  0,
347
361
  O,
348
362
  c
349
363
  ]), w = S[C ?? 0];
350
- if (r.taken.push(w), R(n, w[0] + v / 2, w[1] + y / 2, O, c), n.style.setProperty("--after", String(d)), C === null) for (let e of x) ue(e.box, w) && e.label.setAttribute("data-left-out", "");
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", "");
351
365
  }
352
- }, Ee = (e, t, n) => {
366
+ }, De = (e, t, n) => {
353
367
  let r = n.reduce((e, t) => e + t, 0);
354
368
  if (e === "mean") return r ? t.reduce((e, t, r) => e + t * n[r], 0) / r : null;
355
369
  if (e === "median") {
@@ -362,25 +376,25 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
362
376
  }
363
377
  let i = Number.parseFloat(e);
364
378
  return Number.isFinite(i) ? i : null;
365
- }, De = {
379
+ }, Oe = {
366
380
  create(e, t) {
367
381
  if (!e.textContent?.trim()) return null;
368
- let n = ae(e, t);
382
+ let n = oe(e, t);
369
383
  return n.dataset.kind = "reference", n;
370
384
  },
371
385
  draw(t, n, r) {
372
386
  let { rows: i, cx: a, y: s, x: c, height: l, unit: u, svg: d, after: f } = r, p = i.filter((e) => !e.isTotal && !e.missing), h = t.hasAttribute("data-name"), g = (t.getAttribute(h ? "data-name" : "data-value") ?? "").trim(), _, v, y;
373
387
  if (h) {
374
- let t = p.map((e) => q(e.label));
388
+ let t = p.map((e) => K(e.label));
375
389
  if (r.categories[0]?.parentElement?.dataset.place === "beside" || t.some(Number.isNaN)) {
376
390
  console.warn(`[${e}] A reference line among the names needs names that are numbers, under columns or points.`);
377
391
  return;
378
392
  }
379
- let n = Ee(g, t, p.map((e) => e.value)), o = n === null ? -1 : t.findIndex((e, r) => e <= n && n <= (t[r + 1] ?? e)), [s, c] = [p[o], p[o + 1] ?? p[o]].map((e) => a(i.indexOf(e))), l = n === null || o < 0 || t[o + 1] === void 0 || t[o + 1] === t[o] ? 0 : (n - t[o]) / (t[o + 1] - t[o]);
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]);
380
394
  y = n, v = o < 0 ? null : s + l * (c - s), _ = !1;
381
395
  } else {
382
396
  let e = !!r.frame && t.getAttribute("data-axis") === "y", n = r.frame ? r.series.flatMap((e, t) => e.group ? [] : [t])[+!!e] ?? 0 : 0;
383
- y = Ee(g, p.map((e) => e.cells[n]?.value ?? e.value), p.map(() => 1)), _ = e || !c, v = y === null ? null : c && !e ? c(y) : s(y);
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);
384
398
  }
385
399
  if (v === null || y === null) {
386
400
  console.warn(`[${e}] A reference line needs a number, "mean" or "median", not "${g}".`);
@@ -414,7 +428,7 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
414
428
  },
415
429
  style: M("--after", f)
416
430
  }), d.querySelector(`:scope > .${m}`)), n) {
417
- let e = J(n).width * u, t = J(n).height * u, i = 4 * u, a = _ ? [
431
+ let e = q(n).width * u, t = q(n).height * u, i = 4 * u, a = _ ? [
418
432
  [
419
433
  S - e,
420
434
  v - t / 2,
@@ -456,17 +470,17 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
456
470
  e,
457
471
  t
458
472
  ]
459
- ]), [o] = fe([a], r.taken, [
473
+ ]), [o] = pe([a], r.taken, [
460
474
  0,
461
475
  0,
462
476
  O,
463
477
  l
464
478
  ]), s = a[o ?? 0];
465
- r.taken.push(s), R(n, s[0] + e / 2, s[1] + t / 2, O, l), n.style.setProperty("--after", String(f)), (g === "mean" || g === "median") && oe(n, y, `the ${g}`, r, "");
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, "");
466
480
  }
467
481
  }
468
- }, Oe = (e, t, n) => ((t / e) ** (1 / n) - 1) * 100, ke = {
469
- create: ae,
482
+ }, ke = (e, t, n) => ((t / e) ** (1 / n) - 1) * 100, Ae = {
483
+ create: oe,
470
484
  draw(e, t, n) {
471
485
  let { rows: r, cx: i, y: o, unit: s, labelHeight: l, height: u, svg: d, values: f, after: p } = n, m = r[0], h = r[r.length - 1];
472
486
  if (!m || !h) return;
@@ -479,9 +493,9 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
479
493
  y -= D * _, b -= k * _, x += D * _, S += k * _;
480
494
  let A = Number.parseFloat(e.getAttribute("data-at") || "0.5");
481
495
  if (t) {
482
- let e = y + (x - y) * A, n = b + (S - b) * A, a = J(t).width * s / 2, c = n + J(t).height * s / 2 + 8 * s, u = 0;
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;
483
497
  r.forEach((t, n) => {
484
- let r = (f[n] ? J(f[n]).width : 0) * s / 2;
498
+ let r = (f[n] ? q(f[n]).width : 0) * s / 2;
485
499
  if (Math.abs(i(n) - e) >= a + r) return;
486
500
  let d = o(t.value) - 7 * s - l;
487
501
  u = Math.max(u, c - d);
@@ -509,27 +523,27 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
509
523
  style: M("--after", p)
510
524
  })), t && (R(t, y + (x - y) * A, b + (S - b) * A, O, u), t.style.setProperty("--after", String(p)));
511
525
  let B = Number.parseFloat(e.getAttribute("data-years") || "");
512
- !Number.isNaN(B) && B > 0 && oe(t, Oe(m.value, h.value, B), `${m.value} to ${h.value} over ${B} years`, n);
526
+ !Number.isNaN(B) && B > 0 && se(t, ke(m.value, h.value, B), `${m.value} to ${h.value} over ${B} years`, n);
513
527
  }
514
- }, Ae = (e, t, n, r, i) => {
528
+ }, je = (e, t, n, r, i) => {
515
529
  if (!r) return e / t * n;
516
530
  let { lo: a, hi: o, gap: s, share: c } = r, l = n * c, u = (n - l - i) / (a + (t - o)), d = l / (o - a);
517
531
  return e <= a ? e * u : e <= s ? a * u + (e - a) * d : e <= o ? a * u + (e - a) * d + i : a * u + l + i + (e - o) * u;
518
- }, je = (e, t, n) => {
532
+ }, Me = (e, t, n) => {
519
533
  let r = .15, i = Math.min(e * .7 / (t + (t - 1) * r), n), a = t * i + (t - 1) * i * r;
520
534
  return {
521
535
  size: i,
522
536
  gap: i * r,
523
537
  offset: (e) => -a / 2 + e * i * 1.15
524
538
  };
525
- }, Me = (e, t, n) => {
539
+ }, Ne = (e, t, n) => {
526
540
  let r = e.series[n], i = e.series.some((e) => e.focus) && !r.focus;
527
541
  return {
528
542
  "data-series": n + 1,
529
543
  ...i && { "data-muted": "" },
530
544
  style: `--n:${n}; --m:${+!!i}; --palette:var(--tablechart-color-${n + 1}); ${M("--i", t.slot)}`
531
545
  };
532
- }, Ne = (e, t, n = !1) => {
546
+ }, Pe = (e, t, n = !1) => {
533
547
  let r = 0, i = 0;
534
548
  return Array.from({ length: t }, (t, a) => {
535
549
  let o = e.cells[a] ?? e.cells[0], s = o.missing ? 0 : o.value;
@@ -556,19 +570,19 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
556
570
  cell: o
557
571
  };
558
572
  });
559
- }, Pe = (e, t, n = !1) => {
560
- let r = Ne(e, t, n);
573
+ }, Fe = (e, t, n = !1) => {
574
+ let r = Pe(e, t, n);
561
575
  return {
562
576
  top: Math.max(0, ...r.map((e) => e.to)),
563
577
  bottom: Math.min(0, ...r.map((e) => e.to))
564
578
  };
565
- }, Fe = (e, t) => {
566
- let { top: n, bottom: r } = Pe(e, t);
579
+ }, Ie = (e, t) => {
580
+ let { top: n, bottom: r } = Fe(e, t);
567
581
  return n + r;
568
- }, Ie = (e, t, n) => {
582
+ }, Le = (e, t, n) => {
569
583
  let r = t.series.some((e) => e.focus);
570
584
  e.style.setProperty("--n", String(n)), e.style.setProperty("--m", r && !t.series[n].focus ? "1" : "0"), e.style.setProperty("--palette", `var(--tablechart-color-${n + 1})`);
571
- }, Le = (e, t) => e.some((n, r) => r !== t && !n.cell.missing && n.to !== n.from && n.from === e[t].to), Re = (e, t, n, i = {}, a = "") => {
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 = "") => {
572
586
  let o = {
573
587
  class: I(r, t),
574
588
  "data-kind": "bar",
@@ -586,10 +600,10 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
586
600
  ...a,
587
601
  class: I("tablechart-piece", t),
588
602
  "data-row": n + 1,
589
- ...Me(e, t, r)
603
+ ...Ne(e, t, r)
590
604
  }));
591
605
  };
592
- }, ze = {
606
+ }, Be = {
593
607
  segments: (e) => e.map((e) => ({
594
608
  ...e,
595
609
  from: 0,
@@ -610,39 +624,42 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
610
624
  categories: "beside",
611
625
  headroom: () => 0,
612
626
  draw(e) {
613
- let { segments: t, height: n, unit: a, svg: o, values: s, categories: c, config: l, barMax: u } = e, d = e.series.length > 1, f = Math.max(G(c.map((e) => J(e).width * a)), 0), p = Math.min(f + 10 * a, O * .42);
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);
614
628
  c[0]?.parentElement?.style.setProperty("--_beside", `${((p - 8 * a) / O * 100).toFixed(2)}%`);
615
- let m = O - 4 * a, h = e.stacked ? Math.max(G(e.rows.map((t) => Pe(t, e.series.length).top)), 0) || 1 : Math.max(G(e.rows.flatMap((t) => t.cells.slice(0, e.series.length).map((e) => Math.abs(e.value)))), 0) || 1, g = e.stacked ? Math.max(G(e.rows.map((t) => -Pe(t, e.series.length).bottom)), 0) : Math.max(G(e.rows.flatMap((t) => t.cells.slice(0, e.series.length).map((e) => -e.value))), 0), _ = Math.max(h, e.domain?.[1] ?? 0), v = Math.max(g, -(e.domain?.[0] ?? 0)), y = Math.max(_, e.squeeze?.hi ?? 0) + v, b = (t, n) => Ae(Math.abs(t), y, n, e.squeeze, e.breakGap), x = n / t.length, S = (e) => (e + .5) * x, C = Math.min(x * l.barfill, u), w = je(x, e.series.length, u), T = s[0] ?? e.totals[0], E = T ? J(T).height * a * .56 : 0, D = Math.max(((d && !e.stacked ? w.size : C) - E) / 2, 5 * a), k = (e) => J(e).width * a, A = (e) => e.length ? G(e.map(k)) + D + 4 * a : 0, j = (t, n) => (e.rows[n].cells[t] ?? e.rows[n].cells[0]).value, N = e.seriesValues.flatMap((e, t) => e.map((e, n) => ({
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) => ({
616
630
  label: e,
617
631
  value: j(t, n)
618
632
  }))), P = (t) => {
619
- let n = Pe(e.rows[t], e.series.length);
633
+ let n = Fe(e.rows[t], e.series.length);
620
634
  return n.top === 0 && n.bottom < 0;
621
- }, L = e.stacked ? A(e.totals.filter((e, t) => !P(t))) : d ? A(N.filter((e) => e.value >= 0).map((e) => e.label)) : 0, z = e.stacked ? A(e.totals.filter((e, t) => P(t))) : d ? A(N.filter((e) => e.value < 0).map((e) => e.label)) : 0, B = (t, n) => e.labels === "inside" && ve(t, n, a);
622
- if (!d && !e.stacked) for (let e = 0; e < 3; e++) {
623
- let e = m - p - L - z, n = t.map((e, t) => ({
624
- seg: e,
625
- label: s[t]
626
- })).filter(({ seg: t, label: n }) => !B(n, b(t.value, e))), r = A(n.filter(({ seg: e }) => e.value >= 0).map(({ label: e }) => e)), i = A(n.filter(({ seg: e }) => e.value < 0).map(({ label: e }) => e));
627
- if (r <= L && i <= z) break;
628
- L = Math.max(L, r), z = Math.max(z, i);
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;
636
+ if (V && (L = z = 0), V || !d && !e.stacked) {
637
+ let e = d ? N.filter(({ label: e }) => e.dataset.missing === void 0) : t.map((e, t) => ({
638
+ label: s[t],
639
+ value: e.value
640
+ }));
641
+ for (let t = 0; t < 3; t++) {
642
+ let t = m - p - L - z, n = e.filter(({ label: e, value: n }) => !B(e, b(n, t))), r = A(n.filter(({ value: e }) => e >= 0).map(({ label: e }) => e)), i = A(n.filter(({ value: e }) => e < 0).map(({ label: e }) => e));
643
+ if (r <= L && i <= z) break;
644
+ L = Math.max(L, r), z = Math.max(z, i);
645
+ }
629
646
  }
630
- let V = m - p - L - z, H = p + z + b(v, V), U = (e) => e < 0 ? H - b(e, V) : H + b(e, V);
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);
631
648
  if (e.squeeze && (e.breakX = U(e.squeeze.gap)), e.x = U, e.stacked) {
632
649
  let t = e.length("--tablechart-stack-gap", "1px") ?? a;
633
650
  e.rows.forEach((r, i) => {
634
- let o = Pe(r, e.series.length), s = Re(e, r, i, { "data-grow": "right" }, o.bottom < 0 ? `${H - U(o.bottom)}px center` : ""), l = S(i) - C / 2, u = Ne(r, e.series.length);
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);
635
652
  u.forEach(({ from: r, to: o, cell: c }, d) => {
636
653
  let f = e.seriesValues[d][i];
637
654
  if (f.dataset.place = "none", c.missing || o === r) return;
638
- let p = Math.min(U(r), U(o)), m = Math.max(U(r), U(o)), h = Le(u, d) ? Math.min(t, (m - p) / 2) : 0, [g, _] = U(o) > U(r) ? [p, m - h] : [p + h, m];
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];
639
656
  s(d, {
640
657
  x: g,
641
658
  y: l,
642
659
  width: Math.max(_ - g, 1),
643
660
  height: C,
644
661
  ...o < r && { "data-grow": "left" }
645
- }), f.dataset.place = "inside", f.toggleAttribute("data-left-out", !ve(f, m - p, a) || J(f).height * a > C), Ie(f, e, d), R(f, (p + m) / 2, S(i), O, n);
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);
646
663
  });
647
664
  let d = e.totals[i];
648
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));
@@ -658,29 +675,31 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
658
675
  return;
659
676
  }
660
677
  if (d) {
661
- let t = e.seriesValues.flat().filter((e) => e.dataset.missing === void 0), s = ye(e.plot, t, (e) => ({
662
- size: J(e).height * a,
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,
663
680
  room: w.size + w.gap * .5
664
681
  }), "--_fit");
665
682
  e.rows.forEach((t, i) => {
666
- e.series.forEach((a, c) => {
667
- let l = t.cells[c] ?? t.cells[0], u = e.seriesValues[c][i];
668
- if (l.missing) {
669
- u.dataset.place = "none";
683
+ e.series.forEach((c, l) => {
684
+ let u = t.cells[l] ?? t.cells[0], d = e.seriesValues[l][i];
685
+ if (u.missing) {
686
+ d.dataset.place = "none";
670
687
  return;
671
688
  }
672
- let d = U(l.value), f = l.value < 0, p = S(i) + w.offset(c), m = Math.max(Math.abs(d - H), 1);
673
- l.value !== 0 && o.appendChild(F("rect", {
689
+ let f = U(u.value), p = u.value < 0, m = S(i) + w.offset(l), h = Math.max(Math.abs(f - H), 1);
690
+ u.value !== 0 && o.appendChild(F("rect", {
674
691
  class: I(r, t),
675
692
  "data-kind": "bar",
676
693
  "data-row": i + 1,
677
- "data-grow": f ? "left" : "right",
678
- x: f ? H - m : H,
679
- y: p,
680
- width: m,
694
+ "data-grow": p ? "left" : "right",
695
+ x: p ? H - h : H,
696
+ y: m,
697
+ width: h,
681
698
  height: w.size,
682
- ...Me(e, t, c)
683
- })), u.dataset.place = f ? "before" : "after", u.toggleAttribute("data-left-out", !s), R(u, f ? d - D : d + D, p + w.size / 2, O, n);
699
+ ...Ne(e, t, l)
700
+ }));
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);
684
703
  });
685
704
  let l = c[i];
686
705
  l && R(l, p - 8 * a, S(i), O, n);
@@ -693,7 +712,7 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
693
712
  }));
694
713
  return;
695
714
  }
696
- let ee = t.map((e, t) => B(s[t], Math.abs(U(e.value) - H)));
715
+ let te = t.map((e, t) => B(s[t], Math.abs(U(e.value) - H)));
697
716
  t.forEach((t, i) => {
698
717
  let l = U(t.value), u = S(i), d = t.value < 0, f = Math.abs(l - H), m = Math.max(f, 1);
699
718
  t.value !== 0 && o.appendChild(F("rect", {
@@ -708,7 +727,7 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
708
727
  style: M("--i", t.slot)
709
728
  }));
710
729
  let h = s[i], g = Math.max(Math.min(D, f - k(h) - 6 * a), 6 * a), _ = d ? 1 : -1;
711
- h.dataset.place = ee[i] ? "inside" : d ? "before" : "after", h.dataset.kind = t.kind, R(h, ee[i] ? e.insideAlign === "center" ? (H + l) / 2 : e.insideAlign === "start" ? H - _ * (g + k(h) / 2) : l + _ * (g + k(h) / 2) : l - _ * D, u, O, n);
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);
712
731
  let v = c[i];
713
732
  v && R(v, p - 8 * a, u, O, n);
714
733
  }), o.appendChild(F("line", {
@@ -719,7 +738,7 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
719
738
  y2: n
720
739
  }));
721
740
  }
722
- }, Be = {
741
+ }, Ve = {
723
742
  segments: (e) => e.map((e) => ({
724
743
  ...e,
725
744
  from: 0,
@@ -739,18 +758,18 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
739
758
  if (e.stacked) {
740
759
  let t = e.length("--tablechart-stack-gap", "1px") ?? c;
741
760
  e.rows.forEach((r, i) => {
742
- let l = Pe(r, e.series.length), u = Re(e, r, i, {}, l.bottom < 0 ? `center ${p - a(l.top)}px` : ""), d = n(i) - o / 2, f = Ne(r, e.series.length);
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);
743
762
  f.forEach(({ from: r, to: l, cell: p }, m) => {
744
763
  let h = e.seriesValues[m][i];
745
764
  if (h.dataset.place = "none", p.missing || l === r) return;
746
- let g = Math.min(a(l), a(r)), _ = Math.max(a(l), a(r)), v = Le(f, m) ? Math.min(t, (_ - g) / 2) : 0, [y, b] = a(l) < a(r) ? [g + v, _] : [g, _ - v];
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];
747
766
  u(m, {
748
767
  x: d,
749
768
  y,
750
769
  width: o,
751
770
  height: Math.max(b - y, 1),
752
771
  ...l < r && { "data-grow": "down" }
753
- }), h.dataset.place = "inside", h.toggleAttribute("data-left-out", !_e(h, _ - g, c) || J(h).width * c > o - 4 * c), Ie(h, e, m), R(h, n(i), (g + _) / 2, O, s);
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);
754
773
  });
755
774
  let m = e.totals[i];
756
775
  if (m) {
@@ -767,29 +786,31 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
767
786
  return;
768
787
  }
769
788
  if (e.own.length > 1) {
770
- let t = je(n(1) - n(0) || n(0) * 2, e.own.length, e.barMax), o = e.own.flatMap((t) => e.seriesValues[t]).filter((e) => e.dataset.missing === void 0), u = ye(e.plot, o, (e) => ({
771
- size: J(e).width * c,
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,
772
791
  room: t.size + t.gap * .5
773
- }), "--_fit");
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));
774
793
  e.rows.forEach((i, o) => {
775
- e.own.forEach((d, f) => {
776
- let m = i.cells[d] ?? i.cells[0], h = e.seriesValues[d][o], g = n(o) + t.offset(f);
777
- if (m.missing) {
778
- h.dataset.place = "none";
794
+ e.own.forEach((d, _) => {
795
+ let v = i.cells[d] ?? i.cells[0], y = e.seriesValues[d][o], b = n(o) + t.offset(_);
796
+ if (v.missing) {
797
+ y.dataset.place = "none";
779
798
  return;
780
799
  }
781
- let _ = a(m.value), v = m.value < 0, y = Math.max(Math.abs(p - _), 1);
782
- m.value !== 0 && l.appendChild(F("rect", {
800
+ let x = a(v.value), S = v.value < 0, C = Math.max(Math.abs(p - x), 1);
801
+ v.value !== 0 && l.appendChild(F("rect", {
783
802
  class: I(r, i),
784
803
  "data-kind": "bar",
785
804
  "data-row": o + 1,
786
- ...v && { "data-grow": "down" },
787
- x: g,
788
- y: v ? p : p - y,
805
+ ...S && { "data-grow": "down" },
806
+ x: b,
807
+ y: S ? p : p - C,
789
808
  width: t.size,
790
- height: y,
791
- ...Me(e, i, d)
792
- })), h.dataset.place = v ? "below" : "outside", h.toggleAttribute("data-left-out", !u), R(h, g + t.size / 2, v ? _ + 4 * c : _ - 4 * c, O, s);
809
+ height: C,
810
+ ...Ne(e, i, d)
811
+ }));
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);
793
814
  });
794
815
  }), l.appendChild(F("line", {
795
816
  class: i,
@@ -800,8 +821,8 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
800
821
  }));
801
822
  return;
802
823
  }
803
- let m = e.own[0], h = e.own.length < e.series.length, g = ge(u, o, c), _ = t.map((e, t) => d === "inside" && !g && !e.missing && _e(u[t], Math.abs(p - a(e.value)), c)), v = u[0] ? J(u[0]).height * c * .56 : 0, y = Infinity;
804
- for (let [e, t] of u.entries()) _[e] && (y = Math.min(y, (o - J(t).width * c) / 2));
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));
805
826
  t.forEach((t, i) => {
806
827
  let d = a(t.value), g = t.value < 0;
807
828
  if (t.missing) {
@@ -819,10 +840,10 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
819
840
  width: o,
820
841
  height: b,
821
842
  style: M("--i", t.slot),
822
- ...h && Me(e, t, m)
843
+ ...h && Ne(e, t, m)
823
844
  }));
824
845
  let x = g ? -1 : 1, S = Math.min(y, (Math.abs(p - d) - v) / 2), C = f === "center" ? (d + p) / 2 : f === "start" ? p - x * (S + v / 2) : d + x * (S + v / 2), w = g ? d + 4 * c : d - 4 * c;
825
- R(u[i], n(i), _[i] ? C : w, O, s), u[i].dataset.place = _[i] ? "inside" : g ? "below" : "outside", h && _[i] && Ie(u[i], e, m);
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);
826
847
  }), l.appendChild(F("line", {
827
848
  class: i,
828
849
  x1: 0,
@@ -831,7 +852,7 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
831
852
  y2: p
832
853
  }));
833
854
  }
834
- }, Ve = 0, He = (e) => e.filter((e) => !e.isTotal), Ue = {
855
+ }, He = 0, Ue = (e) => e.filter((e) => !e.isTotal), We = {
835
856
  aspect: .66,
836
857
  centre: !0,
837
858
  headroom: () => 0,
@@ -842,7 +863,7 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
842
863
  kind: "bar"
843
864
  })),
844
865
  draw({ rows: e, height: t, unit: n, labelHeight: r, svg: i, values: a, config: o, centre: s }) {
845
- let c = O / 2, u = t / 2, d = He(e).reduce((e, t) => e + Math.abs(t.value), 0);
866
+ let c = O / 2, u = t / 2, d = Ue(e).reduce((e, t) => e + Math.abs(t.value), 0);
846
867
  if (!d) return;
847
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;
848
869
  if (e.forEach((e, o) => {
@@ -875,10 +896,10 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
875
896
  "data-row": o + 1,
876
897
  style: `${S} ${M("--i", e.slot)}`
877
898
  })), s.style.setProperty("--start", x.start.toFixed(4)), s.style.setProperty("--span", x.span.toFixed(4));
878
- let k = p + 9 * n, A = J(s).width * n / 2;
899
+ let k = p + 9 * n, A = q(s).width * n / 2;
879
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;
880
901
  }), _.length > 1) {
881
- let e = h - m / 2 - 1, n = h + m / 2 + 1, r = `tablechart-slices-${++Ve}`, a = F("mask", {
902
+ let e = h - m / 2 - 1, n = h + m / 2 + 1, r = `tablechart-slices-${++He}`, a = F("mask", {
882
903
  id: r,
883
904
  maskUnits: "userSpaceOnUse"
884
905
  });
@@ -903,17 +924,22 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
903
924
  }
904
925
  s && R(s, c, u, O, t);
905
926
  }
906
- }, X = [
927
+ }, Ge = [
907
928
  "circle",
908
929
  "square",
909
930
  "diamond"
910
- ], We = (e, t) => {
911
- let n = e[t]?.marker?.toLowerCase().split(/\s+/) ?? [], r = X.find((e) => n.includes(e));
931
+ ], Y = (e, t) => {
932
+ let n = e[t]?.marker?.toLowerCase().split(/\s+/) ?? [];
933
+ if (n.includes("none")) return {
934
+ shape: "none",
935
+ open: !1
936
+ };
937
+ let r = Ge.find((e) => n.includes(e));
912
938
  return {
913
- shape: r ?? X[Math.floor(t / 2) % X.length],
939
+ shape: r ?? Ge[Math.floor(t / 2) % Ge.length],
914
940
  open: n.includes("open") || !n.includes("filled") && !r && t % 2 == 1
915
941
  };
916
- }, Ge = (e, t, n, r, i = {}) => {
942
+ }, Ke = (e, t, n, r, i = {}) => {
917
943
  if (e === "square") {
918
944
  let e = r * .88;
919
945
  return F("rect", {
@@ -944,8 +970,8 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
944
970
  r,
945
971
  ...i
946
972
  });
947
- }, Z = (e) => Number(e.toFixed(2));
948
- function Ke(e, t) {
973
+ }, X = (e) => Number(e.toFixed(2));
974
+ function Z(e, t) {
949
975
  let n = e.length;
950
976
  if (n < 2) return e.map(() => 0);
951
977
  let r = (n) => (t[n + 1] - t[n]) / (e[n + 1] - e[n] || 1), i = Array(n).fill(0);
@@ -967,12 +993,12 @@ function qe(e, t, n, r) {
967
993
  return [[e[0] + i, e[1] + n * i], [t[0] - i, t[1] - r * i]];
968
994
  }
969
995
  function Je(e, t, n, r) {
970
- let [i, a] = qe(e, t, n, r), o = ([e, t]) => `${Z(e)},${Z(t)}`;
996
+ let [i, a] = qe(e, t, n, r), o = ([e, t]) => `${X(e)},${X(t)}`;
971
997
  return `C${o(i)} ${o(a)} ${o(t)}`;
972
998
  }
973
999
  function Ye(e, t, n) {
974
1000
  let r = Array(e).fill(0), i = [], a = () => {
975
- Ke(i.map((e) => n(e)[0]), i.map((e) => n(e)[1])).forEach((e, t) => {
1001
+ Z(i.map((e) => n(e)[0]), i.map((e) => n(e)[1])).forEach((e, t) => {
976
1002
  r[i[t]] = e;
977
1003
  }), i = [];
978
1004
  };
@@ -1034,8 +1060,8 @@ var Xe = (e) => {
1034
1060
  footroom: ({ labelHeight: t, unit: n, series: r, focused: i, stacked: a }) => !e && !a && r === 2 && !i ? t + 7 * n : 0,
1035
1061
  draw(t) {
1036
1062
  let { rows: n, series: r, own: a, seriesValues: o, names: s, cx: c, y: l, height: f, unit: p, labelHeight: g, svg: _, stacked: v } = t, y = a.length < r.length, b = t.shape === "step", x = t.shape === "smooth", S = r.length > 1, C = r.some((e) => e.focus), w = n.length - 1, T = l(0), E = n.length > 1 ? c(1) - c(0) : c(0) * 2;
1037
- _.style.setProperty("--_base", `${Z(T)}px`);
1038
- let D = (e) => `--rise:${Z(T - e)}px; `, k = (e, t) => n[t]?.cells[e] ?? n[t]?.cells[0], A = (e, t) => !k(e, t) || !!k(e, t)?.missing, j = n.map((e) => v ? Ne(e, r.length, !0) : null), M = (e, t) => j[t]?.[e].to ?? k(e, t)?.value ?? 0, N = (e, t) => j[t]?.[e].from ?? 0, P = (e, t) => [c(t), l(M(e, t))], I = r.map((e, t) => {
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) => {
1039
1065
  if (!S) return {
1040
1066
  attrs: {},
1041
1067
  ink: ""
@@ -1050,76 +1076,76 @@ var Xe = (e) => {
1050
1076
  };
1051
1077
  }), L = y ? w : Math.min(w, 6);
1052
1078
  t.plot.style.setProperty("--count", String(L + 1));
1053
- let z = w > 0 ? L / (b ? n.length : w) : 1, B = (e) => e * z, V = (e) => `--i:${Z(B(e))}`, H = (e) => {
1079
+ let z = w > 0 ? L / (b ? n.length : w) : 1, B = (e) => e * z, V = (e) => `--i:${X(B(e))}`, ee = (e) => {
1054
1080
  let t = [], r = -1;
1055
1081
  return n.forEach((n, i) => {
1056
1082
  A(e, i) || (r < 0 && (r = i), (i === w || A(e, i + 1)) && ((b || i > r) && t.push([r, i]), r = -1));
1057
1083
  }), t;
1058
- }, U = (e, t) => `--i:${Z(B(e) + 1)}; --d:${Z(B(b ? t + 1 : t) - B(e))}`, te = (e, t) => ({
1084
+ }, H = (e, t) => `--i:${X(B(e) + 1)}; --d:${X(B(b ? t + 1 : t) - B(e))}`, te = (e, t) => ({
1059
1085
  "data-from": e + 1,
1060
1086
  "data-to": t + 1,
1061
1087
  ...b && { "data-flat": "" }
1062
- }), W = x ? r.map((e, t) => Ye(n.length, (e) => A(t, e), (e) => P(t, e))) : [], ne = x && e ? r.map((e, t) => Ye(n.length, (e) => A(t, e), (e) => [c(e), l(N(t, e))])) : [], G = (e, t, n) => {
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) => {
1063
1089
  let r = [];
1064
1090
  return e.forEach(([i, a], o) => {
1065
- b ? (r.push(`H${Z(i + n * E / 2)}`), o < e.length - 1 && r.push(`V${Z(e[o + 1][1])}`)) : o > 0 && r.push(t ? Je(e[o - 1], [i, a], t[o - 1], t[o]) : `L${Z(i)},${Z(a)}`);
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)}`);
1066
1092
  }), r;
1067
- }, re = (e, t, r, i) => n.slice(t, r + 1).map((n, r) => [c(t + r), l(i(e, t + r))]), K = (e, t, n, r) => x ? e[t].slice(n, r + 1) : null, ie = (e) => c(e) - (b ? E / 2 : 0), q = (e) => c(e) + (b ? E / 2 : 0), ae = (e) => {
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) => {
1068
1094
  let t = F("g", {
1069
1095
  class: d,
1070
1096
  ...I[e].attrs,
1071
1097
  ...v && { "data-stacked": "" },
1072
1098
  style: I[e].ink
1073
- }), n = H(e), r = F("g", {
1099
+ }), n = ee(e), r = F("g", {
1074
1100
  class: "tablechart-area-fill",
1075
- style: `--rows:${Z(L + 1)}; ${n.length ? U(...n[0]) : ""}`
1101
+ style: `--rows:${X(L + 1)}; ${n.length ? H(...n[0]) : ""}`
1076
1102
  });
1077
1103
  t.appendChild(r);
1078
1104
  for (let [t, i] of n) {
1079
- let n = re(e, t, i, M), a = re(e, t, i, N), o = K(ne, e, t, i)?.reverse() ?? null, s = [
1080
- `M${Z(ie(t))},${Z(a[0][1])}`,
1081
- `L${Z(ie(t))},${Z(n[0][1])}`,
1082
- ...G(n, K(W, e, t, i), 1),
1083
- `L${Z(q(i))},${Z(a[a.length - 1][1])}`,
1084
- ...G(a.reverse(), o, -1),
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),
1085
1111
  "Z"
1086
1112
  ].join(" ");
1087
1113
  r.appendChild(F("path", {
1088
1114
  d: s,
1089
1115
  ...te(t, i),
1090
- style: U(t, i)
1116
+ style: H(t, i)
1091
1117
  }));
1092
1118
  }
1093
1119
  _.appendChild(t);
1094
- }, oe = (e) => {
1120
+ }, se = (e) => {
1095
1121
  let t = r[e];
1096
- for (let [n, r] of H(e)) {
1097
- let i = re(e, n, r, M), a = [`M${Z(ie(n))},${Z(i[0][1])}`, ...G(i, K(W, e, n, r), 1)].join(" ");
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(" ");
1098
1124
  _.appendChild(F("path", {
1099
1125
  class: u,
1100
1126
  ...I[e].attrs,
1101
1127
  d: a,
1102
1128
  ...t.line && { "data-line": t.line },
1103
1129
  ...te(n, r),
1104
- style: `${I[e].ink}${U(n, r)}`
1130
+ style: `${I[e].ink}${H(n, r)}`
1105
1131
  }));
1106
1132
  }
1107
- }, se = (e) => {
1108
- let i = a.map((e) => r[e]), o = r.map((e, t) => y ? We(i, a.indexOf(t)) : S ? We(r, t) : {
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) : {
1109
1135
  shape: "circle",
1110
1136
  open: !1
1111
1137
  }), s = (e, t, n) => {
1112
1138
  let [r, i] = P(e, t);
1113
- return Ge(o[e].shape, r, i, 4 * p, {
1139
+ return Ke(o[e].shape, r, i, 3 * p, {
1114
1140
  ...n,
1115
1141
  style: `${n.style ?? ""}${D(i)}${V(t)}`
1116
1142
  });
1117
- }, c = (t) => n.map((e, t) => t).filter((n) => !A(t, n) && e(t, n)), l = a.flatMap((e) => o[e].open ? c(e).map((t) => s(e, t, {
1143
+ }, c = (t) => /\bnone\b/.test(r[t].marker ?? "") ? [] : n.map((e, t) => t).filter((n) => !A(t, n) && e(t, n)), l = a.flatMap((e) => o[e].open ? c(e).map((t) => s(e, t, {
1118
1144
  class: h,
1119
1145
  "data-row": t + 1,
1120
1146
  ...S && { "data-series": e + 1 }
1121
1147
  })) : []);
1122
- _.closest("[data-animate]")?.getAttribute("data-animate") === "grow" ? ee(_, l, O, f) : t.lineHoles.push(...l), a.forEach((e) => {
1148
+ _.closest("[data-animate]")?.getAttribute("data-animate") === "grow" ? U(_, l, O, f) : t.lineHoles.push(...l), a.forEach((e) => {
1123
1149
  for (let t of c(e)) _.appendChild(s(e, t, {
1124
1150
  class: m,
1125
1151
  ...I[e].attrs,
@@ -1130,11 +1156,11 @@ var Xe = (e) => {
1130
1156
  }));
1131
1157
  });
1132
1158
  };
1133
- e && a.forEach((e) => ae(e)), a.forEach((e) => oe(e));
1134
- let ce = y ? r.flatMap((e, t) => a.includes(t) ? [] : o[t].flatMap((e) => {
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) => {
1135
1161
  let t = e.dataset.place;
1136
1162
  if (!t || t === "none" || e.hasAttribute("data-left-out")) return [];
1137
- let [n, r, i, a] = Y(e, p, O, f);
1163
+ let [n, r, i, a] = J(e, p, O, f);
1138
1164
  return [{
1139
1165
  label: e,
1140
1166
  box: [
@@ -1144,7 +1170,7 @@ var Xe = (e) => {
1144
1170
  a + 6 * p
1145
1171
  ]
1146
1172
  }];
1147
- })) : [], le = b ? [] : a.flatMap((e) => n.flatMap((t, n) => {
1173
+ })) : [], ue = b ? [] : a.flatMap((e) => n.flatMap((t, n) => {
1148
1174
  if (A(e, n)) return [];
1149
1175
  let [r, i] = P(e, n);
1150
1176
  return [[
@@ -1153,22 +1179,22 @@ var Xe = (e) => {
1153
1179
  8 * p,
1154
1180
  8 * p
1155
1181
  ]];
1156
- })), de = ce.filter(({ label: e, box: t }) => {
1157
- let n = le.some((e) => ue(e, t));
1182
+ })), fe = le.filter(({ label: e, box: t }) => {
1183
+ let n = ue.some((e) => de(e, t));
1158
1184
  return n && e.setAttribute("data-left-out", ""), !n;
1159
- }), pe = (e, t) => {
1185
+ }), me = (e, t) => {
1160
1186
  let n = t;
1161
1187
  for (; n < w && !A(e, n + 1) && k(e, n + 1)?.value === k(e, t)?.value;) n++;
1162
1188
  return n;
1163
- }, me = (e) => e === "above" ? "below" : "above", he = (e, t, n) => {
1164
- let [r, i] = P(e, t), a = J(o[e][t]).width * p, s = [
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 = [
1165
1191
  r - a / 2,
1166
1192
  n === "above" ? i - 7 * p - g : i + 7 * p,
1167
1193
  a,
1168
1194
  g
1169
1195
  ];
1170
- return s[1] + g > f ? Infinity : [t - 1, t + 1].filter((t) => t >= 0 && t <= w && !A(e, t)).flatMap((n) => ge(e, t, n, 0)).filter((e) => ue(e, s)).length;
1171
- }, ge = (e, t, n, r) => {
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) => {
1172
1198
  let [i, a] = P(e, t), [o, s] = P(e, n), c = Math.max(1, Math.ceil(Math.hypot(o - i, s - a) / (3 * p)));
1173
1199
  return Array.from({ length: c + 1 }, (e, t) => {
1174
1200
  let n = t / c;
@@ -1179,53 +1205,78 @@ var Xe = (e) => {
1179
1205
  2 * r
1180
1206
  ];
1181
1207
  });
1182
- }, _e = (t, n) => {
1208
+ }, ve = (t, n) => {
1183
1209
  let i = k(t, n);
1184
1210
  if (!i || i.missing || b && n > 0 && !A(t, n - 1) && k(t, n - 1)?.value === i.value || C && !r[t].focus) return "none";
1185
1211
  if (v) return "middle";
1186
1212
  let a = i.value < 0 ? "below" : "above";
1187
- if (!S || C || r.length > 2) return e || b || he(t, n, a) <= he(t, n, me(a)) ? a : me(a);
1213
+ if (!S || C || r.length > 2) return e || b || ge(t, n, a) <= ge(t, n, he(a)) ? a : he(a);
1188
1214
  let o = k(1 - t, n);
1189
1215
  return !o || o.missing ? a : i.value > o.value || i.value === o.value && t === 0 || e && i.value >= 0 && P(t, n)[1] + 7 * p + g > T ? "above" : "below";
1190
- }, ve = (y || S && !C && r.length > 2 && !v) && !b, ye = /* @__PURE__ */ new Map();
1191
- if (ve) {
1216
+ }, ye = (e) => {
1217
+ let t = w;
1218
+ for (; t > 0 && A(e, t);) t--;
1219
+ 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) => {
1222
+ let t = s[e];
1223
+ if (!t) return [];
1224
+ let [n, r] = P(e, ye(e));
1225
+ return [{
1226
+ name: t,
1227
+ x: n + Se,
1228
+ y: r
1229
+ }];
1230
+ }), i = t.numbersAtEnd ? Se - 7 * p : 0;
1231
+ return xe(r, e).map((t) => [
1232
+ t.x - n - i,
1233
+ t.y - e / 2 - n,
1234
+ q(t.name).width * p + 2 * n + i,
1235
+ e + 2 * n
1236
+ ]);
1237
+ }, we = (y || S && !C && r.length > 2 && !v) && !b, Ee = /* @__PURE__ */ new Map();
1238
+ if (we) {
1192
1239
  let e = n.flatMap((e, t) => a.map((e) => ({
1193
1240
  s: e,
1194
1241
  i: t,
1195
1242
  value: k(e, t)?.value ?? 0
1196
- }))).filter(({ s: e, i: t }) => _e(e, t) !== "none").sort((e, t) => e.i - t.i || t.value - e.value || e.s - t.s), t = (e) => e < 0 ? ["below", "above"] : ["above", "below"], r = fe(e.map(({ s: e, i: n, value: r }) => {
1197
- let i = J(o[e][n]).width * p, [a, s] = P(e, n);
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);
1198
1245
  return t(r).map((e) => [
1199
1246
  a - i / 2,
1200
1247
  e === "above" ? s - 7 * p - g : s + 7 * p,
1201
1248
  i,
1202
1249
  g
1203
1250
  ]);
1204
- }), [...a.flatMap((e) => n.flatMap((t, n) => {
1205
- if (A(e, n)) return [];
1206
- let [r, i] = P(e, n);
1207
- return [[
1208
- r - 4 * p,
1209
- i - 4 * p,
1210
- 8 * p,
1211
- 8 * p
1212
- ]];
1213
- })), ...de.map(({ box: e }) => e)], [
1251
+ }), [
1252
+ ...a.flatMap((e) => n.flatMap((t, n) => {
1253
+ if (A(e, n)) return [];
1254
+ let [r, i] = P(e, n);
1255
+ return [[
1256
+ r - 4 * p,
1257
+ i - 4 * p,
1258
+ 8 * p,
1259
+ 8 * p
1260
+ ]];
1261
+ })),
1262
+ ...Ce(),
1263
+ ...fe.map(({ box: e }) => e)
1264
+ ], [
1214
1265
  0,
1215
1266
  0,
1216
1267
  c(w) + c(0),
1217
1268
  f
1218
1269
  ]);
1219
- e.forEach(({ s: e, i: n, value: i }, a) => ye.set(o[e][n], r[a] === null ? null : t(i)[r[a]]));
1270
+ e.forEach(({ s: e, i: n, value: i }, a) => Ee.set(o[e][n], r[a] === null ? null : t(i)[r[a]]));
1220
1271
  }
1221
- let xe = (e, t) => ve ? ye.get(o[e][t]) === null : !v && !b ? !1 : J(o[e][t]).width * p > (b ? pe(e, t) - t + 1 : 1) * E - 4 * p || v && e > 0 && M(e, t) < N(e, t) ? !0 : v && Math.abs(l(N(e, t)) - l(M(e, t))) < g * 1.2;
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;
1222
1273
  a.forEach((e) => {
1223
1274
  o[e].forEach((t, n) => {
1224
- t.style.setProperty("--i", String(Z(b ? (B(n) + B(n + 1)) / 2 : B(n))));
1225
- let r = ye.get(t) ?? _e(e, n);
1226
- if (t.dataset.place = r === "above" ? "outside" : r, t.toggleAttribute("data-left-out", r !== "none" && xe(e, n)), b && r !== "none" ? t.dataset.rowEnd = String(pe(e, n) + 1) : delete t.dataset.rowEnd, r === "none") return;
1227
- let i = J(t).width * p / 2 + 4 * p, a = c(n);
1228
- b ? a = (c(n) + c(pe(e, n))) / 2 : r === "middle" && n === 0 ? a += i : r === "middle" && n === w && (a -= i);
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);
1229
1280
  let o = l(M(e, n)), s = {
1230
1281
  middle: (l(N(e, n)) - o) / 2,
1231
1282
  above: -7 * p,
@@ -1234,7 +1285,7 @@ var Xe = (e) => {
1234
1285
  R(t, a, o + s[r], O, f);
1235
1286
  });
1236
1287
  });
1237
- let Se = (e) => {
1288
+ let Oe = (e) => {
1238
1289
  let r = n.flatMap((t, n) => t.pinned && !A(e, n) ? [n] : []), i = n.map((e, t) => t).filter((t) => !A(e, t)), a = (t) => k(e, t)?.value ?? 0, { keys: s } = t.pick;
1239
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) => ({
1240
1291
  x: e,
@@ -1243,37 +1294,21 @@ var Xe = (e) => {
1243
1294
  let c = [];
1244
1295
  for (let t of r) {
1245
1296
  let n = o[e][t];
1246
- c.includes(t) || n.dataset.place === "none" || c.every((t) => we([o[e][t], n], p, 1e3, f) === 1) && c.push(t);
1297
+ c.includes(t) || n.dataset.place === "none" || c.every((t) => Te([o[e][t], n], p, 1e3, f) === 1) && c.push(t);
1247
1298
  }
1248
1299
  return new Set(c);
1249
- }, Ce = (e) => we(o[e].filter((e) => e.dataset.place !== "none" && !e.hasAttribute("data-left-out")), p, O, f) === 1, Te = (e) => {
1250
- let t = w;
1251
- for (; t > 0 && A(e, t);) t--;
1252
- return t;
1253
- }, Ee = /* @__PURE__ */ new Map();
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();
1254
1301
  for (let e of a) {
1255
- let n = t.pick.mode === "all" || t.pick.mode === "auto" && Ce(e) ? null : Se(e);
1256
- Ee.set(e, n), n && o[e].forEach((e, t) => {
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) => {
1257
1304
  e.dataset.place !== "none" && !n.has(t) && e.setAttribute("data-left-out", "");
1258
1305
  });
1259
1306
  }
1260
- if (!v && !b && a.some((e) => Ee.get(e))) {
1261
- let e = c(w) + c(0), t = 2 * p, r = a.flatMap((e) => n.flatMap((n, r) => r === w || A(e, r) || A(e, r + 1) ? [] : ge(e, r, r + 1, t))), i = (s[0] ? J(s[0]).height : 0) * p, l = a.flatMap((e) => {
1262
- let t = s[e];
1263
- if (!t) return [];
1264
- let n = w;
1265
- for (; n > 0 && A(e, n);) n--;
1266
- let [r, a] = P(e, n);
1267
- return [[
1268
- r + 10 * p,
1269
- a - i / 2,
1270
- J(t).width * p,
1271
- i
1272
- ]];
1273
- }), u = a.flatMap((e) => [...Ee.get(e) ?? []].map((t) => ({
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) => ({
1274
1309
  s: e,
1275
1310
  i: t
1276
- }))), d = ({ s: e, i: t }) => {
1311
+ }))), d = ({ s: e, i: n }) => t.numbersAtEnd && n === ye(e), m = u.filter((e) => !d(e)), h = ({ s: e, i: t }) => {
1277
1312
  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;
1278
1313
  return (r ?? i) !== void 0 && (r === void 0 || n <= r) && (i === void 0 || n <= i) ? [
1279
1314
  "below",
@@ -1290,8 +1325,8 @@ var Xe = (e) => {
1290
1325
  "after",
1291
1326
  "before"
1292
1327
  ];
1293
- }, m = ({ s: t, i: n }, r) => {
1294
- let i = J(o[t][n]).width * p, a = g, [s, c] = P(t, n), l = Math.min(Math.max(s - i / 2, 0), e - i);
1328
+ }, _ = ({ 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);
1295
1330
  return r === "outside" ? [
1296
1331
  l,
1297
1332
  c - 7 * p - a,
@@ -1323,7 +1358,7 @@ var Xe = (e) => {
1323
1358
  i,
1324
1359
  a
1325
1360
  ];
1326
- }, h = u.map(d), _ = (t) => t[0] >= 0 && t[1] >= 0 && t[0] + t[2] <= e && t[1] + t[3] <= f - 2 * p, v = u.map(({ s: e, i: t }) => {
1361
+ }, v = m.map(h), y = (t) => t[0] >= 0 && t[1] >= 0 && t[0] + t[2] <= e && t[1] + t[3] <= f - 2 * p, b = u.map(({ s: e, i: t }) => {
1327
1362
  let [n, r] = P(e, t);
1328
1363
  return [
1329
1364
  n - 6 * p,
@@ -1331,46 +1366,51 @@ var Xe = (e) => {
1331
1366
  12 * p,
1332
1367
  12 * p
1333
1368
  ];
1334
- }), y = [], b = /* @__PURE__ */ new Set(), x = u.map((e, t) => {
1335
- let n = h[t].map((t) => m(e, t)), i = (e) => _(e) && ![
1336
- ...y,
1369
+ }), x = [], S = /* @__PURE__ */ new Set(), C = m.map((e, t) => {
1370
+ let n = v[t].map((t) => _(e, t)), r = (e) => y(e) && ![
1371
+ ...x,
1337
1372
  ...l,
1338
- ...v
1339
- ].some((t) => ue(e, t)), a = n.findIndex((e) => i(e) && !r.some((t) => ue(e, t)));
1340
- return a < 0 && (a = n.findIndex(i), a >= 0 && b.add(t)), a >= 0 && y.push(n[a]), a < 0 ? null : a;
1373
+ ...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)));
1375
+ 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;
1341
1376
  });
1342
- u.forEach((e, t) => {
1377
+ m.forEach((e, t) => {
1343
1378
  let n = o[e.s][e.i];
1344
- n.toggleAttribute("data-cut", b.has(t));
1345
- let r = x[t];
1346
- if (r === null) return n.setAttribute("data-left-out", "");
1347
- let i = h[t][r], [a, s, c, l] = m(e, i), u = i.split(" ")[0];
1379
+ n.toggleAttribute("data-cut", S.has(t));
1380
+ let r = C[t];
1381
+ if (n.toggleAttribute("data-left-out", r === null), r === null) return;
1382
+ let i = v[t][r], [a, s, c, l] = _(e, i), u = i.split(" ")[0];
1348
1383
  n.dataset.place = u, R(n, u === "after" ? a : u === "before" ? a + c : a + c / 2, u === "outside" ? s + l : u === "below" ? s : s + l / 2, O, f);
1349
1384
  });
1350
1385
  }
1351
- b || se((e, t) => {
1352
- let n = Ee.get(e);
1386
+ b || ce((e, t) => {
1387
+ let n = Ae.get(e);
1353
1388
  return n ? n.has(t) : E >= 10 * p;
1354
1389
  }), t.pointOf = (e) => {
1355
1390
  let t = a.filter((t) => !A(t, e)).map((t) => P(t, e));
1356
1391
  return t.length ? t.reduce((e, t) => t[1] < e[1] ? t : e) : null;
1357
1392
  };
1358
- let De = (y ? [] : s).map((e, t) => {
1359
- let n = Te(t), [r, i] = P(t, n);
1393
+ let je = (y ? [] : s).map((e, t) => {
1394
+ let n = ye(t), [r, i] = P(t, n);
1360
1395
  return {
1361
1396
  name: e,
1362
- x: (b ? r + E / 2 : r) + 10 * p,
1397
+ s: t,
1398
+ x: (b ? r + E / 2 : r) + Se,
1363
1399
  y: v ? (i + l(N(t, n))) / 2 : i
1364
1400
  };
1365
- }), Oe = (s[0] ? J(s[0]).height : 0) * p;
1366
- for (let e of be(De, Oe)) R(e.name, e.x, e.y, O, f);
1367
- let ke = n.some((e) => e.cells.some((e) => !e.missing && e.value < 0)), Ae = !e && !v && r.length === 2 && !C && !ke ? f - 2 * p : T;
1401
+ }), Me = (s[0] ? q(s[0]).height : 0) * p;
1402
+ for (let e of xe(je, Me)) {
1403
+ if (R(e.name, e.x, e.y, O, f), !t.numbersAtEnd) continue;
1404
+ let n = o[e.s][ye(e.s)];
1405
+ n.dataset.place = "before", n.removeAttribute("data-left-out"), n.removeAttribute("data-cut"), R(n, e.x - 4 * p, e.y, O, f);
1406
+ }
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;
1368
1408
  y || _.appendChild(F("line", {
1369
1409
  class: i,
1370
1410
  x1: 0,
1371
1411
  x2: c(w) + c(0),
1372
- y1: Ae,
1373
- y2: Ae
1412
+ y1: Fe,
1413
+ y2: Fe
1374
1414
  }));
1375
1415
  }
1376
1416
  }), rt = nt(!1), it = nt(!0), at = /* @__PURE__ */ new Set(), ot = (t, n) => {
@@ -1399,16 +1439,16 @@ var Xe = (e) => {
1399
1439
  breakable: !0,
1400
1440
  headroom: ({ labelHeight: e, badgeHeight: t, hasAnnotations: n, unit: r }) => e + 6 * r + (n ? t * 1.6 : 0),
1401
1441
  draw({ segments: e, cx: t, y: n, barWidth: a, height: o, unit: s, svg: c, values: l, breakAt: u, insideAlign: d }) {
1402
- let f = n(0), p = ge(l, a, s), m = d ?? "center", h = e.map((t, r) => {
1442
+ let f = n(0), p = _e(l, a, s), m = d ?? "center", h = e.map((t, r) => {
1403
1443
  let i = n(Math.max(t.from, t.to)), a = Math.abs(n(t.from) - n(t.to)), o = u !== null && Math.min(t.from, t.to) < u && Math.max(t.from, t.to) > u, c = t.kind === "total" && r > 0 && r === e.length - 1;
1404
1444
  return {
1405
1445
  top: i,
1406
1446
  length: a,
1407
1447
  down: t.kind === "down" || t.kind === "total" && (c ? t.to >= 0 : t.to < 0),
1408
- inside: !o && !p && _e(l[r], a, s)
1448
+ inside: !o && !p && ve(l[r], a, s)
1409
1449
  };
1410
- }), g = l[0] ? J(l[0]).height * s * .56 : 0, _ = Infinity;
1411
- for (let [e, t] of h.entries()) t.inside && (_ = Math.min(_, (a - J(l[e]).width * s) / 2));
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));
1412
1452
  let v = e.length, y = (e, t, n = !1) => `--start:${(e / v).toFixed(4)}; --span:${(t / v).toFixed(4)}; --ease:${n ? A : "linear"};`;
1413
1453
  e.forEach((r, i) => {
1414
1454
  let o = e[i + 1];
@@ -1440,7 +1480,7 @@ var Xe = (e) => {
1440
1480
  b.style.setProperty("--start", (i / v).toFixed(4)), b.style.setProperty("--span", (1 / v).toFixed(4));
1441
1481
  let x = Math.min(_, (d - g) / 2), S = u + x + g / 2, C = u + d - x - g / 2, w = m === "center" ? u + d / 2 : m === "end" === f ? C : S;
1442
1482
  b.dataset.place = p ? "inside" : "outside", b.dataset.kind = n.kind;
1443
- let T = p ? w : n.kind === "down" ? u + d + J(b).height * s + 3 * s : u - 3 * s;
1483
+ let T = p ? w : n.kind === "down" ? u + d + q(b).height * s + 3 * s : u - 3 * s;
1444
1484
  R(b, t(i), T, O, o);
1445
1485
  }), c.appendChild(F("line", {
1446
1486
  class: i,
@@ -1493,8 +1533,8 @@ var Xe = (e) => {
1493
1533
  slot: r
1494
1534
  };
1495
1535
  });
1496
- }, ft = (e) => Array.from(e.querySelector("thead tr:last-child")?.children ?? []).slice(1).filter((e) => !e.hasAttribute("data-note")), pt = (e) => e === "dashed" || e === "dotted" ? e : null, mt = (e, t, n = "data-i18n") => {
1497
- let r = ft(e), i = Math.max(1, G(t.map((e) => e.cells.length)));
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)));
1498
1538
  return Array.from({ length: i }, (e, t) => {
1499
1539
  let i = r[t];
1500
1540
  return {
@@ -1563,7 +1603,7 @@ var Xe = (e) => {
1563
1603
  step: 0,
1564
1604
  ticks: n
1565
1605
  };
1566
- let r = n?.[0] ?? -G(e.map((e) => -e)), i = n?.[1] ?? G(e);
1606
+ let r = n?.[0] ?? -W(e.map((e) => -e)), i = n?.[1] ?? W(e);
1567
1607
  if (!n) {
1568
1608
  let e = (i - r || Math.abs(i) || 1) * .05;
1569
1609
  r -= e, i += e;
@@ -1632,7 +1672,8 @@ var Xe = (e) => {
1632
1672
  r,
1633
1673
  i
1634
1674
  ].map((e, t) => e * a + n[t] * (1 - a));
1635
- e.style.setProperty("--_surface", `rgb(${n.slice(0, 3).map(Math.round).join(" ")})`);
1675
+ let r = `rgb(${n.slice(0, 3).map(Math.round).join(" ")})`;
1676
+ return e.style.getPropertyValue("--_surface") !== r && (e.style.setProperty("--_surface", r), !0);
1636
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 = [
1637
1678
  255,
1638
1679
  255,
@@ -1661,12 +1702,28 @@ var Xe = (e) => {
1661
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);
1662
1703
  n.style.setProperty("--_ink", `rgb(${s.join(" ")})`);
1663
1704
  }
1664
- }, zt = [
1705
+ }, zt = (e) => {
1706
+ let t = e.querySelectorAll(".tablechart-name:not([data-place='legend'])");
1707
+ 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);
1709
+ for (let o of t) {
1710
+ let t = e.querySelector(`.tablechart-series[data-series="${o.dataset.series}"]:not([data-muted])`);
1711
+ if (o.style.removeProperty("--_ink"), !t) continue;
1712
+ let s = wt(getComputedStyle(t).stroke).slice(0, 3);
1713
+ for (let e = 0; e <= 20; e++) {
1714
+ let t = s.map((t, n) => Math.round(t + (a[n] - t) * e / 20));
1715
+ if (!(kt(n, t, i) < r && e < 20)) {
1716
+ e && o.style.setProperty("--_ink", `rgb(${t.join(" ")})`);
1717
+ break;
1718
+ }
1719
+ }
1720
+ }
1721
+ }, Bt = [
1665
1722
  "axis-break",
1666
1723
  "trend",
1667
1724
  "bracket"
1668
- ], Bt = (e, t = !1) => {
1669
- let n = e.hasAttribute("data-fragment"), r = Array.from(e.querySelectorAll("tbody tr")), i = Array.from(e.querySelector("thead tr:last-child")?.children ?? []).slice(1), a = Array.from(e.querySelectorAll("[data-annotation]")).filter((e) => zt.includes(e.getAttribute("data-annotation") ?? "")), o = (e) => e.hasAttribute("data-fragment"), s = r.map((e) => Array.from(e.querySelectorAll(":scope > td")));
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")));
1670
1727
  if (!n && !r.some(o) && !i.some(o) && !s.flat().some(o) && !a.some(o) || t && !n) return null;
1671
1728
  let c = [], l = /* @__PURE__ */ new Map(), u = [], d = (e) => {
1672
1729
  let t = e === null ? void 0 : l.get(e);
@@ -1728,7 +1785,7 @@ var Xe = (e) => {
1728
1785
  count: c.length,
1729
1786
  indexes: c
1730
1787
  };
1731
- }, Vt = (e) => {
1788
+ }, Ht = (e) => {
1732
1789
  let t = e.plan;
1733
1790
  if (!t) return;
1734
1791
  let n = (t) => t === null || e.step - t >= 1;
@@ -1739,7 +1796,7 @@ var Xe = (e) => {
1739
1796
  let u = r.hasAttribute("data-flat") ? (l - e + 1) / (i - e + 1) : i > e ? Math.max(0, l - e) / (i - e) : 0;
1740
1797
  r.style.setProperty("--reveal", String(u));
1741
1798
  }
1742
- }, Ht = (e) => {
1799
+ }, Ut = (e) => {
1743
1800
  let t = e.plan;
1744
1801
  if (!t) return;
1745
1802
  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) => {
@@ -1817,12 +1874,12 @@ var Xe = (e) => {
1817
1874
  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));
1818
1875
  }
1819
1876
  }
1820
- Vt(e);
1821
- }, Ut = (e, t, n = !1) => {
1877
+ Ht(e);
1878
+ }, Wt = (e, t, n = !1) => {
1822
1879
  let r = e.plan;
1823
1880
  if (!r) return;
1824
1881
  let i = Math.min(Math.max(Math.round(t), 0), r.count), a = i !== e.step;
1825
- e.step = i, e.figure.style.setProperty("--_step", String(i)), Vt(e);
1882
+ e.step = i, e.figure.style.setProperty("--_step", String(i)), Ht(e);
1826
1883
  let [o, s] = e.controls?.querySelectorAll("button") ?? [];
1827
1884
  o && (o.disabled = i === 0), s && (s.disabled = i === r.count), a && !n && e.figure.dispatchEvent(new CustomEvent("tablechart:step", {
1828
1885
  bubbles: !0,
@@ -1831,7 +1888,7 @@ var Xe = (e) => {
1831
1888
  steps: r.count
1832
1889
  }
1833
1890
  }));
1834
- }, Wt = (e, t, n) => {
1891
+ }, Gt = (e, t, n) => {
1835
1892
  let r = document.createElement("div");
1836
1893
  r.className = "tablechart-controls";
1837
1894
  let i = (r) => {
@@ -1860,14 +1917,14 @@ var Xe = (e) => {
1860
1917
  ]), i;
1861
1918
  };
1862
1919
  return r.append(i("previous"), i("next")), r;
1863
- }, Gt = (e, t, n, r = {
1920
+ }, Kt = (e, t, n, r = {
1864
1921
  x: 0,
1865
1922
  y: 0,
1866
1923
  scale: 1
1867
1924
  }, i = 2, a = 8, o = 12) => {
1868
1925
  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));
1869
1926
  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`;
1870
- }, Kt = "tablechart-tooltip", qt = [
1927
+ }, qt = "tablechart-tooltip", Jt = [
1871
1928
  "--tablechart-surface",
1872
1929
  "--_surface",
1873
1930
  "--tablechart-tooltip-surface",
@@ -1876,65 +1933,66 @@ var Xe = (e) => {
1876
1933
  "--tablechart-tooltip-radius",
1877
1934
  "--tablechart-tooltip-padding",
1878
1935
  "--tablechart-tooltip-shadow"
1879
- ], $ = null, Jt, Yt, Xt = null, Zt = null, Qt = 0, $t = () => {
1880
- clearTimeout(Qt), $ && Xt && ($.hidden = !0, Xt = null, Zt = null);
1881
- }, en = !1, tn = !0, nn = NaN, rn = NaN, an = !1, on = () => {
1882
- if (an) return;
1883
- an = !0, document.addEventListener("pointermove", (e) => {
1884
- e.pointerType === "mouse" && (tn = e.screenX !== nn || e.screenY !== rn, nn = e.screenX, rn = e.screenY, tn && (en = !1));
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));
1885
1942
  }, {
1886
1943
  capture: !0,
1887
1944
  passive: !0
1888
1945
  });
1889
1946
  let e = () => {
1890
- en = !0, $t();
1947
+ tn = !0, en();
1891
1948
  };
1892
1949
  document.addEventListener("keydown", e, !0), window.addEventListener("scroll", e, {
1893
1950
  capture: !0,
1894
1951
  passive: !0
1895
1952
  });
1896
- }, sn = (e, t) => t / Number.parseFloat(getComputedStyle(e).width) || 1, cn = (e) => {
1953
+ }, cn = (e, t) => t / Number.parseFloat(getComputedStyle(e).width) || 1, ln = (e) => {
1897
1954
  let t = e.tooltipparent;
1898
1955
  return (typeof t == "string" ? document.querySelector(t) : t) ?? document.body;
1899
- }, ln = () => {
1900
- clearTimeout(Qt), Qt = window.setTimeout($t, 120);
1901
1956
  }, un = () => {
1957
+ clearTimeout($t), $t = window.setTimeout(en, 120);
1958
+ }, dn = () => {
1902
1959
  let e = document.createElement("div");
1903
- return e.className = Kt, e.setAttribute("aria-hidden", "true"), e.hidden = !0, Jt = document.createElement("div"), Yt = document.createElement("div"), Yt.className = `${Kt}-arrow`, e.append(Jt, Yt), document.body.append(e), e.addEventListener("pointerenter", () => clearTimeout(Qt)), e.addEventListener("pointerleave", (e) => e.pointerType === "mouse" && ln()), document.addEventListener("pointerdown", (t) => {
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) => {
1904
1961
  let n = t.target;
1905
- Xt && !Xt.plot.contains(n) && !e.contains(n) && $t();
1906
- }), window.addEventListener("resize", $t), e;
1907
- }, dn = (e, t) => {
1962
+ Zt && !Zt.plot.contains(n) && !e.contains(n) && en();
1963
+ }), window.addEventListener("resize", en), e;
1964
+ }, fn = (e, t) => {
1908
1965
  let n = t ? t.style.getPropertyValue("--step") : "x";
1909
1966
  return n === "" || Number(n) < e.step;
1910
- }, fn = (e, t) => {
1967
+ }, pn = (e, t) => {
1911
1968
  let n = e.svg.querySelector(`[data-series="${t + 1}"]:not(.tablechart-hole)`);
1912
1969
  if (!n) return;
1913
1970
  let r = getComputedStyle(n);
1914
1971
  return r.fill && r.fill !== "none" ? r.fill : r.stroke;
1915
- }, pn = (e, t, n) => {
1972
+ }, mn = (e, t, n) => {
1916
1973
  let r = e.series.length > 1, i = [];
1917
1974
  for (let [n, a] of e.seriesValues.entries()) {
1918
- if (!dn(e, a[t])) continue;
1975
+ if (!fn(e, a[t])) continue;
1919
1976
  let o = r ? e.figure.querySelector(`.tablechart-name[data-series="${n + 1}"]`) : null;
1920
1977
  i.push({
1921
1978
  name: r ? o?.textContent ?? e.series[n].name : "",
1922
1979
  value: a[t].textContent ?? "",
1923
- colour: r ? fn(e, n) : void 0,
1980
+ colour: r ? pn(e, n) : void 0,
1924
1981
  sample: o ? {
1925
1982
  marker: o.dataset.marker ?? null,
1926
1983
  open: o.hasAttribute("data-open"),
1927
1984
  line: o.dataset.line ?? null,
1985
+ point: getComputedStyle(o).getPropertyValue("--tablechart-point-color").trim(),
1928
1986
  box: o.dataset.swatch === "box"
1929
1987
  } : void 0
1930
1988
  });
1931
1989
  }
1932
1990
  let a = e.totals[t];
1933
- return i.length > 1 && dn(e, a) && i.push({
1991
+ return i.length > 1 && fn(e, a) && i.push({
1934
1992
  name: n.totallabel,
1935
1993
  value: a.textContent ?? ""
1936
1994
  }), i;
1937
- }, mn = (e, t) => {
1995
+ }, hn = (e, t) => {
1938
1996
  if (e.type.centre && e.values[t]) return e.values[t].getBoundingClientRect();
1939
1997
  let n = e.pointOf?.(t);
1940
1998
  if (n) {
@@ -1954,49 +2012,49 @@ var Xe = (e) => {
1954
2012
  100
1955
2013
  ];
1956
2014
  return new DOMRect(a.left + a.width * o / 100, a.top + a.height * s / 100, a.width * c / 100, a.height * l / 100);
1957
- }, hn = (e, t, n) => {
1958
- if (clearTimeout(Qt), Xt === e && Zt === t) return;
1959
- let r = (e.type.tooltip ?? pn)(e, t, n);
1960
- if (!r.length) return $t();
1961
- Xt && Xt !== e && $t(), $ ?? ($ = un());
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());
1962
2020
  let i = (e, t, n, r = !1, i) => {
1963
2021
  let a = document.createElement("div");
1964
- if (a.className = `${Kt}-line`, n) {
2022
+ if (a.className = `${qt}-line`, n) {
1965
2023
  let e = document.createElement("span");
1966
- e.className = `${Kt}-key`, e.style.background = n, i?.box ? e.dataset.sample = "box" : i && (e.dataset.sample = "line", i.marker && (e.dataset.marker = i.marker), i.line && (e.dataset.line = i.line), e.toggleAttribute("data-open", i.open)), a.append(e);
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);
1967
2025
  }
1968
2026
  let o = document.createElement("span");
1969
- if (o.className = `${Kt}-${r ? "title" : "name"}`, o.textContent = e, a.append(o), t) {
2027
+ if (o.className = `${qt}-${r ? "title" : "name"}`, o.textContent = e, a.append(o), t) {
1970
2028
  e && o.append(":");
1971
2029
  let n = document.createElement("span");
1972
- n.className = `${Kt}-value`, n.textContent = t, a.append(n);
2030
+ n.className = `${qt}-value`, n.textContent = t, a.append(n);
1973
2031
  }
1974
2032
  return a;
1975
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"), {
1976
- className: `${Kt}-note`,
2034
+ className: `${qt}-note`,
1977
2035
  textContent: c
1978
2036
  })] : [];
1979
- Jt.replaceChildren(...s ? [] : [i(a, o ? r[0].value : "", void 0, !0)], ...o ? [] : r.map(({ name: e, value: t, colour: n, sample: r }) => i(e, t, n, !1, r)), ...l);
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);
1980
2038
  let u = getComputedStyle(e.figure);
1981
- for (let e of qt) {
2039
+ for (let e of Jt) {
1982
2040
  let t = u.getPropertyValue(e).trim();
1983
2041
  t ? $.style.setProperty(e, t) : $.style.removeProperty(e);
1984
2042
  }
1985
2043
  $.style.setProperty("--_color", u.color), $.style.colorScheme = u.colorScheme, $.style.fontFamily = u.fontFamily;
1986
- let d = cn(n);
1987
- $.parentElement !== d && d.append($), Xt = e, Zt = t, $.hidden = !1, $.style.left = "0px", $.style.top = "0px";
2044
+ let d = ln(n);
2045
+ $.parentElement !== d && d.append($), Zt = e, Qt = t, $.hidden = !1, $.style.left = "0px", $.style.top = "0px";
1988
2046
  let f = $.getBoundingClientRect(), p = {
1989
2047
  x: f.left,
1990
2048
  y: f.top,
1991
- scale: sn($, f.width)
1992
- }, m = sn(e.plot, e.plot.getBoundingClientRect().width);
1993
- $.style.fontSize = `${Number.parseFloat(u.fontSize) * m / p.scale}px`, Gt($, Yt, mn(e, t), p);
1994
- }, gn = (e, t, n = !1) => {
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) => {
1995
2053
  let { plot: r } = e;
1996
- r.setAttribute("data-hover", ""), on();
2054
+ r.setAttribute("data-hover", ""), sn();
1997
2055
  let i = (t) => {
1998
2056
  if (e.rowAt) {
1999
- let n = r.getBoundingClientRect(), i = sn(r, n.width);
2057
+ let n = r.getBoundingClientRect(), i = cn(r, n.width);
2000
2058
  return e.rowAt((t.clientX - n.left) / i, (t.clientY - n.top) / i);
2001
2059
  }
2002
2060
  let n = t.target.closest?.("[data-row]")?.getAttribute("data-row");
@@ -2006,13 +2064,13 @@ var Xe = (e) => {
2006
2064
  else if (t.getAttribute("data-row") === String(e + 1)) return !0;
2007
2065
  return !1;
2008
2066
  }, s = null, c = (a) => {
2009
- if (a.type === "pointerdown") en = !1;
2010
- else if (a.pointerType === "mouse" && (!tn || en)) return;
2067
+ if (a.type === "pointerdown") tn = !1;
2068
+ else if (a.pointerType === "mouse" && (!nn || tn)) return;
2011
2069
  if (!r.classList.contains("is-placed") || !e.figure.classList.contains("is-shown")) return;
2012
- if (n && !e.figure.hasAttribute("data-left-out")) return Xt === e ? $t() : void 0;
2070
+ if (n && !e.figure.hasAttribute("data-left-out")) return Zt === e ? en() : void 0;
2013
2071
  let c = i(a);
2014
- if (s = c, c === null || o(c)) return Xt === e ? $t() : void 0;
2015
- hn(e, c, t);
2072
+ if (s = c, c === null || o(c)) return Zt === e ? en() : void 0;
2073
+ gn(e, c, t);
2016
2074
  }, l = (t) => {
2017
2075
  let n = t.target;
2018
2076
  return e.svg.contains(n) && n.hasAttribute("data-row") ? n : null;
@@ -2026,37 +2084,37 @@ var Xe = (e) => {
2026
2084
  if (!r) return;
2027
2085
  a.delete(r);
2028
2086
  let i = Number(r.getAttribute("data-row")) - 1;
2029
- s === i && !o(i) && !en && hn(e, i, t);
2087
+ s === i && !o(i) && !tn && gn(e, i, t);
2030
2088
  };
2031
2089
  e.svg.addEventListener("transitionend", u), e.svg.addEventListener("transitioncancel", u), r.addEventListener("pointermove", c), r.addEventListener("pointerdown", c), r.addEventListener("pointerleave", (t) => {
2032
- t.pointerType === "mouse" && (s = null, Xt === e && ln());
2090
+ t.pointerType === "mouse" && (s = null, Zt === e && un());
2033
2091
  });
2034
- }, _n = (e) => {
2035
- Xt === e && $t();
2036
- }, vn = {
2092
+ }, vn = (e) => {
2093
+ Zt === e && en();
2094
+ }, yn = {
2037
2095
  area: it,
2038
- bar: ze,
2039
- column: Be,
2040
- donut: Ue,
2096
+ bar: Be,
2097
+ column: Ve,
2098
+ donut: We,
2041
2099
  line: rt,
2042
2100
  waterfall: st
2043
- }, yn = (e, t) => {
2044
- vn[e] = t, Object.assign(bn, t.annotations), xn.splice(0, Infinity, ...Object.keys(bn));
2045
- }, bn = {
2046
- "axis-break": ne,
2047
- trend: ke,
2048
- bracket: le,
2049
- reference: De,
2050
- note: Te
2051
- }, xn = Object.keys(bn), Sn = (e) => {
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) => {
2052
2110
  let t = "";
2053
2111
  for (let n = e.previousSibling; n && (t = (n.textContent ?? "") + t, !t.trim()); n = n.previousSibling);
2054
2112
  return t.trim();
2055
- }, Cn = [
2113
+ }, wn = [
2056
2114
  "straight",
2057
2115
  "step",
2058
2116
  "smooth"
2059
- ], wn = (e, t, n, r, i) => {
2117
+ ], Tn = (e, t, n, r, i) => {
2060
2118
  let a = t === r, [o, s, c] = a ? [
2061
2119
  Math.min(e, n),
2062
2120
  Math.max(e, n),
@@ -2068,16 +2126,16 @@ var Xe = (e) => {
2068
2126
  ], 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;
2069
2127
  for (let [e, t] of l) e > d && u.push([d, Math.min(e, s)]), d = Math.max(d, t);
2070
2128
  return d < s && u.push([d, s]), u.map(([e, t]) => a ? `M${P(e)},${P(c)}H${P(t)}` : `M${P(c)},${P(e)}V${P(t)}`).join("");
2071
- }, Tn = (e, t) => {
2129
+ }, En = (e, t) => {
2072
2130
  let [n, r, i, a] = [
2073
2131
  "x1",
2074
2132
  "y1",
2075
2133
  "x2",
2076
2134
  "y2"
2077
- ].map((t) => Number(e.getAttribute(t))), o = F("path", { d: wn(n, r, i, a, t) });
2135
+ ].map((t) => Number(e.getAttribute(t))), o = F("path", { d: Tn(n, r, i, a, t) });
2078
2136
  for (let { name: t, value: n } of Array.from(e.attributes)) /^[xy][12]$/.test(t) || o.setAttribute(t, n);
2079
2137
  e.replaceWith(o);
2080
- }, En = (e) => Array.from((e.getAttribute("d") ?? "").matchAll(/M(-?[\d.]+),(-?[\d.]+)([HV])(-?[\d.]+)/g), ([, e, t, n, r]) => n === "H" ? [
2138
+ }, Dn = (e) => Array.from((e.getAttribute("d") ?? "").matchAll(/M(-?[\d.]+),(-?[\d.]+)([HV])(-?[\d.]+)/g), ([, e, t, n, r]) => n === "H" ? [
2081
2139
  +e,
2082
2140
  +t,
2083
2141
  +r,
@@ -2087,19 +2145,19 @@ var Xe = (e) => {
2087
2145
  +t,
2088
2146
  +e,
2089
2147
  +r
2090
- ]), Dn = (e, [t, n, r, i]) => e.map(([e, a, o, s]) => a === s ? n <= a && a <= n + i && Math.max(e, t) < Math.min(o, t + r) ? `M${P(Math.max(e, t))},${P(a)}H${P(Math.min(o, t + r))}` : "" : t <= e && e <= t + r && Math.max(a, n) < Math.min(s, n + i) ? `M${P(e)},${P(Math.max(a, n))}V${P(Math.min(s, n + i))}` : "").join(""), On = (e, t, n) => {
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) => {
2091
2149
  let r = e.getAttribute(t);
2092
2150
  return r === null ? n : r !== "false";
2093
- }, kn = (e, t) => !!t.animate && e.getAttribute("data-chart-animate") !== "false", An = (e, t) => {
2151
+ }, An = (e, t) => !!t.animate && e.getAttribute("data-chart-animate") !== "false", jn = (e, t) => {
2094
2152
  let n = e.dataset.chartShape;
2095
- return n && Cn.includes(n) ? n : Cn.includes(t.shape) ? t.shape : "straight";
2096
- }, jn = (e) => {
2153
+ return n && wn.includes(n) ? n : wn.includes(t.shape) ? t.shape : "straight";
2154
+ }, Mn = (e) => {
2097
2155
  for (let t of e.querySelectorAll("br")) {
2098
- if (t.previousElementSibling?.classList.contains("tablechart-sr") || /[.!?:;,…]$/.test(Sn(t))) continue;
2156
+ if (t.previousElementSibling?.classList.contains("tablechart-sr") || /[.!?:;,…]$/.test(Cn(t))) continue;
2099
2157
  let e = document.createElement("span");
2100
2158
  e.className = y, e.textContent = ". ", t.before(e);
2101
2159
  }
2102
- }, Mn = (e, t, n) => {
2160
+ }, Nn = (e, t, n) => {
2103
2161
  let r = e.querySelector("table");
2104
2162
  if (!r) return null;
2105
2163
  let i = r.querySelector("tfoot [data-chart-total]");
@@ -2110,22 +2168,42 @@ var Xe = (e) => {
2110
2168
  s && n.langattribute && o.setAttribute(n.langattribute, `${s}-total`);
2111
2169
  let c = a.insertCell();
2112
2170
  return c.setAttribute("data-chart-total", ""), c.dataset.value = t.dataset.value ?? "0", a.prepend(o), c;
2113
- }, Nn = 0, Pn = (e) => {
2171
+ }, Pn = 0, Fn = (e) => {
2114
2172
  let t = e.querySelector(":scope > figcaption");
2115
2173
  if (!t) return;
2116
- jn(t);
2174
+ Mn(t);
2117
2175
  let n = (e) => e.hasAttribute("aria-label") || e.hasAttribute("aria-labelledby"), r = (e) => {
2118
- t.id || (t.id = `tablechart-caption-${++Nn}`), e.setAttribute("aria-labelledby", t.id);
2176
+ t.id || (t.id = `tablechart-caption-${++Pn}`), e.setAttribute("aria-labelledby", t.id);
2119
2177
  };
2120
2178
  e.tagName === "FIGURE" && !n(e) && r(e);
2121
2179
  let i = e.querySelector("table");
2122
2180
  i && !n(i) && !i.querySelector(":scope > caption") && r(i);
2123
- }, Fn = (r, i, a = null) => {
2124
- let o = a ?? (r.getAttribute("data-chart") || "column"), s = vn[o];
2125
- if (!s) return console.warn(`[${e}] Unknown chart type "${o}". Known types: ${Object.keys(vn).join(", ")}.`), r.setAttribute("data-chart-empty", ""), null;
2181
+ }, In = [
2182
+ null,
2183
+ "dashed",
2184
+ "dotted",
2185
+ "dash-dot"
2186
+ ], Ln = (t, n, r, i) => {
2187
+ let a = t.closest("[data-chart-lines]")?.getAttribute("data-chart-lines"), o = i.lines;
2188
+ if (a) try {
2189
+ o = JSON.parse(a);
2190
+ } catch {
2191
+ console.warn(`[${e}] data-chart-lines needs a JSON list, such as [{"marker":"none"}].`, t);
2192
+ }
2193
+ (r === "line" || r === "area" ? n : n.filter((e) => e.chart)).forEach((e, t) => {
2194
+ if (!o?.length) {
2195
+ e.line ?? (e.line = In[Math.floor(t / 6) % In.length]);
2196
+ return;
2197
+ }
2198
+ let n = o[t % o.length];
2199
+ 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
+ });
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;
2126
2204
  let c = dt(r, i.langattribute);
2127
2205
  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;
2128
- Pn(r);
2206
+ Fn(r);
2129
2207
  let l = mt(r, c, i.langattribute);
2130
2208
  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)) {
2131
2209
  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.`;
@@ -2134,6 +2212,7 @@ var Xe = (e) => {
2134
2212
  chart: null
2135
2213
  })));
2136
2214
  }
2215
+ Ln(r, l, o, i);
2137
2216
  let u = l.some((e) => e.chart), d = l.length > 1;
2138
2217
  d && r.style.setProperty("--_series-count", String(l.length));
2139
2218
  let m = r.hasAttribute("data-chart-stack");
@@ -2147,14 +2226,14 @@ var Xe = (e) => {
2147
2226
  _.appendChild(v);
2148
2227
  let y = r.querySelector(":scope > table"), b = (e) => y ? y.before(e) : r.append(e);
2149
2228
  b(_);
2150
- let x = s.centre ? c.filter((e) => !e.isTotal) : c, S = Math.max(0, G(x.flatMap((e) => e.cells.slice(0, l.length).map((e) => re(e.number))))), C = l.map((e, t) => Math.max(0, G(c.map((e) => re(e.cells[t]?.number ?? ""))))), w = document.createElement("div");
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");
2151
2230
  w.className = "tablechart-values", _.appendChild(w);
2152
2231
  let D = l.map((e, t) => c.map((e, r) => {
2153
2232
  let i = e.cells[t] ?? e.cells[0], a = L(n, w);
2154
2233
  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;
2155
2234
  })), O = D[0], k = h && s.totals ? c.map((e, t) => {
2156
2235
  let r = L(n, w);
2157
- r.classList.add(...e.classes), r.dataset.kind = "total", r.dataset.row = String(t + 1), r.dataset.value = String(Fe(e, l.length));
2236
+ r.classList.add(...e.classes), r.dataset.kind = "total", r.dataset.row = String(t + 1), r.dataset.value = String(Ie(e, l.length));
2158
2237
  let i = e.cells[0];
2159
2238
  return i.prefix && (r.dataset.prefix = i.prefix), i.suffix && (r.dataset.suffix = i.suffix), r.style.setProperty("--i", String(e.slot)), r;
2160
2239
  }) : [], 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;
@@ -2163,35 +2242,35 @@ var Xe = (e) => {
2163
2242
  let n = L(f, N ?? _);
2164
2243
  N && (n.dataset.place = "legend");
2165
2244
  let a = e.chart ? void 0 : s.legend ?? s.swatch;
2166
- if (a && (n.dataset.swatch = a), n.textContent = e.name, !a && An(r, i) !== "step") {
2167
- let r = e.chart ? We(P, P.indexOf(e)) : We(l, t);
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);
2168
2247
  n.dataset.marker = r.shape, n.toggleAttribute("data-open", r.open);
2169
2248
  }
2170
2249
  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;
2171
2250
  }) : [], R = s.centre ? L(g, _) : null;
2172
2251
  if (R) {
2173
2252
  let e = c.find((e) => e.isTotal), t = e ? e.value : c.reduce((e, t) => e + Math.abs(t.value), 0);
2174
- R.dataset.value = String(t), e && (R.dataset.decimals = String(re(e.number)));
2253
+ R.dataset.value = String(t), e && (R.dataset.decimals = String(ie(e.number)));
2175
2254
  }
2176
- let z = R && !c.some((e) => e.isTotal) ? Mn(r, R, i) : null, B = s.categories === "beside", V = document.createElement("div");
2255
+ let z = R && !c.some((e) => e.isTotal) ? Nn(r, R, i) : null, B = s.categories === "beside", V = document.createElement("div");
2177
2256
  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));
2178
- let H = 0;
2257
+ let ee = 0;
2179
2258
  for (let [e, t] of c.entries()) {
2180
2259
  let n = document.createElement("span");
2181
- n.classList.add(...t.classes), n.textContent = t.short ?? t.label, t.key && i.langattribute && n.setAttribute(i.langattribute, t.short ? `${t.key}-short` : t.key), s.centre && (n.dataset.kind = t.isTotal ? "total" : "slice", t.isTotal || (n.dataset.slice = String(H + 1), n.style.setProperty("--n", String(H)), n.style.setProperty("--palette", `var(--tablechart-color-${H + 1})`), H += 1)), n.style.setProperty("--i", String(t.slot)), n.dataset.row = String(e + 1), V.appendChild(n);
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);
2182
2261
  }
2183
- s.centre && r.style.setProperty("--_slice-count", String(H)), B ? _.appendChild(V) : b(V), N && b(N);
2184
- let U = l.filter((e) => !e.group), ee = !s.axes && !s.centre && On(r, "data-chart-axis", i.axis), te = s.axes ? {
2185
- titles: U.slice(0, 2).map((e, t) => {
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) => {
2186
2265
  let n = L(`${T}-title`, _);
2187
2266
  return n.dataset.axis = t ? "y" : "x", n.textContent = e.name, e.key && i.langattribute && n.setAttribute(i.langattribute, e.key), n;
2188
2267
  }),
2189
2268
  ticks: L(`${E}s`, _),
2190
2269
  numbers: !0
2191
- } : ee || !s.centre && On(r, "data-chart-grid", i.grid) ? {
2270
+ } : U || !s.centre && kn(r, "data-chart-grid", i.grid) ? {
2192
2271
  titles: [],
2193
2272
  ticks: L(`${E}s`, _),
2194
- numbers: ee
2273
+ numbers: U
2195
2274
  } : null;
2196
2275
  s.text?.({
2197
2276
  figure: r,
@@ -2200,21 +2279,21 @@ var Xe = (e) => {
2200
2279
  series: l,
2201
2280
  config: i
2202
2281
  });
2203
- let W = kn(r, i) ? Bt(r, !!s.axes) : null;
2204
- s.axes && r.querySelector("tbody [data-fragment], thead [data-fragment]") && Q.log(`A ${o} chart has one step, with data-fragment on the figure; its rows and columns have no steps of their own.`, r), W && r.setAttribute("data-steps", "");
2205
- let ne = r.getAttribute("data-chart-keys"), K = W && i.controls ? Wt({
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({
2206
2285
  previous: i.previouslabel,
2207
2286
  next: i.nextlabel,
2208
2287
  hint: i.stephint
2209
2288
  }, {
2210
- previous: ne && `${ne}-previous`,
2211
- next: ne && `${ne}-next`,
2212
- hint: ne && `${ne}-step`
2289
+ previous: re && `${re}-previous`,
2290
+ next: re && `${re}-next`,
2291
+ hint: re && `${re}-step`
2213
2292
  }, i.langattribute) : null;
2214
- K && b(K);
2215
- let ie = Array.from(r.querySelectorAll("[data-annotation]")).map((t) => {
2216
- let n = t.getAttribute("data-annotation"), r = bn[n];
2217
- if (!r) return console.warn(`[${e}] Unknown annotation "${n}". Known annotations: ${Object.keys(bn).join(", ")}.`), null;
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;
2218
2297
  let i = Number.parseInt(t.getAttribute("data-series") ?? "1", 10), a = i >= 1 && i <= l.length ? i - 1 : 0;
2219
2298
  return i !== a + 1 && console.warn(`[${e}] An annotation reads line ${i}, which is not there; it reads line 1.`), {
2220
2299
  spec: t,
@@ -2227,16 +2306,16 @@ var Xe = (e) => {
2227
2306
  if (!B && !s.centre && !s.axes) for (let [e, t] of c.entries()) {
2228
2307
  if (!t.note) continue;
2229
2308
  let n = document.createElement("span");
2230
- n.dataset.annotation = "note", n.dataset.row = String(e + 1), n.textContent = t.note, t.noteKey && n.setAttribute("data-i18n", t.noteKey), ie.push({
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({
2231
2310
  spec: n,
2232
- type: Te,
2233
- badge: Te.create(n, _),
2311
+ type: Ee,
2312
+ badge: Ee.create(n, _),
2234
2313
  series: 0,
2235
2314
  after: c.length
2236
2315
  });
2237
2316
  }
2238
- kn(r, i) && r.setAttribute("data-animate", Rn(r, o, i, !!W));
2239
- let q = {
2317
+ An(r, i) && r.setAttribute("data-animate", Vn(r, o, i, !!ne));
2318
+ let K = {
2240
2319
  figure: r,
2241
2320
  plot: _,
2242
2321
  svg: v,
@@ -2256,38 +2335,38 @@ var Xe = (e) => {
2256
2335
  rowAt: null,
2257
2336
  rowBox: null,
2258
2337
  pointOf: null,
2259
- annotations: ie,
2338
+ annotations: ae,
2260
2339
  checks: [],
2261
- plan: W,
2340
+ plan: ne,
2262
2341
  step: 0,
2263
- controls: K
2264
- }, ae = () => $n(r, v);
2265
- v.addEventListener("transitionend", ae), v.addEventListener("transitioncancel", ae), K?.addEventListener("click", (e) => {
2342
+ controls: G
2343
+ }, oe = () => nr(r, v);
2344
+ v.addEventListener("transitionend", oe), v.addEventListener("transitioncancel", oe), G?.addEventListener("click", (e) => {
2266
2345
  let t = e.target.closest("button")?.dataset.go;
2267
- t && Ut(q, q.step + (t === "next" ? 1 : -1));
2268
- }), Ut(q, 0, !0);
2269
- let oe = r.getAttribute("data-chart-tooltip"), se = oe === "false" ? !1 : oe === "auto" ? "auto" : oe !== null || i.tooltip;
2270
- return se && gn(q, i, se === "auto"), Jn(q, i), q;
2271
- }, In = {
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 = {
2272
2351
  grow: "grow",
2273
2352
  sweep: "sweep"
2274
- }, Ln = [
2353
+ }, Bn = [
2275
2354
  "never",
2276
2355
  "auto",
2277
2356
  "print",
2278
2357
  "always"
2279
- ], Rn = (e, t, n, r) => {
2280
- let i = t === "line" || t === "area", a = In[e.getAttribute("data-chart-animate") ?? ""] ?? In[String(n.animate)];
2358
+ ], Vn = (e, t, n, r) => {
2359
+ let i = t === "line" || t === "area", a = zn[e.getAttribute("data-chart-animate") ?? ""] ?? zn[String(n.animate)];
2281
2360
  return i ? r ? "sweep" : a ?? "sweep" : t === "donut" || t === "waterfall" ? a ?? "grow" : "grow";
2282
- }, zn = (e) => {
2361
+ }, Hn = (e) => {
2283
2362
  let t = getComputedStyle(e).getPropertyValue("--tablechart-value-align").trim();
2284
2363
  return t === "start" || t === "center" || t === "end" ? t : null;
2285
- }, Bn = (e, t, n) => e.dataset.chartLabels === "inside" || e.dataset.chartLabels !== "outside" && (t.labels === "inside" || n) ? "inside" : "outside", Vn = (e, t, n, r) => {
2364
+ }, Un = (e, t, n) => e.dataset.chartLabels === "inside" || e.dataset.chartLabels !== "outside" && (t.labels === "inside" || n) ? "inside" : "outside", Wn = (e, t, n, r) => {
2286
2365
  let i = getComputedStyle(e), a = (i.getPropertyValue(n).trim() || r).match(/^(\d+(?:\.\d+)?)(px|%|em|rem)$/);
2287
2366
  if (!a) return null;
2288
2367
  let o = Number(a[1]);
2289
2368
  return a[2] === "%" ? o / 100 * O : o * (a[2] === "em" ? Number.parseFloat(i.fontSize) : a[2] === "rem" ? Number.parseFloat(getComputedStyle(document.documentElement).fontSize) : 1) * t;
2290
- }, Hn = (e, t) => Vn(e, t, "--tablechart-bar-max", "60px") ?? Infinity, Un = (e, t) => {
2369
+ }, Gn = (e, t) => Wn(e, t, "--tablechart-bar-max", "60px") ?? Infinity, Kn = (e, t) => {
2291
2370
  let n = e.getBoundingClientRect(), r = O / n.width, i = getComputedStyle(e), a = Number.parseFloat(i.lineHeight) / Number.parseFloat(i.fontSize) || 1.2;
2292
2371
  return (e) => {
2293
2372
  if (e.dataset.place === "none" || e.hidden || e.hasAttribute("data-left-out")) return [];
@@ -2302,21 +2381,21 @@ var Xe = (e) => {
2302
2381
  style: s.join("; ")
2303
2382
  })] : [];
2304
2383
  };
2305
- }, Wn = [
2384
+ }, qn = [
2306
2385
  "first",
2307
2386
  "last",
2308
2387
  "highest",
2309
2388
  "lowest",
2310
2389
  "outliers"
2311
- ], Gn = (t, n) => {
2390
+ ], Jn = (t, n) => {
2312
2391
  let r = (t.getAttribute("data-chart-values") ?? n.values).trim().toLowerCase().split(/\s+/).filter(Boolean);
2313
2392
  for (let t of r) [
2314
2393
  "auto",
2315
2394
  "all",
2316
2395
  "none",
2317
- ...Wn
2318
- ].includes(t) || console.warn(`[${e}] data-chart-values knows no "${t}". It takes auto, all, none, ${Wn.join(", ")}.`);
2319
- let i = r.filter((e) => Wn.includes(e));
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));
2320
2399
  return r.includes("all") ? {
2321
2400
  mode: "all",
2322
2401
  keys: []
@@ -2325,19 +2404,19 @@ var Xe = (e) => {
2325
2404
  keys: []
2326
2405
  } : r.includes("auto") || !i.length ? {
2327
2406
  mode: "auto",
2328
- keys: i.length ? i : Wn
2407
+ keys: i.length ? i : qn
2329
2408
  } : {
2330
2409
  mode: "set",
2331
2410
  keys: i
2332
2411
  };
2333
- }, Kn = ({ figure: e, rows: t, series: n }, r) => {
2334
- let i = e.getAttribute("data-chart-table"), a = i && Ln.includes(i) ? i : r.table;
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;
2335
2414
  a === "never" ? e.removeAttribute("data-table") : e.setAttribute("data-table", a);
2336
2415
  let o = e.getAttribute("data-chart-summary");
2337
- e.setAttribute("data-summary", o && Ln.includes(o) ? o : r.summary), e.toggleAttribute("data-long", t.length * n.filter((e) => !e.group).length > r.tablelimit);
2338
- }, qn = (t, n) => {
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) => {
2339
2418
  let { plot: r, svg: i, rows: l, type: m, values: g, series: _, seriesValues: y, names: b, annotations: x } = t;
2340
- Kn(t, n);
2419
+ Yn(t, n);
2341
2420
  let S = getComputedStyle(t.figure);
2342
2421
  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());
2343
2422
  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;
@@ -2345,7 +2424,7 @@ var Xe = (e) => {
2345
2424
  r.style.margin = "", j && (j.style.marginLeft = "");
2346
2425
  let e = r.clientWidth;
2347
2426
  if (!e) return !1;
2348
- let i = m.segments?.(l) ?? [], a = t.stacked ? l.flatMap((e) => Object.values(Pe(e, _.length, m.running))) : i.some((e) => e.kind === "up" || e.kind === "down") ? i.flatMap((e) => [e.from, e.to]) : l.flatMap((e) => e.cells.slice(0, _.length).filter((e) => !e.missing).map((e) => e.value)), o = Math.min(0, -G(a.map((e) => -e))), s = Math.max(0, G(a)), c = Number.parseFloat(getComputedStyle(r).fontSize) || 16, { chartScaleY: u, chartScale: d } = t.figure.dataset, f = bt(u ?? d);
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);
2349
2428
  if (f && f.length > 2) M = {
2350
2429
  min: f[0],
2351
2430
  max: f[f.length - 1],
@@ -2362,15 +2441,15 @@ var Xe = (e) => {
2362
2441
  };
2363
2442
  }
2364
2443
  A.ticks.textContent = "";
2365
- let p = l.find((e) => !e.missing), h = G(M.ticks.map((e) => re(String(e))));
2444
+ let p = l.find((e) => !e.missing), h = W(M.ticks.map((e) => ie(String(e))));
2366
2445
  for (let e of M.ticks) {
2367
2446
  let t = L(E, A.ticks);
2368
- t.dataset.value = String(e), t.dataset.place = "none", p?.prefix && (t.dataset.prefix = p.prefix), p?.suffix && (t.dataset.suffix = p.suffix), Yn(t, h, n.locale);
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);
2369
2448
  }
2370
2449
  if (A.numbers) {
2371
2450
  let e = Array.from(A.ticks.children);
2372
2451
  for (let t of e) delete t.dataset.place;
2373
- me(e), k ? r.style.marginBottom = `${(e[0] ? J(e[0]).height : 0) + 6}px` : (r.style.marginLeft = `${G([0, ...e.map((e) => J(e).width)]) + 10}px`, j && (j.style.marginLeft = r.style.marginLeft));
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));
2374
2453
  }
2375
2454
  }
2376
2455
  let N = r.clientWidth;
@@ -2380,19 +2459,19 @@ var Xe = (e) => {
2380
2459
  let B = m.numbers === !1 ? g.slice(0, 1) : [...y.flat(), ...t.totals];
2381
2460
  for (let e of B) delete e.dataset.place, e.removeAttribute("data-left-out"), e.removeAttribute("data-cut");
2382
2461
  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");
2383
- let V = m.axes ? t.axes : null, H = [];
2462
+ let V = m.axes ? t.axes : null, ee = [];
2384
2463
  if (V) {
2385
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)];
2386
- H = i.map((t, n) => xt(a.length ? a.map((e) => e.cells[t].value) : [0, 1], Math.max(n ? z / I / (e * 4) : N / (e * 9), 4), u[n])), V.ticks.textContent = "", H.forEach((e, t) => {
2387
- let r = a[0]?.cells[i[t]], o = G(e.ticks.map((e) => re(String(e))));
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))));
2388
2467
  for (let i of e.ticks) {
2389
2468
  let e = L(E, V.ticks);
2390
- e.dataset.axis = t ? "y" : "x", e.dataset.value = String(i), r?.prefix && (e.dataset.prefix = r.prefix), r?.suffix && (e.dataset.suffix = r.suffix), Yn(e, o, n.locale);
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);
2391
2470
  }
2392
2471
  });
2393
2472
  }
2394
2473
  let te = V ? Array.from(V.ticks.children) : [];
2395
- me([
2474
+ he([
2396
2475
  ...y.flat(),
2397
2476
  ...t.totals,
2398
2477
  ...b,
@@ -2401,18 +2480,18 @@ var Xe = (e) => {
2401
2480
  ...V?.titles ?? [],
2402
2481
  ...te
2403
2482
  ]);
2404
- let W = (g[0] ? J(g[0]).height : 0) * I;
2483
+ let ne = (g[0] ? q(g[0]).height : 0) * I;
2405
2484
  m.numbers === !1 && g[0] && (g[0].dataset.place = "none");
2406
- let ne = x[0]?.badge ? J(x[0].badge).height * I : 0, K = Math.max(z, Vn(t.figure, I, "--tablechart-min-height", "200px") ?? 0, m.minHeight?.({
2407
- labelHeight: W,
2408
- nameHeight: Math.max(0, G(t.categories.map((e) => J(e).height))) * I,
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,
2409
2488
  unit: I,
2410
2489
  rows: l.length,
2411
2490
  series: _.length,
2412
2491
  stacked: t.stacked,
2413
- labels: Bn(t.figure, n, _.some((e) => e.chart))
2414
- }) ?? 0), ie = t.stacked ? l.map((e) => {
2415
- let t = Fe(e, _.length);
2492
+ labels: Un(t.figure, n, _.some((e) => e.chart))
2493
+ }) ?? 0), ae = t.stacked ? l.map((e) => {
2494
+ let t = Ie(e, _.length);
2416
2495
  return {
2417
2496
  ...e,
2418
2497
  value: t,
@@ -2421,120 +2500,121 @@ var Xe = (e) => {
2421
2500
  value: t
2422
2501
  } : e)
2423
2502
  };
2424
- }) : l, q = (m.segments ?? ((e) => e.map((e) => ({
2503
+ }) : l, K = (m.segments ?? ((e) => e.map((e) => ({
2425
2504
  ...e,
2426
2505
  from: 0,
2427
2506
  to: e.value,
2428
2507
  kind: "bar"
2429
- }))))(t.stacked ? ie.map((e) => ({
2508
+ }))))(t.stacked ? ae.map((e) => ({
2430
2509
  ...e,
2431
2510
  cells: [e.cells[0]]
2432
- })) : l), ae = {
2433
- labelHeight: W,
2434
- badgeHeight: ne,
2511
+ })) : l), oe = {
2512
+ labelHeight: ne,
2513
+ badgeHeight: re,
2435
2514
  hasAnnotations: x.length > 0,
2436
2515
  unit: I,
2437
2516
  series: _.length,
2438
2517
  focused: _.some((e) => e.focus),
2439
2518
  stacked: t.stacked
2440
- }, oe = Math.max(((e) => t.stacked ? e(l.map((e) => Pe(e, _.length, m.running).top)) : e([...q.flatMap((e) => [
2519
+ }, se = Math.max(((e) => t.stacked ? e(l.map((e) => Fe(e, _.length, m.running).top)) : e([...K.flatMap((e) => [
2441
2520
  e.from,
2442
2521
  e.to,
2443
2522
  e.value
2444
- ]), ...l.flatMap((e) => e.cells.slice(0, _.length).map((e) => e.value))]))(G), 0), se = q.some((e) => e.kind === "up" || e.kind === "down") ? q.flatMap((e) => [e.from, e.to]) : t.stacked ? l.map((e) => Pe(e, _.length, m.running).bottom) : l.flatMap((e) => e.cells.slice(0, _.length).map((e) => e.value)), ce = Math.min(-G(se.map((e) => -e)), 0), le = _.flatMap((e, t) => e.chart ? [t] : []), ue = l.some((e) => e.note) ? ne + 4 * I : 0, de = Math.max(m.headroom?.(ae) ?? W, le.length ? rt.headroom?.(ae) ?? 0 : 0) + ue, fe = 2 * I + (m.footroom?.(ae) ?? 0) + (ce < 0 ? W + 4 * I : 0), pe = K - de - fe, he = M ? Math.max(M.max, oe) : oe * 1.02, ge = M ? Math.min(M.min, ce) : ce * 1.02, _e = x.find((e) => e.spec.getAttribute("data-annotation") === "axis-break")?.spec, ve = (e) => {
2445
- let t = Number.parseFloat(_e?.getAttribute(e) ?? "");
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) => {
2524
+ let t = Number.parseFloat(ve?.getAttribute(e) ?? "");
2446
2525
  return Number.isFinite(t) ? t : null;
2447
- }, be = ve("data-from") ?? ve("data-at"), xe = ve("data-to"), Y = null;
2448
- if (_e && (be !== null || xe !== null)) {
2449
- let t = be ?? 0, n = xe ?? he, r = xe === null ? t : be === null ? n : (t + n) / 2, i = _e.getAttribute("data-size"), a = i?.match(/^\s*(\d+(?:\.\d+)?)\s*%\s*$/);
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*$/);
2450
2529
  i !== null && !a && console.warn(`[${e}] data-size="${i}" is not a percentage, such as 30%. Using the default.`);
2451
- let o = Math.min(Math.max(a ? Number(a[1]) / 100 : xe === null ? .22 : .3, .05), .8), s = q.filter((e) => (e.kind === "up" || e.kind === "down") && Math.max(e.from, e.to) > t && Math.min(e.from, e.to) < n);
2452
- m.breakable ? ce < 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 ${oe}.`) : s.length ? console.warn(`[${e}] A break from ${t} to ${n} would cut a step that floats. Keep it below or above the steps.`) : Y = {
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 = {
2453
2532
  lo: t,
2454
2533
  hi: n,
2455
2534
  gap: r,
2456
2535
  share: o
2457
2536
  } : console.warn(`[${e}] This kind of chart cannot break its scale.`);
2458
2537
  }
2459
- let we = Y ? Y.gap : null, Te = (Y && Vn(t.figure, I, "--tablechart-break-gap", "")) ?? 13, Ee = K - fe, De = he - ge || 1, Oe = (e) => Ee - (e - ge) / De * pe;
2460
- if (Y) {
2461
- let { lo: e, hi: t, gap: n, share: r } = Y, i = pe * r, a = (pe - i - Te) / (e + (he - t)), o = i / (t - e);
2462
- Oe = (r) => r <= e ? Ee - r * a : r <= n ? Ee - e * a - (r - e) * o : r <= t ? Ee - e * a - (r - e) * o - Te : Ee - e * a - i - Te - (r - t) * a;
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;
2463
2542
  }
2464
- let ke, Ae, je = [];
2543
+ let Ae, je, Me = [];
2465
2544
  if (V) {
2466
- let e = 6 * I, [t, n] = V.titles, r = (e) => e ? J(e).width * I : 0, i = (e) => e ? J(e).height * I : 0, a = te.filter((e) => e.dataset.axis === "x"), o = te.filter((e) => e.dataset.axis === "y"), s = i(te[0]), c = r(n) + G([0, ...o.map(r)]) + 2 * e, l = s / 2;
2467
- Ae = [
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 = [
2468
2547
  c,
2469
2548
  l,
2470
- O - c - G([0, ...a.map(r)]) / 2,
2471
- K - l - i(t) - s - 2 * e
2549
+ O - c - W([0, ...a.map(r)]) / 2,
2550
+ G - l - i(t) - s - 2 * e
2472
2551
  ];
2473
- let [u, d, f, p] = Ae, [m, h] = H, g = (e) => u + (e - m.min) / (m.max - m.min || 1) * f, _ = (e) => d + p - (e - h.min) / (h.max - h.min || 1) * p;
2474
- ke = g, Oe = _;
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 = _;
2475
2554
  let v = (e) => r(a.find((t) => Number(t.dataset.value) === e));
2476
- je = [St(m, (t) => t.every((n, r) => !r || g(n) - g(t[r - 1]) > (v(n) + v(t[r - 1])) / 2 + e)).ticks, St(h, (t) => t.every((n, r) => !r || _(t[r - 1]) - _(n) > s + e / 2)).ticks];
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];
2477
2556
  for (let t of te) {
2478
- let n = Number(t.dataset.value), r = t.dataset.axis === "x" ? 0 : 1, i = je[r].includes(n);
2479
- t.dataset.place = i ? r ? "before" : "below" : "none", i && R(t, r ? u - e : g(n), r ? _(n) : d + p + e, O, K);
2557
+ let n = Number(t.dataset.value), r = t.dataset.axis === "x" ? 0 : 1, i = Me[r].includes(n);
2558
+ t.dataset.place = i ? r ? "before" : "below" : "none", i && R(t, r ? u - e : g(n), r ? _(n) : d + p + e, O, G);
2480
2559
  }
2481
- t && R(t, u + f / 2, K - i(t), O, K), n && R(n, 0, d + p / 2, O, K);
2560
+ t && R(t, u + f / 2, G - i(t), O, G), n && R(n, 0, d + p / 2, O, G);
2482
2561
  }
2483
- let Me = b.length ? G(b.map((e) => J(e).width)) * I + 12 * I : 0, Ne = t.categories[0]?.parentElement;
2484
- Ne && (Ne.style.paddingRight = Me ? `${Me / O * 100}%` : "");
2485
- let Ie = (O - Me) / l.length, Le = (e) => (e + .5) * Ie, Re = (e) => e >= 0 && e < l.length ? e : null;
2486
- t.rowAt = m.centre ? null : m.categories === "beside" ? (e, t) => Re(Math.floor(t * I / (K / l.length))) : (e) => Re(Math.floor(e * I / Ie));
2487
- let ze = Ie / O * 100, Be = 100 / l.length;
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;
2488
2567
  if (t.rowBox = m.categories === "beside" ? (e) => [
2489
2568
  0,
2490
- e * Be,
2569
+ e * Ge,
2491
2570
  100,
2492
- Be
2571
+ Ge
2493
2572
  ] : (e) => [
2494
- e * ze,
2573
+ e * We,
2495
2574
  0,
2496
- ze,
2575
+ We,
2497
2576
  100
2498
- ], i.setAttribute("viewBox", `0 0 ${O} ${P(K)}`), i.textContent = "", Ae && ke) {
2499
- let [e, r, a, o] = Ae, [s, c] = je, l = ke;
2500
- On(t.figure, "data-chart-grid", n.grid) && i.appendChild(F("path", {
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", {
2501
2580
  class: D,
2502
- d: [...s.map((e) => `M${P(l(e))},${P(r)}V${P(r + o)}`), ...c.map((t) => `M${P(e)},${P(Oe(t))}H${P(e + a)}`)].join("")
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("")
2503
2582
  })), i.appendChild(F("path", {
2504
2583
  class: T,
2505
2584
  d: [
2506
2585
  `M${P(e)},${P(r)}V${P(r + o)}H${P(e + a)}`,
2507
2586
  ...s.map((e) => `M${P(l(e))},${P(r + o)}v${P(4 * I)}`),
2508
- ...c.map((t) => `M${P(e)},${P(Oe(t))}h${P(-4 * I)}`)
2587
+ ...c.map((t) => `M${P(e)},${P(ke(t))}h${P(-4 * I)}`)
2509
2588
  ].join("")
2510
2589
  }));
2511
2590
  }
2512
2591
  t.checks = [];
2513
- let Ve = {
2592
+ let Y = {
2514
2593
  rows: l,
2515
- segments: q,
2516
- cx: Le,
2517
- y: Oe,
2518
- x: ke,
2519
- frame: Ae,
2520
- length: (e, n) => Vn(t.figure, I, e, n),
2521
- barWidth: Math.min(Ie * n.barfill, Hn(t.figure, I)),
2522
- barMax: Hn(t.figure, I),
2523
- height: K,
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),
2602
+ height: G,
2524
2603
  unit: I,
2525
- labelHeight: W,
2526
- badgeHeight: ne,
2604
+ labelHeight: ne,
2605
+ badgeHeight: re,
2527
2606
  after: l.length,
2528
2607
  note: 0,
2529
- labels: Bn(t.figure, n, le.length > 0),
2530
- insideAlign: zn(t.figure),
2531
- breakAt: we,
2532
- squeeze: Y,
2533
- breakGap: Te,
2608
+ labels: Un(t.figure, n, ue.length > 0),
2609
+ insideAlign: Hn(t.figure),
2610
+ breakAt: Te,
2611
+ squeeze: J,
2612
+ breakGap: Ee,
2534
2613
  domain: M ? [M.min, M.max] : null,
2535
2614
  stacked: t.stacked,
2536
- shape: An(t.figure, n),
2537
- pick: Gn(t.figure, n),
2615
+ shape: Pe,
2616
+ pick: Ne,
2617
+ numbersAtEnd: Le,
2538
2618
  totals: t.totals,
2539
2619
  svg: i,
2540
2620
  plot: r,
@@ -2551,14 +2631,14 @@ var Xe = (e) => {
2551
2631
  lineHoles: []
2552
2632
  };
2553
2633
  r.style.setProperty("--count", String(Math.max(1, ...l.map((e) => e.slot + 1))));
2554
- let He = (e) => {
2634
+ let Ke = (e) => {
2555
2635
  let t = (t) => ({
2556
2636
  ...t,
2557
2637
  ...t.cells[e] ?? t.cells[0]
2558
2638
  });
2559
2639
  return {
2560
2640
  rows: l.map(t),
2561
- segments: q.map((e) => {
2641
+ segments: K.map((e) => {
2562
2642
  let n = t(e);
2563
2643
  return e.kind === "bar" ? {
2564
2644
  ...n,
@@ -2568,97 +2648,97 @@ var Xe = (e) => {
2568
2648
  values: y[e]
2569
2649
  };
2570
2650
  };
2571
- if (le.length) {
2651
+ if (ue.length) {
2572
2652
  let e = _.flatMap((e, t) => e.chart ? [] : [t]);
2573
2653
  m.draw({
2574
- ...Ve,
2654
+ ...Y,
2575
2655
  own: e,
2576
- ...e.length === 1 && He(e[0])
2656
+ ...e.length === 1 && Ke(e[0])
2577
2657
  }), rt.draw({
2578
- ...Ve,
2579
- own: le
2658
+ ...Y,
2659
+ own: ue
2580
2660
  });
2581
- } else m.draw(Ve);
2582
- Ve.rowAt && (t.rowAt = Ve.rowAt), t.pointOf = Ve.pointOf ?? null;
2583
- let Ue = Number(r.style.getPropertyValue("--count")) || l.length;
2584
- for (let e of t.figure.querySelectorAll(`.${f}`)) e.style.setProperty("--i", String(Math.min(l[l.length - 1].slot, Ue - 1)));
2585
- if (!t.stacked && !r.hasAttribute("data-grouped")) for (let e of y) Se(e, I, O), Ce(e, I, O, K);
2661
+ } else m.draw(Y);
2662
+ 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);
2586
2666
  if (A && M) {
2587
- let e = 6 * I, r = k && Ve.x ? Ve.x : Oe, a = Array.from(A.ticks.children), o = (e) => J(a.find((t) => Number(t.dataset.value) === e) ?? a[0]), s = St(M, (t) => t.every((n, i) => !i || (k ? r(n) - r(t[i - 1]) > (o(n).width + o(t[i - 1]).width) / 2 * I + e : r(t[i - 1]) - r(n) > o(n).height * I + e / 2))).ticks.filter((e) => !Y || e <= Y.lo || e >= Y.hi);
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);
2588
2668
  for (let t of a) {
2589
2669
  let n = Number(t.dataset.value), i = A.numbers && s.includes(n);
2590
- t.dataset.place = i ? k ? "below" : "before" : "none", i && R(t, k ? r(n) : -e, k ? K + e : r(n), O, K);
2670
+ t.dataset.place = i ? k ? "below" : "before" : "none", i && R(t, k ? r(n) : -e, k ? G + e : r(n), O, G);
2591
2671
  }
2592
- let c = O - Me;
2593
- On(t.figure, "data-chart-grid", n.grid) && i.prepend(F("path", {
2672
+ let c = O - ze;
2673
+ kn(t.figure, "data-chart-grid", n.grid) && i.prepend(F("path", {
2594
2674
  class: D,
2595
- d: s.map((e) => k ? `M${P(r(e))},0V${P(K)}` : `M0,${P(r(e))}H${P(c)}`).join("")
2675
+ d: s.map((e) => k ? `M${P(r(e))},0V${P(G)}` : `M0,${P(r(e))}H${P(c)}`).join("")
2596
2676
  })), A.numbers && i.appendChild(F("path", {
2597
2677
  class: T,
2598
- d: [k ? `M${P(r(M.min))},${P(K)}H${P(r(M.max))}` : `M0,${P(r(M.max))}V${P(r(M.min))}`, ...s.map((e) => k ? `M${P(r(e))},${P(K)}v${P(4 * I)}` : `M0,${P(r(e))}h${P(-4 * I)}`)].join("")
2678
+ d: [k ? `M${P(r(M.min))},${P(G)}H${P(r(M.max))}` : `M0,${P(r(M.max))}V${P(r(M.min))}`, ...s.map((e) => k ? `M${P(r(e))},${P(G)}v${P(4 * I)}` : `M0,${P(r(e))}h${P(-4 * I)}`)].join("")
2599
2679
  }));
2600
2680
  }
2601
2681
  for (let [e, n] of x.entries()) {
2602
2682
  n.badge?.setAttribute("data-note", String(e + 1));
2603
2683
  let i = n.series;
2604
2684
  n.type.draw(n.spec, n.badge, {
2605
- ...Ve,
2685
+ ...Y,
2606
2686
  ...t.stacked && {
2607
- rows: ie,
2687
+ rows: ae,
2608
2688
  ...t.totals.length && { values: t.totals }
2609
2689
  },
2610
- ...i > 0 && !t.stacked && He(i),
2690
+ ...i > 0 && !t.stacked && Ke(i),
2611
2691
  after: t.plan ? n.after : Math.min(n.after, Number(r.style.getPropertyValue("--count")) || n.after),
2612
2692
  note: e + 1
2613
2693
  });
2614
2694
  }
2615
- Ht(t);
2695
+ Ut(t);
2616
2696
  for (let e of t.figure.querySelectorAll(`.${p}`)) {
2617
2697
  let n = Array.from(e.children);
2618
2698
  if (t.plan) for (let e of n) e.style.getPropertyValue("--step") || e.style.setProperty("--i", "0");
2619
2699
  let r = n.map((e) => Number.parseFloat(e.style.getPropertyValue("--step")));
2620
2700
  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");
2621
2701
  }
2622
- let X = t.categories[0]?.parentElement;
2623
- if (X && m.categories !== "beside" && !m.centre) {
2624
- X.style.height = `${X.offsetHeight}px`, X.removeAttribute("data-thinned");
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");
2625
2705
  for (let e of t.categories) e.removeAttribute("data-left-out"), e.removeAttribute("data-edge");
2626
2706
  let e = t.categories.filter((e) => e.offsetParent !== null);
2627
- if (!ye(X, e, (e) => ({
2707
+ if (!be(Z, e, (e) => ({
2628
2708
  size: e.scrollWidth,
2629
2709
  room: e.clientWidth
2630
2710
  }), "--_name-fit") && e.length > 1) {
2631
- let t = getComputedStyle(X), n = (X.clientWidth - Number.parseFloat(t.paddingLeft) - Number.parseFloat(t.paddingRight)) / l.length;
2632
- X.style.setProperty("--_name-fit", "1"), X.setAttribute("data-thinned", "");
2633
- let r = G(e.map((e) => e.offsetWidth)), i = Math.max(Math.ceil((r + 8) / n), Math.ceil((1.5 * r + 8) / n - .5), 1);
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);
2634
2714
  e.forEach((e, t) => {
2635
2715
  t % i && e.setAttribute("data-left-out", "");
2636
2716
  });
2637
- 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());
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());
2638
2718
  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)) {
2639
2719
  s.setAttribute("data-edge", "end");
2640
2720
  let e = a.at(-2);
2641
2721
  e && e.getBoundingClientRect().right + 8 > s.getBoundingClientRect().left && s.setAttribute("data-left-out", "");
2642
2722
  }
2643
2723
  }
2644
- let r = (m === rt || m === it) && On(t.figure, "data-chart-ticks", n.ticks);
2645
- if (X.toggleAttribute("data-ticks", r), X.style.removeProperty("--_tick-reach"), r) {
2646
- let e = K - Number(i.querySelector(".tablechart-rule")?.getAttribute("y1") ?? K);
2647
- e > 0 && e < 10 * I && X.style.setProperty("--_tick-reach", `${P(e / I)}px`);
2648
- let n = X.getBoundingClientRect(), r = n.width / (X.offsetWidth || 1), a = getComputedStyle(X), o = Number.parseFloat(a.paddingLeft), s = (X.clientWidth - o - Number.parseFloat(a.paddingRight)) / l.length;
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) {
2726
+ 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;
2649
2729
  t.categories.forEach((e, t) => {
2650
2730
  if (e.hasAttribute("data-left-out")) e.style.removeProperty("--_tick");
2651
2731
  else {
2652
- let i = (e.getBoundingClientRect().left - n.left) / r - X.clientLeft;
2732
+ let i = (e.getBoundingClientRect().left - n.left) / r - Z.clientLeft;
2653
2733
  e.style.setProperty("--_tick", `${P(o + (t + .5) * s - i)}px`);
2654
2734
  }
2655
2735
  });
2656
2736
  }
2657
- X.style.height = "";
2737
+ Z.style.height = "";
2658
2738
  }
2659
- let We = x.flatMap(({ badge: e }) => {
2739
+ let qe = x.flatMap(({ badge: e }) => {
2660
2740
  if (!(e instanceof HTMLElement) || !e.offsetWidth) return [];
2661
- let t = e.offsetWidth * I, n = e.offsetHeight * I, r = Number.parseFloat(e.style.left) / 100 * O, i = Number.parseFloat(e.style.top) / 100 * K, a = getComputedStyle(e).borderTopLeftRadius, o = a.endsWith("%") ? Number.parseFloat(a) / 100 : null, s = (Number.parseFloat(a) || 0) * I;
2741
+ 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;
2662
2742
  return [F("rect", {
2663
2743
  class: h,
2664
2744
  "data-for": "badge",
@@ -2671,24 +2751,24 @@ var Xe = (e) => {
2671
2751
  ry: o === null ? s : n * o,
2672
2752
  style: ["--after", "--step"].map((t) => e.style.getPropertyValue(t) && `${t}:${e.style.getPropertyValue(t)}`).filter(Boolean).join("; ")
2673
2753
  })];
2674
- }), Ge = i.querySelector(`.${D}`), Z = Array.from(i.querySelectorAll(`.${o}`)), Ke = [...Ge ? [Ge] : [], ...i.querySelectorAll(`:scope > .${s}`)], qe = Un(r, I), Je = t.figure.getAttribute("data-animate") === "grow", Ye = y.flat().filter((e) => e.hasAttribute("data-cut")).flatMap(qe), Xe = [...le.flatMap((e) => y[e].flatMap(qe)), ...Je ? Ye : []];
2675
- if (Ke.length || Z.length) {
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) {
2676
2756
  let e = [
2677
2757
  ...y.flat(),
2678
2758
  ...t.totals,
2679
2759
  ...m.categories === "beside" ? t.categories : []
2680
- ].flatMap(qe), n = (e) => [
2760
+ ].flatMap(Ze), n = (e) => [
2681
2761
  "x",
2682
2762
  "y",
2683
2763
  "width",
2684
2764
  "height"
2685
2765
  ].map((t) => Number(e.getAttribute(t)));
2686
- for (let t of Z) Tn(t, [...e, ...We].map(n));
2687
- for (let t of Ke) {
2688
- let r = [...e, ...We], i = En(t);
2689
- t.setAttribute("d", i.map(([e, t, i, a]) => wn(e, t, i, a, r.map(n))).join(""));
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(""));
2690
2770
  for (let e of r) {
2691
- let r = Dn(i, n(e)), a = e.dataset.for === "badge" ? "badge" : "";
2771
+ let r = On(i, n(e)), a = e.dataset.for === "badge" ? "badge" : "";
2692
2772
  r && t.after(F("path", {
2693
2773
  class: t.getAttribute("class") ?? "tablechart-grid",
2694
2774
  "data-gap": a,
@@ -2698,57 +2778,57 @@ var Xe = (e) => {
2698
2778
  }
2699
2779
  }
2700
2780
  }
2701
- if (U(i, We, O, K, Array.from(i.querySelectorAll(`.${a}, .${c}`))), !Je && (Ve.lineHoles.length || Ye.length)) {
2781
+ if (H(i, qe, O, G, Array.from(i.querySelectorAll(`.${a}, .${c}`))), !Qe && (Y.lineHoles.length || $e.length)) {
2702
2782
  let e = Array.from(i.querySelectorAll(`.${u}`)).map((e) => {
2703
2783
  let t = F("g", {});
2704
2784
  return e.before(t), t.append(e), t;
2705
2785
  });
2706
- U(i, [...Ve.lineHoles, ...Ye], O, K, [...e, ...i.querySelectorAll(`.${d}`)]);
2786
+ H(i, [...Y.lineHoles, ...$e], O, G, [...e, ...i.querySelectorAll(`.${d}`)]);
2707
2787
  }
2708
- let Ze = [
2788
+ let tt = [
2709
2789
  o,
2710
2790
  s,
2711
2791
  a,
2712
2792
  c,
2713
2793
  D
2714
2794
  ];
2715
- ee(i, [...We, ...Xe], O, K, void 0, Ze.map((e) => `.${e}`).join(", ")), t.figure.hasAttribute("data-animate") && !t.figure.hasAttribute("data-steps") && !t.figure.classList.contains("is-shown") && er(i);
2716
- let Qe = (e) => e.dataset.missing !== void 0 || m.centre && l[Number(e.dataset.row) - 1]?.isTotal, $e = (e) => e.dataset.place !== "none" && !e.hasAttribute("data-left-out"), et = (e, t) => {
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) => {
2717
2797
  let n = Number(e.dataset.row);
2718
- return t.some((e) => $e(e) && Number(e.dataset.row) <= n && n <= Number(e.dataset.rowEnd ?? e.dataset.row));
2798
+ return t.some((e) => at(e) && Number(e.dataset.row) <= n && n <= Number(e.dataset.rowEnd ?? e.dataset.row));
2719
2799
  };
2720
- return t.figure.toggleAttribute("data-left-out", (m.columns ? [t.categories] : [...y, t.totals]).some((e) => e.some((t) => !Qe(t) && !$e(t) && !et(t, e)))), Mt(t.figure), Rt(t.figure), !0;
2721
- }, Jn = (e, t) => {
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) => {
2722
2802
  let n = [
2723
2803
  ...e.seriesValues.flat(),
2724
2804
  ...e.totals,
2725
2805
  ...e.totalCell ? [e.totalCell] : []
2726
2806
  ];
2727
- for (let r of e.centre ? [...n, e.centre] : n) r.dataset.missing === void 0 ? Yn(r, r.dataset.decimals ? Number(r.dataset.decimals) : e.decimals, t.locale) : r.textContent = r.dataset.missing;
2728
- }, Yn = (e, t, n) => {
2729
- let { prefix: r = "", suffix: i = "" } = e.dataset, [a, o] = ie(Number.parseFloat(e.dataset.value || "0"), t, n);
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);
2730
2810
  if (e.textContent = r + (r ? a : "") + o + i, a && !r) {
2731
2811
  let t = document.createElement("span");
2732
2812
  t.className = "tablechart-minus", t.textContent = a, e.prepend(t);
2733
2813
  }
2734
- }, Xn = (e) => {
2735
- _n(e), e.plot.remove(), e.categories[0]?.parentElement?.remove(), e.figure.querySelector(`:scope > .${p}`)?.remove(), e.controls?.remove();
2736
- }, Zn = (e, t, n = !1) => {
2737
- !t && !e.figure.hasAttribute("data-steps") && er(e.svg), e.figure.classList.remove(C), n ? (e.figure.classList.add(S), e.figure.classList.toggle(b, t), e.figure.offsetWidth, t && tr(e.svg), e.figure.classList.toggle(C, t), requestAnimationFrame(() => e.figure.classList.remove(S))) : (e.figure.classList.toggle(b, t), t && requestAnimationFrame(() => requestAnimationFrame(() => {
2738
- $n(e.figure, e.svg), Qn(e.figure);
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);
2739
2819
  })));
2740
- }, Qn = (e) => {
2820
+ }, tr = (e) => {
2741
2821
  let t = e.getAnimations({ subtree: !0 }).map((e) => e.finished.catch(() => void 0));
2742
2822
  Promise.all(t).then(() => {
2743
2823
  e.classList.contains("is-shown") && e.classList.add(C);
2744
2824
  });
2745
- }, $n = (e, t) => {
2746
- e.classList.contains("is-shown") && Array.from(t.querySelectorAll("[data-mask]")).every((e) => !e.getAnimations({ subtree: !0 }).length) && tr(t);
2747
- }, er = (e) => {
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) => {
2748
2828
  for (let t of e.querySelectorAll("[mask^=\"url(#tablechart-cut-\"]")) t.dataset.mask = t.getAttribute("mask") ?? "", t.removeAttribute("mask");
2749
- }, tr = (e) => {
2829
+ }, ir = (e) => {
2750
2830
  for (let t of e.querySelectorAll("[data-mask]")) t.setAttribute("mask", t.dataset.mask ?? ""), t.removeAttribute("data-mask");
2751
- }, nr = {
2831
+ }, ar = {
2752
2832
  2: {
2753
2833
  part: 3,
2754
2834
  text: 4.5,
@@ -2767,8 +2847,8 @@ var Xe = (e) => {
2767
2847
  partRule: "APCA, WCAG 3 draft",
2768
2848
  textRule: "APCA, WCAG 3 draft"
2769
2849
  }
2770
- }, rr = (t) => {
2771
- let n = Nt(t), r = nr[Et(t)], i = Array.from(t.querySelectorAll("table thead tr:first-child > *")).map((e) => (e.textContent ?? "").trim()), a = Array.from(t.querySelectorAll("tbody tr > :first-child")).map((e) => (e.textContent ?? "").trim()), o = [
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 = [
2772
2852
  [
2773
2853
  ".tablechart-series",
2774
2854
  "Line",
@@ -2808,30 +2888,46 @@ var Xe = (e) => {
2808
2888
  let s = Array.from(a).filter(Boolean).map((e) => `"${e}"`), l = s.join(", "), u = s.length > 1, d = n === "Line" ? i ? `Line "${i}" has` : "The line has" : n === "Slice" ? `${u ? "Slices" : "Slice"} ${l} ${u ? "have" : "has"}` : a.size >= o || !l ? `The bars${i ? ` of column "${i}"` : ""} have` : `${u ? "Bars" : "Bar"} ${l}${i ? ` in column "${i}"` : ""} ${u ? "have" : "has"}`;
2809
2889
  console.warn(`[${e}] ${d} a contrast of ${r.show(c)} with the background. It needs at least ${r.need(r.part)} (${r.partRule}).`, t);
2810
2890
  }
2811
- }, ir = (t) => {
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) => {
2812
2892
  let n = 0, r = () => {
2813
- let r = Array.from(t.querySelectorAll(".tablechart-value[data-place='inside'], .tablechart-value[data-place='middle']")).filter((e) => !e.hasAttribute("data-left-out") && !e.hidden);
2814
- if (r.some((e) => wt(getComputedStyle(e).color)[3] < 1)) {
2815
- ++n <= 20 && setTimeout(i, 500);
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)) {
2895
+ n++, setTimeout(i, 500);
2816
2896
  return;
2817
2897
  }
2818
- let a = Array.from(t.querySelectorAll("tbody tr > :first-child")).map((e) => (e.textContent ?? "").trim()), o = nr[Et(t)], s = t.dataset.chart === "bar" ? "bar" : "column", c = /* @__PURE__ */ new Map();
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();
2819
2899
  for (let e of r) {
2820
2900
  let n = Pt(t, e);
2821
2901
  if (!n) continue;
2822
- let r = getComputedStyle(e), i = getComputedStyle(n).fill, l = kt(Et(t), wt(r.color), wt(i)), u = Number.parseFloat(r.fontSize), d = u >= 24 || u >= 18.66 && Number(r.fontWeight) >= 700 ? o.large : o.text;
2823
- if (l >= d) continue;
2824
- let f = n.classList.contains("tablechart-piece") ? `${s} part` : s, p = `${r.color}|${i}`, m = c.get(p) ?? {
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;
2903
+ if (a >= d) continue;
2904
+ let f = n.classList.contains("tablechart-piece") ? `${c} part` : c, p = `${r.color}|${i}`, m = l.get(p) ?? {
2825
2905
  what: f,
2826
2906
  names: [],
2827
- contrast: l,
2907
+ contrast: a,
2828
2908
  needed: d
2829
2909
  };
2830
- m.names.push(`"${a[Number(e.dataset.row) - 1] ?? ""}" ("${e.textContent?.trim()}")`), c.set(p, m);
2910
+ m.names.push(`"${o[Number(e.dataset.row) - 1] ?? ""}" ("${e.textContent?.trim()}")`), l.set(p, m);
2911
+ }
2912
+ let u = Nt(t), d = /* @__PURE__ */ new Map();
2913
+ for (let e of a) {
2914
+ let n = getComputedStyle(e), [r, i, a, o] = wt(n.color), c = [
2915
+ r,
2916
+ i,
2917
+ 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;
2919
+ if (l >= p) continue;
2920
+ let m = d.get(n.color) ?? {
2921
+ names: [],
2922
+ contrast: l,
2923
+ needed: p
2924
+ };
2925
+ m.names.push(`"${e.textContent?.trim()}"`), d.set(n.color, m);
2831
2926
  }
2832
- for (let { what: n, names: r, contrast: i, needed: a } of c.values()) {
2833
- let s = r.length > 1;
2834
- console.warn(`[${e}] The text inside the ${n}${s ? "s" : ""} of ${r.join(", ")} has a contrast of ${o.show(i)} with ${s ? "those" : "that"} ${n}${s ? "s" : ""}. Text needs at least ${o.need(a)} (${o.textRule}).`, t);
2927
+ for (let { names: n, contrast: r, needed: i } of d.values()) console.warn(`[${e}] The text ${n.join(", ")} has a contrast of ${s.show(r)} with the background. Text needs at least ${s.need(i)} (${s.textRule}).`, t);
2928
+ for (let { what: n, names: r, contrast: i, needed: a } of l.values()) {
2929
+ let o = r.length > 1;
2930
+ console.warn(`[${e}] The text inside the ${n}${o ? "s" : ""} of ${r.join(", ")} has a contrast of ${s.show(i)} with ${o ? "those" : "that"} ${n}${o ? "s" : ""}. Text needs at least ${s.need(a)} (${s.textRule}).`, t);
2835
2931
  }
2836
2932
  }, i = () => requestAnimationFrame(() => requestAnimationFrame(() => {
2837
2933
  let e = t.getAnimations({ subtree: !0 }).map((e) => e.finished.catch(() => void 0));
@@ -2845,34 +2941,34 @@ var Xe = (e) => {
2845
2941
  attributes: !0,
2846
2942
  attributeFilter: ["class"]
2847
2943
  });
2848
- }, ar = [
2944
+ }, lr = [
2849
2945
  "bar",
2850
2946
  "piece",
2851
2947
  "up",
2852
2948
  "down",
2853
2949
  "total"
2854
- ].map((e) => `--tablechart-${e}-value-color`), or = /* @__PURE__ */ new Set(), sr = (t) => {
2950
+ ].map((e) => `--tablechart-${e}-value-color`), ur = /* @__PURE__ */ new Set(), dr = (t) => {
2855
2951
  let n = getComputedStyle(t);
2856
- for (let r of ar) !or.has(r) && n.getPropertyValue(r).trim() && (or.add(r), console.warn(`[${e}] ${r} is old and goes in 1.3.0. --tablechart-value-on-dark and --tablechart-value-on-light set the colour of the numbers inside bars, with a contrast check.`, t));
2857
- }, cr = (e) => e === "id" || e === "style" || e.startsWith("data-chart"), lr = /^\s*(?:Table)?:\s+/, ur = (e) => e?.tagName === "P" && lr.test(e.textContent ?? ""), dr = (e) => {
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) => {
2858
2954
  let t = document.createElement("figcaption");
2859
2955
  for (let { name: n, value: r } of Array.from(e.attributes)) t.setAttribute(n, r);
2860
2956
  let n = e.firstChild;
2861
- n?.nodeType === Node.TEXT_NODE && (n.textContent = (n.textContent ?? "").replace(lr, ""), n.textContent || n.remove());
2957
+ n?.nodeType === Node.TEXT_NODE && (n.textContent = (n.textContent ?? "").replace(pr, ""), n.textContent || n.remove());
2862
2958
  let r = Array.from(e.childNodes), i = r.findIndex((e) => e.nodeName === "BR");
2863
2959
  if (t.append(...i === -1 ? r : r.slice(0, i + 1)), i !== -1 && i < r.length - 1) {
2864
2960
  let e = document.createElement("span");
2865
2961
  e.append(...r.slice(i + 1)), t.append(e);
2866
2962
  }
2867
2963
  return e.remove(), t;
2868
- }, fr = /^\s*([a-z][\w-]*)((?:\s+[\w-]+=[^\s:]+)*)\s*(:\s*|$)/, pr = (e) => {
2869
- let t = xr(e);
2964
+ }, gr = /^\s*([a-z][\w-]*)((?:\s+[\w-]+=[^\s:]+)*)\s*(:\s*|$)/, _r = (e) => {
2965
+ let t = Tr(e);
2870
2966
  return t?.tagName === "P" ? t : e;
2871
- }, mr = (e) => {
2872
- let t = pr(e).firstChild;
2967
+ }, vr = (e) => {
2968
+ let t = _r(e).firstChild;
2873
2969
  if (t?.nodeType !== Node.TEXT_NODE) return null;
2874
- let n = fr.exec(t.textContent ?? "");
2875
- if (!n || !xn.includes(n[1]) || !n[3] && t.nextSibling) return null;
2970
+ let n = gr.exec(t.textContent ?? "");
2971
+ if (!n || !Sn.includes(n[1]) || !n[3] && t.nextSibling) return null;
2876
2972
  let r = n[2].trim().split(/\s+/).filter(Boolean).map((e) => e.split("="));
2877
2973
  return {
2878
2974
  name: n[1],
@@ -2880,11 +2976,11 @@ var Xe = (e) => {
2880
2976
  text: t,
2881
2977
  length: n[0].length
2882
2978
  };
2883
- }, hr = (e) => {
2979
+ }, yr = (e) => {
2884
2980
  if (e?.tagName !== "UL" && e?.tagName !== "OL") return null;
2885
- let t = Array.from(e.children), n = t.map((e) => e.hasAttribute("data-annotation") ? null : mr(e));
2981
+ let t = Array.from(e.children), n = t.map((e) => e.hasAttribute("data-annotation") ? null : vr(e));
2886
2982
  return !t.length || t.some((e, t) => !n[t] && !e.hasAttribute("data-annotation")) ? null : (t.forEach((e, t) => {
2887
- let r = n[t], i = pr(e);
2983
+ let r = n[t], i = _r(e);
2888
2984
  if (i !== e && i.replaceWith(...i.childNodes), r) {
2889
2985
  e.setAttribute("data-annotation", r.name);
2890
2986
  for (let [t, n] of r.options) e.setAttribute(`data-${t}`, n);
@@ -2895,18 +2991,18 @@ var Xe = (e) => {
2895
2991
  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));
2896
2992
  });
2897
2993
  }), e.classList.add("chart-annotations"), e);
2898
- }, gr = (e, t) => {
2899
- for (let { name: n, value: r } of Array.from(e.attributes)) (n === "class" || cr(n)) && (t.setAttribute(n, r), e.removeAttribute(n));
2900
- }, _r = (e) => e.map((e) => {
2901
- let t = e.closest("p"), n = ur(t) ? t : e;
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;
2902
2998
  if (n.tagName !== "TABLE" && n.tagName !== "P") return n;
2903
2999
  let r = document.createElement("figure");
2904
- gr(e, r), e.classList.length || e.removeAttribute("class");
2905
- let i = n.tagName === "TABLE" ? n : null, a = n.previousElementSibling, o = n.nextElementSibling, s = i ? ur(a) ? a : ur(o) ? o : null : n;
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;
2906
3002
  i && s === o && (o = o?.nextElementSibling ?? null);
2907
- let c = o?.classList.contains("chart-annotations") ? o : hr(o);
2908
- return n.replaceWith(r), s && r.append(dr(s)), i && r.append(i), c && r.append(c), Q?.log?.(`A ${i ? "table" : "caption"} with chart attributes was wrapped in a figure of its own`), r;
2909
- }), vr = (e, t, n, r = document.createElement("table"), i = "Note") => {
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") => {
2910
3006
  for (let e of r.querySelectorAll(":scope > tbody, :scope > tfoot, :scope > tr")) e.remove();
2911
3007
  let a = e.some((e) => e.note);
2912
3008
  if (!r.tHead && (t.length || n || a)) {
@@ -2935,7 +3031,7 @@ var Xe = (e) => {
2935
3031
  n.dataset.note = "", n.textContent = i, s.append(n);
2936
3032
  }
2937
3033
  return r;
2938
- }, yr = (e) => {
3034
+ }, Cr = (e) => {
2939
3035
  if (!e || typeof e != "object") return;
2940
3036
  let t = Object.entries(e), n = (e) => e === null || typeof e == "string" || typeof e == "number";
2941
3037
  if (t.length && t.every(([, e]) => n(e) || Array.isArray(e) && e.every(n))) return t.map(([e, t]) => Array.isArray(t) ? {
@@ -2945,16 +3041,16 @@ var Xe = (e) => {
2945
3041
  label: e,
2946
3042
  value: t
2947
3043
  });
2948
- }, br = async (t) => {
3044
+ }, wr = async (t) => {
2949
3045
  await Promise.all(t.filter((e) => e.hasAttribute("data-chart-src")).map(async (t) => {
2950
3046
  let n = t.getAttribute("data-chart-src"), r = Array.from(t.querySelectorAll("table")).find((e) => e.tHead) ?? null;
2951
3047
  for (let e of t.querySelectorAll("table")) e !== r && e.remove();
2952
3048
  try {
2953
3049
  let e = await fetch(n);
2954
3050
  if (!e.ok) throw Error(`${e.status} ${e.statusText}`);
2955
- let i = await e.json(), a = Array.isArray(i) ? i : i?.rows ? Array.isArray(i.rows) ? i.rows : yr(i.rows) : yr(i);
3051
+ let i = await e.json(), a = Array.isArray(i) ? i : i?.rows ? Array.isArray(i.rows) ? i.rows : Cr(i.rows) : Cr(i);
2956
3052
  if (!Array.isArray(a)) throw Error("no rows in it: a list of rows, an object with rows, or names with their values");
2957
- let o = vr(a, Array.isArray(i?.series) ? i.series.map(String) : [], typeof i?.label == "string" ? i.label : "", r ?? void 0, typeof i?.note == "string" ? i.note : void 0);
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);
2958
3054
  if (!r) {
2959
3055
  let e = t.querySelector(":scope > figcaption");
2960
3056
  e ? e.after(o) : t.prepend(o);
@@ -2965,10 +3061,10 @@ var Xe = (e) => {
2965
3061
  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." : ""));
2966
3062
  }
2967
3063
  }));
2968
- }, xr = (e) => {
3064
+ }, Tr = (e) => {
2969
3065
  let t = Array.from(e.childNodes).filter((e) => e.nodeType === Node.ELEMENT_NODE || e.nodeType === Node.TEXT_NODE && e.textContent?.trim());
2970
3066
  return t.length === 1 && t[0] instanceof HTMLElement ? t[0] : null;
2971
- }, Sr = "strong, b, span.total", Cr = (e) => {
3067
+ }, Er = "strong, b, span.total", Dr = (e) => {
2972
3068
  for (let t of e) {
2973
3069
  for (let e of t.querySelectorAll("tbody tr")) {
2974
3070
  let t = e.cells[0];
@@ -2976,16 +3072,16 @@ var Xe = (e) => {
2976
3072
  let n = document.createElement("th");
2977
3073
  for (let { name: e, value: r } of Array.from(t.attributes)) n.setAttribute(e, r);
2978
3074
  n.append(...t.childNodes), t.replaceWith(n);
2979
- for (let t = xr(n); t?.matches(Sr); t = xr(n)) e.dataset.kind = "total", t.replaceWith(...t.childNodes);
3075
+ for (let t = Tr(n); t?.matches(Er); t = Tr(n)) e.dataset.kind = "total", t.replaceWith(...t.childNodes);
2980
3076
  }
2981
3077
  let e = Array.from(t.querySelector("thead tr:last-child")?.children ?? []);
2982
- for (let t of e.slice(1)) for (let e = xr(t); e?.matches(Sr); e = xr(t)) t.setAttribute("data-kind", "focus"), e.replaceWith(...e.childNodes);
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);
2983
3079
  }
2984
- }, wr = "data-chart-made", Tr = () => window.matchMedia("(prefers-reduced-motion: reduce)").matches, Er = (e) => new Promise((t) => setTimeout(t, e)), Dr = (e, t) => {
3080
+ }, Or = "data-chart-made", kr = () => window.matchMedia("(prefers-reduced-motion: reduce)").matches, Ar = (e) => new Promise((t) => setTimeout(t, e)), jr = (e, t) => {
2985
3081
  let n = Number.parseFloat(e.dataset.chartEntrance ?? ""), r = Number.isFinite(n) ? n : t.entrance;
2986
3082
  return Math.min(Math.max(r, 0), 1);
2987
- }, Or = async (e, t) => {
2988
- if (Tr()) return;
3083
+ }, Mr = async (e, t) => {
3084
+ if (kr()) return;
2989
3085
  await new Promise(requestAnimationFrame);
2990
3086
  let n = e.getAnimations().filter((e) => e instanceof CSSAnimation);
2991
3087
  for (let t = e.parentElement; t && t !== document.body; t = t.parentElement) n.push(...t.getAnimations());
@@ -2996,11 +3092,11 @@ var Xe = (e) => {
2996
3092
  let a = Number(n.delay ?? 0) + i * t;
2997
3093
  r = Math.max(r, a - Number(e.currentTime ?? 0));
2998
3094
  }
2999
- r > 0 && await Er(r);
3000
- }, kr = (e) => {
3095
+ r > 0 && await Ar(r);
3096
+ }, Nr = (e) => {
3001
3097
  for (let t = e; t && t !== document.body; t = t.parentElement) if (getComputedStyle(t).opacity === "0") return t;
3002
3098
  return null;
3003
- }, Ar = (e) => new Promise((t) => {
3099
+ }, Pr = (e) => new Promise((t) => {
3004
3100
  let n = ["animationstart", "transitionrun"], r = () => {
3005
3101
  for (let e of n) document.removeEventListener(e, i, !0);
3006
3102
  a.disconnect(), t();
@@ -3014,60 +3110,60 @@ var Xe = (e) => {
3014
3110
  attributes: !0,
3015
3111
  attributeFilter: ["class", "style"]
3016
3112
  });
3017
- }), jr = /* @__PURE__ */ new Set(), Mr = null, Nr = (e) => {
3018
- jr.add(e), !Mr && (Mr = new MutationObserver(() => {
3019
- for (let e of jr) e.relabel();
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();
3020
3116
  requestAnimationFrame(() => requestAnimationFrame(() => {
3021
- for (let e of jr) e.refresh();
3117
+ for (let e of Fr) e.refresh();
3022
3118
  }));
3023
- }), Mr.observe(document.documentElement, {
3119
+ }), Ir.observe(document.documentElement, {
3024
3120
  attributes: !0,
3025
3121
  attributeFilter: ["lang"]
3026
3122
  }));
3027
- }, Pr = (e) => {
3028
- jr.delete(e), !jr.size && Mr && (Mr.disconnect(), Mr = null);
3029
- }, Fr = ["column", "bar"], Ir = (e) => {
3123
+ }, Rr = (e) => {
3124
+ Fr.delete(e), !Fr.size && Ir && (Ir.disconnect(), Ir = null);
3125
+ }, zr = ["column", "bar"], Br = (e) => {
3030
3126
  let t = e.getAttribute("data-chart") || "column";
3031
- if (!Fr.includes(t)) return null;
3127
+ if (!zr.includes(t)) return null;
3032
3128
  let n = getComputedStyle(e).getPropertyValue("--tablechart-type").trim();
3033
- return Fr.includes(n) ? n : t;
3034
- }, Lr = (e, t) => {
3035
- let n = e, r = Ir(n.figure), i = null, a = !1, o = !1, s = !1, c = async () => {
3036
- if (!kn(n.figure, t)) return Zn(n, !0);
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);
3037
3133
  let e = n.figure.classList.contains("is-shown");
3038
3134
  if (o && i !== null && !e && !s) {
3039
3135
  s = !0;
3040
- let e = Tr() ? null : kr(n.figure);
3041
- e && await Ar(e), await Or(n.figure, Dr(n.figure, t)), s = !1, (o || !t.replay) && Zn(n, !0);
3042
- } else !o && t.replay && e && Zn(n, !1);
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);
3043
3139
  }, l = () => {
3044
- let e = Ir(n.figure);
3140
+ let e = Br(n.figure);
3045
3141
  if (!e || e === r) return;
3046
- let a = Q.timed("Building", n.figure, () => Fn(n.figure, t, e));
3047
- a && (Xn(n), Ut(a, n.step, !0), n = a, r = e, i = null);
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);
3048
3144
  }, u = () => {
3049
3145
  l();
3050
3146
  let e = n.plot.clientWidth;
3051
- e && e !== i && Q.timed("Layout", n.figure, () => qn(n, t)) && (a || (a = !0, rr(n.figure), ir(n.figure), sr(n.figure)), i = e, c());
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());
3052
3148
  }, d = !1, f = new ResizeObserver(() => {
3053
3149
  u(), f.unobserve(n.figure), requestAnimationFrame(() => d || f.observe(n.figure));
3054
3150
  }), p = new IntersectionObserver((e) => {
3055
3151
  for (let t of e) o = t.isIntersecting, c();
3056
3152
  }, { threshold: t.threshold }), m = () => {
3057
- n.figure.classList.add(x), Zn(n, !0), tr(n.svg), n.figure.offsetWidth;
3153
+ n.figure.classList.add(x), er(n, !0), ir(n.svg), n.figure.offsetWidth;
3058
3154
  }, h = () => n.figure.classList.remove(x), g = () => {
3059
3155
  i = null, u();
3060
3156
  }, _ = {
3061
- relabel: () => Jn(n, t),
3157
+ relabel: () => Zn(n, t),
3062
3158
  refresh: g
3063
3159
  };
3064
- l(), u(), f.observe(n.figure), p.observe(n.figure), window.addEventListener("beforeprint", m), window.addEventListener("afterprint", h), Nr(_);
3160
+ l(), u(), f.observe(n.figure), p.observe(n.figure), window.addEventListener("beforeprint", m), window.addEventListener("afterprint", h), Lr(_);
3065
3161
  let v = {
3066
3162
  figure: n.figure,
3067
3163
  refresh: g,
3068
- next: () => Ut(n, n.step + 1),
3069
- previous: () => Ut(n, n.step - 1),
3070
- stepTo: (e) => Ut(n, e),
3164
+ next: () => Wt(n, n.step + 1),
3165
+ previous: () => Wt(n, n.step - 1),
3166
+ stepTo: (e) => Wt(n, e),
3071
3167
  get step() {
3072
3168
  return n.step;
3073
3169
  },
@@ -3075,41 +3171,52 @@ var Xe = (e) => {
3075
3171
  return n.plan?.count ?? 0;
3076
3172
  },
3077
3173
  destroy() {
3078
- d = !0, f.disconnect(), p.disconnect(), window.removeEventListener("beforeprint", m), window.removeEventListener("afterprint", h), Pr(_), _n(n), n.figure.tablechart === v && delete n.figure.tablechart;
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;
3079
3175
  }
3080
3176
  };
3081
3177
  return n.figure.tablechart = v, v;
3082
- }, Rr = !1, zr = (t) => {
3178
+ }, Hr = !1, Ur = (t) => {
3083
3179
  let n = t.find((e) => e.tagName !== "FIGURE");
3084
- !Rr && n && (Rr = !0, console.warn(`[${e}] A chart is a <${n.tagName.toLowerCase()}>. Use a <figure> with a <figcaption>, so the chart has a title, also for screen readers.`, n));
3085
- }, Br = async (e, t) => {
3086
- let n = _r(e.filter((e) => !e.hasAttribute(wr) && e.tagName !== "TH"));
3087
- zr(n), await br(n), Cr(n), ht(n, t.langattribute);
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);
3088
3184
  for (let e of n) e.dispatchEvent(new CustomEvent("tablechart:table", { bubbles: !0 }));
3089
3185
  return n;
3090
- }, Vr = (e, t) => {
3091
- let n = Q.timed("Building", e, () => Fn(e, t));
3092
- return n ? (e.setAttribute(wr, ""), Ur(), Lr(n, t)) : null;
3093
- }, Hr = !1, Ur = () => {
3094
- Hr || typeof matchMedia != "function" || (Hr = !0, matchMedia("(prefers-color-scheme: dark)").addEventListener("change", () => {
3095
- for (let e of document.querySelectorAll(`[${wr}]`)) Mt(e), Rt(e);
3096
- }));
3097
- }, Wr = async (e, t = {}) => {
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;
3192
+ 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));
3196
+ }
3197
+ };
3198
+ matchMedia("(prefers-color-scheme: dark)").addEventListener("change", e);
3199
+ let t = new MutationObserver(e);
3200
+ for (let e of [document.documentElement, document.body]) t.observe(e, { attributes: !0 });
3201
+ document.addEventListener("transitionend", (t) => {
3202
+ (t.target === document.documentElement || t.target === document.body) && e();
3203
+ });
3204
+ }, Yr = async (e, t = {}) => {
3098
3205
  if (e.tablechart) return e.tablechart;
3099
3206
  let n = {
3100
3207
  ...k,
3101
3208
  ...t
3102
3209
  };
3103
3210
  n.debug && (Q.enabled = !0);
3104
- let [r] = await Br([e], n);
3105
- return r ? Vr(r, n) : null;
3106
- }, Gr = async (e = {}, t = document) => {
3211
+ let [r] = await Wr([e], n);
3212
+ return r ? Gr(r, n) : null;
3213
+ }, Xr = async (e = {}, t = document) => {
3107
3214
  let n = {
3108
3215
  ...k,
3109
3216
  ...e
3110
3217
  };
3111
3218
  n.debug && (Q.enabled = !0);
3112
- let r = (await Br(Array.from(t.querySelectorAll(n.selector)), n)).map((e) => Vr(e, n)).filter((e) => e !== null);
3219
+ let r = (await Wr(Array.from(t.querySelectorAll(n.selector)), n)).map((e) => Gr(e, n)).filter((e) => e !== null);
3113
3220
  return Q.log(`Made ${r.length} chart(s).`), {
3114
3221
  charts: r,
3115
3222
  refresh: () => {
@@ -3120,4 +3227,4 @@ var Xe = (e) => {
3120
3227
  }
3121
3228
  };
3122
3229
  };
3123
- export { L as A, t as B, Y as C, re as D, ue as E, D as F, b as G, x as H, p as I, O as K, e as L, P as M, F as N, G as O, S as P, f as R, Ge as S, fe as T, s as U, m as V, w as W, ht as _, _r as a, $e as b, rr as c, Fn as d, qn as f, Ut as g, Xn as h, Br as i, R as j, ie as k, ir as l, Zn as m, Dr as n, br as o, Jn as p, k as q, Gr as r, Cr as s, Wr as t, yn as u, mt as v, J as w, et as x, dt as y, v as z };
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 };