drizzle-cube 0.4.3 → 0.4.5

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 (91) hide show
  1. package/dist/client/charts.js +13 -13
  2. package/dist/client/chunks/{RetentionCombinedChart-7bGP_ozM.js → RetentionCombinedChart-CEI8KQ3t.js} +2 -2
  3. package/dist/client/chunks/{RetentionCombinedChart-7bGP_ozM.js.map → RetentionCombinedChart-CEI8KQ3t.js.map} +1 -1
  4. package/dist/client/chunks/{analysis-builder-BlCXpnDL.js → analysis-builder-CG5VIMYB.js} +8 -9
  5. package/dist/client/chunks/{analysis-builder-BlCXpnDL.js.map → analysis-builder-CG5VIMYB.js.map} +1 -1
  6. package/dist/client/chunks/{analysis-builder-shared-BOYNJQY8.js → analysis-builder-shared-CjlKJgyA.js} +6 -6
  7. package/dist/client/chunks/{analysis-builder-shared-BOYNJQY8.js.map → analysis-builder-shared-CjlKJgyA.js.map} +1 -1
  8. package/dist/client/chunks/{chart-activity-grid-sUkuCJzm.js → chart-activity-grid-DStNr34n.js} +2 -2
  9. package/dist/client/chunks/{chart-activity-grid-sUkuCJzm.js.map → chart-activity-grid-DStNr34n.js.map} +1 -1
  10. package/dist/client/chunks/{chart-area-C4DIi9k_.js → chart-area-QKKboTbq.js} +3 -3
  11. package/dist/client/chunks/{chart-area-C4DIi9k_.js.map → chart-area-QKKboTbq.js.map} +1 -1
  12. package/dist/client/chunks/{chart-bar-7ZleGCsN.js → chart-bar-HpXF42H1.js} +2 -2
  13. package/dist/client/chunks/{chart-bar-7ZleGCsN.js.map → chart-bar-HpXF42H1.js.map} +1 -1
  14. package/dist/client/chunks/{chart-bubble-D-auWIjP.js → chart-bubble-Bf42A1-B.js} +2 -2
  15. package/dist/client/chunks/{chart-bubble-D-auWIjP.js.map → chart-bubble-Bf42A1-B.js.map} +1 -1
  16. package/dist/client/chunks/{chart-config-markdown-DZxdGNVQ.js → chart-config-markdown-BXKL5TbQ.js} +45 -8
  17. package/dist/client/chunks/chart-config-markdown-BXKL5TbQ.js.map +1 -0
  18. package/dist/client/chunks/{chart-data-table-DW6VNGeW.js → chart-data-table-Ch_1c1Zo.js} +3 -3
  19. package/dist/client/chunks/{chart-data-table-DW6VNGeW.js.map → chart-data-table-Ch_1c1Zo.js.map} +1 -1
  20. package/dist/client/chunks/{chart-funnel-eUJApzmA.js → chart-funnel-C9kenCpp.js} +2 -2
  21. package/dist/client/chunks/{chart-funnel-eUJApzmA.js.map → chart-funnel-C9kenCpp.js.map} +1 -1
  22. package/dist/client/chunks/{chart-heat-map-DR3O3GXx.js → chart-heat-map-CYGemyPB.js} +2 -2
  23. package/dist/client/chunks/{chart-heat-map-DR3O3GXx.js.map → chart-heat-map-CYGemyPB.js.map} +1 -1
  24. package/dist/client/chunks/{chart-kpi-delta-Bp9Yrgyc.js → chart-kpi-delta-CWCmi8vL.js} +3 -3
  25. package/dist/client/chunks/{chart-kpi-delta-Bp9Yrgyc.js.map → chart-kpi-delta-CWCmi8vL.js.map} +1 -1
  26. package/dist/client/chunks/{chart-kpi-number-B3yvgbr-.js → chart-kpi-number-C-5m3qt5.js} +2 -2
  27. package/dist/client/chunks/{chart-kpi-number-B3yvgbr-.js.map → chart-kpi-number-C-5m3qt5.js.map} +1 -1
  28. package/dist/client/chunks/{chart-kpi-text-D0TsUiaO.js → chart-kpi-text--t4ibPmx.js} +3 -3
  29. package/dist/client/chunks/{chart-kpi-text-D0TsUiaO.js.map → chart-kpi-text--t4ibPmx.js.map} +1 -1
  30. package/dist/client/chunks/{chart-line-C7VStgaJ.js → chart-line-C7YcMWBw.js} +3 -3
  31. package/dist/client/chunks/{chart-line-C7VStgaJ.js.map → chart-line-C7YcMWBw.js.map} +1 -1
  32. package/dist/client/chunks/chart-markdown-Rq6ORisB.js +276 -0
  33. package/dist/client/chunks/chart-markdown-Rq6ORisB.js.map +1 -0
  34. package/dist/client/chunks/{chart-pie-DPdYJSM3.js → chart-pie-C4SuxKSN.js} +2 -2
  35. package/dist/client/chunks/{chart-pie-DPdYJSM3.js.map → chart-pie-C4SuxKSN.js.map} +1 -1
  36. package/dist/client/chunks/{chart-radar-DF6VNSiC.js → chart-radar-BW3Z_-Ly.js} +2 -2
  37. package/dist/client/chunks/{chart-radar-DF6VNSiC.js.map → chart-radar-BW3Z_-Ly.js.map} +1 -1
  38. package/dist/client/chunks/{chart-radial-bar-7Ttfz-kO.js → chart-radial-bar-0Fa3aeP5.js} +2 -2
  39. package/dist/client/chunks/{chart-radial-bar-7Ttfz-kO.js.map → chart-radial-bar-0Fa3aeP5.js.map} +1 -1
  40. package/dist/client/chunks/{chart-sankey-D86RYk9B.js → chart-sankey-DBghfbg1.js} +2 -2
  41. package/dist/client/chunks/{chart-sankey-D86RYk9B.js.map → chart-sankey-DBghfbg1.js.map} +1 -1
  42. package/dist/client/chunks/{chart-scatter-BUnIiLr_.js → chart-scatter-DOVu1TNq.js} +2 -2
  43. package/dist/client/chunks/{chart-scatter-BUnIiLr_.js.map → chart-scatter-DOVu1TNq.js.map} +1 -1
  44. package/dist/client/chunks/{chart-sunburst-CsHlHfZQ.js → chart-sunburst-LfNthFlZ.js} +2 -2
  45. package/dist/client/chunks/{chart-sunburst-CsHlHfZQ.js.map → chart-sunburst-LfNthFlZ.js.map} +1 -1
  46. package/dist/client/chunks/{chart-tree-map-DFAbkeo1.js → chart-tree-map-DZtQPyWX.js} +2 -2
  47. package/dist/client/chunks/{chart-tree-map-DFAbkeo1.js.map → chart-tree-map-DZtQPyWX.js.map} +1 -1
  48. package/dist/client/chunks/{chartConfigRegistry-DNEbwgTc.js → chartConfigRegistry-C5dZm-ZK.js} +2 -2
  49. package/dist/client/chunks/{chartConfigRegistry-DNEbwgTc.js.map → chartConfigRegistry-C5dZm-ZK.js.map} +1 -1
  50. package/dist/client/chunks/{charts-core-DAF1iT_h.js → charts-core-DmGfleFz.js} +346 -334
  51. package/dist/client/chunks/charts-core-DmGfleFz.js.map +1 -0
  52. package/dist/client/chunks/{charts-loader-7pEaEz-f.js → charts-loader-m5Ussksz.js} +21 -21
  53. package/dist/client/chunks/{charts-loader-7pEaEz-f.js.map → charts-loader-m5Ussksz.js.map} +1 -1
  54. package/dist/client/chunks/components-D-5p1LVQ.js +9987 -0
  55. package/dist/client/chunks/components-D-5p1LVQ.js.map +1 -0
  56. package/dist/client/chunks/{core-DGLxd5v5.js → core-D_8mkGpQ.js} +2 -2
  57. package/dist/client/chunks/{core-DGLxd5v5.js.map → core-D_8mkGpQ.js.map} +1 -1
  58. package/dist/client/chunks/{providers-D2xswCYu.js → providers-CgxXm6Ll.js} +2 -2
  59. package/dist/client/chunks/{providers-D2xswCYu.js.map → providers-CgxXm6Ll.js.map} +1 -1
  60. package/dist/client/chunks/{syntaxHighlighting-DAT9C6Ss.js → syntaxHighlighting-BQfjio-i.js} +2 -2
  61. package/dist/client/chunks/{syntaxHighlighting-DAT9C6Ss.js.map → syntaxHighlighting-BQfjio-i.js.map} +1 -1
  62. package/dist/client/chunks/{useDirtyStateTracking-CTS_m9mg.js → useDirtyStateTracking-Cu1HSjmo.js} +9 -9
  63. package/dist/client/chunks/{useDirtyStateTracking-CTS_m9mg.js.map → useDirtyStateTracking-Cu1HSjmo.js.map} +1 -1
  64. package/dist/client/chunks/{vendor-DfDLOfBe.js → vendor-AVsJ2ni0.js} +4 -4
  65. package/dist/client/chunks/{vendor-DfDLOfBe.js.map → vendor-AVsJ2ni0.js.map} +1 -1
  66. package/dist/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.d.ts +3 -1
  67. package/dist/client/components/DashboardPortletCard.d.ts +3 -2
  68. package/dist/client/components/FloatingEditToolbar.d.ts +3 -1
  69. package/dist/client/components/TextPortletModal.d.ts +12 -0
  70. package/dist/client/components.js +15 -352
  71. package/dist/client/components.js.map +1 -1
  72. package/dist/client/hooks/dashboard/layoutUtils.d.ts +7 -0
  73. package/dist/client/hooks/dashboard/useDashboardController.d.ts +53 -0
  74. package/dist/client/hooks/dashboard/useGridLayoutEngine.d.ts +10 -0
  75. package/dist/client/hooks/dashboard/useRowLayoutEngine.d.ts +18 -0
  76. package/dist/client/hooks/useDashboardHook.d.ts +7 -2
  77. package/dist/client/hooks.js +23 -23
  78. package/dist/client/index.js +8 -8
  79. package/dist/client/providers.js +1 -1
  80. package/dist/client/stores/dashboardStore.d.ts +14 -0
  81. package/dist/client/styles.css +1 -1
  82. package/dist/client/types.d.ts +3 -0
  83. package/dist/client/utils.js +6 -6
  84. package/dist/client-bundle-stats.html +1 -1
  85. package/package.json +1 -1
  86. package/dist/client/chunks/DashboardEditModal-BGDhxKg1.js +0 -9169
  87. package/dist/client/chunks/DashboardEditModal-BGDhxKg1.js.map +0 -1
  88. package/dist/client/chunks/chart-config-markdown-DZxdGNVQ.js.map +0 -1
  89. package/dist/client/chunks/chart-markdown-Cget3iEq.js +0 -257
  90. package/dist/client/chunks/chart-markdown-Cget3iEq.js.map +0 -1
  91. package/dist/client/chunks/charts-core-DAF1iT_h.js.map +0 -1
@@ -1,13 +1,13 @@
1
- import { useContext as L, useMemo as U, useRef as H, useState as E, useLayoutEffect as K } from "react";
2
- import { C as V } from "./providers-D2xswCYu.js";
3
- import { jsx as l, jsxs as p } from "react/jsx-runtime";
4
- import { ResponsiveContainer as T, Tooltip as B } from "recharts";
1
+ import { jsx as l, jsxs as x } from "react/jsx-runtime";
2
+ import { useMemo as U, useContext as H, useRef as D, useState as T, useLayoutEffect as K, startTransition as V } from "react";
3
+ import { C as B } from "./providers-CgxXm6Ll.js";
4
+ import { ResponsiveContainer as I, Tooltip as z } from "recharts";
5
5
  const G = {
6
6
  sm: "dc:h-6 dc:w-6",
7
7
  md: "dc:h-8 dc:w-8",
8
8
  lg: "dc:h-12 dc:w-12"
9
9
  };
10
- function I({
10
+ function A({
11
11
  size: e = "md",
12
12
  className: t = ""
13
13
  }) {
@@ -21,26 +21,23 @@ function I({
21
21
  }
22
22
  );
23
23
  }
24
- function Q() {
25
- const e = L(V);
26
- if (!e)
27
- throw new Error("useCubeFieldLabel must be used within CubeProvider");
28
- return U(() => e.getFieldLabel, [e.getFieldLabel]);
24
+ function k({ children: e, className: t = "" }) {
25
+ return /* @__PURE__ */ l("h3", { className: `dc:text-sm dc:font-semibold text-dc-primary dc:uppercase dc:tracking-wide ${t}`, children: e });
29
26
  }
30
27
  function ee(e) {
31
28
  return e != null && !isNaN(Number(e));
32
29
  }
33
- function $(e) {
30
+ function E(e) {
34
31
  if (e == null) return null;
35
32
  const t = typeof e == "string" ? parseFloat(e) : Number(e);
36
33
  return isNaN(t) ? null : t;
37
34
  }
38
- function A(e) {
35
+ function F(e) {
39
36
  if (e == null) return "No data";
40
37
  const t = typeof e == "number" ? e : parseFloat(e);
41
38
  return isNaN(t) ? String(e) : Number.isInteger(t) ? t.toLocaleString() : parseFloat(t.toFixed(2)).toLocaleString();
42
39
  }
43
- function F(e, t, c) {
40
+ function M(e, t, c) {
44
41
  if (e == null)
45
42
  return "No data";
46
43
  const n = typeof e == "number" ? e : parseFloat(String(e));
@@ -50,58 +47,58 @@ function F(e, t, c) {
50
47
  return n > 0 ? "∞" : "-∞";
51
48
  const r = c || (typeof navigator < "u" ? navigator.language : "en-US");
52
49
  if (!t)
53
- return A(e);
54
- const { unit: i, abbreviate: s = !0, decimals: a, customPrefix: m, customSuffix: d } = t;
55
- let u = n, h = "";
50
+ return F(e);
51
+ const { unit: i, abbreviate: s = !0, decimals: d, customPrefix: h, customSuffix: o } = t;
52
+ let u = n, f = "";
56
53
  if (s) {
57
- const o = Math.abs(n);
58
- o >= 1e9 ? (u = n / 1e9, h = "B") : o >= 1e6 ? (u = n / 1e6, h = "M") : o >= 1e3 && (u = n / 1e3, h = "K");
54
+ const a = Math.abs(n);
55
+ a >= 1e9 ? (u = n / 1e9, f = "B") : a >= 1e6 ? (u = n / 1e6, f = "M") : a >= 1e3 && (u = n / 1e3, f = "K");
59
56
  }
60
- const f = a !== void 0 ? a : Number.isInteger(u) ? 0 : 2;
57
+ const p = d !== void 0 ? d : Number.isInteger(u) ? 0 : 2;
61
58
  switch (i) {
62
59
  case "currency": {
63
- const o = k(r);
64
- if (s && h) {
60
+ const a = O(r);
61
+ if (s && f) {
65
62
  const N = new Intl.NumberFormat(r, {
66
63
  style: "currency",
67
- currency: o,
68
- minimumFractionDigits: f,
69
- maximumFractionDigits: f
70
- }).format(u), C = new Intl.NumberFormat(r, {
64
+ currency: a,
65
+ minimumFractionDigits: p,
66
+ maximumFractionDigits: p
67
+ }).format(u), R = new Intl.NumberFormat(r, {
71
68
  style: "currency",
72
- currency: o
69
+ currency: a
73
70
  }).formatToParts(u);
74
- return C[C.length - 1]?.type === "currency" ? N.replace(/(\s*[^\d\s]+)$/, h + "$1") : N + h;
71
+ return R[R.length - 1]?.type === "currency" ? N.replace(/(\s*[^\d\s]+)$/, f + "$1") : N + f;
75
72
  }
76
73
  return new Intl.NumberFormat(r, {
77
74
  style: "currency",
78
- currency: o,
79
- minimumFractionDigits: f,
80
- maximumFractionDigits: f
75
+ currency: a,
76
+ minimumFractionDigits: p,
77
+ maximumFractionDigits: p
81
78
  }).format(u);
82
79
  }
83
80
  case "percent": {
84
- const o = Math.abs(u) <= 1 && !s ? u * 100 : u;
81
+ const a = Math.abs(u) <= 1 && !s ? u * 100 : u;
85
82
  return new Intl.NumberFormat(r, {
86
- minimumFractionDigits: f,
87
- maximumFractionDigits: f
88
- }).format(o) + h + "%";
83
+ minimumFractionDigits: p,
84
+ maximumFractionDigits: p
85
+ }).format(a) + f + "%";
89
86
  }
90
87
  case "custom": {
91
- const o = m || "", N = d || "", C = new Intl.NumberFormat(r, {
92
- minimumFractionDigits: f,
93
- maximumFractionDigits: f
88
+ const a = h || "", N = o || "", R = new Intl.NumberFormat(r, {
89
+ minimumFractionDigits: p,
90
+ maximumFractionDigits: p
94
91
  }).format(u);
95
- return o + C + h + N;
92
+ return a + R + f + N;
96
93
  }
97
94
  default:
98
95
  return new Intl.NumberFormat(r, {
99
- minimumFractionDigits: f,
100
- maximumFractionDigits: f
101
- }).format(u) + h;
96
+ minimumFractionDigits: p,
97
+ maximumFractionDigits: p
98
+ }).format(u) + f;
102
99
  }
103
100
  }
104
- function k(e) {
101
+ function O(e) {
105
102
  const c = e.split("-")[1]?.toUpperCase();
106
103
  return {
107
104
  US: "USD",
@@ -149,15 +146,15 @@ function k(e) {
149
146
  }[c] || "USD";
150
147
  }
151
148
  function te(e) {
152
- return (t) => F(t, e);
149
+ return (t) => M(t, e);
153
150
  }
154
- function O(e, t) {
151
+ function W(e, t) {
155
152
  return t[e] || e;
156
153
  }
157
154
  function re(e, t) {
158
- return e.map((c) => O(c, t));
155
+ return e.map((c) => W(c, t));
159
156
  }
160
- function M(e, t) {
157
+ function P(e, t) {
161
158
  if (!e) return String(e || "Unknown");
162
159
  const c = String(e);
163
160
  if (c.match(/^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}:\d{2}/)) {
@@ -166,39 +163,39 @@ function M(e, t) {
166
163
  const r = new Date(n);
167
164
  if (isNaN(r.getTime()))
168
165
  return c;
169
- const i = r.getUTCFullYear(), s = String(r.getUTCMonth() + 1).padStart(2, "0"), a = String(r.getUTCDate()).padStart(2, "0"), m = r.getUTCHours(), d = r.getUTCMinutes();
166
+ const i = r.getUTCFullYear(), s = String(r.getUTCMonth() + 1).padStart(2, "0"), d = String(r.getUTCDate()).padStart(2, "0"), h = r.getUTCHours(), o = r.getUTCMinutes();
170
167
  if (t)
171
168
  switch (t.toLowerCase()) {
172
169
  case "year":
173
170
  return `${i}`;
174
171
  case "quarter": {
175
- const f = Math.floor(r.getUTCMonth() / 3) + 1;
176
- return `${i}-Q${f}`;
172
+ const p = Math.floor(r.getUTCMonth() / 3) + 1;
173
+ return `${i}-Q${p}`;
177
174
  }
178
175
  case "month":
179
176
  return `${i}-${s}`;
180
177
  case "week":
181
- return `${i}-${s}-${a}`;
178
+ return `${i}-${s}-${d}`;
182
179
  case "day":
183
- return `${i}-${s}-${a}`;
180
+ return `${i}-${s}-${d}`;
184
181
  case "hour":
185
- return `${i}-${s}-${a} ${String(m).padStart(2, "0")}:00`;
182
+ return `${i}-${s}-${d} ${String(h).padStart(2, "0")}:00`;
186
183
  case "minute":
187
- return `${i}-${s}-${a} ${String(m).padStart(2, "0")}:${String(d).padStart(2, "0")}`;
184
+ return `${i}-${s}-${d} ${String(h).padStart(2, "0")}:${String(o).padStart(2, "0")}`;
188
185
  }
189
- const u = r.getUTCSeconds(), h = r.getUTCMilliseconds();
190
- if (a === "01" && m === 0 && d === 0 && u === 0 && h === 0) {
186
+ const u = r.getUTCSeconds(), f = r.getUTCMilliseconds();
187
+ if (d === "01" && h === 0 && o === 0 && u === 0 && f === 0) {
191
188
  if (s === "01" || s === "04" || s === "07" || s === "10") {
192
- const f = Math.floor(r.getUTCMonth() / 3) + 1;
193
- return `${i}-Q${f}`;
189
+ const p = Math.floor(r.getUTCMonth() / 3) + 1;
190
+ return `${i}-Q${p}`;
194
191
  }
195
192
  return `${i}-${s}`;
196
193
  }
197
- return m === 0 && d === 0 && u === 0 && h === 0 ? `${i}-${s}-${a}` : d === 0 && u === 0 && h === 0 ? `${i}-${s}-${a} ${String(m).padStart(2, "0")}:00` : `${i}-${s}-${a} ${String(m).padStart(2, "0")}:${String(d).padStart(2, "0")}`;
194
+ return h === 0 && o === 0 && u === 0 && f === 0 ? `${i}-${s}-${d}` : o === 0 && u === 0 && f === 0 ? `${i}-${s}-${d} ${String(h).padStart(2, "0")}:00` : `${i}-${s}-${d} ${String(h).padStart(2, "0")}:${String(o).padStart(2, "0")}`;
198
195
  }
199
196
  return c;
200
197
  }
201
- function P(e, t) {
198
+ function L(e, t) {
202
199
  try {
203
200
  if (e?.timeDimensions) {
204
201
  const n = e.timeDimensions.find((r) => t === r.dimension || t.startsWith(r.dimension.replace(".", "_")) || t === `${r.dimension}_${r.granularity}`);
@@ -216,253 +213,74 @@ function P(e, t) {
216
213
  return;
217
214
  }
218
215
  }
219
- function W(e, t, c, n, r = (i) => i) {
216
+ function Y(e, t, c, n, r = (i) => i) {
220
217
  if (!e || e.length === 0) return [];
221
- const i = P(n, t);
218
+ const i = L(n, t);
222
219
  return e.map((s) => {
223
- const a = {
224
- name: M(s[t], i) || s[t] || "Unknown"
220
+ const d = {
221
+ name: P(s[t], i) || s[t] || "Unknown"
225
222
  };
226
- return c.forEach((m) => {
227
- const d = r(m);
228
- a[d] = $(s[m]);
229
- }), a;
223
+ return c.forEach((h) => {
224
+ const o = r(h);
225
+ d[o] = E(s[h]);
226
+ }), d;
230
227
  });
231
228
  }
232
229
  function ne(e, t, c, n, r, i = (s) => s) {
233
230
  if (!e || e.length === 0)
234
231
  return { data: [], seriesKeys: [], hasDimensions: !1 };
235
- const s = n || {}, a = [
232
+ const s = n || {}, d = [
236
233
  ...s.dimensions || [],
237
- ...s.timeDimensions?.map((o) => o.dimension) || []
238
- ], m = s.measures || [], d = c.filter((o) => m.includes(o)), u = (r || []).filter((o) => a.includes(o));
234
+ ...s.timeDimensions?.map((a) => a.dimension) || []
235
+ ], h = s.measures || [], o = c.filter((a) => h.includes(a)), u = (r || []).filter((a) => d.includes(a));
239
236
  if (u.length > 0) {
240
- const o = {};
241
- e.forEach((x) => {
242
- const v = P(n, t), b = M(x[t], v) || x[t] || "Unknown";
243
- o[b] || (o[b] = { name: String(b) }), d.forEach((D) => {
244
- const g = i(D), y = $(x[D]);
245
- if (y !== null) {
246
- const R = o[b][g];
247
- o[b][g] = R == null ? y : R + y;
248
- } else g in o[b] || (o[b][g] = null);
249
- }), u.forEach((D) => {
250
- const g = x[D];
251
- if (g != null) {
252
- const y = String(g), R = d[0] || m.find(
253
- (S) => S.includes("totalCost") || S.includes("count") || S.includes("sum")
254
- ) || m[0];
255
- if (R) {
256
- const S = $(x[R]);
257
- if (S !== null) {
258
- const w = o[b][y];
259
- o[b][y] = w == null ? S : w + S;
260
- } else y in o[b] || (o[b][y] = null);
237
+ const a = {};
238
+ e.forEach((b) => {
239
+ const g = L(n, t), m = P(b[t], g) || b[t] || "Unknown";
240
+ a[m] || (a[m] = { name: String(m) }), o.forEach((S) => {
241
+ const y = i(S), C = E(b[S]);
242
+ if (C !== null) {
243
+ const w = a[m][y];
244
+ a[m][y] = w == null ? C : w + C;
245
+ } else y in a[m] || (a[m][y] = null);
246
+ }), u.forEach((S) => {
247
+ const y = b[S];
248
+ if (y != null) {
249
+ const C = String(y), w = o[0] || h.find(
250
+ (v) => v.includes("totalCost") || v.includes("count") || v.includes("sum")
251
+ ) || h[0];
252
+ if (w) {
253
+ const v = E(b[w]);
254
+ if (v !== null) {
255
+ const $ = a[m][C];
256
+ a[m][C] = $ == null ? v : $ + v;
257
+ } else C in a[m] || (a[m][C] = null);
261
258
  }
262
259
  }
263
260
  });
264
261
  });
265
- const N = Object.values(o), C = Array.from(new Set(
262
+ const N = Object.values(a), R = Array.from(new Set(
266
263
  e.flatMap(
267
- (x) => u.map((v) => {
268
- const b = x[v];
269
- return b != null ? String(b) : null;
270
- }).filter((v) => v !== null)
264
+ (b) => u.map((g) => {
265
+ const m = b[g];
266
+ return m != null ? String(m) : null;
267
+ }).filter((g) => g !== null)
271
268
  )
272
269
  ));
273
270
  return {
274
271
  data: N,
275
- seriesKeys: C,
272
+ seriesKeys: R,
276
273
  hasDimensions: !0
277
274
  };
278
275
  }
279
- const h = W(e, t, c, n, i), f = c.map((o) => i(o));
276
+ const f = Y(e, t, c, n, i), p = c.map((a) => i(a));
280
277
  return {
281
- data: h,
282
- seriesKeys: f,
278
+ data: f,
279
+ seriesKeys: p,
283
280
  hasDimensions: !1
284
281
  };
285
282
  }
286
- const ce = [
287
- "#3b82f6",
288
- // blue
289
- "#10b981",
290
- // green
291
- "#f59e0b",
292
- // yellow
293
- "#ef4444",
294
- // red
295
- "#8b5cf6",
296
- // purple
297
- "#f97316",
298
- // orange
299
- "#06b6d4",
300
- // cyan
301
- "#84cc16"
302
- // lime
303
- ], se = [
304
- "#440154",
305
- // dark purple
306
- "#414487",
307
- // purple-blue
308
- "#2a788e",
309
- // teal
310
- "#22a884",
311
- // green-teal
312
- "#7ad151",
313
- // green
314
- "#fde725"
315
- // yellow
316
- ], ie = "#10b981", ae = "#ef4444", oe = {
317
- top: 5,
318
- right: 30,
319
- left: 20,
320
- bottom: 5
321
- }, de = {
322
- top: 5,
323
- right: 30,
324
- left: 20,
325
- bottom: 60
326
- // Extra space for rotated labels
327
- };
328
- function le({ children: e, height: t = "100%" }) {
329
- const c = H(null), [n, r] = E(!1), [i, s] = E({ width: 0, height: 0 });
330
- K(() => {
331
- let a = !0, m = null;
332
- const d = () => {
333
- if (!a || !c.current) return;
334
- const u = c.current.getBoundingClientRect(), h = Math.max(c.current.clientWidth, u.width), f = Math.max(c.current.clientHeight, u.height);
335
- h > 0 && f > 0 && (s({ width: h, height: f }), r(!0));
336
- };
337
- return m = new ResizeObserver((u) => {
338
- for (const h of u) {
339
- const { width: f, height: o } = h.contentRect;
340
- f > 0 && o > 0 && (s({ width: f, height: o }), n || r(!0));
341
- }
342
- }), c.current && (m.observe(c.current), d()), () => {
343
- a = !1, m?.disconnect();
344
- };
345
- }, [n]);
346
- try {
347
- if (t === "100%")
348
- return /* @__PURE__ */ l(
349
- "div",
350
- {
351
- ref: c,
352
- className: "dc:w-full dc:h-full dc:flex-1 dc:flex dc:flex-col dc:relative",
353
- style: { minHeight: "250px", minWidth: "100px", overflow: "hidden", userSelect: "none" },
354
- children: n && i.width > 0 && i.height > 0 ? /* @__PURE__ */ l(
355
- T,
356
- {
357
- width: i.width,
358
- height: i.height - 16,
359
- debounce: 100,
360
- style: { marginTop: "16px" },
361
- children: e
362
- }
363
- ) : /* @__PURE__ */ l("div", { className: "dc:flex dc:items-center dc:justify-center dc:w-full dc:h-full", children: /* @__PURE__ */ l(I, { size: "sm" }) })
364
- }
365
- );
366
- const a = {
367
- height: typeof t == "number" ? `${t}px` : t,
368
- width: "100%",
369
- minHeight: "200px",
370
- minWidth: "100px",
371
- userSelect: "none"
372
- };
373
- return /* @__PURE__ */ l(
374
- "div",
375
- {
376
- ref: c,
377
- className: "dc:w-full dc:flex dc:flex-col dc:relative",
378
- style: { ...a, overflow: "hidden" },
379
- children: n && i.width > 0 && i.height > 0 ? /* @__PURE__ */ l(
380
- T,
381
- {
382
- width: i.width,
383
- height: i.height - 16,
384
- debounce: 100,
385
- style: { marginTop: "16px" },
386
- children: e
387
- }
388
- ) : /* @__PURE__ */ l("div", { className: "dc:flex dc:items-center dc:justify-center dc:w-full dc:h-full", children: /* @__PURE__ */ l(I, { size: "sm" }) })
389
- }
390
- );
391
- } catch (a) {
392
- return /* @__PURE__ */ p(
393
- "div",
394
- {
395
- className: "dc:flex dc:flex-col dc:items-center dc:justify-center dc:w-full dc:h-full dc:p-4 dc:text-center dc:border dc:border-dashed dc:rounded-lg",
396
- style: { height: t, borderColor: "var(--dc-border)", backgroundColor: "var(--dc-surface)" },
397
- children: [
398
- /* @__PURE__ */ l("div", { className: "dc:text-sm dc:font-semibold dc:mb-1 text-dc-text-muted", children: "Unable to display chart" }),
399
- /* @__PURE__ */ l("div", { className: "dc:text-xs text-dc-text-secondary", children: a instanceof Error ? a.message : "Failed to create responsive container" })
400
- ]
401
- }
402
- );
403
- }
404
- }
405
- const Y = (e, t) => e == null ? ["No data", t] : [A(e), t];
406
- function ue({ formatter: e, labelFormatter: t }) {
407
- return /* @__PURE__ */ l(
408
- B,
409
- {
410
- formatter: e || Y,
411
- labelFormatter: t,
412
- contentStyle: {
413
- backgroundColor: "white",
414
- border: "1px solid #e5e7eb",
415
- borderRadius: "0.5rem",
416
- fontSize: "0.875rem",
417
- color: "#1f2937",
418
- boxShadow: "0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)",
419
- padding: "8px 12px"
420
- }
421
- }
422
- );
423
- }
424
- function me(e) {
425
- if (!e || typeof e != "string")
426
- return [];
427
- const t = e.trim();
428
- if (!t)
429
- return [];
430
- try {
431
- const c = t.split(",").map((n) => n.trim()).filter((n) => n !== "").map((n) => {
432
- const r = parseFloat(n);
433
- if (isNaN(r))
434
- throw new Error(`Invalid numeric value: ${n}`);
435
- return r;
436
- });
437
- return c.length > 0 ? c : [];
438
- } catch (c) {
439
- return console.warn("Failed to parse target values:", c), [];
440
- }
441
- }
442
- function fe(e, t) {
443
- if (e.length === 0 || t <= 0)
444
- return [];
445
- if (e.length === 1)
446
- return new Array(t).fill(e[0]);
447
- const c = [], n = Math.floor(t / e.length), r = t % e.length;
448
- let i = 0;
449
- for (let s = 0; s < e.length; s++) {
450
- const a = n + (s < r ? 1 : 0);
451
- for (let m = 0; m < a; m++)
452
- c[i++] = e[s];
453
- }
454
- return c;
455
- }
456
- function he(e, t) {
457
- return t === 0 ? e === 0 ? 0 : e > 0 ? 100 : -100 : (e - t) / t * 100;
458
- }
459
- function be(e, t = 1) {
460
- return `${e >= 0 ? "+" : ""}${e.toFixed(t)}%`;
461
- }
462
- function Z({ children: e, className: t = "" }) {
463
- return /* @__PURE__ */ l("h3", { className: `dc:text-sm dc:font-semibold text-dc-primary dc:uppercase dc:tracking-wide ${t}`, children: e });
464
- }
465
- function z() {
283
+ function Z() {
466
284
  const e = typeof navigator < "u" ? navigator.language : "en-US";
467
285
  return new Intl.NumberFormat(e, {
468
286
  style: "currency",
@@ -517,84 +335,84 @@ function _(e) {
517
335
  TR: "TRY"
518
336
  }[c] || "USD";
519
337
  }
520
- function pe({
338
+ function ce({
521
339
  value: e,
522
340
  onChange: t,
523
341
  axisLabel: c,
524
342
  previewValue: n = 125e4
525
343
  }) {
526
- const r = U(() => e || {}, [e]), i = U(() => z(), []), s = U(() => F(n, r), [n, r]), a = (d) => {
527
- t({ ...r, ...d });
528
- }, m = [
344
+ const r = U(() => e || {}, [e]), i = U(() => Z(), []), s = U(() => M(n, r), [n, r]), d = (o) => {
345
+ t({ ...r, ...o });
346
+ }, h = [
529
347
  { value: "currency", label: i },
530
348
  { value: "percent", label: "%" },
531
349
  { value: "number", label: "#" },
532
350
  { value: "custom", label: "Custom" }
533
351
  ];
534
- return /* @__PURE__ */ p("div", { className: "dc:space-y-3 dc:pb-4", children: [
535
- /* @__PURE__ */ l(Z, { children: c }),
536
- /* @__PURE__ */ p("div", { className: "dc:space-y-1", children: [
352
+ return /* @__PURE__ */ x("div", { className: "dc:space-y-3 dc:pb-4", children: [
353
+ /* @__PURE__ */ l(k, { children: c }),
354
+ /* @__PURE__ */ x("div", { className: "dc:space-y-1", children: [
537
355
  /* @__PURE__ */ l("label", { className: "dc:text-xs text-dc-text-secondary", children: "Label" }),
538
356
  /* @__PURE__ */ l(
539
357
  "input",
540
358
  {
541
359
  type: "text",
542
360
  value: r.label || "",
543
- onChange: (d) => a({ label: d.target.value || void 0 }),
361
+ onChange: (o) => d({ label: o.target.value || void 0 }),
544
362
  placeholder: "Auto-generated label",
545
363
  className: "dc:w-full dc:px-2 dc:py-1 dc:text-sm dc:border border-dc-border dc:rounded-sm focus:ring-dc-accent focus:border-dc-accent bg-dc-surface text-dc-text"
546
364
  }
547
365
  )
548
366
  ] }),
549
- /* @__PURE__ */ p("div", { className: "dc:space-y-1", children: [
367
+ /* @__PURE__ */ x("div", { className: "dc:space-y-1", children: [
550
368
  /* @__PURE__ */ l("label", { className: "dc:text-xs text-dc-text-secondary", children: "Unit" }),
551
- /* @__PURE__ */ l("div", { className: "dc:flex dc:border border-dc-border dc:rounded-sm dc:overflow-hidden", children: m.map((d) => /* @__PURE__ */ l(
369
+ /* @__PURE__ */ l("div", { className: "dc:flex dc:border border-dc-border dc:rounded-sm dc:overflow-hidden", children: h.map((o) => /* @__PURE__ */ l(
552
370
  "button",
553
371
  {
554
372
  type: "button",
555
- onClick: () => a({ unit: d.value }),
556
- className: `dc:flex-1 dc:px-2 dc:py-1.5 dc:text-sm dc:font-medium dc:transition-colors ${r.unit === d.value ? "bg-dc-primary text-white" : "bg-dc-surface text-dc-text hover:bg-dc-border"}`,
557
- children: d.label
373
+ onClick: () => d({ unit: o.value }),
374
+ className: `dc:flex-1 dc:px-2 dc:py-1.5 dc:text-sm dc:font-medium dc:transition-colors ${r.unit === o.value ? "bg-dc-primary text-white" : "bg-dc-surface text-dc-text hover:bg-dc-border"}`,
375
+ children: o.label
558
376
  },
559
- d.value
377
+ o.value
560
378
  )) })
561
379
  ] }),
562
- r.unit === "custom" && /* @__PURE__ */ p("div", { className: "dc:flex dc:gap-2", children: [
563
- /* @__PURE__ */ p("div", { className: "dc:flex-1 dc:space-y-1", children: [
380
+ r.unit === "custom" && /* @__PURE__ */ x("div", { className: "dc:flex dc:gap-2", children: [
381
+ /* @__PURE__ */ x("div", { className: "dc:flex-1 dc:space-y-1", children: [
564
382
  /* @__PURE__ */ l("label", { className: "dc:text-xs text-dc-text-secondary", children: "Prefix" }),
565
383
  /* @__PURE__ */ l(
566
384
  "input",
567
385
  {
568
386
  type: "text",
569
387
  value: r.customPrefix || "",
570
- onChange: (d) => a({ customPrefix: d.target.value || void 0 }),
388
+ onChange: (o) => d({ customPrefix: o.target.value || void 0 }),
571
389
  placeholder: "e.g., $",
572
390
  className: "dc:w-full dc:px-2 dc:py-1 dc:text-sm dc:border border-dc-border dc:rounded-sm focus:ring-dc-accent focus:border-dc-accent bg-dc-surface text-dc-text"
573
391
  }
574
392
  )
575
393
  ] }),
576
- /* @__PURE__ */ p("div", { className: "dc:flex-1 dc:space-y-1", children: [
394
+ /* @__PURE__ */ x("div", { className: "dc:flex-1 dc:space-y-1", children: [
577
395
  /* @__PURE__ */ l("label", { className: "dc:text-xs text-dc-text-secondary", children: "Suffix" }),
578
396
  /* @__PURE__ */ l(
579
397
  "input",
580
398
  {
581
399
  type: "text",
582
400
  value: r.customSuffix || "",
583
- onChange: (d) => a({ customSuffix: d.target.value || void 0 }),
401
+ onChange: (o) => d({ customSuffix: o.target.value || void 0 }),
584
402
  placeholder: "e.g., units",
585
403
  className: "dc:w-full dc:px-2 dc:py-1 dc:text-sm dc:border border-dc-border dc:rounded-sm focus:ring-dc-accent focus:border-dc-accent bg-dc-surface text-dc-text"
586
404
  }
587
405
  )
588
406
  ] })
589
407
  ] }),
590
- /* @__PURE__ */ p("div", { className: "dc:space-y-1", children: [
408
+ /* @__PURE__ */ x("div", { className: "dc:space-y-1", children: [
591
409
  /* @__PURE__ */ l("label", { className: "dc:text-xs text-dc-text-secondary", children: "Abbreviation" }),
592
- /* @__PURE__ */ p("div", { className: "dc:flex dc:border border-dc-border dc:rounded-sm dc:overflow-hidden", children: [
410
+ /* @__PURE__ */ x("div", { className: "dc:flex dc:border border-dc-border dc:rounded-sm dc:overflow-hidden", children: [
593
411
  /* @__PURE__ */ l(
594
412
  "button",
595
413
  {
596
414
  type: "button",
597
- onClick: () => a({ abbreviate: !0 }),
415
+ onClick: () => d({ abbreviate: !0 }),
598
416
  className: `dc:flex-1 dc:px-3 dc:py-1.5 dc:text-sm dc:font-medium dc:transition-colors ${r.abbreviate !== !1 ? "bg-dc-primary text-white" : "bg-dc-surface text-dc-text hover:bg-dc-border"}`,
599
417
  children: "Yes"
600
418
  }
@@ -603,23 +421,23 @@ function pe({
603
421
  "button",
604
422
  {
605
423
  type: "button",
606
- onClick: () => a({ abbreviate: !1 }),
424
+ onClick: () => d({ abbreviate: !1 }),
607
425
  className: `dc:flex-1 dc:px-3 dc:py-1.5 dc:text-sm dc:font-medium dc:transition-colors ${r.abbreviate === !1 ? "bg-dc-primary text-white" : "bg-dc-surface text-dc-text hover:bg-dc-border"}`,
608
426
  children: "No"
609
427
  }
610
428
  )
611
429
  ] })
612
430
  ] }),
613
- /* @__PURE__ */ p("div", { className: "dc:space-y-1", children: [
431
+ /* @__PURE__ */ x("div", { className: "dc:space-y-1", children: [
614
432
  /* @__PURE__ */ l("label", { className: "dc:text-xs text-dc-text-secondary", children: "Decimals" }),
615
- /* @__PURE__ */ p("div", { className: "dc:flex dc:gap-2", children: [
433
+ /* @__PURE__ */ x("div", { className: "dc:flex dc:gap-2", children: [
616
434
  /* @__PURE__ */ l(
617
435
  "button",
618
436
  {
619
437
  type: "button",
620
438
  onClick: () => {
621
- const d = r.decimals ?? 2;
622
- d > 0 && a({ decimals: d - 1 });
439
+ const o = r.decimals ?? 2;
440
+ o > 0 && d({ decimals: o - 1 });
623
441
  },
624
442
  disabled: (r.decimals ?? 2) <= 0,
625
443
  className: "dc:flex-1 dc:px-3 dc:py-2 dc:text-sm dc:border border-dc-border dc:rounded-sm bg-dc-surface text-dc-text hover:bg-dc-border dc:disabled:opacity-40 dc:disabled:cursor-not-allowed dc:transition-colors",
@@ -631,8 +449,8 @@ function pe({
631
449
  {
632
450
  type: "button",
633
451
  onClick: () => {
634
- const d = r.decimals ?? 2;
635
- d < 4 && a({ decimals: d + 1 });
452
+ const o = r.decimals ?? 2;
453
+ o < 4 && d({ decimals: o + 1 });
636
454
  },
637
455
  disabled: (r.decimals ?? 2) >= 4,
638
456
  className: "dc:flex-1 dc:px-3 dc:py-2 dc:text-sm dc:border border-dc-border dc:rounded-sm bg-dc-surface text-dc-text hover:bg-dc-border dc:disabled:opacity-40 dc:disabled:cursor-not-allowed dc:transition-colors",
@@ -641,39 +459,233 @@ function pe({
641
459
  )
642
460
  ] })
643
461
  ] }),
644
- /* @__PURE__ */ p("div", { className: "dc:space-y-1", children: [
462
+ /* @__PURE__ */ x("div", { className: "dc:space-y-1", children: [
645
463
  /* @__PURE__ */ l("label", { className: "dc:text-xs text-dc-text-secondary", children: "Preview" }),
646
464
  /* @__PURE__ */ l("div", { className: "dc:text-sm dc:font-mono text-dc-text", children: s })
647
465
  ] })
648
466
  ] });
649
467
  }
468
+ function se() {
469
+ const e = H(B);
470
+ if (!e)
471
+ throw new Error("useCubeFieldLabel must be used within CubeProvider");
472
+ return U(() => e.getFieldLabel, [e.getFieldLabel]);
473
+ }
474
+ const ie = [
475
+ "#3b82f6",
476
+ // blue
477
+ "#10b981",
478
+ // green
479
+ "#f59e0b",
480
+ // yellow
481
+ "#ef4444",
482
+ // red
483
+ "#8b5cf6",
484
+ // purple
485
+ "#f97316",
486
+ // orange
487
+ "#06b6d4",
488
+ // cyan
489
+ "#84cc16"
490
+ // lime
491
+ ], oe = [
492
+ "#440154",
493
+ // dark purple
494
+ "#414487",
495
+ // purple-blue
496
+ "#2a788e",
497
+ // teal
498
+ "#22a884",
499
+ // green-teal
500
+ "#7ad151",
501
+ // green
502
+ "#fde725"
503
+ // yellow
504
+ ], ae = "#10b981", de = "#ef4444", le = {
505
+ top: 5,
506
+ right: 30,
507
+ left: 20,
508
+ bottom: 5
509
+ }, ue = {
510
+ top: 5,
511
+ right: 30,
512
+ left: 20,
513
+ bottom: 60
514
+ // Extra space for rotated labels
515
+ };
516
+ function me({ children: e, height: t = "100%" }) {
517
+ const c = D(null), [n, r] = T(!1), [i, s] = T({ width: 0, height: 0 }), d = D({ width: 0, height: 0 }), h = D(!1), o = D(null), u = D(null);
518
+ K(() => {
519
+ let f = !0, p = null;
520
+ const a = () => {
521
+ if (u.current = null, !f) return;
522
+ const b = o.current;
523
+ if (o.current = null, !b) return;
524
+ const g = Math.round(b.width), m = Math.round(b.height);
525
+ if (g <= 0 || m <= 0) return;
526
+ const S = d.current.width !== g || d.current.height !== m, y = !h.current;
527
+ !S && !y || (d.current = { width: g, height: m }, h.current = !0, V(() => {
528
+ S && s({ width: g, height: m }), y && r(!0);
529
+ }));
530
+ }, N = (b, g) => {
531
+ o.current = { width: b, height: g }, u.current === null && (u.current = requestAnimationFrame(a));
532
+ }, R = () => {
533
+ if (!f || !c.current) return;
534
+ const b = c.current.getBoundingClientRect(), g = Math.max(c.current.clientWidth, b.width), m = Math.max(c.current.clientHeight, b.height);
535
+ g > 0 && m > 0 && N(g, m);
536
+ };
537
+ return p = new ResizeObserver((b) => {
538
+ for (const g of b) {
539
+ const { width: m, height: S } = g.contentRect;
540
+ m > 0 && S > 0 && N(m, S);
541
+ }
542
+ }), c.current && (p.observe(c.current), R()), () => {
543
+ f = !1, u.current !== null && (cancelAnimationFrame(u.current), u.current = null), p?.disconnect();
544
+ };
545
+ }, []);
546
+ try {
547
+ if (t === "100%")
548
+ return /* @__PURE__ */ l(
549
+ "div",
550
+ {
551
+ ref: c,
552
+ className: "dc:w-full dc:h-full dc:flex-1 dc:flex dc:flex-col dc:relative",
553
+ style: { minHeight: "250px", minWidth: "100px", overflow: "hidden", userSelect: "none" },
554
+ children: n && i.width > 0 && i.height > 0 ? /* @__PURE__ */ l(
555
+ I,
556
+ {
557
+ width: i.width,
558
+ height: i.height - 16,
559
+ debounce: 100,
560
+ style: { marginTop: "16px" },
561
+ children: e
562
+ }
563
+ ) : /* @__PURE__ */ l("div", { className: "dc:flex dc:items-center dc:justify-center dc:w-full dc:h-full", children: /* @__PURE__ */ l(A, { size: "sm" }) })
564
+ }
565
+ );
566
+ const f = {
567
+ height: typeof t == "number" ? `${t}px` : t,
568
+ width: "100%",
569
+ minHeight: "200px",
570
+ minWidth: "100px",
571
+ userSelect: "none"
572
+ };
573
+ return /* @__PURE__ */ l(
574
+ "div",
575
+ {
576
+ ref: c,
577
+ className: "dc:w-full dc:flex dc:flex-col dc:relative",
578
+ style: { ...f, overflow: "hidden" },
579
+ children: n && i.width > 0 && i.height > 0 ? /* @__PURE__ */ l(
580
+ I,
581
+ {
582
+ width: i.width,
583
+ height: i.height - 16,
584
+ debounce: 100,
585
+ style: { marginTop: "16px" },
586
+ children: e
587
+ }
588
+ ) : /* @__PURE__ */ l("div", { className: "dc:flex dc:items-center dc:justify-center dc:w-full dc:h-full", children: /* @__PURE__ */ l(A, { size: "sm" }) })
589
+ }
590
+ );
591
+ } catch (f) {
592
+ return /* @__PURE__ */ x(
593
+ "div",
594
+ {
595
+ className: "dc:flex dc:flex-col dc:items-center dc:justify-center dc:w-full dc:h-full dc:p-4 dc:text-center dc:border dc:border-dashed dc:rounded-lg",
596
+ style: { height: t, borderColor: "var(--dc-border)", backgroundColor: "var(--dc-surface)" },
597
+ children: [
598
+ /* @__PURE__ */ l("div", { className: "dc:text-sm dc:font-semibold dc:mb-1 text-dc-text-muted", children: "Unable to display chart" }),
599
+ /* @__PURE__ */ l("div", { className: "dc:text-xs text-dc-text-secondary", children: f instanceof Error ? f.message : "Failed to create responsive container" })
600
+ ]
601
+ }
602
+ );
603
+ }
604
+ }
605
+ const j = (e, t) => e == null ? ["No data", t] : [F(e), t];
606
+ function fe({ formatter: e, labelFormatter: t }) {
607
+ return /* @__PURE__ */ l(
608
+ z,
609
+ {
610
+ formatter: e || j,
611
+ labelFormatter: t,
612
+ contentStyle: {
613
+ backgroundColor: "white",
614
+ border: "1px solid #e5e7eb",
615
+ borderRadius: "0.5rem",
616
+ fontSize: "0.875rem",
617
+ color: "#1f2937",
618
+ boxShadow: "0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)",
619
+ padding: "8px 12px"
620
+ }
621
+ }
622
+ );
623
+ }
624
+ function he(e) {
625
+ if (!e || typeof e != "string")
626
+ return [];
627
+ const t = e.trim();
628
+ if (!t)
629
+ return [];
630
+ try {
631
+ const c = t.split(",").map((n) => n.trim()).filter((n) => n !== "").map((n) => {
632
+ const r = parseFloat(n);
633
+ if (isNaN(r))
634
+ throw new Error(`Invalid numeric value: ${n}`);
635
+ return r;
636
+ });
637
+ return c.length > 0 ? c : [];
638
+ } catch (c) {
639
+ return console.warn("Failed to parse target values:", c), [];
640
+ }
641
+ }
642
+ function pe(e, t) {
643
+ if (e.length === 0 || t <= 0)
644
+ return [];
645
+ if (e.length === 1)
646
+ return new Array(t).fill(e[0]);
647
+ const c = [], n = Math.floor(t / e.length), r = t % e.length;
648
+ let i = 0;
649
+ for (let s = 0; s < e.length; s++) {
650
+ const d = n + (s < r ? 1 : 0);
651
+ for (let h = 0; h < d; h++)
652
+ c[i++] = e[s];
653
+ }
654
+ return c;
655
+ }
656
+ function be(e, t) {
657
+ return t === 0 ? e === 0 ? 0 : e > 0 ? 100 : -100 : (e - t) / t * 100;
658
+ }
659
+ function ge(e, t = 1) {
660
+ return `${e >= 0 ? "+" : ""}${e.toFixed(t)}%`;
661
+ }
650
662
  export {
651
- pe as A,
652
- oe as C,
653
- I as L,
654
- ae as N,
655
- ie as P,
656
- de as R,
657
- Z as S,
658
- le as a,
659
- ue as b,
660
- ce as c,
661
- M as d,
662
- $ as e,
663
- F as f,
664
- P as g,
665
- se as h,
663
+ ce as A,
664
+ le as C,
665
+ A as L,
666
+ de as N,
667
+ ae as P,
668
+ ue as R,
669
+ k as S,
670
+ me as a,
671
+ fe as b,
672
+ ie as c,
673
+ P as d,
674
+ E as e,
675
+ M as f,
676
+ L as g,
677
+ oe as h,
666
678
  ee as i,
667
- he as j,
668
- be as k,
669
- A as l,
679
+ be as j,
680
+ ge as k,
681
+ F as l,
670
682
  te as m,
671
- O as n,
683
+ W as n,
672
684
  re as o,
673
- me as p,
674
- W as q,
675
- fe as s,
685
+ he as p,
686
+ Y as q,
687
+ pe as s,
676
688
  ne as t,
677
- Q as u
689
+ se as u
678
690
  };
679
- //# sourceMappingURL=charts-core-DAF1iT_h.js.map
691
+ //# sourceMappingURL=charts-core-DmGfleFz.js.map