@svgrid/grid-wc 3.0.0 → 3.0.1

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.
Files changed (36) hide show
  1. package/README.md +110 -110
  2. package/dist/{GridMenus-DpmS1pzo.js → GridMenus-YwTw9Upd.js} +64 -62
  3. package/dist/{SvDateRangeInput-u4ibte8S.js → SvDateRangeInput-CrxeppBV.js} +6 -6
  4. package/dist/{shadow/SvDateTimePicker-DVFiDxUq.js → SvDateTimePicker-xAO-Pb4S.js} +22 -22
  5. package/dist/{shadow/SvField-ChCI-O2O.js → SvField-CE345DyF.js} +3 -3
  6. package/dist/{SvGridCellEditor-DvsQyE9a.js → SvGridCellEditor-D7SyHtff.js} +2 -2
  7. package/dist/SvGridChart-CMaVmlso.js +1477 -0
  8. package/dist/SvGridChartPanel-Pc_IW0eA.js +833 -0
  9. package/dist/{SvGridChartView-ScXTF6t-.js → SvGridChartView-DLhhzmFy.js} +6 -4
  10. package/dist/{shadow/SvGridDropdown-DnAESFDu.js → SvGridDropdown-DUncHqM-.js} +2 -2
  11. package/dist/{cell-formatting-C0OsDmi_.js → cell-formatting-Eypm-id0.js} +1 -1
  12. package/dist/chart-GRBAgN1M.js +1658 -0
  13. package/dist/{date-format-CPHqTHN6.js → date-format-D_oQ5Yw0.js} +13 -13
  14. package/dist/{export-format-B6FUgOll.js → export-format-uGayRKWM.js} +3 -3
  15. package/dist/shadow/{GridMenus-DpmS1pzo.js → GridMenus-YwTw9Upd.js} +64 -62
  16. package/dist/shadow/{SvDateRangeInput-u4ibte8S.js → SvDateRangeInput-CrxeppBV.js} +6 -6
  17. package/dist/{SvDateTimePicker-DVFiDxUq.js → shadow/SvDateTimePicker-xAO-Pb4S.js} +22 -22
  18. package/dist/{SvField-ChCI-O2O.js → shadow/SvField-CE345DyF.js} +3 -3
  19. package/dist/shadow/{SvGridCellEditor-DvsQyE9a.js → SvGridCellEditor-D7SyHtff.js} +2 -2
  20. package/dist/shadow/SvGridChart-CMaVmlso.js +1477 -0
  21. package/dist/shadow/SvGridChartPanel-Pc_IW0eA.js +833 -0
  22. package/dist/shadow/{SvGridChartView-ScXTF6t-.js → SvGridChartView-DLhhzmFy.js} +6 -4
  23. package/dist/{SvGridDropdown-DnAESFDu.js → shadow/SvGridDropdown-DUncHqM-.js} +2 -2
  24. package/dist/shadow/{cell-formatting-C0OsDmi_.js → cell-formatting-Eypm-id0.js} +1 -1
  25. package/dist/shadow/chart-GRBAgN1M.js +1658 -0
  26. package/dist/shadow/{date-format-CPHqTHN6.js → date-format-D_oQ5Yw0.js} +13 -13
  27. package/dist/shadow/{export-format-C8kZGZfz.js → export-format-DhdZREP1.js} +3 -3
  28. package/dist/shadow/sv-grid-shadow-element.js +2160 -2000
  29. package/dist/sv-grid-element.js +2158 -1998
  30. package/package.json +3 -3
  31. package/dist/SvGridChart-yK5Zv85y.js +0 -1199
  32. package/dist/SvGridChartPanel-B38_VjXM.js +0 -584
  33. package/dist/chart-uvs3sFJA.js +0 -1220
  34. package/dist/shadow/SvGridChart-yK5Zv85y.js +0 -1199
  35. package/dist/shadow/SvGridChartPanel-B38_VjXM.js +0 -584
  36. package/dist/shadow/chart-uvs3sFJA.js +0 -1220
@@ -1,1220 +0,0 @@
1
- //#region \0rolldown/runtime.js
2
- var e = Object.defineProperty, t = /* @__PURE__ */ ((t, n) => {
3
- let r = {};
4
- for (var i in t) e(r, i, {
5
- get: t[i],
6
- enumerable: !0
7
- });
8
- return n || e(r, Symbol.toStringTag, { value: "Module" }), r;
9
- })({
10
- DEFAULT_PALETTE: () => n,
11
- buildChart: () => O,
12
- buildLinePath: () => h,
13
- computeOverlay: () => b,
14
- exponentialMovingAverage: () => y,
15
- formatChartValue: () => C,
16
- linearTrend: () => _,
17
- niceLogScale: () => p,
18
- niceScale: () => x,
19
- pickContrastText: () => f,
20
- rowsToChartSpec: () => k,
21
- sampleGradient: () => u,
22
- simpleMovingAverage: () => v
23
- }), n = [
24
- "#2563eb",
25
- "#16a34a",
26
- "#f59e0b",
27
- "#ef4444",
28
- "#8b5cf6",
29
- "#0ea5e9",
30
- "#ec4899",
31
- "#14b8a6"
32
- ];
33
- function r(e) {
34
- return Math.round(e * 100) / 100;
35
- }
36
- function i(e, t) {
37
- if (e <= 0) return 1;
38
- let n = Math.floor(Math.log10(e)), r = e / 10 ** n, i;
39
- return i = t ? r < 1.5 ? 1 : r < 3 ? 2 : r < 7 ? 5 : 10 : r <= 1 ? 1 : r <= 2 ? 2 : r <= 5 ? 5 : 10, i * 10 ** n;
40
- }
41
- var a = [
42
- "#eff6ff",
43
- "#bfdbfe",
44
- "#60a5fa",
45
- "#2563eb",
46
- "#1e3a8a"
47
- ], o = [
48
- "#b91c1c",
49
- "#fca5a5",
50
- "#f1f5f9",
51
- "#93c5fd",
52
- "#1d4ed8"
53
- ], s = [
54
- "#1c2c4d",
55
- "#1d4ed8",
56
- "#3b82f6",
57
- "#60a5fa",
58
- "#bae6fd"
59
- ], c = [
60
- "#f87171",
61
- "#b91c1c",
62
- "#222b3d",
63
- "#1d4ed8",
64
- "#60a5fa"
65
- ];
66
- function l(e, t, n, r = "light") {
67
- if (Array.isArray(e) && e.length >= 2) return e;
68
- let i = r === "dark";
69
- return e === "diverging" || e == null && t < 0 && n > 0 ? i ? c : o : i ? s : a;
70
- }
71
- function u(e, t) {
72
- if (!e.length) return "#888";
73
- let n = Math.max(0, Math.min(1, t));
74
- if (e.length === 1) return e[0];
75
- let r = n * (e.length - 1), i = Math.floor(r), a = r - i, o = d(e[i]), s = d(e[Math.min(e.length - 1, i + 1)]);
76
- if (!o || !s) return e[i] ?? "#888";
77
- let c = (e, t) => Math.round(e + (t - e) * a), l = (e) => e.toString(16).padStart(2, "0");
78
- return "#" + l(c(o.r, s.r)) + l(c(o.g, s.g)) + l(c(o.b, s.b));
79
- }
80
- function d(e) {
81
- let t = /^#?([0-9a-f]{6})$/i.exec(e.trim());
82
- if (!t) return null;
83
- let n = parseInt(t[1], 16);
84
- return {
85
- r: n >> 16 & 255,
86
- g: n >> 8 & 255,
87
- b: n & 255
88
- };
89
- }
90
- function f(e) {
91
- let t = d(e);
92
- if (!t) return "#0f172a";
93
- let n = (e) => {
94
- let t = e / 255;
95
- return t <= .03928 ? t / 12.92 : ((t + .055) / 1.055) ** 2.4;
96
- };
97
- return .2126 * n(t.r) + .7152 * n(t.g) + .0722 * n(t.b) > .5 ? "#0f172a" : "#ffffff";
98
- }
99
- function p(e, t) {
100
- (!Number.isFinite(e) || e <= 0) && (e = 1), (!Number.isFinite(t) || t <= e) && (t = e * 10);
101
- let n = Math.floor(Math.log10(e)), r = Math.ceil(Math.log10(t)), i = [];
102
- for (let e = n; e <= r; e += 1) i.push(10 ** e);
103
- return {
104
- min: 10 ** n,
105
- max: 10 ** r,
106
- step: 10,
107
- ticks: i
108
- };
109
- }
110
- function m(e, t, n, r) {
111
- return Number.isFinite(e) ? r ? e <= 0 || t <= 0 ? null : (Math.log10(e) - Math.log10(t)) / (Math.log10(n) - Math.log10(t)) : (e - t) / (n - t) : null;
112
- }
113
- function h(e, t) {
114
- if (!t) {
115
- let t = "", n = !1;
116
- for (let r of e) {
117
- if (!r.defined) {
118
- n = !1;
119
- continue;
120
- }
121
- t += `${n ? "L" : "M"}${r.x},${r.y} `, n = !0;
122
- }
123
- return t.trim();
124
- }
125
- let n = [], r = [];
126
- for (let t of e) t.defined ? r.push({
127
- x: t.x,
128
- y: t.y
129
- }) : r.length && (n.push(r), r = []);
130
- return r.length && n.push(r), n.map(g).filter(Boolean).join(" ");
131
- }
132
- function g(e) {
133
- let t = e.length;
134
- if (t === 0) return "";
135
- if (t === 1) return `M${e[0].x},${e[0].y}`;
136
- if (t === 2) return `M${e[0].x},${e[0].y} L${e[1].x},${e[1].y}`;
137
- let n = Array(t - 1), r = Array(t - 1);
138
- for (let i = 0; i < t - 1; i += 1) {
139
- let t = e[i + 1].x - e[i].x;
140
- n[i] = t, r[i] = t === 0 ? 0 : (e[i + 1].y - e[i].y) / t;
141
- }
142
- let i = Array(t);
143
- i[0] = r[0], i[t - 1] = r[t - 2];
144
- for (let e = 1; e < t - 1; e += 1) r[e - 1] * r[e] <= 0 ? i[e] = 0 : i[e] = (r[e - 1] + r[e]) / 2;
145
- for (let e = 0; e < t - 1; e += 1) {
146
- if (r[e] === 0) {
147
- i[e] = 0, i[e + 1] = 0;
148
- continue;
149
- }
150
- let t = i[e] / r[e], n = i[e + 1] / r[e], a = Math.hypot(t, n);
151
- a > 3 && (i[e] = 3 / a * t * r[e], i[e + 1] = 3 / a * n * r[e]);
152
- }
153
- let a = `M${e[0].x},${e[0].y}`;
154
- for (let r = 0; r < t - 1; r += 1) {
155
- let t = n[r], o = e[r].x + t / 3, s = e[r].y + i[r] * t / 3, c = e[r + 1].x - t / 3, l = e[r + 1].y - i[r + 1] * t / 3;
156
- a += ` C${o},${s} ${c},${l} ${e[r + 1].x},${e[r + 1].y}`;
157
- }
158
- return a;
159
- }
160
- function _(e) {
161
- let t = 0, n = 0, r = 0, i = 0, a = 0;
162
- for (let o = 0; o < e.length; o += 1) {
163
- let s = e[o];
164
- Number.isFinite(s) && (t += 1, n += o, r += s, i += o * o, a += o * s);
165
- }
166
- if (t < 2) return e.map(() => NaN);
167
- let o = t * i - n * n;
168
- if (o === 0) return e.map(() => r / t);
169
- let s = (t * a - n * r) / o, c = (r - s * n) / t;
170
- return e.map((e, t) => s * t + c);
171
- }
172
- function v(e, t) {
173
- if (t < 1) return e.slice();
174
- let n = Array(e.length).fill(NaN), r = 0, i = 0;
175
- for (let a = 0; a < e.length; a += 1) {
176
- let o = e[a];
177
- if (Number.isFinite(o) && (r += o, i += 1), a >= t) {
178
- let n = e[a - t];
179
- Number.isFinite(n) && (r -= n, --i);
180
- }
181
- a >= t - 1 && i > 0 && (n[a] = r / i);
182
- }
183
- return n;
184
- }
185
- function y(e, t) {
186
- let n = 2 / (Math.max(1, t) + 1), r = Array(e.length).fill(NaN), i = null;
187
- for (let t = 0; t < e.length; t += 1) {
188
- let a = e[t];
189
- if (!Number.isFinite(a)) {
190
- r[t] = i ?? NaN;
191
- continue;
192
- }
193
- i = i == null ? a : n * a + (1 - n) * i, r[t] = i;
194
- }
195
- return r;
196
- }
197
- function b(e, t) {
198
- if (t === "linear") return _(e);
199
- let n = /^(sma|ema):(\d+)$/.exec(t);
200
- if (!n) return e.map(() => NaN);
201
- let r = Number(n[2]);
202
- return n[1] === "ema" ? y(e, r) : v(e, r);
203
- }
204
- function x(e, t, n = 4) {
205
- (!Number.isFinite(e) || !Number.isFinite(t)) && (e = 0, t = 1), e === t && (e === 0 ? t = 1 : (e = Math.min(0, e), t = Math.max(0, t)), e === t && (t = e + 1));
206
- let a = i(i(t - e, !1) / Math.max(1, n), !0), o = Math.floor(e / a) * a, s = Math.ceil(t / a) * a, c = [];
207
- for (let e = o; e <= s + a * .5; e += a) c.push(r(e));
208
- return {
209
- min: o,
210
- max: s,
211
- step: a,
212
- ticks: c
213
- };
214
- }
215
- function S(e) {
216
- let t = Math.abs(e);
217
- return t >= 1e6 ? `${(e / 1e6).toFixed(t % 1e6 ? 1 : 0)}M` : t >= 1e3 ? `${(e / 1e3).toFixed(t % 1e3 ? 1 : 0)}k` : String(Math.round(e * 100) / 100);
218
- }
219
- function C(e, t) {
220
- if (!Number.isFinite(e)) return "";
221
- if (t === "currency") return `${e < 0 ? "-" : ""}$${S(Math.abs(e))}`;
222
- if (t === "percent") {
223
- let t = e * 100;
224
- return `${Math.round(t * 10) / 10}%`;
225
- }
226
- return S(e);
227
- }
228
- var w = 864e5;
229
- function T(e, t) {
230
- let n = t - e, r = n <= 7 * w ? w : n <= 70 * w ? 7 * w : n <= 800 * w ? 30 * w : 365 * w, i = [];
231
- for (let n = Math.ceil(e / r) * r; n <= t + 1; n += r) i.push(n);
232
- return i.length || i.push(e, t), i;
233
- }
234
- function E(e, t) {
235
- let n = new Date(e);
236
- return t <= 70 * w ? n.toLocaleDateString(void 0, {
237
- month: "short",
238
- day: "numeric"
239
- }) : t <= 800 * w ? n.toLocaleDateString(void 0, {
240
- month: "short",
241
- year: "2-digit"
242
- }) : String(n.getFullYear());
243
- }
244
- function D(e, t, n, r = [], i = !1) {
245
- let a = Infinity, o = -Infinity, s = (e) => {
246
- Number.isFinite(e) && (i && e <= 0 || (e < a && (a = e), e > o && (o = e)));
247
- };
248
- for (let e of r) s(e);
249
- let c = e.filter((e) => e.kind === "bar" || e.kind === "area"), l = e.filter((e) => e.kind === "line");
250
- if (n && c.length) for (let e = 0; e < t.length; e += 1) {
251
- let t = 0, n = 0;
252
- for (let r of c) {
253
- let i = r.values[e] ?? 0;
254
- i >= 0 ? t += i : n += i;
255
- }
256
- s(t), s(n);
257
- }
258
- else for (let e of c) for (let t of e.values) s(t);
259
- for (let e of l) for (let t of e.values) s(t);
260
- return a === Infinity && (a = +!!i, o = i ? 10 : 1), c.length && !i && (a = Math.min(a, 0), o = Math.max(o, 0)), i ? p(a, o) : x(a, o);
261
- }
262
- function O(e, t = "light") {
263
- let i = e.width ?? 520, a = e.height ?? 300, o = e.palette ?? n, s = !!(e.stacked || e.stacked100), c = e.series.map((t, n) => ({
264
- ...t,
265
- color: t.color ?? o[n % o.length],
266
- kind: t.type ?? (e.type === "pie" || e.type === "scatter" ? "bar" : e.type),
267
- axis: t.axis ?? "left"
268
- })), d = c.map((e) => ({
269
- label: e.label,
270
- color: e.color
271
- })), p = {
272
- type: e.type,
273
- width: i,
274
- height: a,
275
- plot: {
276
- x: 0,
277
- y: 0,
278
- w: i,
279
- h: a
280
- },
281
- bars: [],
282
- lines: [],
283
- slices: [],
284
- yTicks: [],
285
- y2Ticks: [],
286
- hasRightAxis: !1,
287
- xTicks: [],
288
- categoryGroupTicks: [],
289
- xLabelRotated: !1,
290
- legend: d,
291
- donut: null,
292
- referenceLines: [],
293
- scatterPoints: [],
294
- orientation: "vertical",
295
- valueTicks: [],
296
- catTicks: [],
297
- referenceLinesV: [],
298
- overlays: [],
299
- annotations: [],
300
- heatmapCells: [],
301
- heatmapRowTicks: [],
302
- heatmapColTicks: [],
303
- heatmapLegend: [],
304
- funnelSegments: [],
305
- radarRings: [],
306
- radarAxes: [],
307
- radarSeries: [],
308
- radarCenter: null,
309
- treemapCells: [],
310
- calendarCells: [],
311
- calendarMonthTicks: [],
312
- calendarLegend: [],
313
- gauge: null,
314
- sankeyNodes: [],
315
- sankeyLinks: []
316
- };
317
- if (e.type === "waterfall") {
318
- let t = c[0];
319
- if (!t) return { ...p };
320
- let n = e.waterfallColors ?? {}, o = n.positive ?? "#16a34a", s = n.negative ?? "#ef4444", l = n.total ?? "#475569", u = e.categories.reduce((e, t) => Math.max(e, t.length), 0), d = e.categories.length > 8 || u > 9, f = 48 + (e.yAxisTitle ? 16 : 0), m = (d ? 54 : 28) + (e.xAxisTitle ? 16 : 0), h = Math.max(1, i - f - 12), g = Math.max(1, a - 10 - m), _ = {
321
- x: f,
322
- y: 10,
323
- w: h,
324
- h: g
325
- }, v = e.waterfallTotals ?? [], y = [], b = 0;
326
- e.categories.forEach((e, n) => {
327
- let r = t.values[n] ?? 0;
328
- v[n] ? y.push({
329
- from: 0,
330
- to: b,
331
- value: b,
332
- isTotal: !0
333
- }) : (y.push({
334
- from: b,
335
- to: b + r,
336
- value: r,
337
- isTotal: !1
338
- }), b += r);
339
- });
340
- let S = 0, w = 0;
341
- for (let e of y) e.from < S && (S = e.from), e.to < S && (S = e.to), e.from > w && (w = e.from), e.to > w && (w = e.to);
342
- let T = x(S, w), E = (e) => r(10 + g - (e - T.min) / (T.max - T.min || 1) * g), D = h / Math.max(1, e.categories.length), O = D * .2, k = Math.max(1, D - O), A = y.map((n, i) => {
343
- let a = E(Math.max(n.from, n.to)), c = E(Math.min(n.from, n.to)), u = f + D * i + O / 2, d = n.isTotal ? l : n.value >= 0 ? o : s;
344
- return {
345
- x: r(u),
346
- y: a,
347
- w: r(k),
348
- h: Math.max(1, c - a),
349
- color: d,
350
- label: e.categories[i] ?? String(i),
351
- series: t.label,
352
- value: n.value
353
- };
354
- }), j = [{
355
- path: y.map((e, t) => {
356
- let n = f + D * t + O / 2 + k, r = E(e.to), i = f + D * (t + 1) + O / 2;
357
- return t < y.length - 1 ? `M${n},${r} L${i},${r}` : "";
358
- }).filter(Boolean).join(" "),
359
- areaPath: "",
360
- color: "var(--sg-muted, #94a3b8)",
361
- label: "",
362
- points: []
363
- }], M = e.categories.map((e, t) => ({
364
- label: e,
365
- x: r(f + D * t + D / 2)
366
- })), N = T.ticks.map((t) => ({
367
- value: t,
368
- y: E(t),
369
- label: C(t, e.valueFormat)
370
- }));
371
- return {
372
- ...p,
373
- plot: _,
374
- bars: A,
375
- lines: j,
376
- yTicks: N,
377
- xTicks: M,
378
- xLabelRotated: d
379
- };
380
- }
381
- if (e.type === "funnel") {
382
- let t = c[0];
383
- if (!t || !t.values.length) return { ...p };
384
- let r = Math.max(1, i - 20 - 20), o = Math.max(1, a - 16 - 16), s = {
385
- x: 20,
386
- y: 16,
387
- w: r,
388
- h: o
389
- }, l = o / t.values.length, u = Math.max(...t.values.map((e) => Number.isFinite(e) ? e : 0)), d = t.values[0] ?? 0, m = (e) => u > 0 ? e / u * r : 0, h = 20 + r / 2, g = e.palette ?? n, _ = t.values.map((n, r) => {
390
- let i = t.values[r + 1] ?? n * .8, a = m(n), o = m(i), s = 16 + l * r, c = s + l, u = `M${h - a / 2},${s} L${h + a / 2},${s} L${h + o / 2},${c} L${h - o / 2},${c} Z`, p = t.color ?? g[r % g.length];
391
- return {
392
- path: u,
393
- color: p,
394
- label: e.categories[r] ?? t.label,
395
- value: n,
396
- conversion: d > 0 ? n / d : 0,
397
- dropoff: r === 0 ? 0 : (t.values[r - 1] ?? n) > 0 ? 1 - n / (t.values[r - 1] ?? n) : 0,
398
- cx: h,
399
- cy: (s + c) / 2,
400
- textColor: f(p)
401
- };
402
- });
403
- return {
404
- ...p,
405
- plot: s,
406
- funnelSegments: _
407
- };
408
- }
409
- if (e.type === "radar") {
410
- if (!c.length || !e.categories.length) return { ...p };
411
- let t = Math.max(1, i - 30 - 30), o = Math.max(1, a - 24 - 24), s = {
412
- x: 30,
413
- y: 24,
414
- w: t,
415
- h: o
416
- }, l = 30 + t / 2, u = 24 + o / 2, d = Math.max(20, Math.min(t, o) / 2 - 20), f = e.categories, m = f.length, h = 0;
417
- for (let e of c) for (let t of e.values) Number.isFinite(t) && t > h && (h = t);
418
- h === 0 && (h = 1);
419
- let g = Array.from({ length: 5 }, (e, t) => (t + 1) / 5 * h), _ = (e) => -Math.PI / 2 + e / m * Math.PI * 2, v = (e, t) => {
420
- let n = t / h, i = _(e);
421
- return {
422
- x: r(l + d * n * Math.cos(i)),
423
- y: r(u + d * n * Math.sin(i))
424
- };
425
- }, y = f.map((e, t) => {
426
- let n = v(t, h);
427
- return {
428
- label: e,
429
- x: n.x,
430
- y: n.y
431
- };
432
- }), b = c.map((t, r) => {
433
- let i = t.values.map((e, t) => {
434
- let n = v(t, Number.isFinite(e) ? e : 0);
435
- return {
436
- x: n.x,
437
- y: n.y,
438
- value: e,
439
- axis: f[t] ?? ""
440
- };
441
- }), a = i.length ? i.map((e, t) => `${t === 0 ? "M" : "L"}${e.x},${e.y}`).join(" ") + " Z" : "", o = e.palette ?? n;
442
- return {
443
- label: t.label,
444
- color: t.color ?? o[r % o.length],
445
- path: a,
446
- points: i
447
- };
448
- });
449
- return {
450
- ...p,
451
- plot: s,
452
- radarRings: g,
453
- radarAxes: y,
454
- radarSeries: b,
455
- radarCenter: {
456
- cx: l,
457
- cy: u,
458
- r: d
459
- }
460
- };
461
- }
462
- if (e.type === "calendar") {
463
- let n = e.calendarValues ?? [];
464
- if (!n.length && !e.calendarStart) return { ...p };
465
- let r = /* @__PURE__ */ new Map(), o = Infinity, s = -Infinity;
466
- for (let e of n) r.set(e.date, e.value), Number.isFinite(e.value) && (e.value < o && (o = e.value), e.value > s && (s = e.value));
467
- o === Infinity && (o = 0, s = 1), o === s && (s = o + 1);
468
- let c = l(e.colorScale, o, s, t), d = (e) => u(c, (e - o) / (s - o)), f = n.map((e) => e.date).sort(), m = e.calendarStart ?? f[0] ?? "2026-01-01", h = e.calendarEnd ?? f[f.length - 1] ?? m, g = /* @__PURE__ */ new Date(m + "T00:00:00Z"), _ = /* @__PURE__ */ new Date(h + "T00:00:00Z");
469
- g.setUTCDate(g.getUTCDate() - g.getUTCDay()), _.setUTCDate(_.getUTCDate() + (6 - _.getUTCDay()));
470
- let v = Math.round((_.getTime() - g.getTime()) / 864e5) + 1, y = Math.ceil(v / 7), b = Math.max(1, i - 36 - 80), x = Math.max(1, a - 26 - 16), S = Math.floor(b / y), w = Math.floor(x / 7), T = Math.max(6, Math.min(S, w)), E = {
471
- x: 36,
472
- y: 26,
473
- w: T * y,
474
- h: T * 7
475
- }, D = [], O = -1, k = [];
476
- for (let e = 0; e < v; e += 1) {
477
- let t = new Date(g.getTime() + e * 864e5), n = Math.floor(e / 7), i = e % 7, a = t.toISOString().slice(0, 10), o = r.has(a), s = r.get(a) ?? 0;
478
- D.push({
479
- x: 36 + n * T,
480
- y: 26 + i * T,
481
- size: T,
482
- date: a,
483
- value: s,
484
- defined: o,
485
- color: o ? d(s) : "transparent"
486
- }), t.getUTCDate() === 1 && t.getUTCMonth() !== O && (O = t.getUTCMonth(), k.push({
487
- label: t.toLocaleDateString(void 0, { month: "short" }),
488
- x: 36 + n * T
489
- }));
490
- }
491
- let A = Array.from({ length: 5 }, (t, n) => {
492
- let r = n / 4, i = o + (s - o) * r;
493
- return {
494
- value: i,
495
- color: d(i),
496
- label: C(i, e.valueFormat)
497
- };
498
- });
499
- return {
500
- ...p,
501
- plot: E,
502
- calendarCells: D,
503
- calendarMonthTicks: k,
504
- calendarLegend: A
505
- };
506
- }
507
- if (e.type === "gauge") {
508
- let t = e.gaugeMin ?? 0, n = e.gaugeMax ?? 100, o = Math.max(t, Math.min(n, e.gaugeValue ?? 0)), s = e.gaugeTarget, c = i / 2, l = a * .78, u = Math.min(i * .42, a * .65), d = Math.PI, f = 2 * Math.PI, m = (e) => d + (e - t) / (n - t || 1) * (f - d), h = (e, t, n) => {
509
- let r = c + n * Math.cos(e), i = l + n * Math.sin(e), a = c + n * Math.cos(t), o = l + n * Math.sin(t);
510
- return `M${r},${i} A${n},${n} 0 ${+(t - e > Math.PI)} 1 ${a},${o}`;
511
- }, g = h(d, f, u), _ = h(d, m(o), u), v = (e.gaugeRanges ?? []).map((e) => ({
512
- path: h(m(e.from), m(e.to), u - 9),
513
- color: e.color,
514
- from: e.from,
515
- to: e.to
516
- })), y = null;
517
- if (s != null && Number.isFinite(s)) {
518
- let e = m(Math.max(t, Math.min(n, s))), r = u - 12, i = u + 4;
519
- y = {
520
- x1: c + r * Math.cos(e),
521
- y1: l + r * Math.sin(e),
522
- x2: c + i * Math.cos(e),
523
- y2: l + i * Math.sin(e)
524
- };
525
- }
526
- let b = [];
527
- for (let e = 0; e <= 20; e++) {
528
- let t = d + e / 20 * (f - d), n = e % 5 == 0, r = u + 9, i = u + (n ? 17 : 13);
529
- b.push({
530
- x1: c + r * Math.cos(t),
531
- y1: l + r * Math.sin(t),
532
- x2: c + i * Math.cos(t),
533
- y2: l + i * Math.sin(t),
534
- major: n
535
- });
536
- }
537
- let x = m(o), S = u - 16, C = x + Math.PI / 2, w = (e, t) => `${r(c + e * Math.cos(t))},${r(l + e * Math.sin(t))}`, T = `M${w(6, C)} L${w(S, x)} L${w(6, C + Math.PI)} L${w(18, x + Math.PI)} Z`, E = null;
538
- for (let t of e.gaugeRanges ?? []) o >= t.from && o <= t.to && (E = t.color);
539
- return {
540
- ...p,
541
- plot: {
542
- x: 0,
543
- y: 0,
544
- w: i,
545
- h: a
546
- },
547
- gauge: {
548
- cx: c,
549
- cy: l,
550
- r: u,
551
- trackPath: g,
552
- valuePath: _,
553
- rangePaths: v,
554
- target: y,
555
- ticks: b,
556
- needle: {
557
- path: T,
558
- hubR: 7
559
- },
560
- valueColor: E,
561
- minLabel: {
562
- x: c - u,
563
- y: l + 20
564
- },
565
- maxLabel: {
566
- x: c + u,
567
- y: l + 20
568
- },
569
- value: o,
570
- min: t,
571
- max: n,
572
- unit: e.gaugeUnit ?? ""
573
- }
574
- };
575
- }
576
- if (e.type === "treemap") {
577
- let t = e.treemap;
578
- if (!t) return { ...p };
579
- let o = Math.max(1, i - 4 - 4), s = Math.max(1, a - 4 - 4), c = {
580
- x: 4,
581
- y: 4,
582
- w: o,
583
- h: s
584
- }, l = e.palette ?? n, u = [];
585
- function d(e) {
586
- return e.children?.length ? e.children.reduce((e, t) => e + d(t), 0) : Math.max(0, e.value ?? 0);
587
- }
588
- function m(e, t, n, i, a, o) {
589
- if (!e.length || i <= 0 || a <= 0) return;
590
- let s = e.map(d), c = s.reduce((e, t) => e + t, 0);
591
- if (c <= 0) return;
592
- let p = e.map((e, t) => ({
593
- node: e,
594
- value: s[t]
595
- })).sort((e, t) => t.value - e.value), h = t, g = n, _ = i, v = a, y = c, b = [], x = (e, t, n, r) => {
596
- if (n <= 0) return Infinity;
597
- let i = n * r / t, a = 0;
598
- for (let n of e) {
599
- let e = n * r / i, o = Math.max(t / e, e / t);
600
- o > a && (a = o);
601
- }
602
- return a;
603
- };
604
- function S() {
605
- if (!b.length) return;
606
- let e = b.reduce((e, t) => e + t.value, 0), t = _ * v / y, n = _ >= v, i = n ? v : _, a = e * t / i, s = 0;
607
- for (let e of b) {
608
- let i = e.value * t / a, c = n ? h : h + s, d = n ? g + s : g, p = n ? a : i, _ = n ? i : a, v = e.node.color ?? l[(o + u.length) % l.length];
609
- if (e.node.children?.length) {
610
- u.push({
611
- x: r(c),
612
- y: r(d),
613
- w: r(p),
614
- h: r(_),
615
- color: v,
616
- textColor: f(v),
617
- name: e.node.name,
618
- value: e.value,
619
- depth: o
620
- });
621
- let t = Math.min(18, _ * .25);
622
- m(e.node.children, c + 1, d + t, p - 2, _ - t - 1, o + 1);
623
- } else u.push({
624
- x: r(c),
625
- y: r(d),
626
- w: r(p),
627
- h: r(_),
628
- color: v,
629
- textColor: f(v),
630
- name: e.node.name,
631
- value: e.value,
632
- depth: o
633
- });
634
- s += i;
635
- }
636
- n ? (h += a, _ -= a) : (g += a, v -= a), y -= e, b = [];
637
- }
638
- for (let e of p) {
639
- let t = _ * v / y, n = Math.min(_, v), r = b.reduce((e, t) => e + t.value, 0), i = x(b.map((e) => e.value), n, r, t), a = x([...b.map((e) => e.value), e.value], n, r + e.value, t);
640
- b.length && a > i && S(), b.push(e);
641
- }
642
- S();
643
- }
644
- return m(t.children ?? [t], 4, 4, o, s, 0), {
645
- ...p,
646
- plot: c,
647
- treemapCells: u
648
- };
649
- }
650
- if (e.type === "sankey") {
651
- let t = e.sankeyNodes ?? [], r = e.sankeyLinks ?? [];
652
- if (!t.length || !r.length) return { ...p };
653
- let o = Math.max(1, i - 10 - 10), s = Math.max(1, a - 14 - 14), c = {
654
- x: 10,
655
- y: 14,
656
- w: o,
657
- h: s
658
- }, l = e.palette ?? n, u = new Map(t.map((e) => [e.id, e])), d = new Set(r.map((e) => e.target)), f = t.filter((e) => !d.has(e.id)), m = /* @__PURE__ */ new Map();
659
- function h(e, t, n) {
660
- if (!n.has(e)) {
661
- n.add(e), (t > (m.get(e) ?? 0) || !m.has(e)) && m.set(e, t);
662
- for (let i of r) i.source === e && h(i.target, t + 1, n);
663
- n.delete(e);
664
- }
665
- }
666
- for (let e of f) h(e.id, 0, /* @__PURE__ */ new Set());
667
- for (let e of t) m.has(e.id) || m.set(e.id, 0);
668
- let g = Math.max(...m.values()) + 1, _ = g > 1 ? (o - 14 * g) / (g - 1) : 0, v = /* @__PURE__ */ new Map(), y = /* @__PURE__ */ new Map();
669
- for (let e of r) v.set(e.target, (v.get(e.target) ?? 0) + e.value), y.set(e.source, (y.get(e.source) ?? 0) + e.value);
670
- let b = /* @__PURE__ */ new Map();
671
- for (let e of t) {
672
- let t = m.get(e.id) ?? 0, n = b.get(t) ?? [];
673
- n.push(e.id), b.set(t, n);
674
- }
675
- let x = 0;
676
- for (let e of b.values()) {
677
- let t = e.reduce((e, t) => e + Math.max(v.get(t) ?? 0, y.get(t) ?? 0), 0);
678
- t > x && (x = t);
679
- }
680
- if (x === 0) return {
681
- ...p,
682
- plot: c
683
- };
684
- let S = (s - 64) / x, C = [];
685
- for (let [e, t] of b) {
686
- let n = t.map((e) => Math.max(8, Math.max(v.get(e) ?? 0, y.get(e) ?? 0) * S)), r = 14 + (s - (n.reduce((e, t) => e + t, 0) + 8 * (t.length - 1))) / 2, i = 10 + e * (14 + _);
687
- t.forEach((t, a) => {
688
- let o = u.get(t), s = n[a];
689
- C.push({
690
- id: t,
691
- label: o.label ?? t,
692
- color: o.color ?? l[C.length % l.length],
693
- x: i,
694
- y: r,
695
- w: 14,
696
- h: s,
697
- column: e,
698
- totalIn: v.get(t) ?? 0,
699
- totalOut: y.get(t) ?? 0
700
- }), r += s + 8;
701
- });
702
- }
703
- let w = new Map(C.map((e) => [e.id, e])), T = /* @__PURE__ */ new Map(), E = /* @__PURE__ */ new Map(), D = [], O = r.slice().sort((e, t) => t.value - e.value);
704
- for (let e of O) {
705
- let t = w.get(e.source), n = w.get(e.target);
706
- if (!t || !n) continue;
707
- let r = Math.max(1, e.value * S), i = t.y + (E.get(t.id) ?? 0) + r / 2, a = n.y + (T.get(n.id) ?? 0) + r / 2;
708
- E.set(t.id, (E.get(t.id) ?? 0) + r), T.set(n.id, (T.get(n.id) ?? 0) + r);
709
- let o = t.x + t.w, s = n.x, c = (o + s) / 2, l = `M${o},${i} C${c},${i} ${c},${a} ${s},${a}`;
710
- D.push({
711
- path: l,
712
- color: e.color ?? t.color,
713
- width: r,
714
- source: e.source,
715
- target: e.target,
716
- value: e.value
717
- });
718
- }
719
- return {
720
- ...p,
721
- plot: c,
722
- sankeyNodes: C,
723
- sankeyLinks: D
724
- };
725
- }
726
- if (e.type === "heatmap") {
727
- if (!c.length || !e.categories.length) return {
728
- ...p,
729
- plot: {
730
- x: 0,
731
- y: 0,
732
- w: i,
733
- h: a
734
- }
735
- };
736
- let n = c.reduce((e, t) => Math.max(e, t.label.length), 0), o = 12 + Math.min(180, Math.max(60, n * 7)), s = Math.max(1, i - o - 64), d = Math.max(1, a - 12 - 32), m = {
737
- x: o,
738
- y: 12,
739
- w: s,
740
- h: d
741
- }, h = s / e.categories.length, g = d / c.length, _ = Infinity, v = -Infinity;
742
- for (let e of c) for (let t of e.values) Number.isFinite(t) && (t < _ && (_ = t), t > v && (v = t));
743
- _ === Infinity && (_ = 0, v = 1), _ === v && (v = _ + 1);
744
- let y = l(e.colorScale, _, v, t), b = (e) => u(y, (e - _) / (v - _)), x = [];
745
- c.forEach((t, n) => {
746
- t.values.forEach((i, a) => {
747
- if (!Number.isFinite(i)) return;
748
- let s = b(i);
749
- x.push({
750
- x: r(o + h * a),
751
- y: r(12 + g * n),
752
- w: r(h),
753
- h: r(g),
754
- color: s,
755
- textColor: f(s),
756
- value: i,
757
- rowLabel: t.label,
758
- colLabel: e.categories[a] ?? ""
759
- });
760
- });
761
- });
762
- let S = c.map((e, t) => ({
763
- value: t,
764
- y: r(12 + g * t + g / 2),
765
- label: e.label
766
- })), w = e.categories.map((e, t) => ({
767
- label: e,
768
- x: r(o + h * t + h / 2)
769
- })), T = Array.from({ length: 5 }, (t, n) => {
770
- let r = n / 4, i = _ + (v - _) * r;
771
- return {
772
- value: i,
773
- color: b(i),
774
- label: C(i, e.valueFormat)
775
- };
776
- });
777
- return {
778
- ...p,
779
- plot: m,
780
- heatmapCells: x,
781
- heatmapRowTicks: S,
782
- heatmapColTicks: w,
783
- heatmapLegend: T
784
- };
785
- }
786
- if (e.type === "pie") {
787
- let t = c[0];
788
- if (!t) return p;
789
- let n = t.values.reduce((e, t) => e + Math.max(0, t), 0) || 1, s = i / 2, l = a / 2, u = Math.min(i, a) / 2 - 10, d = u * Math.min(.9, Math.max(0, e.innerRadius ?? 0)), f = -Math.PI / 2, m = t.values.map((t, i) => {
790
- let a = Math.max(0, t) / n, c = f, p = f + a * Math.PI * 2;
791
- f = p;
792
- let m = +(p - c > Math.PI), h = (c + p) / 2, g = (u + d) / 2 || u * .6, _ = s + u * Math.cos(c), v = l + u * Math.sin(c), y = s + u * Math.cos(p), b = l + u * Math.sin(p), x;
793
- if (a >= .999) x = d ? `M${r(s - u)},${r(l)} A${u},${u} 0 1 1 ${r(s + u)},${r(l)} A${u},${u} 0 1 1 ${r(s - u)},${r(l)} ZM${r(s - d)},${r(l)} A${d},${d} 0 1 0 ${r(s + d)},${r(l)} A${d},${d} 0 1 0 ${r(s - d)},${r(l)} Z` : `M${r(s - u)},${r(l)} A${u},${u} 0 1 1 ${r(s + u)},${r(l)} A${u},${u} 0 1 1 ${r(s - u)},${r(l)} Z`;
794
- else if (d > 0) {
795
- let e = s + d * Math.cos(c), t = l + d * Math.sin(c), n = s + d * Math.cos(p), i = l + d * Math.sin(p);
796
- x = `M${r(_)},${r(v)} A${u},${u} 0 ${m} 1 ${r(y)},${r(b)} L${r(n)},${r(i)} A${d},${d} 0 ${m} 0 ${r(e)},${r(t)} Z`;
797
- } else x = `M${r(s)},${r(l)} L${r(_)},${r(v)} A${u},${u} 0 ${m} 1 ${r(y)},${r(b)} Z`;
798
- let S = e.categories[i] ?? String(i);
799
- return {
800
- path: x,
801
- color: e.categoryColors?.[S] ?? o[i % o.length],
802
- label: S,
803
- value: t,
804
- percent: a * 100,
805
- cx: r(s + g * Math.cos(h)),
806
- cy: r(l + g * Math.sin(h))
807
- };
808
- });
809
- return {
810
- ...p,
811
- slices: m,
812
- legend: e.categories.map((t, n) => ({
813
- label: t,
814
- color: e.categoryColors?.[t] ?? o[n % o.length]
815
- })),
816
- donut: d > 0 ? {
817
- cx: r(s),
818
- cy: r(l),
819
- r: r(d),
820
- total: t.values.reduce((e, t) => e + Math.max(0, t), 0)
821
- } : null
822
- };
823
- }
824
- if (e.type === "scatter") {
825
- let t = 48 + (e.yAxisTitle ? 16 : 0), n = 28 + (e.xAxisTitle ? 16 : 0), o = Math.max(1, i - t - 12), s = Math.max(1, a - 10 - n), l = {
826
- x: t,
827
- y: 10,
828
- w: o,
829
- h: s
830
- }, u = Infinity, d = -Infinity, f = Infinity, m = -Infinity, h = Infinity, g = -Infinity;
831
- for (let e of c) for (let t of e.points ?? []) Number.isFinite(t.x) && (u = Math.min(u, t.x), d = Math.max(d, t.x)), Number.isFinite(t.y) && (f = Math.min(f, t.y), m = Math.max(m, t.y)), t.r != null && Number.isFinite(t.r) && (h = Math.min(h, t.r), g = Math.max(g, t.r));
832
- if (u === Infinity) return {
833
- ...p,
834
- plot: l
835
- };
836
- let _ = x(u, d), v = x(f, m), y = g > h, b = (e) => r(t + (e - _.min) / (_.max - _.min || 1) * o), w = (e) => r(10 + s - (e - v.min) / (v.max - v.min || 1) * s), T = (e) => y && e != null && Number.isFinite(e) ? r(4 + (e - h) / (g - h || 1) * 14) : 5, E = [];
837
- for (let e of c) for (let t of e.points ?? []) !Number.isFinite(t.x) || !Number.isFinite(t.y) || E.push({
838
- cx: b(t.x),
839
- cy: w(t.y),
840
- r: T(t.r),
841
- color: e.color,
842
- label: t.label ?? "",
843
- series: e.label,
844
- x: t.x,
845
- y: t.y
846
- });
847
- let D = (e.referenceLines ?? []).map((t) => ({
848
- y: w(t.value),
849
- label: t.label ?? C(t.value, e.valueFormat),
850
- color: t.color ?? "#ef4444",
851
- dashed: t.dashed !== !1
852
- }));
853
- return {
854
- ...p,
855
- plot: l,
856
- scatterPoints: E,
857
- referenceLines: D,
858
- yTicks: v.ticks.map((t) => ({
859
- value: t,
860
- y: w(t),
861
- label: C(t, e.valueFormat)
862
- })),
863
- xTicks: _.ticks.map((e) => ({
864
- label: S(e),
865
- x: b(e)
866
- }))
867
- };
868
- }
869
- if (e.orientation === "horizontal" && c.length > 0 && c.every((e) => e.kind === "bar")) {
870
- let t = e.categories.reduce((e, t) => Math.max(e, t.length), 0), n = Math.min(150, 18 + t * 6.4) + (e.yAxisTitle ? 16 : 0), o = 26 + (e.xAxisTitle ? 16 : 0), l = Math.max(1, i - n - 16), u = Math.max(1, a - 8 - o), d = {
871
- x: n,
872
- y: 8,
873
- w: l,
874
- h: u
875
- }, f = (e.referenceLines ?? []).map((e) => e.value), m = e.stacked100 ? x(0, 100) : D(c, e.categories, s, f), h = (e) => r(n + (e - m.min) / (m.max - m.min || 1) * l), g = e.categories.length, _ = u / Math.max(1, g), v = _ * .2, y = _ - v, b = (e) => 8 + _ * e + v / 2, w = h(Math.min(Math.max(0, m.min), m.max)), T = [];
876
- if (s) {
877
- let t = e.stacked100 ? e.categories.map((e, t) => c.reduce((e, n) => e + Math.abs(Number.isFinite(n.values[t]) ? n.values[t] : 0), 0) || 1) : null, n = Array(g).fill(0), i = Array(g).fill(0);
878
- for (let a of c) a.values.forEach((o, s) => {
879
- if (!Number.isFinite(o)) return;
880
- let c = t ? o / t[s] * 100 : o, l, u;
881
- c >= 0 ? (l = h(n[s]), u = h(n[s] + c), n[s] += c) : (l = h(i[s] + c), u = h(i[s]), i[s] += c), T.push({
882
- x: Math.min(l, u),
883
- y: r(b(s)),
884
- w: r(Math.abs(u - l)),
885
- h: r(Math.max(1, y)),
886
- color: a.color,
887
- label: e.categories[s] ?? String(s),
888
- series: a.label,
889
- value: o
890
- });
891
- });
892
- } else {
893
- let t = y / c.length;
894
- c.forEach((n, i) => {
895
- n.values.forEach((a, o) => {
896
- if (!Number.isFinite(a)) return;
897
- let s = h(a);
898
- T.push({
899
- x: Math.min(s, w),
900
- y: r(b(o) + t * i),
901
- w: r(Math.max(1, Math.abs(s - w))),
902
- h: r(Math.max(1, t - 1)),
903
- color: n.color,
904
- label: e.categories[o] ?? String(o),
905
- series: n.label,
906
- value: a
907
- });
908
- });
909
- });
910
- }
911
- let E = m.ticks.map((t) => ({
912
- label: e.stacked100 ? `${S(t)}%` : C(t, e.valueFormat),
913
- x: h(t)
914
- })), O = e.categories.map((e, t) => ({
915
- value: t,
916
- y: r(b(t) + y / 2),
917
- label: e
918
- })), k = (e.referenceLines ?? []).map((t) => ({
919
- x: h(t.value),
920
- label: t.label ?? C(t.value, e.valueFormat),
921
- color: t.color ?? "#ef4444",
922
- dashed: t.dashed !== !1
923
- }));
924
- return {
925
- ...p,
926
- plot: d,
927
- bars: T,
928
- orientation: "horizontal",
929
- valueTicks: E,
930
- catTicks: O,
931
- referenceLinesV: k,
932
- xLabelRotated: !1
933
- };
934
- }
935
- let _ = c.filter((e) => e.axis === "left"), v = c.filter((e) => e.axis === "right"), y = v.length > 0, w = e.categories.reduce((e, t) => Math.max(e, t.length), 0), O = e.categories.length > 8 || w > 9, k = e.categoryGroups && e.categoryGroups.length > 0 && e.xType !== "time" && e.orientation !== "horizontal" && e.categoryGroups.reduce((e, t) => e + t.span, 0) === e.categories.length ? e.categoryGroups : null, A = k ? 18 : 0, j = 48 + (e.yAxisTitle ? 16 : 0), M = (y ? 48 : 12) + (e.y2AxisTitle ? 16 : 0), N = (O ? 54 : 28) + (e.xAxisTitle ? 16 : 0) + A, P = Math.max(1, i - j - M), F = Math.max(1, a - 10 - N), ee = {
936
- x: j,
937
- y: 10,
938
- w: P,
939
- h: F
940
- }, te = (e.referenceLines ?? []).filter((e) => e.axis !== "right").map((e) => e.value), ne = (e.referenceLines ?? []).filter((e) => e.axis === "right").map((e) => e.value), I = e.yScale === "log", L = e.y2Scale === "log", R = e.stacked100 ? x(0, 100) : D(_, e.categories, s, te, I), z = y ? e.stacked100 ? x(0, 100) : D(v, e.categories, s, ne, L) : null, B = (e, t, n = !1) => {
941
- let i = m(t, e.min, e.max, n);
942
- return i === null ? NaN : r(10 + F - i * F);
943
- }, re = (e) => B(R, e, I), ie = (e) => B(z ?? R, e, L), V = (e) => e.axis === "right" ? z ?? R : R, H = (e) => e.axis === "right" ? L : I, U = e.categories.length, W = P / Math.max(1, U), G = e.xType === "time" ? e.categories.map((e) => Date.parse(e)) : null, K = !!G && G.some((e) => Number.isFinite(e)), q = K ? Math.min(...G.filter(Number.isFinite)) : 0, J = K && Math.max(...G.filter(Number.isFinite)) - q || 1, Y = (e) => K && Number.isFinite(G[e]) ? r(j + (G[e] - q) / J * P) : r(j + W * e + W / 2), ae = K ? T(q, q + J).map((e) => ({
944
- label: E(e, J),
945
- x: r(j + (e - q) / J * P)
946
- })) : e.categories.map((e, t) => ({
947
- label: e,
948
- x: Y(t)
949
- })), X = [];
950
- if (k && !K) {
951
- let e = 0;
952
- for (let t of k) {
953
- let n = r(j + W * e), i = r(j + W * (e + t.span));
954
- X.push({
955
- label: t.label,
956
- x0: n,
957
- x1: i,
958
- xCenter: r((n + i) / 2)
959
- }), e += t.span;
960
- }
961
- }
962
- let Z = c.filter((e) => e.kind === "bar"), Q = [];
963
- if (Z.length) {
964
- let t = W * .2;
965
- if (s) {
966
- let n = W - t, i = (e) => j + W * e + t / 2;
967
- for (let t of ["left", "right"]) {
968
- let a = Z.filter((e) => e.axis === t);
969
- if (!a.length) continue;
970
- let o = t === "right" ? ie : re, s = e.stacked100 ? e.categories.map((e, t) => a.reduce((e, n) => e + Math.abs(Number.isFinite(n.values[t]) ? n.values[t] : 0), 0) || 1) : null, c = Array(U).fill(0), l = Array(U).fill(0);
971
- for (let t of a) t.values.forEach((a, u) => {
972
- if (!Number.isFinite(a)) return;
973
- let d = s ? a / s[u] * 100 : a, f, p;
974
- d >= 0 ? (f = o(c[u] + d), p = o(c[u]), c[u] += d) : (f = o(l[u]), p = o(l[u] + d), l[u] += d), Q.push({
975
- x: r(i(u)),
976
- y: Math.min(f, p),
977
- w: r(Math.max(1, n)),
978
- h: r(Math.abs(p - f)),
979
- color: t.color,
980
- label: e.categories[u] ?? String(u),
981
- series: t.label,
982
- value: a
983
- });
984
- });
985
- }
986
- } else {
987
- let n = (W - t) / Z.length;
988
- Z.forEach((i, a) => {
989
- let o = V(i), s = H(i), c = s ? B(o, o.min, s) : B(o, Math.min(Math.max(0, o.min), o.max), s);
990
- i.values.forEach((l, u) => {
991
- if (!Number.isFinite(l) || s && l <= 0) return;
992
- let d = j + W * u + t / 2 + n * a, f = B(o, l, s);
993
- Q.push({
994
- x: r(d),
995
- y: Math.min(f, c),
996
- w: r(Math.max(1, n - 1)),
997
- h: r(Math.max(1, Math.abs(f - c))),
998
- color: i.color,
999
- label: e.categories[u] ?? String(u),
1000
- series: i.label,
1001
- value: l
1002
- });
1003
- });
1004
- });
1005
- }
1006
- }
1007
- let $ = [], oe = {
1008
- left: Array(U).fill(0),
1009
- right: Array(U).fill(0)
1010
- }, se = {
1011
- left: null,
1012
- right: null
1013
- };
1014
- if (e.stacked100) for (let t of ["left", "right"]) {
1015
- let n = c.filter((e) => e.kind === "area" && e.axis === t);
1016
- n.length && (se[t] = e.categories.map((e, t) => n.reduce((e, n) => e + Math.abs(Number.isFinite(n.values[t]) ? n.values[t] : 0), 0) || 1));
1017
- }
1018
- for (let t of c) {
1019
- if (t.kind === "bar") continue;
1020
- let n = V(t), i = H(t), a = (e) => B(n, e, i), o = s && t.kind === "area", c = (e) => Y(e), l, u = null;
1021
- if (o) {
1022
- let n = oe[t.axis], r = n.slice(), i = se[t.axis];
1023
- l = t.values.map((t, r) => {
1024
- let o = Number.isFinite(t) ? t : 0, s = i ? o / i[r] * 100 : o, l = (n[r] ?? 0) + s;
1025
- return n[r] = l, {
1026
- x: c(r),
1027
- y: a(l),
1028
- label: e.categories[r] ?? String(r),
1029
- value: t,
1030
- defined: Number.isFinite(t)
1031
- };
1032
- }), u = r.map((e, t) => ({
1033
- x: c(t),
1034
- y: a(e)
1035
- }));
1036
- } else l = t.values.map((t, n) => {
1037
- let r = Number.isFinite(t);
1038
- return {
1039
- x: c(n),
1040
- y: r ? a(t) : NaN,
1041
- label: e.categories[n] ?? String(n),
1042
- value: t,
1043
- defined: r
1044
- };
1045
- });
1046
- let d = !!t.smooth, f = h(l, d), p = "";
1047
- if (t.kind === "area" && l.length) {
1048
- if (u) p = `${d ? g(l.map((e) => ({
1049
- x: e.x,
1050
- y: e.y
1051
- }))) : l.map((e, t) => `${t === 0 ? "M" : "L"}${e.x},${e.y}`).join(" ")} ${d ? `L${u[u.length - 1].x},${u[u.length - 1].y} ` + g(u.slice().reverse()).replace(/^M[^ ]+ /, "") : u.slice().reverse().map((e) => `L${e.x},${e.y}`).join(" ")} Z`;
1052
- else {
1053
- let e = r(a(Math.min(Math.max(0, n.min), n.max))), t = [], i = [];
1054
- for (let e of l) e.defined ? i.push(e) : i.length && (t.push(i), i = []);
1055
- i.length && t.push(i), p = t.map((t) => `${d ? g(t.map((e) => ({
1056
- x: e.x,
1057
- y: e.y
1058
- }))) : t.map((e, t) => `${t === 0 ? "M" : "L"}${e.x},${e.y}`).join(" ")} L${t[t.length - 1].x},${e} L${t[0].x},${e} Z`).join(" ");
1059
- }
1060
- }
1061
- let m = "";
1062
- if (t.upperValues?.length === t.values.length && t.lowerValues?.length === t.values.length) {
1063
- let e = [], n = [];
1064
- for (let r = 0; r < t.values.length; r += 1) {
1065
- let o = t.upperValues[r], s = t.lowerValues[r];
1066
- !Number.isFinite(o) || !Number.isFinite(s) || i && (o <= 0 || s <= 0) || (e.push({
1067
- x: c(r),
1068
- y: a(o)
1069
- }), n.push({
1070
- x: c(r),
1071
- y: a(s)
1072
- }));
1073
- }
1074
- e.length >= 2 && (m = `${d ? g(e) : e.map((e, t) => `${t === 0 ? "M" : "L"}${e.x},${e.y}`).join(" ")} ${d ? `L${n[n.length - 1].x},${n[n.length - 1].y} ` + g(n.slice().reverse()).replace(/^M[^ ]+ /, "") : n.slice().reverse().map((e) => `L${e.x},${e.y}`).join(" ")} Z`);
1075
- }
1076
- $.push({
1077
- path: f,
1078
- areaPath: p,
1079
- color: t.color,
1080
- label: t.label,
1081
- points: l,
1082
- bandPath: m
1083
- });
1084
- }
1085
- let ce = (t, n) => t.ticks.map((r) => ({
1086
- value: r,
1087
- y: B(t, r, n),
1088
- label: C(r, e.valueFormat)
1089
- })), le = (e.referenceLines ?? []).map((t) => {
1090
- let n = t.axis === "right", r = n ? z ?? R : R, i = n ? L : I;
1091
- return {
1092
- y: B(r, t.value, i),
1093
- label: t.label ?? C(t.value, e.valueFormat),
1094
- color: t.color ?? "#ef4444",
1095
- dashed: t.dashed !== !1
1096
- };
1097
- }), ue = [];
1098
- for (let t of c) {
1099
- if (!t.overlay) continue;
1100
- let n = V(t), r = H(t), i = b(t.values, t.overlay), a = t.overlayColor ?? t.color, o = i.map((t, i) => {
1101
- let a = Number.isFinite(t) && (!r || t > 0);
1102
- return {
1103
- x: Y(i),
1104
- y: a ? B(n, t, r) : NaN,
1105
- label: e.categories[i] ?? String(i),
1106
- value: t,
1107
- defined: a
1108
- };
1109
- }), s = h(o, !!t.smooth);
1110
- ue.push({
1111
- path: s,
1112
- areaPath: "",
1113
- color: a,
1114
- label: `${t.label} (${t.overlay})`,
1115
- points: o
1116
- });
1117
- }
1118
- let de = [];
1119
- for (let t of e.annotations ?? []) {
1120
- let n = null, r = null;
1121
- if ("category" in t.at) {
1122
- let i = e.categories.indexOf(t.at.category);
1123
- if (i < 0) continue;
1124
- n = Y(i);
1125
- let a = t.at.series, o = a ? c.find((e) => e.label === a) : c[0];
1126
- if (o) {
1127
- let e = o.values[i];
1128
- Number.isFinite(e) && (r = B(V(o), e, H(o)));
1129
- }
1130
- r ??= 10 + F / 2;
1131
- } else n = j + P / 2, r = Number.isFinite(t.at.y) ? B(R, t.at.y, I) : 10 + F / 2;
1132
- n != null && r != null && Number.isFinite(r) && de.push({
1133
- x: n,
1134
- y: r,
1135
- label: t.label,
1136
- color: t.color ?? "#0f172a",
1137
- placement: t.placement ?? "top"
1138
- });
1139
- }
1140
- return {
1141
- ...p,
1142
- plot: ee,
1143
- bars: Q,
1144
- lines: $,
1145
- yTicks: ce(R, I),
1146
- y2Ticks: z ? ce(z, L) : [],
1147
- hasRightAxis: y,
1148
- xTicks: ae,
1149
- categoryGroupTicks: X,
1150
- xLabelRotated: !K && O,
1151
- referenceLines: le,
1152
- overlays: ue,
1153
- annotations: de
1154
- };
1155
- }
1156
- function k(e, t) {
1157
- let n = t.reduce ?? "sum", r = Array.isArray(t.value) ? t.value : [t.value], i = (e, t) => n === "count" ? t : n === "avg" ? t ? e / t : 0 : e, a = [], o = /* @__PURE__ */ new Map(), s = (e) => {
1158
- let t = o.get(e);
1159
- return t === void 0 && (t = a.length, o.set(e, t), a.push(e)), t;
1160
- }, c = /* @__PURE__ */ new Map(), l = (e) => {
1161
- let t = c.get(e);
1162
- return t || (t = [], c.set(e, t)), t;
1163
- }, u = t.idField !== void 0;
1164
- for (let n of e) {
1165
- let e = s(String(n[t.category] ?? "")), i = u ? n[t.idField] : void 0;
1166
- if (t.series) {
1167
- let a = l(String(n[t.series] ?? "")), o = Number(n[r[0]]), s = a[e] ?? (a[e] = {
1168
- sum: 0,
1169
- count: 0,
1170
- rowIds: []
1171
- });
1172
- Number.isFinite(o) && (s.sum += o, s.count += 1, i !== void 0 && s.rowIds.push(i));
1173
- } else for (let t of r) {
1174
- let r = l(t), a = Number(n[t]), o = r[e] ?? (r[e] = {
1175
- sum: 0,
1176
- count: 0,
1177
- rowIds: []
1178
- });
1179
- Number.isFinite(a) && (o.sum += a, o.count += 1, i !== void 0 && o.rowIds.push(i));
1180
- }
1181
- }
1182
- let d = [...c.entries()].map(([e, n]) => ({
1183
- label: t.series ? e : t.seriesLabel && r.length === 1 ? t.seriesLabel : e,
1184
- values: a.map((e, t) => {
1185
- let r = n[t] ?? {
1186
- sum: 0,
1187
- count: 0,
1188
- rowIds: []
1189
- };
1190
- return i(r.sum, r.count);
1191
- }),
1192
- rowIds: u ? a.map((e, t) => (n[t]?.rowIds ?? []).slice()) : void 0
1193
- })), f = a.map((e, t) => d.reduce((e, n) => e + (Number.isFinite(n.values[t]) ? n.values[t] : 0), 0)), p = t.sort ?? (t.topN ? "value-desc" : "none"), m = a.map((e, t) => t);
1194
- p === "value-desc" ? m.sort((e, t) => f[t] - f[e]) : p === "value-asc" ? m.sort((e, t) => f[e] - f[t]) : p === "category" && m.sort((e, t) => a[e].localeCompare(a[t]));
1195
- let h, g;
1196
- if (t.topN && m.length > t.topN) {
1197
- let e = m.slice(0, t.topN), n = m.slice(t.topN);
1198
- h = e.map((e) => a[e]).concat(t.otherLabel ?? "Other"), g = d.map((t) => ({
1199
- label: t.label,
1200
- values: e.map((e) => t.values[e]).concat(n.reduce((e, n) => e + (Number.isFinite(t.values[n]) ? t.values[n] : 0), 0)),
1201
- rowIds: t.rowIds ? e.map((e) => t.rowIds[e]).concat([n.flatMap((e) => t.rowIds[e] ?? [])]) : void 0
1202
- }));
1203
- } else h = m.map((e) => a[e]), g = d.map((e) => ({
1204
- label: e.label,
1205
- values: m.map((t) => e.values[t]),
1206
- rowIds: e.rowIds ? m.map((t) => e.rowIds[t]) : void 0
1207
- }));
1208
- return {
1209
- type: t.type,
1210
- categories: h,
1211
- series: g,
1212
- width: t.width,
1213
- height: t.height,
1214
- stacked: t.stacked,
1215
- stacked100: t.stacked100,
1216
- palette: t.palette
1217
- };
1218
- }
1219
- //#endregion
1220
- export { k as a, C as i, O as n, t as r, n as t };