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