@svgrid/grid-wc 2.6.2 → 3.0.0

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 (58) hide show
  1. package/dist/GridMenus-DpmS1pzo.js +1121 -0
  2. package/dist/SvDateRangeInput-u4ibte8S.js +196 -0
  3. package/dist/SvDateTimePicker-DVFiDxUq.js +765 -0
  4. package/dist/{dismissable-xj_k_fnZ.js → SvField-ChCI-O2O.js} +44 -84
  5. package/dist/{SvGrid.helpers-CgUd39VT.js → SvGrid.helpers-BdVDtjUm.js} +37 -11
  6. package/dist/SvGridCellEditor-DvsQyE9a.js +550 -0
  7. package/dist/{SvGridChart-BztTavvw.js → SvGridChart-yK5Zv85y.js} +158 -158
  8. package/dist/{SvGridChartPanel-Ca5HWIZ3.js → SvGridChartPanel-B38_VjXM.js} +52 -52
  9. package/dist/{SvGridChartView-AcWj_tcs.js → SvGridChartView-ScXTF6t-.js} +4 -4
  10. package/dist/{SvGridDropdown-BXqvR1cs.js → SvGridDropdown-DnAESFDu.js} +29 -29
  11. package/dist/angular/fesm2022/svgrid-grid-wc-angular.mjs +358 -0
  12. package/dist/angular/fesm2022/svgrid-grid-wc-angular.mjs.map +1 -0
  13. package/dist/angular/package.json +25 -0
  14. package/dist/angular/types/svgrid-grid-wc-angular.d.ts +161 -0
  15. package/dist/{client-DoXxrq8q.js → client-DjwUji8D.js} +1 -1
  16. package/dist/column-resize-DvCRUrN3.js +101 -0
  17. package/dist/date-format-CPHqTHN6.js +1127 -0
  18. package/dist/dismissable-DvhBKm3q.js +41 -0
  19. package/dist/react/index.d.ts +313 -0
  20. package/dist/react/index.js +72 -0
  21. package/dist/{row-drag-touch-Ddaa-QeB.js → row-drag-touch-CycRR65n.js} +12 -10
  22. package/dist/row-resize-D-8s3cqT.js +94 -0
  23. package/dist/shadow/GridMenus-DpmS1pzo.js +1121 -0
  24. package/dist/shadow/SvDateRangeInput-u4ibte8S.js +196 -0
  25. package/dist/shadow/SvDateTimePicker-DVFiDxUq.js +765 -0
  26. package/dist/shadow/SvField-ChCI-O2O.js +146 -0
  27. package/dist/shadow/SvGrid.helpers-BdVDtjUm.js +135 -0
  28. package/dist/shadow/SvGridCellEditor-DvsQyE9a.js +550 -0
  29. package/dist/shadow/SvGridChart-yK5Zv85y.js +1199 -0
  30. package/dist/shadow/SvGridChartPanel-B38_VjXM.js +584 -0
  31. package/dist/shadow/SvGridChartView-ScXTF6t-.js +50 -0
  32. package/dist/shadow/SvGridDropdown-DnAESFDu.js +256 -0
  33. package/dist/shadow/cell-formatting-C0OsDmi_.js +86 -0
  34. package/dist/shadow/chart-uvs3sFJA.js +1220 -0
  35. package/dist/shadow/client-DjwUji8D.js +2960 -0
  36. package/dist/shadow/column-resize-DvCRUrN3.js +101 -0
  37. package/dist/shadow/date-format-CPHqTHN6.js +1127 -0
  38. package/dist/shadow/dismissable-DvhBKm3q.js +41 -0
  39. package/dist/shadow/editor-contract-peBDxir_.js +22 -0
  40. package/dist/shadow/editor-registry-DxGKqcvx.js +24 -0
  41. package/dist/shadow/export-format-C8kZGZfz.js +161 -0
  42. package/dist/shadow/popover-WsGlvtQv.js +69 -0
  43. package/dist/shadow/row-drag-touch-CycRR65n.js +93 -0
  44. package/dist/shadow/row-resize-D-8s3cqT.js +94 -0
  45. package/dist/shadow/sv-grid-shadow-element.d.ts +246 -0
  46. package/dist/shadow/sv-grid-shadow-element.js +10175 -0
  47. package/dist/{svelte-virtualizer.svelte-CFoYP2Ls.js → shadow/svelte-virtualizer.svelte-DZ9UcyfT.js} +35 -30
  48. package/dist/shadow/validate-CgmAtX1A.js +75 -0
  49. package/dist/sv-grid-element.d.ts +246 -0
  50. package/dist/sv-grid-element.js +3655 -2620
  51. package/dist/svelte-virtualizer.svelte-DZ9UcyfT.js +527 -0
  52. package/dist/validate-CgmAtX1A.js +75 -0
  53. package/dist/vue/index.d.ts +147 -0
  54. package/dist/vue/index.js +72 -0
  55. package/package.json +71 -6
  56. package/dist/GridMenus-CU_-Ks4f.js +0 -1001
  57. package/dist/SvDateTimePicker-Ch1Vug8H.js +0 -1885
  58. package/dist/SvGridCellEditor-CBJUbAsR.js +0 -523
@@ -0,0 +1,1220 @@
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 };