@martinomagnifico/tablechart 1.1.2 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
- //#region src/js/config.ts
2
- var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablechart-bar", i = "tablechart-rule", a = "tablechart-line", o = "tablechart-reference", s = "tablechart-head", c = "tablechart-slice", l = "tablechart-name", u = "tablechart-legend", d = "tablechart-point", f = "tablechart-hole", p = "tablechart-centre", m = "tablechart-break", h = "is-placed", g = "tablechart-sr", _ = "is-shown", v = "is-printing", y = "tablechart-queued", b = "tablechart-axis", x = "tablechart-tick", S = "tablechart-grid", C = 1e3, w = {
1
+ // src/js/config.ts
2
+ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablechart-bar", i = "tablechart-rule", a = "tablechart-line", o = "tablechart-reference", s = "tablechart-head", c = "tablechart-slice", l = "tablechart-name", u = "tablechart-legend", d = "tablechart-point", f = "tablechart-hole", p = "tablechart-centre", m = "tablechart-break", h = "is-placed", g = "tablechart-sr", _ = "is-shown", v = "is-printing", y = "is-at-once", b = "tablechart-queued", x = "tablechart-axis", S = "tablechart-tick", C = "tablechart-grid", w = 1e3, T = {
3
3
  selector: "[data-chart]",
4
4
  aspect: .38,
5
5
  barfill: .58,
@@ -23,29 +23,53 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
23
23
  threshold: .5,
24
24
  replay: !1,
25
25
  langattribute: "data-i18n"
26
- }, T = "cubic-bezier(0.3, 0.3, 0.6, 1)", E = (e, t, n = 1) => ({
26
+ }, E = "cubic-bezier(0.3, 0.3, 0.6, 1)", D = (e, t, n = 1) => ({
27
27
  start: e,
28
28
  span: t,
29
- easing: e + t >= n - 1e-4 ? T : "linear"
30
- }), D = (e, t) => `${e}:${t}`, O = "http://www.w3.org/2000/svg", k = (e) => Math.round(e * 100) / 100, A = (e, t = {}) => {
31
- let n = document.createElementNS(O, e);
29
+ easing: e + t >= n - 1e-4 ? E : "linear"
30
+ }), O = (e, t) => `${e}:${t}`, k = "http://www.w3.org/2000/svg", A = (e) => Math.round(e * 100) / 100, j = (e, t = {}) => {
31
+ let n = document.createElementNS(k, e);
32
32
  for (let e in t) {
33
33
  let r = t[e];
34
- n.setAttribute(e, String(typeof r == "number" ? k(r) : r));
34
+ n.setAttribute(e, String(typeof r == "number" ? A(r) : r));
35
35
  }
36
36
  return n;
37
- }, j = (e, t) => [e, ...t.classes].join(" "), M = (e, t) => {
37
+ }, M = (e, t) => [e, ...t.classes].join(" "), N = (e, t) => {
38
38
  let n = document.createElement("span");
39
39
  return n.className = e, n.inert = !0, t.appendChild(n), n;
40
- }, N = (e, t, n, r, i) => {
40
+ }, P = (e, t, n, r, i) => {
41
41
  e.style.left = `${t / r * 100}%`, e.style.top = `${n / i * 100}%`;
42
- }, P = 0, ee = (e, t, n, r, i, a) => {
42
+ }, F = 0, I = 0, L = (e) => {
43
+ let t = e.querySelector(":scope > defs");
44
+ return t || (t = j("defs"), e.prepend(t)), t;
45
+ }, R = (e) => {
46
+ let [t, n, r, i, a, o] = [
47
+ "x",
48
+ "y",
49
+ "width",
50
+ "height",
51
+ "rx",
52
+ "ry"
53
+ ].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${A(s)},${A(c)} 0 0 1 ${A(e)},${A(t)}` : "";
54
+ return `M${A(t + s)},${A(n)}h${A(r - 2 * s)}${l(s, c)}v${A(i - 2 * c)}${l(-s, c)}h${A(2 * s - r)}${l(-s, -c)}v${A(2 * c - i)}${l(s, -c)}z`;
55
+ }, z = (e, t, n, r, i) => {
56
+ if (!t.length || !i.length) return;
57
+ let a = `tablechart-clip-${++I}`, o = j("clipPath", {
58
+ id: a,
59
+ clipPathUnits: "userSpaceOnUse"
60
+ }), s = `M${-n},${-r}h${n * 3}v${r * 3}h${-n * 3}z`;
61
+ o.appendChild(j("path", {
62
+ d: s + t.map(R).join(""),
63
+ "clip-rule": "evenodd"
64
+ })), L(e).appendChild(o);
65
+ for (let e of i) e.setAttribute("clip-path", `url(#${a})`);
66
+ }, B = (e, t, n, r, i, a) => {
43
67
  if (!t.length) return;
44
- let o = `tablechart-cut-${++P}`, s = A("mask", {
68
+ let o = `tablechart-cut-${++F}`, s = j("mask", {
45
69
  id: o,
46
70
  maskUnits: "userSpaceOnUse"
47
71
  });
48
- s.appendChild(A("rect", {
72
+ s.appendChild(j("rect", {
49
73
  x: -n,
50
74
  y: -r,
51
75
  width: n * 3,
@@ -53,14 +77,14 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
53
77
  fill: "white"
54
78
  }));
55
79
  for (let e of t) e.setAttribute("fill", "black"), s.appendChild(e);
56
- let c = e.querySelector(":scope > defs");
57
- if (c || (c = A("defs"), e.prepend(c)), c.appendChild(s), i) {
80
+ let c = L(e);
81
+ if (c.appendChild(s), i) {
58
82
  for (let e of i) e.setAttribute("mask", `url(#${o})`);
59
83
  return;
60
84
  }
61
85
  let l = null;
62
- 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(A("g", { mask: `url(#${o})` }))), l.appendChild(t)));
63
- }, F = 0, I = (e) => Array.from(e.querySelectorAll(`.${r}`)).map((e) => {
86
+ 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(j("g", { mask: `url(#${o})` }))), l.appendChild(t)));
87
+ }, V = 0, H = (e) => Array.from(e.querySelectorAll(`.${r}`)).map((e) => {
64
88
  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("; ");
65
89
  return {
66
90
  row: Number(e.dataset.row),
@@ -71,7 +95,7 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
71
95
  sideways: e.dataset.grow === "right",
72
96
  part: s
73
97
  };
74
- }), L = {
98
+ }), U = {
75
99
  create: () => null,
76
100
  draw(e, t, n) {
77
101
  let { rows: r, y: i, svg: a, breakAt: o } = n;
@@ -98,28 +122,28 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
98
122
  [c + 2 * l, t + o],
99
123
  [c + i, t - o]
100
124
  ];
101
- }, 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-${++F}`, d = A("mask", {
125
+ }, 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-${++V}`, d = j("mask", {
102
126
  id: u,
103
127
  maskUnits: "userSpaceOnUse"
104
128
  });
105
- d.appendChild(A("rect", {
106
- x: -C,
129
+ d.appendChild(j("rect", {
130
+ x: -w,
107
131
  y: -n.height,
108
- width: C * 3,
132
+ width: w * 3,
109
133
  height: n.height * 3,
110
134
  fill: "white"
111
135
  }));
112
136
  let f = [], p = i(o);
113
- for (let e of I(a)) {
137
+ for (let e of H(a)) {
114
138
  let t = e.sideways ? n.breakX : p;
115
139
  if (t === void 0 || !(e.sideways ? e.x < t && e.x + e.width > t : e.y < p && e.y + e.height > p)) continue;
116
140
  let [i, o] = e.sideways ? [c(e, t), c(e, t + n.breakGap)] : [c(e, p - n.breakGap), c(e, p)];
117
- d.appendChild(A("path", {
141
+ d.appendChild(j("path", {
118
142
  d: l([...i, ...o.slice().reverse()], !0),
119
143
  fill: "black"
120
144
  })), f.push(i, o);
121
- let s = [D("--after", r[e.row - 1]?.slot ?? 0), e.part].filter(Boolean).join("; ");
122
- for (let e of [i, o]) a.appendChild(A("path", {
145
+ let s = [O("--after", r[e.row - 1]?.slot ?? 0), e.part].filter(Boolean).join("; ");
146
+ for (let e of [i, o]) a.appendChild(j("path", {
123
147
  class: m,
124
148
  "data-part": "edge",
125
149
  "data-note": n.note,
@@ -128,22 +152,22 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
128
152
  }));
129
153
  }
130
154
  if (!f.length) return;
131
- let h = Array.from(a.querySelectorAll(`.${m}`)), g = A("g", { mask: `url(#${u})` });
155
+ let h = Array.from(a.querySelectorAll(`.${m}`)), g = j("g", { mask: `url(#${u})` });
132
156
  for (let e of Array.from(a.childNodes)) h.includes(e) || g.appendChild(e);
133
- let _ = A("defs");
157
+ let _ = j("defs");
134
158
  _.appendChild(d), a.prepend(_, g);
135
159
  }
136
- }, R = (e) => {
160
+ }, W = (e) => {
137
161
  let t = -Infinity;
138
162
  for (let n of e) t = Math.max(t, n);
139
163
  return t;
140
- }, z = (e) => (e.split(/[.,]/)[1] || "").length, te = (e, t) => new Intl.NumberFormat(t || document.documentElement.lang || void 0, {
164
+ }, ee = (e) => (e.split(/[.,]/)[1] || "").length, G = (e, t) => new Intl.NumberFormat(t || document.documentElement.lang || void 0, {
141
165
  minimumFractionDigits: e,
142
166
  maximumFractionDigits: e
143
- }), B = (e, t, n) => {
144
- let r = te(t, n).formatToParts(e), i = r[0]?.type === "minusSign" ? r[0].value : "";
167
+ }), te = (e, t, n) => {
168
+ let r = G(t, n).formatToParts(e), i = r[0]?.type === "minusSign" ? r[0].value : "";
145
169
  return [i, r.slice(+!!i).map((e) => e.value).join("")];
146
- }, V = (e) => Number.parseFloat((e.match(/-?[\d.,]+/) || ["NaN"])[0].replace(",", ".")), H = (e, t) => {
170
+ }, ne = (e) => Number.parseFloat((e.match(/-?[\d.,]+/) || ["NaN"])[0].replace(",", ".")), re = (e, t) => {
147
171
  let n = document.createElement("span");
148
172
  if (n.className = "tablechart-badge", n.inert = !0, e.childElementCount > 0) for (let t of Array.from(e.children)) n.appendChild(t.cloneNode(!0));
149
173
  else {
@@ -152,44 +176,44 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
152
176
  t && n.setAttribute("data-i18n", t);
153
177
  }
154
178
  return t.appendChild(n), n;
155
- }, U = (t, n, r, i, a = "%") => {
156
- let o = t?.textContent || "", s = V(o), c = a ? .5 : .5 * 10 ** -z(o.match(/-?[\d.,]+/)?.[0] ?? ""), l = Number.isNaN(s) ? !0 : Math.abs(n - s) <= c + 1e-9, u = {
179
+ }, K = (t, n, r, i, a = "%") => {
180
+ let o = t?.textContent || "", s = ne(o), c = a ? .5 : .5 * 10 ** -ee(o.match(/-?[\d.,]+/)?.[0] ?? ""), l = Number.isNaN(s) ? !0 : Math.abs(n - s) <= c + 1e-9, u = {
157
181
  label: r,
158
182
  computed: n,
159
183
  stated: s,
160
184
  agrees: l
161
185
  };
162
186
  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.`);
163
- }, W = (e, t) => (t - e) / Math.abs(e) * 100, ne = (e, t) => {
187
+ }, ie = (e, t) => (t - e) / Math.abs(e) * 100, ae = (e, t) => {
164
188
  let n = (t, n) => {
165
189
  let r = Number.parseInt(e.getAttribute(t) ?? "", 10);
166
190
  return Number.isFinite(r) ? r - 1 : n;
167
191
  };
168
192
  return [n("data-from", 0), n("data-to", t - 1)];
169
- }, re = {
170
- create: H,
193
+ }, oe = {
194
+ create: re,
171
195
  draw(t, n, r) {
172
- let { rows: i, cx: o, y: c, unit: l, labelHeight: u, badgeHeight: d, height: f, svg: p, after: m } = r, [h, g] = ne(t, i.length), _ = i[h], v = i[g];
196
+ let { rows: i, cx: o, y: c, unit: l, labelHeight: u, badgeHeight: d, height: f, svg: p, after: m } = r, [h, g] = ae(t, i.length), _ = i[h], v = i[g];
173
197
  if (!_ || !v) {
174
198
  console.warn(`[${e}] A bracket points at a row that is not there (row ${h + 1} to ${g + 1}, of ${i.length}).`);
175
199
  return;
176
200
  }
177
- let y = 7 * l, b = 4 * l, x = o(h), S = o(g), w = Math.min(c(_.value), c(v.value)) - u - b - d * .9, T = (e) => c(e) - u - b, E = `M ${x} ${T(_.value)} L ${x} ${w} L ${S} ${w} L ${S} ${T(v.value) - y}`, O = (T(_.value) - w + Math.abs(S - x) + (T(v.value) - y - w)) / l + 1;
178
- p.appendChild(A("path", {
201
+ let y = 7 * l, b = 4 * l, x = o(h), S = o(g), C = Math.min(c(_.value), c(v.value)) - u - b - d * .9, T = (e) => c(e) - u - b, E = `M ${x} ${T(_.value)} L ${x} ${C} L ${S} ${C} L ${S} ${T(v.value) - y}`, D = (T(_.value) - C + Math.abs(S - x) + (T(v.value) - y - C)) / l + 1;
202
+ p.appendChild(j("path", {
179
203
  class: a,
180
204
  "data-note": r.note,
181
205
  d: E,
182
- style: `--len:${O.toFixed(1)}; ${D("--after", m)}`
206
+ style: `--len:${D.toFixed(1)}; ${O("--after", m)}`
183
207
  }));
184
208
  let k = T(v.value);
185
- p.appendChild(A("polygon", {
209
+ p.appendChild(j("polygon", {
186
210
  class: s,
187
211
  "data-note": r.note,
188
212
  points: `${S},${k} ${S - y * .45},${k - y} ${S + y * .45},${k - y}`,
189
- style: D("--after", m)
190
- })), n && (N(n, (x + S) / 2, w, C, f), n.style.setProperty("--after", String(m))), U(n, W(_.value, v.value), `${_.value} to ${v.value}`, r);
213
+ style: O("--after", m)
214
+ })), n && (P(n, (x + S) / 2, C, w, f), n.style.setProperty("--after", String(m))), K(n, ie(_.value, v.value), `${_.value} to ${v.value}`, r);
191
215
  }
192
- }, ie = (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], G = (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], ae = (e, t, n) => {
216
+ }, se = (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], ce = (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], le = (e, t, n) => {
193
217
  if (e.length > 400) return e.map(() => null);
194
218
  let r = 1;
195
219
  for (let t of e) for (let [, , e, n] of t) r = Math.max(r, e, n);
@@ -199,21 +223,21 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
199
223
  return a;
200
224
  }, o = (e) => {
201
225
  for (let t of a(e)) i.get(t)?.push(e) ?? i.set(t, [e]);
202
- }, s = (e) => G(e, n) && a(e).every((t) => !i.get(t)?.some((t) => ie(e, t)));
226
+ }, s = (e) => ce(e, n) && a(e).every((t) => !i.get(t)?.some((t) => se(e, t)));
203
227
  return t.forEach(o), e.map((e) => {
204
228
  let t = e.findIndex(s);
205
229
  return t < 0 ? null : (o(e[t]), t);
206
230
  });
207
- }, K = /* @__PURE__ */ new WeakMap(), oe = (e) => {
231
+ }, ue = /* @__PURE__ */ new WeakMap(), de = (e) => {
208
232
  let t = [...e].filter((e) => !!e), n = t.map((e) => ({
209
233
  width: e.offsetWidth,
210
234
  height: e.offsetHeight
211
235
  }));
212
- t.forEach((e, t) => K.set(e, n[t]));
213
- }, q = (e) => K.get(e) ?? {
236
+ t.forEach((e, t) => ue.set(e, n[t]));
237
+ }, q = (e) => ue.get(e) ?? {
214
238
  width: e.offsetWidth,
215
239
  height: e.offsetHeight
216
- }, se = (e, t, n) => {
240
+ }, fe = (e, t, n) => {
217
241
  let r = n.reduce((e, t) => e + t, 0);
218
242
  if (e === "mean") return r ? t.reduce((e, t, r) => e + t * n[r], 0) / r : null;
219
243
  if (e === "median") {
@@ -226,31 +250,31 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
226
250
  }
227
251
  let i = Number.parseFloat(e);
228
252
  return Number.isFinite(i) ? i : null;
229
- }, ce = {
253
+ }, pe = {
230
254
  create(e, t) {
231
255
  if (!e.textContent?.trim()) return null;
232
- let n = H(e, t);
256
+ let n = re(e, t);
233
257
  return n.dataset.kind = "reference", n;
234
258
  },
235
259
  draw(t, n, r) {
236
260
  let { rows: i, cx: a, y: s, x: c, height: l, unit: u, svg: f, after: p } = r, m = i.filter((e) => !e.isTotal && !e.missing), h = t.hasAttribute("data-name"), g = (t.getAttribute(h ? "data-name" : "data-value") ?? "").trim(), _, v, y;
237
261
  if (h) {
238
- let t = m.map((e) => V(e.label));
262
+ let t = m.map((e) => ne(e.label));
239
263
  if (r.categories[0]?.parentElement?.dataset.place === "beside" || t.some(Number.isNaN)) {
240
264
  console.warn(`[${e}] A reference line among the names needs names that are numbers, under columns or points.`);
241
265
  return;
242
266
  }
243
- let n = se(g, t, m.map((e) => e.value)), o = n === null ? -1 : t.findIndex((e, r) => e <= n && n <= (t[r + 1] ?? e)), [s, c] = [m[o], m[o + 1] ?? m[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]);
267
+ let n = fe(g, t, m.map((e) => e.value)), o = n === null ? -1 : t.findIndex((e, r) => e <= n && n <= (t[r + 1] ?? e)), [s, c] = [m[o], m[o + 1] ?? m[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]);
244
268
  y = n, v = o < 0 ? null : s + l * (c - s), _ = !1;
245
269
  } else {
246
270
  let e = !!r.frame && t.getAttribute("data-axis") === "y", n = r.frame ? r.series.flatMap((e, t) => e.group ? [] : [t])[+!!e] ?? 0 : 0;
247
- y = se(g, m.map((e) => e.cells[n]?.value ?? e.value), m.map(() => 1)), _ = e || !c, v = y === null ? null : c && !e ? c(y) : s(y);
271
+ y = fe(g, m.map((e) => e.cells[n]?.value ?? e.value), m.map(() => 1)), _ = e || !c, v = y === null ? null : c && !e ? c(y) : s(y);
248
272
  }
249
273
  if (v === null || y === null) {
250
274
  console.warn(`[${e}] A reference line needs a number, "mean" or "median", not "${g}".`);
251
275
  return;
252
276
  }
253
- let [b, x, S, w] = r.frame ? [
277
+ let [b, x, S, C] = r.frame ? [
254
278
  r.frame[0],
255
279
  r.frame[1],
256
280
  r.frame[0] + r.frame[2],
@@ -258,10 +282,10 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
258
282
  ] : [
259
283
  0,
260
284
  0,
261
- i.length > 0 ? a(i.length - 1) + a(0) : C,
285
+ i.length > 0 ? a(i.length - 1) + a(0) : w,
262
286
  c ? l : s(0)
263
287
  ];
264
- if (f.insertBefore(A("line", {
288
+ if (f.insertBefore(j("line", {
265
289
  class: o,
266
290
  "data-note": r.note,
267
291
  ...t.getAttribute("data-line") === "dotted" && { "data-line": "dotted" },
@@ -274,9 +298,9 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
274
298
  x1: v,
275
299
  x2: v,
276
300
  y1: x,
277
- y2: w
301
+ y2: C
278
302
  },
279
- style: D("--after", p)
303
+ style: O("--after", p)
280
304
  }), f.querySelector(`:scope > .${d}`)), n) {
281
305
  let e = q(n).width * u, t = q(n).height * u, i = 4 * u, a = _ ? [
282
306
  [
@@ -320,27 +344,27 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
320
344
  e,
321
345
  t
322
346
  ]
323
- ]), [o] = ae([a], r.taken, [
347
+ ]), [o] = le([a], r.taken, [
324
348
  0,
325
349
  0,
326
- C,
350
+ w,
327
351
  l
328
352
  ]), s = a[o ?? 0];
329
- r.taken.push(s), N(n, s[0] + e / 2, s[1] + t / 2, C, l), n.style.setProperty("--after", String(p)), (g === "mean" || g === "median") && U(n, y, `the ${g}`, r, "");
353
+ r.taken.push(s), P(n, s[0] + e / 2, s[1] + t / 2, w, l), n.style.setProperty("--after", String(p)), (g === "mean" || g === "median") && K(n, y, `the ${g}`, r, "");
330
354
  }
331
355
  }
332
- }, le = (e, t, n) => ((t / e) ** (1 / n) - 1) * 100, J = {
333
- create: H,
356
+ }, J = (e, t, n) => ((t / e) ** (1 / n) - 1) * 100, me = {
357
+ create: re,
334
358
  draw(e, t, n) {
335
359
  let { rows: r, cx: i, y: o, unit: c, labelHeight: l, height: u, svg: d, values: f, after: p } = n, m = r[0], h = r[r.length - 1];
336
360
  if (!m || !h) return;
337
- let g = l + 18 * c, _ = 10 * c, v = 10 * c, y = i(0), b = o(m.value) - g, x = i(r.length - 1), S = o(h.value) - g, w = 0;
361
+ let g = l + 18 * c, _ = 10 * c, v = 10 * c, y = i(0), b = o(m.value) - g, x = i(r.length - 1), S = o(h.value) - g, C = 0;
338
362
  r.forEach((e, t) => {
339
363
  let n = x === y ? 0 : (i(t) - y) / (x - y), r = b + n * (S - b) - (o(e.value) - g);
340
- r > w && (w = r);
341
- }), b -= w, S -= w;
342
- let T = x - y, E = S - b, O = Math.hypot(T, E) || 1, k = T / O, j = E / O;
343
- y -= k * _, b -= j * _, x += k * _, S += j * _;
364
+ r > C && (C = r);
365
+ }), b -= C, S -= C;
366
+ let T = x - y, E = S - b, D = Math.hypot(T, E) || 1, k = T / D, A = E / D;
367
+ y -= k * _, b -= A * _, x += k * _, S += A * _;
344
368
  let M = Number.parseFloat(e.getAttribute("data-at") || "0.5");
345
369
  if (t) {
346
370
  let e = y + (x - y) * M, n = b + (S - b) * M, a = q(t).width * c / 2, s = n + q(t).height * c / 2 + 8 * c, u = 0;
@@ -351,49 +375,49 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
351
375
  u = Math.max(u, s - d);
352
376
  }), b -= u, S -= u;
353
377
  }
354
- let P = x - k * v, ee = S - j * v, F = Math.hypot(P - y, ee - b) / c + 1;
355
- d.appendChild(A("line", {
378
+ let N = x - k * v, F = S - A * v, I = Math.hypot(N - y, F - b) / c + 1;
379
+ d.appendChild(j("line", {
356
380
  class: a,
357
381
  "data-note": n.note,
358
382
  x1: y,
359
383
  y1: b,
360
- x2: P,
361
- y2: ee,
362
- style: `--len:${F.toFixed(1)}; ${D("--after", p)}`
384
+ x2: N,
385
+ y2: F,
386
+ style: `--len:${I.toFixed(1)}; ${O("--after", p)}`
363
387
  }));
364
- let I = -j, L = k, R = v * .42;
365
- d.appendChild(A("polygon", {
388
+ let L = -A, R = k, z = v * .42;
389
+ d.appendChild(j("polygon", {
366
390
  class: s,
367
391
  "data-note": n.note,
368
392
  points: [
369
393
  `${x},${S}`,
370
- `${P + I * R},${ee + L * R}`,
371
- `${P - I * R},${ee - L * R}`
394
+ `${N + L * z},${F + R * z}`,
395
+ `${N - L * z},${F - R * z}`
372
396
  ].join(" "),
373
- style: D("--after", p)
374
- })), t && (N(t, y + (x - y) * M, b + (S - b) * M, C, u), t.style.setProperty("--after", String(p)));
375
- let z = Number.parseFloat(e.getAttribute("data-years") || "");
376
- !Number.isNaN(z) && z > 0 && U(t, le(m.value, h.value, z), `${m.value} to ${h.value} over ${z} years`, n);
397
+ style: O("--after", p)
398
+ })), t && (P(t, y + (x - y) * M, b + (S - b) * M, w, u), t.style.setProperty("--after", String(p)));
399
+ let B = Number.parseFloat(e.getAttribute("data-years") || "");
400
+ !Number.isNaN(B) && B > 0 && K(t, J(m.value, h.value, B), `${m.value} to ${h.value} over ${B} years`, n);
377
401
  }
378
- }, ue = (e, t, n, r, i) => {
402
+ }, he = (e, t, n, r, i) => {
379
403
  if (!r) return e / t * n;
380
404
  let { lo: a, hi: o, gap: s, share: c } = r, l = n * c, u = (n - l - i) / (a + (t - o)), d = l / (o - a);
381
405
  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;
382
- }, de = (e, t, n) => {
406
+ }, ge = (e, t, n) => {
383
407
  let r = .15, i = Math.min(e * .7 / (t + (t - 1) * r), n), a = t * i + (t - 1) * i * r;
384
408
  return {
385
409
  size: i,
386
410
  gap: i * r,
387
411
  offset: (e) => -a / 2 + e * i * 1.15
388
412
  };
389
- }, Y = (e, t, n) => {
413
+ }, _e = (e, t, n) => {
390
414
  let r = e.series[n], i = e.series.some((e) => e.focus) && !r.focus;
391
415
  return {
392
416
  "data-series": n + 1,
393
417
  ...i && { "data-muted": "" },
394
- style: `--n:${n}; --m:${+!!i}; --palette:var(--tablechart-color-${n + 1}); ${D("--i", t.slot)}`
418
+ style: `--n:${n}; --m:${+!!i}; --palette:var(--tablechart-color-${n + 1}); ${O("--i", t.slot)}`
395
419
  };
396
- }, fe = (e, t, n = !1) => {
420
+ }, Y = (e, t, n = !1) => {
397
421
  let r = 0, i = 0;
398
422
  return Array.from({ length: t }, (t, a) => {
399
423
  let o = e.cells[a] ?? e.cells[0], s = o.missing ? 0 : o.value;
@@ -420,40 +444,40 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
420
444
  cell: o
421
445
  };
422
446
  });
423
- }, pe = (e, t, n = !1) => {
424
- let r = fe(e, t, n);
447
+ }, ve = (e, t, n = !1) => {
448
+ let r = Y(e, t, n);
425
449
  return {
426
450
  top: Math.max(0, ...r.map((e) => e.to)),
427
451
  bottom: Math.min(0, ...r.map((e) => e.to))
428
452
  };
429
- }, me = (e, t) => {
430
- let { top: n, bottom: r } = pe(e, t);
453
+ }, ye = (e, t) => {
454
+ let { top: n, bottom: r } = ve(e, t);
431
455
  return n + r;
432
- }, he = (e, t, n) => {
456
+ }, be = (e, t, n) => {
433
457
  let r = t.series.some((e) => e.focus);
434
458
  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})`);
435
- }, ge = (e, t, n, i = {}, a = "") => {
459
+ }, xe = (e, t, n, i = {}, a = "") => {
436
460
  let o = {
437
- class: j(r, t),
461
+ class: M(r, t),
438
462
  "data-kind": "bar",
439
463
  "data-row": n + 1,
440
464
  ...i
441
- }, s = D("--i", t.slot) + (a ? `; transform-origin: ${a}` : ""), c = A("g", {
465
+ }, s = O("--i", t.slot) + (a ? `; transform-origin: ${a}` : ""), c = j("g", {
442
466
  ...o,
443
467
  "data-stack": "",
444
468
  style: s
445
469
  });
446
470
  return e.svg.appendChild(c), (r, a) => {
447
471
  let o = i["data-grow"] === void 0 ? {} : { "data-grow": i["data-grow"] };
448
- c.appendChild(A("rect", {
472
+ c.appendChild(j("rect", {
449
473
  ...o,
450
474
  ...a,
451
- class: j("tablechart-piece", t),
475
+ class: M("tablechart-piece", t),
452
476
  "data-row": n + 1,
453
- ...Y(e, t, r)
477
+ ..._e(e, t, r)
454
478
  }));
455
479
  };
456
- }, _e = 6, ve = (e, t, n) => e.some((e) => q(e).width * n > t - _e * n), ye = (e, t, n) => t >= q(e).height * n * 1.6, be = (e, t, n) => t >= q(e).width * n * 1.5, xe = (e, t, n, r, i = .7) => {
480
+ }, Se = 6, Ce = (e, t, n) => e.some((e) => q(e).width * n > t - Se * n), we = (e, t, n) => t >= q(e).height * n * 1.6, Te = (e, t, n) => t >= q(e).width * n * 1.5, Ee = (e, t, n, r, i = .7) => {
457
481
  e.style.setProperty(r, "1");
458
482
  let a = 1;
459
483
  for (let e of t) {
@@ -462,10 +486,10 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
462
486
  }
463
487
  let o = a >= i ? a : 0;
464
488
  return e.style.setProperty(r, String(o || i)), o;
465
- }, Se = (e, t) => (e.sort((e, t) => e.y - t.y), e.forEach((n, r) => {
489
+ }, De = (e, t) => (e.sort((e, t) => e.y - t.y), e.forEach((n, r) => {
466
490
  let i = e[r - 1];
467
491
  i && n.y < i.y + t && (n.y = i.y + t);
468
- }), e), Ce = {
492
+ }), e), Oe = {
469
493
  segments: (e) => e.map((e) => ({
470
494
  ...e,
471
495
  from: 0,
@@ -485,47 +509,47 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
485
509
  categories: "beside",
486
510
  headroom: () => 0,
487
511
  draw(e) {
488
- 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(R(c.map((e) => q(e).width * a)), 0), p = Math.min(f + 10 * a, C * .42);
489
- c[0]?.parentElement?.style.setProperty("--_beside", `${((p - 8 * a) / C * 100).toFixed(2)}%`);
490
- let m = C - 4 * a, h = e.stacked ? Math.max(R(e.rows.map((t) => pe(t, e.series.length).top)), 0) || 1 : Math.max(R(e.rows.flatMap((t) => t.cells.slice(0, e.series.length).map((e) => Math.abs(e.value)))), 0) || 1, g = e.stacked ? Math.max(R(e.rows.map((t) => -pe(t, e.series.length).bottom)), 0) : Math.max(R(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) => ue(Math.abs(t), y, n, e.squeeze, e.breakGap), x = n / t.length, S = (e) => (e + .5) * x, w = Math.min(x * l.barfill, u), T = de(x, e.series.length, u), E = s[0] ?? e.totals[0], O = E ? q(E).height * a * .56 : 0, k = Math.max(((d && !e.stacked ? T.size : w) - O) / 2, 5 * a), M = (e) => q(e).width * a, P = (e) => e.length ? R(e.map(M)) + k + 4 * a : 0, ee = (t, n) => (e.rows[n].cells[t] ?? e.rows[n].cells[0]).value, F = e.seriesValues.flatMap((e, t) => e.map((e, n) => ({
512
+ let { segments: t, height: n, unit: a, svg: o, values: s, categories: c, config: l, barMax: u } = e, d = e.series.length > 1, f = Math.max(W(c.map((e) => q(e).width * a)), 0), p = Math.min(f + 10 * a, w * .42);
513
+ c[0]?.parentElement?.style.setProperty("--_beside", `${((p - 8 * a) / w * 100).toFixed(2)}%`);
514
+ let m = w - 4 * a, h = e.stacked ? Math.max(W(e.rows.map((t) => ve(t, e.series.length).top)), 0) || 1 : Math.max(W(e.rows.flatMap((t) => t.cells.slice(0, e.series.length).map((e) => Math.abs(e.value)))), 0) || 1, g = e.stacked ? Math.max(W(e.rows.map((t) => -ve(t, e.series.length).bottom)), 0) : Math.max(W(e.rows.flatMap((t) => t.cells.slice(0, e.series.length).map((e) => -e.value))), 0), _ = Math.max(h, e.domain?.[1] ?? 0), v = Math.max(g, -(e.domain?.[0] ?? 0)), y = Math.max(_, e.squeeze?.hi ?? 0) + v, b = (t, n) => he(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), T = ge(x, e.series.length, u), E = s[0] ?? e.totals[0], D = E ? q(E).height * a * .56 : 0, k = Math.max(((d && !e.stacked ? T.size : C) - D) / 2, 5 * a), A = (e) => q(e).width * a, N = (e) => e.length ? W(e.map(A)) + k + 4 * a : 0, F = (t, n) => (e.rows[n].cells[t] ?? e.rows[n].cells[0]).value, I = e.seriesValues.flatMap((e, t) => e.map((e, n) => ({
491
515
  label: e,
492
- value: ee(t, n)
493
- }))), I = (t) => {
494
- let n = pe(e.rows[t], e.series.length);
516
+ value: F(t, n)
517
+ }))), L = (t) => {
518
+ let n = ve(e.rows[t], e.series.length);
495
519
  return n.top === 0 && n.bottom < 0;
496
- }, L = e.stacked ? P(e.totals.filter((e, t) => !I(t))) : d ? P(F.filter((e) => e.value >= 0).map((e) => e.label)) : 0, z = e.stacked ? P(e.totals.filter((e, t) => I(t))) : d ? P(F.filter((e) => e.value < 0).map((e) => e.label)) : 0;
520
+ }, R = e.stacked ? N(e.totals.filter((e, t) => !L(t))) : d ? N(I.filter((e) => e.value >= 0).map((e) => e.label)) : 0, z = e.stacked ? N(e.totals.filter((e, t) => L(t))) : d ? N(I.filter((e) => e.value < 0).map((e) => e.label)) : 0;
497
521
  if (!d && !e.stacked) for (let e = 0; e < 3; e++) {
498
- let e = m - p - L - z, n = t.map((e, t) => ({
522
+ let e = m - p - R - z, n = t.map((e, t) => ({
499
523
  seg: e,
500
524
  label: s[t]
501
- })).filter(({ seg: t, label: n }) => !be(n, b(t.value, e), a)), r = P(n.filter(({ seg: e }) => e.value >= 0).map(({ label: e }) => e)), i = P(n.filter(({ seg: e }) => e.value < 0).map(({ label: e }) => e));
502
- if (r <= L && i <= z) break;
503
- L = Math.max(L, r), z = Math.max(z, i);
525
+ })).filter(({ seg: t, label: n }) => !Te(n, b(t.value, e), a)), r = N(n.filter(({ seg: e }) => e.value >= 0).map(({ label: e }) => e)), i = N(n.filter(({ seg: e }) => e.value < 0).map(({ label: e }) => e));
526
+ if (r <= R && i <= z) break;
527
+ R = Math.max(R, r), z = Math.max(z, i);
504
528
  }
505
- let te = m - p - L - z, B = p + z + b(v, te), V = (e) => e < 0 ? B - b(e, te) : B + b(e, te);
506
- if (e.squeeze && (e.breakX = V(e.squeeze.gap)), e.x = V, e.stacked) {
529
+ let B = m - p - R - z, V = p + z + b(v, B), H = (e) => e < 0 ? V - b(e, B) : V + b(e, B);
530
+ if (e.squeeze && (e.breakX = H(e.squeeze.gap)), e.x = H, e.stacked) {
507
531
  e.rows.forEach((t, r) => {
508
- let i = pe(t, e.series.length), o = ge(e, t, r, { "data-grow": "right" }, i.bottom < 0 ? `${B - V(i.bottom)}px center` : ""), s = S(r) - w / 2;
509
- fe(t, e.series.length).forEach(({ from: t, to: i, cell: c }, l) => {
532
+ let i = ve(t, e.series.length), o = xe(e, t, r, { "data-grow": "right" }, i.bottom < 0 ? `${V - H(i.bottom)}px center` : ""), s = S(r) - C / 2;
533
+ Y(t, e.series.length).forEach(({ from: t, to: i, cell: c }, l) => {
510
534
  let u = e.seriesValues[l][r];
511
535
  if (u.dataset.place = "none", c.missing || i === t) return;
512
- let d = Math.min(V(t), V(i)), f = Math.max(V(t), V(i));
536
+ let d = Math.min(H(t), H(i)), f = Math.max(H(t), H(i));
513
537
  o(l, {
514
538
  x: d,
515
539
  y: s,
516
540
  width: Math.max(f - d, 1),
517
- height: w,
541
+ height: C,
518
542
  ...i < t && { "data-grow": "left" }
519
- }), u.dataset.place = "inside", u.toggleAttribute("data-left-out", !be(u, f - d, a) || q(u).height * a > w), he(u, e, l), N(u, (d + f) / 2, S(r), C, n);
543
+ }), u.dataset.place = "inside", u.toggleAttribute("data-left-out", !Te(u, f - d, a) || q(u).height * a > C), be(u, e, l), P(u, (d + f) / 2, S(r), w, n);
520
544
  });
521
545
  let l = e.totals[r];
522
- l && (l.dataset.place = I(r) ? "before" : "after", N(l, I(r) ? V(i.bottom) - k : V(i.top) + k, S(r), C, n));
546
+ l && (l.dataset.place = L(r) ? "before" : "after", P(l, L(r) ? H(i.bottom) - k : H(i.top) + k, S(r), w, n));
523
547
  let u = c[r];
524
- u && N(u, p - 8 * a, S(r), C, n);
525
- }), o.appendChild(A("line", {
548
+ u && P(u, p - 8 * a, S(r), w, n);
549
+ }), o.appendChild(j("line", {
526
550
  class: i,
527
- x1: B,
528
- x2: B,
551
+ x1: V,
552
+ x2: V,
529
553
  y1: 0,
530
554
  y2: n
531
555
  }));
@@ -533,7 +557,7 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
533
557
  }
534
558
  if (d) {
535
559
  e.plot.dataset.grouped = "";
536
- let t = e.seriesValues.flat().filter((e) => e.dataset.missing === void 0), s = xe(e.plot, t, (e) => ({
560
+ let t = e.seriesValues.flat().filter((e) => e.dataset.missing === void 0), s = Ee(e.plot, t, (e) => ({
537
561
  size: q(e).height * a,
538
562
  room: T.size + T.gap * .5
539
563
  }), "--_fit");
@@ -544,57 +568,57 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
544
568
  u.dataset.place = "none";
545
569
  return;
546
570
  }
547
- let d = V(l.value), f = l.value < 0, p = S(i) + T.offset(c), m = Math.max(Math.abs(d - B), 1);
548
- l.value !== 0 && o.appendChild(A("rect", {
549
- class: j(r, t),
571
+ let d = H(l.value), f = l.value < 0, p = S(i) + T.offset(c), m = Math.max(Math.abs(d - V), 1);
572
+ l.value !== 0 && o.appendChild(j("rect", {
573
+ class: M(r, t),
550
574
  "data-kind": "bar",
551
575
  "data-row": i + 1,
552
576
  "data-grow": f ? "left" : "right",
553
- x: f ? B - m : B,
577
+ x: f ? V - m : V,
554
578
  y: p,
555
579
  width: m,
556
580
  height: T.size,
557
- ...Y(e, t, c)
558
- })), u.dataset.place = f ? "before" : "after", u.toggleAttribute("data-left-out", !s), N(u, f ? d - k : d + k, p + T.size / 2, C, n);
581
+ ..._e(e, t, c)
582
+ })), u.dataset.place = f ? "before" : "after", u.toggleAttribute("data-left-out", !s), P(u, f ? d - k : d + k, p + T.size / 2, w, n);
559
583
  });
560
584
  let l = c[i];
561
- l && N(l, p - 8 * a, S(i), C, n);
562
- }), o.appendChild(A("line", {
585
+ l && P(l, p - 8 * a, S(i), w, n);
586
+ }), o.appendChild(j("line", {
563
587
  class: i,
564
- x1: B,
565
- x2: B,
588
+ x1: V,
589
+ x2: V,
566
590
  y1: 0,
567
591
  y2: n
568
592
  }));
569
593
  return;
570
594
  }
571
- let H = t.map((e, t) => be(s[t], Math.abs(V(e.value) - B), a));
595
+ let U = t.map((e, t) => Te(s[t], Math.abs(H(e.value) - V), a));
572
596
  t.forEach((t, i) => {
573
- let l = V(t.value), u = S(i), d = t.value < 0, f = Math.abs(l - B), m = Math.max(f, 1);
574
- t.value !== 0 && o.appendChild(A("rect", {
575
- class: j(r, t),
597
+ let l = H(t.value), u = S(i), d = t.value < 0, f = Math.abs(l - V), m = Math.max(f, 1);
598
+ t.value !== 0 && o.appendChild(j("rect", {
599
+ class: M(r, t),
576
600
  "data-kind": t.kind,
577
601
  "data-row": i + 1,
578
602
  "data-grow": d ? "left" : "right",
579
- x: d ? B - m : B,
580
- y: u - w / 2,
603
+ x: d ? V - m : V,
604
+ y: u - C / 2,
581
605
  width: m,
582
- height: w,
583
- style: D("--i", t.slot)
606
+ height: C,
607
+ style: O("--i", t.slot)
584
608
  }));
585
- let h = s[i], g = Math.max(Math.min(k, f - M(h) - 6 * a), 6 * a), _ = d ? 1 : -1;
586
- h.dataset.place = H[i] ? "inside" : d ? "before" : "after", h.dataset.kind = t.kind, N(h, H[i] ? e.insideAlign === "center" ? (B + l) / 2 : e.insideAlign === "start" ? B - _ * (g + M(h) / 2) : l + _ * (g + M(h) / 2) : l - _ * k, u, C, n);
609
+ let h = s[i], g = Math.max(Math.min(k, f - A(h) - 6 * a), 6 * a), _ = d ? 1 : -1;
610
+ h.dataset.place = U[i] ? "inside" : d ? "before" : "after", h.dataset.kind = t.kind, P(h, U[i] ? e.insideAlign === "center" ? (V + l) / 2 : e.insideAlign === "start" ? V - _ * (g + A(h) / 2) : l + _ * (g + A(h) / 2) : l - _ * k, u, w, n);
587
611
  let v = c[i];
588
- v && N(v, p - 8 * a, u, C, n);
589
- }), o.appendChild(A("line", {
612
+ v && P(v, p - 8 * a, u, w, n);
613
+ }), o.appendChild(j("line", {
590
614
  class: i,
591
- x1: B,
592
- x2: B,
615
+ x1: V,
616
+ x2: V,
593
617
  y1: 0,
594
618
  y2: n
595
619
  }));
596
620
  }
597
- }, we = {
621
+ }, ke = {
598
622
  segments: (e) => e.map((e) => ({
599
623
  ...e,
600
624
  from: 0,
@@ -611,8 +635,8 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
611
635
  let { segments: t, cx: n, y: a, barWidth: o, height: s, unit: c, svg: l, values: u, labels: d, insideAlign: f } = e, p = a(0);
612
636
  if (e.stacked) {
613
637
  e.rows.forEach((t, r) => {
614
- let i = pe(t, e.series.length), l = ge(e, t, r, {}, i.bottom < 0 ? `center ${p - a(i.top)}px` : ""), u = n(r) - o / 2;
615
- fe(t, e.series.length).forEach(({ from: t, to: i, cell: d }, f) => {
638
+ let i = ve(t, e.series.length), l = xe(e, t, r, {}, i.bottom < 0 ? `center ${p - a(i.top)}px` : ""), u = n(r) - o / 2;
639
+ Y(t, e.series.length).forEach(({ from: t, to: i, cell: d }, f) => {
616
640
  let p = e.seriesValues[f][r];
617
641
  if (p.dataset.place = "none", d.missing || i === t) return;
618
642
  let m = Math.min(a(i), a(t)), h = Math.max(a(i), a(t));
@@ -622,26 +646,26 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
622
646
  width: o,
623
647
  height: Math.max(h - m, 1),
624
648
  ...i < t && { "data-grow": "down" }
625
- }), p.dataset.place = "inside", p.toggleAttribute("data-left-out", !ye(p, h - m, c) || q(p).width * c > o - 4 * c), he(p, e, f), N(p, n(r), (m + h) / 2, C, s);
649
+ }), p.dataset.place = "inside", p.toggleAttribute("data-left-out", !we(p, h - m, c) || q(p).width * c > o - 4 * c), be(p, e, f), P(p, n(r), (m + h) / 2, w, s);
626
650
  });
627
651
  let d = e.totals[r];
628
652
  if (d) {
629
653
  let e = i.top === 0 && i.bottom < 0;
630
- d.dataset.place = e ? "below" : "outside", N(d, n(r), e ? a(i.bottom) + 4 * c : a(i.top) - 4 * c, C, s);
654
+ d.dataset.place = e ? "below" : "outside", P(d, n(r), e ? a(i.bottom) + 4 * c : a(i.top) - 4 * c, w, s);
631
655
  }
632
- }), l.appendChild(A("line", {
656
+ }), l.appendChild(j("line", {
633
657
  class: i,
634
658
  x1: 0,
635
- x2: C,
659
+ x2: w,
636
660
  y1: p,
637
661
  y2: p
638
662
  }));
639
663
  return;
640
664
  }
641
665
  if (e.series.length > 1) {
642
- let t = de(n(1) - n(0) || n(0) * 2, e.series.length, e.barMax);
666
+ let t = ge(n(1) - n(0) || n(0) * 2, e.series.length, e.barMax);
643
667
  e.plot.dataset.grouped = "";
644
- let o = e.seriesValues.flat().filter((e) => e.dataset.missing === void 0), u = xe(e.plot, o, (e) => ({
668
+ let o = e.seriesValues.flat().filter((e) => e.dataset.missing === void 0), u = Ee(e.plot, o, (e) => ({
645
669
  size: q(e).width * c,
646
670
  room: t.size + t.gap * .5
647
671
  }), "--_fit");
@@ -653,8 +677,8 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
653
677
  return;
654
678
  }
655
679
  let _ = a(m.value), v = m.value < 0, y = Math.max(Math.abs(p - _), 1);
656
- m.value !== 0 && l.appendChild(A("rect", {
657
- class: j(r, i),
680
+ m.value !== 0 && l.appendChild(j("rect", {
681
+ class: M(r, i),
658
682
  "data-kind": "bar",
659
683
  "data-row": o + 1,
660
684
  ...v && { "data-grow": "down" },
@@ -662,29 +686,29 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
662
686
  y: v ? p : p - y,
663
687
  width: t.size,
664
688
  height: y,
665
- ...Y(e, i, f)
666
- })), h.dataset.place = v ? "below" : "outside", h.toggleAttribute("data-left-out", !u), N(h, g + t.size / 2, v ? _ + 4 * c : _ - 4 * c, C, s);
689
+ ..._e(e, i, f)
690
+ })), h.dataset.place = v ? "below" : "outside", h.toggleAttribute("data-left-out", !u), P(h, g + t.size / 2, v ? _ + 4 * c : _ - 4 * c, w, s);
667
691
  });
668
- }), l.appendChild(A("line", {
692
+ }), l.appendChild(j("line", {
669
693
  class: i,
670
694
  x1: 0,
671
- x2: C,
695
+ x2: w,
672
696
  y1: p,
673
697
  y2: p
674
698
  }));
675
699
  return;
676
700
  }
677
- let m = ve(u, o, c), h = t.map((e, t) => d === "inside" && !m && !e.missing && ye(u[t], Math.abs(p - a(e.value)), c)), g = u[0] ? q(u[0]).height * c * .56 : 0, _ = Infinity;
701
+ let m = Ce(u, o, c), h = t.map((e, t) => d === "inside" && !m && !e.missing && we(u[t], Math.abs(p - a(e.value)), c)), g = u[0] ? q(u[0]).height * c * .56 : 0, _ = Infinity;
678
702
  for (let [e, t] of u.entries()) h[e] && (_ = Math.min(_, (o - q(t).width * c) / 2));
679
703
  t.forEach((e, t) => {
680
704
  let i = a(e.value), d = e.value < 0;
681
705
  if (e.missing) {
682
- N(u[t], n(t), p - 4 * c, C, s), u[t].dataset.place = "outside";
706
+ P(u[t], n(t), p - 4 * c, w, s), u[t].dataset.place = "outside";
683
707
  return;
684
708
  }
685
709
  let m = Math.max(Math.abs(p - i), 1);
686
- e.value !== 0 && l.appendChild(A("rect", {
687
- class: j(r, e),
710
+ e.value !== 0 && l.appendChild(j("rect", {
711
+ class: M(r, e),
688
712
  "data-kind": e.kind,
689
713
  "data-row": t + 1,
690
714
  ...d && { "data-grow": "down" },
@@ -692,19 +716,19 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
692
716
  y: d ? p : p - m,
693
717
  width: o,
694
718
  height: m,
695
- style: D("--i", e.slot)
719
+ style: O("--i", e.slot)
696
720
  }));
697
721
  let v = d ? -1 : 1, y = Math.min(_, (Math.abs(p - i) - g) / 2), b = f === "center" ? (i + p) / 2 : f === "start" ? p - v * (y + g / 2) : i + v * (y + g / 2), x = d ? i + 4 * c : i - 4 * c;
698
- N(u[t], n(t), h[t] ? b : x, C, s), u[t].dataset.place = h[t] ? "inside" : d ? "below" : "outside";
699
- }), l.appendChild(A("line", {
722
+ P(u[t], n(t), h[t] ? b : x, w, s), u[t].dataset.place = h[t] ? "inside" : d ? "below" : "outside";
723
+ }), l.appendChild(j("line", {
700
724
  class: i,
701
725
  x1: 0,
702
- x2: C,
726
+ x2: w,
703
727
  y1: p,
704
728
  y2: p
705
729
  }));
706
730
  }
707
- }, Te = 0, Ee = (e) => e.filter((e) => !e.isTotal), De = {
731
+ }, Ae = 0, je = (e) => e.filter((e) => !e.isTotal), Me = {
708
732
  aspect: .66,
709
733
  centre: !0,
710
734
  headroom: () => 0,
@@ -715,18 +739,18 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
715
739
  kind: "bar"
716
740
  })),
717
741
  draw({ rows: e, height: t, unit: n, labelHeight: r, svg: i, values: a, config: o, centre: s }) {
718
- let l = C / 2, u = t / 2, d = Ee(e).reduce((e, t) => e + Math.abs(t.value), 0);
742
+ let l = w / 2, u = t / 2, d = je(e).reduce((e, t) => e + Math.abs(t.value), 0);
719
743
  if (!d) return;
720
- let f = r * 1.2 + 10 * n, p = Math.max(Math.min(C, t) / 2 - f, 10), m = p * o.ringfill, h = p - m / 2, g = 2 * Math.PI * h, _ = [], v = 0, y = 0, b = 0;
744
+ let f = r * 1.2 + 10 * n, p = Math.max(Math.min(w, t) / 2 - f, 10), m = p * o.ringfill, h = p - m / 2, g = 2 * Math.PI * h, _ = [], v = 0, y = 0, b = 0;
721
745
  if (e.forEach((e, o) => {
722
746
  let s = a[o];
723
747
  if (e.isTotal) {
724
748
  s.dataset.place = "none";
725
749
  return;
726
750
  }
727
- let f = Math.abs(e.value) / d, x = E(b, f), S = `--share:${f.toFixed(4)}; --start:${x.start.toFixed(4)}; --span:${x.span.toFixed(4)};`, w = f * g, T = v / g * 2 * Math.PI - Math.PI / 2;
728
- _.push(T), i.appendChild(A("circle", {
729
- class: j(c, e),
751
+ let f = Math.abs(e.value) / d, x = D(b, f), S = `--share:${f.toFixed(4)}; --start:${x.start.toFixed(4)}; --span:${x.span.toFixed(4)};`, C = f * g, T = v / g * 2 * Math.PI - Math.PI / 2;
752
+ _.push(T), i.appendChild(j("circle", {
753
+ class: M(c, e),
730
754
  "data-slice": y + 1,
731
755
  "data-row": o + 1,
732
756
  cx: l,
@@ -734,62 +758,62 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
734
758
  r: h,
735
759
  "stroke-width": m,
736
760
  transform: `rotate(-90 ${l} ${u})`,
737
- "stroke-dasharray": `${w.toFixed(1)} ${(g - w).toFixed(1)}`,
761
+ "stroke-dasharray": `${C.toFixed(1)} ${(g - C).toFixed(1)}`,
738
762
  "stroke-dashoffset": (-v).toFixed(1),
739
- style: `--n:${y}; --palette:var(--tablechart-color-${y + 1}); --arc:${w.toFixed(1)}; --circ:${g.toFixed(1)}; ${S} --ease:${x.easing}; ${D("--i", e.slot)}`
763
+ style: `--n:${y}; --palette:var(--tablechart-color-${y + 1}); --arc:${C.toFixed(1)}; --circ:${g.toFixed(1)}; ${S} --ease:${x.easing}; ${O("--i", e.slot)}`
740
764
  }));
741
- let O = T + w / g * Math.PI, k = Math.cos(O), M = Math.sin(O);
742
- i.appendChild(A("line", {
765
+ let E = T + C / g * Math.PI, k = Math.cos(E), A = Math.sin(E);
766
+ i.appendChild(j("line", {
743
767
  class: "tablechart-leader",
744
768
  x1: l + k * (p + 2 * n),
745
- y1: u + M * (p + 2 * n),
769
+ y1: u + A * (p + 2 * n),
746
770
  x2: l + k * (p + 7 * n),
747
- y2: u + M * (p + 7 * n),
771
+ y2: u + A * (p + 7 * n),
748
772
  "data-row": o + 1,
749
- style: `${S} ${D("--i", e.slot)}`
773
+ style: `${S} ${O("--i", e.slot)}`
750
774
  })), s.style.setProperty("--start", x.start.toFixed(4)), s.style.setProperty("--span", x.span.toFixed(4));
751
- let P = p + 9 * n, ee = q(s).width * n / 2;
752
- N(s, l + k * (P + Math.abs(k) * ee), u + M * (P + Math.abs(M) * r * .7), C, t), s.dataset.place = "around", v += w, b += f, y += 1;
775
+ let N = p + 9 * n, F = q(s).width * n / 2;
776
+ P(s, l + k * (N + Math.abs(k) * F), u + A * (N + Math.abs(A) * r * .7), w, t), s.dataset.place = "around", v += C, b += f, y += 1;
753
777
  }), _.length > 1) {
754
- let e = h - m / 2 - 1, n = h + m / 2 + 1, r = `tablechart-slices-${++Te}`, a = A("mask", {
778
+ let e = h - m / 2 - 1, n = h + m / 2 + 1, r = `tablechart-slices-${++Ae}`, a = j("mask", {
755
779
  id: r,
756
780
  maskUnits: "userSpaceOnUse"
757
781
  });
758
- a.appendChild(A("rect", {
782
+ a.appendChild(j("rect", {
759
783
  x: 0,
760
784
  y: 0,
761
- width: C,
785
+ width: w,
762
786
  height: t,
763
787
  fill: "white"
764
788
  }));
765
- for (let t of _) a.appendChild(A("line", {
789
+ for (let t of _) a.appendChild(j("line", {
766
790
  class: "tablechart-divide",
767
791
  x1: l + Math.cos(t) * e,
768
792
  y1: u + Math.sin(t) * e,
769
793
  x2: l + Math.cos(t) * n,
770
794
  y2: u + Math.sin(t) * n
771
795
  }));
772
- let o = A("g", { mask: `url(#${r})` });
796
+ let o = j("g", { mask: `url(#${r})` });
773
797
  for (let e of Array.from(i.querySelectorAll(`.${c}`))) o.appendChild(e);
774
- let s = A("defs");
798
+ let s = j("defs");
775
799
  s.appendChild(a), i.prepend(s, o);
776
800
  }
777
- s && N(s, l, u, C, t);
801
+ s && P(s, l, u, w, t);
778
802
  }
779
- }, Oe = [
803
+ }, Ne = [
780
804
  "circle",
781
805
  "square",
782
806
  "diamond"
783
- ], ke = (e, t) => {
784
- let n = e[t]?.marker?.toLowerCase().split(/\s+/) ?? [], r = Oe.find((e) => n.includes(e));
807
+ ], Pe = (e, t) => {
808
+ let n = e[t]?.marker?.toLowerCase().split(/\s+/) ?? [], r = Ne.find((e) => n.includes(e));
785
809
  return {
786
- shape: r ?? Oe[Math.floor(t / 2) % Oe.length],
810
+ shape: r ?? Ne[Math.floor(t / 2) % Ne.length],
787
811
  open: n.includes("open") || !n.includes("filled") && !r && t % 2 == 1
788
812
  };
789
- }, Ae = (e, t, n, r, i = {}) => {
813
+ }, Fe = (e, t, n, r, i = {}) => {
790
814
  if (e === "square") {
791
815
  let e = r * .88;
792
- return A("rect", {
816
+ return j("rect", {
793
817
  x: t - e,
794
818
  y: n - e,
795
819
  width: e * 2,
@@ -799,26 +823,26 @@ var e = "tablechart", t = "tablechart-plot", n = "tablechart-value", r = "tablec
799
823
  }
800
824
  if (e === "diamond") {
801
825
  let e = r * 1.2;
802
- return A("polygon", {
826
+ return j("polygon", {
803
827
  points: `${t},${n - e} ${t + e},${n} ${t},${n + e} ${t - e},${n}`,
804
828
  ...i
805
829
  });
806
830
  }
807
831
  if (e === "triangle") {
808
832
  let e = r * 1.3;
809
- return A("polygon", {
833
+ return j("polygon", {
810
834
  points: `${t},${n - e} ${t + e * .87},${n + e / 2} ${t - e * .87},${n + e / 2}`,
811
835
  ...i
812
836
  });
813
837
  }
814
- return A("circle", {
838
+ return j("circle", {
815
839
  cx: t,
816
840
  cy: n,
817
841
  r,
818
842
  ...i
819
843
  });
820
844
  }, X = (e) => Number(e.toFixed(2));
821
- function je(e, t) {
845
+ function Ie(e, t) {
822
846
  let n = e.length;
823
847
  if (n < 2) return e.map(() => 0);
824
848
  let r = (n) => (t[n + 1] - t[n]) / (e[n + 1] - e[n] || 1), i = Array(n).fill(0);
@@ -835,32 +859,31 @@ function je(e, t) {
835
859
  };
836
860
  return i[0] = a(0, 1, i[1]), i[n - 1] = a(n - 2, n - 1, i[n - 2]), i;
837
861
  }
838
- function Me(e, t, n, r) {
862
+ function Le(e, t, n, r) {
839
863
  let i = (t[0] - e[0]) / 3;
840
864
  return [[e[0] + i, e[1] + n * i], [t[0] - i, t[1] - r * i]];
841
865
  }
842
- function Ne(e, t, n, r) {
843
- let [i, a] = Me(e, t, n, r), o = ([e, t]) => `${X(e)},${X(t)}`;
866
+ function Re(e, t, n, r) {
867
+ let [i, a] = Le(e, t, n, r), o = ([e, t]) => `${X(e)},${X(t)}`;
844
868
  return `C${o(i)} ${o(a)} ${o(t)}`;
845
869
  }
846
- function Pe(e, t, n) {
870
+ function ze(e, t, n) {
847
871
  let r = Array(e).fill(0), i = [], a = () => {
848
- je(i.map((e) => n(e)[0]), i.map((e) => n(e)[1])).forEach((e, t) => {
872
+ Ie(i.map((e) => n(e)[0]), i.map((e) => n(e)[1])).forEach((e, t) => {
849
873
  r[i[t]] = e;
850
874
  }), i = [];
851
875
  };
852
876
  for (let n = 0; n < e; n++) t(n) ? a() : i.push(n);
853
877
  return a(), r;
854
878
  }
855
- //#endregion
856
- //#region src/js/charts/line.ts
857
- var Fe = (e) => e.map((e) => ({
879
+ // src/js/charts/line.ts
880
+ var Be = (e) => e.map((e) => ({
858
881
  ...e,
859
882
  from: 0,
860
883
  to: e.value,
861
884
  kind: "bar"
862
- })), Ie = (e) => ({
863
- segments: Fe,
885
+ })), Ve = (e) => ({
886
+ segments: Be,
864
887
  series: !0,
865
888
  stackable: !0,
866
889
  running: !0,
@@ -870,7 +893,7 @@ var Fe = (e) => e.map((e) => ({
870
893
  draw(t) {
871
894
  let { rows: n, series: r, seriesValues: a, names: o, cx: s, y: c, height: l, unit: u, labelHeight: p, svg: m, stacked: h } = t, g = t.shape === "step", _ = t.shape === "smooth", v = r.length > 1, y = r.some((e) => e.focus), b = n.length - 1, x = c(0), S = n.length > 1 ? s(1) - s(0) : s(0) * 2;
872
895
  m.style.setProperty("--_base", `${X(x)}px`);
873
- let w = (e) => `--rise:${X(x - e)}px; `, T = (e, t) => n[t]?.cells[e] ?? n[t]?.cells[0], E = (e, t) => !T(e, t) || !!T(e, t)?.missing, D = n.map((e) => h ? fe(e, r.length, !0) : null), O = (e, t) => D[t]?.[e].to ?? T(e, t)?.value ?? 0, k = (e, t) => D[t]?.[e].from ?? 0, j = (e, t) => [s(t), c(O(e, t))], M = r.map((e, t) => {
896
+ let C = (e) => `--rise:${X(x - e)}px; `, T = (e, t) => n[t]?.cells[e] ?? n[t]?.cells[0], E = (e, t) => !T(e, t) || !!T(e, t)?.missing, D = n.map((e) => h ? Y(e, r.length, !0) : null), O = (e, t) => D[t]?.[e].to ?? T(e, t)?.value ?? 0, k = (e, t) => D[t]?.[e].from ?? 0, A = (e, t) => [s(t), c(O(e, t))], M = r.map((e, t) => {
874
897
  if (!v) return {
875
898
  attrs: {},
876
899
  ink: ""
@@ -883,79 +906,79 @@ var Fe = (e) => e.map((e) => ({
883
906
  },
884
907
  ink: `--n:${t}; --m:${+!!n}; --palette:var(--tablechart-color-${t + 1}); `
885
908
  };
886
- }), P = Math.min(b, 6);
887
- t.plot.style.setProperty("--count", String(P + 1));
888
- let F = b > 0 ? P / (g ? n.length : b) : 1, I = (e) => e * F, L = (e) => `--i:${X(I(e))}`, R = (e) => {
909
+ }), N = Math.min(b, 6);
910
+ t.plot.style.setProperty("--count", String(N + 1));
911
+ let F = b > 0 ? N / (g ? n.length : b) : 1, I = (e) => e * F, L = (e) => `--i:${X(I(e))}`, R = (e) => {
889
912
  let t = [], r = -1;
890
913
  return n.forEach((n, i) => {
891
914
  E(e, i) || (r < 0 && (r = i), (i === b || E(e, i + 1)) && ((g || i > r) && t.push([r, i]), r = -1));
892
915
  }), t;
893
- }, z = (e, t) => `--i:${X(I(e) + 1)}; --d:${X(I(g ? t + 1 : t) - I(e))}`, te = (e, t) => ({
916
+ }, z = (e, t) => `--i:${X(I(e) + 1)}; --d:${X(I(g ? t + 1 : t) - I(e))}`, V = (e, t) => ({
894
917
  "data-from": e + 1,
895
918
  "data-to": t + 1,
896
919
  ...g && { "data-flat": "" }
897
- }), B = _ ? r.map((e, t) => Pe(n.length, (e) => E(t, e), (e) => j(t, e))) : [], V = _ && e ? r.map((e, t) => Pe(n.length, (e) => E(t, e), (e) => [s(e), c(k(t, e))])) : [], H = (e, t, n) => {
920
+ }), H = _ ? r.map((e, t) => ze(n.length, (e) => E(t, e), (e) => A(t, e))) : [], U = _ && e ? r.map((e, t) => ze(n.length, (e) => E(t, e), (e) => [s(e), c(k(t, e))])) : [], W = (e, t, n) => {
898
921
  let r = [];
899
922
  return e.forEach(([i, a], o) => {
900
- g ? (r.push(`H${X(i + n * S / 2)}`), o < e.length - 1 && r.push(`V${X(e[o + 1][1])}`)) : o > 0 && r.push(t ? Ne(e[o - 1], [i, a], t[o - 1], t[o]) : `L${X(i)},${X(a)}`);
923
+ g ? (r.push(`H${X(i + n * S / 2)}`), o < e.length - 1 && r.push(`V${X(e[o + 1][1])}`)) : o > 0 && r.push(t ? Re(e[o - 1], [i, a], t[o - 1], t[o]) : `L${X(i)},${X(a)}`);
901
924
  }), r;
902
- }, U = (e, t, r, i) => n.slice(t, r + 1).map((n, r) => [s(t + r), c(i(e, t + r))]), W = (e, t, n, r) => _ ? e[t].slice(n, r + 1) : null, ne = (e) => s(e) - (g ? S / 2 : 0), re = (e) => s(e) + (g ? S / 2 : 0), ie = (e) => {
903
- let t = A("g", {
925
+ }, ee = (e, t, r, i) => n.slice(t, r + 1).map((n, r) => [s(t + r), c(i(e, t + r))]), G = (e, t, n, r) => _ ? e[t].slice(n, r + 1) : null, te = (e) => s(e) - (g ? S / 2 : 0), ne = (e) => s(e) + (g ? S / 2 : 0), re = (e) => {
926
+ let t = j("g", {
904
927
  class: "tablechart-area",
905
928
  ...M[e].attrs,
906
929
  ...h && { "data-stacked": "" },
907
930
  style: M[e].ink
908
- }), n = R(e), r = A("g", {
931
+ }), n = R(e), r = j("g", {
909
932
  class: "tablechart-area-fill",
910
- style: `--rows:${X(P + 1)}; ${n.length ? z(...n[0]) : ""}`
933
+ style: `--rows:${X(N + 1)}; ${n.length ? z(...n[0]) : ""}`
911
934
  });
912
935
  t.appendChild(r);
913
936
  for (let [t, i] of n) {
914
- let n = U(e, t, i, O), a = U(e, t, i, k), o = W(V, e, t, i)?.reverse() ?? null, s = [
915
- `M${X(ne(t))},${X(a[0][1])}`,
916
- `L${X(ne(t))},${X(n[0][1])}`,
917
- ...H(n, W(B, e, t, i), 1),
918
- `L${X(re(i))},${X(a[a.length - 1][1])}`,
919
- ...H(a.reverse(), o, -1),
937
+ let n = ee(e, t, i, O), a = ee(e, t, i, k), o = G(U, e, t, i)?.reverse() ?? null, s = [
938
+ `M${X(te(t))},${X(a[0][1])}`,
939
+ `L${X(te(t))},${X(n[0][1])}`,
940
+ ...W(n, G(H, e, t, i), 1),
941
+ `L${X(ne(i))},${X(a[a.length - 1][1])}`,
942
+ ...W(a.reverse(), o, -1),
920
943
  "Z"
921
944
  ].join(" ");
922
- r.appendChild(A("path", {
945
+ r.appendChild(j("path", {
923
946
  d: s,
924
- ...te(t, i),
947
+ ...V(t, i),
925
948
  style: z(t, i)
926
949
  }));
927
950
  }
928
951
  m.appendChild(t);
929
- }, G = (e) => {
952
+ }, K = (e) => {
930
953
  let t = r[e];
931
954
  for (let [n, r] of R(e)) {
932
- let i = U(e, n, r, O), a = [`M${X(ne(n))},${X(i[0][1])}`, ...H(i, W(B, e, n, r), 1)].join(" ");
933
- m.appendChild(A("path", {
955
+ let i = ee(e, n, r, O), a = [`M${X(te(n))},${X(i[0][1])}`, ...W(i, G(H, e, n, r), 1)].join(" ");
956
+ m.appendChild(j("path", {
934
957
  class: "tablechart-series",
935
958
  ...M[e].attrs,
936
959
  d: a,
937
960
  ...t.line && { "data-line": t.line },
938
- ...te(n, r),
961
+ ...V(n, r),
939
962
  style: `${M[e].ink}${z(n, r)}`
940
963
  }));
941
964
  }
942
965
  };
943
- e && r.forEach((e, t) => ie(t)), r.forEach((e, t) => G(t)), g || (() => {
944
- let e = r.map((e, t) => v ? ke(r, t) : {
966
+ e && r.forEach((e, t) => re(t)), r.forEach((e, t) => K(t)), g || (() => {
967
+ let e = r.map((e, t) => v ? Pe(r, t) : {
945
968
  shape: "circle",
946
969
  open: !1
947
970
  }), t = (t, n, r) => {
948
- let [i, a] = j(t, n);
949
- return Ae(e[t].shape, i, a, 4 * u, {
971
+ let [i, a] = A(t, n);
972
+ return Fe(e[t].shape, i, a, 4 * u, {
950
973
  ...r,
951
- style: `${r.style ?? ""}${w(a)}${L(n)}`
974
+ style: `${r.style ?? ""}${C(a)}${L(n)}`
952
975
  });
953
976
  }, i = (e) => n.map((e, t) => t).filter((t) => !E(e, t)), a = r.flatMap((n, r) => e[r].open ? i(r).map((e) => t(r, e, {
954
977
  class: f,
955
978
  "data-row": e + 1,
956
979
  ...v && { "data-series": r + 1 }
957
980
  })) : []);
958
- ee(m, a, C, l), r.forEach((n, r) => {
981
+ B(m, a, w, l), r.forEach((n, r) => {
959
982
  for (let n of i(r)) m.appendChild(t(r, n, {
960
983
  class: d,
961
984
  ...M[r].attrs,
@@ -966,26 +989,26 @@ var Fe = (e) => e.map((e) => ({
966
989
  }));
967
990
  });
968
991
  })();
969
- let K = (e, t) => {
992
+ let ie = (e, t) => {
970
993
  let n = t;
971
994
  for (; n < b && !E(e, n + 1) && T(e, n + 1)?.value === T(e, t)?.value;) n++;
972
995
  return n;
973
- }, oe = (t, n) => {
996
+ }, ae = (t, n) => {
974
997
  let i = T(t, n);
975
998
  if (!i || i.missing || g && n > 0 && !E(t, n - 1) && T(t, n - 1)?.value === i.value || y && !r[t].focus) return "none";
976
999
  if (h) return "middle";
977
1000
  let a = i.value < 0 ? "below" : "above";
978
1001
  if (!v || y || r.length > 2) return a;
979
1002
  let o = T(1 - t, n);
980
- return !o || o.missing ? a : i.value > o.value || i.value === o.value && t === 0 || e && i.value >= 0 && j(t, n)[1] + 7 * u + p > x ? "above" : "below";
981
- }, se = v && !y && r.length > 2 && !h && !g, ce = /* @__PURE__ */ new Map();
982
- if (se) {
1003
+ return !o || o.missing ? a : i.value > o.value || i.value === o.value && t === 0 || e && i.value >= 0 && A(t, n)[1] + 7 * u + p > x ? "above" : "below";
1004
+ }, oe = v && !y && r.length > 2 && !h && !g, se = /* @__PURE__ */ new Map();
1005
+ if (oe) {
983
1006
  let e = n.flatMap((e, t) => r.map((e, n) => ({
984
1007
  s: n,
985
1008
  i: t,
986
1009
  value: T(n, t)?.value ?? 0
987
- }))).filter(({ s: e, i: t }) => oe(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"], i = ae(e.map(({ s: e, i: n, value: r }) => {
988
- let i = q(a[e][n]).width * u, [o, s] = j(e, n);
1010
+ }))).filter(({ s: e, i: t }) => ae(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"], i = le(e.map(({ s: e, i: n, value: r }) => {
1011
+ let i = q(a[e][n]).width * u, [o, s] = A(e, n);
989
1012
  return t(r).map((e) => [
990
1013
  o - i / 2,
991
1014
  e === "above" ? s - 7 * u - p : s + 7 * u,
@@ -994,7 +1017,7 @@ var Fe = (e) => e.map((e) => ({
994
1017
  ]);
995
1018
  }), r.flatMap((e, t) => n.flatMap((e, n) => {
996
1019
  if (E(t, n)) return [];
997
- let [r, i] = j(t, n);
1020
+ let [r, i] = A(t, n);
998
1021
  return [[
999
1022
  r - 4 * u,
1000
1023
  i - 4 * u,
@@ -1007,53 +1030,53 @@ var Fe = (e) => e.map((e) => ({
1007
1030
  s(b) + s(0),
1008
1031
  l
1009
1032
  ]);
1010
- e.forEach(({ s: e, i: n, value: r }, o) => ce.set(a[e][n], i[o] === null ? null : t(r)[i[o]]));
1033
+ e.forEach(({ s: e, i: n, value: r }, o) => se.set(a[e][n], i[o] === null ? null : t(r)[i[o]]));
1011
1034
  }
1012
- let le = (e, t) => se ? ce.get(a[e][t]) === null : !h && !g ? !1 : q(a[e][t]).width * u > (g ? K(e, t) - t + 1 : 1) * S - 4 * u || h && e > 0 && O(e, t) < k(e, t) ? !0 : h && Math.abs(c(k(e, t)) - c(O(e, t))) < p * 1.2;
1035
+ let ce = (e, t) => oe ? se.get(a[e][t]) === null : !h && !g ? !1 : q(a[e][t]).width * u > (g ? ie(e, t) - t + 1 : 1) * S - 4 * u || h && e > 0 && O(e, t) < k(e, t) ? !0 : h && Math.abs(c(k(e, t)) - c(O(e, t))) < p * 1.2;
1013
1036
  a.forEach((e, t) => {
1014
1037
  e.forEach((e, n) => {
1015
1038
  e.style.setProperty("--i", String(X(g ? (I(n) + I(n + 1)) / 2 : I(n))));
1016
- let r = ce.get(e) ?? oe(t, n);
1017
- if (e.dataset.place = r === "above" ? "outside" : r, e.toggleAttribute("data-left-out", r !== "none" && le(t, n)), g && r !== "none" ? e.dataset.rowEnd = String(K(t, n) + 1) : delete e.dataset.rowEnd, r === "none") return;
1039
+ let r = se.get(e) ?? ae(t, n);
1040
+ if (e.dataset.place = r === "above" ? "outside" : r, e.toggleAttribute("data-left-out", r !== "none" && ce(t, n)), g && r !== "none" ? e.dataset.rowEnd = String(ie(t, n) + 1) : delete e.dataset.rowEnd, r === "none") return;
1018
1041
  let i = q(e).width * u / 2 + 4 * u, a = s(n);
1019
- g ? a = (s(n) + s(K(t, n))) / 2 : r === "middle" && n === 0 ? a += i : r === "middle" && n === b && (a -= i);
1042
+ g ? a = (s(n) + s(ie(t, n))) / 2 : r === "middle" && n === 0 ? a += i : r === "middle" && n === b && (a -= i);
1020
1043
  let o = c(O(t, n)), d = {
1021
1044
  middle: (c(k(t, n)) - o) / 2,
1022
1045
  above: -7 * u,
1023
1046
  below: 7 * u
1024
1047
  };
1025
- N(e, a, o + d[r], C, l);
1048
+ P(e, a, o + d[r], w, l);
1026
1049
  });
1027
1050
  });
1028
- let J = o.map((e, t) => {
1051
+ let ue = o.map((e, t) => {
1029
1052
  let n = b;
1030
1053
  for (; n > 0 && E(t, n);) n--;
1031
- let [r, i] = j(t, n);
1054
+ let [r, i] = A(t, n);
1032
1055
  return {
1033
1056
  name: e,
1034
1057
  x: (g ? r + S / 2 : r) + 10 * u,
1035
1058
  y: h ? (i + c(k(t, n))) / 2 : i
1036
1059
  };
1037
- }), ue = (o[0] ? q(o[0]).height : 0) * u;
1038
- for (let e of Se(J, ue)) N(e.name, e.x, e.y, C, l);
1039
- let de = n.some((e) => e.cells.some((e) => !e.missing && e.value < 0)), Y = !e && !h && r.length === 2 && !y && !de ? l - 2 * u : x;
1040
- m.appendChild(A("line", {
1060
+ }), de = (o[0] ? q(o[0]).height : 0) * u;
1061
+ for (let e of De(ue, de)) P(e.name, e.x, e.y, w, l);
1062
+ let fe = n.some((e) => e.cells.some((e) => !e.missing && e.value < 0)), pe = !e && !h && r.length === 2 && !y && !fe ? l - 2 * u : x;
1063
+ m.appendChild(j("line", {
1041
1064
  class: i,
1042
1065
  x1: 0,
1043
1066
  x2: s(b) + s(0),
1044
- y1: Y,
1045
- y2: Y
1067
+ y1: pe,
1068
+ y2: pe
1046
1069
  }));
1047
1070
  }
1048
- }), Le = Ie(!1), Re = Ie(!0), ze = /* @__PURE__ */ new Set(), Be = (t, n) => {
1071
+ }), He = Ve(!1), Ue = Ve(!0), We = /* @__PURE__ */ new Set(), Ge = (t, n) => {
1049
1072
  if (Math.abs(t - n) <= Math.abs(n) / 100) return;
1050
1073
  let r = `[${e}] A total reads ${t}, but the steps before it add up to ${Number(n.toFixed(6))}. The chart shows your number.`;
1051
- ze.has(r) || (ze.add(r), console.warn(r));
1052
- }, Ve = {
1074
+ We.has(r) || (We.add(r), console.warn(r));
1075
+ }, Ke = {
1053
1076
  segments: (e) => {
1054
1077
  let t = 0, n = !1;
1055
1078
  return e.map((e) => {
1056
- if (e.isTotal) return n && Be(e.value, t), n = !1, t = e.value, {
1079
+ if (e.isTotal) return n && Ge(e.value, t), n = !1, t = e.value, {
1057
1080
  ...e,
1058
1081
  from: 0,
1059
1082
  to: e.value,
@@ -1071,34 +1094,34 @@ var Fe = (e) => e.map((e) => ({
1071
1094
  breakable: !0,
1072
1095
  headroom: ({ labelHeight: e, badgeHeight: t, hasAnnotations: n, unit: r }) => e + 6 * r + (n ? t * 1.6 : 0),
1073
1096
  draw({ segments: e, cx: t, y: n, barWidth: a, height: o, unit: s, svg: c, values: l, breakAt: u, insideAlign: d }) {
1074
- let f = n(0), p = ve(l, a, s), m = d ?? "center", h = e.map((t, r) => {
1097
+ let f = n(0), p = Ce(l, a, s), m = d ?? "center", h = e.map((t, r) => {
1075
1098
  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;
1076
1099
  return {
1077
1100
  top: i,
1078
1101
  length: a,
1079
1102
  down: t.kind === "down" || t.kind === "total" && (c ? t.to >= 0 : t.to < 0),
1080
- inside: !o && !p && ye(l[r], a, s)
1103
+ inside: !o && !p && we(l[r], a, s)
1081
1104
  };
1082
1105
  }), g = l[0] ? q(l[0]).height * s * .56 : 0, _ = Infinity;
1083
1106
  for (let [e, t] of h.entries()) t.inside && (_ = Math.min(_, (a - q(l[e]).width * s) / 2));
1084
- let v = e.length, y = (e, t, n = !1) => `--start:${(e / v).toFixed(4)}; --span:${(t / v).toFixed(4)}; --ease:${n ? T : "linear"};`;
1107
+ let v = e.length, y = (e, t, n = !1) => `--start:${(e / v).toFixed(4)}; --span:${(t / v).toFixed(4)}; --ease:${n ? E : "linear"};`;
1085
1108
  e.forEach((r, i) => {
1086
1109
  let o = e[i + 1];
1087
1110
  if (!o) return;
1088
1111
  let s = n(r.to), l = t(i) + a / 2, u = t(i + 1) - a / 2;
1089
- c.appendChild(A("line", {
1112
+ c.appendChild(j("line", {
1090
1113
  class: "tablechart-connector",
1091
1114
  x1: l,
1092
1115
  x2: u,
1093
1116
  y1: s,
1094
1117
  y2: s,
1095
1118
  "data-row": i + 2,
1096
- style: `${D("--i", o.slot)}; ${y(i + 1, 1 / 3)}`
1119
+ style: `${O("--i", o.slot)}; ${y(i + 1, 1 / 3)}`
1097
1120
  }));
1098
1121
  }), e.forEach((n, i) => {
1099
1122
  let { top: u, length: d, down: f, inside: p } = h[i];
1100
- c.appendChild(A("rect", {
1101
- class: j(r, n),
1123
+ c.appendChild(j("rect", {
1124
+ class: M(r, n),
1102
1125
  "data-kind": n.kind,
1103
1126
  "data-row": i + 1,
1104
1127
  "data-grow": f ? "down" : "up",
@@ -1106,18 +1129,18 @@ var Fe = (e) => e.map((e) => ({
1106
1129
  y: u,
1107
1130
  width: a,
1108
1131
  height: Math.max(d, 1),
1109
- style: `${D("--i", n.slot)}; ${y(i, 1, i === e.length - 1)}`
1132
+ style: `${O("--i", n.slot)}; ${y(i, 1, i === e.length - 1)}`
1110
1133
  }));
1111
1134
  let b = l[i];
1112
1135
  b.style.setProperty("--start", (i / v).toFixed(4)), b.style.setProperty("--span", (1 / v).toFixed(4));
1113
- let x = Math.min(_, (d - g) / 2), S = u + x + g / 2, w = u + d - x - g / 2, T = m === "center" ? u + d / 2 : m === "end" === f ? w : S;
1136
+ let x = Math.min(_, (d - g) / 2), S = u + x + g / 2, C = u + d - x - g / 2, T = m === "center" ? u + d / 2 : m === "end" === f ? C : S;
1114
1137
  b.dataset.place = p ? "inside" : "outside", b.dataset.kind = n.kind;
1115
1138
  let E = p ? T : n.kind === "down" ? u + d + q(b).height * s + 3 * s : u - 3 * s;
1116
- N(b, t(i), E, C, o);
1117
- }), c.appendChild(A("line", {
1139
+ P(b, t(i), E, w, o);
1140
+ }), c.appendChild(j("line", {
1118
1141
  class: i,
1119
1142
  x1: 0,
1120
- x2: C,
1143
+ x2: w,
1121
1144
  y1: f,
1122
1145
  y2: f
1123
1146
  }));
@@ -1132,7 +1155,7 @@ var Fe = (e) => e.map((e) => ({
1132
1155
  let i = performance.now(), a = r(), o = performance.now() - i, s = n.querySelectorAll("tbody tr").length;
1133
1156
  return o > 50 ? console.warn(`[${e}] ${t} took ${o.toFixed(1)} ms for ${s} rows, more than 50 ms.`, n) : Z.log(`${t} took ${o.toFixed(1)} ms for ${s} rows.`, n), a;
1134
1157
  }
1135
- }, He = (e) => {
1158
+ }, qe = (e) => {
1136
1159
  let t = (e?.textContent || "").trim(), n = t.match(/^(.*?)(-?\d+(?:[.,]\d+)?)(.*)$/);
1137
1160
  return {
1138
1161
  raw: t,
@@ -1142,9 +1165,9 @@ var Fe = (e) => e.map((e) => ({
1142
1165
  missing: !n,
1143
1166
  value: n ? Number.parseFloat(n[2].replace(",", ".")) : 0
1144
1167
  };
1145
- }, Ue = (e, t = "data-i18n") => Array.from(e.querySelectorAll("tbody tr")).map((e, n) => {
1146
- let r = e.querySelector("th"), i = Array.from(e.querySelectorAll("td")).map(He);
1147
- return i.length || i.push(He(null)), {
1168
+ }, Je = (e, t = "data-i18n") => Array.from(e.querySelectorAll("tbody tr")).map((e, n) => {
1169
+ let r = e.querySelector("th"), i = Array.from(e.querySelectorAll("td")).map(qe);
1170
+ return i.length || i.push(qe(null)), {
1148
1171
  ...i[0],
1149
1172
  label: (r?.textContent || "").trim(),
1150
1173
  key: t && r?.getAttribute(t) || null,
@@ -1153,8 +1176,8 @@ var Fe = (e) => e.map((e) => ({
1153
1176
  isTotal: e.getAttribute("data-kind") === "total",
1154
1177
  slot: n
1155
1178
  };
1156
- }), We = (e) => Array.from(e.querySelector("thead tr:last-child")?.children ?? []).slice(1), Ge = (e) => e === "dashed" || e === "dotted" ? e : null, Ke = (e, t, n = "data-i18n") => {
1157
- let r = We(e), i = Math.max(1, R(t.map((e) => e.cells.length)));
1179
+ }), Ye = (e) => Array.from(e.querySelector("thead tr:last-child")?.children ?? []).slice(1), Xe = (e) => e === "dashed" || e === "dotted" ? e : null, Ze = (e, t, n = "data-i18n") => {
1180
+ let r = Ye(e), i = Math.max(1, W(t.map((e) => e.cells.length)));
1158
1181
  return Array.from({ length: i }, (e, t) => {
1159
1182
  let i = r[t];
1160
1183
  return {
@@ -1162,11 +1185,11 @@ var Fe = (e) => e.map((e) => ({
1162
1185
  key: n && i?.getAttribute(n) || null,
1163
1186
  focus: i?.getAttribute("data-kind") === "focus",
1164
1187
  marker: i?.getAttribute("data-marker") ?? null,
1165
- line: Ge(i?.getAttribute("data-line")),
1188
+ line: Xe(i?.getAttribute("data-line")),
1166
1189
  group: !!i?.hasAttribute("data-group")
1167
1190
  };
1168
1191
  });
1169
- }, qe = (t, n) => {
1192
+ }, Qe = (t, n) => {
1170
1193
  if (!n) return;
1171
1194
  let r = /* @__PURE__ */ new Map();
1172
1195
  for (let i of t) {
@@ -1179,7 +1202,7 @@ var Fe = (e) => e.map((e) => ({
1179
1202
  i.querySelectorAll("tbody th").forEach((e, r) => {
1180
1203
  e.getAttribute(n) || e.setAttribute(n, `${t}-row${r + 1}`);
1181
1204
  });
1182
- let a = We(i);
1205
+ let a = Ye(i);
1183
1206
  a.length > 1 && a.forEach((e, r) => {
1184
1207
  e.getAttribute(n) || e.setAttribute(n, `${t}-col${r + 1}`);
1185
1208
  }), a.forEach((e, r) => {
@@ -1191,55 +1214,55 @@ var Fe = (e) => e.map((e) => ({
1191
1214
  });
1192
1215
  }), Z?.log?.(`Keys for "${t}" written onto ${i.querySelectorAll("tbody th").length} rows`);
1193
1216
  }
1194
- }, Je = (e) => Number(e.toPrecision(12)), Ye = (e, t) => {
1217
+ }, $e = (e) => Number(e.toPrecision(12)), et = (e, t) => {
1195
1218
  let n = e / Math.max(1, t) || 1, r = 10 ** Math.floor(Math.log10(n)), i = n / r;
1196
- return Je((i < 1.42 ? 1 : i < 3.17 ? 2 : i < 7.08 ? 5 : 10) * r);
1197
- }, Xe = (e, t, n) => {
1219
+ return $e((i < 1.42 ? 1 : i < 3.17 ? 2 : i < 7.08 ? 5 : 10) * r);
1220
+ }, tt = (e, t, n) => {
1198
1221
  let r = [];
1199
- for (let i = Math.ceil(e / n - 1e-9); i * n <= t + n * 1e-9; i++) r.push(Je(i * n));
1222
+ for (let i = Math.ceil(e / n - 1e-9); i * n <= t + n * 1e-9; i++) r.push($e(i * n));
1200
1223
  return r;
1201
- }, Ze = (e, t = e) => {
1224
+ }, nt = (e, t = e) => {
1202
1225
  do {
1203
1226
  let t = Math.round(e / 10 ** Math.floor(Math.log10(e) + 1e-9));
1204
- e = Je(e * (t === 2 ? 2.5 : 2));
1227
+ e = $e(e * (t === 2 ? 2.5 : 2));
1205
1228
  } while (Math.abs(e / t - Math.round(e / t)) > 1e-9);
1206
1229
  return e;
1207
- }, Qe = (e) => {
1230
+ }, rt = (e) => {
1208
1231
  let t = (e ?? "").trim().split(/\s+/).map(Number.parseFloat);
1209
1232
  return t.length > 1 && t.every(Number.isFinite) ? t.sort((e, t) => e - t) : null;
1210
- }, $e = (e, t, n) => {
1233
+ }, it = (e, t, n) => {
1211
1234
  if (n && n.length > 2) return {
1212
1235
  min: n[0],
1213
1236
  max: n[n.length - 1],
1214
1237
  step: 0,
1215
1238
  ticks: n
1216
1239
  };
1217
- let r = n?.[0] ?? -R(e.map((e) => -e)), i = n?.[1] ?? R(e);
1240
+ let r = n?.[0] ?? -W(e.map((e) => -e)), i = n?.[1] ?? W(e);
1218
1241
  if (!n) {
1219
1242
  let e = (i - r || Math.abs(i) || 1) * .05;
1220
1243
  r -= e, i += e;
1221
1244
  }
1222
- let a = Ye(i - r, t);
1245
+ let a = et(i - r, t);
1223
1246
  return {
1224
1247
  min: r,
1225
1248
  max: i,
1226
1249
  step: a,
1227
- ticks: Xe(r, i, a)
1250
+ ticks: tt(r, i, a)
1228
1251
  };
1229
- }, et = (e, t) => {
1252
+ }, at = (e, t) => {
1230
1253
  let { step: n, ticks: r } = e;
1231
- for (; n && r.length > 2 && !t(r);) n = Ze(n, e.step), r = Xe(e.min, e.max, n);
1254
+ for (; n && r.length > 2 && !t(r);) n = nt(n, e.step), r = tt(e.min, e.max, n);
1232
1255
  return {
1233
1256
  ...e,
1234
1257
  step: n,
1235
1258
  ticks: r
1236
1259
  };
1237
- }, tt = [
1260
+ }, ot = [
1238
1261
  "axis-break",
1239
1262
  "trend",
1240
1263
  "bracket"
1241
- ], nt = (e) => {
1242
- let t = e.hasAttribute("data-fragment"), n = Array.from(e.querySelectorAll("tbody tr")), r = Array.from(e.querySelector("thead tr:last-child")?.children ?? []).slice(1), i = Array.from(e.querySelectorAll("[data-annotation]")).filter((e) => tt.includes(e.getAttribute("data-annotation") ?? "")), a = (e) => e.hasAttribute("data-fragment"), o = n.map((e) => Array.from(e.querySelectorAll(":scope > td")));
1264
+ ], st = (e) => {
1265
+ let t = e.hasAttribute("data-fragment"), n = Array.from(e.querySelectorAll("tbody tr")), r = Array.from(e.querySelector("thead tr:last-child")?.children ?? []).slice(1), i = Array.from(e.querySelectorAll("[data-annotation]")).filter((e) => ot.includes(e.getAttribute("data-annotation") ?? "")), a = (e) => e.hasAttribute("data-fragment"), o = n.map((e) => Array.from(e.querySelectorAll(":scope > td")));
1243
1266
  if (!t && !n.some(a) && !r.some(a) && !o.flat().some(a) && !i.some(a)) return null;
1244
1267
  let s = [], c = /* @__PURE__ */ new Map(), l = [], u = (e) => {
1245
1268
  let t = e === null ? void 0 : c.get(e);
@@ -1297,7 +1320,7 @@ var Fe = (e) => e.map((e) => ({
1297
1320
  count: s.length,
1298
1321
  indexes: s
1299
1322
  };
1300
- }, rt = (e) => {
1323
+ }, ct = (e) => {
1301
1324
  let t = e.plan;
1302
1325
  if (!t) return;
1303
1326
  let n = (t) => t === null || e.step - t >= 1;
@@ -1308,7 +1331,7 @@ var Fe = (e) => e.map((e) => ({
1308
1331
  let u = r.hasAttribute("data-flat") ? (l - e + 1) / (i - e + 1) : i > e ? Math.max(0, l - e) / (i - e) : 0;
1309
1332
  r.style.setProperty("--reveal", String(u));
1310
1333
  }
1311
- }, it = (e) => {
1334
+ }, lt = (e) => {
1312
1335
  let t = e.plan;
1313
1336
  if (!t) return;
1314
1337
  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) => {
@@ -1379,19 +1402,19 @@ var Fe = (e) => e.map((e) => ({
1379
1402
  let o = /* @__PURE__ */ new Map();
1380
1403
  for (let e of a) {
1381
1404
  let t = e.reduce((e, t) => e + n(t), 0), r = 0;
1382
- for (let i of e) o.set(i.dataset.row ?? "", E(r, n(i), t)), r += n(i);
1405
+ for (let i of e) o.set(i.dataset.row ?? "", D(r, n(i), t)), r += n(i);
1383
1406
  }
1384
1407
  for (let t of e.figure.querySelectorAll("[data-row]")) {
1385
1408
  let e = o.get(t.dataset.row ?? "");
1386
1409
  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));
1387
1410
  }
1388
1411
  }
1389
- rt(e);
1390
- }, at = (e, t, n = !1) => {
1412
+ ct(e);
1413
+ }, ut = (e, t, n = !1) => {
1391
1414
  let r = e.plan;
1392
1415
  if (!r) return;
1393
1416
  let i = Math.min(Math.max(Math.round(t), 0), r.count), a = i !== e.step;
1394
- e.step = i, e.figure.style.setProperty("--_step", String(i)), rt(e);
1417
+ e.step = i, e.figure.style.setProperty("--_step", String(i)), ct(e);
1395
1418
  let [o, s] = e.controls?.querySelectorAll("button") ?? [];
1396
1419
  o && (o.disabled = i === 0), s && (s.disabled = i === r.count), a && !n && e.figure.dispatchEvent(new CustomEvent("tablechart:step", {
1397
1420
  bubbles: !0,
@@ -1400,7 +1423,7 @@ var Fe = (e) => e.map((e) => ({
1400
1423
  steps: r.count
1401
1424
  }
1402
1425
  }));
1403
- }, ot = (e, t, n) => {
1426
+ }, dt = (e, t, n) => {
1404
1427
  let r = document.createElement("div");
1405
1428
  r.className = "tablechart-controls";
1406
1429
  let i = (r) => {
@@ -1408,11 +1431,11 @@ var Fe = (e) => e.map((e) => ({
1408
1431
  i.type = "button", i.className = `tablechart-${r}`, i.dataset.go = r;
1409
1432
  let a = document.createElement("span");
1410
1433
  a.className = "tablechart-control-icon", a.setAttribute("aria-hidden", "true");
1411
- let o = A("svg", {
1434
+ let o = j("svg", {
1412
1435
  viewBox: "0 0 16 16",
1413
1436
  focusable: "false"
1414
1437
  });
1415
- o.appendChild(A("path", { d: r === "next" ? "M6 3l5 5-5 5" : "M10 3L5 8l5 5" })), a.appendChild(o);
1438
+ o.appendChild(j("path", { d: r === "next" ? "M6 3l5 5-5 5" : "M10 3L5 8l5 5" })), a.appendChild(o);
1416
1439
  let s = document.createElement("span");
1417
1440
  s.className = "tablechart-control-label", s.textContent = e[r];
1418
1441
  let c = t[r];
@@ -1429,14 +1452,14 @@ var Fe = (e) => e.map((e) => ({
1429
1452
  ]), i;
1430
1453
  };
1431
1454
  return r.append(i("previous"), i("next")), r;
1432
- }, st = (e, t, n, r = {
1455
+ }, ft = (e, t, n, r = {
1433
1456
  x: 0,
1434
1457
  y: 0,
1435
1458
  scale: 1
1436
1459
  }, i = 2, a = 8, o = 12) => {
1437
1460
  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));
1438
1461
  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`;
1439
- }, ct = "tablechart-tooltip", lt = [
1462
+ }, pt = "tablechart-tooltip", mt = [
1440
1463
  "--tablechart-surface",
1441
1464
  "--tablechart-tooltip-surface",
1442
1465
  "--tablechart-tooltip-color",
@@ -1444,51 +1467,51 @@ var Fe = (e) => e.map((e) => ({
1444
1467
  "--tablechart-tooltip-radius",
1445
1468
  "--tablechart-tooltip-padding",
1446
1469
  "--tablechart-tooltip-shadow"
1447
- ], Q = null, ut, dt, $ = null, ft = null, pt = 0, mt = () => {
1448
- clearTimeout(pt), Q && $ && (Q.hidden = !0, $ = null, ft = null);
1449
- }, ht = !1, gt = !0, _t = NaN, vt = NaN, yt = !1, bt = () => {
1450
- if (yt) return;
1451
- yt = !0, document.addEventListener("pointermove", (e) => {
1452
- e.pointerType === "mouse" && (gt = e.screenX !== _t || e.screenY !== vt, _t = e.screenX, vt = e.screenY, gt && (ht = !1));
1470
+ ], Q = null, ht, gt, $ = null, _t = null, vt = 0, yt = () => {
1471
+ clearTimeout(vt), Q && $ && (Q.hidden = !0, $ = null, _t = null);
1472
+ }, bt = !1, xt = !0, St = NaN, Ct = NaN, wt = !1, Tt = () => {
1473
+ if (wt) return;
1474
+ wt = !0, document.addEventListener("pointermove", (e) => {
1475
+ e.pointerType === "mouse" && (xt = e.screenX !== St || e.screenY !== Ct, St = e.screenX, Ct = e.screenY, xt && (bt = !1));
1453
1476
  }, {
1454
1477
  capture: !0,
1455
1478
  passive: !0
1456
1479
  });
1457
1480
  let e = () => {
1458
- ht = !0, mt();
1481
+ bt = !0, yt();
1459
1482
  };
1460
1483
  document.addEventListener("keydown", e, !0), window.addEventListener("scroll", e, {
1461
1484
  capture: !0,
1462
1485
  passive: !0
1463
1486
  });
1464
- }, xt = (e, t) => t / Number.parseFloat(getComputedStyle(e).width) || 1, St = (e) => {
1487
+ }, Et = (e, t) => t / Number.parseFloat(getComputedStyle(e).width) || 1, Dt = (e) => {
1465
1488
  let t = e.tooltipparent;
1466
1489
  return (typeof t == "string" ? document.querySelector(t) : t) ?? document.body;
1467
- }, Ct = () => {
1468
- clearTimeout(pt), pt = window.setTimeout(mt, 120);
1469
- }, wt = () => {
1490
+ }, Ot = () => {
1491
+ clearTimeout(vt), vt = window.setTimeout(yt, 120);
1492
+ }, kt = () => {
1470
1493
  let e = document.createElement("div");
1471
- return e.className = ct, e.setAttribute("aria-hidden", "true"), e.hidden = !0, ut = document.createElement("div"), dt = document.createElement("div"), dt.className = `${ct}-arrow`, e.append(ut, dt), document.body.append(e), e.addEventListener("pointerenter", () => clearTimeout(pt)), e.addEventListener("pointerleave", (e) => e.pointerType === "mouse" && Ct()), document.addEventListener("pointerdown", (t) => {
1494
+ return e.className = pt, e.setAttribute("aria-hidden", "true"), e.hidden = !0, ht = document.createElement("div"), gt = document.createElement("div"), gt.className = `${pt}-arrow`, e.append(ht, gt), document.body.append(e), e.addEventListener("pointerenter", () => clearTimeout(vt)), e.addEventListener("pointerleave", (e) => e.pointerType === "mouse" && Ot()), document.addEventListener("pointerdown", (t) => {
1472
1495
  let n = t.target;
1473
- $ && !$.plot.contains(n) && !e.contains(n) && mt();
1474
- }), window.addEventListener("resize", mt), e;
1475
- }, Tt = (e, t) => {
1496
+ $ && !$.plot.contains(n) && !e.contains(n) && yt();
1497
+ }), window.addEventListener("resize", yt), e;
1498
+ }, At = (e, t) => {
1476
1499
  let n = t ? t.style.getPropertyValue("--step") : "x";
1477
1500
  return n === "" || Number(n) < e.step;
1478
- }, Et = (e, t) => {
1501
+ }, jt = (e, t) => {
1479
1502
  let n = e.svg.querySelector(`[data-series="${t + 1}"]:not(.tablechart-hole)`);
1480
1503
  if (!n) return;
1481
1504
  let r = getComputedStyle(n);
1482
1505
  return r.fill && r.fill !== "none" ? r.fill : r.stroke;
1483
- }, Dt = (e, t, n) => {
1506
+ }, Mt = (e, t, n) => {
1484
1507
  let r = e.series.length > 1, i = [];
1485
1508
  for (let [n, a] of e.seriesValues.entries()) {
1486
- if (!Tt(e, a[t])) continue;
1509
+ if (!At(e, a[t])) continue;
1487
1510
  let o = r ? e.figure.querySelector(`.tablechart-name[data-series="${n + 1}"]`) : null;
1488
1511
  i.push({
1489
1512
  name: r ? o?.textContent ?? e.series[n].name : "",
1490
1513
  value: a[t].textContent ?? "",
1491
- colour: r ? Et(e, n) : void 0,
1514
+ colour: r ? jt(e, n) : void 0,
1492
1515
  sample: o ? {
1493
1516
  marker: o.dataset.marker ?? null,
1494
1517
  open: o.hasAttribute("data-open"),
@@ -1498,11 +1521,11 @@ var Fe = (e) => e.map((e) => ({
1498
1521
  });
1499
1522
  }
1500
1523
  let a = e.totals[t];
1501
- return i.length > 1 && Tt(e, a) && i.push({
1524
+ return i.length > 1 && At(e, a) && i.push({
1502
1525
  name: n.totallabel,
1503
1526
  value: a.textContent ?? ""
1504
1527
  }), i;
1505
- }, Ot = (e, t) => {
1528
+ }, Nt = (e, t) => {
1506
1529
  if (e.type.centre && e.values[t]) return e.values[t].getBoundingClientRect();
1507
1530
  let n = e.svg.querySelectorAll(`[data-row="${t + 1}"]:not(.tablechart-connector, .tablechart-leader)`), r = null;
1508
1531
  for (let e of n) {
@@ -1517,46 +1540,46 @@ var Fe = (e) => e.map((e) => ({
1517
1540
  100
1518
1541
  ];
1519
1542
  return new DOMRect(i.left + i.width * a / 100, i.top + i.height * o / 100, i.width * s / 100, i.height * c / 100);
1520
- }, kt = (e, t, n) => {
1521
- if (clearTimeout(pt), $ === e && ft === t) return;
1522
- let r = (e.type.tooltip ?? Dt)(e, t, n);
1523
- if (!r.length) return mt();
1524
- $ && $ !== e && mt(), Q ?? (Q = wt());
1543
+ }, Pt = (e, t, n) => {
1544
+ if (clearTimeout(vt), $ === e && _t === t) return;
1545
+ let r = (e.type.tooltip ?? Mt)(e, t, n);
1546
+ if (!r.length) return yt();
1547
+ $ && $ !== e && yt(), Q ?? (Q = kt());
1525
1548
  let i = (e, t, n, r = !1, i) => {
1526
1549
  let a = document.createElement("div");
1527
- if (a.className = `${ct}-line`, n) {
1550
+ if (a.className = `${pt}-line`, n) {
1528
1551
  let e = document.createElement("span");
1529
- e.className = `${ct}-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);
1552
+ e.className = `${pt}-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);
1530
1553
  }
1531
1554
  let o = document.createElement("span");
1532
- if (o.className = `${ct}-${r ? "title" : "name"}`, o.textContent = e, a.append(o), t) {
1555
+ if (o.className = `${pt}-${r ? "title" : "name"}`, o.textContent = e, a.append(o), t) {
1533
1556
  e && o.append(":");
1534
1557
  let n = document.createElement("span");
1535
- n.className = `${ct}-value`, n.textContent = t, a.append(n);
1558
+ n.className = `${pt}-value`, n.textContent = t, a.append(n);
1536
1559
  }
1537
1560
  return a;
1538
1561
  }, a = e.categories[t]?.textContent ?? e.rows[t].label, o = r.length === 1 && !r[0].name, s = r.every((e) => e.name && !e.value);
1539
- ut.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)));
1562
+ ht.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)));
1540
1563
  let c = getComputedStyle(e.figure);
1541
- for (let e of lt) {
1564
+ for (let e of mt) {
1542
1565
  let t = c.getPropertyValue(e).trim();
1543
1566
  t ? Q.style.setProperty(e, t) : Q.style.removeProperty(e);
1544
1567
  }
1545
1568
  Q.style.setProperty("--_color", c.color), Q.style.colorScheme = c.colorScheme, Q.style.fontFamily = c.fontFamily;
1546
- let l = St(n);
1547
- Q.parentElement !== l && l.append(Q), $ = e, ft = t, Q.hidden = !1, Q.style.left = "0px", Q.style.top = "0px";
1569
+ let l = Dt(n);
1570
+ Q.parentElement !== l && l.append(Q), $ = e, _t = t, Q.hidden = !1, Q.style.left = "0px", Q.style.top = "0px";
1548
1571
  let u = Q.getBoundingClientRect(), d = {
1549
1572
  x: u.left,
1550
1573
  y: u.top,
1551
- scale: xt(Q, u.width)
1552
- }, f = xt(e.plot, e.plot.getBoundingClientRect().width);
1553
- Q.style.fontSize = `${Number.parseFloat(c.fontSize) * f / d.scale}px`, st(Q, dt, Ot(e, t), d);
1554
- }, At = (e, t, n = !1) => {
1574
+ scale: Et(Q, u.width)
1575
+ }, f = Et(e.plot, e.plot.getBoundingClientRect().width);
1576
+ Q.style.fontSize = `${Number.parseFloat(c.fontSize) * f / d.scale}px`, ft(Q, gt, Nt(e, t), d);
1577
+ }, Ft = (e, t, n = !1) => {
1555
1578
  let { plot: r } = e;
1556
- r.setAttribute("data-hover", ""), bt();
1579
+ r.setAttribute("data-hover", ""), Tt();
1557
1580
  let i = (t) => {
1558
1581
  if (e.rowAt) {
1559
- let n = r.getBoundingClientRect(), i = xt(r, n.width);
1582
+ let n = r.getBoundingClientRect(), i = Et(r, n.width);
1560
1583
  return e.rowAt((t.clientX - n.left) / i, (t.clientY - n.top) / i);
1561
1584
  }
1562
1585
  let n = t.target.closest?.("[data-row]")?.getAttribute("data-row");
@@ -1566,13 +1589,13 @@ var Fe = (e) => e.map((e) => ({
1566
1589
  else if (t.getAttribute("data-row") === String(e + 1)) return !0;
1567
1590
  return !1;
1568
1591
  }, s = null, c = (a) => {
1569
- if (a.type === "pointerdown") ht = !1;
1570
- else if (a.pointerType === "mouse" && (!gt || ht)) return;
1592
+ if (a.type === "pointerdown") bt = !1;
1593
+ else if (a.pointerType === "mouse" && (!xt || bt)) return;
1571
1594
  if (!r.classList.contains("is-placed") || !e.figure.classList.contains("is-shown")) return;
1572
- if (n && !e.figure.hasAttribute("data-left-out")) return $ === e ? mt() : void 0;
1595
+ if (n && !e.figure.hasAttribute("data-left-out")) return $ === e ? yt() : void 0;
1573
1596
  let c = i(a);
1574
- if (s = c, c === null || o(c)) return $ === e ? mt() : void 0;
1575
- kt(e, c, t);
1597
+ if (s = c, c === null || o(c)) return $ === e ? yt() : void 0;
1598
+ Pt(e, c, t);
1576
1599
  }, l = (t) => {
1577
1600
  let n = t.target;
1578
1601
  return e.svg.contains(n) && n.hasAttribute("data-row") ? n : null;
@@ -1586,36 +1609,36 @@ var Fe = (e) => e.map((e) => ({
1586
1609
  if (!r) return;
1587
1610
  a.delete(r);
1588
1611
  let i = Number(r.getAttribute("data-row")) - 1;
1589
- s === i && !o(i) && !ht && kt(e, i, t);
1612
+ s === i && !o(i) && !bt && Pt(e, i, t);
1590
1613
  };
1591
1614
  e.svg.addEventListener("transitionend", u), e.svg.addEventListener("transitioncancel", u), r.addEventListener("pointermove", c), r.addEventListener("pointerdown", c), r.addEventListener("pointerleave", (t) => {
1592
- t.pointerType === "mouse" && (s = null, $ === e && Ct());
1615
+ t.pointerType === "mouse" && (s = null, $ === e && Ot());
1593
1616
  });
1594
- }, jt = (e) => {
1595
- $ === e && mt();
1596
- }, Mt = {
1597
- area: Re,
1598
- bar: Ce,
1599
- column: we,
1600
- donut: De,
1601
- line: Le,
1602
- waterfall: Ve
1603
- }, Nt = (e, t) => {
1604
- Mt[e] = t;
1605
- }, Pt = {
1606
- "axis-break": L,
1607
- trend: J,
1608
- bracket: re,
1609
- reference: ce
1610
- }, Ft = Object.keys(Pt), It = (e) => {
1617
+ }, It = (e) => {
1618
+ $ === e && yt();
1619
+ }, Lt = {
1620
+ area: Ue,
1621
+ bar: Oe,
1622
+ column: ke,
1623
+ donut: Me,
1624
+ line: He,
1625
+ waterfall: Ke
1626
+ }, Rt = (e, t) => {
1627
+ Lt[e] = t;
1628
+ }, zt = {
1629
+ "axis-break": U,
1630
+ trend: me,
1631
+ bracket: oe,
1632
+ reference: pe
1633
+ }, Bt = Object.keys(zt), Vt = (e) => {
1611
1634
  let t = "";
1612
1635
  for (let n = e.previousSibling; n && (t = (n.textContent ?? "") + t, !t.trim()); n = n.previousSibling);
1613
1636
  return t.trim();
1614
- }, Lt = [
1637
+ }, Ht = [
1615
1638
  "straight",
1616
1639
  "step",
1617
1640
  "smooth"
1618
- ], Rt = (e, t, n, r, i) => {
1641
+ ], Ut = (e, t, n, r, i) => {
1619
1642
  let a = t === r, [o, s, c] = a ? [
1620
1643
  Math.min(e, n),
1621
1644
  Math.max(e, n),
@@ -1626,17 +1649,17 @@ var Fe = (e) => e.map((e) => ({
1626
1649
  e
1627
1650
  ], 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;
1628
1651
  for (let [e, t] of l) e > d && u.push([d, Math.min(e, s)]), d = Math.max(d, t);
1629
- return d < s && u.push([d, s]), u.map(([e, t]) => a ? `M${k(e)},${k(c)}H${k(t)}` : `M${k(c)},${k(e)}V${k(t)}`).join("");
1630
- }, zt = (e, t) => {
1652
+ return d < s && u.push([d, s]), u.map(([e, t]) => a ? `M${A(e)},${A(c)}H${A(t)}` : `M${A(c)},${A(e)}V${A(t)}`).join("");
1653
+ }, Wt = (e, t) => {
1631
1654
  let [n, r, i, a] = [
1632
1655
  "x1",
1633
1656
  "y1",
1634
1657
  "x2",
1635
1658
  "y2"
1636
- ].map((t) => Number(e.getAttribute(t))), o = A("path", { d: Rt(n, r, i, a, t) });
1659
+ ].map((t) => Number(e.getAttribute(t))), o = j("path", { d: Ut(n, r, i, a, t) });
1637
1660
  for (let { name: t, value: n } of Array.from(e.attributes)) /^[xy][12]$/.test(t) || o.setAttribute(t, n);
1638
1661
  e.replaceWith(o);
1639
- }, Bt = (e) => Array.from((e.getAttribute("d") ?? "").matchAll(/M(-?[\d.]+),(-?[\d.]+)([HV])(-?[\d.]+)/g), ([, e, t, n, r]) => n === "H" ? [
1662
+ }, Gt = (e) => Array.from((e.getAttribute("d") ?? "").matchAll(/M(-?[\d.]+),(-?[\d.]+)([HV])(-?[\d.]+)/g), ([, e, t, n, r]) => n === "H" ? [
1640
1663
  +e,
1641
1664
  +t,
1642
1665
  +r,
@@ -1646,19 +1669,19 @@ var Fe = (e) => e.map((e) => ({
1646
1669
  +t,
1647
1670
  +e,
1648
1671
  +r
1649
- ]), Vt = (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${k(Math.max(e, t))},${k(a)}H${k(Math.min(o, t + r))}` : "" : t <= e && e <= t + r && Math.max(a, n) < Math.min(s, n + i) ? `M${k(e)},${k(Math.max(a, n))}V${k(Math.min(s, n + i))}` : "").join(""), Ht = (e, t, n) => {
1672
+ ]), Kt = (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${A(Math.max(e, t))},${A(a)}H${A(Math.min(o, t + r))}` : "" : t <= e && e <= t + r && Math.max(a, n) < Math.min(s, n + i) ? `M${A(e)},${A(Math.max(a, n))}V${A(Math.min(s, n + i))}` : "").join(""), qt = (e, t, n) => {
1650
1673
  let r = e.getAttribute(t);
1651
1674
  return r === null ? n : r !== "false";
1652
- }, Ut = (e, t) => !!t.animate && e.getAttribute("data-chart-animate") !== "false", Wt = (e, t) => {
1675
+ }, Jt = (e, t) => !!t.animate && e.getAttribute("data-chart-animate") !== "false", Yt = (e, t) => {
1653
1676
  let n = e.dataset.chartShape;
1654
- return n && Lt.includes(n) ? n : Lt.includes(t.shape) ? t.shape : "straight";
1655
- }, Gt = (e) => {
1677
+ return n && Ht.includes(n) ? n : Ht.includes(t.shape) ? t.shape : "straight";
1678
+ }, Xt = (e) => {
1656
1679
  for (let t of e.querySelectorAll("br")) {
1657
- if (t.previousElementSibling?.classList.contains("tablechart-sr") || /[.!?:;,…]$/.test(It(t))) continue;
1680
+ if (t.previousElementSibling?.classList.contains("tablechart-sr") || /[.!?:;,…]$/.test(Vt(t))) continue;
1658
1681
  let e = document.createElement("span");
1659
1682
  e.className = g, e.textContent = ". ", t.before(e);
1660
1683
  }
1661
- }, Kt = (e, t, n) => {
1684
+ }, Zt = (e, t, n) => {
1662
1685
  let r = e.querySelector("table");
1663
1686
  if (!r) return null;
1664
1687
  let i = r.querySelector("tfoot [data-chart-total]");
@@ -1669,23 +1692,23 @@ var Fe = (e) => e.map((e) => ({
1669
1692
  s && n.langattribute && o.setAttribute(n.langattribute, `${s}-total`);
1670
1693
  let c = a.insertCell();
1671
1694
  return c.setAttribute("data-chart-total", ""), c.dataset.value = t.dataset.value ?? "0", a.prepend(o), c;
1672
- }, qt = 0, Jt = (e) => {
1695
+ }, Qt = 0, $t = (e) => {
1673
1696
  let t = e.querySelector(":scope > figcaption");
1674
1697
  if (!t) return;
1675
- Gt(t);
1698
+ Xt(t);
1676
1699
  let n = (e) => e.hasAttribute("aria-label") || e.hasAttribute("aria-labelledby"), r = (e) => {
1677
- t.id || (t.id = `tablechart-caption-${++qt}`), e.setAttribute("aria-labelledby", t.id);
1700
+ t.id || (t.id = `tablechart-caption-${++Qt}`), e.setAttribute("aria-labelledby", t.id);
1678
1701
  };
1679
1702
  e.tagName === "FIGURE" && !n(e) && r(e);
1680
1703
  let i = e.querySelector("table");
1681
1704
  i && !n(i) && !i.querySelector(":scope > caption") && r(i);
1682
- }, Yt = (r, i, a = null) => {
1683
- let o = a ?? (r.getAttribute("data-chart") || "column"), s = Mt[o];
1684
- if (!s) return console.warn(`[${e}] Unknown chart type "${o}". Known types: ${Object.keys(Mt).join(", ")}.`), r.setAttribute("data-chart-empty", ""), null;
1685
- let c = Ue(r, i.langattribute);
1705
+ }, en = (r, i, a = null) => {
1706
+ let o = a ?? (r.getAttribute("data-chart") || "column"), s = Lt[o];
1707
+ if (!s) return console.warn(`[${e}] Unknown chart type "${o}". Known types: ${Object.keys(Lt).join(", ")}.`), r.setAttribute("data-chart-empty", ""), null;
1708
+ let c = Je(r, i.langattribute);
1686
1709
  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;
1687
- Jt(r);
1688
- let d = Ke(r, c, i.langattribute);
1710
+ $t(r);
1711
+ let d = Ze(r, c, i.langattribute);
1689
1712
  d.length > 1 && !s.series && !s.columns && (console.warn(`[${e}] A ${o} chart uses only the first of its ${d.length} value columns.`), d = d.slice(0, 1));
1690
1713
  let f = d.length > 1;
1691
1714
  f && r.style.setProperty("--_series-count", String(d.length));
@@ -1693,55 +1716,55 @@ var Fe = (e) => e.map((e) => ({
1693
1716
  m && !s.stackable && console.warn(`[${e}] A ${o} chart cannot be stacked.`);
1694
1717
  let h = m && !!s.stackable && f, g = document.createElement("div");
1695
1718
  g.className = t, g.setAttribute("aria-hidden", "true");
1696
- let _ = A("svg", {
1719
+ let _ = j("svg", {
1697
1720
  role: "presentation",
1698
1721
  focusable: "false"
1699
1722
  });
1700
1723
  g.appendChild(_), r.appendChild(g);
1701
- let v = s.centre ? c.filter((e) => !e.isTotal) : c, y = Math.max(0, R(v.flatMap((e) => e.cells.slice(0, d.length).map((e) => z(e.number))))), S = d.map((e, t) => Math.max(0, R(c.map((e) => z(e.cells[t]?.number ?? ""))))), C = document.createElement("div");
1724
+ let v = s.centre ? c.filter((e) => !e.isTotal) : c, y = Math.max(0, W(v.flatMap((e) => e.cells.slice(0, d.length).map((e) => ee(e.number))))), b = d.map((e, t) => Math.max(0, W(c.map((e) => ee(e.cells[t]?.number ?? ""))))), C = document.createElement("div");
1702
1725
  C.className = "tablechart-values", g.appendChild(C);
1703
1726
  let w = d.map((e, t) => c.map((e, r) => {
1704
- let i = e.cells[t] ?? e.cells[0], a = M(n, C);
1705
- 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), f && (a.dataset.series = String(t + 1)), s.columns && (a.dataset.decimals = String(S[t])), a.dataset.row = String(r + 1), a.style.setProperty("--i", String(e.slot)), a;
1727
+ let i = e.cells[t] ?? e.cells[0], a = N(n, C);
1728
+ 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), f && (a.dataset.series = String(t + 1)), s.columns && (a.dataset.decimals = String(b[t])), a.dataset.row = String(r + 1), a.style.setProperty("--i", String(e.slot)), s.numbers === !1 && (t || r) && (a.dataset.place = "none"), a;
1706
1729
  })), T = w[0], E = h && s.totals ? c.map((e, t) => {
1707
- let r = M(n, C);
1708
- r.classList.add(...e.classes), r.dataset.kind = "total", r.dataset.row = String(t + 1), r.dataset.value = String(me(e, d.length));
1730
+ let r = N(n, C);
1731
+ r.classList.add(...e.classes), r.dataset.kind = "total", r.dataset.row = String(t + 1), r.dataset.value = String(ye(e, d.length));
1709
1732
  let i = e.cells[0];
1710
1733
  return i.prefix && (r.dataset.prefix = i.prefix), i.suffix && (r.dataset.suffix = i.suffix), r.style.setProperty("--i", String(e.slot)), r;
1711
- }) : [], D = c[c.length - 1], O = d.some((e) => e.focus), k = r.getAttribute("data-chart-legend"), j = f && !s.columns && (k === null ? i.legend || s.legend !== void 0 : k !== "false") ? document.createElement("div") : null;
1712
- j && (j.className = u, j.setAttribute("aria-hidden", "true"), j.inert = !0);
1713
- let N = f && !s.columns ? d.map((e, t) => {
1714
- let n = M(l, j ?? g);
1715
- j && (n.dataset.place = "legend");
1734
+ }) : [], D = c[c.length - 1], O = d.some((e) => e.focus), k = r.getAttribute("data-chart-legend"), A = f && !s.columns && (k === null ? i.legend || s.legend !== void 0 : k !== "false") ? document.createElement("div") : null;
1735
+ A && (A.className = u, A.setAttribute("aria-hidden", "true"), A.inert = !0);
1736
+ let M = f && !s.columns ? d.map((e, t) => {
1737
+ let n = N(l, A ?? g);
1738
+ A && (n.dataset.place = "legend");
1716
1739
  let a = s.legend ?? s.swatch;
1717
- if (a && (n.dataset.swatch = a), n.textContent = e.name, !a && Wt(r, i) !== "step") {
1718
- let e = ke(d, t);
1740
+ if (a && (n.dataset.swatch = a), n.textContent = e.name, !a && Yt(r, i) !== "step") {
1741
+ let e = Pe(d, t);
1719
1742
  n.dataset.marker = e.shape, n.toggleAttribute("data-open", e.open);
1720
1743
  }
1721
1744
  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", O && !e.focus ? "1" : "0"), n.style.setProperty("--i", String(D.slot)), n;
1722
- }) : [], P = s.centre ? M(p, g) : null;
1745
+ }) : [], P = s.centre ? N(p, g) : null;
1723
1746
  if (P) {
1724
1747
  let e = c.find((e) => e.isTotal), t = e ? e.value : c.reduce((e, t) => e + Math.abs(t.value), 0);
1725
- P.dataset.value = String(t), e && (P.dataset.decimals = String(z(e.number)));
1748
+ P.dataset.value = String(t), e && (P.dataset.decimals = String(ee(e.number)));
1726
1749
  }
1727
- let ee = P && !c.some((e) => e.isTotal) ? Kt(r, P, i) : null, F = s.categories === "beside", I = document.createElement("div");
1728
- I.className = "tablechart-categories", I.setAttribute("aria-hidden", "true"), I.inert = !0, F ? I.dataset.place = "beside" : s.centre && (I.dataset.place = "key"), I.style.setProperty("--_columns", String(c.length));
1729
- let L = 0;
1750
+ let F = P && !c.some((e) => e.isTotal) ? Zt(r, P, i) : null, I = s.categories === "beside", L = document.createElement("div");
1751
+ L.className = "tablechart-categories", L.setAttribute("aria-hidden", "true"), L.inert = !0, I ? L.dataset.place = "beside" : s.centre && (L.dataset.place = "key"), L.style.setProperty("--_columns", String(c.length));
1752
+ let R = 0;
1730
1753
  for (let [e, t] of c.entries()) {
1731
1754
  let n = document.createElement("span");
1732
- n.classList.add(...t.classes), n.textContent = t.label, t.key && i.langattribute && n.setAttribute(i.langattribute, t.key), s.centre && (n.dataset.kind = t.isTotal ? "total" : "slice", t.isTotal || (n.dataset.slice = String(L + 1), n.style.setProperty("--n", String(L)), n.style.setProperty("--palette", `var(--tablechart-color-${L + 1})`), L += 1)), n.style.setProperty("--i", String(t.slot)), n.dataset.row = String(e + 1), I.appendChild(n);
1755
+ n.classList.add(...t.classes), n.textContent = t.label, t.key && i.langattribute && n.setAttribute(i.langattribute, t.key), s.centre && (n.dataset.kind = t.isTotal ? "total" : "slice", t.isTotal || (n.dataset.slice = String(R + 1), n.style.setProperty("--n", String(R)), n.style.setProperty("--palette", `var(--tablechart-color-${R + 1})`), R += 1)), n.style.setProperty("--i", String(t.slot)), n.dataset.row = String(e + 1), L.appendChild(n);
1733
1756
  }
1734
- (F ? g : r).appendChild(I), j && r.appendChild(j);
1735
- let te = d.filter((e) => !e.group), B = !s.axes && !s.centre && Ht(r, "data-chart-axis", i.axis), V = s.axes ? {
1736
- titles: te.slice(0, 2).map((e, t) => {
1737
- let n = M(`${b}-title`, g);
1757
+ (I ? g : r).appendChild(L), A && r.appendChild(A);
1758
+ let z = d.filter((e) => !e.group), B = !s.axes && !s.centre && qt(r, "data-chart-axis", i.axis), V = s.axes ? {
1759
+ titles: z.slice(0, 2).map((e, t) => {
1760
+ let n = N(`${x}-title`, g);
1738
1761
  return n.dataset.axis = t ? "y" : "x", n.textContent = e.name, e.key && i.langattribute && n.setAttribute(i.langattribute, e.key), n;
1739
1762
  }),
1740
- ticks: M(`${x}s`, g),
1763
+ ticks: N(`${S}s`, g),
1741
1764
  numbers: !0
1742
- } : B || !s.centre && Ht(r, "data-chart-grid", i.grid) ? {
1765
+ } : B || !s.centre && qt(r, "data-chart-grid", i.grid) ? {
1743
1766
  titles: [],
1744
- ticks: M(`${x}s`, g),
1767
+ ticks: N(`${S}s`, g),
1745
1768
  numbers: B
1746
1769
  } : null;
1747
1770
  s.text?.({
@@ -1751,9 +1774,9 @@ var Fe = (e) => e.map((e) => ({
1751
1774
  series: d,
1752
1775
  config: i
1753
1776
  });
1754
- let H = Ut(r, i) && !s.axes ? nt(r) : null;
1777
+ let H = Jt(r, i) && !s.axes ? st(r) : null;
1755
1778
  s.axes && r.querySelector("[data-fragment]") && Z.log(`A ${o} chart has no steps, so it is shown whole.`, r), H && r.setAttribute("data-steps", "");
1756
- let U = r.getAttribute("data-chart-keys"), W = H && i.controls ? ot({
1779
+ let U = r.getAttribute("data-chart-keys"), G = H && i.controls ? dt({
1757
1780
  previous: i.previouslabel,
1758
1781
  next: i.nextlabel,
1759
1782
  hint: i.stephint
@@ -1762,17 +1785,17 @@ var Fe = (e) => e.map((e) => ({
1762
1785
  next: U && `${U}-next`,
1763
1786
  hint: U && `${U}-step`
1764
1787
  }, i.langattribute) : null;
1765
- W && r.appendChild(W);
1766
- let ne = r.getAttribute("data-chart-table"), re = ne && Zt.includes(ne) ? ne : i.table;
1767
- if (re === "never") r.removeAttribute("data-table");
1788
+ G && r.appendChild(G);
1789
+ let te = r.getAttribute("data-chart-table"), ne = te && nn.includes(te) ? te : i.table;
1790
+ if (ne === "never") r.removeAttribute("data-table");
1768
1791
  else {
1769
- r.setAttribute("data-table", re);
1792
+ r.setAttribute("data-table", ne);
1770
1793
  let e = r.querySelector(":scope > table");
1771
1794
  e && r.append(e);
1772
1795
  }
1773
- let ie = Array.from(r.querySelectorAll("[data-annotation]")).map((t) => {
1774
- let n = t.getAttribute("data-annotation"), r = Pt[n];
1775
- if (!r) return console.warn(`[${e}] Unknown annotation "${n}". Known annotations: ${Object.keys(Pt).join(", ")}.`), null;
1796
+ let re = Array.from(r.querySelectorAll("[data-annotation]")).map((t) => {
1797
+ let n = t.getAttribute("data-annotation"), r = zt[n];
1798
+ if (!r) return console.warn(`[${e}] Unknown annotation "${n}". Known annotations: ${Object.keys(zt).join(", ")}.`), null;
1776
1799
  let i = Number.parseInt(t.getAttribute("data-series") ?? "1", 10), a = i >= 1 && i <= d.length ? i - 1 : 0;
1777
1800
  return i !== a + 1 && console.warn(`[${e}] An annotation reads line ${i}, which is not there; it reads line 1.`), {
1778
1801
  spec: t,
@@ -1782,8 +1805,8 @@ var Fe = (e) => e.map((e) => ({
1782
1805
  after: c.length
1783
1806
  };
1784
1807
  }).filter((e) => e !== null);
1785
- Ut(r, i) && r.setAttribute("data-animate", Qt(r, o, i, !!H));
1786
- let G = {
1808
+ Jt(r, i) && r.setAttribute("data-animate", rn(r, o, i, !!H));
1809
+ let K = {
1787
1810
  figure: r,
1788
1811
  plot: g,
1789
1812
  svg: _,
@@ -1793,116 +1816,119 @@ var Fe = (e) => e.map((e) => ({
1793
1816
  values: T,
1794
1817
  series: d,
1795
1818
  seriesValues: w,
1796
- names: j ? [] : N,
1797
- categories: Array.from(I.children),
1819
+ names: A ? [] : M,
1820
+ categories: Array.from(L.children),
1798
1821
  centre: P,
1799
1822
  axes: V,
1800
1823
  stacked: h,
1801
1824
  totals: E,
1802
- totalCell: ee,
1825
+ totalCell: F,
1803
1826
  rowAt: null,
1804
1827
  rowBox: null,
1805
- annotations: ie,
1828
+ annotations: re,
1806
1829
  checks: [],
1807
1830
  plan: H,
1808
1831
  step: 0,
1809
- controls: W
1810
- }, ae = () => cn(r, _);
1811
- _.addEventListener("transitionend", ae), _.addEventListener("transitioncancel", ae), W?.addEventListener("click", (e) => {
1832
+ controls: G
1833
+ }, ie = () => pn(r, _);
1834
+ _.addEventListener("transitionend", ie), _.addEventListener("transitioncancel", ie), G?.addEventListener("click", (e) => {
1812
1835
  let t = e.target.closest("button")?.dataset.go;
1813
- t && at(G, G.step + (t === "next" ? 1 : -1));
1814
- }), at(G, 0, !0);
1815
- let K = r.getAttribute("data-chart-tooltip"), oe = K === "false" ? !1 : K === "auto" ? "auto" : K !== null || i.tooltip;
1816
- return oe && At(G, i, oe === "auto"), rn(G, i), G;
1817
- }, Xt = {
1836
+ t && ut(K, K.step + (t === "next" ? 1 : -1));
1837
+ }), ut(K, 0, !0);
1838
+ let ae = r.getAttribute("data-chart-tooltip"), oe = ae === "false" ? !1 : ae === "auto" ? "auto" : ae !== null || i.tooltip;
1839
+ return oe && Ft(K, i, oe === "auto"), ln(K, i), K;
1840
+ }, tn = {
1818
1841
  grow: "grow",
1819
1842
  sweep: "sweep"
1820
- }, Zt = [
1843
+ }, nn = [
1821
1844
  "never",
1822
1845
  "auto",
1823
1846
  "print",
1824
1847
  "always"
1825
- ], Qt = (e, t, n, r) => {
1826
- let i = t === "line" || t === "area", a = Xt[e.getAttribute("data-chart-animate") ?? ""] ?? Xt[String(n.animate)];
1848
+ ], rn = (e, t, n, r) => {
1849
+ let i = t === "line" || t === "area", a = tn[e.getAttribute("data-chart-animate") ?? ""] ?? tn[String(n.animate)];
1827
1850
  return i ? r ? "sweep" : a ?? "sweep" : t === "donut" || t === "waterfall" ? a ?? "grow" : "grow";
1828
- }, $t = (e) => {
1851
+ }, an = (e) => {
1829
1852
  let t = getComputedStyle(e).getPropertyValue("--tablechart-value-align").trim();
1830
1853
  return t === "start" || t === "center" || t === "end" ? t : null;
1831
- }, en = (e, t, n, r) => {
1854
+ }, on = (e, t, n, r) => {
1832
1855
  let i = getComputedStyle(e), a = (i.getPropertyValue(n).trim() || r).match(/^(\d+(?:\.\d+)?)(px|%|em|rem)$/);
1833
1856
  if (!a) return null;
1834
1857
  let o = Number(a[1]);
1835
- return a[2] === "%" ? o / 100 * C : o * (a[2] === "em" ? Number.parseFloat(i.fontSize) : a[2] === "rem" ? Number.parseFloat(getComputedStyle(document.documentElement).fontSize) : 1) * t;
1836
- }, tn = (e, t) => en(e, t, "--tablechart-bar-max", "60px") ?? Infinity, nn = (t, n) => {
1837
- let { plot: r, svg: i, rows: a, type: s, values: c, series: l, seriesValues: u, names: d, annotations: p } = t, m = Number.parseFloat(t.figure.dataset.chartAspect ?? ""), g = m > 0 ? m : s.aspect ?? n.aspect, _ = s.categories === "beside", v = t.axes && !s.axes ? t.axes : null, y = _ ? null : t.categories[0]?.parentElement, w = null;
1838
- if (v) {
1839
- r.style.margin = "", y && (y.style.marginLeft = "");
1858
+ return a[2] === "%" ? o / 100 * w : o * (a[2] === "em" ? Number.parseFloat(i.fontSize) : a[2] === "rem" ? Number.parseFloat(getComputedStyle(document.documentElement).fontSize) : 1) * t;
1859
+ }, sn = (e, t) => on(e, t, "--tablechart-bar-max", "60px") ?? Infinity, cn = (t, n) => {
1860
+ let { plot: r, svg: i, rows: c, type: l, values: u, series: d, seriesValues: p, names: m, annotations: g } = t, _ = Number.parseFloat(t.figure.dataset.chartAspect ?? ""), v = _ > 0 ? _ : l.aspect ?? n.aspect, y = l.categories === "beside", b = t.axes && !l.axes ? t.axes : null, T = y ? null : t.categories[0]?.parentElement, E = null;
1861
+ if (b) {
1862
+ r.style.margin = "", T && (T.style.marginLeft = "");
1840
1863
  let e = r.clientWidth;
1841
1864
  if (!e) return !1;
1842
- let i = s.segments?.(a) ?? [], o = t.stacked ? a.flatMap((e) => Object.values(pe(e, l.length, s.running))) : i.some((e) => e.kind === "up" || e.kind === "down") ? i.flatMap((e) => [e.from, e.to]) : a.flatMap((e) => e.cells.slice(0, l.length).filter((e) => !e.missing).map((e) => e.value)), c = Math.min(0, -R(o.map((e) => -e))), u = Math.max(0, R(o)), d = Number.parseFloat(getComputedStyle(r).fontSize) || 16, { chartScaleY: f, chartScale: p } = t.figure.dataset, m = Qe(f ?? p);
1843
- if (m && m.length > 2) w = {
1865
+ let i = l.segments?.(c) ?? [], a = t.stacked ? c.flatMap((e) => Object.values(ve(e, d.length, l.running))) : i.some((e) => e.kind === "up" || e.kind === "down") ? i.flatMap((e) => [e.from, e.to]) : c.flatMap((e) => e.cells.slice(0, d.length).filter((e) => !e.missing).map((e) => e.value)), o = Math.min(0, -W(a.map((e) => -e))), s = Math.max(0, W(a)), u = Number.parseFloat(getComputedStyle(r).fontSize) || 16, { chartScaleY: f, chartScale: p } = t.figure.dataset, m = rt(f ?? p);
1866
+ if (m && m.length > 2) E = {
1844
1867
  min: m[0],
1845
1868
  max: m[m.length - 1],
1846
1869
  step: 0,
1847
1870
  ticks: m
1848
1871
  };
1849
1872
  else {
1850
- let [t, n] = m ?? [c, u], r = Ye(n - t, Math.max((_ ? e / 9 : e * g / 3) / d, 2)), i = (e, t) => m ? e : Number(((t ? Math.ceil : Math.floor)(e / r - 1e-9 * (t ? 1 : -1)) * r).toPrecision(12)), a = i(t, !1), o = i(n, !0);
1851
- w = {
1873
+ let [t, n] = m ?? [o, s], r = et(n - t, Math.max((y ? e / 9 : e * v / 3) / u, 2)), i = (e, t) => m ? e : Number(((t ? Math.ceil : Math.floor)(e / r - 1e-9 * (t ? 1 : -1)) * r).toPrecision(12)), a = i(t, !1), c = i(n, !0);
1874
+ E = {
1852
1875
  min: a,
1853
- max: o,
1876
+ max: c,
1854
1877
  step: r,
1855
- ticks: Xe(a, o, r)
1878
+ ticks: tt(a, c, r)
1856
1879
  };
1857
1880
  }
1858
- v.ticks.textContent = "";
1859
- let h = a.find((e) => !e.missing), b = R(w.ticks.map((e) => z(String(e))));
1860
- for (let e of w.ticks) {
1861
- let t = M(x, v.ticks);
1862
- t.dataset.value = String(e), t.dataset.place = "none", h?.prefix && (t.dataset.prefix = h.prefix), h?.suffix && (t.dataset.suffix = h.suffix), an(t, b, n.locale);
1881
+ b.ticks.textContent = "";
1882
+ let h = c.find((e) => !e.missing), g = W(E.ticks.map((e) => ee(String(e))));
1883
+ for (let e of E.ticks) {
1884
+ let t = N(S, b.ticks);
1885
+ t.dataset.value = String(e), t.dataset.place = "none", h?.prefix && (t.dataset.prefix = h.prefix), h?.suffix && (t.dataset.suffix = h.suffix), un(t, g, n.locale);
1863
1886
  }
1864
- if (v.numbers) {
1865
- let e = Array.from(v.ticks.children);
1887
+ if (b.numbers) {
1888
+ let e = Array.from(b.ticks.children);
1866
1889
  for (let t of e) delete t.dataset.place;
1867
- oe(e), _ ? r.style.marginBottom = `${(e[0] ? q(e[0]).height : 0) + 6}px` : (r.style.marginLeft = `${R([0, ...e.map((e) => q(e).width)]) + 10}px`, y && (y.style.marginLeft = r.style.marginLeft));
1890
+ de(e), y ? r.style.marginBottom = `${(e[0] ? q(e[0]).height : 0) + 6}px` : (r.style.marginLeft = `${W([0, ...e.map((e) => q(e).width)]) + 10}px`, T && (T.style.marginLeft = r.style.marginLeft));
1868
1891
  }
1869
1892
  }
1870
- let T = r.clientWidth;
1871
- if (!T) return !1;
1872
- let E = C / T, D = C * g;
1893
+ let D = r.clientWidth;
1894
+ if (!D) return !1;
1895
+ let O = w / D, k = w * v;
1873
1896
  r.classList.add(h);
1874
- for (let e of [...u.flat(), ...t.totals]) delete e.dataset.place;
1897
+ let M = l.numbers === !1 ? u.slice(0, 1) : [...p.flat(), ...t.totals];
1898
+ for (let e of M) delete e.dataset.place;
1875
1899
  r.style.removeProperty("--_fit"), t.categories[0]?.parentElement?.style.removeProperty("--_beside");
1876
- let O = s.axes ? t.axes : null, j = [];
1877
- if (O) {
1878
- let e = Number.parseFloat(getComputedStyle(r).fontSize) || 16, i = l.flatMap((e, t) => e.group ? [] : [t]).slice(0, 2), o = a.filter((e) => i.every((t) => e.cells[t] && !e.cells[t].missing)), { chartScaleX: s, chartScaleY: c, chartScale: u } = t.figure.dataset, d = [Qe(s), Qe(c ?? u)];
1879
- j = i.map((t, n) => $e(o.length ? o.map((e) => e.cells[t].value) : [0, 1], Math.max(n ? D / E / (e * 4) : T / (e * 9), 4), d[n])), O.ticks.textContent = "", j.forEach((e, t) => {
1880
- let r = o[0]?.cells[i[t]], a = R(e.ticks.map((e) => z(String(e))));
1900
+ let F = l.axes ? t.axes : null, I = [];
1901
+ if (F) {
1902
+ let e = Number.parseFloat(getComputedStyle(r).fontSize) || 16, i = d.flatMap((e, t) => e.group ? [] : [t]).slice(0, 2), a = c.filter((e) => i.every((t) => e.cells[t] && !e.cells[t].missing)), { chartScaleX: o, chartScaleY: s, chartScale: l } = t.figure.dataset, u = [rt(o), rt(s ?? l)];
1903
+ I = i.map((t, n) => it(a.length ? a.map((e) => e.cells[t].value) : [0, 1], Math.max(n ? k / O / (e * 4) : D / (e * 9), 4), u[n])), F.ticks.textContent = "", I.forEach((e, t) => {
1904
+ let r = a[0]?.cells[i[t]], o = W(e.ticks.map((e) => ee(String(e))));
1881
1905
  for (let i of e.ticks) {
1882
- let e = M(x, O.ticks);
1883
- 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), an(e, a, n.locale);
1906
+ let e = N(S, F.ticks);
1907
+ 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), un(e, o, n.locale);
1884
1908
  }
1885
1909
  });
1886
1910
  }
1887
- let P = O ? Array.from(O.ticks.children) : [];
1888
- oe([
1889
- ...u.flat(),
1911
+ let L = F ? Array.from(F.ticks.children) : [];
1912
+ de([
1913
+ ...p.flat(),
1890
1914
  ...t.totals,
1891
- ...d,
1915
+ ...m,
1892
1916
  ...t.categories,
1893
- ...p.map((e) => e.badge),
1894
- ...O?.titles ?? [],
1895
- ...P
1917
+ ...g.map((e) => e.badge),
1918
+ ...F?.titles ?? [],
1919
+ ...L
1896
1920
  ]);
1897
- let F = (c[0] ? q(c[0]).height : 0) * E, I = p[0]?.badge ? q(p[0].badge).height * E : 0, L = Math.max(D, en(t.figure, E, "--tablechart-min-height", "200px") ?? 0, s.minHeight?.({
1898
- labelHeight: F,
1899
- nameHeight: Math.max(0, R(t.categories.map((e) => q(e).height))) * E,
1900
- unit: E,
1901
- rows: a.length,
1902
- series: l.length,
1921
+ let R = (u[0] ? q(u[0]).height : 0) * O;
1922
+ l.numbers === !1 && u[0] && (u[0].dataset.place = "none");
1923
+ let V = g[0]?.badge ? q(g[0].badge).height * O : 0, H = Math.max(k, on(t.figure, O, "--tablechart-min-height", "200px") ?? 0, l.minHeight?.({
1924
+ labelHeight: R,
1925
+ nameHeight: Math.max(0, W(t.categories.map((e) => q(e).height))) * O,
1926
+ unit: O,
1927
+ rows: c.length,
1928
+ series: d.length,
1903
1929
  stacked: t.stacked
1904
- }) ?? 0), te = t.stacked ? a.map((e) => {
1905
- let t = me(e, l.length);
1930
+ }) ?? 0), U = t.stacked ? c.map((e) => {
1931
+ let t = ye(e, d.length);
1906
1932
  return {
1907
1933
  ...e,
1908
1934
  value: t,
@@ -1911,184 +1937,184 @@ var Fe = (e) => e.map((e) => ({
1911
1937
  value: t
1912
1938
  } : e)
1913
1939
  };
1914
- }) : a, B = (s.segments ?? ((e) => e.map((e) => ({
1940
+ }) : c, G = (l.segments ?? ((e) => e.map((e) => ({
1915
1941
  ...e,
1916
1942
  from: 0,
1917
1943
  to: e.value,
1918
1944
  kind: "bar"
1919
- }))))(t.stacked ? te.map((e) => ({
1945
+ }))))(t.stacked ? U.map((e) => ({
1920
1946
  ...e,
1921
1947
  cells: [e.cells[0]]
1922
- })) : a), V = {
1923
- labelHeight: F,
1924
- badgeHeight: I,
1925
- hasAnnotations: p.length > 0,
1926
- unit: E,
1927
- series: l.length,
1928
- focused: l.some((e) => e.focus),
1948
+ })) : c), te = {
1949
+ labelHeight: R,
1950
+ badgeHeight: V,
1951
+ hasAnnotations: g.length > 0,
1952
+ unit: O,
1953
+ series: d.length,
1954
+ focused: d.some((e) => e.focus),
1929
1955
  stacked: t.stacked
1930
- }, H = Math.max(((e) => t.stacked ? e(a.map((e) => pe(e, l.length, s.running).top)) : e([...B.flatMap((e) => [
1956
+ }, ne = Math.max(((e) => t.stacked ? e(c.map((e) => ve(e, d.length, l.running).top)) : e([...G.flatMap((e) => [
1931
1957
  e.from,
1932
1958
  e.to,
1933
1959
  e.value
1934
- ]), ...a.flatMap((e) => e.cells.slice(0, l.length).map((e) => e.value))]))(R), 0), U = B.some((e) => e.kind === "up" || e.kind === "down") ? B.flatMap((e) => [e.from, e.to]) : t.stacked ? a.map((e) => pe(e, l.length, s.running).bottom) : a.flatMap((e) => e.cells.slice(0, l.length).map((e) => e.value)), W = Math.min(-R(U.map((e) => -e)), 0), ne = s.headroom?.(V) ?? F, re = 2 * E + (s.footroom?.(V) ?? 0) + (W < 0 ? F + 4 * E : 0), ie = L - ne - re, G = w ? Math.max(w.max, H) : H * 1.02, ae = w ? Math.min(w.min, W) : W * 1.02, K = p.find((e) => e.spec.getAttribute("data-annotation") === "axis-break")?.spec, se = (e) => {
1935
- let t = Number.parseFloat(K?.getAttribute(e) ?? "");
1960
+ ]), ...c.flatMap((e) => e.cells.slice(0, d.length).map((e) => e.value))]))(W), 0), re = G.some((e) => e.kind === "up" || e.kind === "down") ? G.flatMap((e) => [e.from, e.to]) : t.stacked ? c.map((e) => ve(e, d.length, l.running).bottom) : c.flatMap((e) => e.cells.slice(0, d.length).map((e) => e.value)), K = Math.min(-W(re.map((e) => -e)), 0), ie = l.headroom?.(te) ?? R, ae = 2 * O + (l.footroom?.(te) ?? 0) + (K < 0 ? R + 4 * O : 0), oe = H - ie - ae, se = E ? Math.max(E.max, ne) : ne * 1.02, ce = E ? Math.min(E.min, K) : K * 1.02, le = g.find((e) => e.spec.getAttribute("data-annotation") === "axis-break")?.spec, ue = (e) => {
1961
+ let t = Number.parseFloat(le?.getAttribute(e) ?? "");
1936
1962
  return Number.isFinite(t) ? t : null;
1937
- }, ce = se("data-from") ?? se("data-at"), le = se("data-to"), J = null;
1938
- if (K && (ce !== null || le !== null)) {
1939
- let t = ce ?? 0, n = le ?? G, r = le === null ? t : ce === null ? n : (t + n) / 2, i = K.getAttribute("data-size"), a = i?.match(/^\s*(\d+(?:\.\d+)?)\s*%\s*$/);
1963
+ }, fe = ue("data-from") ?? ue("data-at"), pe = ue("data-to"), J = null;
1964
+ if (le && (fe !== null || pe !== null)) {
1965
+ let t = fe ?? 0, n = pe ?? se, r = pe === null ? t : fe === null ? n : (t + n) / 2, i = le.getAttribute("data-size"), a = i?.match(/^\s*(\d+(?:\.\d+)?)\s*%\s*$/);
1940
1966
  i !== null && !a && console.warn(`[${e}] data-size="${i}" is not a percentage, such as 30%. Using the default.`);
1941
- let o = Math.min(Math.max(a ? Number(a[1]) / 100 : le === null ? .22 : .3, .05), .8), c = B.filter((e) => (e.kind === "up" || e.kind === "down") && Math.max(e.from, e.to) > t && Math.min(e.from, e.to) < n);
1942
- s.breakable ? W < 0 ? console.warn(`[${e}] A chart with values below zero cannot break its scale.`) : t < 0 || n <= t || n > G || t === 0 && n === G ? console.warn(`[${e}] A break from ${t} to ${n} does not fit a scale that runs from 0 to ${H}.`) : c.length ? console.warn(`[${e}] A break from ${t} to ${n} would cut a step that floats. Keep it below or above the steps.`) : J = {
1967
+ let o = Math.min(Math.max(a ? Number(a[1]) / 100 : pe === null ? .22 : .3, .05), .8), s = G.filter((e) => (e.kind === "up" || e.kind === "down") && Math.max(e.from, e.to) > t && Math.min(e.from, e.to) < n);
1968
+ l.breakable ? K < 0 ? console.warn(`[${e}] A chart with values below zero cannot break its scale.`) : t < 0 || n <= t || n > se || t === 0 && n === se ? console.warn(`[${e}] A break from ${t} to ${n} does not fit a scale that runs from 0 to ${ne}.`) : s.length ? console.warn(`[${e}] A break from ${t} to ${n} would cut a step that floats. Keep it below or above the steps.`) : J = {
1943
1969
  lo: t,
1944
1970
  hi: n,
1945
1971
  gap: r,
1946
1972
  share: o
1947
1973
  } : console.warn(`[${e}] This kind of chart cannot break its scale.`);
1948
1974
  }
1949
- let ue = J ? J.gap : null, de = (J && en(t.figure, E, "--tablechart-break-gap", "")) ?? 13, Y = L - re, fe = G - ae || 1, he = (e) => Y - (e - ae) / fe * ie;
1975
+ let me = J ? J.gap : null, he = (J && on(t.figure, O, "--tablechart-break-gap", "")) ?? 13, ge = H - ae, _e = se - ce || 1, Y = (e) => ge - (e - ce) / _e * oe;
1950
1976
  if (J) {
1951
- let { lo: e, hi: t, gap: n, share: r } = J, i = ie * r, a = (ie - i - de) / (e + (G - t)), o = i / (t - e);
1952
- he = (r) => r <= e ? Y - r * a : r <= n ? Y - e * a - (r - e) * o : r <= t ? Y - e * a - (r - e) * o - de : Y - e * a - i - de - (r - t) * a;
1977
+ let { lo: e, hi: t, gap: n, share: r } = J, i = oe * r, a = (oe - i - he) / (e + (se - t)), o = i / (t - e);
1978
+ Y = (r) => r <= e ? ge - r * a : r <= n ? ge - e * a - (r - e) * o : r <= t ? ge - e * a - (r - e) * o - he : ge - e * a - i - he - (r - t) * a;
1953
1979
  }
1954
- let ge, _e, ve = [];
1955
- if (O) {
1956
- let e = 6 * E, [t, n] = O.titles, r = (e) => e ? q(e).width * E : 0, i = (e) => e ? q(e).height * E : 0, a = P.filter((e) => e.dataset.axis === "x"), o = P.filter((e) => e.dataset.axis === "y"), s = i(P[0]), c = r(n) + R([0, ...o.map(r)]) + 2 * e, l = s / 2;
1957
- _e = [
1980
+ let be, xe, Se = [];
1981
+ if (F) {
1982
+ let e = 6 * O, [t, n] = F.titles, r = (e) => e ? q(e).width * O : 0, i = (e) => e ? q(e).height * O : 0, a = L.filter((e) => e.dataset.axis === "x"), o = L.filter((e) => e.dataset.axis === "y"), s = i(L[0]), c = r(n) + W([0, ...o.map(r)]) + 2 * e, l = s / 2;
1983
+ xe = [
1958
1984
  c,
1959
1985
  l,
1960
- C - c - R([0, ...a.map(r)]) / 2,
1961
- L - l - i(t) - s - 2 * e
1986
+ w - c - W([0, ...a.map(r)]) / 2,
1987
+ H - l - i(t) - s - 2 * e
1962
1988
  ];
1963
- let [u, d, f, p] = _e, [m, h] = j, g = (e) => u + (e - m.min) / (m.max - m.min || 1) * f, _ = (e) => d + p - (e - h.min) / (h.max - h.min || 1) * p;
1964
- ge = g, he = _;
1989
+ let [u, d, f, p] = xe, [m, h] = I, g = (e) => u + (e - m.min) / (m.max - m.min || 1) * f, _ = (e) => d + p - (e - h.min) / (h.max - h.min || 1) * p;
1990
+ be = g, Y = _;
1965
1991
  let v = (e) => r(a.find((t) => Number(t.dataset.value) === e));
1966
- ve = [et(m, (t) => t.every((n, r) => !r || g(n) - g(t[r - 1]) > (v(n) + v(t[r - 1])) / 2 + e)).ticks, et(h, (t) => t.every((n, r) => !r || _(t[r - 1]) - _(n) > s + e / 2)).ticks];
1967
- for (let t of P) {
1968
- let n = Number(t.dataset.value), r = t.dataset.axis === "x" ? 0 : 1, i = ve[r].includes(n);
1969
- t.dataset.place = i ? r ? "before" : "below" : "none", i && N(t, r ? u - e : g(n), r ? _(n) : d + p + e, C, L);
1992
+ Se = [at(m, (t) => t.every((n, r) => !r || g(n) - g(t[r - 1]) > (v(n) + v(t[r - 1])) / 2 + e)).ticks, at(h, (t) => t.every((n, r) => !r || _(t[r - 1]) - _(n) > s + e / 2)).ticks];
1993
+ for (let t of L) {
1994
+ let n = Number(t.dataset.value), r = t.dataset.axis === "x" ? 0 : 1, i = Se[r].includes(n);
1995
+ t.dataset.place = i ? r ? "before" : "below" : "none", i && P(t, r ? u - e : g(n), r ? _(n) : d + p + e, w, H);
1970
1996
  }
1971
- t && N(t, u + f / 2, L - i(t), C, L), n && N(n, 0, d + p / 2, C, L);
1997
+ t && P(t, u + f / 2, H - i(t), w, H), n && P(n, 0, d + p / 2, w, H);
1972
1998
  }
1973
- let ye = d.length ? R(d.map((e) => q(e).width)) * E + 12 * E : 0, be = t.categories[0]?.parentElement;
1974
- be && (be.style.paddingRight = ye ? `${ye / C * 100}%` : "");
1975
- let Se = (C - ye) / a.length, Ce = (e) => (e + .5) * Se, we = (e) => e >= 0 && e < a.length ? e : null;
1976
- t.rowAt = s.centre ? null : s.categories === "beside" ? (e, t) => we(Math.floor(t * E / (L / a.length))) : (e) => we(Math.floor(e * E / Se));
1977
- let Te = Se / C * 100, Ee = 100 / a.length;
1978
- if (t.rowBox = s.categories === "beside" ? (e) => [
1999
+ let Ce = m.length ? W(m.map((e) => q(e).width)) * O + 12 * O : 0, we = t.categories[0]?.parentElement;
2000
+ we && (we.style.paddingRight = Ce ? `${Ce / w * 100}%` : "");
2001
+ let Te = (w - Ce) / c.length, De = (e) => (e + .5) * Te, Oe = (e) => e >= 0 && e < c.length ? e : null;
2002
+ t.rowAt = l.centre ? null : l.categories === "beside" ? (e, t) => Oe(Math.floor(t * O / (H / c.length))) : (e) => Oe(Math.floor(e * O / Te));
2003
+ let ke = Te / w * 100, Ae = 100 / c.length;
2004
+ if (t.rowBox = l.categories === "beside" ? (e) => [
1979
2005
  0,
1980
- e * Ee,
2006
+ e * Ae,
1981
2007
  100,
1982
- Ee
2008
+ Ae
1983
2009
  ] : (e) => [
1984
- e * Te,
2010
+ e * ke,
1985
2011
  0,
1986
- Te,
2012
+ ke,
1987
2013
  100
1988
- ], i.setAttribute("viewBox", `0 0 ${C} ${k(L)}`), i.textContent = "", _e && ge) {
1989
- let [e, r, a, o] = _e, [s, c] = ve, l = ge;
1990
- Ht(t.figure, "data-chart-grid", n.grid) && i.appendChild(A("path", {
1991
- class: S,
1992
- d: [...s.map((e) => `M${k(l(e))},${k(r)}V${k(r + o)}`), ...c.map((t) => `M${k(e)},${k(he(t))}H${k(e + a)}`)].join("")
1993
- })), i.appendChild(A("path", {
1994
- class: b,
2014
+ ], i.setAttribute("viewBox", `0 0 ${w} ${A(H)}`), i.textContent = "", xe && be) {
2015
+ let [e, r, a, o] = xe, [s, c] = Se, l = be;
2016
+ qt(t.figure, "data-chart-grid", n.grid) && i.appendChild(j("path", {
2017
+ class: C,
2018
+ d: [...s.map((e) => `M${A(l(e))},${A(r)}V${A(r + o)}`), ...c.map((t) => `M${A(e)},${A(Y(t))}H${A(e + a)}`)].join("")
2019
+ })), i.appendChild(j("path", {
2020
+ class: x,
1995
2021
  d: [
1996
- `M${k(e)},${k(r)}V${k(r + o)}H${k(e + a)}`,
1997
- ...s.map((e) => `M${k(l(e))},${k(r + o)}v${k(4 * E)}`),
1998
- ...c.map((t) => `M${k(e)},${k(he(t))}h${k(-4 * E)}`)
2022
+ `M${A(e)},${A(r)}V${A(r + o)}H${A(e + a)}`,
2023
+ ...s.map((e) => `M${A(l(e))},${A(r + o)}v${A(4 * O)}`),
2024
+ ...c.map((t) => `M${A(e)},${A(Y(t))}h${A(-4 * O)}`)
1999
2025
  ].join("")
2000
2026
  }));
2001
2027
  }
2002
2028
  t.checks = [];
2003
- let De = {
2004
- rows: a,
2005
- segments: B,
2006
- cx: Ce,
2007
- y: he,
2008
- x: ge,
2009
- frame: _e,
2010
- length: (e, n) => en(t.figure, E, e, n),
2011
- barWidth: Math.min(Se * n.barfill, tn(t.figure, E)),
2012
- barMax: tn(t.figure, E),
2013
- height: L,
2014
- unit: E,
2015
- labelHeight: F,
2016
- badgeHeight: I,
2017
- after: a.length,
2029
+ let je = {
2030
+ rows: c,
2031
+ segments: G,
2032
+ cx: De,
2033
+ y: Y,
2034
+ x: be,
2035
+ frame: xe,
2036
+ length: (e, n) => on(t.figure, O, e, n),
2037
+ barWidth: Math.min(Te * n.barfill, sn(t.figure, O)),
2038
+ barMax: sn(t.figure, O),
2039
+ height: H,
2040
+ unit: O,
2041
+ labelHeight: R,
2042
+ badgeHeight: V,
2043
+ after: c.length,
2018
2044
  note: 0,
2019
2045
  labels: t.figure.dataset.chartLabels === "inside" || t.figure.dataset.chartLabels !== "outside" && n.labels === "inside" ? "inside" : "outside",
2020
- insideAlign: $t(t.figure),
2021
- breakAt: ue,
2046
+ insideAlign: an(t.figure),
2047
+ breakAt: me,
2022
2048
  squeeze: J,
2023
- breakGap: de,
2024
- domain: w ? [w.min, w.max] : null,
2049
+ breakGap: he,
2050
+ domain: E ? [E.min, E.max] : null,
2025
2051
  stacked: t.stacked,
2026
- shape: Wt(t.figure, n),
2052
+ shape: Yt(t.figure, n),
2027
2053
  totals: t.totals,
2028
2054
  svg: i,
2029
2055
  plot: r,
2030
- values: c,
2031
- series: l,
2032
- seriesValues: u,
2033
- names: d,
2056
+ values: u,
2057
+ series: d,
2058
+ seriesValues: p,
2059
+ names: m,
2034
2060
  categories: t.categories,
2035
2061
  centre: t.centre,
2036
2062
  config: n,
2037
2063
  checks: t.checks,
2038
2064
  taken: []
2039
2065
  };
2040
- if (r.style.setProperty("--count", String(Math.max(1, ...a.map((e) => e.slot + 1)))), s.draw(De), De.rowAt && (t.rowAt = De.rowAt), v && w) {
2041
- let e = 6 * E, r = _ && De.x ? De.x : he, a = Array.from(v.ticks.children), o = (e) => q(a.find((t) => Number(t.dataset.value) === e) ?? a[0]), s = et(w, (t) => t.every((n, i) => !i || (_ ? r(n) - r(t[i - 1]) > (o(n).width + o(t[i - 1]).width) / 2 * E + e : r(t[i - 1]) - r(n) > o(n).height * E + e / 2))).ticks.filter((e) => !J || e <= J.lo || e >= J.hi);
2066
+ if (r.style.setProperty("--count", String(Math.max(1, ...c.map((e) => e.slot + 1)))), l.draw(je), je.rowAt && (t.rowAt = je.rowAt), b && E) {
2067
+ let e = 6 * O, r = y && je.x ? je.x : Y, a = Array.from(b.ticks.children), o = (e) => q(a.find((t) => Number(t.dataset.value) === e) ?? a[0]), s = at(E, (t) => t.every((n, i) => !i || (y ? r(n) - r(t[i - 1]) > (o(n).width + o(t[i - 1]).width) / 2 * O + e : r(t[i - 1]) - r(n) > o(n).height * O + e / 2))).ticks.filter((e) => !J || e <= J.lo || e >= J.hi);
2042
2068
  for (let t of a) {
2043
- let n = Number(t.dataset.value), i = v.numbers && s.includes(n);
2044
- t.dataset.place = i ? _ ? "below" : "before" : "none", i && N(t, _ ? r(n) : -e, _ ? L + e : r(n), C, L);
2069
+ let n = Number(t.dataset.value), i = b.numbers && s.includes(n);
2070
+ t.dataset.place = i ? y ? "below" : "before" : "none", i && P(t, y ? r(n) : -e, y ? H + e : r(n), w, H);
2045
2071
  }
2046
- let c = C - ye;
2047
- Ht(t.figure, "data-chart-grid", n.grid) && i.prepend(A("path", {
2048
- class: S,
2049
- d: s.map((e) => _ ? `M${k(r(e))},0V${k(L)}` : `M0,${k(r(e))}H${k(c)}`).join("")
2050
- })), v.numbers && i.appendChild(A("path", {
2051
- class: b,
2052
- d: [_ ? `M${k(r(w.min))},${k(L)}H${k(r(w.max))}` : `M0,${k(r(w.max))}V${k(r(w.min))}`, ...s.map((e) => _ ? `M${k(r(e))},${k(L)}v${k(4 * E)}` : `M0,${k(r(e))}h${k(-4 * E)}`)].join("")
2072
+ let c = w - Ce;
2073
+ qt(t.figure, "data-chart-grid", n.grid) && i.prepend(j("path", {
2074
+ class: C,
2075
+ d: s.map((e) => y ? `M${A(r(e))},0V${A(H)}` : `M0,${A(r(e))}H${A(c)}`).join("")
2076
+ })), b.numbers && i.appendChild(j("path", {
2077
+ class: x,
2078
+ d: [y ? `M${A(r(E.min))},${A(H)}H${A(r(E.max))}` : `M0,${A(r(E.max))}V${A(r(E.min))}`, ...s.map((e) => y ? `M${A(r(e))},${A(H)}v${A(4 * O)}` : `M0,${A(r(e))}h${A(-4 * O)}`)].join("")
2053
2079
  }));
2054
2080
  }
2055
- for (let [e, n] of p.entries()) {
2081
+ for (let [e, n] of g.entries()) {
2056
2082
  n.badge?.setAttribute("data-note", String(e + 1));
2057
- let i = n.series, o = (e) => ({
2083
+ let i = n.series, a = (e) => ({
2058
2084
  ...e,
2059
2085
  ...e.cells[i] ?? e.cells[0]
2060
2086
  });
2061
2087
  n.type.draw(n.spec, n.badge, {
2062
- ...De,
2088
+ ...je,
2063
2089
  ...t.stacked && {
2064
- rows: te,
2090
+ rows: U,
2065
2091
  ...t.totals.length && { values: t.totals }
2066
2092
  },
2067
2093
  ...i > 0 && !t.stacked && {
2068
- rows: a.map(o),
2069
- segments: B.map((e) => {
2070
- let t = o(e);
2094
+ rows: c.map(a),
2095
+ segments: G.map((e) => {
2096
+ let t = a(e);
2071
2097
  return e.kind === "bar" ? {
2072
2098
  ...t,
2073
2099
  to: t.value
2074
2100
  } : t;
2075
2101
  }),
2076
- values: u[i]
2102
+ values: p[i]
2077
2103
  },
2078
2104
  after: t.plan ? n.after : Math.min(n.after, Number(r.style.getPropertyValue("--count")) || n.after),
2079
2105
  note: e + 1
2080
2106
  });
2081
2107
  }
2082
- it(t);
2083
- let Oe = t.categories[0]?.parentElement;
2084
- Oe && s.categories !== "beside" && !s.centre && xe(Oe, t.categories.filter((e) => e.offsetParent !== null), (e) => ({
2108
+ lt(t);
2109
+ let Me = t.categories[0]?.parentElement;
2110
+ Me && l.categories !== "beside" && !l.centre && Ee(Me, t.categories.filter((e) => e.offsetParent !== null), (e) => ({
2085
2111
  size: e.scrollWidth,
2086
2112
  room: e.clientWidth
2087
2113
  }), "--_name-fit");
2088
- let ke = p.flatMap(({ badge: e }) => {
2114
+ let Ne = g.flatMap(({ badge: e }) => {
2089
2115
  if (!(e instanceof HTMLElement) || !e.offsetWidth) return [];
2090
- let t = e.offsetWidth * E, n = e.offsetHeight * E, r = Number.parseFloat(e.style.left) / 100 * C, i = Number.parseFloat(e.style.top) / 100 * L, a = getComputedStyle(e).borderTopLeftRadius, o = a.endsWith("%") ? Number.parseFloat(a) / 100 : null, s = (Number.parseFloat(a) || 0) * E;
2091
- return [A("rect", {
2116
+ let t = e.offsetWidth * O, n = e.offsetHeight * O, r = Number.parseFloat(e.style.left) / 100 * w, i = Number.parseFloat(e.style.top) / 100 * H, a = getComputedStyle(e).borderTopLeftRadius, o = a.endsWith("%") ? Number.parseFloat(a) / 100 : null, s = (Number.parseFloat(a) || 0) * O;
2117
+ return [j("rect", {
2092
2118
  class: f,
2093
2119
  "data-for": "badge",
2094
2120
  "data-note": e.dataset.note ?? "",
@@ -2100,94 +2126,99 @@ var Fe = (e) => e.map((e) => ({
2100
2126
  ry: o === null ? s : n * o,
2101
2127
  style: ["--after", "--step"].map((t) => e.style.getPropertyValue(t) && `${t}:${e.style.getPropertyValue(t)}`).filter(Boolean).join("; ")
2102
2128
  })];
2103
- }), Ae = i.querySelector(`.${S}`), X = Array.from(i.querySelectorAll(`.${o}`));
2104
- if (Ae || X.length) {
2105
- let e = r.getBoundingClientRect(), n = C / e.width, a = getComputedStyle(r), o = Number.parseFloat(a.lineHeight) / Number.parseFloat(a.fontSize) || 1.2, c = [
2106
- ...u.flat(),
2129
+ }), Pe = i.querySelector(`.${C}`), Fe = Array.from(i.querySelectorAll(`.${o}`));
2130
+ if (Pe || Fe.length) {
2131
+ let e = r.getBoundingClientRect(), n = w / e.width, a = getComputedStyle(r), o = Number.parseFloat(a.lineHeight) / Number.parseFloat(a.fontSize) || 1.2, s = [
2132
+ ...p.flat(),
2107
2133
  ...t.totals,
2108
- ...s.categories === "beside" ? t.categories : []
2134
+ ...l.categories === "beside" ? t.categories : []
2109
2135
  ].flatMap((t) => {
2110
2136
  if (t.dataset.place === "none" || t.hidden || t.hasAttribute("data-left-out")) return [];
2111
2137
  let r = t.getBoundingClientRect(), i = r.height * n / o, a = Array.from(t.style).filter((e) => e.startsWith("--")).map((e) => `${e}:${t.style.getPropertyValue(e)}`);
2112
- return r.width ? [A("rect", {
2138
+ return r.width ? [j("rect", {
2113
2139
  class: f,
2114
2140
  "data-for": "text",
2115
- x: (r.left - e.left) * n - 3 * E,
2116
- y: (r.top - e.top) * n + (r.height * n - i) / 2 - E,
2117
- width: r.width * n + 6 * E,
2118
- height: i + 2 * E,
2141
+ x: (r.left - e.left) * n - 3 * O,
2142
+ y: (r.top - e.top) * n + (r.height * n - i) / 2 - O,
2143
+ width: r.width * n + 6 * O,
2144
+ height: i + 2 * O,
2119
2145
  style: a.join("; ")
2120
2146
  })] : [];
2121
- }), l = (e) => [
2147
+ }), c = (e) => [
2122
2148
  "x",
2123
2149
  "y",
2124
2150
  "width",
2125
2151
  "height"
2126
2152
  ].map((t) => Number(e.getAttribute(t)));
2127
- for (let e of X) zt(e, [...c, ...ke].map(l));
2128
- if (Ae && t.plan) ee(i, c, C, L, [Ae]);
2129
- else if (Ae) {
2130
- let e = Bt(Ae);
2131
- Ae.setAttribute("d", e.map(([e, t, n, r]) => Rt(e, t, n, r, c.map(l))).join(""));
2132
- for (let t of c) {
2133
- let n = Vt(e, l(t));
2134
- n && Ae.after(A("path", {
2135
- class: S,
2136
- "data-gap": "",
2137
- d: n,
2138
- style: t.getAttribute("style") ?? ""
2153
+ for (let e of Fe) Wt(e, [...s, ...Ne].map(c));
2154
+ if (Pe && t.plan) B(i, s, w, H, [Pe]);
2155
+ else if (Pe) {
2156
+ let e = [...s, ...Ne], t = Gt(Pe);
2157
+ Pe.setAttribute("d", t.map(([t, n, r, i]) => Ut(t, n, r, i, e.map(c))).join(""));
2158
+ for (let n of e) {
2159
+ let e = Kt(t, c(n)), r = n.dataset.for === "badge" ? "badge" : "";
2160
+ e && Pe.after(j("path", {
2161
+ class: C,
2162
+ "data-gap": r,
2163
+ d: e,
2164
+ style: n.getAttribute("style") ?? ""
2139
2165
  }));
2140
2166
  }
2141
2167
  }
2142
2168
  }
2143
- ee(i, ke, C, L, void 0, `.${o}`), t.figure.hasAttribute("data-animate") && !t.figure.hasAttribute("data-steps") && !t.figure.classList.contains("is-shown") && ln(i);
2144
- let je = (e) => e.dataset.missing !== void 0 || s.centre && a[Number(e.dataset.row) - 1]?.isTotal, Me = (e) => e.dataset.place !== "none" && !e.hasAttribute("data-left-out"), Ne = (e, t) => {
2169
+ z(i, Ne, w, H, Array.from(i.querySelectorAll(`.${a}, .${s}`))), B(i, Ne, w, H, void 0, [
2170
+ o,
2171
+ a,
2172
+ s,
2173
+ ...t.plan ? [] : [C]
2174
+ ].map((e) => `.${e}`).join(", ")), t.figure.hasAttribute("data-animate") && !t.figure.hasAttribute("data-steps") && !t.figure.classList.contains("is-shown") && mn(i);
2175
+ let X = (e) => e.dataset.missing !== void 0 || l.centre && c[Number(e.dataset.row) - 1]?.isTotal, Ie = (e) => e.dataset.place !== "none" && !e.hasAttribute("data-left-out"), Le = (e, t) => {
2145
2176
  let n = Number(e.dataset.row);
2146
- return t.some((e) => Me(e) && Number(e.dataset.row) <= n && n <= Number(e.dataset.rowEnd ?? e.dataset.row));
2177
+ return t.some((e) => Ie(e) && Number(e.dataset.row) <= n && n <= Number(e.dataset.rowEnd ?? e.dataset.row));
2147
2178
  };
2148
- return t.figure.toggleAttribute("data-left-out", (s.columns ? [t.categories] : [...u, t.totals]).some((e) => e.some((t) => !je(t) && !Me(t) && !Ne(t, e)))), !0;
2149
- }, rn = (e, t) => {
2179
+ return t.figure.toggleAttribute("data-left-out", (l.columns ? [t.categories] : [...p, t.totals]).some((e) => e.some((t) => !X(t) && !Ie(t) && !Le(t, e)))), !0;
2180
+ }, ln = (e, t) => {
2150
2181
  let n = [
2151
2182
  ...e.seriesValues.flat(),
2152
2183
  ...e.totals,
2153
2184
  ...e.totalCell ? [e.totalCell] : []
2154
2185
  ];
2155
- for (let r of e.centre ? [...n, e.centre] : n) r.dataset.missing === void 0 ? an(r, r.dataset.decimals ? Number(r.dataset.decimals) : e.decimals, t.locale) : r.textContent = r.dataset.missing;
2156
- }, an = (e, t, n) => {
2157
- let { prefix: r = "", suffix: i = "" } = e.dataset, [a, o] = B(Number.parseFloat(e.dataset.value || "0"), t, n);
2186
+ for (let r of e.centre ? [...n, e.centre] : n) r.dataset.missing === void 0 ? un(r, r.dataset.decimals ? Number(r.dataset.decimals) : e.decimals, t.locale) : r.textContent = r.dataset.missing;
2187
+ }, un = (e, t, n) => {
2188
+ let { prefix: r = "", suffix: i = "" } = e.dataset, [a, o] = te(Number.parseFloat(e.dataset.value || "0"), t, n);
2158
2189
  if (e.textContent = r + (r ? a : "") + o + i, a && !r) {
2159
2190
  let t = document.createElement("span");
2160
2191
  t.className = "tablechart-minus", t.textContent = a, e.prepend(t);
2161
2192
  }
2162
- }, on = (e) => {
2163
- jt(e), e.plot.remove(), e.categories[0]?.parentElement?.remove(), e.figure.querySelector(`:scope > .${u}`)?.remove(), e.controls?.remove();
2164
- }, sn = (e, t) => {
2165
- !t && !e.figure.hasAttribute("data-steps") && ln(e.svg), e.figure.classList.toggle(_, t), t && requestAnimationFrame(() => requestAnimationFrame(() => cn(e.figure, e.svg)));
2166
- }, cn = (e, t) => {
2167
- e.classList.contains("is-shown") && !t.getAnimations({ subtree: !0 }).length && un(t);
2168
- }, ln = (e) => {
2193
+ }, dn = (e) => {
2194
+ It(e), e.plot.remove(), e.categories[0]?.parentElement?.remove(), e.figure.querySelector(`:scope > .${u}`)?.remove(), e.controls?.remove();
2195
+ }, fn = (e, t, n = !1) => {
2196
+ !t && !e.figure.hasAttribute("data-steps") && mn(e.svg), n ? (e.figure.classList.add(y), e.figure.classList.toggle(_, t), e.figure.offsetWidth, t && hn(e.svg), requestAnimationFrame(() => e.figure.classList.remove(y))) : (e.figure.classList.toggle(_, t), t && requestAnimationFrame(() => requestAnimationFrame(() => pn(e.figure, e.svg))));
2197
+ }, pn = (e, t) => {
2198
+ e.classList.contains("is-shown") && Array.from(t.querySelectorAll("[data-mask]")).every((e) => !e.getAnimations({ subtree: !0 }).length) && hn(t);
2199
+ }, mn = (e) => {
2169
2200
  for (let t of e.querySelectorAll("[mask^=\"url(#tablechart-cut-\"]")) t.dataset.mask = t.getAttribute("mask") ?? "", t.removeAttribute("mask");
2170
- }, un = (e) => {
2201
+ }, hn = (e) => {
2171
2202
  for (let t of e.querySelectorAll("[data-mask]")) t.setAttribute("mask", t.dataset.mask ?? ""), t.removeAttribute("data-mask");
2172
- }, dn = (e) => e === "id" || e === "style" || e.startsWith("data-chart"), fn = /^\s*(?:Table)?:\s+/, pn = (e) => e?.tagName === "P" && fn.test(e.textContent ?? ""), mn = (e) => {
2203
+ }, gn = (e) => e === "id" || e === "style" || e.startsWith("data-chart"), _n = /^\s*(?:Table)?:\s+/, vn = (e) => e?.tagName === "P" && _n.test(e.textContent ?? ""), yn = (e) => {
2173
2204
  let t = document.createElement("figcaption");
2174
2205
  for (let { name: n, value: r } of Array.from(e.attributes)) t.setAttribute(n, r);
2175
2206
  let n = e.firstChild;
2176
- n?.nodeType === Node.TEXT_NODE && (n.textContent = (n.textContent ?? "").replace(fn, ""), n.textContent || n.remove());
2207
+ n?.nodeType === Node.TEXT_NODE && (n.textContent = (n.textContent ?? "").replace(_n, ""), n.textContent || n.remove());
2177
2208
  let r = Array.from(e.childNodes), i = r.findIndex((e) => e.nodeName === "BR");
2178
2209
  if (t.append(...i === -1 ? r : r.slice(0, i + 1)), i !== -1 && i < r.length - 1) {
2179
2210
  let e = document.createElement("span");
2180
2211
  e.append(...r.slice(i + 1)), t.append(e);
2181
2212
  }
2182
2213
  return e.remove(), t;
2183
- }, hn = /^\s*([a-z][\w-]*)((?:\s+[\w-]+=[^\s:]+)*)\s*(:\s*|$)/, gn = (e) => {
2184
- let t = wn(e);
2214
+ }, bn = /^\s*([a-z][\w-]*)((?:\s+[\w-]+=[^\s:]+)*)\s*(:\s*|$)/, xn = (e) => {
2215
+ let t = kn(e);
2185
2216
  return t?.tagName === "P" ? t : e;
2186
- }, _n = (e) => {
2187
- let t = gn(e).firstChild;
2217
+ }, Sn = (e) => {
2218
+ let t = xn(e).firstChild;
2188
2219
  if (t?.nodeType !== Node.TEXT_NODE) return null;
2189
- let n = hn.exec(t.textContent ?? "");
2190
- if (!n || !Ft.includes(n[1]) || !n[3] && t.nextSibling) return null;
2220
+ let n = bn.exec(t.textContent ?? "");
2221
+ if (!n || !Bt.includes(n[1]) || !n[3] && t.nextSibling) return null;
2191
2222
  let r = n[2].trim().split(/\s+/).filter(Boolean).map((e) => e.split("="));
2192
2223
  return {
2193
2224
  name: n[1],
@@ -2195,11 +2226,11 @@ var Fe = (e) => e.map((e) => ({
2195
2226
  text: t,
2196
2227
  length: n[0].length
2197
2228
  };
2198
- }, vn = (e) => {
2229
+ }, Cn = (e) => {
2199
2230
  if (e?.tagName !== "UL" && e?.tagName !== "OL") return null;
2200
- let t = Array.from(e.children), n = t.map((e) => e.hasAttribute("data-annotation") ? null : _n(e));
2231
+ let t = Array.from(e.children), n = t.map((e) => e.hasAttribute("data-annotation") ? null : Sn(e));
2201
2232
  return !t.length || t.some((e, t) => !n[t] && !e.hasAttribute("data-annotation")) ? null : (t.forEach((e, t) => {
2202
- let r = n[t], i = gn(e);
2233
+ let r = n[t], i = xn(e);
2203
2234
  if (i !== e && i.replaceWith(...i.childNodes), r) {
2204
2235
  e.setAttribute("data-annotation", r.name);
2205
2236
  for (let [t, n] of r.options) e.setAttribute(`data-${t}`, n);
@@ -2210,18 +2241,18 @@ var Fe = (e) => e.map((e) => ({
2210
2241
  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));
2211
2242
  });
2212
2243
  }), e.classList.add("chart-annotations"), e);
2213
- }, yn = (e, t) => {
2214
- for (let { name: n, value: r } of Array.from(e.attributes)) (n === "class" || dn(n)) && (t.setAttribute(n, r), e.removeAttribute(n));
2215
- }, bn = (e) => e.map((e) => {
2216
- let t = e.closest("p"), n = pn(t) ? t : e;
2244
+ }, wn = (e, t) => {
2245
+ for (let { name: n, value: r } of Array.from(e.attributes)) (n === "class" || gn(n)) && (t.setAttribute(n, r), e.removeAttribute(n));
2246
+ }, Tn = (e) => e.map((e) => {
2247
+ let t = e.closest("p"), n = vn(t) ? t : e;
2217
2248
  if (n.tagName !== "TABLE" && n.tagName !== "P") return n;
2218
2249
  let r = document.createElement("figure");
2219
- yn(e, r), e.classList.length || e.removeAttribute("class");
2220
- let i = n.tagName === "TABLE" ? n : null, a = n.previousElementSibling, o = n.nextElementSibling, s = i ? pn(a) ? a : pn(o) ? o : null : n;
2250
+ wn(e, r), e.classList.length || e.removeAttribute("class");
2251
+ let i = n.tagName === "TABLE" ? n : null, a = n.previousElementSibling, o = n.nextElementSibling, s = i ? vn(a) ? a : vn(o) ? o : null : n;
2221
2252
  i && s === o && (o = o?.nextElementSibling ?? null);
2222
- let c = o?.classList.contains("chart-annotations") ? o : vn(o);
2223
- return n.replaceWith(r), s && r.append(mn(s)), i && r.append(i), c && r.append(c), Z?.log?.(`A ${i ? "table" : "caption"} with chart attributes was wrapped in a figure of its own`), r;
2224
- }), xn = (e, t, n, r = document.createElement("table")) => {
2253
+ let c = o?.classList.contains("chart-annotations") ? o : Cn(o);
2254
+ return n.replaceWith(r), s && r.append(yn(s)), i && r.append(i), c && r.append(c), Z?.log?.(`A ${i ? "table" : "caption"} with chart attributes was wrapped in a figure of its own`), r;
2255
+ }), En = (e, t, n, r = document.createElement("table")) => {
2225
2256
  for (let e of r.querySelectorAll(":scope > tbody, :scope > tfoot, :scope > tr")) e.remove();
2226
2257
  if (!r.tHead && (t.length || n)) {
2227
2258
  let e = r.createTHead().insertRow(), i = document.createElement("th");
@@ -2241,7 +2272,7 @@ var Fe = (e) => e.map((e) => ({
2241
2272
  for (let n of t.values ?? [t.value ?? null]) e.insertCell().textContent = n === null ? "" : String(n);
2242
2273
  }
2243
2274
  return r;
2244
- }, Sn = (e) => {
2275
+ }, Dn = (e) => {
2245
2276
  if (!e || typeof e != "object") return;
2246
2277
  let t = Object.entries(e), n = (e) => e === null || typeof e == "string" || typeof e == "number";
2247
2278
  if (t.length && t.every(([, e]) => n(e) || Array.isArray(e) && e.every(n))) return t.map(([e, t]) => Array.isArray(t) ? {
@@ -2251,16 +2282,16 @@ var Fe = (e) => e.map((e) => ({
2251
2282
  label: e,
2252
2283
  value: t
2253
2284
  });
2254
- }, Cn = async (t) => {
2285
+ }, On = async (t) => {
2255
2286
  await Promise.all(t.filter((e) => e.hasAttribute("data-chart-src")).map(async (t) => {
2256
2287
  let n = t.getAttribute("data-chart-src"), r = Array.from(t.querySelectorAll("table")).find((e) => e.tHead) ?? null;
2257
2288
  for (let e of t.querySelectorAll("table")) e !== r && e.remove();
2258
2289
  try {
2259
2290
  let e = await fetch(n);
2260
2291
  if (!e.ok) throw Error(`${e.status} ${e.statusText}`);
2261
- let i = await e.json(), a = Array.isArray(i) ? i : i?.rows ? Array.isArray(i.rows) ? i.rows : Sn(i.rows) : Sn(i);
2292
+ let i = await e.json(), a = Array.isArray(i) ? i : i?.rows ? Array.isArray(i.rows) ? i.rows : Dn(i.rows) : Dn(i);
2262
2293
  if (!Array.isArray(a)) throw Error("no rows in it: a list of rows, an object with rows, or names with their values");
2263
- let o = xn(a, Array.isArray(i?.series) ? i.series.map(String) : [], typeof i?.label == "string" ? i.label : "", r ?? void 0);
2294
+ let o = En(a, Array.isArray(i?.series) ? i.series.map(String) : [], typeof i?.label == "string" ? i.label : "", r ?? void 0);
2264
2295
  if (!r) {
2265
2296
  let e = t.querySelector(":scope > figcaption");
2266
2297
  e ? e.after(o) : t.prepend(o);
@@ -2271,10 +2302,10 @@ var Fe = (e) => e.map((e) => ({
2271
2302
  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." : ""));
2272
2303
  }
2273
2304
  }));
2274
- }, wn = (e) => {
2305
+ }, kn = (e) => {
2275
2306
  let t = Array.from(e.childNodes).filter((e) => e.nodeType === Node.ELEMENT_NODE || e.nodeType === Node.TEXT_NODE && e.textContent?.trim());
2276
2307
  return t.length === 1 && t[0] instanceof HTMLElement ? t[0] : null;
2277
- }, Tn = "strong, b, span.total", En = (e) => {
2308
+ }, An = "strong, b, span.total", jn = (e) => {
2278
2309
  for (let t of e) {
2279
2310
  for (let e of t.querySelectorAll("tbody tr")) {
2280
2311
  let t = e.cells[0];
@@ -2282,16 +2313,16 @@ var Fe = (e) => e.map((e) => ({
2282
2313
  let n = document.createElement("th");
2283
2314
  for (let { name: e, value: r } of Array.from(t.attributes)) n.setAttribute(e, r);
2284
2315
  n.append(...t.childNodes), t.replaceWith(n);
2285
- for (let t = wn(n); t?.matches(Tn); t = wn(n)) e.dataset.kind = "total", t.replaceWith(...t.childNodes);
2316
+ for (let t = kn(n); t?.matches(An); t = kn(n)) e.dataset.kind = "total", t.replaceWith(...t.childNodes);
2286
2317
  }
2287
2318
  let e = Array.from(t.querySelector("thead tr:last-child")?.children ?? []);
2288
- for (let t of e.slice(1)) for (let e = wn(t); e?.matches(Tn); e = wn(t)) t.setAttribute("data-kind", "focus"), e.replaceWith(...e.childNodes);
2319
+ for (let t of e.slice(1)) for (let e = kn(t); e?.matches(An); e = kn(t)) t.setAttribute("data-kind", "focus"), e.replaceWith(...e.childNodes);
2289
2320
  }
2290
- }, Dn = "data-chart-made", On = () => window.matchMedia("(prefers-reduced-motion: reduce)").matches, kn = (e) => new Promise((t) => setTimeout(t, e)), An = (e, t) => {
2321
+ }, Mn = "data-chart-made", Nn = () => window.matchMedia("(prefers-reduced-motion: reduce)").matches, Pn = (e) => new Promise((t) => setTimeout(t, e)), Fn = (e, t) => {
2291
2322
  let n = Number.parseFloat(e.dataset.chartEntrance ?? ""), r = Number.isFinite(n) ? n : t.entrance;
2292
2323
  return Math.min(Math.max(r, 0), 1);
2293
- }, jn = async (e, t) => {
2294
- if (On()) return;
2324
+ }, In = async (e, t) => {
2325
+ if (Nn()) return;
2295
2326
  await new Promise(requestAnimationFrame);
2296
2327
  let n = e.getAnimations().filter((e) => e instanceof CSSAnimation);
2297
2328
  for (let t = e.parentElement; t && t !== document.body; t = t.parentElement) n.push(...t.getAnimations());
@@ -2302,11 +2333,11 @@ var Fe = (e) => e.map((e) => ({
2302
2333
  let a = Number(n.delay ?? 0) + i * t;
2303
2334
  r = Math.max(r, a - Number(e.currentTime ?? 0));
2304
2335
  }
2305
- r > 0 && await kn(r);
2306
- }, Mn = (e) => {
2336
+ r > 0 && await Pn(r);
2337
+ }, Ln = (e) => {
2307
2338
  for (let t = e; t && t !== document.body; t = t.parentElement) if (getComputedStyle(t).opacity === "0") return t;
2308
2339
  return null;
2309
- }, Nn = (e) => new Promise((t) => {
2340
+ }, Rn = (e) => new Promise((t) => {
2310
2341
  let n = ["animationstart", "transitionrun"], r = () => {
2311
2342
  for (let e of n) document.removeEventListener(e, i, !0);
2312
2343
  a.disconnect(), t();
@@ -2320,41 +2351,41 @@ var Fe = (e) => e.map((e) => ({
2320
2351
  attributes: !0,
2321
2352
  attributeFilter: ["class", "style"]
2322
2353
  });
2323
- }), Pn = /* @__PURE__ */ new Set(), Fn = null, In = (e) => {
2324
- Pn.add(e), !Fn && (Fn = new MutationObserver(() => {
2325
- for (let e of Pn) e.relabel();
2354
+ }), zn = /* @__PURE__ */ new Set(), Bn = null, Vn = (e) => {
2355
+ zn.add(e), !Bn && (Bn = new MutationObserver(() => {
2356
+ for (let e of zn) e.relabel();
2326
2357
  requestAnimationFrame(() => requestAnimationFrame(() => {
2327
- for (let e of Pn) e.refresh();
2358
+ for (let e of zn) e.refresh();
2328
2359
  }));
2329
- }), Fn.observe(document.documentElement, {
2360
+ }), Bn.observe(document.documentElement, {
2330
2361
  attributes: !0,
2331
2362
  attributeFilter: ["lang"]
2332
2363
  }));
2333
- }, Ln = (e) => {
2334
- Pn.delete(e), !Pn.size && Fn && (Fn.disconnect(), Fn = null);
2335
- }, Rn = ["column", "bar"], zn = (e) => {
2364
+ }, Hn = (e) => {
2365
+ zn.delete(e), !zn.size && Bn && (Bn.disconnect(), Bn = null);
2366
+ }, Un = ["column", "bar"], Wn = (e) => {
2336
2367
  let t = e.getAttribute("data-chart") || "column";
2337
- if (!Rn.includes(t)) return null;
2368
+ if (!Un.includes(t)) return null;
2338
2369
  let n = getComputedStyle(e).getPropertyValue("--tablechart-type").trim();
2339
- return Rn.includes(n) ? n : t;
2340
- }, Bn = (e, t) => {
2341
- let n = e, r = zn(n.figure), i = null, a = !1, o = !1, s = async () => {
2342
- if (!Ut(n.figure, t)) return sn(n, !0);
2370
+ return Un.includes(n) ? n : t;
2371
+ }, Gn = (e, t) => {
2372
+ let n = e, r = Wn(n.figure), i = null, a = !1, o = !1, s = async () => {
2373
+ if (!Jt(n.figure, t)) return fn(n, !0);
2343
2374
  let e = n.figure.classList.contains("is-shown");
2344
2375
  if (a && i !== null && !e && !o) {
2345
2376
  o = !0;
2346
- let e = On() ? null : Mn(n.figure);
2347
- e && await Nn(e), await jn(n.figure, An(n.figure, t)), o = !1, (a || !t.replay) && sn(n, !0);
2348
- } else !a && t.replay && e && sn(n, !1);
2377
+ let e = Nn() ? null : Ln(n.figure);
2378
+ e && await Rn(e), await In(n.figure, Fn(n.figure, t)), o = !1, (a || !t.replay) && fn(n, !0);
2379
+ } else !a && t.replay && e && fn(n, !1);
2349
2380
  }, c = () => {
2350
- let e = zn(n.figure);
2381
+ let e = Wn(n.figure);
2351
2382
  if (!e || e === r) return;
2352
- let a = Z.timed("Building", n.figure, () => Yt(n.figure, t, e));
2353
- a && (on(n), at(a, n.step, !0), n = a, r = e, i = null);
2383
+ let a = Z.timed("Building", n.figure, () => en(n.figure, t, e));
2384
+ a && (dn(n), ut(a, n.step, !0), n = a, r = e, i = null);
2354
2385
  }, l = () => {
2355
2386
  c();
2356
2387
  let e = n.plot.clientWidth;
2357
- e && e !== i && Z.timed("Layout", n.figure, () => nn(n, t)) && (i = e, s());
2388
+ e && e !== i && Z.timed("Layout", n.figure, () => cn(n, t)) && (i = e, s());
2358
2389
  }, u = !1, d = new ResizeObserver(() => {
2359
2390
  u || (u = !0, requestAnimationFrame(() => {
2360
2391
  u = !1, l();
@@ -2362,20 +2393,20 @@ var Fe = (e) => e.map((e) => ({
2362
2393
  }), f = new IntersectionObserver((e) => {
2363
2394
  for (let t of e) a = t.isIntersecting, s();
2364
2395
  }, { threshold: t.threshold }), p = () => {
2365
- n.figure.classList.add(v), sn(n, !0), un(n.svg), n.figure.offsetWidth;
2396
+ n.figure.classList.add(v), fn(n, !0), hn(n.svg), n.figure.offsetWidth;
2366
2397
  }, m = () => n.figure.classList.remove(v), h = () => {
2367
2398
  i = null, l();
2368
2399
  }, g = {
2369
- relabel: () => rn(n, t),
2400
+ relabel: () => ln(n, t),
2370
2401
  refresh: h
2371
2402
  };
2372
- c(), l(), d.observe(n.figure), f.observe(n.figure), window.addEventListener("beforeprint", p), window.addEventListener("afterprint", m), In(g);
2403
+ c(), l(), d.observe(n.figure), f.observe(n.figure), window.addEventListener("beforeprint", p), window.addEventListener("afterprint", m), Vn(g);
2373
2404
  let _ = {
2374
2405
  figure: n.figure,
2375
2406
  refresh: h,
2376
- next: () => at(n, n.step + 1),
2377
- previous: () => at(n, n.step - 1),
2378
- stepTo: (e) => at(n, e),
2407
+ next: () => ut(n, n.step + 1),
2408
+ previous: () => ut(n, n.step - 1),
2409
+ stepTo: (e) => ut(n, e),
2379
2410
  get step() {
2380
2411
  return n.step;
2381
2412
  },
@@ -2383,35 +2414,35 @@ var Fe = (e) => e.map((e) => ({
2383
2414
  return n.plan?.count ?? 0;
2384
2415
  },
2385
2416
  destroy() {
2386
- d.disconnect(), f.disconnect(), window.removeEventListener("beforeprint", p), window.removeEventListener("afterprint", m), Ln(g), jt(n), n.figure.tablechart === _ && delete n.figure.tablechart;
2417
+ d.disconnect(), f.disconnect(), window.removeEventListener("beforeprint", p), window.removeEventListener("afterprint", m), Hn(g), It(n), n.figure.tablechart === _ && delete n.figure.tablechart;
2387
2418
  }
2388
2419
  };
2389
2420
  return n.figure.tablechart = _, _;
2390
- }, Vn = !1, Hn = (t) => {
2421
+ }, Kn = !1, qn = (t) => {
2391
2422
  let n = t.find((e) => e.tagName !== "FIGURE");
2392
- !Vn && n && (Vn = !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));
2393
- }, Un = async (e, t) => {
2394
- let n = bn(e.filter((e) => !e.hasAttribute(Dn)));
2395
- return Hn(n), await Cn(n), En(n), qe(n, t.langattribute), n;
2396
- }, Wn = (e, t) => {
2397
- let n = Z.timed("Building", e, () => Yt(e, t));
2398
- return n ? (e.setAttribute(Dn, ""), Bn(n, t)) : null;
2399
- }, Gn = async (e, t = {}) => {
2423
+ !Kn && n && (Kn = !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));
2424
+ }, Jn = async (e, t) => {
2425
+ let n = Tn(e.filter((e) => !e.hasAttribute(Mn)));
2426
+ return qn(n), await On(n), jn(n), Qe(n, t.langattribute), n;
2427
+ }, Yn = (e, t) => {
2428
+ let n = Z.timed("Building", e, () => en(e, t));
2429
+ return n ? (e.setAttribute(Mn, ""), Gn(n, t)) : null;
2430
+ }, Xn = async (e, t = {}) => {
2400
2431
  if (e.tablechart) return e.tablechart;
2401
2432
  let n = {
2402
- ...w,
2433
+ ...T,
2403
2434
  ...t
2404
2435
  };
2405
2436
  n.debug && (Z.enabled = !0);
2406
- let [r] = await Un([e], n);
2407
- return r ? Wn(r, n) : null;
2408
- }, Kn = async (e = {}, t = document) => {
2437
+ let [r] = await Jn([e], n);
2438
+ return r ? Yn(r, n) : null;
2439
+ }, Zn = async (e = {}, t = document) => {
2409
2440
  let n = {
2410
- ...w,
2441
+ ...T,
2411
2442
  ...e
2412
2443
  };
2413
2444
  n.debug && (Z.enabled = !0);
2414
- let r = (await Un(Array.from(t.querySelectorAll(n.selector)), n)).map((e) => Wn(e, n)).filter((e) => e !== null);
2445
+ let r = (await Jn(Array.from(t.querySelectorAll(n.selector)), n)).map((e) => Yn(e, n)).filter((e) => e !== null);
2415
2446
  return Z.log(`Made ${r.length} chart(s).`), {
2416
2447
  charts: r,
2417
2448
  refresh: () => {
@@ -2422,5 +2453,4 @@ var Fe = (e) => e.map((e) => ({
2422
2453
  }
2423
2454
  };
2424
2455
  };
2425
- //#endregion
2426
- export { _ as A, u as C, d as D, t as E, w as M, v as O, k as S, h as T, q as _, bn as a, M as b, Nt as c, rn as d, sn as f, Ae as g, qe as h, Un as i, C as j, y as k, Yt as l, at as m, An as n, Cn as o, on as p, Kn as r, En as s, Gn as t, nn as u, ae as v, l as w, N as x, R as y };
2456
+ export { b as A, y as C, t as D, h as E, w as M, T as N, d as O, A as S, l as T, q as _, Tn as a, N as b, Rt as c, ln as d, fn as f, Fe as g, Qe as h, Jn as i, _ as j, v as k, en as l, ut as m, Fn as n, On as o, dn as p, Zn as r, jn as s, Xn as t, cn as u, le as v, u as w, P as x, W as y };