@svgrid/grid-wc 3.0.1 → 3.0.2

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 (92) hide show
  1. package/README.md +20 -0
  2. package/dist/GridMenus-B1mC1aPp.js +1077 -0
  3. package/dist/SvChartMenu-CBMKm7Xb.js +413 -0
  4. package/dist/SvDateRangeInput-BrYTQEMM.js +197 -0
  5. package/dist/SvDateTimePicker-CnLlqNDQ.js +766 -0
  6. package/dist/SvField-Bmzp3ObZ.js +147 -0
  7. package/dist/SvGridCellEditor-B005dmV1.js +560 -0
  8. package/dist/SvGridChart-4TcL9Rj2.js +3702 -0
  9. package/dist/SvGridChartBuilder-C4OL4XYx.js +1165 -0
  10. package/dist/SvGridChartPanel-CfHA8Ioq.js +1743 -0
  11. package/dist/SvGridChartView-Ci-9_EJ0.js +45 -0
  12. package/dist/SvGridDropdown-BlA6iw9m.js +257 -0
  13. package/dist/angular/fesm2022/svgrid-grid-wc-angular.mjs +178 -7
  14. package/dist/angular/fesm2022/svgrid-grid-wc-angular.mjs.map +1 -1
  15. package/dist/angular/types/svgrid-grid-wc-angular.d.ts +77 -2
  16. package/dist/chart/SvChartMenu-C-sbGNk8.js +586 -0
  17. package/dist/chart/chart-export-BHGuh_kZ.js +127 -0
  18. package/dist/chart/chart-export-pdf-BjkkIEkE.js +104 -0
  19. package/dist/chart/chart-summary-B86RFA3M.js +137 -0
  20. package/dist/chart/chart-trend-DP6DSsBa.js +56 -0
  21. package/dist/chart/chart-validate-CD6ptiwg.js +180 -0
  22. package/dist/chart/client-BuB0wIgc.js +2757 -0
  23. package/dist/chart/sv-chart-element.d.ts +98 -0
  24. package/dist/chart/sv-chart-element.js +7282 -0
  25. package/dist/chart-DoqdUoGg.js +4398 -0
  26. package/dist/chart-export-pdf-BirUdchl.js +104 -0
  27. package/dist/chart-summary-BP9i-v8M.js +137 -0
  28. package/dist/chart-validate-CD6ptiwg.js +180 -0
  29. package/dist/{shadow/client-DjwUji8D.js → client-DEF0GRjE.js} +1 -1
  30. package/dist/{column-resize-DvCRUrN3.js → column-resize-DUPgynvc.js} +3 -3
  31. package/dist/date-format-DMTwV8NC.js +1128 -0
  32. package/dist/focus-trap-DvlOlOGM.js +65 -0
  33. package/dist/list-option-DrRyivWp.js +82 -0
  34. package/dist/react/chart.d.ts +99 -0
  35. package/dist/react/chart.js +49 -0
  36. package/dist/react/index.d.ts +28 -0
  37. package/dist/react/index.js +4 -1
  38. package/dist/{row-resize-D-8s3cqT.js → row-resize-Cf8qPLbi.js} +44 -36
  39. package/dist/shadow/GridMenus-B1mC1aPp.js +1077 -0
  40. package/dist/shadow/SvChartMenu-CBMKm7Xb.js +413 -0
  41. package/dist/shadow/SvDateRangeInput-BrYTQEMM.js +197 -0
  42. package/dist/shadow/SvDateTimePicker-CnLlqNDQ.js +766 -0
  43. package/dist/shadow/SvField-Bmzp3ObZ.js +147 -0
  44. package/dist/shadow/SvGridCellEditor-B005dmV1.js +560 -0
  45. package/dist/shadow/SvGridChart-4TcL9Rj2.js +3702 -0
  46. package/dist/shadow/SvGridChartBuilder-C4OL4XYx.js +1165 -0
  47. package/dist/shadow/SvGridChartPanel-CfHA8Ioq.js +1743 -0
  48. package/dist/shadow/SvGridChartView-Ci-9_EJ0.js +45 -0
  49. package/dist/shadow/SvGridDropdown-BlA6iw9m.js +257 -0
  50. package/dist/shadow/chart-DoqdUoGg.js +4398 -0
  51. package/dist/shadow/chart-export-pdf-BirUdchl.js +104 -0
  52. package/dist/shadow/chart-summary-BP9i-v8M.js +137 -0
  53. package/dist/shadow/chart-validate-CD6ptiwg.js +180 -0
  54. package/dist/{client-DjwUji8D.js → shadow/client-DEF0GRjE.js} +1 -1
  55. package/dist/shadow/{column-resize-DvCRUrN3.js → column-resize-DUPgynvc.js} +3 -3
  56. package/dist/shadow/date-format-DMTwV8NC.js +1128 -0
  57. package/dist/shadow/focus-trap-DvlOlOGM.js +65 -0
  58. package/dist/shadow/list-option-DrRyivWp.js +82 -0
  59. package/dist/shadow/{row-resize-D-8s3cqT.js → row-resize-Cf8qPLbi.js} +44 -36
  60. package/dist/shadow/sv-grid-shadow-element.d.ts +15 -0
  61. package/dist/shadow/sv-grid-shadow-element.js +4688 -3621
  62. package/dist/shadow/{svelte-virtualizer.svelte-DZ9UcyfT.js → svelte-virtualizer.svelte-CnGhFGDc.js} +37 -34
  63. package/dist/sv-grid-element.d.ts +15 -0
  64. package/dist/sv-grid-element.js +4646 -3609
  65. package/dist/{svelte-virtualizer.svelte-DZ9UcyfT.js → svelte-virtualizer.svelte-CnGhFGDc.js} +37 -34
  66. package/dist/vue/chart.d.ts +64 -0
  67. package/dist/vue/chart.js +41 -0
  68. package/dist/vue/index.d.ts +11 -2
  69. package/dist/vue/index.js +4 -1
  70. package/package.json +18 -5
  71. package/dist/GridMenus-YwTw9Upd.js +0 -1123
  72. package/dist/SvDateRangeInput-CrxeppBV.js +0 -196
  73. package/dist/SvDateTimePicker-xAO-Pb4S.js +0 -765
  74. package/dist/SvField-CE345DyF.js +0 -146
  75. package/dist/SvGridCellEditor-D7SyHtff.js +0 -550
  76. package/dist/SvGridChart-CMaVmlso.js +0 -1477
  77. package/dist/SvGridChartPanel-Pc_IW0eA.js +0 -833
  78. package/dist/SvGridChartView-DLhhzmFy.js +0 -52
  79. package/dist/SvGridDropdown-DUncHqM-.js +0 -256
  80. package/dist/chart-GRBAgN1M.js +0 -1658
  81. package/dist/date-format-D_oQ5Yw0.js +0 -1127
  82. package/dist/shadow/GridMenus-YwTw9Upd.js +0 -1123
  83. package/dist/shadow/SvDateRangeInput-CrxeppBV.js +0 -196
  84. package/dist/shadow/SvDateTimePicker-xAO-Pb4S.js +0 -765
  85. package/dist/shadow/SvField-CE345DyF.js +0 -146
  86. package/dist/shadow/SvGridCellEditor-D7SyHtff.js +0 -550
  87. package/dist/shadow/SvGridChart-CMaVmlso.js +0 -1477
  88. package/dist/shadow/SvGridChartPanel-Pc_IW0eA.js +0 -833
  89. package/dist/shadow/SvGridChartView-DLhhzmFy.js +0 -52
  90. package/dist/shadow/SvGridDropdown-DUncHqM-.js +0 -256
  91. package/dist/shadow/chart-GRBAgN1M.js +0 -1658
  92. package/dist/shadow/date-format-D_oQ5Yw0.js +0 -1127
@@ -0,0 +1,4398 @@
1
+ import { r as e } from "./cell-formatting-Eypm-id0.js";
2
+ //#region \0rolldown/runtime.js
3
+ var t = Object.defineProperty, n = (e, n) => {
4
+ let r = {};
5
+ for (var i in e) t(r, i, {
6
+ get: e[i],
7
+ enumerable: !0
8
+ });
9
+ return n || t(r, Symbol.toStringTag, { value: "Module" }), r;
10
+ };
11
+ //#endregion
12
+ //#region ../grid/dist/chart-format.js
13
+ function r(e) {
14
+ let t = Math.abs(e);
15
+ 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);
16
+ }
17
+ function i(t, n, i) {
18
+ if (!Number.isFinite(t)) return "";
19
+ if (i && (i.locale || i.currency)) {
20
+ let r = n === "currency" ? "currency" : n === "percent" ? "percent" : "decimal", a = {
21
+ notation: "compact",
22
+ maximumFractionDigits: 1
23
+ };
24
+ return r === "currency" ? (a.style = "currency", a.currency = i.currency || "USD") : r === "percent" && (a.style = "percent"), e(i.locale, a).format(t);
25
+ }
26
+ if (n === "currency") return `${t < 0 ? "-" : ""}$${r(Math.abs(t))}`;
27
+ if (n === "percent") {
28
+ let e = t * 100;
29
+ return `${Math.round(e * 10) / 10}%`;
30
+ }
31
+ return r(t);
32
+ }
33
+ //#endregion
34
+ //#region ../grid/dist/chart-trend.js
35
+ function a(e) {
36
+ let t = 0, n = 0, r = 0, i = 0, a = 0;
37
+ for (let o = 0; o < e.length; o += 1) {
38
+ let s = e[o];
39
+ Number.isFinite(s) && (t += 1, n += o, r += s, i += o * o, a += o * s);
40
+ }
41
+ if (t < 2) return e.map(() => NaN);
42
+ let o = t * i - n * n;
43
+ if (o === 0) return e.map(() => r / t);
44
+ let s = (t * a - n * r) / o, c = (r - s * n) / t;
45
+ return e.map((e, t) => s * t + c);
46
+ }
47
+ function o(e, t) {
48
+ let n = 0, r = 0, i = 0, a = Math.min(e.length, t.length);
49
+ for (let o = 0; o < a; o += 1) Number.isFinite(e[o]) && Number.isFinite(t[o]) && (n += 1, r += e[o], i += t[o]);
50
+ if (n < 2) return 0;
51
+ let o = r / n, s = i / n, c = 0, l = 0, u = 0;
52
+ for (let n = 0; n < a; n += 1) {
53
+ if (!Number.isFinite(e[n]) || !Number.isFinite(t[n])) continue;
54
+ let r = e[n] - o, i = t[n] - s;
55
+ c += r * i, l += r * r, u += i * i;
56
+ }
57
+ return l === 0 || u === 0 ? 0 : c / Math.sqrt(l * u);
58
+ }
59
+ //#endregion
60
+ //#region ../grid/dist/chart-scale.js
61
+ var s = [
62
+ "#2563eb",
63
+ "#16a34a",
64
+ "#f59e0b",
65
+ "#ef4444",
66
+ "#8b5cf6",
67
+ "#0ea5e9",
68
+ "#ec4899",
69
+ "#14b8a6"
70
+ ];
71
+ function c(e) {
72
+ return Math.round(e * 100) / 100;
73
+ }
74
+ function l(e, t) {
75
+ if (e <= 0) return 1;
76
+ let n = Math.floor(Math.log10(e)), r = e / 10 ** n, i;
77
+ 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;
78
+ }
79
+ var u = [
80
+ "#eff6ff",
81
+ "#bfdbfe",
82
+ "#60a5fa",
83
+ "#2563eb",
84
+ "#1e3a8a"
85
+ ], d = [
86
+ "#b91c1c",
87
+ "#fca5a5",
88
+ "#f1f5f9",
89
+ "#93c5fd",
90
+ "#1d4ed8"
91
+ ], f = [
92
+ "#1c2c4d",
93
+ "#1d4ed8",
94
+ "#3b82f6",
95
+ "#60a5fa",
96
+ "#bae6fd"
97
+ ], p = [
98
+ "#f87171",
99
+ "#b91c1c",
100
+ "#222b3d",
101
+ "#1d4ed8",
102
+ "#60a5fa"
103
+ ];
104
+ function m(e, t, n, r = "light") {
105
+ if (Array.isArray(e) && e.length >= 2) return e;
106
+ let i = r === "dark";
107
+ return e === "diverging" || e == null && t < 0 && n > 0 ? i ? p : d : i ? f : u;
108
+ }
109
+ function h(e, t) {
110
+ if (!e.length) return "#888";
111
+ let n = Math.max(0, Math.min(1, t));
112
+ if (e.length === 1) return e[0];
113
+ let r = n * (e.length - 1), i = Math.floor(r), a = r - i, o = g(e[i]), s = g(e[Math.min(e.length - 1, i + 1)]);
114
+ if (!o || !s) return e[i] ?? "#888";
115
+ let c = (e, t) => Math.round(e + (t - e) * a), l = (e) => e.toString(16).padStart(2, "0");
116
+ return "#" + l(c(o.r, s.r)) + l(c(o.g, s.g)) + l(c(o.b, s.b));
117
+ }
118
+ function g(e) {
119
+ let t = /^#?([0-9a-f]{6})$/i.exec(e.trim());
120
+ if (!t) return null;
121
+ let n = parseInt(t[1], 16);
122
+ return {
123
+ r: n >> 16 & 255,
124
+ g: n >> 8 & 255,
125
+ b: n & 255
126
+ };
127
+ }
128
+ function _(e) {
129
+ let t = g(e);
130
+ if (!t) return "#0f172a";
131
+ let n = (e) => {
132
+ let t = e / 255;
133
+ return t <= .03928 ? t / 12.92 : ((t + .055) / 1.055) ** 2.4;
134
+ };
135
+ return .2126 * n(t.r) + .7152 * n(t.g) + .0722 * n(t.b) > .5 ? "#0f172a" : "#ffffff";
136
+ }
137
+ function v(e, t) {
138
+ (!Number.isFinite(e) || e <= 0) && (e = 1), (!Number.isFinite(t) || t <= e) && (t = e * 10);
139
+ let n = Math.floor(Math.log10(e)), r = Math.ceil(Math.log10(t)), i = [];
140
+ for (let e = n; e <= r; e += 1) i.push(10 ** e);
141
+ return {
142
+ min: 10 ** n,
143
+ max: 10 ** r,
144
+ step: 10,
145
+ ticks: i
146
+ };
147
+ }
148
+ function y(e, t) {
149
+ if (!(e > 0) || !(t > e)) return [];
150
+ let n = Math.floor(Math.log10(e)), r = Math.ceil(Math.log10(t)), i = r - n < 3 ? [2, 5] : [], a = [];
151
+ for (let o = n; o <= r; o += 1) {
152
+ let n = 10 ** o;
153
+ for (let r of [1, ...i]) {
154
+ let i = n * r;
155
+ i >= e * .999 && i <= t * 1.001 && a.push(i);
156
+ }
157
+ }
158
+ return a;
159
+ }
160
+ function b(e, t, n, r) {
161
+ 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;
162
+ }
163
+ function x(e, t, n = 4) {
164
+ (!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));
165
+ let r = l(l(t - e, !1) / Math.max(1, n), !0), i = Math.floor(e / r) * r, a = Math.ceil(t / r) * r, o = [];
166
+ for (let e = i; e <= a + r * .5; e += r) o.push(c(e));
167
+ return {
168
+ min: i,
169
+ max: a,
170
+ step: r,
171
+ ticks: o
172
+ };
173
+ }
174
+ function S(e, t, n = {}) {
175
+ let r = n.min ?? e, i = n.max ?? t;
176
+ (!Number.isFinite(r) || !Number.isFinite(i)) && (r = Number.isFinite(r) ? r : 0, i = Number.isFinite(i) ? i : r + 1);
177
+ let a = n.nice !== !1, o = n.tickInterval;
178
+ if (o && o > 0 && Number.isFinite(o)) {
179
+ a && n.min == null && (r = Math.floor(r / o) * o), a && n.max == null && (i = Math.ceil(i / o) * o), i <= r && (i = r + o);
180
+ let e = [], t = Math.ceil(r / o - 1e-9) * o;
181
+ for (let n = t, r = 0; n <= i + o * 1e-6 && r < 1e3; n += o, r += 1) e.push(c(n) + 0);
182
+ return {
183
+ min: r,
184
+ max: i,
185
+ step: o,
186
+ ticks: e
187
+ };
188
+ }
189
+ if (a) {
190
+ let e = x(r, i, n.tickCount ?? 4);
191
+ if (n.min == null && n.max == null) return e;
192
+ let t = n.min ?? e.min, a = n.max ?? e.max;
193
+ return {
194
+ min: t,
195
+ max: a,
196
+ step: e.step,
197
+ ticks: e.ticks.filter((e) => e >= t - 1e-9 && e <= a + 1e-9)
198
+ };
199
+ }
200
+ i <= r && (i = r + 1);
201
+ let s = Math.max(1, Math.round(n.tickCount ?? 4)), l = (i - r) / s, u = Array.from({ length: s + 1 }, (e, t) => c(r + l * t));
202
+ return {
203
+ min: r,
204
+ max: i,
205
+ step: l,
206
+ ticks: u
207
+ };
208
+ }
209
+ var C = 864e5;
210
+ function w(e, t, n = 6) {
211
+ if (!(t > e)) return [e];
212
+ let r = Math.max(2, n) * 1.3, i = t - e, a = [
213
+ [1, 0],
214
+ [2, 0],
215
+ [7, 0],
216
+ [14, 0],
217
+ [0, 1],
218
+ [0, 3],
219
+ [0, 6],
220
+ [0, 12],
221
+ [0, 24],
222
+ [0, 60],
223
+ [0, 120]
224
+ ], [o, s] = a[a.length - 1];
225
+ for (let [e, t] of a) if (i / (e * 864e5 + t * 30.44 * 864e5) <= r) {
226
+ o = e, s = t;
227
+ break;
228
+ }
229
+ let c = new Date(e), l = [];
230
+ if (o) {
231
+ let n = Date.UTC(c.getUTCFullYear(), c.getUTCMonth(), c.getUTCDate());
232
+ for (o >= 7 && (n += (8 - new Date(n).getUTCDay()) % 7 * C); n < e;) n += o * C;
233
+ for (; n <= t + 1; n += o * C) l.push(n);
234
+ } else {
235
+ let n = Math.ceil((c.getUTCFullYear() * 12 + c.getUTCMonth()) / s) * s, r = (e) => Date.UTC(Math.floor(e / 12), e % 12, 1);
236
+ r(n) < e && (n += s);
237
+ for (let e = r(n); e <= t + 1; n += s, e = r(n)) l.push(e);
238
+ }
239
+ return l.length < 2 ? [e, t] : l;
240
+ }
241
+ function T(e, t = 6) {
242
+ if (e.length <= 1) return e.length ? [0] : [];
243
+ let n = {
244
+ day: (e) => `${e.getUTCFullYear()}-${e.getUTCMonth()}-${e.getUTCDate()}`,
245
+ week: (e) => Math.floor((Date.UTC(e.getUTCFullYear(), e.getUTCMonth(), e.getUTCDate()) / C + 3) / 7),
246
+ month: (e) => `${e.getUTCFullYear()}-${e.getUTCMonth()}`,
247
+ year: (e) => e.getUTCFullYear()
248
+ }, r = null;
249
+ for (let i of [
250
+ "day",
251
+ "week",
252
+ "month",
253
+ "year"
254
+ ]) {
255
+ let a = [], o = null;
256
+ for (let t = 0; t < e.length; t += 1) {
257
+ let r = e[t];
258
+ if (!Number.isFinite(r)) continue;
259
+ let s = n[i](new Date(r));
260
+ s !== o && a.push(t), o = s;
261
+ }
262
+ if (r = a, a.length <= t * 2) break;
263
+ }
264
+ let i = r ?? [];
265
+ if (i.length > t) {
266
+ let e = Math.ceil(i.length / t);
267
+ i = i.filter((t, n) => n % e === 0);
268
+ }
269
+ if (i.length < 2) {
270
+ let n = Math.max(1, Math.ceil(e.length / t));
271
+ i = e.map((e, t) => t).filter((e) => e % n === 0);
272
+ }
273
+ return i;
274
+ }
275
+ function E(e, t) {
276
+ let n = new Date(e);
277
+ return t < 24192e5 ? n.toLocaleDateString(void 0, {
278
+ month: "short",
279
+ day: "numeric",
280
+ timeZone: "UTC"
281
+ }) : t < 31104e6 ? n.toLocaleDateString(void 0, {
282
+ month: "short",
283
+ year: "2-digit",
284
+ timeZone: "UTC"
285
+ }) : String(n.getUTCFullYear());
286
+ }
287
+ function D(e, t = "day") {
288
+ let n = new Date(e);
289
+ return t === "year" ? String(n.getUTCFullYear()) : t === "month" ? n.toLocaleDateString(void 0, {
290
+ month: "short",
291
+ year: "numeric",
292
+ timeZone: "UTC"
293
+ }) : n.toLocaleDateString(void 0, {
294
+ year: "numeric",
295
+ month: "short",
296
+ day: "numeric",
297
+ timeZone: "UTC"
298
+ });
299
+ }
300
+ function O(e) {
301
+ let t = !0, n = !0, r = !1;
302
+ for (let i of e) {
303
+ if (!Number.isFinite(i)) continue;
304
+ r = !0;
305
+ let e = new Date(i);
306
+ if (e.getUTCDate() !== 1 || e.getUTCHours() !== 0) {
307
+ t = !1, n = !1;
308
+ break;
309
+ }
310
+ e.getUTCMonth() !== 0 && (n = !1);
311
+ }
312
+ return r ? n ? "year" : t ? "month" : "day" : "day";
313
+ }
314
+ function k(e, t, n, r) {
315
+ let i = Math.max(1, Math.ceil((r ? 18 : 60) / Math.max(n, .001))), a = [];
316
+ for (let n = 0; n < e.length; n += i) a.push({
317
+ label: e[n],
318
+ x: t(n)
319
+ });
320
+ return a;
321
+ }
322
+ function A(e, t) {
323
+ if (e == null) return null;
324
+ if (typeof e == "number") {
325
+ if (!Number.isFinite(e)) return null;
326
+ let n = Math.abs(e);
327
+ return {
328
+ lo: t - n,
329
+ hi: t + n
330
+ };
331
+ }
332
+ return !Number.isFinite(e.lo) || !Number.isFinite(e.hi) ? null : {
333
+ lo: Math.min(e.lo, e.hi),
334
+ hi: Math.max(e.lo, e.hi)
335
+ };
336
+ }
337
+ //#endregion
338
+ //#region ../grid/dist/chart-stats.js
339
+ function j(e, t = 1.5) {
340
+ let n = e.filter((e) => Number.isFinite(e)).slice().sort((e, t) => e - t);
341
+ if (!n.length) return null;
342
+ let r = (e) => {
343
+ let t = (n.length - 1) * e, r = Math.floor(t), i = Math.ceil(t);
344
+ return r === i ? n[r] : n[r] + (n[i] - n[r]) * (t - r);
345
+ }, i = r(.25), a = r(.5), o = r(.75), s = i - t * (o - i), c = o + t * (o - i), l = n.filter((e) => e >= s && e <= c), u = n.filter((e) => e < s || e > c);
346
+ return {
347
+ min: l.length ? l[0] : n[0],
348
+ q1: i,
349
+ median: a,
350
+ q3: o,
351
+ max: l.length ? l[l.length - 1] : n[n.length - 1],
352
+ ...u.length ? { outliers: u } : {}
353
+ };
354
+ }
355
+ var M = (e) => ({
356
+ fitted: e.map(() => NaN),
357
+ r2: 0,
358
+ equation: "",
359
+ predict: () => NaN
360
+ }), N = (e, t) => t ? e.map((e, n) => t[n] ?? NaN) : e.map((e, t) => t);
361
+ function P(e, t) {
362
+ let n = 0, r = 0;
363
+ for (let i = 0; i < e.length; i += 1) Number.isFinite(e[i]) && Number.isFinite(t[i]) && (n += 1, r += e[i]);
364
+ if (n < 2) return 0;
365
+ r /= n;
366
+ let i = 0, a = 0;
367
+ for (let n = 0; n < e.length; n += 1) !Number.isFinite(e[n]) || !Number.isFinite(t[n]) || (i += (e[n] - t[n]) ** 2, a += (e[n] - r) ** 2);
368
+ return a === 0 ? +(i === 0) : Math.max(0, Math.min(1, 1 - i / a));
369
+ }
370
+ var F = (e) => Math.abs(e) >= 1e3 || Math.abs(e) < .001 && e !== 0 ? e.toExponential(2) : String(Math.round(e * 1e3) / 1e3);
371
+ function I(e, t) {
372
+ let n = t.length, r = e.map((e, n) => [...e, t[n]]);
373
+ for (let e = 0; e < n; e += 1) {
374
+ let t = e;
375
+ for (let i = e + 1; i < n; i += 1) Math.abs(r[i][e]) > Math.abs(r[t][e]) && (t = i);
376
+ if (Math.abs(r[t][e]) < 1e-12) return null;
377
+ [r[e], r[t]] = [r[t], r[e]];
378
+ for (let t = 0; t < n; t += 1) {
379
+ if (t === e) continue;
380
+ let i = r[t][e] / r[e][e];
381
+ for (let a = e; a <= n; a += 1) r[t][a] -= i * r[e][a];
382
+ }
383
+ }
384
+ return r.map((e, t) => e[n] / e[t]);
385
+ }
386
+ function L(e, t, n) {
387
+ let r = Math.max(1, Math.min(6, Math.round(t))), i = e.length, a = M(e), o = N(e, n), s = [];
388
+ for (let t = 0; t < i; t += 1) Number.isFinite(e[t]) && Number.isFinite(o[t]) && s.push(t);
389
+ if (s.length <= r) return a;
390
+ let c = Infinity, l = -Infinity;
391
+ for (let e of s) c = Math.min(c, o[e]), l = Math.max(l, o[e]);
392
+ n || (c = 0, l = Math.max(1, i - 1));
393
+ let u = Math.max(l - c, 1e-12), d = (e) => 2 * (e - c) / u - 1, f = Array.from({ length: r + 1 }, () => Array(r + 1).fill(0)), p = Array(r + 1).fill(0);
394
+ for (let t of s) {
395
+ let n = d(o[t]), i = e[t], a = [1];
396
+ for (let e = 1; e <= 2 * r; e += 1) a.push(a[e - 1] * n);
397
+ for (let e = 0; e <= r; e += 1) {
398
+ p[e] += a[e] * i;
399
+ for (let t = 0; t <= r; t += 1) f[e][t] += a[e + t];
400
+ }
401
+ }
402
+ let m = I(f, p);
403
+ if (!m) return a;
404
+ let h = (e) => {
405
+ let t = d(e), n = 0, i = 1;
406
+ for (let e = 0; e <= r; e += 1) n += m[e] * i, i *= t;
407
+ return n;
408
+ }, g = e.map((e, t) => Number.isFinite(e) && Number.isFinite(o[t]) ? h(o[t]) : NaN), _ = m.map((e, t) => t === 0 ? F(e) : `${F(e)} u^${t}`).reverse(), v = n ? `u = 2(x - ${F(c)})/${F(u)} - 1` : `u = 2x/${u} - 1`;
409
+ return {
410
+ fitted: g,
411
+ r2: P(e, g),
412
+ equation: `y = ${_.join(" + ")} (${v})`,
413
+ predict: h
414
+ };
415
+ }
416
+ function R(e, t) {
417
+ let n = N(e, t), { slope: r, intercept: i, ok: a } = z(n, e);
418
+ if (!a) return M(e);
419
+ let o = (e) => r * e + i, s = e.map((e, t) => Number.isFinite(e) && Number.isFinite(n[t]) ? o(n[t]) : NaN);
420
+ return {
421
+ fitted: s,
422
+ r2: P(e, s),
423
+ equation: `y = ${F(r)} x + ${F(i)}`,
424
+ predict: o
425
+ };
426
+ }
427
+ function ee(e, t) {
428
+ let n = N(e, t), { slope: r, intercept: i, ok: a } = z(n, e.map((e) => Number.isFinite(e) && e > 0 ? Math.log(e) : NaN));
429
+ if (!a) return M(e);
430
+ let o = Math.exp(i), s = (e) => o * Math.exp(r * e), c = e.map((e, t) => Number.isFinite(e) && e > 0 && Number.isFinite(n[t]) ? s(n[t]) : NaN);
431
+ return {
432
+ fitted: c,
433
+ r2: P(e, c),
434
+ equation: `y = ${F(o)} e^(${F(r)} x)`,
435
+ predict: s
436
+ };
437
+ }
438
+ function te(e, t) {
439
+ let n = +!t, r = N(e, t).map((e) => e + n > 0 ? Math.log(e + n) : NaN), { slope: i, intercept: a, ok: o } = z(r, e);
440
+ if (!o) return M(e);
441
+ let s = (e) => e + n > 0 ? a + i * Math.log(e + n) : NaN, c = e.map((e, t) => Number.isFinite(e) && Number.isFinite(r[t]) ? a + i * r[t] : NaN), l = t ? "x" : "x + 1";
442
+ return {
443
+ fitted: c,
444
+ r2: P(e, c),
445
+ equation: `y = ${F(a)} + ${F(i)} ln(${l})`,
446
+ predict: s
447
+ };
448
+ }
449
+ function ne(e, t) {
450
+ let n = +!t, r = N(e, t).map((e) => e + n > 0 ? Math.log(e + n) : NaN), { slope: i, intercept: a, ok: o } = z(r, e.map((e) => Number.isFinite(e) && e > 0 ? Math.log(e) : NaN));
451
+ if (!o) return M(e);
452
+ let s = Math.exp(a), c = (e) => e + n > 0 ? s * (e + n) ** +i : NaN, l = e.map((e, t) => Number.isFinite(e) && e > 0 && Number.isFinite(r[t]) ? s * Math.exp(i * r[t]) : NaN), u = t ? "x" : "(x + 1)";
453
+ return {
454
+ fitted: l,
455
+ r2: P(e, l),
456
+ equation: `y = ${F(s)} ${u}^${F(i)}`,
457
+ predict: c
458
+ };
459
+ }
460
+ function z(e, t) {
461
+ let n = 0, r = 0, i = 0, a = 0, o = 0;
462
+ for (let s = 0; s < t.length; s += 1) {
463
+ let c = e[s], l = t[s];
464
+ !Number.isFinite(c) || !Number.isFinite(l) || (n += 1, r += c, i += l, a += c * c, o += c * l);
465
+ }
466
+ if (n < 2) return {
467
+ slope: 0,
468
+ intercept: 0,
469
+ ok: !1
470
+ };
471
+ let s = n * a - r * r, c = s === 0 ? 0 : (n * o - r * i) / s;
472
+ return {
473
+ slope: c,
474
+ intercept: (i - c * r) / n,
475
+ ok: !0
476
+ };
477
+ }
478
+ function B(e, t) {
479
+ if (t < 1) return e.slice();
480
+ let n = Array(e.length).fill(NaN), r = 0, i = 0;
481
+ for (let a = 0; a < e.length; a += 1) {
482
+ let o = e[a];
483
+ if (Number.isFinite(o) && (r += o, i += 1), a >= t) {
484
+ let n = e[a - t];
485
+ Number.isFinite(n) && (r -= n, --i);
486
+ }
487
+ a >= t - 1 && i > 0 && (n[a] = r / i);
488
+ }
489
+ return n;
490
+ }
491
+ function V(e, t) {
492
+ let n = 2 / (Math.max(1, t) + 1), r = Array(e.length).fill(NaN), i = null;
493
+ for (let t = 0; t < e.length; t += 1) {
494
+ let a = e[t];
495
+ if (!Number.isFinite(a)) {
496
+ r[t] = i ?? NaN;
497
+ continue;
498
+ }
499
+ i = i == null ? a : n * a + (1 - n) * i, r[t] = i;
500
+ }
501
+ return r;
502
+ }
503
+ function re(e) {
504
+ return e !== "sum" && e !== "avg" && e !== "count";
505
+ }
506
+ function ie(e, t) {
507
+ let n = e.length;
508
+ switch (t) {
509
+ case "count": return n;
510
+ case "sum": {
511
+ let t = 0;
512
+ for (let n of e) t += n;
513
+ return t;
514
+ }
515
+ case "avg": {
516
+ if (!n) return 0;
517
+ let t = 0;
518
+ for (let n of e) t += n;
519
+ return t / n;
520
+ }
521
+ case "min": return n ? Math.min(...e) : NaN;
522
+ case "max": return n ? Math.max(...e) : NaN;
523
+ case "first": return n ? e[0] : NaN;
524
+ case "last": return n ? e[n - 1] : NaN;
525
+ case "countDistinct": return new Set(e).size;
526
+ case "median": return H(e, 50);
527
+ default: {
528
+ let n = /^p(\d+(?:\.\d+)?)$/.exec(t);
529
+ return n ? H(e, Number(n[1])) : NaN;
530
+ }
531
+ }
532
+ }
533
+ function H(e, t) {
534
+ let n = e.filter((e) => Number.isFinite(e)).slice().sort((e, t) => e - t);
535
+ if (!n.length) return NaN;
536
+ let r = (n.length - 1) * Math.max(0, Math.min(100, t)) / 100, i = Math.floor(r), a = Math.ceil(r);
537
+ return i === a ? n[i] : n[i] + (n[a] - n[i]) * (r - i);
538
+ }
539
+ function U(e, t) {
540
+ let n = e instanceof Date ? e.getTime() : typeof e == "number" ? e : Date.parse(e);
541
+ if (!Number.isFinite(n)) return "";
542
+ let r = new Date(n), i = r.getUTCFullYear(), a = r.getUTCMonth(), o;
543
+ switch (t) {
544
+ case "day":
545
+ o = new Date(Date.UTC(i, a, r.getUTCDate()));
546
+ break;
547
+ case "week": {
548
+ let e = (r.getUTCDay() + 6) % 7;
549
+ o = new Date(Date.UTC(i, a, r.getUTCDate() - e));
550
+ break;
551
+ }
552
+ case "month":
553
+ o = new Date(Date.UTC(i, a, 1));
554
+ break;
555
+ case "quarter":
556
+ o = new Date(Date.UTC(i, a - a % 3, 1));
557
+ break;
558
+ default: o = new Date(Date.UTC(i, 0, 1));
559
+ }
560
+ return o.toISOString().slice(0, 10);
561
+ }
562
+ function ae(e, t = {}) {
563
+ let n = e.filter((e) => Number.isFinite(e));
564
+ if (!n.length) return {
565
+ categories: [],
566
+ counts: [],
567
+ edges: [],
568
+ width: 0
569
+ };
570
+ let r = t.min ?? Math.min(...n), i = t.max ?? Math.max(...n);
571
+ i <= r && (i = r + 1);
572
+ let a;
573
+ if (t.bins && t.bins > 0) a = Math.round(t.bins);
574
+ else if (t.binWidth && t.binWidth > 0) a = Math.max(1, Math.ceil((i - r) / t.binWidth));
575
+ else if (t.method === "sqrt") a = Math.ceil(Math.sqrt(n.length));
576
+ else if (t.method === "fd") {
577
+ let e = H(n, 75) - H(n, 25), t = e > 0 ? 2 * e / Math.cbrt(n.length) : 0;
578
+ a = Math.ceil(t > 0 ? (i - r) / t : Math.log2(n.length) + 1);
579
+ } else a = Math.ceil(Math.log2(n.length) + 1);
580
+ a = Math.max(1, Math.min(1e3, a));
581
+ let o = t.binWidth && t.binWidth > 0 ? t.binWidth : (i - r) / a, s = o >= 1 ? 0 : Math.min(6, Math.ceil(-Math.log10(o)) + 1), c = (e) => Number(e.toFixed(s)), l = [];
582
+ for (let e = 0; e <= a; e += 1) l.push(c(r + e * o));
583
+ let u = Array(a).fill(0);
584
+ for (let e of n) {
585
+ let t = Math.floor((e - r) / o);
586
+ t >= a && (t = a - 1), t < 0 && (t = 0), u[t] = (u[t] ?? 0) + 1;
587
+ }
588
+ return {
589
+ categories: u.map((e, t) => String(c(r + (t + .5) * o))),
590
+ counts: u,
591
+ edges: l,
592
+ width: o
593
+ };
594
+ }
595
+ //#endregion
596
+ //#region ../grid/dist/chart-axes.js
597
+ function W(e, t) {
598
+ let n = e.type ?? t;
599
+ return n === "candlestick" || n === "ohlc" || e.ohlc ? "candle" : n === "boxplot" || e.boxes ? "box" : n === "line" || n === "area" ? n : n === "stream" ? "area" : n === "range-bar" || n === "range-area" || n === "lollipop" || n === "dumbbell" ? n : n === "scatter" && e.type === "scatter" ? "scatter" : "bar";
600
+ }
601
+ function oe(e, t, n, r = [], i = !1, a = {}) {
602
+ let o = Infinity, s = -Infinity, c = (e) => {
603
+ Number.isFinite(e) && (i && e <= 0 || (e < o && (o = e), e > s && (s = e)));
604
+ };
605
+ for (let e of r) c(e);
606
+ let l = e.filter((e) => e.kind === "bar" || e.kind === "area"), u = e.filter((e) => e.kind === "line" || e.kind === "scatter" || e.kind === "lollipop");
607
+ for (let t of e) if (t.kind === "range-bar" || t.kind === "range-area" || t.kind === "dumbbell") {
608
+ for (let e of t.values) c(e);
609
+ for (let e of t.lowValues ?? []) c(e);
610
+ }
611
+ let d = /* @__PURE__ */ new Map();
612
+ l.forEach((e, t) => {
613
+ let r = e.stack ? `${e.kind}:${e.stack}` : n ? e.kind : `#${t}`, i = d.get(r);
614
+ i ? i.push(e) : d.set(r, [e]);
615
+ });
616
+ for (let e of d.values()) {
617
+ if (e.length === 1) {
618
+ for (let t of e[0].values) c(t);
619
+ continue;
620
+ }
621
+ for (let n = 0; n < t.length; n += 1) {
622
+ let t = 0, r = 0;
623
+ for (let i of e) {
624
+ let e = i.values[n] ?? 0;
625
+ e >= 0 ? t += e : r += e;
626
+ }
627
+ c(t), c(r);
628
+ }
629
+ }
630
+ for (let e of u) for (let t of e.values) c(t);
631
+ for (let t of e) if (t.kind === "candle") for (let e of t.ohlc ?? []) e && (c(e.h), c(e.l));
632
+ for (let t of e) if (t.kind === "box") {
633
+ for (let e of t.boxes ?? []) if (e) {
634
+ c(e.min), c(e.max);
635
+ for (let t of e.outliers ?? []) c(t);
636
+ }
637
+ }
638
+ for (let t of e) t.errors && t.errors.forEach((e, n) => {
639
+ let r = A(e, t.values[n] ?? 0);
640
+ r && (c(r.lo), c(r.hi));
641
+ });
642
+ if (o === Infinity && (o = +!!i, s = i ? 10 : 1), (l.length || e.some((e) => e.kind === "lollipop")) && !i && (o = Math.min(o, 0), s = Math.max(s, 0)), i) {
643
+ let e = v(o, s), t = a.min != null && a.min > 0 ? a.min : e.min, n = a.max != null && a.max > t ? a.max : e.max;
644
+ return t === e.min && n === e.max ? e : {
645
+ min: t,
646
+ max: n,
647
+ step: e.step,
648
+ ticks: e.ticks.filter((e) => e >= t && e <= n)
649
+ };
650
+ }
651
+ return S(o, s, a);
652
+ }
653
+ function G(e) {
654
+ let t = e.axes;
655
+ if (!t) return null;
656
+ let { x: n, y: r, w: i, h: a } = e.plot, o = (e) => (t) => {
657
+ let n = b(t, e.min, e.max, e.log);
658
+ return n === null ? NaN : (e.reversed && (n = 1 - n), r + a - n * a);
659
+ }, s = o(t.y), c = t.y2 ? o(t.y2) : s, l = (e) => (t) => {
660
+ let n = a === 0 ? 0 : (r + a - t) / a;
661
+ if (e.reversed && (n = 1 - n), !e.log) return e.min + n * (e.max - e.min);
662
+ let i = Math.log10(e.min);
663
+ return 10 ** (i + n * (Math.log10(e.max) - i));
664
+ }, u = t.x, d = u && u.max - u.min || 1, f = u?.log && Math.log10(u.max) - Math.log10(u.min) || 1, p = (e) => {
665
+ if (!u || !Number.isFinite(e) || u.log && e <= 0) return NaN;
666
+ let t = u.log ? (Math.log10(e) - Math.log10(u.min)) / f : (e - u.min) / d;
667
+ return u.reversed && (t = 1 - t), n + t * i;
668
+ }, m = (e) => {
669
+ if (u?.values) {
670
+ let t = u.values[Math.round(e)];
671
+ if (t != null && Number.isFinite(t)) return p(t);
672
+ }
673
+ let r = n + t.slot * e + t.slot / 2;
674
+ return t.xReversed ? n + i - (r - n) : r;
675
+ }, h = (n) => {
676
+ if (u) {
677
+ if (n instanceof Date) return p(n.getTime());
678
+ if (typeof n == "number") return p(n);
679
+ let t = u.type === "time" ? Date.parse(n) : Number(n);
680
+ if (Number.isFinite(t)) return p(t);
681
+ let r = e.xTicks.findIndex((e) => e.label === n);
682
+ return r >= 0 ? e.xTicks[r].x : NaN;
683
+ }
684
+ if (typeof n == "number") return m(n);
685
+ let r = n instanceof Date ? n.toISOString() : n, i = t.labels ? t.labels.indexOf(r) : -1;
686
+ return i >= 0 ? m(i) : NaN;
687
+ }, g = (e) => {
688
+ let r = i === 0 ? 0 : (e - n) / i;
689
+ return (u ? u.reversed : t.xReversed) && (r = 1 - r), u?.log ? 10 ** (Math.log10(u.min) + r * f) : u ? u.min + r * d : Math.max(0, Math.min(t.count - 1, r * t.count - .5));
690
+ };
691
+ return {
692
+ xOf: m,
693
+ yOf: (e, t) => t === "right" ? c(e) : s(e),
694
+ xInvert: (e) => {
695
+ if (u?.values) {
696
+ let t = g(e), n = 0, r = Infinity;
697
+ return u.values.forEach((e, i) => {
698
+ let a = Math.abs(e - t);
699
+ a < r && (r = a, n = i);
700
+ }), n;
701
+ }
702
+ let r = Math.floor((e - n) / (t.slot || 1)), i = t.xReversed ? t.count - 1 - r : r;
703
+ return Math.max(0, Math.min(t.count - 1, i));
704
+ },
705
+ yInvert: (e, n) => n === "right" && t.y2 ? l(t.y2)(e) : l(t.y)(e),
706
+ xOfValue: h,
707
+ xInvertValue: g
708
+ };
709
+ }
710
+ function se(e) {
711
+ let t = e.xAxis ?? {}, n = e.yAxis ?? {}, r = e.y2Axis ?? {}, i = (e, t) => ({
712
+ ...e,
713
+ type: e.type ?? t.type,
714
+ scale: e.scale ?? t.scale,
715
+ title: e.title ?? t.title,
716
+ gridLines: e.gridLines ?? t.gridLines,
717
+ labels: e.labels !== !1,
718
+ nice: e.nice !== !1,
719
+ reversed: e.reversed === !0
720
+ });
721
+ return {
722
+ x: i(t, {
723
+ type: e.xType ?? "category",
724
+ scale: "linear",
725
+ title: e.xAxisTitle,
726
+ gridLines: !1
727
+ }),
728
+ y: i(n, {
729
+ type: "category",
730
+ scale: e.yScale ?? "linear",
731
+ title: e.yAxisTitle,
732
+ gridLines: !0
733
+ }),
734
+ y2: i(r, {
735
+ type: "category",
736
+ scale: e.y2Scale ?? "linear",
737
+ title: e.y2AxisTitle,
738
+ gridLines: !1
739
+ })
740
+ };
741
+ }
742
+ var ce = 22, le = 16, ue = 16;
743
+ function de(e, t, n) {
744
+ let r = (e.title ?? "").trim(), i = (e.subtitle ?? "").trim(), a = (e.caption ?? "").trim(), o = 0, s = null, c = null;
745
+ r && (o += ce, s = {
746
+ x: t / 2,
747
+ y: o - 6,
748
+ text: r
749
+ }), i && (o += le, c = {
750
+ x: t / 2,
751
+ y: o - 4,
752
+ text: i
753
+ }), o && (o += 4);
754
+ let l = 0, u = null;
755
+ return a && (l = ue, u = {
756
+ x: 8,
757
+ y: n - 5,
758
+ text: a
759
+ }), {
760
+ top: o,
761
+ bottom: l,
762
+ title: s,
763
+ subtitle: c,
764
+ caption: u
765
+ };
766
+ }
767
+ function fe(e, t, n, r, i) {
768
+ return n.formatter ? n.formatter(e, t) : i(e, n.format ?? r.valueFormat, r);
769
+ }
770
+ //#endregion
771
+ //#region ../grid/dist/chart-decimate.js
772
+ var K = [
773
+ "values",
774
+ "rowIds",
775
+ "upperValues",
776
+ "lowerValues",
777
+ "ohlc",
778
+ "boxes",
779
+ "errors",
780
+ "markers",
781
+ "colors",
782
+ "lowValues",
783
+ "targets",
784
+ "volumes"
785
+ ], pe = ["waterfallTotals"];
786
+ function q(e, t) {
787
+ let n = (e) => {
788
+ if (!e) return;
789
+ let n = Array(t.length);
790
+ for (let r = 0; r < t.length; r += 1) n[r] = e[t[r]];
791
+ return n;
792
+ }, r = e.series.map((e) => {
793
+ let t = {
794
+ ...e,
795
+ values: n(e.values) ?? []
796
+ };
797
+ for (let r of K) {
798
+ if (r === "values") continue;
799
+ let i = e[r];
800
+ i && (t[r] = n(i));
801
+ }
802
+ return t;
803
+ }), i = {
804
+ ...e,
805
+ categories: n(e.categories) ?? [],
806
+ series: r
807
+ };
808
+ for (let t of pe) {
809
+ let r = e[t];
810
+ r && (i[t] = n(r));
811
+ }
812
+ return i;
813
+ }
814
+ function me(e, t, n) {
815
+ let r = e.length, i = (e) => n && Number.isFinite(n[e]) ? n[e] : e;
816
+ if (t >= r || r <= 2) return e.map((e, t) => t);
817
+ if (t < 3) return [0, r - 1];
818
+ let a = [0], o = (r - 2) / (t - 2), s = 0;
819
+ for (let n = 0; n < t - 2; n += 1) {
820
+ let t = Math.floor((n + 1) * o) + 1, c = Math.min(Math.floor((n + 2) * o) + 1, r), l = 0, u = 0, d = 0;
821
+ for (let n = t; n < c; n += 1) {
822
+ let t = e[n];
823
+ Number.isFinite(t) && (l += i(n), u += t, d += 1);
824
+ }
825
+ d ? (l /= d, u /= d) : (l = (i(t) + i(Math.min(c, r - 1))) / 2, u = e[s]);
826
+ let f = Math.floor(n * o) + 1, p = Math.min(Math.floor((n + 1) * o) + 1, r), m = i(s), h = Number.isFinite(e[s]) ? e[s] : 0, g = -1, _ = -1;
827
+ for (let t = f; t < p; t += 1) {
828
+ let n = e[t];
829
+ if (!Number.isFinite(n)) continue;
830
+ let r = Math.abs((m - l) * (n - h) - (m - i(t)) * (u - h));
831
+ r > _ && (_ = r, g = t);
832
+ }
833
+ g < 0 && (g = f), a.push(g), s = g;
834
+ }
835
+ return a.push(r - 1), a;
836
+ }
837
+ function J(e, t) {
838
+ let n = e.length;
839
+ if (t >= n || n <= 2) return e.map((e, t) => t);
840
+ let r = /* @__PURE__ */ new Set([0, n - 1]), i = n / Math.max(1, t);
841
+ for (let a = 0; a < t; a += 1) {
842
+ let t = Math.floor(a * i), o = Math.min(n, Math.floor((a + 1) * i)), s = -1, c = -1;
843
+ for (let n = t; n < o; n += 1) {
844
+ let t = e[n];
845
+ Number.isFinite(t) && ((s < 0 || t < e[s]) && (s = n), (c < 0 || t > e[c]) && (c = n));
846
+ }
847
+ s >= 0 && r.add(s), c >= 0 && r.add(c);
848
+ }
849
+ return [...r].sort((e, t) => e - t);
850
+ }
851
+ function he(e, t) {
852
+ if (e === !1) return null;
853
+ let n = typeof e == "object" ? e : {}, r = Math.max(8, Math.round(n.target ?? t));
854
+ return {
855
+ method: n.method ?? "lttb",
856
+ target: r,
857
+ threshold: Math.max(r, Math.round(n.threshold ?? r))
858
+ };
859
+ }
860
+ function ge(e, t, n = e.decimate) {
861
+ let r = he(n, t);
862
+ if (!r) return e;
863
+ let i = e.categories.length;
864
+ if (i <= r.threshold || !e.series.length) return e;
865
+ let a = (e) => e === "line" || e === "area";
866
+ if (!a(e.type) && !e.series.every((e) => a(e.type)) || e.series.some((e) => e.type && !a(e.type) || e.ohlc || e.boxes)) return e;
867
+ let o = (e.xAxis?.type ?? e.xType) === "number", s = o && e.xAxis?.scale === "log", c = o ? e.categories.map((e) => {
868
+ let t = Number(e);
869
+ return s ? t > 0 ? Math.log10(t) : NaN : t;
870
+ }) : void 0, l = /* @__PURE__ */ new Set();
871
+ for (let t of e.series) {
872
+ let e = r.method === "minmax" ? J(t.values, Math.floor(r.target / 2)) : me(t.values, r.target, c);
873
+ for (let t of e) l.add(t);
874
+ }
875
+ let u = [...l].sort((e, t) => e - t);
876
+ return u.length >= i ? e : q(e, u);
877
+ }
878
+ //#endregion
879
+ //#region ../grid/dist/chart-indicators.js
880
+ var Y = (e) => Array(e).fill(NaN);
881
+ function _e(e, t) {
882
+ let n = e.length, r = Math.max(1, Math.floor(t)), i = Y(n), a = r * (r + 1) / 2;
883
+ for (let t = r - 1; t < n; t += 1) {
884
+ let n = 0, o = !0;
885
+ for (let i = 0; i < r; i += 1) {
886
+ let a = e[t - i];
887
+ if (!Number.isFinite(a)) {
888
+ o = !1;
889
+ break;
890
+ }
891
+ n += a * (r - i);
892
+ }
893
+ o && (i[t] = n / a);
894
+ }
895
+ return i;
896
+ }
897
+ function ve(e, t = 20, n = 2) {
898
+ let r = e.length, i = Math.max(1, Math.floor(t)), a = B(e, i), o = Y(r), s = Y(r);
899
+ for (let t = i - 1; t < r; t += 1) {
900
+ let r = a[t];
901
+ if (!Number.isFinite(r)) continue;
902
+ let c = 0, l = 0;
903
+ for (let n = t - i + 1; n <= t; n += 1) {
904
+ let t = e[n];
905
+ Number.isFinite(t) && (c += (t - r) * (t - r), l += 1);
906
+ }
907
+ let u = l ? Math.sqrt(c / l) : 0;
908
+ o[t] = r + n * u, s[t] = r - n * u;
909
+ }
910
+ return {
911
+ middle: a,
912
+ upper: o,
913
+ lower: s
914
+ };
915
+ }
916
+ function ye(e, t = 14) {
917
+ let n = e.length, r = Math.max(1, Math.floor(t)), i = Y(n);
918
+ if (n <= r) return i;
919
+ let a = 0, o = 0;
920
+ for (let t = 1; t <= r; t += 1) {
921
+ let n = e[t] - e[t - 1];
922
+ n > 0 ? a += n : o -= n;
923
+ }
924
+ let s = a / r, c = o / r, l = (e, t) => t === 0 ? 100 : 100 - 100 / (1 + e / t);
925
+ i[r] = l(s, c);
926
+ for (let t = r + 1; t < n; t += 1) {
927
+ let n = e[t] - e[t - 1];
928
+ s = (s * (r - 1) + (n > 0 ? n : 0)) / r, c = (c * (r - 1) + (n < 0 ? -n : 0)) / r, i[t] = l(s, c);
929
+ }
930
+ return i;
931
+ }
932
+ function be(e, t = 12, n = 26, r = 9) {
933
+ let i = e.length, a = V(e, t), o = V(e, n), s = Y(i);
934
+ for (let e = n - 1; e < i; e += 1) s[e] = a[e] - o[e];
935
+ let c = Y(i), l = Y(i), u = 2 / (Math.max(1, r) + 1), d = null, f = 0;
936
+ for (let e = 0; e < i; e += 1) {
937
+ let t = s[e];
938
+ Number.isFinite(t) && (f += 1, d = d == null ? t : u * t + (1 - u) * d, f >= r && (c[e] = d, l[e] = t - d));
939
+ }
940
+ return {
941
+ macd: s,
942
+ signal: c,
943
+ histogram: l
944
+ };
945
+ }
946
+ var xe = (e) => (e.h + e.l + e.c) / 3;
947
+ function Se(e, t) {
948
+ let n = e.length, r = Y(n), i = 0, a = 0;
949
+ for (let o = 0; o < n; o += 1) {
950
+ let n = e[o], s = t[o];
951
+ if (!n || !Number.isFinite(s)) {
952
+ r[o] = a > 0 ? i / a : NaN;
953
+ continue;
954
+ }
955
+ i += xe(n) * s, a += s, r[o] = a > 0 ? i / a : NaN;
956
+ }
957
+ return r;
958
+ }
959
+ function Ce(e, t) {
960
+ let n = e[t];
961
+ if (!n) return NaN;
962
+ let r = t > 0 ? e[t - 1] : null;
963
+ return r ? Math.max(n.h - n.l, Math.abs(n.h - r.c), Math.abs(n.l - r.c)) : n.h - n.l;
964
+ }
965
+ function we(e, t = 14) {
966
+ let n = e.length, r = Math.max(1, Math.floor(t)), i = Y(n);
967
+ if (n < r) return i;
968
+ let a = 0;
969
+ for (let t = 0; t < r; t += 1) {
970
+ let n = Ce(e, t);
971
+ if (!Number.isFinite(n)) return i;
972
+ a += n;
973
+ }
974
+ let o = a / r;
975
+ i[r - 1] = o;
976
+ for (let t = r; t < n; t += 1) {
977
+ let n = Ce(e, t);
978
+ if (!Number.isFinite(n)) {
979
+ i[t] = NaN;
980
+ continue;
981
+ }
982
+ o = (o * (r - 1) + n) / r, i[t] = o;
983
+ }
984
+ return i;
985
+ }
986
+ function Te(e, t = 14, n = 3) {
987
+ let r = e.length, i = Math.max(1, Math.floor(t)), a = Y(r);
988
+ for (let t = i - 1; t < r; t += 1) {
989
+ let n = -Infinity, r = Infinity, o = !0;
990
+ for (let a = t - i + 1; a <= t; a += 1) {
991
+ let t = e[a];
992
+ if (!t) {
993
+ o = !1;
994
+ break;
995
+ }
996
+ t.h > n && (n = t.h), t.l < r && (r = t.l);
997
+ }
998
+ let s = e[t]?.c;
999
+ !o || s == null || (a[t] = n === r ? 50 : (s - r) / (n - r) * 100);
1000
+ }
1001
+ let o = Math.max(1, Math.floor(n)), s = Y(r);
1002
+ for (let e = o - 1; e < r; e += 1) {
1003
+ let t = 0, n = !0;
1004
+ for (let r = e - o + 1; r <= e; r += 1) {
1005
+ if (!Number.isFinite(a[r])) {
1006
+ n = !1;
1007
+ break;
1008
+ }
1009
+ t += a[r];
1010
+ }
1011
+ n && (s[e] = t / o);
1012
+ }
1013
+ return {
1014
+ k: a,
1015
+ d: s
1016
+ };
1017
+ }
1018
+ function Ee(e, t) {
1019
+ let n = e.length, r = Y(n), i = 0;
1020
+ for (let a = 0; a < n; a += 1) {
1021
+ let n = t[a];
1022
+ if (!Number.isFinite(e[a]) || !Number.isFinite(n)) {
1023
+ r[a] = i;
1024
+ continue;
1025
+ }
1026
+ a > 0 && Number.isFinite(e[a - 1]) && (e[a] > e[a - 1] ? i += n : e[a] < e[a - 1] && (i -= n)), r[a] = i;
1027
+ }
1028
+ return r;
1029
+ }
1030
+ function De(e, t, n) {
1031
+ return Oe(e, t, n).values;
1032
+ }
1033
+ function Oe(e, t, n) {
1034
+ let r = (e) => e.equation ? {
1035
+ values: e.fitted,
1036
+ r2: e.r2,
1037
+ equation: e.equation
1038
+ } : { values: e.fitted }, i = ke(e, t);
1039
+ return i ? r(i) : { values: je(e, t, n) };
1040
+ }
1041
+ function ke(e, t, n) {
1042
+ if (t === "linear") return R(e, n);
1043
+ if (t === "exp") return ee(e, n);
1044
+ if (t === "log") return te(e, n);
1045
+ if (t === "power") return ne(e, n);
1046
+ let r = /^poly:(\d+)$/.exec(t);
1047
+ return r ? L(e, Number(r[1]), n) : null;
1048
+ }
1049
+ function Ae(e) {
1050
+ let t = /^(sma|ema|wma|bb|poly):(\d+)/.exec(e);
1051
+ return t ? `${t[1] === "poly" ? "poly" : t[1].toUpperCase()} ${t[2]}` : e === "linear" ? "trend" : e;
1052
+ }
1053
+ function je(e, t, n) {
1054
+ if (t === "vwap") return n?.ohlc && n.volumes ? Se(n.ohlc, n.volumes) : e.map(() => NaN);
1055
+ let r = /^bb:(\d+):(\d+(?:\.\d+)?)$/.exec(t);
1056
+ if (r) return ve(e, Number(r[1]), Number(r[2])).middle;
1057
+ let i = /^(sma|ema|wma):(\d+)$/.exec(t);
1058
+ if (!i) return e.map(() => NaN);
1059
+ let a = Number(i[2]);
1060
+ return i[1] === "wma" ? _e(e, a) : i[1] === "ema" ? V(e, a) : B(e, a);
1061
+ }
1062
+ function Me(e, t) {
1063
+ return t.source ? e.series.find((e) => e.label === t.source) ?? null : e.series.find((e) => e.ohlc) ?? e.series[0] ?? null;
1064
+ }
1065
+ function Ne(e) {
1066
+ return e.ohlc ? e.ohlc.map((e) => e ? e.c : NaN) : e.values.slice();
1067
+ }
1068
+ function Pe(e, t) {
1069
+ let n = Me(e, t), r = e.categories.length, i = n ? Ne(n) : Y(r), a = n?.ohlc ?? i.map((e) => Number.isFinite(e) ? {
1070
+ o: e,
1071
+ h: e,
1072
+ l: e,
1073
+ c: e
1074
+ } : null), o = n?.volumes ?? Y(r), s = t.params ?? {}, c = {
1075
+ categories: e.categories,
1076
+ xType: e.xType,
1077
+ xAxis: e.xAxis,
1078
+ height: t.height ?? Math.max(90, Math.round((e.height ?? 300) / 3)),
1079
+ palette: e.palette,
1080
+ valueFormat: "number",
1081
+ locale: e.locale
1082
+ }, l = (e) => e.map(([e, t]) => ({
1083
+ value: e,
1084
+ label: t,
1085
+ dashed: !0
1086
+ }));
1087
+ switch (t.kind) {
1088
+ case "rsi": {
1089
+ let e = s.period ?? 14;
1090
+ return {
1091
+ ...c,
1092
+ type: "line",
1093
+ title: `RSI ${e}`,
1094
+ series: [{
1095
+ label: `RSI ${e}`,
1096
+ values: ye(i, e),
1097
+ marker: "none"
1098
+ }],
1099
+ yAxis: {
1100
+ min: 0,
1101
+ max: 100,
1102
+ tickInterval: 50,
1103
+ nice: !1
1104
+ },
1105
+ referenceLines: l([[30, "30"], [70, "70"]])
1106
+ };
1107
+ }
1108
+ case "stochastic": {
1109
+ let e = s.period ?? 14, t = s.smooth ?? 3, { k: n, d: r } = Te(a, e, t);
1110
+ return {
1111
+ ...c,
1112
+ type: "line",
1113
+ title: `Stochastic ${e}, ${t}`,
1114
+ series: [{
1115
+ label: "%K",
1116
+ values: n,
1117
+ marker: "none"
1118
+ }, {
1119
+ label: "%D",
1120
+ values: r,
1121
+ marker: "none",
1122
+ dash: [4, 3]
1123
+ }],
1124
+ yAxis: {
1125
+ min: 0,
1126
+ max: 100,
1127
+ tickInterval: 50,
1128
+ nice: !1
1129
+ },
1130
+ referenceLines: l([[20, "20"], [80, "80"]])
1131
+ };
1132
+ }
1133
+ case "macd": {
1134
+ let e = s.fast ?? 12, t = s.slow ?? 26, n = s.signal ?? 9, r = be(i, e, t, n);
1135
+ return {
1136
+ ...c,
1137
+ type: "bar",
1138
+ title: `MACD ${e}, ${t}, ${n}`,
1139
+ series: [
1140
+ {
1141
+ label: "Histogram",
1142
+ values: r.histogram,
1143
+ colors: r.histogram.map((e) => e < 0 ? "#ef4444" : "#16a34a")
1144
+ },
1145
+ {
1146
+ label: "MACD",
1147
+ values: r.macd,
1148
+ type: "line",
1149
+ marker: "none"
1150
+ },
1151
+ {
1152
+ label: "Signal",
1153
+ values: r.signal,
1154
+ type: "line",
1155
+ marker: "none",
1156
+ dash: [4, 3]
1157
+ }
1158
+ ],
1159
+ referenceLines: l([[0, ""]])
1160
+ };
1161
+ }
1162
+ case "atr": {
1163
+ let e = s.period ?? 14;
1164
+ return {
1165
+ ...c,
1166
+ type: "line",
1167
+ title: `ATR ${e}`,
1168
+ series: [{
1169
+ label: `ATR ${e}`,
1170
+ values: we(a, e),
1171
+ marker: "none"
1172
+ }],
1173
+ yAxis: { min: 0 }
1174
+ };
1175
+ }
1176
+ case "obv": return {
1177
+ ...c,
1178
+ type: "line",
1179
+ title: "OBV",
1180
+ series: [{
1181
+ label: "OBV",
1182
+ values: Ee(i, o),
1183
+ marker: "none"
1184
+ }],
1185
+ valueFormat: "compact"
1186
+ };
1187
+ default: {
1188
+ let e = a.map((e, t) => {
1189
+ if (!e) return null;
1190
+ let n = t > 0 ? a[t - 1] : null;
1191
+ return (n ? e.c >= n.c : e.c >= e.o) ? "#16a34a" : "#ef4444";
1192
+ });
1193
+ return {
1194
+ ...c,
1195
+ type: "bar",
1196
+ title: "Volume",
1197
+ series: [{
1198
+ label: "Volume",
1199
+ values: o.slice(),
1200
+ colors: e
1201
+ }],
1202
+ yAxis: { min: 0 },
1203
+ valueFormat: "compact"
1204
+ };
1205
+ }
1206
+ }
1207
+ }
1208
+ //#endregion
1209
+ //#region ../grid/dist/chart-financial.js
1210
+ function Fe(e) {
1211
+ let t = Array(e.length), n = null;
1212
+ for (let r = 0; r < e.length; r += 1) {
1213
+ let i = e[r];
1214
+ if (!i || ![
1215
+ i.o,
1216
+ i.h,
1217
+ i.l,
1218
+ i.c
1219
+ ].every(Number.isFinite)) {
1220
+ t[r] = null, n = null;
1221
+ continue;
1222
+ }
1223
+ let a = (i.o + i.h + i.l + i.c) / 4, o = n ? (n.o + n.c) / 2 : (i.o + i.c) / 2, s = {
1224
+ o,
1225
+ c: a,
1226
+ h: Math.max(i.h, o, a),
1227
+ l: Math.min(i.l, o, a)
1228
+ };
1229
+ t[r] = s, n = s;
1230
+ }
1231
+ return t;
1232
+ }
1233
+ function Ie(e, t, n) {
1234
+ let r = /* @__PURE__ */ new Map(), i = [];
1235
+ for (let a = 0; a < e.length; a += 1) {
1236
+ let o = Date.parse(e[a]);
1237
+ if (!Number.isFinite(o)) continue;
1238
+ let s = U(o, n.bucket);
1239
+ if (!s) continue;
1240
+ let c = r.get(s);
1241
+ c || (c = {
1242
+ bar: null,
1243
+ vol: 0,
1244
+ first: Infinity,
1245
+ last: -Infinity
1246
+ }, r.set(s, c), i.push([s, Date.parse(s)]));
1247
+ let l = t[a];
1248
+ l && (c.bar ? (c.bar.h = Math.max(c.bar.h, l.h), c.bar.l = Math.min(c.bar.l, l.l), o >= c.last && (c.bar.c = l.c), o <= c.first && (c.bar.o = l.o)) : c.bar = { ...l }, o > c.last && (c.last = o), o < c.first && (c.first = o));
1249
+ let u = n.volumes?.[a];
1250
+ Number.isFinite(u) && (c.vol += u);
1251
+ }
1252
+ return i.sort((e, t) => e[1] - t[1]), {
1253
+ categories: i.map(([e]) => e),
1254
+ ohlc: i.map(([e]) => r.get(e).bar),
1255
+ ...n.volumes ? { volumes: i.map(([e]) => r.get(e).vol) } : {}
1256
+ };
1257
+ }
1258
+ function Le(e, t) {
1259
+ let n = (t) => e.find((e) => t.test(e.field) || t.test(e.label))?.id ?? null;
1260
+ return {
1261
+ open: t?.open ?? n(/open/i),
1262
+ high: t?.high ?? n(/high/i),
1263
+ low: t?.low ?? n(/low/i),
1264
+ close: t?.close ?? n(/close|last|price/i),
1265
+ volume: t?.volume ?? n(/vol/i)
1266
+ };
1267
+ }
1268
+ function Re(e, t, n, r) {
1269
+ let i = e(t), a = e(n.open), o = e(n.high), s = e(n.low), c = e(n.close);
1270
+ if (!i || !a || !o || !s || !c) return null;
1271
+ let l = e(n.volume);
1272
+ return {
1273
+ category: i,
1274
+ ohlc: {
1275
+ open: a,
1276
+ high: o,
1277
+ low: s,
1278
+ close: c,
1279
+ ...l ? { volume: l } : {},
1280
+ ...r.bucket ? { bucket: r.bucket } : {},
1281
+ ...r.candleStyle ? { candleStyle: r.candleStyle } : {},
1282
+ lastPriceLine: !0
1283
+ }
1284
+ };
1285
+ }
1286
+ function ze(e) {
1287
+ let t = {
1288
+ sma: "sma:20",
1289
+ ema: "ema:20",
1290
+ bb: "bb:20:2",
1291
+ vwap: "vwap"
1292
+ }, n = [], r = null;
1293
+ for (let i of e) {
1294
+ let e = t[i];
1295
+ if (e) {
1296
+ r ??= e;
1297
+ continue;
1298
+ }
1299
+ (i === "volume" || i === "rsi" || i === "macd" || i === "stochastic" || i === "atr" || i === "obv") && n.push({ kind: i });
1300
+ }
1301
+ return {
1302
+ panes: n,
1303
+ overlay: r
1304
+ };
1305
+ }
1306
+ function Be(e, t) {
1307
+ let n = (e) => typeof e == "number" ? e : Number(e), r = e.map((e) => ({
1308
+ r: e,
1309
+ t: Date.parse(String(e[t.date]))
1310
+ })).filter((e) => Number.isFinite(e.t)).sort((e, t) => e.t - t.t), i = r.map((e) => new Date(e.t).toISOString().slice(0, 10)), a = r.map(({ r: e }) => {
1311
+ let r = {
1312
+ o: n(e[t.open]),
1313
+ h: n(e[t.high]),
1314
+ l: n(e[t.low]),
1315
+ c: n(e[t.close])
1316
+ };
1317
+ return [
1318
+ r.o,
1319
+ r.h,
1320
+ r.l,
1321
+ r.c
1322
+ ].every(Number.isFinite) ? r : null;
1323
+ }), o = t.volume ? r.map(({ r: e }) => n(e[t.volume])) : void 0;
1324
+ if (t.bucket) {
1325
+ let e = Ie(i, a, {
1326
+ bucket: t.bucket,
1327
+ volumes: o
1328
+ });
1329
+ i = e.categories, a = e.ohlc, o = e.volumes;
1330
+ }
1331
+ let s = {
1332
+ label: t.label ?? "Price",
1333
+ values: a.map((e) => e ? e.c : NaN),
1334
+ ohlc: a,
1335
+ ...o ? { volumes: o } : {}
1336
+ };
1337
+ return {
1338
+ type: t.type ?? "candlestick",
1339
+ categories: i,
1340
+ series: [s],
1341
+ xType: "ordinal-time",
1342
+ ...t.candleStyle ? { candleStyle: t.candleStyle } : {},
1343
+ ...t.lastPriceLine ? { lastPriceLine: !0 } : {}
1344
+ };
1345
+ }
1346
+ //#endregion
1347
+ //#region ../grid/dist/chart-cartesian.js
1348
+ function Ve(e, t, n = {}) {
1349
+ return He(e, !!n.connectNulls).map((e) => X(e, t, n.step)).filter(Boolean).join(" ");
1350
+ }
1351
+ function He(e, t) {
1352
+ let n = [], r = [];
1353
+ for (let i of e) i.defined ? r.push({
1354
+ x: i.x,
1355
+ y: i.y
1356
+ }) : r.length && !t && (n.push(r), r = []);
1357
+ return r.length && n.push(r), n;
1358
+ }
1359
+ function X(e, t, n) {
1360
+ return e.length ? n ? Ue(We(e, n)) : t ? qe(e) : Ue(e) : "";
1361
+ }
1362
+ function Ue(e) {
1363
+ return e.map((e, t) => `${t === 0 ? "M" : "L"}${e.x},${e.y}`).join(" ");
1364
+ }
1365
+ function We(e, t) {
1366
+ let n = [];
1367
+ for (let r = 0; r < e.length; r += 1) {
1368
+ let i = e[r];
1369
+ if (r > 0) {
1370
+ let a = e[r - 1];
1371
+ if (t === "before") n.push({
1372
+ x: a.x,
1373
+ y: i.y
1374
+ });
1375
+ else if (t === "after") n.push({
1376
+ x: i.x,
1377
+ y: a.y
1378
+ });
1379
+ else {
1380
+ let e = c((a.x + i.x) / 2);
1381
+ n.push({
1382
+ x: e,
1383
+ y: a.y
1384
+ }, {
1385
+ x: e,
1386
+ y: i.y
1387
+ });
1388
+ }
1389
+ }
1390
+ n.push(i);
1391
+ }
1392
+ return n;
1393
+ }
1394
+ function Ge(e, t, n, r) {
1395
+ return !e.length || !t.length ? "" : `${X(e, n, r)} ${X(t.slice().reverse(), n, r).replace(/^M/, "L")} Z`;
1396
+ }
1397
+ function Ke(e, t) {
1398
+ let n = e.length, r = e[0]?.length ?? 0, i = Array(r).fill(0);
1399
+ if (!n || !r || t === "zero") return i;
1400
+ let a = (t, n) => {
1401
+ let r = e[t][n];
1402
+ return Number.isFinite(r) ? r : 0;
1403
+ };
1404
+ if (t === "silhouette") {
1405
+ for (let e = 0; e < r; e += 1) {
1406
+ let t = 0;
1407
+ for (let r = 0; r < n; r += 1) t += a(r, e);
1408
+ i[e] = -t / 2;
1409
+ }
1410
+ return i;
1411
+ }
1412
+ let o = 0;
1413
+ for (let e = 1; e < r; e += 1) {
1414
+ let t = 0, r = 0;
1415
+ for (let i = 0; i < n; i += 1) {
1416
+ let n = a(i, e), o = (n - a(i, e - 1)) / 2;
1417
+ for (let t = 0; t < i; t += 1) o += a(t, e) - a(t, e - 1);
1418
+ t += n, r += o * n;
1419
+ }
1420
+ i[e - 1] = o, t && (o -= r / t);
1421
+ }
1422
+ return i[r - 1] = o, i;
1423
+ }
1424
+ function qe(e) {
1425
+ let t = e.length;
1426
+ if (t === 0) return "";
1427
+ if (t === 1) return `M${e[0].x},${e[0].y}`;
1428
+ if (t === 2) return `M${e[0].x},${e[0].y} L${e[1].x},${e[1].y}`;
1429
+ let n = Array(t - 1), r = Array(t - 1);
1430
+ for (let i = 0; i < t - 1; i += 1) {
1431
+ let t = e[i + 1].x - e[i].x;
1432
+ n[i] = t, r[i] = t === 0 ? 0 : (e[i + 1].y - e[i].y) / t;
1433
+ }
1434
+ let i = Array(t);
1435
+ i[0] = r[0], i[t - 1] = r[t - 2];
1436
+ 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;
1437
+ for (let e = 0; e < t - 1; e += 1) {
1438
+ if (r[e] === 0) {
1439
+ i[e] = 0, i[e + 1] = 0;
1440
+ continue;
1441
+ }
1442
+ let t = i[e] / r[e], n = i[e + 1] / r[e], a = Math.hypot(t, n);
1443
+ a > 3 && (i[e] = 3 / a * t * r[e], i[e + 1] = 3 / a * n * r[e]);
1444
+ }
1445
+ let a = `M${e[0].x},${e[0].y}`;
1446
+ for (let r = 0; r < t - 1; r += 1) {
1447
+ 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;
1448
+ a += ` C${o},${s} ${c},${l} ${e[r + 1].x},${e[r + 1].y}`;
1449
+ }
1450
+ return a;
1451
+ }
1452
+ function Je(e, t, n, r) {
1453
+ let i = Math.max(.5, r);
1454
+ switch (e) {
1455
+ case "square": return `M${c(t - i)},${c(n - i)} h${c(2 * i)} v${c(2 * i)} h${c(-2 * i)} Z`;
1456
+ case "diamond": return `M${c(t)},${c(n - i * 1.3)} L${c(t + i * 1.3)},${c(n)} L${c(t)},${c(n + i * 1.3)} L${c(t - i * 1.3)},${c(n)} Z`;
1457
+ case "triangle": return `M${c(t)},${c(n - i * 1.2)} L${c(t + i * 1.2)},${c(n + i)} L${c(t - i * 1.2)},${c(n + i)} Z`;
1458
+ case "cross": return `M${c(t - i)},${c(n - i)} L${c(t + i)},${c(n + i)} M${c(t - i)},${c(n + i)} L${c(t + i)},${c(n - i)}`;
1459
+ default: return "";
1460
+ }
1461
+ }
1462
+ function Ye(e, t) {
1463
+ let n = typeof e.marker == "string" ? { shape: e.marker } : e.marker ?? {}, r = e.markers?.[t] ?? void 0, i = r?.color ?? n.color ?? e.colors?.[t] ?? void 0, a = r?.shape ?? n.shape, o = r?.size ?? n.size;
1464
+ if (a == null && o == null && i == null) return;
1465
+ let s = {};
1466
+ return a != null && (s.shape = a), o != null && (s.size = o), i != null && (s.color = i), s;
1467
+ }
1468
+ function Xe(e) {
1469
+ let t = {}, n = !1;
1470
+ if (e.strokeWidth != null && (t.strokeWidth = e.strokeWidth, n = !0), e.dash != null && (t.dash = Array.isArray(e.dash) ? e.dash.join(" ") : e.dash, n = !0), e.opacity != null && (t.opacity = e.opacity, n = !0), e.gradient) {
1471
+ let r = e.gradient === !0 ? {} : e.gradient;
1472
+ t.gradient = {
1473
+ from: r.from ?? e.color,
1474
+ to: r.to ?? "transparent"
1475
+ }, n = !0;
1476
+ }
1477
+ return n ? t : void 0;
1478
+ }
1479
+ function Ze(e, t, n, r = {}) {
1480
+ if (t.show === !1) return [];
1481
+ let i = [], a = r.share ? /* @__PURE__ */ new Map() : null;
1482
+ if (a) for (let t of e.bars) {
1483
+ let e = t.index === void 0 ? t.label : String(t.index);
1484
+ a.set(e, (a.get(e) ?? 0) + Math.abs(t.value));
1485
+ }
1486
+ let o = (e) => {
1487
+ let t = a.get(e.index === void 0 ? e.label : String(e.index)) || 0;
1488
+ return t ? `${Math.round(Math.abs(e.value) / t * 100)}%` : "";
1489
+ }, s = (e, r, i, s) => t.formatter ? t.formatter(e, {
1490
+ category: r,
1491
+ series: i
1492
+ }) : a && s ? o(s) : n(e, i), c = e.orientation === "horizontal", l = t.placement ?? (r.stacked ? "inside" : c ? "outside" : "top"), u = l === "inside" || l === "center";
1493
+ for (let t of e.bars) {
1494
+ let e = s(t.value, t.label, t.series, t);
1495
+ if (e) {
1496
+ if (c) {
1497
+ if (u) {
1498
+ if (t.w <= 18 || t.h < 8) continue;
1499
+ i.push({
1500
+ x: t.x + t.w / 2,
1501
+ y: t.y + t.h / 2 + 3,
1502
+ text: e,
1503
+ anchor: "middle",
1504
+ onBar: !0,
1505
+ series: t.series
1506
+ });
1507
+ } else {
1508
+ if (t.h < 8) continue;
1509
+ let n = t.value >= 0;
1510
+ i.push({
1511
+ x: n ? t.x + t.w + 3 : t.x - 3,
1512
+ y: t.y + t.h / 2 + 3,
1513
+ text: e,
1514
+ anchor: n ? "start" : "end",
1515
+ onBar: !1,
1516
+ series: t.series
1517
+ });
1518
+ }
1519
+ } else if (u) {
1520
+ if (t.h <= 13 || t.w < 14) continue;
1521
+ i.push({
1522
+ x: t.x + t.w / 2,
1523
+ y: t.y + t.h / 2 + 3,
1524
+ text: e,
1525
+ anchor: "middle",
1526
+ onBar: !0,
1527
+ series: t.series
1528
+ });
1529
+ } else {
1530
+ if (t.w < 6) continue;
1531
+ let n = t.value >= 0;
1532
+ i.push({
1533
+ x: t.x + t.w / 2,
1534
+ y: n ? t.y - 3 : t.y + t.h + 11,
1535
+ text: e,
1536
+ anchor: "middle",
1537
+ onBar: !1,
1538
+ series: t.series
1539
+ });
1540
+ }
1541
+ }
1542
+ }
1543
+ if (!r.dense) for (let t of e.lines) for (let e of t.points) {
1544
+ if (!e.defined) continue;
1545
+ let n = s(e.value, e.label, t.label);
1546
+ n && i.push({
1547
+ x: e.x,
1548
+ y: u ? e.y + 3 : e.y - 7,
1549
+ text: n,
1550
+ anchor: "middle",
1551
+ onBar: !1,
1552
+ series: t.label
1553
+ });
1554
+ }
1555
+ let d = t.rotation ?? 0;
1556
+ if (d) for (let e of i) e.angle = d;
1557
+ if (t.hideOverlap === !1 && !t.connector) return i;
1558
+ let f = [], p = Math.abs(d) >= 45, m = (e) => {
1559
+ let t = e.text.length * 5.6 + 2, n = p ? 10 : t, r = p ? t : 11, i = e.anchor === "middle" ? e.x - n / 2 : e.anchor === "end" ? e.x - n : e.x, a = p ? e.y - r : e.y - 10;
1560
+ return {
1561
+ x0: i,
1562
+ y0: a,
1563
+ x1: i + n,
1564
+ y1: a + r
1565
+ };
1566
+ }, h = (e) => f.some((t) => e.x0 < t.x1 && e.x1 > t.x0 && e.y0 < t.y1 && e.y1 > t.y0), g = [];
1567
+ for (let e of i) {
1568
+ let n = m(e);
1569
+ if (!h(n)) {
1570
+ f.push(n), g.push(e);
1571
+ continue;
1572
+ }
1573
+ if (!t.connector || e.onBar) continue;
1574
+ let r = {
1575
+ x: e.x,
1576
+ y: e.y
1577
+ }, i = null;
1578
+ for (let t = 1; t <= 4; t += 1) {
1579
+ let r = c ? {
1580
+ ...e,
1581
+ x: e.x + 12 * t
1582
+ } : {
1583
+ ...e,
1584
+ y: e.y - 12 * t
1585
+ };
1586
+ if (n = m(r), !h(n)) {
1587
+ i = r;
1588
+ break;
1589
+ }
1590
+ }
1591
+ i && (i.leader = c ? {
1592
+ x1: r.x,
1593
+ y1: r.y - 3,
1594
+ x2: i.x - 2,
1595
+ y2: i.y - 3
1596
+ } : {
1597
+ x1: r.x,
1598
+ y1: r.y + 1,
1599
+ x2: i.x,
1600
+ y2: i.y + 2
1601
+ }, f.push(n), g.push(i));
1602
+ }
1603
+ return g;
1604
+ }
1605
+ function Qe(e, t, n, a, o) {
1606
+ let s = e.categories, l = s.length, u = a / Math.max(1, l), d = t.reversed, f = (e) => {
1607
+ let t = n + u * e + u / 2;
1608
+ return c(d ? n + a - (t - n) : t);
1609
+ }, p = (e) => {
1610
+ let t = n + u * e;
1611
+ return d ? n + a - (t - n) - u : t;
1612
+ }, m = (e) => typeof t.labelRotation == "number" ? t.labelRotation : e ? -40 : 0, h = t.labels, g = (n, a) => t.formatter ? t.formatter(n, a) : t.format ? i(n, t.format, e) : r(n);
1613
+ if (t.type === "number") {
1614
+ let r = s.map((e) => Number(e)), i = r.filter(Number.isFinite), o = e.binEdges?.filter(Number.isFinite) ?? [], l = i.filter((e) => e > 0);
1615
+ if (t.scale === "log" && o.length < 2 && l.length > 0) {
1616
+ let e = v(Math.min(...l), Math.max(...l)), i = t.min != null && t.min > 0 ? t.min : e.min, o = t.max != null && t.max > i ? t.max : Math.max(e.max, i * 10), s = (e) => {
1617
+ let t = b(e, i, o, !0);
1618
+ return t === null ? NaN : c(n + (d ? 1 - t : t) * a);
1619
+ }, p = (e) => Number.isFinite(r[e]) && r[e] > 0 ? s(r[e]) : f(e), _ = [...new Set(l)].map(s).sort((e, t) => e - t), x = Infinity;
1620
+ for (let e = 1; e < _.length; e += 1) x = Math.min(x, _[e] - _[e - 1]);
1621
+ let S = Number.isFinite(x) ? x : u;
1622
+ return {
1623
+ continuous: "number",
1624
+ log: !0,
1625
+ values: r,
1626
+ min: i,
1627
+ max: o,
1628
+ xCenter: p,
1629
+ xOfValue: s,
1630
+ ticks: y(i, o).map((e, t) => ({
1631
+ label: h ? g(e, t) : "",
1632
+ x: s(e)
1633
+ })),
1634
+ slot: u,
1635
+ barSlot: S,
1636
+ barX0: (e) => p(e) - S / 2,
1637
+ rotated: !1,
1638
+ angle: m(!1)
1639
+ };
1640
+ }
1641
+ if (i.length) {
1642
+ let s = o.length >= 2 ? S(Math.min(...o), Math.max(...o), {
1643
+ ...t,
1644
+ nice: e.xAxis?.nice === !0
1645
+ }) : S(Math.min(...i), Math.max(...i), t), l = s.max - s.min || 1, p = (e) => {
1646
+ if (!Number.isFinite(e)) return NaN;
1647
+ let t = (e - s.min) / l;
1648
+ return d && (t = 1 - t), c(n + t * a);
1649
+ }, _ = (e) => Number.isFinite(r[e]) ? p(r[e]) : f(e), v = [...new Set(i)].sort((e, t) => e - t), y = Infinity;
1650
+ for (let e = 1; e < v.length; e += 1) y = Math.min(y, v[e] - v[e - 1]);
1651
+ let b = o.length >= 2 ? (o[1] - o[0]) / l * a : Number.isFinite(y) ? y / l * a : u, x = o.length >= 2 ? $e(o, Math.max(1, Math.floor(a / 40))) : s.ticks, C = o.length >= 2 ? Math.abs(o[1] - o[0]) : 1, w = C >= 1 ? 0 : Math.min(6, Math.ceil(-Math.log10(C)) + 1), T = (e, n) => t.formatter || t.format ? g(e, n) : e.toLocaleString(void 0, {
1652
+ minimumFractionDigits: w,
1653
+ maximumFractionDigits: w
1654
+ }), E = x.map((e, t) => ({
1655
+ label: h ? o.length >= 2 ? T(e, t) : g(e, t) : "",
1656
+ x: p(e)
1657
+ }));
1658
+ return {
1659
+ continuous: "number",
1660
+ values: r,
1661
+ min: s.min,
1662
+ max: s.max,
1663
+ xCenter: _,
1664
+ xOfValue: p,
1665
+ ticks: E,
1666
+ slot: u,
1667
+ barSlot: b,
1668
+ barX0: (e) => _(e) - b / 2,
1669
+ rotated: !1,
1670
+ angle: m(!1)
1671
+ };
1672
+ }
1673
+ }
1674
+ let _ = t.type === "time" || t.type === "ordinal-time" ? s.map((e) => Date.parse(e)) : null, x = !!_ && _.some((e) => Number.isFinite(e));
1675
+ if (x && t.type === "time") {
1676
+ let e = _.filter(Number.isFinite), r = t.min ?? Math.min(...e), i = t.max ?? Math.max(...e), o = i - r || 1, s = (e) => {
1677
+ if (!Number.isFinite(e)) return NaN;
1678
+ let t = (e - r) / o;
1679
+ return d && (t = 1 - t), c(n + t * a);
1680
+ }, l = (e) => Number.isFinite(_[e]) ? s(_[e]) : f(e), g = w(r, i, Math.max(2, Math.floor(a / 90))), v = g.length > 1 ? g[1] - g[0] : o;
1681
+ return {
1682
+ continuous: "time",
1683
+ values: _,
1684
+ min: r,
1685
+ max: i,
1686
+ xCenter: l,
1687
+ xOfValue: s,
1688
+ ticks: g.map((e, n) => ({
1689
+ label: h ? t.formatter ? t.formatter(e, n) : E(e, v) : "",
1690
+ x: s(e)
1691
+ })),
1692
+ slot: u,
1693
+ barSlot: u,
1694
+ barX0: p,
1695
+ rotated: !1,
1696
+ angle: m(!1)
1697
+ };
1698
+ }
1699
+ if (x) {
1700
+ let e = _.filter(Number.isFinite), n = Math.max(...e) - Math.min(...e) || 1, r = T(_), i = r.length > 1 && Math.abs(_[r[1]] - _[r[0]]) || n, a = r.map((e, n) => ({
1701
+ label: h ? t.formatter ? t.formatter(_[e], n) : E(_[e], i) : "",
1702
+ x: f(e)
1703
+ }));
1704
+ return {
1705
+ continuous: null,
1706
+ values: _,
1707
+ min: 0,
1708
+ max: l - 1,
1709
+ xCenter: f,
1710
+ xOfValue: () => NaN,
1711
+ ticks: a,
1712
+ slot: u,
1713
+ barSlot: u,
1714
+ barX0: p,
1715
+ rotated: !1,
1716
+ angle: m(!1)
1717
+ };
1718
+ }
1719
+ let C = m(o), D = C !== 0, O = h ? k(s, f, u, D) : [];
1720
+ return {
1721
+ continuous: null,
1722
+ values: null,
1723
+ min: 0,
1724
+ max: l - 1,
1725
+ xCenter: f,
1726
+ xOfValue: () => NaN,
1727
+ ticks: O,
1728
+ slot: u,
1729
+ barSlot: u,
1730
+ barX0: p,
1731
+ rotated: D,
1732
+ angle: C
1733
+ };
1734
+ }
1735
+ function $e(e, t) {
1736
+ if (e.length <= t) return e;
1737
+ let n = Math.ceil(e.length / t), r = e.filter((e, t) => t % n === 0);
1738
+ return r[r.length - 1] !== e[e.length - 1] && r.push(e[e.length - 1]), r;
1739
+ }
1740
+ function et(e, t, n) {
1741
+ if (t.continuous) {
1742
+ let e = typeof n == "number" ? n : t.continuous === "time" ? Date.parse(n) : Number(n);
1743
+ if (Number.isFinite(e)) return t.xOfValue(e);
1744
+ }
1745
+ if (typeof n == "number") return t.xCenter(n);
1746
+ let r = e.categories.indexOf(n);
1747
+ if (r >= 0) return t.xCenter(r);
1748
+ if (t.values) {
1749
+ let e = Date.parse(n);
1750
+ if (Number.isFinite(e)) {
1751
+ let n = t.values.findIndex((t) => t === e);
1752
+ if (n >= 0) return t.xCenter(n);
1753
+ }
1754
+ }
1755
+ return NaN;
1756
+ }
1757
+ function tt(e, t, n) {
1758
+ if (!t.labels) return 8;
1759
+ if (!n.rotated) return 28;
1760
+ if (typeof t.labelRotation != "number") return 54;
1761
+ let r = e.categories.reduce((e, t) => Math.max(e, Math.min(t.length, 18)), 0), i = Math.abs(n.angle) * Math.PI / 180;
1762
+ return 28 + Math.round(Math.min(72, r * 6 * Math.sin(i)));
1763
+ }
1764
+ function nt(e) {
1765
+ let { spec: t, series: n, empty: a, width: o, height: s, frame: l, axes: u } = e, d = u.y.width ?? (u.y.labels ? 48 : 12) + (u.y.title ? 16 : 0), f = 10 + l.top, p = (u.x.labels ? 28 : 8) + (u.x.title ? 16 : 0) + l.bottom, m = Math.max(1, o - d - 12), h = Math.max(1, s - f - p), g = {
1766
+ x: d,
1767
+ y: f,
1768
+ w: m,
1769
+ h
1770
+ }, _ = Infinity, x = -Infinity, C = Infinity, w = -Infinity, T = Infinity, E = -Infinity;
1771
+ for (let e of n) for (let t of e.points ?? []) Number.isFinite(t.x) && (_ = Math.min(_, t.x), x = Math.max(x, t.x)), Number.isFinite(t.y) && (C = Math.min(C, t.y), w = Math.max(w, t.y)), t.r != null && Number.isFinite(t.r) && (T = Math.min(T, t.r), E = Math.max(E, t.r));
1772
+ if (_ === Infinity) return {
1773
+ ...a,
1774
+ plot: g
1775
+ };
1776
+ let D = u.x.scale === "log" && n.some((e) => (e.points ?? []).some((e) => e.x > 0)), O = D ? (() => {
1777
+ let e = Infinity;
1778
+ for (let t of n) for (let n of t.points ?? []) n.x > 0 && n.x < e && (e = n.x);
1779
+ let t = v(e, x), r = u.x.min != null && u.x.min > 0 ? u.x.min : t.min, i = u.x.max != null && u.x.max > r ? u.x.max : Math.max(t.max, r * 10);
1780
+ return {
1781
+ min: r,
1782
+ max: i,
1783
+ step: 10,
1784
+ ticks: y(r, i)
1785
+ };
1786
+ })() : S(_, x, u.x), k = S(C, w, u.y), A = E > T, j = (e) => {
1787
+ if (D) {
1788
+ let t = b(e, O.min, O.max, !0);
1789
+ return t === null ? NaN : c(d + (u.x.reversed ? 1 - t : t) * m);
1790
+ }
1791
+ let t = (e - O.min) / (O.max - O.min || 1);
1792
+ return u.x.reversed && (t = 1 - t), c(d + t * m);
1793
+ }, M = (e) => {
1794
+ let t = (e - k.min) / (k.max - k.min || 1);
1795
+ return u.y.reversed && (t = 1 - t), c(f + h - t * h);
1796
+ }, N = (e) => A && e != null && Number.isFinite(e) ? c(4 + (e - T) / (E - T || 1) * 14) : 5, P = [];
1797
+ for (let e of n) (e.points ?? []).forEach((t, n) => {
1798
+ !Number.isFinite(t.x) || !Number.isFinite(t.y) || D && t.x <= 0 || P.push({
1799
+ cx: j(t.x),
1800
+ cy: M(t.y),
1801
+ r: N(t.r),
1802
+ color: e.colors?.[n] ?? e.color,
1803
+ label: t.label ?? "",
1804
+ series: e.label,
1805
+ x: t.x,
1806
+ y: t.y
1807
+ });
1808
+ });
1809
+ let F = [];
1810
+ for (let e of n) {
1811
+ if (!e.overlay) continue;
1812
+ let t = (e.points ?? []).filter((e) => Number.isFinite(e.x) && Number.isFinite(e.y) && (!D || e.x > 0)), n = ke(t.map((e) => e.y), e.overlay, t.map((e) => e.x));
1813
+ if (!n || !n.equation) continue;
1814
+ let i = [];
1815
+ for (let e = 0; e <= 48; e += 1) {
1816
+ let t = e / 48, a = D ? 10 ** (Math.log10(O.min) + t * (Math.log10(O.max) - Math.log10(O.min))) : O.min + t * (O.max - O.min), o = n.predict(a), s = Number.isFinite(o) && o >= k.min && o <= k.max;
1817
+ i.push({
1818
+ x: j(a),
1819
+ y: s ? M(o) : NaN,
1820
+ label: r(a),
1821
+ value: o,
1822
+ defined: s
1823
+ });
1824
+ }
1825
+ F.push({
1826
+ path: Ve(i, !1),
1827
+ areaPath: "",
1828
+ color: e.overlayColor ?? e.color,
1829
+ label: `${e.label} (${e.overlay})`,
1830
+ points: i,
1831
+ r2: n.r2,
1832
+ equation: n.equation
1833
+ });
1834
+ }
1835
+ let I = [], L = [];
1836
+ for (let e of t.referenceLines ?? []) {
1837
+ let n = Number(e.value);
1838
+ Number.isFinite(n) && (e.axis === "x" ? L.push({
1839
+ x: j(n),
1840
+ label: e.label ?? r(n),
1841
+ color: e.color ?? "#ef4444",
1842
+ dashed: e.dashed !== !1
1843
+ }) : I.push({
1844
+ y: M(n),
1845
+ label: e.label ?? i(n, t.valueFormat, t),
1846
+ color: e.color ?? "#ef4444",
1847
+ dashed: e.dashed !== !1
1848
+ }));
1849
+ }
1850
+ let R = [];
1851
+ for (let e of t.referenceBands ?? []) {
1852
+ let t = Number(e.from), n = Number(e.to);
1853
+ if (!(!Number.isFinite(t) || !Number.isFinite(n))) {
1854
+ if (e.axis === "x") {
1855
+ let r = j(Math.min(t, n)), i = j(Math.max(t, n));
1856
+ R.push({
1857
+ x: Math.min(r, i),
1858
+ y: f,
1859
+ w: Math.abs(i - r),
1860
+ h,
1861
+ color: e.color ?? "#64748b",
1862
+ opacity: e.opacity ?? .08,
1863
+ label: e.label ?? "",
1864
+ axis: "x"
1865
+ });
1866
+ } else {
1867
+ let r = M(Math.max(t, n)), i = M(Math.min(t, n));
1868
+ R.push({
1869
+ x: d,
1870
+ y: Math.min(r, i),
1871
+ w: m,
1872
+ h: Math.abs(i - r),
1873
+ color: e.color ?? "#64748b",
1874
+ opacity: e.opacity ?? .08,
1875
+ label: e.label ?? "",
1876
+ axis: "y"
1877
+ });
1878
+ }
1879
+ }
1880
+ }
1881
+ return {
1882
+ ...a,
1883
+ plot: g,
1884
+ axes: {
1885
+ y: {
1886
+ min: k.min,
1887
+ max: k.max,
1888
+ log: !1,
1889
+ reversed: u.y.reversed
1890
+ },
1891
+ y2: null,
1892
+ slot: m,
1893
+ count: 0,
1894
+ x: {
1895
+ type: "number",
1896
+ min: O.min,
1897
+ max: O.max,
1898
+ reversed: u.x.reversed,
1899
+ values: [],
1900
+ ...D ? { log: !0 } : {}
1901
+ }
1902
+ },
1903
+ grid: {
1904
+ x: u.x.gridLines,
1905
+ y: u.y.gridLines
1906
+ },
1907
+ scatterPoints: P,
1908
+ overlays: F,
1909
+ referenceLines: I,
1910
+ referenceLinesV: L,
1911
+ referenceBands: R,
1912
+ yTicks: k.ticks.map((e, n) => ({
1913
+ value: e,
1914
+ y: M(e),
1915
+ label: u.y.labels ? fe(e, n, u.y, t, i) : ""
1916
+ })),
1917
+ xTicks: O.ticks.map((e, n) => ({
1918
+ label: u.x.labels ? u.x.formatter ? u.x.formatter(e, n) : u.x.format ? i(e, u.x.format, t) : r(e) : "",
1919
+ x: j(e)
1920
+ }))
1921
+ };
1922
+ }
1923
+ function rt(e) {
1924
+ let { spec: t, series: n, empty: a, width: o, height: s, stacked: l, frame: u, axes: d } = e, f = t.categories.reduce((e, t) => Math.max(e, t.length), 0), p = d.x.labels ? Math.min(150, 18 + f * 6.4) + (d.y.title ? 16 : 0) : 12 + (d.y.title ? 16 : 0), m = 8 + u.top, h = (d.y.labels ? 26 : 8) + (d.x.title ? 16 : 0) + u.bottom, g = Math.max(1, o - p - 16), _ = Math.max(1, s - m - h), v = {
1925
+ x: p,
1926
+ y: m,
1927
+ w: g,
1928
+ h: _
1929
+ }, y = (t.referenceLines ?? []).filter((e) => e.axis !== "x").map((e) => Number(e.value)).concat((t.referenceBands ?? []).filter((e) => e.axis !== "x").flatMap((e) => [Number(e.from), Number(e.to)])), x = d.y.scale === "log", C = t.stacked100 ? S(0, 100) : oe(n, t.categories, l, y, x, d.y), w = (e) => {
1930
+ let t = b(e, C.min, C.max, x);
1931
+ return t === null ? NaN : (d.y.reversed && (t = 1 - t), c(p + t * g));
1932
+ }, T = t.categories.length, E = _ / Math.max(1, T), D = E * .2, O = E - D, k = (e) => m + E * (d.x.reversed ? T - 1 - e : e) + D / 2, A = w(x ? C.min : Math.min(Math.max(0, C.min), C.max)), j = [];
1933
+ if (l) {
1934
+ let e = t.stacked100 ? t.categories.map((e, t) => n.reduce((e, n) => e + Math.abs(Number.isFinite(n.values[t]) ? n.values[t] : 0), 0) || 1) : null, r = Array(T).fill(0), i = Array(T).fill(0);
1935
+ for (let a of n) a.values.forEach((n, o) => {
1936
+ if (!Number.isFinite(n)) return;
1937
+ let s = e ? n / e[o] * 100 : n, l, u;
1938
+ s >= 0 ? (l = w(r[o]), u = w(r[o] + s), r[o] += s) : (l = w(i[o] + s), u = w(i[o]), i[o] += s), !(!Number.isFinite(l) || !Number.isFinite(u)) && j.push({
1939
+ x: Math.min(l, u),
1940
+ y: c(k(o)),
1941
+ w: c(Math.abs(u - l)),
1942
+ h: c(Math.max(1, O)),
1943
+ color: a.colors?.[o] ?? a.color,
1944
+ label: t.categories[o] ?? String(o),
1945
+ series: a.label,
1946
+ value: n,
1947
+ index: o,
1948
+ ...a.opacity == null ? {} : { opacity: a.opacity }
1949
+ });
1950
+ });
1951
+ } else {
1952
+ let e = O / n.length;
1953
+ n.forEach((n, r) => {
1954
+ n.values.forEach((i, a) => {
1955
+ if (!Number.isFinite(i) || x && i <= 0) return;
1956
+ let o = w(i);
1957
+ Number.isFinite(o) && j.push({
1958
+ x: Math.min(o, A),
1959
+ y: c(k(a) + e * r),
1960
+ w: c(Math.max(1, Math.abs(o - A))),
1961
+ h: c(Math.max(1, e - 1)),
1962
+ color: n.colors?.[a] ?? n.color,
1963
+ label: t.categories[a] ?? String(a),
1964
+ series: n.label,
1965
+ value: i,
1966
+ index: a,
1967
+ ...n.opacity == null ? {} : { opacity: n.opacity }
1968
+ });
1969
+ });
1970
+ });
1971
+ }
1972
+ let M = C.ticks.map((e, n) => ({
1973
+ label: d.y.labels ? t.stacked100 ? `${r(e)}%` : fe(e, n, d.y, t, i) : "",
1974
+ x: w(e)
1975
+ })), N = d.x.labels ? t.categories.map((e, t) => ({
1976
+ value: t,
1977
+ y: c(k(t) + O / 2),
1978
+ label: e
1979
+ })) : [], P = [], F = [];
1980
+ for (let e of t.referenceLines ?? []) {
1981
+ if (e.axis === "x") {
1982
+ let n = typeof e.value == "number" ? e.value : t.categories.indexOf(e.value);
1983
+ if (n < 0 || !Number.isFinite(n)) continue;
1984
+ F.push({
1985
+ y: c(k(n) + O / 2),
1986
+ label: e.label ?? String(e.value),
1987
+ color: e.color ?? "#ef4444",
1988
+ dashed: e.dashed !== !1
1989
+ });
1990
+ continue;
1991
+ }
1992
+ let n = Number(e.value), r = w(n);
1993
+ Number.isFinite(r) && P.push({
1994
+ x: r,
1995
+ label: e.label ?? i(n, t.valueFormat, t),
1996
+ color: e.color ?? "#ef4444",
1997
+ dashed: e.dashed !== !1
1998
+ });
1999
+ }
2000
+ let I = [];
2001
+ for (let e of t.referenceBands ?? []) {
2002
+ if (e.axis === "x") {
2003
+ let n = typeof e.from == "number" ? e.from : t.categories.indexOf(e.from), r = typeof e.to == "number" ? e.to : t.categories.indexOf(e.to);
2004
+ if (n < 0 || r < 0) continue;
2005
+ let i = k(Math.min(n, r)) - D / 2, a = k(Math.max(n, r)) + O + D / 2;
2006
+ I.push({
2007
+ x: p,
2008
+ y: c(Math.min(i, a)),
2009
+ w: g,
2010
+ h: c(Math.abs(a - i)),
2011
+ color: e.color ?? "#64748b",
2012
+ opacity: e.opacity ?? .08,
2013
+ label: e.label ?? "",
2014
+ axis: "y"
2015
+ });
2016
+ continue;
2017
+ }
2018
+ let n = w(Number(e.from)), r = w(Number(e.to));
2019
+ !Number.isFinite(n) || !Number.isFinite(r) || I.push({
2020
+ x: Math.min(n, r),
2021
+ y: m,
2022
+ w: Math.abs(r - n),
2023
+ h: _,
2024
+ color: e.color ?? "#64748b",
2025
+ opacity: e.opacity ?? .08,
2026
+ label: e.label ?? "",
2027
+ axis: "x"
2028
+ });
2029
+ }
2030
+ return {
2031
+ ...a,
2032
+ plot: v,
2033
+ axes: {
2034
+ y: {
2035
+ min: C.min,
2036
+ max: C.max,
2037
+ log: x,
2038
+ reversed: d.y.reversed
2039
+ },
2040
+ y2: null,
2041
+ slot: E,
2042
+ count: T,
2043
+ xReversed: d.x.reversed,
2044
+ labels: t.categories
2045
+ },
2046
+ grid: {
2047
+ x: d.y.gridLines,
2048
+ y: d.x.gridLines
2049
+ },
2050
+ bars: j,
2051
+ orientation: "horizontal",
2052
+ valueTicks: M,
2053
+ catTicks: N,
2054
+ referenceLines: F,
2055
+ referenceLinesV: P,
2056
+ referenceBands: I,
2057
+ xLabelRotated: !1
2058
+ };
2059
+ }
2060
+ function it(e) {
2061
+ let { spec: t, series: n, empty: r, width: a, height: o, stacked: s, frame: l, axes: u } = e, d = n.filter((e) => e.axis === "left"), f = n.filter((e) => e.axis === "right"), p = f.length > 0, m = t.categories.reduce((e, t) => Math.max(e, t.length), 0), h = t.categoryGroups && t.categoryGroups.length > 0 && u.x.type !== "time" && t.orientation !== "horizontal" && t.categoryGroups.reduce((e, t) => e + t.span, 0) === t.categories.length ? t.categoryGroups : null, g = h ? 18 : 0, _ = u.y.width ?? (u.y.labels ? 48 : 12) + (u.y.title ? 16 : 0), v = t.seriesLabels ? at(t, n) : null, y = v ? Math.min(Math.floor(a / 3), 8 + Math.max(0, ...v.values()) * 6.2) : 0, x = (p ? u.y2.width ?? (u.y2.labels ? 48 : 12) : 12) + (u.y2.title ? 16 : 0) + y, C = 10 + l.top, w = Math.max(1, a - _ - x), T = m * 6.2 + 8 > w / Math.max(1, t.categories.length), E = Qe(t, u.x, _, w, T), D = tt(t, u.x, E) + (u.x.title ? 16 : 0) + g + l.bottom, O = Math.max(1, o - C - D), k = {
2062
+ x: _,
2063
+ y: C,
2064
+ w,
2065
+ h: O
2066
+ }, j = (t.referenceLines ?? []).filter((e) => e.axis !== "x"), M = (t.referenceBands ?? []).filter((e) => e.axis !== "x"), N = j.filter((e) => e.axis !== "right").map((e) => Number(e.value)).concat(M.filter((e) => e.axis !== "right").flatMap((e) => [Number(e.from), Number(e.to)])), P = j.filter((e) => e.axis === "right").map((e) => Number(e.value)).concat(M.filter((e) => e.axis === "right").flatMap((e) => [Number(e.from), Number(e.to)])), F = u.y.scale === "log", I = u.y2.scale === "log", L = (e) => e.kind === "area" ? e.stack ? `${e.axis}\u0000${e.stack}` : s ? e.axis : null : null, R = [...new Set(n.map(L).filter((e) => e !== null))], ee = t.stackOffset && t.stackOffset !== "zero" && !t.stacked100 ? t.stackOffset : null, te = /* @__PURE__ */ new Map(), ne = {
2067
+ left: [],
2068
+ right: []
2069
+ };
2070
+ if (ee) for (let e of R) {
2071
+ let t = n.filter((t) => L(t) === e), r = t.map((e) => e.values), i = Ke(r, ee);
2072
+ te.set(e, i);
2073
+ let a = t[0].axis;
2074
+ i.forEach((e, t) => {
2075
+ let n = 0;
2076
+ for (let e of r) n += Number.isFinite(e[t]) ? e[t] : 0;
2077
+ ne[a].push(e, e + n);
2078
+ });
2079
+ }
2080
+ let z = t.stacked100 ? S(0, 100) : oe(d, t.categories, s, N.concat(ne.left), F, u.y), B = p ? t.stacked100 ? S(0, 100) : oe(f, t.categories, s, P.concat(ne.right), I, u.y2) : null, V = (e, t, n = !1, r = !1) => {
2081
+ let i = b(t, e.min, e.max, n);
2082
+ return i === null ? NaN : (r && (i = 1 - i), c(C + O - i * O));
2083
+ }, re = (e) => V(z, e, F, u.y.reversed), ie = (e) => V(B ?? z, e, I, u.y2.reversed), H = (e) => e.axis === "right" ? B ?? z : z, U = (e) => e.axis === "right" ? I : F, ae = (e) => e.axis === "right" ? u.y2.reversed : u.y.reversed, W = (e, t) => V(H(e), t, U(e), ae(e)), G = t.categories.length, { slot: se, xCenter: ce, ticks: le } = E, ue = [];
2084
+ if (h && !E.values) {
2085
+ let e = 0;
2086
+ for (let t of h) {
2087
+ let n = c(_ + se * e), r = c(_ + se * (e + t.span));
2088
+ ue.push({
2089
+ label: t.label,
2090
+ x0: n,
2091
+ x1: r,
2092
+ xCenter: c((n + r) / 2)
2093
+ }), e += t.span;
2094
+ }
2095
+ }
2096
+ let de = n.filter((e) => e.kind === "bar" || e.kind === "range-bar" || e.kind === "lollipop" || e.kind === "dumbbell"), K = [], pe = [];
2097
+ if (de.length) {
2098
+ let e = t.type === "histogram", n = e ? 0 : E.barSlot * .2, r = E.barSlot - n, i = (e) => E.barX0(e) + n / 2, a = [], o = /* @__PURE__ */ new Map();
2099
+ for (let e of de) {
2100
+ let t = e.kind === "bar" ? e.stack ?? (s ? "" : null) : null;
2101
+ if (t === null) {
2102
+ a.push({
2103
+ key: e.label,
2104
+ members: [e],
2105
+ stacked: !1
2106
+ });
2107
+ continue;
2108
+ }
2109
+ let n = o.get(t);
2110
+ n || (n = {
2111
+ key: t,
2112
+ members: [],
2113
+ stacked: !0
2114
+ }, o.set(t, n), a.push(n)), n.members.push(e);
2115
+ }
2116
+ let l = r / a.length;
2117
+ a.forEach((n, r) => {
2118
+ if (n.stacked) for (let o of ["left", "right"]) {
2119
+ let s = n.members.filter((e) => e.axis === o);
2120
+ if (!s.length) continue;
2121
+ let u = o === "right" ? ie : re, d = t.stacked100 ? t.categories.map((e, t) => s.reduce((e, n) => e + Math.abs(Number.isFinite(n.values[t]) ? n.values[t] : 0), 0) || 1) : null, f = Array(G).fill(0), p = Array(G).fill(0);
2122
+ for (let n of s) n.values.forEach((o, s) => {
2123
+ if (!Number.isFinite(o)) return;
2124
+ let m = d ? o / d[s] * 100 : o, h, g;
2125
+ m >= 0 ? (h = u(f[s] + m), g = u(f[s]), f[s] += m) : (h = u(p[s]), g = u(p[s] + m), p[s] += m), !(!Number.isFinite(h) || !Number.isFinite(g)) && K.push({
2126
+ x: c(i(s) + l * r),
2127
+ y: Math.min(h, g),
2128
+ w: c(Math.max(1, a.length > 1 ? l - +!e : l)),
2129
+ h: c(Math.abs(g - h)),
2130
+ color: n.colors?.[s] ?? n.color,
2131
+ label: t.categories[s] ?? String(s),
2132
+ series: n.label,
2133
+ value: o,
2134
+ index: s,
2135
+ ...n.opacity == null ? {} : { opacity: n.opacity }
2136
+ });
2137
+ });
2138
+ }
2139
+ });
2140
+ let u = a.map((e, t) => ({
2141
+ slot: e,
2142
+ si: t
2143
+ })).filter(({ slot: e }) => !e.stacked);
2144
+ if (u.length) {
2145
+ let n = l;
2146
+ u.forEach(({ slot: r, si: a }) => {
2147
+ let o = r.members[0], s = a, l = H(o), u = U(o), d = u ? W(o, l.min) : W(o, Math.min(Math.max(0, l.min), l.max)), f = c(Math.min(5, Math.max(2.5, n * .3)));
2148
+ o.values.forEach((r, a) => {
2149
+ if (!Number.isFinite(r) || u && r <= 0) return;
2150
+ let l = i(a) + n * s, p = W(o, r);
2151
+ if (!Number.isFinite(p)) return;
2152
+ let m = o.colors?.[a] ?? o.color, h = t.categories[a] ?? String(a);
2153
+ if (o.kind === "lollipop") {
2154
+ pe.push({
2155
+ xCenter: c(l + n / 2),
2156
+ y0: d,
2157
+ y1: p,
2158
+ r: f,
2159
+ color: m,
2160
+ label: h,
2161
+ series: o.label,
2162
+ value: r,
2163
+ dumbbell: !1
2164
+ });
2165
+ return;
2166
+ }
2167
+ if (o.kind === "dumbbell" || o.kind === "range-bar") {
2168
+ let t = o.lowValues?.[a];
2169
+ if (!Number.isFinite(t) || u && t <= 0) return;
2170
+ let i = W(o, t);
2171
+ if (!Number.isFinite(i)) return;
2172
+ if (o.kind === "dumbbell") {
2173
+ pe.push({
2174
+ xCenter: c(l + n / 2),
2175
+ y0: i,
2176
+ y1: p,
2177
+ r: f,
2178
+ color: m,
2179
+ color2: o.overlayColor ?? m,
2180
+ label: h,
2181
+ series: o.label,
2182
+ value: r,
2183
+ value2: t,
2184
+ dumbbell: !0
2185
+ });
2186
+ return;
2187
+ }
2188
+ K.push({
2189
+ x: c(l),
2190
+ y: Math.min(p, i),
2191
+ w: c(Math.max(1, n - +!e)),
2192
+ h: c(Math.max(1, Math.abs(p - i))),
2193
+ color: m,
2194
+ label: h,
2195
+ series: o.label,
2196
+ value: r,
2197
+ index: a,
2198
+ lo: t,
2199
+ ...o.opacity == null ? {} : { opacity: o.opacity }
2200
+ });
2201
+ return;
2202
+ }
2203
+ K.push({
2204
+ x: c(l),
2205
+ y: Math.min(p, d),
2206
+ w: c(Math.max(1, n - +!e)),
2207
+ h: c(Math.max(1, Math.abs(p - d))),
2208
+ color: m,
2209
+ label: h,
2210
+ series: o.label,
2211
+ value: r,
2212
+ index: a,
2213
+ ...o.opacity == null ? {} : { opacity: o.opacity }
2214
+ });
2215
+ });
2216
+ });
2217
+ }
2218
+ }
2219
+ let q = n.filter((e) => e.kind === "candle"), me = [];
2220
+ if (q.length) {
2221
+ let e = t.candleColors?.up ?? "#16a34a", n = t.candleColors?.down ?? "#ef4444", r = Math.max(1, E.barSlot * .7 / q.length), i = t.candleStyle ?? "classic";
2222
+ q.forEach((a, o) => {
2223
+ let s = U(a), l = a.ohlc ?? [], u = i === "heikin-ashi" ? Fe(l) : l, d = null;
2224
+ u.forEach((l, u) => {
2225
+ if (!l) {
2226
+ d = null;
2227
+ return;
2228
+ }
2229
+ if (![
2230
+ l.o,
2231
+ l.h,
2232
+ l.l,
2233
+ l.c
2234
+ ].every(Number.isFinite) || s && (l.o <= 0 || l.h <= 0 || l.l <= 0 || l.c <= 0)) return;
2235
+ let f = E.barX0(u) + E.barSlot / 2 - r * q.length / 2 + r * o, p = W(a, l.o), m = W(a, l.c), h = l.c >= l.o, g = i === "hollow" && d != null ? l.c >= d : h, _ = i === "hollow" ? h : g;
2236
+ d = l.c, me.push({
2237
+ x: c(f),
2238
+ w: c(r),
2239
+ xCenter: c(f + r / 2),
2240
+ yOpen: p,
2241
+ yClose: m,
2242
+ yHigh: W(a, l.h),
2243
+ yLow: W(a, l.l),
2244
+ bodyY: Math.min(p, m),
2245
+ bodyH: Math.max(1, Math.abs(m - p)),
2246
+ up: g,
2247
+ hollow: _,
2248
+ color: g ? e : n,
2249
+ label: t.categories[u] ?? String(u),
2250
+ series: a.label,
2251
+ o: l.o,
2252
+ h: l.h,
2253
+ l: l.l,
2254
+ c: l.c
2255
+ });
2256
+ });
2257
+ });
2258
+ }
2259
+ let J = n.filter((e) => e.kind === "box"), he = [];
2260
+ if (J.length) {
2261
+ let e = Math.max(1, E.barSlot * .6 / J.length);
2262
+ J.forEach((n, r) => {
2263
+ let i = U(n);
2264
+ (n.boxes ?? []).forEach((a, o) => {
2265
+ if (!a || ![
2266
+ a.min,
2267
+ a.q1,
2268
+ a.median,
2269
+ a.q3,
2270
+ a.max
2271
+ ].every(Number.isFinite) || i && a.min <= 0) return;
2272
+ let s = E.barX0(o) + E.barSlot / 2 - e * J.length / 2 + e * r, l = W(n, a.q1), u = W(n, a.q3);
2273
+ he.push({
2274
+ x: c(s),
2275
+ w: c(e),
2276
+ xCenter: c(s + e / 2),
2277
+ yMin: W(n, a.min),
2278
+ yQ1: l,
2279
+ yMedian: W(n, a.median),
2280
+ yQ3: u,
2281
+ yMax: W(n, a.max),
2282
+ boxY: Math.min(l, u),
2283
+ boxH: Math.max(1, Math.abs(l - u)),
2284
+ outliers: (a.outliers ?? []).filter((e) => Number.isFinite(e) && (!i || e > 0)).map((e) => ({
2285
+ y: W(n, e),
2286
+ value: e
2287
+ })),
2288
+ color: n.color,
2289
+ label: t.categories[o] ?? String(o),
2290
+ series: n.label,
2291
+ min: a.min,
2292
+ q1: a.q1,
2293
+ median: a.median,
2294
+ q3: a.q3,
2295
+ max: a.max
2296
+ });
2297
+ });
2298
+ });
2299
+ }
2300
+ let ge = [];
2301
+ for (let e of n) {
2302
+ if (!e.errors) continue;
2303
+ let n = U(e);
2304
+ e.errors.forEach((r, i) => {
2305
+ let a = e.values[i];
2306
+ if (!Number.isFinite(a)) return;
2307
+ let o = A(r, a);
2308
+ o && (n && o.lo <= 0 || ge.push({
2309
+ xCenter: c(E.barX0(i) + E.barSlot / 2),
2310
+ yLo: W(e, o.lo),
2311
+ yHi: W(e, o.hi),
2312
+ cap: c(Math.min(6, E.barSlot * .15)),
2313
+ color: e.color,
2314
+ label: t.categories[i] ?? String(i),
2315
+ series: e.label,
2316
+ lo: o.lo,
2317
+ hi: o.hi
2318
+ }));
2319
+ });
2320
+ }
2321
+ let Y = [], _e = /* @__PURE__ */ new Map(), ye = /* @__PURE__ */ new Map(), be = /* @__PURE__ */ new Set();
2322
+ for (let e of R) if (_e.set(e, Array(G).fill(0)), t.stacked100) {
2323
+ let r = n.filter((t) => L(t) === e);
2324
+ ye.set(e, t.categories.map((e, t) => r.reduce((e, n) => e + Math.abs(Number.isFinite(n.values[t]) ? n.values[t] : 0), 0) || 1));
2325
+ }
2326
+ for (let e of n) {
2327
+ if (e.kind === "bar" || e.kind === "candle" || e.kind === "box" || e.kind === "range-bar" || e.kind === "lollipop" || e.kind === "dumbbell") continue;
2328
+ let n = H(e), r = U(e), i = (t) => W(e, t), a = L(e), o = a !== null, s = (e) => ce(e), l, u = null, d = (n, r, i, a) => {
2329
+ let o = {
2330
+ x: s(n),
2331
+ y: i,
2332
+ label: t.categories[n] ?? String(n),
2333
+ value: r,
2334
+ defined: a
2335
+ }, c = Ye(e, n);
2336
+ return c && (o.marker = c), o;
2337
+ };
2338
+ if (o) {
2339
+ let t = _e.get(a), n = te.get(a);
2340
+ if (n && !be.has(a)) {
2341
+ for (let e = 0; e < G; e += 1) t[e] = n[e] ?? 0;
2342
+ be.add(a);
2343
+ }
2344
+ let r = t.slice(), o = ye.get(a);
2345
+ l = e.values.map((e, n) => {
2346
+ let r = Number.isFinite(e) ? e : 0, a = o ? r / o[n] * 100 : r, s = (t[n] ?? 0) + a;
2347
+ return t[n] = s, d(n, e, i(s), Number.isFinite(e));
2348
+ }), u = r.map((e, t) => ({
2349
+ x: s(t),
2350
+ y: i(e)
2351
+ }));
2352
+ } else l = e.values.map((e, t) => {
2353
+ let n = Number.isFinite(e) && Number.isFinite(i(e));
2354
+ return d(t, e, n ? i(e) : NaN, n);
2355
+ });
2356
+ let f = !!e.smooth && !e.step, p = e.step, m = !!e.connectNulls, h = e.kind === "scatter" ? "" : Ve(l, f, {
2357
+ connectNulls: m,
2358
+ step: p
2359
+ }), g = "";
2360
+ if (e.kind === "range-area" && l.length) {
2361
+ let t = [], n = [];
2362
+ l.forEach((r, a) => {
2363
+ let o = e.lowValues?.[a];
2364
+ if (!r.defined || !Number.isFinite(o)) return;
2365
+ let s = i(o);
2366
+ Number.isFinite(s) && (t.push({
2367
+ x: r.x,
2368
+ y: r.y
2369
+ }), n.push({
2370
+ x: r.x,
2371
+ y: s
2372
+ }));
2373
+ }), t.length >= 2 && (g = Ge(t, n, f, p), h = `${X(t, f, p)} ${X(n, f, p)}`);
2374
+ } else if (e.kind === "area" && l.length) {
2375
+ if (u) g = Ge(l.map((e) => ({
2376
+ x: e.x,
2377
+ y: e.y
2378
+ })), u, f, p);
2379
+ else {
2380
+ let e = c(i(r ? n.min : Math.min(Math.max(0, n.min), n.max)));
2381
+ g = He(l, m).map((t) => `${X(t, f, p)} L${t[t.length - 1].x},${e} L${t[0].x},${e} Z`).join(" ");
2382
+ }
2383
+ }
2384
+ let _ = "";
2385
+ if (e.upperValues?.length === e.values.length && e.lowerValues?.length === e.values.length) {
2386
+ let t = [], n = [];
2387
+ for (let a = 0; a < e.values.length; a += 1) {
2388
+ let o = e.upperValues[a], c = e.lowerValues[a];
2389
+ !Number.isFinite(o) || !Number.isFinite(c) || r && (o <= 0 || c <= 0) || (t.push({
2390
+ x: s(a),
2391
+ y: i(o)
2392
+ }), n.push({
2393
+ x: s(a),
2394
+ y: i(c)
2395
+ }));
2396
+ }
2397
+ t.length >= 2 && (_ = Ge(t, n, f, p));
2398
+ }
2399
+ let v = {
2400
+ path: h,
2401
+ areaPath: g,
2402
+ color: e.color,
2403
+ label: e.label,
2404
+ points: l,
2405
+ bandPath: _
2406
+ };
2407
+ e.kind === "range-area" && (v.range = !0);
2408
+ let y = Xe(e);
2409
+ y && (v.style = y), f && (v.smooth = !0), p && (v.step = p), Y.push(v);
2410
+ }
2411
+ let xe = (e, n, r) => e.ticks.map((a, o) => ({
2412
+ value: a,
2413
+ y: V(e, a, r, n.reversed),
2414
+ label: n.labels ? t.stacked100 ? `${c(a)}%` : fe(a, o, n, t, i) : ""
2415
+ })), Se = [], Ce = [];
2416
+ for (let e of t.referenceLines ?? []) {
2417
+ if (e.axis === "x") {
2418
+ let n = et(t, E, e.value);
2419
+ if (!Number.isFinite(n)) continue;
2420
+ Ce.push({
2421
+ x: n,
2422
+ label: e.label ?? String(e.value),
2423
+ color: e.color ?? "#ef4444",
2424
+ dashed: e.dashed !== !1
2425
+ });
2426
+ continue;
2427
+ }
2428
+ let n = e.axis === "right", r = n ? B ?? z : z, a = n ? I : F, o = Number(e.value), s = V(r, o, a, n ? u.y2.reversed : u.y.reversed);
2429
+ Number.isFinite(s) && Se.push({
2430
+ y: s,
2431
+ label: e.label ?? i(o, t.valueFormat, t),
2432
+ color: e.color ?? "#ef4444",
2433
+ dashed: e.dashed !== !1
2434
+ });
2435
+ }
2436
+ let we = [];
2437
+ for (let e of t.referenceBands ?? []) {
2438
+ let n = e.color ?? "#64748b", r = e.opacity ?? .08, i = e.label ?? "";
2439
+ if (e.axis === "x") {
2440
+ let a = et(t, E, e.from), o = et(t, E, e.to);
2441
+ if (!Number.isFinite(a) || !Number.isFinite(o)) continue;
2442
+ if (!E.continuous) {
2443
+ let e = se / 2;
2444
+ a <= o ? (a -= e, o += e) : (a += e, o -= e);
2445
+ }
2446
+ we.push({
2447
+ x: c(Math.min(a, o)),
2448
+ y: C,
2449
+ w: c(Math.abs(o - a)),
2450
+ h: O,
2451
+ color: n,
2452
+ opacity: r,
2453
+ label: i,
2454
+ axis: "x"
2455
+ });
2456
+ continue;
2457
+ }
2458
+ let a = e.axis === "right", o = a ? B ?? z : z, s = a ? I : F, l = a ? u.y2.reversed : u.y.reversed, d = V(o, Number(e.from), s, l), f = V(o, Number(e.to), s, l);
2459
+ !Number.isFinite(d) || !Number.isFinite(f) || we.push({
2460
+ x: _,
2461
+ y: Math.min(d, f),
2462
+ w,
2463
+ h: Math.abs(f - d),
2464
+ color: n,
2465
+ opacity: r,
2466
+ label: i,
2467
+ axis: "y"
2468
+ });
2469
+ }
2470
+ let Te = [];
2471
+ for (let e of n) {
2472
+ if (!e.overlay) continue;
2473
+ let n = U(e), r = Oe(e.values, e.overlay, {
2474
+ ohlc: e.ohlc,
2475
+ volumes: e.volumes
2476
+ }), i = r.values, a = e.overlayColor ?? e.color, o = (r) => r.map((r, i) => {
2477
+ let a = Number.isFinite(r) && (!n || r > 0);
2478
+ return {
2479
+ x: ce(i),
2480
+ y: a ? W(e, r) : NaN,
2481
+ label: t.categories[i] ?? String(i),
2482
+ value: r,
2483
+ defined: a
2484
+ };
2485
+ }), s = o(i), c = Ve(s, !!e.smooth), l = "", u = /^bb:(\d+):(\d+(?:\.\d+)?)$/.exec(e.overlay);
2486
+ if (u) {
2487
+ let { upper: t, lower: n } = ve(e.values, Number(u[1]), Number(u[2])), r = o(t).filter((e) => e.defined), i = o(n).filter((e) => e.defined);
2488
+ r.length > 1 && i.length > 1 && (l = r.map((e, t) => `${t ? "L" : "M"}${e.x},${e.y}`).join(" ") + " " + i.slice().reverse().map((e) => `L${e.x},${e.y}`).join(" ") + " Z");
2489
+ }
2490
+ Te.push({
2491
+ path: c,
2492
+ areaPath: "",
2493
+ color: a,
2494
+ label: `${e.label} (${e.overlay})`,
2495
+ points: s,
2496
+ ...l ? { bandPath: l } : {},
2497
+ ...r.r2 === void 0 ? {} : { r2: r.r2 },
2498
+ ...r.equation ? { equation: r.equation } : {}
2499
+ });
2500
+ }
2501
+ if (t.lastPriceLine) {
2502
+ let e = t.lastPriceLine === !0 ? {} : t.lastPriceLine, r = n.find((e) => e.ohlc) ?? n[0];
2503
+ if (r) {
2504
+ let n = -1;
2505
+ for (let e = r.values.length - 1; e >= 0; --e) if (Number.isFinite(r.values[e])) {
2506
+ n = e;
2507
+ break;
2508
+ }
2509
+ if (n >= 0) {
2510
+ let a = r.values[n], o = NaN;
2511
+ for (let e = n - 1; e >= 0; --e) if (Number.isFinite(r.values[e])) {
2512
+ o = r.values[e];
2513
+ break;
2514
+ }
2515
+ let s = W(r, a);
2516
+ Number.isFinite(s) && Se.push({
2517
+ y: s,
2518
+ label: e.label ?? i(a, t.valueFormat, t),
2519
+ color: e.color ?? (Number.isFinite(o) && a < o ? "#ef4444" : "#16a34a"),
2520
+ dashed: !0,
2521
+ pill: !0
2522
+ });
2523
+ }
2524
+ }
2525
+ }
2526
+ let Ee = [];
2527
+ for (let e of t.annotations ?? []) {
2528
+ let r = null, i = null;
2529
+ if ("category" in e.at) {
2530
+ let a = t.categories.indexOf(e.at.category);
2531
+ if (a < 0) continue;
2532
+ r = ce(a);
2533
+ let o = e.at.series, s = o ? n.find((e) => e.label === o) : n[0];
2534
+ if (s) {
2535
+ let e = s.values[a];
2536
+ Number.isFinite(e) && (i = W(s, e));
2537
+ }
2538
+ i ??= C + O / 2;
2539
+ } else {
2540
+ let n = Number.isFinite(e.at.x) ? et(t, E, e.at.x) : NaN;
2541
+ r = Number.isFinite(n) ? n : _ + w / 2, i = Number.isFinite(e.at.y) ? V(z, e.at.y, F, u.y.reversed) : C + O / 2;
2542
+ }
2543
+ r != null && i != null && Number.isFinite(i) && Ee.push({
2544
+ x: r,
2545
+ y: i,
2546
+ label: e.label,
2547
+ color: e.color ?? "#0f172a",
2548
+ placement: e.placement ?? "top",
2549
+ shape: e.shape ?? "dot",
2550
+ ...e.text ? { text: e.text } : {}
2551
+ });
2552
+ }
2553
+ let De = [];
2554
+ for (let e of t.drawings ?? []) {
2555
+ let n = e.axis === "right", r = n ? B ?? z : z, a = n ? I : F, o = n ? u.y2.reversed : u.y.reversed, s = [], l = !0;
2556
+ for (let n of e.points) {
2557
+ let e = et(t, E, n.x), i = V(r, n.y, a, o);
2558
+ if (!Number.isFinite(e) || !Number.isFinite(i)) {
2559
+ l = !1;
2560
+ break;
2561
+ }
2562
+ s.push({
2563
+ x: c(e),
2564
+ y: i
2565
+ });
2566
+ }
2567
+ if (!l || !s.length) continue;
2568
+ let d = e.color ?? "#0ea5e9", f = {
2569
+ id: e.id,
2570
+ kind: e.kind,
2571
+ points: s,
2572
+ color: d,
2573
+ ...e.text ? { text: e.text } : {}
2574
+ };
2575
+ if (e.kind === "fib" && s.length >= 2) {
2576
+ let n = e.points[0].y, s = e.points[1].y;
2577
+ f.levels = [
2578
+ 0,
2579
+ .236,
2580
+ .382,
2581
+ .5,
2582
+ .618,
2583
+ 1
2584
+ ].map((e) => {
2585
+ let c = s + (n - s) * e;
2586
+ return {
2587
+ ratio: e,
2588
+ y: V(r, c, a, o),
2589
+ label: `${(e * 100).toFixed(1)}% ${i(c, t.valueFormat, t)}`
2590
+ };
2591
+ });
2592
+ }
2593
+ e.kind === "hray" && (f.label = i(e.points[0].y, t.valueFormat, t)), De.push(f);
2594
+ }
2595
+ return {
2596
+ ...r,
2597
+ plot: k,
2598
+ axes: {
2599
+ y: {
2600
+ min: z.min,
2601
+ max: z.max,
2602
+ log: F,
2603
+ reversed: u.y.reversed
2604
+ },
2605
+ y2: B ? {
2606
+ min: B.min,
2607
+ max: B.max,
2608
+ log: I,
2609
+ reversed: u.y2.reversed
2610
+ } : null,
2611
+ slot: se,
2612
+ count: t.categories.length,
2613
+ ...E.continuous ? { x: {
2614
+ type: E.continuous,
2615
+ min: E.min,
2616
+ max: E.max,
2617
+ reversed: u.x.reversed,
2618
+ values: E.values ?? [],
2619
+ ...E.log ? { log: !0 } : {}
2620
+ } } : {},
2621
+ xReversed: u.x.reversed,
2622
+ labels: t.categories
2623
+ },
2624
+ grid: {
2625
+ x: u.x.gridLines,
2626
+ y: u.y.gridLines
2627
+ },
2628
+ bars: K,
2629
+ candles: me,
2630
+ boxes: he,
2631
+ errorBars: ge,
2632
+ stems: pe,
2633
+ lines: Y,
2634
+ yTicks: xe(z, u.y, F),
2635
+ y2Ticks: B ? xe(B, u.y2, I) : [],
2636
+ hasRightAxis: p,
2637
+ xTicks: le,
2638
+ categoryGroupTicks: ue,
2639
+ xLabelRotated: E.rotated,
2640
+ xLabelAngle: E.angle,
2641
+ referenceLines: Se,
2642
+ referenceLinesV: Ce,
2643
+ referenceBands: we,
2644
+ overlays: Te,
2645
+ annotations: Ee,
2646
+ drawings: De,
2647
+ seriesLabels: t.seriesLabels ? ot(t, Y, k) : []
2648
+ };
2649
+ }
2650
+ function at(e, t) {
2651
+ let n = /* @__PURE__ */ new Map(), r = typeof e.seriesLabels == "object" ? e.seriesLabels.formatter : void 0;
2652
+ for (let e of t) {
2653
+ if (e.kind !== "line" && e.kind !== "area") continue;
2654
+ let t = [...e.values].reverse().find((e) => Number.isFinite(e));
2655
+ t !== void 0 && n.set(e.label, (r ? r(e.label, t) : e.label).length);
2656
+ }
2657
+ return n;
2658
+ }
2659
+ function ot(e, t, n) {
2660
+ let r = typeof e.seriesLabels == "object" ? e.seriesLabels.formatter : void 0, i = [];
2661
+ for (let e of t) {
2662
+ let t = [...e.points].reverse().find((e) => e.defined && Number.isFinite(e.y));
2663
+ t && i.push({
2664
+ x: c(t.x + 6),
2665
+ y: t.y,
2666
+ text: r ? r(e.label, t.value) : e.label,
2667
+ color: e.color,
2668
+ series: e.label
2669
+ });
2670
+ }
2671
+ i.sort((e, t) => e.y - t.y);
2672
+ for (let e = 1; e < i.length; e += 1) i[e].y = Math.max(i[e].y, i[e - 1].y + 12);
2673
+ let a = n.y + n.h - 2;
2674
+ for (let e = i.length - 1; e >= 0; --e) {
2675
+ let t = e === i.length - 1 ? a : i[e + 1].y - 12;
2676
+ i[e].y = Math.min(i[e].y, t);
2677
+ }
2678
+ for (let e of i) e.y = c(Math.max(n.y + 4, e.y));
2679
+ return i;
2680
+ }
2681
+ function st(e) {
2682
+ let { spec: t, series: n, empty: r, width: a, height: o, frame: s, axes: l } = e, u = n[0];
2683
+ if (!u || !t.categories.length) return { ...r };
2684
+ let d = u.targets ?? n[1]?.values ?? [], f = t.bulletRanges ?? t.gaugeRanges ?? [], p = t.categories.reduce((e, t) => Math.max(e, t.length), 0), m = l.x.labels ? Math.min(150, 18 + p * 6.4) : 12, h = 8 + s.top, g = (l.y.labels ? 26 : 8) + (l.y.title ? 16 : 0) + s.bottom, _ = Math.max(1, a - m - 16), v = Math.max(1, o - h - g), y = {
2685
+ x: m,
2686
+ y: h,
2687
+ w: _,
2688
+ h: v
2689
+ }, b = 0;
2690
+ for (let e of u.values) Number.isFinite(e) && e > b && (b = e);
2691
+ for (let e of d) Number.isFinite(e) && e > b && (b = e);
2692
+ for (let e of f) Number.isFinite(e.to) && e.to > b && (b = e.to);
2693
+ let x = S(0, b > 0 ? b : 1, l.y), C = (e) => c(m + (e - x.min) / (x.max - x.min || 1) * _), w = t.categories.length, T = v / w, E = T * .25, D = T - E, O = [];
2694
+ t.categories.forEach((e, t) => {
2695
+ let n = u.values[t], r = d[t], i = c(h + T * t + E / 2), a = Number.isFinite(n) ? n : 0;
2696
+ O.push({
2697
+ x: m,
2698
+ y: i,
2699
+ w: _,
2700
+ h: c(D),
2701
+ measureW: Math.max(0, C(Math.max(x.min, Math.min(x.max, a))) - m),
2702
+ targetX: Number.isFinite(r) ? C(Math.max(x.min, Math.min(x.max, r))) : null,
2703
+ ranges: f.map((e) => {
2704
+ let t = C(Math.max(x.min, Math.min(x.max, e.from))), n = C(Math.max(x.min, Math.min(x.max, e.to)));
2705
+ return {
2706
+ x: Math.min(t, n),
2707
+ w: Math.abs(n - t),
2708
+ color: e.color
2709
+ };
2710
+ }),
2711
+ color: u.colors?.[t] ?? u.color,
2712
+ label: e,
2713
+ series: u.label,
2714
+ value: a,
2715
+ target: Number.isFinite(r) ? r : null
2716
+ });
2717
+ });
2718
+ let k = x.ticks.map((e, n) => ({
2719
+ label: l.y.labels ? fe(e, n, l.y, t, i) : "",
2720
+ x: C(e)
2721
+ })), A = l.x.labels ? t.categories.map((e, t) => ({
2722
+ value: t,
2723
+ y: c(h + T * t + T / 2),
2724
+ label: e
2725
+ })) : [];
2726
+ return {
2727
+ ...r,
2728
+ plot: y,
2729
+ axes: {
2730
+ y: {
2731
+ min: x.min,
2732
+ max: x.max,
2733
+ log: !1
2734
+ },
2735
+ y2: null,
2736
+ slot: T,
2737
+ count: w,
2738
+ labels: t.categories
2739
+ },
2740
+ grid: {
2741
+ x: l.y.gridLines,
2742
+ y: !1
2743
+ },
2744
+ orientation: "horizontal",
2745
+ bullets: O,
2746
+ valueTicks: k,
2747
+ catTicks: A,
2748
+ legend: [{
2749
+ label: u.label,
2750
+ color: u.color
2751
+ }]
2752
+ };
2753
+ }
2754
+ //#endregion
2755
+ //#region ../grid/dist/chart-polar.js
2756
+ function ct(e) {
2757
+ let { spec: t, series: n, width: r, height: i, empty: a, frame: o } = e;
2758
+ if (!n.length || !t.categories.length) return { ...a };
2759
+ let l = 24 + o.top, u = 24 + o.bottom, d = Math.max(1, r - 30 - 30), f = Math.max(1, i - l - u), p = {
2760
+ x: 30,
2761
+ y: l,
2762
+ w: d,
2763
+ h: f
2764
+ }, m = 30 + d / 2, h = l + f / 2, g = Math.max(20, Math.min(d, f) / 2 - 20), _ = t.categories, v = _.length, y = 0;
2765
+ for (let e of n) for (let t of e.values) Number.isFinite(t) && t > y && (y = t);
2766
+ y === 0 && (y = 1);
2767
+ let b = t.yAxis?.min ?? 0, x = t.yAxis?.max ?? Math.max(y, b + 1), S = x > b ? x - b : 1, C = Array.from({ length: 5 }, (e, t) => b + (t + 1) / 5 * S), w = (e) => -Math.PI / 2 + e / v * Math.PI * 2, T = (e, t) => {
2768
+ let n = Math.max(0, Math.min(1, (t - b) / S)), r = w(e);
2769
+ return {
2770
+ x: c(m + g * n * Math.cos(r)),
2771
+ y: c(h + g * n * Math.sin(r))
2772
+ };
2773
+ }, E = _.map((e, t) => {
2774
+ let n = T(t, x);
2775
+ return {
2776
+ label: e,
2777
+ x: n.x,
2778
+ y: n.y
2779
+ };
2780
+ }), D = n.map((e, n) => {
2781
+ let r = e.values.map((e, t) => {
2782
+ let n = T(t, Number.isFinite(e) ? e : b);
2783
+ return {
2784
+ x: n.x,
2785
+ y: n.y,
2786
+ value: e,
2787
+ axis: _[t] ?? ""
2788
+ };
2789
+ }), i = r.length ? r.map((e, t) => `${t === 0 ? "M" : "L"}${e.x},${e.y}`).join(" ") + " Z" : "", a = t.palette ?? s;
2790
+ return {
2791
+ label: e.label,
2792
+ color: e.color ?? a[n % a.length],
2793
+ path: i,
2794
+ points: r
2795
+ };
2796
+ });
2797
+ return {
2798
+ ...a,
2799
+ plot: p,
2800
+ radarRings: C,
2801
+ radarAxes: E,
2802
+ radarSeries: D,
2803
+ radarCenter: {
2804
+ cx: m,
2805
+ cy: h,
2806
+ r: g
2807
+ }
2808
+ };
2809
+ }
2810
+ function lt(e) {
2811
+ let { spec: t, width: n, height: r, empty: i, frame: a } = e, o = t.gaugeMin ?? 0, s = t.gaugeMax ?? 100, l = Math.max(o, Math.min(s, t.gaugeValue ?? 0)), u = t.gaugeTarget, d = n / 2, f = Math.max(1, r - a.top - a.bottom), p = a.top + f * .78, m = Math.min(n * .42, f * .65), h = Math.PI, g = 2 * Math.PI, _ = (e) => h + (e - o) / (s - o || 1) * (g - h), v = (e, t, n) => {
2812
+ let r = d + n * Math.cos(e), i = p + n * Math.sin(e), a = d + n * Math.cos(t), o = p + n * Math.sin(t);
2813
+ return `M${r},${i} A${n},${n} 0 ${+(t - e > Math.PI)} 1 ${a},${o}`;
2814
+ }, y = v(h, g, m), b = v(h, _(l), m), x = (t.gaugeRanges ?? []).map((e) => ({
2815
+ path: v(_(e.from), _(e.to), m - 16),
2816
+ color: e.color,
2817
+ from: e.from,
2818
+ to: e.to
2819
+ })), S = null;
2820
+ if (u != null && Number.isFinite(u)) {
2821
+ let e = _(Math.max(o, Math.min(s, u))), t = m - 12, n = m + 4;
2822
+ S = {
2823
+ x1: d + t * Math.cos(e),
2824
+ y1: p + t * Math.sin(e),
2825
+ x2: d + n * Math.cos(e),
2826
+ y2: p + n * Math.sin(e)
2827
+ };
2828
+ }
2829
+ let C = [];
2830
+ for (let e = 0; e <= 20; e++) {
2831
+ let t = h + e / 20 * (g - h), n = e % 5 == 0, r = m + 9, i = m + (n ? 17 : 13);
2832
+ C.push({
2833
+ x1: d + r * Math.cos(t),
2834
+ y1: p + r * Math.sin(t),
2835
+ x2: d + i * Math.cos(t),
2836
+ y2: p + i * Math.sin(t),
2837
+ major: n
2838
+ });
2839
+ }
2840
+ let w = _(l), T = m - 14, E = w + Math.PI / 2, D = (e, t) => `${c(d + e * Math.cos(t))},${c(p + e * Math.sin(t))}`, O = `M${D(9, E)} L${D(T, w)} L${D(9, E + Math.PI)} L${D(5, w + Math.PI)} Z`, k = null, A = t.gaugeRanges ?? [];
2841
+ for (let e of A) if (l >= e.from && l < e.to) {
2842
+ k = e.color;
2843
+ break;
2844
+ }
2845
+ if (k == null) for (let e of A) l >= e.from && l <= e.to && (k = e.color);
2846
+ return {
2847
+ ...i,
2848
+ plot: {
2849
+ x: 0,
2850
+ y: 0,
2851
+ w: n,
2852
+ h: r
2853
+ },
2854
+ gauge: {
2855
+ cx: d,
2856
+ cy: p,
2857
+ r: m,
2858
+ trackPath: y,
2859
+ valuePath: b,
2860
+ rangePaths: x,
2861
+ target: S,
2862
+ ticks: C,
2863
+ needle: {
2864
+ path: O,
2865
+ hubR: 6
2866
+ },
2867
+ valueColor: k,
2868
+ minLabel: {
2869
+ x: d - m,
2870
+ y: p + 20
2871
+ },
2872
+ maxLabel: {
2873
+ x: d + m,
2874
+ y: p + 20
2875
+ },
2876
+ value: l,
2877
+ min: o,
2878
+ max: s,
2879
+ unit: t.gaugeUnit ?? ""
2880
+ }
2881
+ };
2882
+ }
2883
+ function ut(e) {
2884
+ let { spec: t, series: n, empty: r, width: i, height: a, palette: o, frame: s } = e, l = n[0];
2885
+ if (!l) return r;
2886
+ let u = l.values.reduce((e, t) => e + Math.max(0, t), 0) || 1, d = Math.max(1, a - s.top - s.bottom), f = s.top + d / 2, p = t.dataLabels?.placement === "outside" && t.dataLabels.show !== !1, m = 0, h = 0;
2887
+ if (p) {
2888
+ let e = -Math.PI / 2;
2889
+ t.categories.forEach((t, n) => {
2890
+ let r = Math.max(0, l.values[n] ?? 0) / u, i = e + r * Math.PI * 2 / 2;
2891
+ if (e += r * Math.PI * 2, r < .015) return;
2892
+ let a = (Math.min(t.length, 18) + 4) * 6.3;
2893
+ Math.cos(i) >= 0 ? h = Math.max(h, a) : m = Math.max(m, a);
2894
+ });
2895
+ }
2896
+ let g = p ? 26 + m : 10, _ = p ? 26 + h : 10, v = Math.max(12, Math.min(i, d) * .25), y = (i - g - _) / 2, b = Math.max(v, Math.min(d / 2 - (p ? 34 : 10), y)), x = p && y >= b ? g + y : i / 2, S = b * Math.min(.9, Math.max(0, t.innerRadius ?? 0)), C = -Math.PI / 2, w = l.values.map((e, n) => {
2897
+ let r = Math.max(0, e) / u, i = C, a = C + r * Math.PI * 2;
2898
+ C = a;
2899
+ let s = +(a - i > Math.PI), d = (i + a) / 2, p = (b + S) / 2 || b * .6, m = x + b * Math.cos(i), h = f + b * Math.sin(i), g = x + b * Math.cos(a), _ = f + b * Math.sin(a), v;
2900
+ if (r >= .999) v = S ? `M${c(x - b)},${c(f)} A${b},${b} 0 1 1 ${c(x + b)},${c(f)} A${b},${b} 0 1 1 ${c(x - b)},${c(f)} ZM${c(x - S)},${c(f)} A${S},${S} 0 1 0 ${c(x + S)},${c(f)} A${S},${S} 0 1 0 ${c(x - S)},${c(f)} Z` : `M${c(x - b)},${c(f)} A${b},${b} 0 1 1 ${c(x + b)},${c(f)} A${b},${b} 0 1 1 ${c(x - b)},${c(f)} Z`;
2901
+ else if (S > 0) {
2902
+ let e = x + S * Math.cos(i), t = f + S * Math.sin(i), n = x + S * Math.cos(a), r = f + S * Math.sin(a);
2903
+ v = `M${c(m)},${c(h)} A${b},${b} 0 ${s} 1 ${c(g)},${c(_)} L${c(n)},${c(r)} A${S},${S} 0 ${s} 0 ${c(e)},${c(t)} Z`;
2904
+ } else v = `M${c(x)},${c(f)} L${c(m)},${c(h)} A${b},${b} 0 ${s} 1 ${c(g)},${c(_)} Z`;
2905
+ let y = t.categories[n] ?? String(n);
2906
+ return {
2907
+ path: v,
2908
+ color: t.categoryColors?.[y] ?? l.colors?.[n] ?? o[n % o.length],
2909
+ label: y,
2910
+ value: e,
2911
+ percent: r * 100,
2912
+ cx: c(x + p * Math.cos(d)),
2913
+ cy: c(f + p * Math.sin(d)),
2914
+ arc: {
2915
+ a0: i,
2916
+ a1: a,
2917
+ r: b,
2918
+ ir: S,
2919
+ cx: x,
2920
+ cy: f
2921
+ }
2922
+ };
2923
+ });
2924
+ return p && dt(w, x, f, b, s.top, s.top + d, i), {
2925
+ ...r,
2926
+ slices: w,
2927
+ legend: t.categories.map((e, n) => ({
2928
+ label: e,
2929
+ color: t.categoryColors?.[e] ?? l.colors?.[n] ?? o[n % o.length]
2930
+ })),
2931
+ donut: S > 0 ? {
2932
+ cx: c(x),
2933
+ cy: c(f),
2934
+ r: c(S),
2935
+ total: l.values.reduce((e, t) => e + Math.max(0, t), 0)
2936
+ } : null
2937
+ };
2938
+ }
2939
+ function dt(e, t, n, r, i, a, o) {
2940
+ let s = (e) => Math.max(4, Math.floor((e - r - 26) / 6.3) - 4), l = s(o - t), u = s(t), d = [];
2941
+ for (let t of e) {
2942
+ if (!t.arc || t.percent < 1.5) continue;
2943
+ let e = (t.arc.a0 + t.arc.a1) / 2;
2944
+ d.push({
2945
+ slice: t,
2946
+ mid: e,
2947
+ ty: n + Math.sin(e) * (r + 16),
2948
+ right: Math.cos(e) >= 0
2949
+ });
2950
+ }
2951
+ for (let e of [!0, !1]) {
2952
+ let o = d.filter((t) => t.right === e).sort((e, t) => e.ty - t.ty);
2953
+ for (let e = 1; e < o.length; e += 1) o[e].ty = Math.max(o[e].ty, o[e - 1].ty + 13);
2954
+ let s = a - 6;
2955
+ for (let e = o.length - 1; e >= 0; --e) {
2956
+ let t = e === o.length - 1 ? s : o[e + 1].ty - 13;
2957
+ o[e].ty = Math.min(o[e].ty, t);
2958
+ }
2959
+ for (let e of o) e.ty < i + 6 && (e.ty = i + 6);
2960
+ for (let i of o) {
2961
+ let a = t + Math.cos(i.mid) * (r + 2), o = n + Math.sin(i.mid) * (r + 2), s = t + Math.cos(i.mid) * (r + 12), d = i.ty, f = e ? t + r + 22 : t - r - 22;
2962
+ i.slice.callout = {
2963
+ x1: c(a),
2964
+ y1: c(o),
2965
+ x2: c(s),
2966
+ y2: c(d),
2967
+ x3: c(f),
2968
+ tx: c(f + (e ? 4 : -4)),
2969
+ ty: c(i.ty),
2970
+ anchor: e ? "start" : "end",
2971
+ maxChars: e ? l : u
2972
+ };
2973
+ }
2974
+ }
2975
+ }
2976
+ function Z(e, t, n, r, i, a) {
2977
+ let o = Math.PI * 2, s = Math.max(0, Math.min(o, a - i));
2978
+ if (s <= 0 || r <= 0) return "";
2979
+ let l = (n, r) => `${c(e + n * Math.cos(r))},${c(t + n * Math.sin(r))}`;
2980
+ if (s >= o - 1e-6) {
2981
+ let e = `M${l(r, i)} A${c(r)},${c(r)} 0 1 1 ${l(r, i + Math.PI)} A${c(r)},${c(r)} 0 1 1 ${l(r, i)} Z`;
2982
+ return n <= 0 ? e : `${e} M${l(n, i)} A${c(n)},${c(n)} 0 1 0 ${l(n, i + Math.PI)} A${c(n)},${c(n)} 0 1 0 ${l(n, i)} Z`;
2983
+ }
2984
+ let u = +(s > Math.PI);
2985
+ return n <= 0 ? `M${c(e)},${c(t)} L${l(r, i)} A${c(r)},${c(r)} 0 ${u} 1 ${l(r, a)} Z` : `M${l(r, i)} A${c(r)},${c(r)} 0 ${u} 1 ${l(r, a)} L${l(n, a)} A${c(n)},${c(n)} 0 ${u} 0 ${l(n, i)} Z`;
2986
+ }
2987
+ function ft(e, t = 24) {
2988
+ let { width: n, height: r, frame: i } = e, a = Math.max(1, r - i.top - i.bottom), o = n / 2, s = i.top + a / 2, c = Math.max(10, Math.min(n, a) / 2 - t);
2989
+ return {
2990
+ cx: o,
2991
+ cy: s,
2992
+ r: c,
2993
+ plot: {
2994
+ x: o - c,
2995
+ y: s - c,
2996
+ w: 2 * c,
2997
+ h: 2 * c
2998
+ }
2999
+ };
3000
+ }
3001
+ function pt(e, t, n) {
3002
+ return t <= 0 ? e : h([e, n === "dark" ? "#111827" : "#ffffff"], Math.min(.6, t * .22));
3003
+ }
3004
+ var Q = -Math.PI / 2, $ = Math.PI * 2;
3005
+ function mt(e) {
3006
+ let { spec: t, empty: n, palette: r, theme: i } = e, a = t.tree ?? t.treemap;
3007
+ if (!a) return { ...n };
3008
+ let { cx: o, cy: s, r: l, plot: u } = ft(e, 12), d = (e) => e.children?.length ? e.children.reduce((e, t) => e + d(t), 0) : Math.max(0, e.value ?? 0), f = (e) => e.children?.length ? 1 + Math.max(...e.children.map(f)) : 0, p = a.children ?? [a], m = p.reduce((e, t) => e + d(t), 0);
3009
+ if (m <= 0) return {
3010
+ ...n,
3011
+ plot: u
3012
+ };
3013
+ let h = Math.max(1, f({
3014
+ name: "",
3015
+ children: p
3016
+ })), g = l * Math.min(.6, Math.max(0, t.innerRadius ?? .18)), v = (l - g) / h, y = [], b = (e, t, n, a, l, u) => {
3017
+ let f = e.reduce((e, t) => e + d(t), 0);
3018
+ if (f <= 0) return;
3019
+ let p = t;
3020
+ e.forEach((e, m) => {
3021
+ let h = d(e);
3022
+ if (h <= 0) return;
3023
+ let x = (n - t) * h / f, S = e.color ?? (a === 0 ? r[m % r.length] : l), C = a === 0 ? S : pt(S, a, i), w = g + v * a, T = w + v - 1, E = p + x / 2, D = (w + T) / 2, O = [...u, e.name];
3024
+ y.push({
3025
+ path: Z(o, s, w, T, p, p + x),
3026
+ color: C,
3027
+ textColor: _(C),
3028
+ label: e.name,
3029
+ series: u[u.length - 1] ?? "",
3030
+ value: h,
3031
+ a0: p,
3032
+ a1: p + x,
3033
+ r0: w,
3034
+ r1: T,
3035
+ cx: o,
3036
+ cy: s,
3037
+ depth: a,
3038
+ nodePath: O,
3039
+ lx: c(o + D * Math.cos(E)),
3040
+ ly: c(s + D * Math.sin(E))
3041
+ }), e.children?.length && b(e.children, p, p + x, a + 1, S, O), p += x;
3042
+ });
3043
+ };
3044
+ return b(p, Q, Q + $, 0, null, []), {
3045
+ ...n,
3046
+ plot: u,
3047
+ arcs: y,
3048
+ legend: p.map((e, t) => ({
3049
+ label: e.name,
3050
+ color: e.color ?? r[t % r.length]
3051
+ })),
3052
+ donut: g > 0 ? {
3053
+ cx: c(o),
3054
+ cy: c(s),
3055
+ r: c(g),
3056
+ total: m
3057
+ } : null
3058
+ };
3059
+ }
3060
+ function ht(e) {
3061
+ let { spec: t, series: n, empty: r, palette: i } = e;
3062
+ if (!n.length || !t.categories.length) return { ...r };
3063
+ let { cx: a, cy: o, r: s, plot: l } = ft(e, 12), u = 0;
3064
+ for (let e of n) for (let t of e.values) Number.isFinite(t) && t > u && (u = t);
3065
+ u <= 0 && (u = 1);
3066
+ let d = t.categories.length, f = d * n.length, p = s * Math.min(.6, Math.max(0, t.innerRadius ?? .2)), m = (s - p) / Math.max(1, f), h = Math.min(3, m * .2), g = [];
3067
+ for (let e = 0; e < d; e += 1) n.forEach((r, s) => {
3068
+ let l = r.values[e];
3069
+ if (!Number.isFinite(l) || l <= 0) return;
3070
+ let d = e * n.length + s, f = p + m * d + h / 2, v = f + m - h, y = Math.min($ * .9999, Math.max(0, l) / u * $), b = n.length === 1 ? t.categoryColors?.[t.categories[e]] ?? r.colors?.[e] ?? i[e % i.length] : r.colors?.[e] ?? r.color, x = Q + y / 2, S = (f + v) / 2;
3071
+ g.push({
3072
+ path: Z(a, o, f, v, Q, Q + y),
3073
+ trackPath: Z(a, o, f, v, Q, Q + $),
3074
+ color: b,
3075
+ textColor: _(b),
3076
+ label: t.categories[e],
3077
+ series: r.label,
3078
+ value: l,
3079
+ a0: Q,
3080
+ a1: Q + y,
3081
+ r0: f,
3082
+ r1: v,
3083
+ cx: a,
3084
+ cy: o,
3085
+ lx: c(a + S * Math.cos(x)),
3086
+ ly: c(o + S * Math.sin(x))
3087
+ });
3088
+ });
3089
+ return {
3090
+ ...r,
3091
+ plot: l,
3092
+ arcs: g,
3093
+ legend: n.length === 1 ? t.categories.map((e, n) => ({
3094
+ label: e,
3095
+ color: t.categoryColors?.[e] ?? i[n % i.length]
3096
+ })) : r.legend
3097
+ };
3098
+ }
3099
+ function gt(e) {
3100
+ let { spec: t, series: n, empty: r, palette: i, stacked: a } = e;
3101
+ if (!n.length || !t.categories.length) return { ...r };
3102
+ let o = t.type === "nightingale", { cx: s, cy: l, r: u, plot: d } = ft(e, 22), f = t.categories.length, p = a || o && n.length > 1, m = 0;
3103
+ if (p) for (let e = 0; e < f; e += 1) {
3104
+ let t = 0;
3105
+ for (let r of n) t += Number.isFinite(r.values[e]) ? Math.max(0, r.values[e]) : 0;
3106
+ t > m && (m = t);
3107
+ }
3108
+ else for (let e of n) for (let t of e.values) Number.isFinite(t) && t > m && (m = t);
3109
+ let h = S(0, m > 0 ? m : 1, t.yAxis ?? {}), g = u * Math.min(.5, Math.max(0, t.innerRadius ?? (o ? 0 : .12))), v = (e) => {
3110
+ let t = Math.max(0, Math.min(1, (e - h.min) / (h.max - h.min || 1)));
3111
+ return g + (u - g) * (o ? Math.sqrt(t) : t);
3112
+ }, y = $ / f, b = o ? 0 : y * .15, x = [];
3113
+ for (let e = 0; e < f; e += 1) {
3114
+ let r = Q + y * e + b / 2, a = Q + y * (e + 1) - b / 2;
3115
+ if (p) {
3116
+ let o = 0;
3117
+ n.forEach((u) => {
3118
+ let d = u.values[e];
3119
+ if (!Number.isFinite(d) || d <= 0) return;
3120
+ let f = v(o);
3121
+ o += d;
3122
+ let p = v(o), m = n.length === 1 ? t.categoryColors?.[t.categories[e]] ?? u.colors?.[e] ?? i[e % i.length] : u.colors?.[e] ?? u.color, h = (r + a) / 2, g = (f + p) / 2;
3123
+ x.push({
3124
+ path: Z(s, l, f, p, r, a),
3125
+ color: m,
3126
+ textColor: _(m),
3127
+ label: t.categories[e],
3128
+ series: u.label,
3129
+ value: d,
3130
+ a0: r,
3131
+ a1: a,
3132
+ r0: f,
3133
+ r1: p,
3134
+ cx: s,
3135
+ cy: l,
3136
+ lx: c(s + g * Math.cos(h)),
3137
+ ly: c(l + g * Math.sin(h))
3138
+ });
3139
+ });
3140
+ } else {
3141
+ let o = (a - r) / n.length;
3142
+ n.forEach((a, u) => {
3143
+ let d = a.values[e];
3144
+ if (!Number.isFinite(d) || d <= 0) return;
3145
+ let f = r + o * u, p = f + o * (n.length > 1 ? .92 : 1), m = v(d), h = n.length === 1 ? t.categoryColors?.[t.categories[e]] ?? a.colors?.[e] ?? i[e % i.length] : a.colors?.[e] ?? a.color, y = (f + p) / 2, b = (g + m) / 2;
3146
+ x.push({
3147
+ path: Z(s, l, g, m, f, p),
3148
+ color: h,
3149
+ textColor: _(h),
3150
+ label: t.categories[e],
3151
+ series: a.label,
3152
+ value: d,
3153
+ a0: f,
3154
+ a1: p,
3155
+ r0: g,
3156
+ r1: m,
3157
+ cx: s,
3158
+ cy: l,
3159
+ lx: c(s + b * Math.cos(y)),
3160
+ ly: c(l + b * Math.sin(y))
3161
+ });
3162
+ });
3163
+ }
3164
+ }
3165
+ let C = e.axes.x.labels ? t.categories.map((e, t) => {
3166
+ let n = Q + y * t + y / 2, r = u + 10;
3167
+ return {
3168
+ label: e,
3169
+ x: c(s + r * Math.cos(n)),
3170
+ y: c(l + r * Math.sin(n))
3171
+ };
3172
+ }) : [];
3173
+ return {
3174
+ ...r,
3175
+ plot: d,
3176
+ arcs: x,
3177
+ polarAxes: C,
3178
+ polarRings: h.ticks.filter((e) => e > h.min).map((e) => v(e)),
3179
+ radarCenter: {
3180
+ cx: s,
3181
+ cy: l,
3182
+ r: u
3183
+ },
3184
+ legend: n.length === 1 ? t.categories.map((e, n) => ({
3185
+ label: e,
3186
+ color: t.categoryColors?.[e] ?? i[n % i.length]
3187
+ })) : r.legend
3188
+ };
3189
+ }
3190
+ function _t(e) {
3191
+ let { spec: t, empty: n, palette: r } = e, i = t.sankeyNodes ?? [], a = (t.sankeyLinks ?? []).filter((e) => Number.isFinite(e.value) && e.value > 0);
3192
+ if (!i.length || !a.length) return { ...n };
3193
+ let { cx: o, cy: s, r: l, plot: u } = ft(e, 28), d = /* @__PURE__ */ new Map();
3194
+ for (let e of a) d.set(e.source, (d.get(e.source) ?? 0) + e.value), e.target !== e.source && d.set(e.target, (d.get(e.target) ?? 0) + e.value);
3195
+ let f = i.filter((e) => (d.get(e.id) ?? 0) > 0), p = f.reduce((e, t) => e + (d.get(t.id) ?? 0), 0);
3196
+ if (p <= 0) return {
3197
+ ...n,
3198
+ plot: u
3199
+ };
3200
+ let m = Math.min(.06, $ / (f.length * 8)), h = $ - m * f.length, g = l - Math.max(8, l * .09), v = [], y = /* @__PURE__ */ new Map(), b = Q;
3201
+ f.forEach((e, t) => {
3202
+ let n = d.get(e.id) ?? 0, i = h * n / p, a = e.color ?? r[t % r.length];
3203
+ y.set(e.id, {
3204
+ a0: b,
3205
+ a1: b + i,
3206
+ cursor: b,
3207
+ color: a
3208
+ });
3209
+ let u = b + i / 2, f = l + 12;
3210
+ v.push({
3211
+ path: Z(o, s, g, l, b, b + i),
3212
+ color: a,
3213
+ textColor: _(a),
3214
+ label: e.label ?? e.id,
3215
+ series: "",
3216
+ value: n,
3217
+ a0: b,
3218
+ a1: b + i,
3219
+ r0: g,
3220
+ r1: l,
3221
+ cx: o,
3222
+ cy: s,
3223
+ lx: c(o + f * Math.cos(u)),
3224
+ ly: c(s + f * Math.sin(u))
3225
+ }), b += i + m;
3226
+ });
3227
+ let x = (e, t) => `${c(o + e * Math.cos(t))},${c(s + e * Math.sin(t))}`, S = [], C = (e, t) => {
3228
+ let n = y.get(e);
3229
+ if (!n) return null;
3230
+ let r = (n.a1 - n.a0) * t / (d.get(e) ?? 1), i = {
3231
+ a0: n.cursor,
3232
+ a1: n.cursor + r
3233
+ };
3234
+ return n.cursor += r, i;
3235
+ }, w = a.slice().sort((e, t) => t.value - e.value);
3236
+ for (let e of w) {
3237
+ let t = C(e.source, e.value), n = e.target === e.source ? t : C(e.target, e.value);
3238
+ if (!t || !n) continue;
3239
+ let r = +(t.a1 - t.a0 > Math.PI), i = +(n.a1 - n.a0 > Math.PI), a = `M${x(g, t.a0)} A${c(g)},${c(g)} 0 ${r} 1 ${x(g, t.a1)} Q${c(o)},${c(s)} ${x(g, n.a0)} A${c(g)},${c(g)} 0 ${i} 1 ${x(g, n.a1)} Q${c(o)},${c(s)} ${x(g, t.a0)} Z`;
3240
+ S.push({
3241
+ path: a,
3242
+ color: e.color ?? y.get(e.source).color,
3243
+ source: e.source,
3244
+ target: e.target,
3245
+ value: e.value
3246
+ });
3247
+ }
3248
+ return {
3249
+ ...n,
3250
+ plot: u,
3251
+ arcs: v,
3252
+ chordRibbons: S,
3253
+ legend: f.map((e, t) => ({
3254
+ label: e.label ?? e.id,
3255
+ color: e.color ?? r[t % r.length]
3256
+ }))
3257
+ };
3258
+ }
3259
+ //#endregion
3260
+ //#region ../grid/dist/chart-flow.js
3261
+ function vt(e) {
3262
+ let { spec: t, series: n, width: r, height: a, empty: o, frame: s, axes: l } = e, u = n[0];
3263
+ if (!u) return { ...o };
3264
+ let d = t.waterfallColors ?? {}, f = d.positive ?? "#16a34a", p = d.negative ?? "#ef4444", m = d.total ?? "#475569", h = t.categories.reduce((e, t) => Math.max(e, t.length), 0), g = 48 + (l.y.title ? 16 : 0), _ = 10 + s.top, v = Math.max(1, r - g - 12), y = typeof l.x.labelRotation == "number" ? l.x.labelRotation !== 0 : h * 6.2 + 8 > v / Math.max(1, t.categories.length), b = typeof l.x.labelRotation == "number" ? l.x.labelRotation : y ? -40 : 0, S = (y ? 54 : 28) + (l.x.title ? 16 : 0) + s.bottom, C = Math.max(1, a - _ - S), w = {
3265
+ x: g,
3266
+ y: _,
3267
+ w: v,
3268
+ h: C
3269
+ }, T = t.waterfallTotals ?? [], E = [], D = 0;
3270
+ t.categories.forEach((e, t) => {
3271
+ let n = u.values[t] ?? 0;
3272
+ T[t] ? (Number.isFinite(n) && n !== 0 && (D = n), E.push({
3273
+ from: 0,
3274
+ to: D,
3275
+ value: D,
3276
+ isTotal: !0
3277
+ })) : (E.push({
3278
+ from: D,
3279
+ to: D + n,
3280
+ value: n,
3281
+ isTotal: !1
3282
+ }), D += n);
3283
+ });
3284
+ let O = 0, k = 0;
3285
+ for (let e of E) e.from < O && (O = e.from), e.to < O && (O = e.to), e.from > k && (k = e.from), e.to > k && (k = e.to);
3286
+ let A = x(O, k), j = (e) => c(_ + C - (e - A.min) / (A.max - A.min || 1) * C), M = v / Math.max(1, t.categories.length), N = M * .2, P = Math.max(1, M - N), F = E.map((e, n) => {
3287
+ let r = j(Math.max(e.from, e.to)), i = j(Math.min(e.from, e.to)), a = g + M * n + N / 2, o = e.isTotal ? m : e.value >= 0 ? f : p;
3288
+ return {
3289
+ x: c(a),
3290
+ y: r,
3291
+ w: c(P),
3292
+ h: Math.max(1, i - r),
3293
+ color: o,
3294
+ label: t.categories[n] ?? String(n),
3295
+ series: u.label,
3296
+ value: e.value,
3297
+ index: n
3298
+ };
3299
+ }), I = [{
3300
+ path: E.map((e, t) => {
3301
+ let n = g + M * t + N / 2 + P, r = j(e.to), i = g + M * (t + 1) + N / 2;
3302
+ return t < E.length - 1 ? `M${n},${r} L${i},${r}` : "";
3303
+ }).filter(Boolean).join(" "),
3304
+ areaPath: "",
3305
+ color: "var(--sg-muted, #94a3b8)",
3306
+ label: "",
3307
+ points: []
3308
+ }], L = t.categories.map((e, t) => ({
3309
+ label: e,
3310
+ x: c(g + M * t + M / 2)
3311
+ })), R = A.ticks.map((e) => ({
3312
+ value: e,
3313
+ y: j(e),
3314
+ label: i(e, t.valueFormat, t)
3315
+ }));
3316
+ return {
3317
+ ...o,
3318
+ plot: w,
3319
+ bars: F,
3320
+ lines: I,
3321
+ yTicks: R,
3322
+ xTicks: L,
3323
+ xLabelRotated: y,
3324
+ xLabelAngle: b
3325
+ };
3326
+ }
3327
+ function yt(e) {
3328
+ let { spec: t, series: n, width: r, height: i, empty: a, frame: o } = e, c = n[0];
3329
+ if (!c || !c.values.length) return { ...a };
3330
+ let l = 16 + o.top, u = 16 + o.bottom, d = Math.max(1, r - 20 - 20), f = Math.max(1, i - l - u), p = {
3331
+ x: 20,
3332
+ y: l,
3333
+ w: d,
3334
+ h: f
3335
+ }, m = c.values.length, h = f / m, g = Math.max(...c.values.map((e) => Number.isFinite(e) ? e : 0)), v = c.values[0] ?? 0, y = (e) => g > 0 ? e / g * d : 0, b = 20 + d / 2, x = t.palette ?? s, S = t.funnelShape ?? "trapezoid", C = c.values.map((e, n) => {
3336
+ let r = c.values[n + 1] ?? e * .8, i = l + h * n, a = i + h, o;
3337
+ if (S === "pyramid") {
3338
+ let e = d * n / m, t = d * (n + 1) / m;
3339
+ o = `M${b - e / 2},${i} L${b + e / 2},${i} L${b + t / 2},${a} L${b - t / 2},${a} Z`;
3340
+ } else if (S === "cone") {
3341
+ let e = d * (1 - n / m), t = d * (1 - (n + 1) / m);
3342
+ o = `M${b - e / 2},${i} L${b + e / 2},${i} L${b + t / 2},${a} L${b - t / 2},${a} Z`;
3343
+ } else {
3344
+ let t = y(e), n = y(r);
3345
+ o = `M${b - t / 2},${i} L${b + t / 2},${i} L${b + n / 2},${a} L${b - n / 2},${a} Z`;
3346
+ }
3347
+ let s = c.color ?? x[n % x.length];
3348
+ return {
3349
+ path: o,
3350
+ color: s,
3351
+ label: t.categories[n] ?? c.label,
3352
+ value: e,
3353
+ conversion: v > 0 ? e / v : 0,
3354
+ dropoff: n === 0 ? 0 : (c.values[n - 1] ?? e) > 0 ? 1 - e / (c.values[n - 1] ?? e) : 0,
3355
+ cx: b,
3356
+ cy: (i + a) / 2,
3357
+ textColor: _(s)
3358
+ };
3359
+ });
3360
+ return {
3361
+ ...a,
3362
+ plot: p,
3363
+ funnelSegments: C
3364
+ };
3365
+ }
3366
+ function bt(e) {
3367
+ let { spec: t, width: n, height: r, empty: i, frame: a } = e, o = t.sankeyNodes ?? [], c = t.sankeyLinks ?? [];
3368
+ if (!o.length || !c.length) return { ...i };
3369
+ let l = 14 + a.top, u = 14 + a.bottom, d = Math.max(1, n - 10 - 10), f = Math.max(1, r - l - u), p = {
3370
+ x: 10,
3371
+ y: l,
3372
+ w: d,
3373
+ h: f
3374
+ }, m = t.palette ?? s, h = new Map(o.map((e) => [e.id, e])), g = new Set(c.map((e) => e.target)), _ = o.filter((e) => !g.has(e.id)), v = /* @__PURE__ */ new Map();
3375
+ function y(e, t, n) {
3376
+ if (!n.has(e)) {
3377
+ n.add(e), (t > (v.get(e) ?? 0) || !v.has(e)) && v.set(e, t);
3378
+ for (let r of c) r.source === e && y(r.target, t + 1, n);
3379
+ n.delete(e);
3380
+ }
3381
+ }
3382
+ for (let e of _) y(e.id, 0, /* @__PURE__ */ new Set());
3383
+ for (let e of o) v.has(e.id) || v.set(e.id, 0);
3384
+ let b = Math.max(...v.values()) + 1, x = b > 1 ? (d - 14 * b) / (b - 1) : 0, S = /* @__PURE__ */ new Map(), C = /* @__PURE__ */ new Map();
3385
+ for (let e of c) S.set(e.target, (S.get(e.target) ?? 0) + e.value), C.set(e.source, (C.get(e.source) ?? 0) + e.value);
3386
+ let w = /* @__PURE__ */ new Map();
3387
+ for (let e of o) {
3388
+ let t = v.get(e.id) ?? 0, n = w.get(t) ?? [];
3389
+ n.push(e.id), w.set(t, n);
3390
+ }
3391
+ let T = 0;
3392
+ for (let e of w.values()) {
3393
+ let t = e.reduce((e, t) => e + Math.max(S.get(t) ?? 0, C.get(t) ?? 0), 0);
3394
+ t > T && (T = t);
3395
+ }
3396
+ if (T === 0) return {
3397
+ ...i,
3398
+ plot: p
3399
+ };
3400
+ let E = (f - 64) / T, D = [];
3401
+ for (let [e, t] of w) {
3402
+ let n = t.map((e) => Math.max(8, Math.max(S.get(e) ?? 0, C.get(e) ?? 0) * E)), r = l + (f - (n.reduce((e, t) => e + t, 0) + 8 * (t.length - 1))) / 2, i = 10 + e * (14 + x);
3403
+ t.forEach((t, a) => {
3404
+ let o = h.get(t), s = n[a];
3405
+ D.push({
3406
+ id: t,
3407
+ label: o.label ?? t,
3408
+ color: o.color ?? m[D.length % m.length],
3409
+ x: i,
3410
+ y: r,
3411
+ w: 14,
3412
+ h: s,
3413
+ column: e,
3414
+ totalIn: S.get(t) ?? 0,
3415
+ totalOut: C.get(t) ?? 0
3416
+ }), r += s + 8;
3417
+ });
3418
+ }
3419
+ let O = new Map(D.map((e) => [e.id, e])), k = /* @__PURE__ */ new Map(), A = /* @__PURE__ */ new Map(), j = [], M = c.slice().sort((e, t) => t.value - e.value);
3420
+ for (let e of M) {
3421
+ let t = O.get(e.source), n = O.get(e.target);
3422
+ if (!t || !n) continue;
3423
+ let r = Math.max(1, e.value * E), i = t.y + (A.get(t.id) ?? 0) + r / 2, a = n.y + (k.get(n.id) ?? 0) + r / 2;
3424
+ A.set(t.id, (A.get(t.id) ?? 0) + r), k.set(n.id, (k.get(n.id) ?? 0) + r);
3425
+ let o = t.x + t.w, s = n.x, c = (o + s) / 2, l = `M${o},${i} C${c},${i} ${c},${a} ${s},${a}`;
3426
+ j.push({
3427
+ path: l,
3428
+ color: e.color ?? t.color,
3429
+ width: r,
3430
+ source: e.source,
3431
+ target: e.target,
3432
+ value: e.value
3433
+ });
3434
+ }
3435
+ return {
3436
+ ...i,
3437
+ plot: p,
3438
+ sankeyNodes: D,
3439
+ sankeyLinks: j
3440
+ };
3441
+ }
3442
+ //#endregion
3443
+ //#region ../grid/dist/chart-grid.js
3444
+ function xt(e) {
3445
+ let { spec: t, width: n, height: r, theme: a, empty: o, frame: s } = e, c = t.calendarValues ?? [];
3446
+ if (!c.length && !t.calendarStart) return { ...o };
3447
+ let l = /* @__PURE__ */ new Map(), u = Infinity, d = -Infinity;
3448
+ for (let e of c) l.set(e.date, e.value), Number.isFinite(e.value) && (e.value < u && (u = e.value), e.value > d && (d = e.value));
3449
+ u === Infinity && (u = 0, d = 1), u === d && (d = u + 1);
3450
+ let f = m(t.colorScale, u, d, a), p = (e) => h(f, (e - u) / (d - u)), g = c.map((e) => e.date).sort(), _ = t.calendarStart ?? g[0] ?? "2026-01-01", v = t.calendarEnd ?? g[g.length - 1] ?? _, y = /* @__PURE__ */ new Date(_ + "T00:00:00Z"), b = /* @__PURE__ */ new Date(v + "T00:00:00Z");
3451
+ y.setUTCDate(y.getUTCDate() - y.getUTCDay()), b.setUTCDate(b.getUTCDate() + (6 - b.getUTCDay()));
3452
+ let x = Math.round((b.getTime() - y.getTime()) / 864e5) + 1, S = Math.ceil(x / 7), C = 26 + s.top, w = 16 + s.bottom, T = Math.max(1, n - 36 - 80), E = Math.max(1, r - C - w), D = Math.floor(T / S), O = Math.floor(E / 7), k = Math.max(6, Math.min(D, O)), A = {
3453
+ x: 36,
3454
+ y: C,
3455
+ w: k * S,
3456
+ h: k * 7
3457
+ }, j = [], M = -1, N = [];
3458
+ for (let e = 0; e < x; e += 1) {
3459
+ let t = new Date(y.getTime() + e * 864e5), n = Math.floor(e / 7), r = e % 7, i = t.toISOString().slice(0, 10), a = l.has(i), o = l.get(i) ?? 0;
3460
+ j.push({
3461
+ x: 36 + n * k,
3462
+ y: C + r * k,
3463
+ size: k,
3464
+ date: i,
3465
+ value: o,
3466
+ defined: a,
3467
+ color: a ? p(o) : "transparent"
3468
+ }), t.getUTCDate() === 1 && t.getUTCMonth() !== M && i >= _ && i <= v && (M = t.getUTCMonth(), N.push({
3469
+ label: t.toLocaleDateString(void 0, { month: "short" }),
3470
+ x: 36 + n * k
3471
+ }));
3472
+ }
3473
+ let P = Array.from({ length: 5 }, (e, n) => {
3474
+ let r = n / 4, a = St(u, d, r);
3475
+ return {
3476
+ value: a,
3477
+ color: p(a),
3478
+ label: i(a, t.valueFormat, t)
3479
+ };
3480
+ });
3481
+ return {
3482
+ ...o,
3483
+ plot: A,
3484
+ calendarCells: j,
3485
+ calendarMonthTicks: N,
3486
+ calendarLegend: P
3487
+ };
3488
+ }
3489
+ function St(e, t, n) {
3490
+ let r = e + (t - e) * n, i = Math.abs(t - e) / 4;
3491
+ if (!(i > 0)) return r;
3492
+ let a = i >= 1 ? 0 : Math.min(6, Math.ceil(-Math.log10(i)) + 1);
3493
+ return Number(r.toFixed(a));
3494
+ }
3495
+ function Ct(e) {
3496
+ let { spec: t, series: n, width: r, height: a, theme: o, empty: s, frame: l } = e;
3497
+ if (!n.length || !t.categories.length) return {
3498
+ ...s,
3499
+ plot: {
3500
+ x: 0,
3501
+ y: 0,
3502
+ w: r,
3503
+ h: a
3504
+ }
3505
+ };
3506
+ let u = n.reduce((e, t) => Math.max(e, t.label.length), 0), d = 12 + Math.min(180, Math.max(60, u * 7)), f = 12 + l.top, p = 32 + l.bottom, g = Math.max(1, r - d - 64), v = Math.max(1, a - f - p), y = {
3507
+ x: d,
3508
+ y: f,
3509
+ w: g,
3510
+ h: v
3511
+ }, b = g / t.categories.length, x = v / n.length, S = Infinity, C = -Infinity;
3512
+ for (let e of n) for (let t of e.values) Number.isFinite(t) && (t < S && (S = t), t > C && (C = t));
3513
+ S === Infinity && (S = 0, C = 1), S === C && (C = S + 1);
3514
+ let w = m(t.colorScale, S, C, o), T = (e) => h(w, (e - S) / (C - S)), E = [];
3515
+ n.forEach((e, n) => {
3516
+ e.values.forEach((r, i) => {
3517
+ if (!Number.isFinite(r)) return;
3518
+ let a = T(r);
3519
+ E.push({
3520
+ x: c(d + b * i),
3521
+ y: c(f + x * n),
3522
+ w: c(b),
3523
+ h: c(x),
3524
+ color: a,
3525
+ textColor: _(a),
3526
+ value: r,
3527
+ rowLabel: e.label,
3528
+ colLabel: t.categories[i] ?? ""
3529
+ });
3530
+ });
3531
+ });
3532
+ let D = n.map((e, t) => ({
3533
+ value: t,
3534
+ y: c(f + x * t + x / 2),
3535
+ label: e.label
3536
+ })), O = k(t.categories, (e) => c(d + b * e + b / 2), b, !1), A = Array.from({ length: 5 }, (e, n) => {
3537
+ let r = n / 4, a = St(S, C, r);
3538
+ return {
3539
+ value: a,
3540
+ color: T(a),
3541
+ label: i(a, t.valueFormat, t)
3542
+ };
3543
+ });
3544
+ return {
3545
+ ...s,
3546
+ plot: y,
3547
+ heatmapCells: E,
3548
+ heatmapRowTicks: D,
3549
+ heatmapColTicks: O,
3550
+ heatmapLegend: A
3551
+ };
3552
+ }
3553
+ //#endregion
3554
+ //#region ../grid/dist/chart-hierarchy.js
3555
+ function wt(e) {
3556
+ let { spec: t, width: n, height: r, empty: i, frame: a } = e, o = t.treemap ?? t.tree;
3557
+ if (!o) return { ...i };
3558
+ let l = 4 + a.top, u = 4 + a.bottom, d = Math.max(1, n - 4 - 4), f = Math.max(1, r - l - u), p = {
3559
+ x: 4,
3560
+ y: l,
3561
+ w: d,
3562
+ h: f
3563
+ }, m = t.palette ?? s, h = [];
3564
+ function g(e) {
3565
+ return e.children?.length ? e.children.reduce((e, t) => e + g(t), 0) : Math.max(0, e.value ?? 0);
3566
+ }
3567
+ function v(e, t, n, r, i, a) {
3568
+ if (!e.length || r <= 0 || i <= 0) return;
3569
+ let o = e.map(g), s = o.reduce((e, t) => e + t, 0);
3570
+ if (s <= 0) return;
3571
+ let l = e.map((e, t) => ({
3572
+ node: e,
3573
+ value: o[t]
3574
+ })).sort((e, t) => t.value - e.value), u = t, d = n, f = r, p = i, y = s, b = [], x = (e, t, n, r) => {
3575
+ if (n <= 0) return Infinity;
3576
+ let i = n * r / t, a = 0;
3577
+ for (let n of e) {
3578
+ let e = n * r / i, o = Math.max(t / e, e / t);
3579
+ o > a && (a = o);
3580
+ }
3581
+ return a;
3582
+ };
3583
+ function S() {
3584
+ if (!b.length) return;
3585
+ let e = b.reduce((e, t) => e + t.value, 0), t = f * p / y, n = f >= p, r = n ? p : f, i = e * t / r, o = 0;
3586
+ for (let e of b) {
3587
+ let r = e.value * t / i, s = n ? u : u + o, l = n ? d + o : d, f = n ? i : r, p = n ? r : i, g = e.node.color ?? m[(a + h.length) % m.length];
3588
+ if (e.node.children?.length) {
3589
+ h.push({
3590
+ x: c(s),
3591
+ y: c(l),
3592
+ w: c(f),
3593
+ h: c(p),
3594
+ color: g,
3595
+ textColor: _(g),
3596
+ name: e.node.name,
3597
+ value: e.value,
3598
+ depth: a
3599
+ });
3600
+ let t = Math.min(18, p * .25);
3601
+ v(e.node.children, s + 1, l + t, f - 2, p - t - 1, a + 1);
3602
+ } else h.push({
3603
+ x: c(s),
3604
+ y: c(l),
3605
+ w: c(f),
3606
+ h: c(p),
3607
+ color: g,
3608
+ textColor: _(g),
3609
+ name: e.node.name,
3610
+ value: e.value,
3611
+ depth: a
3612
+ });
3613
+ o += r;
3614
+ }
3615
+ n ? (u += i, f -= i) : (d += i, p -= i), y -= e, b = [];
3616
+ }
3617
+ for (let e of l) {
3618
+ let t = f * p / y, n = Math.min(f, p), 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);
3619
+ b.length && a > i && S(), b.push(e);
3620
+ }
3621
+ S();
3622
+ }
3623
+ return v(o.children ?? [o], 4, l, d, f, 0), {
3624
+ ...i,
3625
+ plot: p,
3626
+ treemapCells: h
3627
+ };
3628
+ }
3629
+ function Tt(e, t) {
3630
+ let n = e;
3631
+ for (let e of t) if (n = n?.children?.find((t) => t.name === e), !n) return null;
3632
+ return n ?? null;
3633
+ }
3634
+ function Et(e, t) {
3635
+ let n = (e, r) => {
3636
+ for (let i of e.children ?? []) {
3637
+ let e = [...r, i.name];
3638
+ if (i.name === t) return e;
3639
+ let a = n(i, e);
3640
+ if (a) return a;
3641
+ }
3642
+ return null;
3643
+ };
3644
+ return n(e, []);
3645
+ }
3646
+ //#endregion
3647
+ //#region ../grid/dist/chart-pivot.js
3648
+ var Dt = /* @__PURE__ */ new Set([
3649
+ "scatter",
3650
+ "gauge",
3651
+ "boxplot",
3652
+ "histogram",
3653
+ "range-bar",
3654
+ "range-area",
3655
+ "dumbbell",
3656
+ "bullet",
3657
+ "candlestick",
3658
+ "ohlc"
3659
+ ]);
3660
+ function Ot(e) {
3661
+ return !e || Dt.has(e) ? "bar" : e;
3662
+ }
3663
+ function kt(e, t, n) {
3664
+ let r = e[e.length - 1];
3665
+ return r && t.find((e) => n(e.id) === r)?.id || null;
3666
+ }
3667
+ function At(e, t, n) {
3668
+ let r = [], i = /* @__PURE__ */ new Map(), a = /* @__PURE__ */ new Map();
3669
+ for (let t of e) {
3670
+ let e = i.get(t.category);
3671
+ e === void 0 && (e = r.length, i.set(t.category, e), r.push(t.category));
3672
+ let o = n ? t.series ?? "" : "value", s = a.get(o);
3673
+ s || (s = [], a.set(o, s)), s[e] = (s[e] ?? 0) + t.value;
3674
+ }
3675
+ return {
3676
+ type: t,
3677
+ categories: r,
3678
+ series: [...a.entries()].map(([e, t]) => ({
3679
+ label: e,
3680
+ values: r.map((e, n) => t[n] ?? 0)
3681
+ }))
3682
+ };
3683
+ }
3684
+ function jt(e) {
3685
+ if (!e) return {};
3686
+ let t = Array.isArray(e.locales) ? e.locales[0] : e.locales, n = t ? { locale: t } : {};
3687
+ return e.type === "number" ? {
3688
+ ...n,
3689
+ valueFormat: "number"
3690
+ } : e.type === "currency" ? {
3691
+ ...n,
3692
+ valueFormat: "currency",
3693
+ currency: e.currency ?? "USD"
3694
+ } : e.type === "percent" ? e.valueIsPercentPoints ? {
3695
+ ...n,
3696
+ yAxis: { formatter: (e) => `${e}%` }
3697
+ } : {
3698
+ ...n,
3699
+ valueFormat: "percent"
3700
+ } : {};
3701
+ }
3702
+ function Mt(e, t = {}) {
3703
+ let n = Ot(t.type), r = e.rows.filter((e) => e.__pivotKind === "leaf");
3704
+ r.length || (r = e.rows.filter((e) => e.__pivotKind === "grandTotal")), r.length || (r = e.rows.slice()), t.maxCategories && r.length > t.maxCategories && (r = r.slice(0, t.maxCategories));
3705
+ let i = new Map(e.rows.map((e) => [e.__pivotId, e])), a = (e) => String(e.__pivotLabel ?? "").trim() || "(blank)", o = r.map(a), s = (e) => e.__pivotParentId ? i.get(e.__pivotParentId) : void 0, c = r.length > 0 && r.every((e) => s(e) !== void 0), l;
3706
+ if (c) {
3707
+ l = [];
3708
+ let e;
3709
+ for (let t of r) {
3710
+ let n = t.__pivotParentId, r = l[l.length - 1];
3711
+ r && n === e ? r.span += 1 : (l.push({
3712
+ label: a(s(t)),
3713
+ span: 1
3714
+ }), e = n);
3715
+ }
3716
+ }
3717
+ let u = [], d = (e, n) => {
3718
+ for (let r of e ?? []) !r || r.id === "__pivotRowHeader" || !t.includeTotals && typeof r.id == "string" && r.id.startsWith("pv_group__grand") || (Array.isArray(r.columns) ? d(r.columns, [...n, String(r.header ?? "")]) : typeof r.id == "string" && u.push({
3719
+ id: r.id,
3720
+ path: n,
3721
+ header: String(r.header ?? "")
3722
+ }));
3723
+ };
3724
+ d(e.columns, []);
3725
+ let f = t.includeTotals ? u : u.filter((e) => !e.id.includes("__total")), p = new Set(f.map((e) => e.header)), m = f.map((e) => ({
3726
+ label: e.path.length === 0 ? e.header : p.size > 1 ? [...e.path, e.header].join(" · ") : e.path.join(" · "),
3727
+ values: r.map((t) => {
3728
+ let n = t[e.id];
3729
+ return n == null || n === "" ? NaN : typeof n == "number" ? n : Number(n);
3730
+ })
3731
+ })), h = p.size === 1 && f.length ? f[0].header : "", g = t.yAxisTitle === void 0 ? h : t.yAxisTitle, _ = (t.measures ?? []).map((e) => e.format), v = _[0] && _.every((e) => e && JSON.stringify(e) === JSON.stringify(_[0])) ? _[0] : void 0, y = jt(t.format ?? v);
3732
+ return {
3733
+ type: n,
3734
+ categories: o,
3735
+ series: m,
3736
+ ...l && l.length > 1 ? { categoryGroups: l } : {},
3737
+ ...t.stacked || t.stacked100 ? { stacked: !0 } : {},
3738
+ ...t.stacked100 ? { stacked100: !0 } : {},
3739
+ ...t.palette ? { palette: t.palette } : {},
3740
+ ...y,
3741
+ ...g ? { yAxis: {
3742
+ ...y.yAxis,
3743
+ title: g
3744
+ } } : {}
3745
+ };
3746
+ }
3747
+ //#endregion
3748
+ //#region ../grid/dist/chart.js
3749
+ var Nt = /* @__PURE__ */ n({
3750
+ CHART_RESPONSIVE_PRESETS: () => Kt,
3751
+ DEFAULT_PALETTE: () => s,
3752
+ PER_CATEGORY_SERIES_KEYS: () => K,
3753
+ PER_CATEGORY_SPEC_KEYS: () => pe,
3754
+ applyChartFormat: () => qt,
3755
+ arcPath: () => Z,
3756
+ atr: () => we,
3757
+ binValues: () => ae,
3758
+ bollingerBands: () => ve,
3759
+ boxStats: () => j,
3760
+ bucketStart: () => U,
3761
+ bucketsToChartSpec: () => At,
3762
+ buildChart: () => Lt,
3763
+ buildLinePath: () => Ve,
3764
+ chartScales: () => G,
3765
+ chartStyleVars: () => Pt,
3766
+ computeOverlay: () => De,
3767
+ computeOverlayFit: () => Oe,
3768
+ decimateSpec: () => ge,
3769
+ exponentialFit: () => ee,
3770
+ exponentialMovingAverage: () => V,
3771
+ formatChartValue: () => i,
3772
+ guessOhlcColumns: () => Le,
3773
+ heikinAshi: () => Fe,
3774
+ indicatorPane: () => Pe,
3775
+ layoutDataLabels: () => Ze,
3776
+ linearFit: () => R,
3777
+ linearTrend: () => a,
3778
+ logarithmicFit: () => te,
3779
+ lttb: () => me,
3780
+ macd: () => be,
3781
+ markerPath: () => Je,
3782
+ matchResponsiveRules: () => Ft,
3783
+ minMaxIndices: () => J,
3784
+ niceLogScale: () => v,
3785
+ niceScale: () => x,
3786
+ obv: () => Ee,
3787
+ ohlcDirectOptions: () => Re,
3788
+ ordinalDateTicks: () => T,
3789
+ overlayName: () => Ae,
3790
+ paretoSpec: () => Bt,
3791
+ pearson: () => o,
3792
+ percentile: () => H,
3793
+ pickCategories: () => q,
3794
+ pickContrastText: () => _,
3795
+ pivotChartType: () => Ot,
3796
+ pivotFilterColumn: () => kt,
3797
+ pivotResultToChartSpec: () => Mt,
3798
+ polynomialFit: () => L,
3799
+ powerFit: () => ne,
3800
+ rSquared: () => P,
3801
+ reduceValues: () => ie,
3802
+ regressionFit: () => ke,
3803
+ resampleOhlc: () => Ie,
3804
+ resolveResponsive: () => It,
3805
+ rowsToBoxSpec: () => Yt,
3806
+ rowsToChartSpec: () => zt,
3807
+ rowsToDirectSpec: () => Jt,
3808
+ rowsToGaugeSpec: () => Zt,
3809
+ rowsToHistogramSpec: () => Vt,
3810
+ rowsToOhlcSpec: () => Be,
3811
+ rowsToRangeSpec: () => Ht,
3812
+ rowsToScatterSpec: () => Xt,
3813
+ rsi: () => ye,
3814
+ sampleGradient: () => h,
3815
+ simpleMovingAverage: () => B,
3816
+ sliceChartWindow: () => Rt,
3817
+ specToCalendar: () => Wt,
3818
+ specToSankey: () => Gt,
3819
+ specToTreemap: () => Ut,
3820
+ splitPanelIndicators: () => ze,
3821
+ stochastic: () => Te,
3822
+ streamBaseline: () => Ke,
3823
+ vwap: () => Se,
3824
+ wma: () => _e
3825
+ });
3826
+ function Pt(e) {
3827
+ if (!e) return "";
3828
+ let t = [];
3829
+ return e.background && t.push(`--sg-chart-bg:${e.background}`, `--sg-bg:${e.background}`), e.textColor && t.push(`--sg-fg:${e.textColor}`, `--sg-muted:${e.textColor}`), e.gridColor && t.push(`--sg-border:${e.gridColor}`), e.fontSize && Number.isFinite(e.fontSize) && e.fontSize > 0 && t.push(`--sg-chart-font-scale:${Math.round(e.fontSize / 12 * 1e3) / 1e3}`), e.fontFamily && t.push(`font-family:${e.fontFamily}`), t.join(";");
3830
+ }
3831
+ function Ft(e, t, n) {
3832
+ return e?.length ? e.filter((e) => (e.maxWidth == null || t <= e.maxWidth) && (e.minWidth == null || t >= e.minWidth) && (e.maxHeight == null || n <= e.maxHeight)) : [];
3833
+ }
3834
+ function It(e, t, n) {
3835
+ let r = Ft(e.responsive, t, n);
3836
+ if (!r.length) return e;
3837
+ let i = e;
3838
+ for (let e of r) {
3839
+ if (!e.spec) continue;
3840
+ let { width: t, height: n, responsive: r, ...a } = e.spec, o = {
3841
+ ...i,
3842
+ ...a
3843
+ };
3844
+ for (let e of [
3845
+ "xAxis",
3846
+ "yAxis",
3847
+ "y2Axis"
3848
+ ]) a[e] && (o[e] = {
3849
+ ...i[e] ?? {},
3850
+ ...a[e]
3851
+ });
3852
+ i = o;
3853
+ }
3854
+ return i;
3855
+ }
3856
+ function Lt(e, t = "light") {
3857
+ let n = e.width ?? 520, r = e.height ?? 300, i = It(e, n, r);
3858
+ if (i.type === "pareto") return Lt(Bt(i), t);
3859
+ let a = i.palette ?? s, o = !!(i.stacked || i.stacked100), c = i.series.map((e, t) => ({
3860
+ ...e,
3861
+ values: (e.nullAs ?? i.nullAs) === "zero" ? e.values.map((e) => Number.isFinite(e) ? e : 0) : e.values,
3862
+ color: e.color ?? a[t % a.length],
3863
+ kind: W(e, i.type),
3864
+ axis: e.axis ?? "left"
3865
+ })), l = de(i, n, r), u = se(i), d = c.map((e) => ({
3866
+ label: e.label,
3867
+ color: e.color
3868
+ })), f = {
3869
+ spec: i,
3870
+ theme: t,
3871
+ width: n,
3872
+ height: r,
3873
+ palette: a,
3874
+ stacked: o,
3875
+ series: c,
3876
+ legend: d,
3877
+ empty: {
3878
+ type: i.type,
3879
+ width: n,
3880
+ height: r,
3881
+ plot: {
3882
+ x: 0,
3883
+ y: 0,
3884
+ w: n,
3885
+ h: r
3886
+ },
3887
+ axes: null,
3888
+ frame: l,
3889
+ grid: {
3890
+ x: !1,
3891
+ y: !1
3892
+ },
3893
+ referenceBands: [],
3894
+ bars: [],
3895
+ candles: [],
3896
+ boxes: [],
3897
+ errorBars: [],
3898
+ stems: [],
3899
+ arcs: [],
3900
+ chordRibbons: [],
3901
+ bullets: [],
3902
+ drawings: [],
3903
+ seriesLabels: [],
3904
+ polarAxes: [],
3905
+ polarRings: [],
3906
+ lines: [],
3907
+ slices: [],
3908
+ yTicks: [],
3909
+ y2Ticks: [],
3910
+ hasRightAxis: !1,
3911
+ xTicks: [],
3912
+ categoryGroupTicks: [],
3913
+ xLabelRotated: !1,
3914
+ xLabelAngle: 0,
3915
+ legend: d,
3916
+ donut: null,
3917
+ referenceLines: [],
3918
+ scatterPoints: [],
3919
+ orientation: "vertical",
3920
+ valueTicks: [],
3921
+ catTicks: [],
3922
+ referenceLinesV: [],
3923
+ overlays: [],
3924
+ annotations: [],
3925
+ heatmapCells: [],
3926
+ heatmapRowTicks: [],
3927
+ heatmapColTicks: [],
3928
+ heatmapLegend: [],
3929
+ funnelSegments: [],
3930
+ radarRings: [],
3931
+ radarAxes: [],
3932
+ radarSeries: [],
3933
+ radarCenter: null,
3934
+ treemapCells: [],
3935
+ calendarCells: [],
3936
+ calendarMonthTicks: [],
3937
+ calendarLegend: [],
3938
+ gauge: null,
3939
+ sankeyNodes: [],
3940
+ sankeyLinks: []
3941
+ },
3942
+ frame: l,
3943
+ axes: u
3944
+ };
3945
+ return i.type === "waterfall" ? vt(f) : i.type === "funnel" ? yt(f) : i.type === "radar" ? ct(f) : i.type === "calendar" ? xt(f) : i.type === "gauge" ? lt(f) : i.type === "treemap" ? wt(f) : i.type === "sankey" ? bt(f) : i.type === "heatmap" ? Ct(f) : i.type === "pie" ? ut(f) : i.type === "scatter" ? nt(f) : i.type === "sunburst" ? mt(f) : i.type === "radial-bar" ? ht(f) : i.type === "radial-column" || i.type === "nightingale" ? gt(f) : i.type === "chord" ? _t(f) : i.type === "bullet" ? st(f) : i.orientation === "horizontal" && i.type !== "histogram" && c.length > 0 && c.every((e) => e.kind === "bar") ? rt(f) : it(f);
3946
+ }
3947
+ function Rt(e, t, n) {
3948
+ let r = Math.max(0, t), i = Math.min(e.categories.length - 1, n);
3949
+ if (i < r) return {
3950
+ ...e,
3951
+ categories: [],
3952
+ series: e.series.map((e) => ({
3953
+ ...e,
3954
+ values: []
3955
+ }))
3956
+ };
3957
+ let a = Array(i - r + 1);
3958
+ for (let e = r; e <= i; e += 1) a[e - r] = e;
3959
+ return q(e, a);
3960
+ }
3961
+ function zt(e, t) {
3962
+ let n = t.reduce ?? "sum", r = re(n), i = Array.isArray(t.value) ? t.value : [t.value], a = (e) => r ? ie(e.samples, n) : n === "count" ? e.count : n === "avg" ? e.count ? e.sum / e.count : 0 : e.sum, o = [], s = /* @__PURE__ */ new Map(), c = (e) => {
3963
+ let t = s.get(e);
3964
+ return t === void 0 && (t = o.length, s.set(e, t), o.push(e)), t;
3965
+ }, l = /* @__PURE__ */ new Map(), u = (e) => {
3966
+ let t = l.get(e);
3967
+ return t || (t = [], l.set(e, t)), t;
3968
+ }, d = (e, t, n) => {
3969
+ e.sum += t, e.count += 1, r && e.samples.push(t), n !== void 0 && e.rowIds.push(n);
3970
+ }, f = () => ({
3971
+ sum: 0,
3972
+ count: 0,
3973
+ rowIds: [],
3974
+ samples: []
3975
+ }), p = t.idField !== void 0;
3976
+ for (let n of e) {
3977
+ let e = n[t.category], r = t.bucket ? U(e, t.bucket) : String(e ?? "");
3978
+ if (t.bucket && !r) continue;
3979
+ let a = c(r), o = p ? n[t.idField] : void 0;
3980
+ if (t.series) {
3981
+ let e = u(String(n[t.series] ?? "")), r = Number(n[i[0]]), s = e[a] ?? (e[a] = f());
3982
+ Number.isFinite(r) && d(s, r, o);
3983
+ } else for (let e of i) {
3984
+ let t = u(e), r = Number(n[e]), i = t[a] ?? (t[a] = f());
3985
+ Number.isFinite(r) && d(i, r, o);
3986
+ }
3987
+ }
3988
+ let m = [...l.entries()].map(([e, n]) => ({
3989
+ label: t.series ? e : t.seriesLabel && i.length === 1 ? t.seriesLabel : e,
3990
+ values: o.map((e, t) => a(n[t] ?? f())),
3991
+ rowIds: p ? o.map((e, t) => (n[t]?.rowIds ?? []).slice()) : void 0
3992
+ })), h = o.map((e, t) => m.reduce((e, n) => e + (Number.isFinite(n.values[t]) ? n.values[t] : 0), 0)), g = t.sort ?? (t.topN ? "value-desc" : t.bucket ? "category" : "none"), _ = o.map((e, t) => t);
3993
+ g === "value-desc" ? _.sort((e, t) => h[t] - h[e]) : g === "value-asc" ? _.sort((e, t) => h[e] - h[t]) : g === "category" && _.sort((e, t) => o[e].localeCompare(o[t]));
3994
+ let v, y;
3995
+ if (t.topN && _.length > t.topN) {
3996
+ let e = t.otherLabel ?? "Other", n = _.find((t) => o[t] === e), r = _.slice(0, t.topN).filter((e) => e !== n), i = _.filter((e) => !r.includes(e));
3997
+ v = r.map((e) => o[e]).concat(e), y = m.map((e) => ({
3998
+ label: e.label,
3999
+ values: r.map((t) => e.values[t]).concat(i.reduce((t, n) => t + (Number.isFinite(e.values[n]) ? e.values[n] : 0), 0)),
4000
+ rowIds: e.rowIds ? r.map((t) => e.rowIds[t]).concat([i.flatMap((t) => e.rowIds[t] ?? [])]) : void 0
4001
+ }));
4002
+ } else v = _.map((e) => o[e]), y = m.map((e) => ({
4003
+ label: e.label,
4004
+ values: _.map((t) => e.values[t]),
4005
+ rowIds: e.rowIds ? _.map((t) => e.rowIds[t]) : void 0
4006
+ }));
4007
+ return {
4008
+ type: t.type,
4009
+ categories: v,
4010
+ series: y,
4011
+ width: t.width,
4012
+ height: t.height,
4013
+ stacked: t.stacked,
4014
+ stacked100: t.stacked100,
4015
+ palette: t.palette,
4016
+ ...t.bucket ? { xType: "ordinal-time" } : {}
4017
+ };
4018
+ }
4019
+ function Bt(e, t = 80) {
4020
+ let n = e.series[0];
4021
+ if (!n) return {
4022
+ ...e,
4023
+ type: "bar"
4024
+ };
4025
+ let r = q(e, e.categories.map((e, t) => t).sort((e, t) => (n.values[t] ?? 0) - (n.values[e] ?? 0))), i = r.series[0].values.map((e) => Number.isFinite(e) ? Math.max(0, e) : 0), a = i.reduce((e, t) => e + t, 0) || 1, o = 0, s = i.map((e) => (o += e, Math.round(o / a * 1e3) / 10));
4026
+ return {
4027
+ ...r,
4028
+ type: "bar",
4029
+ series: [{
4030
+ ...r.series[0],
4031
+ type: "bar"
4032
+ }, {
4033
+ label: "Cumulative %",
4034
+ values: s,
4035
+ type: "line",
4036
+ axis: "right",
4037
+ marker: "circle",
4038
+ color: r.series[0].overlayColor ?? "#ef4444"
4039
+ }],
4040
+ y2Axis: {
4041
+ min: 0,
4042
+ max: 100,
4043
+ tickInterval: 25,
4044
+ formatter: (e) => `${e}%`,
4045
+ ...e.y2Axis ?? {}
4046
+ },
4047
+ referenceLines: [...e.referenceLines ?? [], ...t > 0 ? [{
4048
+ value: t,
4049
+ axis: "right",
4050
+ label: `${t}%`,
4051
+ dashed: !0
4052
+ }] : []]
4053
+ };
4054
+ }
4055
+ function Vt(e, t) {
4056
+ let n = ae(e.map((e) => Number(e[t.value])).filter(Number.isFinite), {
4057
+ bins: t.bins,
4058
+ binWidth: t.binWidth,
4059
+ method: t.method,
4060
+ min: t.min,
4061
+ max: t.max
4062
+ }), r = (t.series ? [...new Set(e.map((e) => String(e[t.series] ?? "")))].map((n) => ({
4063
+ label: n,
4064
+ rows: e.filter((e) => String(e[t.series] ?? "") === n)
4065
+ })) : [{
4066
+ label: t.seriesLabel ?? String(t.value),
4067
+ rows: e
4068
+ }]).map((e) => {
4069
+ let r = Array(n.counts.length).fill(0), i = n.edges[0] ?? 0;
4070
+ for (let a of e.rows) {
4071
+ let e = Number(a[t.value]);
4072
+ if (!Number.isFinite(e) || !n.width) continue;
4073
+ let o = Math.floor((e - i) / n.width);
4074
+ o >= r.length && (o = r.length - 1), o < 0 && (o = 0), r[o] = (r[o] ?? 0) + 1;
4075
+ }
4076
+ return {
4077
+ label: e.label,
4078
+ values: r
4079
+ };
4080
+ });
4081
+ return {
4082
+ type: "histogram",
4083
+ categories: n.categories,
4084
+ series: r,
4085
+ binEdges: n.edges,
4086
+ xType: "number",
4087
+ ...t.palette ? { palette: t.palette } : {},
4088
+ ...t.width ? { width: t.width } : {},
4089
+ ...t.height ? { height: t.height } : {}
4090
+ };
4091
+ }
4092
+ function Ht(e, t) {
4093
+ let n = [], r = /* @__PURE__ */ new Set();
4094
+ for (let i of e) {
4095
+ let e = String(i[t.category] ?? "");
4096
+ r.has(e) || (r.add(e), n.push(e));
4097
+ }
4098
+ let i = (t.series ? [...new Set(e.map((e) => String(e[t.series] ?? "")))] : [t.seriesLabel ?? `${String(t.low)} to ${String(t.high)}`]).map((r) => {
4099
+ let i = Array(n.length).fill(NaN), a = Array(n.length).fill(NaN);
4100
+ for (let o of e) {
4101
+ if (t.series && String(o[t.series] ?? "") !== r) continue;
4102
+ let e = n.indexOf(String(o[t.category] ?? "")), s = Number(o[t.low]), c = Number(o[t.high]);
4103
+ e < 0 || !Number.isFinite(s) || !Number.isFinite(c) || (i[e] = Math.min(s, c), a[e] = Math.max(s, c));
4104
+ }
4105
+ return {
4106
+ label: r,
4107
+ values: a,
4108
+ lowValues: i
4109
+ };
4110
+ });
4111
+ return {
4112
+ type: t.type ?? "range-bar",
4113
+ categories: n,
4114
+ series: i,
4115
+ ...t.palette ? { palette: t.palette } : {},
4116
+ ...t.width ? { width: t.width } : {},
4117
+ ...t.height ? { height: t.height } : {}
4118
+ };
4119
+ }
4120
+ function Ut(e, t = "Total") {
4121
+ let n = (e) => typeof e == "number" && Number.isFinite(e) && e > 0 ? e : 0;
4122
+ if (e.series.length <= 1) {
4123
+ let r = e.series[0];
4124
+ return {
4125
+ name: t,
4126
+ children: e.categories.map((e, t) => ({
4127
+ name: e,
4128
+ value: n(r?.values[t])
4129
+ })).filter((e) => e.value > 0)
4130
+ };
4131
+ }
4132
+ return {
4133
+ name: t,
4134
+ children: e.categories.map((t, r) => ({
4135
+ name: t,
4136
+ children: e.series.map((e) => ({
4137
+ name: e.label,
4138
+ value: n(e.values[r])
4139
+ })).filter((e) => e.value > 0)
4140
+ })).filter((e) => e.children.length > 0)
4141
+ };
4142
+ }
4143
+ function Wt(e) {
4144
+ let t = e.series[0], n = [];
4145
+ return e.categories.forEach((e, r) => {
4146
+ let i = Date.parse(e);
4147
+ if (!Number.isFinite(i)) return;
4148
+ let a = t?.values[r];
4149
+ typeof a != "number" || !Number.isFinite(a) || n.push({
4150
+ date: new Date(i).toISOString().slice(0, 10),
4151
+ value: a
4152
+ });
4153
+ }), n;
4154
+ }
4155
+ function Gt(e) {
4156
+ let t = [], n = /* @__PURE__ */ new Set();
4157
+ return e.categories.forEach((r, i) => {
4158
+ for (let a of e.series) {
4159
+ let e = a.values[i];
4160
+ if (typeof e != "number" || !Number.isFinite(e) || e <= 0) continue;
4161
+ let o = `from:${r}`, s = `to:${a.label}`;
4162
+ o !== s && (n.add(o), n.add(s), t.push({
4163
+ source: o,
4164
+ target: s,
4165
+ value: e
4166
+ }));
4167
+ }
4168
+ }), {
4169
+ nodes: [...n].map((e) => ({
4170
+ id: e,
4171
+ label: e.slice(e.indexOf(":") + 1)
4172
+ })),
4173
+ links: t
4174
+ };
4175
+ }
4176
+ var Kt = { compact: (e) => ({
4177
+ maxWidth: e,
4178
+ spec: {
4179
+ seriesLabels: !1,
4180
+ dataLabels: { show: !1 },
4181
+ xAxis: { labelRotation: 90 }
4182
+ },
4183
+ legend: !1
4184
+ }) };
4185
+ function qt(e, t) {
4186
+ if (!t) return e;
4187
+ let n = { ...e };
4188
+ t.title !== void 0 && (n.title = t.title || void 0), t.subtitle !== void 0 && (n.subtitle = t.subtitle || void 0), t.caption !== void 0 && (n.caption = t.caption || void 0), t.palette && (n.palette = t.palette), t.seriesLabels !== void 0 && (n.seriesLabels = t.seriesLabels), t.style && (n.style = {
4189
+ ...e.style,
4190
+ ...t.style
4191
+ }), t.compactBelow != null && t.compactBelow > 0 && (n.responsive = [...e.responsive ?? [], Kt.compact(t.compactBelow)]);
4192
+ let r = (e, t) => {
4193
+ if (!t) return e;
4194
+ let n = { ...e };
4195
+ return t.min !== void 0 && (t.min === null ? delete n.min : n.min = t.min), t.max !== void 0 && (t.max === null ? delete n.max : n.max = t.max), t.title !== void 0 && (n.title = t.title || void 0), t.gridLines !== void 0 && (n.gridLines = t.gridLines), t.format !== void 0 && (n.format = t.format), n;
4196
+ };
4197
+ if (t.xAxis) {
4198
+ let e = { ...n.xAxis };
4199
+ t.xAxis.title !== void 0 && (e.title = t.xAxis.title || void 0), t.xAxis.gridLines !== void 0 && (e.gridLines = t.xAxis.gridLines), t.xAxis.labelRotation !== void 0 && (e.labelRotation = t.xAxis.labelRotation), n.xAxis = e;
4200
+ }
4201
+ return t.yAxis && (n.yAxis = r(n.yAxis, t.yAxis)), t.y2Axis && (n.y2Axis = r(n.y2Axis, t.y2Axis)), t.series && (n.series = e.series.map((e) => {
4202
+ let n = t.series[e.label];
4203
+ if (!n) return e;
4204
+ let r = { ...e };
4205
+ return n.color && (r.color = n.color), n.type && (r.type = n.type), n.axis && (r.axis = n.axis), n.marker && (r.marker = n.marker), n.strokeWidth !== void 0 && (r.strokeWidth = n.strokeWidth), n.dash !== void 0 && (r.dash = n.dash || void 0), n.smooth !== void 0 && (r.smooth = n.smooth), n.stack !== void 0 && (r.stack = n.stack || void 0), r;
4206
+ })), n;
4207
+ }
4208
+ function Jt(e, t, n) {
4209
+ let r = n.category, i = n.value, a = n.series;
4210
+ if (e === "candlestick" || e === "ohlc") {
4211
+ let i = n.ohlc;
4212
+ if (!r || !i) return null;
4213
+ let a = (e) => e;
4214
+ return Be(t, {
4215
+ date: r,
4216
+ open: a(i.open),
4217
+ high: a(i.high),
4218
+ low: a(i.low),
4219
+ close: a(i.close),
4220
+ ...i.volume ? { volume: a(i.volume) } : {},
4221
+ ...i.bucket ? { bucket: i.bucket } : {},
4222
+ ...i.candleStyle ? { candleStyle: i.candleStyle } : {},
4223
+ ...i.lastPriceLine ? { lastPriceLine: !0 } : {},
4224
+ type: e
4225
+ });
4226
+ }
4227
+ if (e === "scatter") {
4228
+ let e = n.value2;
4229
+ return !i || !e ? null : Xt(t, {
4230
+ x: i,
4231
+ y: e,
4232
+ ...a ? { series: a } : {},
4233
+ ...n.palette ? { palette: n.palette } : {}
4234
+ });
4235
+ }
4236
+ if (e === "gauge") return i ? Zt(t, {
4237
+ value: i,
4238
+ ...n.reduce ? { reduce: n.reduce } : {}
4239
+ }) : null;
4240
+ if (e === "boxplot") {
4241
+ if (!r || !i) return null;
4242
+ let e = Yt(t, {
4243
+ category: r,
4244
+ value: i,
4245
+ ...a ? { series: a } : {}
4246
+ });
4247
+ return n.palette && (e.palette = n.palette), e;
4248
+ }
4249
+ if (e === "histogram") return i ? Vt(t, {
4250
+ value: i,
4251
+ ...a ? { series: a } : {},
4252
+ ...n.bins ? { bins: n.bins } : {},
4253
+ ...n.palette ? { palette: n.palette } : {}
4254
+ }) : null;
4255
+ if (e === "range-bar" || e === "range-area" || e === "dumbbell") {
4256
+ let o = n.value2;
4257
+ if (!r || !i || !o) return null;
4258
+ let s = zt(t, {
4259
+ type: "bar",
4260
+ category: r,
4261
+ value: i,
4262
+ ...a ? { series: a } : {},
4263
+ reduce: n.reduce ?? "sum"
4264
+ }), c = zt(t, {
4265
+ type: "bar",
4266
+ category: r,
4267
+ value: o,
4268
+ ...a ? { series: a } : {},
4269
+ reduce: n.reduce ?? "sum"
4270
+ });
4271
+ return {
4272
+ type: e,
4273
+ categories: c.categories,
4274
+ series: c.series.map((e, t) => ({
4275
+ ...e,
4276
+ label: a ? e.label : `${String(i)} to ${String(o)}`,
4277
+ lowValues: s.series[t]?.values.map((t, n) => Math.min(t, e.values[n] ?? t)) ?? [],
4278
+ values: e.values.map((e, n) => Math.max(e, s.series[t]?.values[n] ?? e))
4279
+ })),
4280
+ ...n.palette ? { palette: n.palette } : {}
4281
+ };
4282
+ }
4283
+ if (e === "bullet") {
4284
+ if (!r || !i) return null;
4285
+ let e = zt(t, {
4286
+ type: "bar",
4287
+ category: r,
4288
+ value: i,
4289
+ reduce: n.reduce ?? "sum"
4290
+ }), a = n.value2, o = a ? zt(t, {
4291
+ type: "bar",
4292
+ category: r,
4293
+ value: a,
4294
+ reduce: n.reduce ?? "sum"
4295
+ }) : null;
4296
+ return {
4297
+ type: "bullet",
4298
+ categories: e.categories,
4299
+ series: [{
4300
+ ...e.series[0],
4301
+ ...o ? { targets: o.series[0].values } : {}
4302
+ }],
4303
+ ...n.palette ? { palette: n.palette } : {}
4304
+ };
4305
+ }
4306
+ return null;
4307
+ }
4308
+ function Yt(e, t) {
4309
+ let n = [], r = /* @__PURE__ */ new Set();
4310
+ for (let i of e) {
4311
+ let e = String(i[t.category] ?? "");
4312
+ r.has(e) || (r.add(e), n.push(e));
4313
+ }
4314
+ let i = [], a = /* @__PURE__ */ new Set();
4315
+ if (t.series) for (let n of e) {
4316
+ let e = String(n[t.series] ?? "");
4317
+ a.has(e) || (a.add(e), i.push(e));
4318
+ }
4319
+ else i.push(t.seriesLabel ?? String(t.value));
4320
+ return {
4321
+ type: "boxplot",
4322
+ categories: n,
4323
+ series: i.map((r) => {
4324
+ let i = n.map((n) => {
4325
+ let i = [];
4326
+ for (let a of e) {
4327
+ if (String(a[t.category] ?? "") !== n || t.series && String(a[t.series] ?? "") !== r) continue;
4328
+ let e = a[t.value];
4329
+ if (e == null || e === "") continue;
4330
+ let o = Number(e);
4331
+ Number.isFinite(o) && i.push(o);
4332
+ }
4333
+ return j(i, t.whisker);
4334
+ });
4335
+ return {
4336
+ label: r,
4337
+ values: i.map((e) => e ? e.median : NaN),
4338
+ boxes: i
4339
+ };
4340
+ }),
4341
+ ...t.width ? { width: t.width } : {},
4342
+ ...t.height ? { height: t.height } : {}
4343
+ };
4344
+ }
4345
+ function Xt(e, t) {
4346
+ let n = /* @__PURE__ */ new Map();
4347
+ for (let r of e) {
4348
+ let e = Number(r[t.x]), i = Number(r[t.y]);
4349
+ if (!Number.isFinite(e) || !Number.isFinite(i)) continue;
4350
+ let a = t.series ? String(r[t.series] ?? "") : t.y, o = {
4351
+ x: e,
4352
+ y: i
4353
+ };
4354
+ if (t.r) {
4355
+ let e = Number(r[t.r]);
4356
+ Number.isFinite(e) && (o.r = e);
4357
+ }
4358
+ t.label && (o.label = String(r[t.label] ?? ""));
4359
+ let s = n.get(a);
4360
+ s ? s.push(o) : n.set(a, [o]);
4361
+ }
4362
+ return {
4363
+ type: "scatter",
4364
+ categories: [],
4365
+ series: [...n].map(([e, t]) => ({
4366
+ label: e,
4367
+ values: [],
4368
+ points: t
4369
+ })),
4370
+ palette: t.palette,
4371
+ width: t.width,
4372
+ height: t.height,
4373
+ xAxisTitle: t.x,
4374
+ yAxisTitle: t.y
4375
+ };
4376
+ }
4377
+ function Zt(e, t) {
4378
+ let n = [];
4379
+ for (let r of e) {
4380
+ let e = Number(r[t.value]);
4381
+ Number.isFinite(e) && n.push(e);
4382
+ }
4383
+ let r = ie(n, t.reduce ?? "sum"), i = Number.isFinite(r) ? r : 0, a = t.min ?? Math.min(0, i);
4384
+ return {
4385
+ type: "gauge",
4386
+ categories: [],
4387
+ series: [],
4388
+ gaugeValue: i,
4389
+ gaugeMin: a,
4390
+ gaugeMax: t.max ?? (i > a ? x(a, i).max : a + 1),
4391
+ gaugeTarget: t.target,
4392
+ gaugeUnit: t.unit,
4393
+ width: t.width,
4394
+ height: t.height
4395
+ };
4396
+ }
4397
+ //#endregion
4398
+ export { o as A, Ae as C, O as D, s as E, D as O, Pe as S, G as T, Et as _, It as a, Ze as b, Vt as c, Rt as d, Wt as f, Tt as g, Ot as h, Ft as i, i as j, a as k, Ht as l, Ut as m, Pt as n, Yt as o, Gt as p, Nt as r, zt as s, Lt as t, Xt as u, Z as v, ge as w, Je as x, Ve as y };