@martinomagnifico/tablechart 1.2.3 → 1.2.5

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