drizzle-cube 0.2.10 → 0.2.12

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 (124) hide show
  1. package/dist/adapters/compiler-CMwSRhTS.cjs +22 -0
  2. package/dist/adapters/{compiler-gcKytLwd.js → compiler-DrkCCzf0.js} +16 -11
  3. package/dist/adapters/express/index.cjs +1 -1
  4. package/dist/adapters/express/index.js +8 -8
  5. package/dist/adapters/fastify/index.cjs +1 -1
  6. package/dist/adapters/fastify/index.js +9 -9
  7. package/dist/adapters/hono/index.cjs +1 -1
  8. package/dist/adapters/hono/index.js +11 -11
  9. package/dist/adapters/nextjs/index.cjs +1 -1
  10. package/dist/adapters/nextjs/index.js +59 -59
  11. package/dist/client/charts/chartConfigs.d.ts +3 -1
  12. package/dist/client/charts.js +11 -11
  13. package/dist/client/chunks/{chart-activitygridchart-C1ts13cL.js → chart-activitygridchart-CUGN9Xq9.js} +848 -738
  14. package/dist/client/chunks/chart-activitygridchart-CUGN9Xq9.js.map +1 -0
  15. package/dist/client/chunks/chart-areachart-B4tknnsY.js +239 -0
  16. package/dist/client/chunks/chart-areachart-B4tknnsY.js.map +1 -0
  17. package/dist/client/chunks/{chart-areachart-config-0ICuIaRP.js → chart-areachart-config-D9pPUKHZ.js} +15 -2
  18. package/dist/client/chunks/chart-areachart-config-D9pPUKHZ.js.map +1 -0
  19. package/dist/client/chunks/chart-axisformatcontrols-Ch_IYF94.js +196 -0
  20. package/dist/client/chunks/chart-axisformatcontrols-Ch_IYF94.js.map +1 -0
  21. package/dist/client/chunks/chart-barchart-D_op06r-.js +216 -0
  22. package/dist/client/chunks/chart-barchart-D_op06r-.js.map +1 -0
  23. package/dist/client/chunks/{chart-barchart-config-DalFHdmP.js → chart-barchart-config-iniz62ni.js} +15 -2
  24. package/dist/client/chunks/chart-barchart-config-iniz62ni.js.map +1 -0
  25. package/dist/client/chunks/chart-bubblechart-BsaIXUbS.js +214 -0
  26. package/dist/client/chunks/chart-bubblechart-BsaIXUbS.js.map +1 -0
  27. package/dist/client/chunks/{chart-bubblechart-config-WjiDlqnP.js → chart-bubblechart-config-yLq2oyR3.js} +18 -4
  28. package/dist/client/chunks/{chart-bubblechart-config-WjiDlqnP.js.map → chart-bubblechart-config-yLq2oyR3.js.map} +1 -1
  29. package/dist/client/chunks/{chart-charttooltip-5tzcFRt0.js → chart-charttooltip-Bx3I8jQv.js} +4 -4
  30. package/dist/client/chunks/{chart-charttooltip-5tzcFRt0.js.map → chart-charttooltip-Bx3I8jQv.js.map} +1 -1
  31. package/dist/client/chunks/chart-datatable-C7MS9q4Y.js +283 -0
  32. package/dist/client/chunks/chart-datatable-C7MS9q4Y.js.map +1 -0
  33. package/dist/client/chunks/{chart-datatable-config-C7TgMD3u.js → chart-datatable-config-DmEA3A-7.js} +10 -2
  34. package/dist/client/chunks/{chart-datatable-config-C7TgMD3u.js.map → chart-datatable-config-DmEA3A-7.js.map} +1 -1
  35. package/dist/client/chunks/{chart-kpidelta-D_VuZaVL.js → chart-kpidelta-7-KOmb3w.js} +62 -60
  36. package/dist/client/chunks/chart-kpidelta-7-KOmb3w.js.map +1 -0
  37. package/dist/client/chunks/{chart-kpinumber-DeCkVi2e.js → chart-kpinumber-HOPfcK2N.js} +4 -4
  38. package/dist/client/chunks/{chart-kpinumber-DeCkVi2e.js.map → chart-kpinumber-HOPfcK2N.js.map} +1 -1
  39. package/dist/client/chunks/{chart-kpitext-D8OpA0CY.js → chart-kpitext-BZkC9u3A.js} +24 -24
  40. package/dist/client/chunks/{chart-kpitext-D8OpA0CY.js.map → chart-kpitext-BZkC9u3A.js.map} +1 -1
  41. package/dist/client/chunks/chart-linechart-DqFmLbRe.js +198 -0
  42. package/dist/client/chunks/chart-linechart-DqFmLbRe.js.map +1 -0
  43. package/dist/client/chunks/{chart-linechart-config-C5tpU_2u.js → chart-linechart-config-DLVS2Zxc.js} +17 -4
  44. package/dist/client/chunks/chart-linechart-config-DLVS2Zxc.js.map +1 -0
  45. package/dist/client/chunks/chart-markdownchart-9n_TemoB.js +256 -0
  46. package/dist/client/chunks/chart-markdownchart-9n_TemoB.js.map +1 -0
  47. package/dist/client/chunks/{chart-piechart-CiFJQtC8.js → chart-piechart-CrXFd9pE.js} +61 -55
  48. package/dist/client/chunks/chart-piechart-CrXFd9pE.js.map +1 -0
  49. package/dist/client/chunks/{chart-piechart-config-CtP_JkGm.js → chart-piechart-config-DgwOeKHr.js} +12 -4
  50. package/dist/client/chunks/{chart-piechart-config-CtP_JkGm.js.map → chart-piechart-config-DgwOeKHr.js.map} +1 -1
  51. package/dist/client/chunks/{chart-radarchart-config-BkD_6Khq.js → chart-radarchart-config-BAV8D5PR.js} +12 -4
  52. package/dist/client/chunks/{chart-radarchart-config-BkD_6Khq.js.map → chart-radarchart-config-BAV8D5PR.js.map} +1 -1
  53. package/dist/client/chunks/chart-radarchart-tar2GBkO.js +131 -0
  54. package/dist/client/chunks/chart-radarchart-tar2GBkO.js.map +1 -0
  55. package/dist/client/chunks/chart-radialbarchart-ab8Swtal.js +120 -0
  56. package/dist/client/chunks/chart-radialbarchart-ab8Swtal.js.map +1 -0
  57. package/dist/client/chunks/{chart-radialbarchart-config-CBZDlB2k.js → chart-radialbarchart-config-CKozBBEC.js} +10 -2
  58. package/dist/client/chunks/{chart-radialbarchart-config-CBZDlB2k.js.map → chart-radialbarchart-config-CKozBBEC.js.map} +1 -1
  59. package/dist/client/chunks/{chart-scatterchart-DeGqPbYm.js → chart-scatterchart-BP06BeU5.js} +89 -87
  60. package/dist/client/chunks/chart-scatterchart-BP06BeU5.js.map +1 -0
  61. package/dist/client/chunks/{chart-scatterchart-config-DsdmlpHr.js → chart-scatterchart-config-UdHmbZ3s.js} +18 -4
  62. package/dist/client/chunks/{chart-scatterchart-config-DsdmlpHr.js.map → chart-scatterchart-config-UdHmbZ3s.js.map} +1 -1
  63. package/dist/client/chunks/chart-treemapchart-DAiixITm.js +265 -0
  64. package/dist/client/chunks/chart-treemapchart-DAiixITm.js.map +1 -0
  65. package/dist/client/chunks/{chart-treemapchart-config-CdF9NvPP.js → chart-treemapchart-config-D17VOwTM.js} +12 -4
  66. package/dist/client/chunks/{chart-treemapchart-config-CdF9NvPP.js.map → chart-treemapchart-config-D17VOwTM.js.map} +1 -1
  67. package/dist/client/chunks/{charts-DY7pF_-4.js → charts-CHzWeaY1.js} +36 -36
  68. package/dist/client/chunks/charts-CHzWeaY1.js.map +1 -0
  69. package/dist/client/chunks/components-DnM9CCUS.js +13931 -0
  70. package/dist/client/chunks/components-DnM9CCUS.js.map +1 -0
  71. package/dist/client/chunks/{index-DH5abYWH.js → index-DlsvcKXf.js} +135 -135
  72. package/dist/client/chunks/index-DlsvcKXf.js.map +1 -0
  73. package/dist/client/components/AnalysisBuilder/AnalysisAIPanel.d.ts +25 -0
  74. package/dist/client/components/AnalysisBuilder/AnalysisAxisDropZone.d.ts +8 -6
  75. package/dist/client/components/AnalysisBuilder/AnalysisChartConfigPanel.d.ts +2 -5
  76. package/dist/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.d.ts +9 -0
  77. package/dist/client/components/AnalysisBuilder/SectionHeading.d.ts +12 -0
  78. package/dist/client/components/AnalysisBuilder/types.d.ts +38 -9
  79. package/dist/client/components/charts/AxisFormatControls.d.ts +35 -0
  80. package/dist/client/components.js +2 -2
  81. package/dist/client/hooks/useResponsiveDashboard.d.ts +2 -8
  82. package/dist/client/hooks.js +10 -10
  83. package/dist/client/hooks.js.map +1 -1
  84. package/dist/client/icons/types.d.ts +2 -2
  85. package/dist/client/index.js +4 -4
  86. package/dist/client/providers.js +1 -1
  87. package/dist/client/styles.css +1 -1
  88. package/dist/client/types.d.ts +12 -0
  89. package/dist/client/utils/chartUtils.d.ts +20 -0
  90. package/dist/client/utils/pivotUtils.d.ts +11 -1
  91. package/dist/client-bundle-stats.html +1 -1
  92. package/dist/server/index.cjs +2 -2
  93. package/dist/server/index.js +16 -11
  94. package/package.json +4 -3
  95. package/dist/adapters/compiler-DP1pPIcg.cjs +0 -22
  96. package/dist/client/chunks/chart-activitygridchart-C1ts13cL.js.map +0 -1
  97. package/dist/client/chunks/chart-areachart-config-0ICuIaRP.js.map +0 -1
  98. package/dist/client/chunks/chart-areachart-fOi6lwUq.js +0 -204
  99. package/dist/client/chunks/chart-areachart-fOi6lwUq.js.map +0 -1
  100. package/dist/client/chunks/chart-barchart-CJfPZQin.js +0 -171
  101. package/dist/client/chunks/chart-barchart-CJfPZQin.js.map +0 -1
  102. package/dist/client/chunks/chart-barchart-config-DalFHdmP.js.map +0 -1
  103. package/dist/client/chunks/chart-bubblechart-BVk_qFly.js +0 -210
  104. package/dist/client/chunks/chart-bubblechart-BVk_qFly.js.map +0 -1
  105. package/dist/client/chunks/chart-datatable-BW_dWRbb.js +0 -249
  106. package/dist/client/chunks/chart-datatable-BW_dWRbb.js.map +0 -1
  107. package/dist/client/chunks/chart-kpidelta-D_VuZaVL.js.map +0 -1
  108. package/dist/client/chunks/chart-linechart-BdfBVl3m.js +0 -155
  109. package/dist/client/chunks/chart-linechart-BdfBVl3m.js.map +0 -1
  110. package/dist/client/chunks/chart-linechart-config-C5tpU_2u.js.map +0 -1
  111. package/dist/client/chunks/chart-markdownchart-C3FAQFuO.js +0 -254
  112. package/dist/client/chunks/chart-markdownchart-C3FAQFuO.js.map +0 -1
  113. package/dist/client/chunks/chart-piechart-CiFJQtC8.js.map +0 -1
  114. package/dist/client/chunks/chart-radarchart-CJ4kpk5J.js +0 -124
  115. package/dist/client/chunks/chart-radarchart-CJ4kpk5J.js.map +0 -1
  116. package/dist/client/chunks/chart-radialbarchart-DLQqN_1Z.js +0 -109
  117. package/dist/client/chunks/chart-radialbarchart-DLQqN_1Z.js.map +0 -1
  118. package/dist/client/chunks/chart-scatterchart-DeGqPbYm.js.map +0 -1
  119. package/dist/client/chunks/chart-treemapchart-ClXsAOjr.js +0 -253
  120. package/dist/client/chunks/chart-treemapchart-ClXsAOjr.js.map +0 -1
  121. package/dist/client/chunks/charts-DY7pF_-4.js.map +0 -1
  122. package/dist/client/chunks/components-DAOVOiM_.js +0 -13429
  123. package/dist/client/chunks/components-DAOVOiM_.js.map +0 -1
  124. package/dist/client/chunks/index-DH5abYWH.js.map +0 -1
@@ -1,127 +1,129 @@
1
1
  import { jsx as e, jsxs as l } from "react/jsx-runtime";
2
- import { useState as _ } from "react";
3
- import { ScatterChart as H, CartesianGrid as K, XAxis as O, YAxis as B, Tooltip as Y, Legend as U, Scatter as M } from "recharts";
4
- import { C as W } from "./chart-chartcontainer-CdwzIKP1.js";
5
- import { u as $, b, c as S, p as j, i as z, C as J, f as R, a as k } from "./chart-activitygridchart-C1ts13cL.js";
6
- function re({
7
- data: N,
2
+ import { useState as O } from "react";
3
+ import { ScatterChart as Y, CartesianGrid as B, XAxis as C, YAxis as U, Tooltip as W, Legend as $, Scatter as R } from "recharts";
4
+ import { C as J } from "./chart-chartcontainer-CdwzIKP1.js";
5
+ import { u as Q, b as V, c as F, p as I, i as X, C as Z, f as k, a as L } from "./chart-activitygridchart-CUGN9Xq9.js";
6
+ function ae({
7
+ data: g,
8
8
  chartConfig: i,
9
- displayConfig: w = {},
10
- queryObject: h,
9
+ displayConfig: p = {},
10
+ queryObject: v,
11
11
  height: m = "100%",
12
- colorPalette: p
12
+ colorPalette: A
13
13
  }) {
14
- const [D, L] = _(null), { getFieldLabel: x } = $();
14
+ const [G, T] = O(null), { getFieldLabel: x } = Q();
15
15
  try {
16
16
  const u = {
17
- showLegend: w?.showLegend ?? !0,
18
- showGrid: w?.showGrid ?? !0,
19
- showTooltip: w?.showTooltip ?? !0
20
- };
21
- if (!N || N.length === 0)
17
+ showLegend: p?.showLegend ?? !0,
18
+ showGrid: p?.showGrid ?? !0,
19
+ showTooltip: p?.showTooltip ?? !0
20
+ }, b = p?.xAxisFormat, y = p?.leftYAxisFormat;
21
+ if (!g || g.length === 0)
22
22
  return /* @__PURE__ */ e("div", { className: "flex items-center justify-center w-full text-dc-text-muted", style: { height: m }, children: /* @__PURE__ */ l("div", { className: "text-center", children: [
23
23
  /* @__PURE__ */ e("div", { className: "text-sm font-semibold mb-1", children: "No data available" }),
24
24
  /* @__PURE__ */ e("div", { className: "text-xs text-dc-text-secondary", children: "No data points to display in scatter chart" })
25
25
  ] }) });
26
- let a, o, V = [];
26
+ let a, o, E = [];
27
27
  if (i?.xAxis && i?.yAxis) {
28
28
  a = Array.isArray(i.xAxis) ? i.xAxis[0] : i.xAxis, o = Array.isArray(i.yAxis) ? i.yAxis[0] : i.yAxis;
29
- const s = i.series;
30
- V = s ? Array.isArray(s) ? s : [s] : [];
29
+ const t = i.series;
30
+ E = t ? Array.isArray(t) ? t : [t] : [];
31
31
  } else if (i?.x && i?.y)
32
32
  a = i.x, o = Array.isArray(i.y) ? i.y[0] : i.y;
33
33
  else
34
- return /* @__PURE__ */ e("div", { className: "flex items-center justify-center w-full text-yellow-600", style: { height: m }, children: /* @__PURE__ */ l("div", { className: "text-center", children: [
34
+ return /* @__PURE__ */ e("div", { className: "flex items-center justify-center w-full text-dc-warning", style: { height: m }, children: /* @__PURE__ */ l("div", { className: "text-center", children: [
35
35
  /* @__PURE__ */ e("div", { className: "text-sm font-semibold mb-1", children: "Configuration Error" }),
36
36
  /* @__PURE__ */ e("div", { className: "text-xs", children: "Invalid or missing chart axis configuration" })
37
37
  ] }) });
38
38
  if (!a || !o)
39
- return /* @__PURE__ */ e("div", { className: "flex items-center justify-center w-full text-yellow-600", style: { height: m }, children: /* @__PURE__ */ l("div", { className: "text-center", children: [
39
+ return /* @__PURE__ */ e("div", { className: "flex items-center justify-center w-full text-dc-warning", style: { height: m }, children: /* @__PURE__ */ l("div", { className: "text-center", children: [
40
40
  /* @__PURE__ */ e("div", { className: "text-sm font-semibold mb-1", children: "Configuration Error" }),
41
41
  /* @__PURE__ */ e("div", { className: "text-xs", children: "Missing required X-axis or Y-axis fields" })
42
42
  ] }) });
43
- const F = (h?.timeDimensions || []).map((s) => s.dimension);
44
- let v, c = {};
45
- if (V.length > 0) {
46
- const s = V[0];
47
- N.forEach((t) => {
48
- const n = String(t[s] || "Default");
43
+ const M = (v?.timeDimensions || []).map((t) => t.dimension);
44
+ let N, c = {};
45
+ if (E.length > 0) {
46
+ const t = E[0];
47
+ g.forEach((s) => {
48
+ const n = String(s[t] || "Default");
49
49
  c[n] || (c[n] = []);
50
- const y = b(h, a), f = S(t[a], y) || t[a], d = j(t[o]), g = typeof f == "string" ? parseFloat(f) : f;
51
- if (z(g) && d !== null) {
52
- const T = {};
53
- F.forEach((A) => {
54
- if (t[A]) {
55
- const X = b(h, A);
56
- T[A] = S(t[A], X);
50
+ const f = V(v, a), h = F(s[a], f) || s[a], d = I(s[o]), S = typeof h == "string" ? parseFloat(h) : h;
51
+ if (X(S) && d !== null) {
52
+ const z = {};
53
+ M.forEach((w) => {
54
+ if (s[w]) {
55
+ const K = V(v, w);
56
+ z[w] = F(s[w], K);
57
57
  }
58
58
  }), c[n].push({
59
- x: g,
59
+ x: S,
60
60
  y: d,
61
61
  name: n,
62
- timeValues: T,
63
- originalItem: t
62
+ timeValues: z,
63
+ originalItem: s
64
64
  });
65
65
  }
66
- }), v = Object.keys(c).flatMap((t) => c[t]);
66
+ }), N = Object.keys(c).flatMap((s) => c[s]);
67
67
  } else {
68
- const s = b(h, a);
69
- v = N.map((r) => {
70
- const t = S(r[a], s) || r[a], n = j(r[o]), y = typeof t == "string" ? parseFloat(t) : t, f = {};
71
- return F.forEach((d) => {
68
+ const t = V(v, a);
69
+ N = g.map((r) => {
70
+ const s = F(r[a], t) || r[a], n = I(r[o]), f = typeof s == "string" ? parseFloat(s) : s, h = {};
71
+ return M.forEach((d) => {
72
72
  if (r[d]) {
73
- const g = b(h, d);
74
- f[d] = S(r[d], g);
73
+ const S = V(v, d);
74
+ h[d] = F(r[d], S);
75
75
  }
76
76
  }), {
77
- x: y,
77
+ x: f,
78
78
  y: n,
79
79
  name: "Point",
80
- timeValues: f,
80
+ timeValues: h,
81
81
  originalItem: r,
82
- isValid: z(y) && n !== null
82
+ isValid: X(f) && n !== null
83
83
  };
84
84
  }).filter((r) => r.isValid);
85
85
  }
86
- if (!v || v.length === 0)
86
+ if (!N || N.length === 0)
87
87
  return /* @__PURE__ */ e("div", { className: "flex items-center justify-center w-full text-dc-text-muted", style: { height: m }, children: /* @__PURE__ */ l("div", { className: "text-center", children: [
88
88
  /* @__PURE__ */ e("div", { className: "text-sm font-semibold mb-1", children: "No valid data" }),
89
89
  /* @__PURE__ */ e("div", { className: "text-xs text-dc-text-secondary", children: "No valid data points for scatter chart after transformation" })
90
90
  ] }) });
91
- const E = Object.keys(c), G = E.length > 1 && E.length <= 20, I = u.showLegend && G, C = {
92
- ...J,
91
+ const D = Object.keys(c), j = D.length > 1 && D.length <= 20, _ = u.showLegend && j, H = {
92
+ ...Z,
93
93
  left: 40
94
94
  // Increased from 20 to 40 for Y-axis label space
95
95
  };
96
- return /* @__PURE__ */ e(W, { height: m, children: /* @__PURE__ */ l(H, { margin: C, children: [
97
- u.showGrid && /* @__PURE__ */ e(K, { strokeDasharray: "3 3" }),
96
+ return /* @__PURE__ */ e(J, { height: m, children: /* @__PURE__ */ l(Y, { margin: H, children: [
97
+ u.showGrid && /* @__PURE__ */ e(B, { strokeDasharray: "3 3" }),
98
98
  /* @__PURE__ */ e(
99
- O,
99
+ C,
100
100
  {
101
101
  type: "number",
102
102
  dataKey: "x",
103
- name: x(a),
104
- tick: { fontSize: 12 }
103
+ name: b?.label || x(a),
104
+ tick: { fontSize: 12 },
105
+ tickFormatter: b ? (t) => k(t, b) : void 0
105
106
  }
106
107
  ),
107
108
  /* @__PURE__ */ e(
108
- B,
109
+ U,
109
110
  {
110
111
  type: "number",
111
112
  dataKey: "y",
112
- name: x(o),
113
+ name: y?.label || x(o),
113
114
  tick: { fontSize: 12 },
114
- label: { value: x(o), angle: -90, position: "left", style: { textAnchor: "middle", fontSize: "12px" } }
115
+ tickFormatter: y ? (t) => k(t, y) : void 0,
116
+ label: { value: y?.label || x(o), angle: -90, position: "left", style: { textAnchor: "middle", fontSize: "12px" } }
115
117
  }
116
118
  ),
117
119
  u.showTooltip && /* @__PURE__ */ e(
118
- Y,
120
+ W,
119
121
  {
120
122
  cursor: { strokeDasharray: "3 3" },
121
- content: ({ active: s, payload: r }) => {
122
- if (!s || !r || r.length === 0) return null;
123
- const t = r[0]?.payload;
124
- return t ? /* @__PURE__ */ l("div", { style: {
123
+ content: ({ active: t, payload: r }) => {
124
+ if (!t || !r || r.length === 0) return null;
125
+ const s = r[0]?.payload;
126
+ return s ? /* @__PURE__ */ l("div", { style: {
125
127
  backgroundColor: "white",
126
128
  border: "1px solid #e5e7eb",
127
129
  borderRadius: "0.5rem",
@@ -130,28 +132,28 @@ function re({
130
132
  boxShadow: "0 4px 6px -1px rgba(0, 0, 0, 0.1)",
131
133
  padding: "8px 12px"
132
134
  }, children: [
133
- /* @__PURE__ */ e("div", { style: { fontWeight: 600, marginBottom: "4px" }, children: t.name }),
134
- t.timeValues && Object.keys(t.timeValues).length > 0 && /* @__PURE__ */ e("div", { style: { marginBottom: "4px", color: "#6b7280" }, children: Object.entries(t.timeValues).map(([n, y]) => /* @__PURE__ */ l("div", { children: [
135
+ /* @__PURE__ */ e("div", { style: { fontWeight: 600, marginBottom: "4px" }, children: s.name }),
136
+ s.timeValues && Object.keys(s.timeValues).length > 0 && /* @__PURE__ */ e("div", { style: { marginBottom: "4px", color: "#6b7280" }, children: Object.entries(s.timeValues).map(([n, f]) => /* @__PURE__ */ l("div", { children: [
135
137
  x(n),
136
138
  ": ",
137
- y
139
+ f
138
140
  ] }, n)) }),
139
141
  /* @__PURE__ */ l("div", { children: [
140
- x(a),
142
+ b?.label || x(a),
141
143
  ": ",
142
- R(t.x)
144
+ k(s.x, b)
143
145
  ] }),
144
146
  /* @__PURE__ */ l("div", { children: [
145
- x(o),
147
+ y?.label || x(o),
146
148
  ": ",
147
- R(t.y)
149
+ k(s.y, y)
148
150
  ] })
149
151
  ] }) : null;
150
152
  }
151
153
  }
152
154
  ),
153
- I && /* @__PURE__ */ e(
154
- U,
155
+ _ && /* @__PURE__ */ e(
156
+ $,
155
157
  {
156
158
  wrapperStyle: { fontSize: "12px", paddingTop: "10px" },
157
159
  iconType: "circle",
@@ -159,36 +161,36 @@ function re({
159
161
  layout: "horizontal",
160
162
  align: "center",
161
163
  verticalAlign: "bottom",
162
- onMouseEnter: (s) => L(String(s.dataKey || "")),
163
- onMouseLeave: () => L(null)
164
+ onMouseEnter: (t) => T(String(t.dataKey || "")),
165
+ onMouseLeave: () => T(null)
164
166
  }
165
167
  ),
166
- G ? (
168
+ j ? (
167
169
  // Multiple series
168
- E.map((s, r) => /* @__PURE__ */ e(
169
- M,
170
+ D.map((t, r) => /* @__PURE__ */ e(
171
+ R,
170
172
  {
171
- name: s,
172
- data: c[s],
173
- fill: p?.colors && p.colors[r % p.colors.length] || k[r % k.length],
174
- fillOpacity: D ? D === s ? 1 : 0.3 : 1
173
+ name: t,
174
+ data: c[t],
175
+ fill: A?.colors && A.colors[r % A.colors.length] || L[r % L.length],
176
+ fillOpacity: G ? G === t ? 1 : 0.3 : 1
175
177
  },
176
- s
178
+ t
177
179
  ))
178
180
  ) : (
179
181
  // Single series
180
182
  /* @__PURE__ */ e(
181
- M,
183
+ R,
182
184
  {
183
185
  name: "Data",
184
- data: v,
185
- fill: p?.colors && p.colors[0] || k[0]
186
+ data: N,
187
+ fill: A?.colors && A.colors[0] || L[0]
186
188
  }
187
189
  )
188
190
  )
189
191
  ] }) });
190
192
  } catch (u) {
191
- return /* @__PURE__ */ e("div", { className: "flex flex-col items-center justify-center w-full text-red-500 p-4", style: { height: m }, children: /* @__PURE__ */ l("div", { className: "text-center", children: [
193
+ return /* @__PURE__ */ e("div", { className: "flex flex-col items-center justify-center w-full text-dc-error p-4", style: { height: m }, children: /* @__PURE__ */ l("div", { className: "text-center", children: [
192
194
  /* @__PURE__ */ e("div", { className: "text-sm font-semibold mb-1", children: "Scatter Chart Error" }),
193
195
  /* @__PURE__ */ e("div", { className: "text-xs mb-2", children: u instanceof Error ? u.message : "Unknown rendering error" }),
194
196
  /* @__PURE__ */ e("div", { className: "text-xs text-dc-text-muted", children: "Check the data and configuration" })
@@ -196,6 +198,6 @@ function re({
196
198
  }
197
199
  }
198
200
  export {
199
- re as default
201
+ ae as default
200
202
  };
201
- //# sourceMappingURL=chart-scatterchart-DeGqPbYm.js.map
203
+ //# sourceMappingURL=chart-scatterchart-BP06BeU5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart-scatterchart-BP06BeU5.js","sources":["../../../src/client/components/charts/ScatterChart.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { ScatterChart as RechartsScatterChart, Scatter, XAxis, YAxis, CartesianGrid, Legend, Tooltip } from 'recharts'\nimport ChartContainer from './ChartContainer'\nimport { CHART_COLORS, CHART_MARGINS } from '../../utils/chartConstants'\nimport { formatTimeValue, getFieldGranularity, parseNumericValue, isValidNumericValue, formatAxisValue } from '../../utils/chartUtils'\nimport { useCubeContext } from '../../providers/CubeProvider'\nimport type { ChartProps } from '../../types'\n\nexport default function ScatterChart({ \n data, \n chartConfig, \n displayConfig = {},\n queryObject,\n height = \"100%\",\n colorPalette\n}: ChartProps) {\n const [hoveredLegend, setHoveredLegend] = useState<string | null>(null)\n const { getFieldLabel } = useCubeContext()\n \n try {\n const safeDisplayConfig = {\n showLegend: displayConfig?.showLegend ?? true,\n showGrid: displayConfig?.showGrid ?? true,\n showTooltip: displayConfig?.showTooltip ?? true\n }\n\n // Extract axis format configs\n // For scatter charts, xAxis uses xAxisFormat, yAxis uses leftYAxisFormat\n const xAxisFormat = displayConfig?.xAxisFormat\n const yAxisFormat = displayConfig?.leftYAxisFormat\n\n if (!data || data.length === 0) {\n return (\n <div className=\"flex items-center justify-center w-full text-dc-text-muted\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">No data available</div>\n <div className=\"text-xs text-dc-text-secondary\">No data points to display in scatter chart</div>\n </div>\n </div>\n )\n }\n\n // Validate chartConfig - support both legacy and new formats\n let xAxisField: string\n let yAxisField: string\n let seriesFields: string[] = []\n \n if (chartConfig?.xAxis && chartConfig?.yAxis) {\n // New format - handle both string and array values\n xAxisField = Array.isArray(chartConfig.xAxis) ? chartConfig.xAxis[0] : chartConfig.xAxis\n yAxisField = Array.isArray(chartConfig.yAxis) ? chartConfig.yAxis[0] : chartConfig.yAxis\n // Normalize series to array\n const seriesConfig = chartConfig.series\n seriesFields = seriesConfig ? (Array.isArray(seriesConfig) ? seriesConfig : [seriesConfig]) : []\n } else if (chartConfig?.x && chartConfig?.y) {\n // Legacy format (adapt for scatter chart)\n xAxisField = chartConfig.x\n yAxisField = Array.isArray(chartConfig.y) ? chartConfig.y[0] : chartConfig.y\n } else {\n return (\n <div className=\"flex items-center justify-center w-full text-dc-warning\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">Configuration Error</div>\n <div className=\"text-xs\">Invalid or missing chart axis configuration</div>\n </div>\n </div>\n )\n }\n\n if (!xAxisField || !yAxisField) {\n return (\n <div className=\"flex items-center justify-center w-full text-dc-warning\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">Configuration Error</div>\n <div className=\"text-xs\">Missing required X-axis or Y-axis fields</div>\n </div>\n </div>\n )\n }\n\n // Extract time dimensions from query for tooltip display\n const timeDimensions = queryObject?.timeDimensions || []\n const timeDimensionFields = timeDimensions.map((td: any) => td.dimension)\n\n // Transform data for scatter plot\n // Null handling: Filter out data points where x or y coordinates are null\n let scatterData: any[]\n let seriesGroups: { [key: string]: any[] } = {}\n\n if (seriesFields.length > 0) {\n // Group data by series field\n const seriesField = seriesFields[0]\n data.forEach(item => {\n const seriesValue = String(item[seriesField] || 'Default')\n if (!seriesGroups[seriesValue]) {\n seriesGroups[seriesValue] = []\n }\n\n const xGranularity = getFieldGranularity(queryObject, xAxisField)\n const xValue = formatTimeValue(item[xAxisField], xGranularity) || item[xAxisField]\n const yValue = parseNumericValue(item[yAxisField])\n\n // Only add point if both x and y are valid numbers\n const xNum = typeof xValue === 'string' ? parseFloat(xValue) : xValue\n if (isValidNumericValue(xNum) && yValue !== null) {\n // Extract time dimension values for tooltip\n const timeValues: { [key: string]: string } = {}\n timeDimensionFields.forEach((field: string) => {\n if (item[field]) {\n const granularity = getFieldGranularity(queryObject, field)\n timeValues[field] = formatTimeValue(item[field], granularity)\n }\n })\n\n seriesGroups[seriesValue].push({\n x: xNum,\n y: yValue,\n name: seriesValue,\n timeValues,\n originalItem: item\n })\n }\n })\n\n // Collect all valid points from all series for validation\n // (The actual rendering uses seriesGroups with series separated)\n const seriesKeys = Object.keys(seriesGroups)\n scatterData = seriesKeys.flatMap(key => seriesGroups[key])\n } else {\n // Single series scatter plot\n const xGranularity = getFieldGranularity(queryObject, xAxisField)\n scatterData = data\n .map(item => {\n const xValue = formatTimeValue(item[xAxisField], xGranularity) || item[xAxisField]\n const yValue = parseNumericValue(item[yAxisField])\n const xNum = typeof xValue === 'string' ? parseFloat(xValue) : xValue\n\n // Extract time dimension values for tooltip\n const timeValues: { [key: string]: string } = {}\n timeDimensionFields.forEach((field: string) => {\n if (item[field]) {\n const granularity = getFieldGranularity(queryObject, field)\n timeValues[field] = formatTimeValue(item[field], granularity)\n }\n })\n\n return {\n x: xNum,\n y: yValue,\n name: `Point`,\n timeValues,\n originalItem: item,\n isValid: isValidNumericValue(xNum) && yValue !== null\n }\n })\n .filter(point => point.isValid)\n }\n \n // Validate transformed data\n if (!scatterData || scatterData.length === 0) {\n return (\n <div className=\"flex items-center justify-center w-full text-dc-text-muted\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">No valid data</div>\n <div className=\"text-xs text-dc-text-secondary\">No valid data points for scatter chart after transformation</div>\n </div>\n </div>\n )\n }\n\n const seriesKeys = Object.keys(seriesGroups)\n // Limit series to prevent performance issues with high-cardinality fields (e.g., dates)\n // If more than 20 unique series, fall back to single-series mode\n const MAX_SERIES = 20\n const hasSeries = seriesKeys.length > 1 && seriesKeys.length <= MAX_SERIES\n \n // Determine if legend will be shown\n const showLegend = safeDisplayConfig.showLegend && hasSeries\n \n // Use custom chart margins with extra left space for Y-axis label\n const chartMargins = {\n ...CHART_MARGINS,\n left: 40 // Increased from 20 to 40 for Y-axis label space\n }\n\n return (\n <ChartContainer height={height}>\n <RechartsScatterChart margin={chartMargins}>\n {safeDisplayConfig.showGrid && (\n <CartesianGrid strokeDasharray=\"3 3\" />\n )}\n <XAxis\n type=\"number\"\n dataKey=\"x\"\n name={xAxisFormat?.label || getFieldLabel(xAxisField)}\n tick={{ fontSize: 12 }}\n tickFormatter={xAxisFormat ? (value) => formatAxisValue(value, xAxisFormat) : undefined}\n />\n <YAxis\n type=\"number\"\n dataKey=\"y\"\n name={yAxisFormat?.label || getFieldLabel(yAxisField)}\n tick={{ fontSize: 12 }}\n tickFormatter={yAxisFormat ? (value) => formatAxisValue(value, yAxisFormat) : undefined}\n label={{ value: yAxisFormat?.label || getFieldLabel(yAxisField), angle: -90, position: 'left', style: { textAnchor: 'middle', fontSize: '12px' } }}\n />\n {safeDisplayConfig.showTooltip && (\n <Tooltip\n cursor={{ strokeDasharray: '3 3' }}\n content={({ active, payload }) => {\n if (!active || !payload || payload.length === 0) return null\n // Only show the first (active) point\n const point = payload[0]?.payload\n if (!point) return null\n\n return (\n <div style={{\n backgroundColor: 'white',\n border: '1px solid #e5e7eb',\n borderRadius: '0.5rem',\n fontSize: '0.875rem',\n color: '#1f2937',\n boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.1)',\n padding: '8px 12px'\n }}>\n <div style={{ fontWeight: 600, marginBottom: '4px' }}>{point.name}</div>\n {/* Show time dimension values if present */}\n {point.timeValues && Object.keys(point.timeValues).length > 0 && (\n <div style={{ marginBottom: '4px', color: '#6b7280' }}>\n {Object.entries(point.timeValues).map(([field, value]) => (\n <div key={field}>{getFieldLabel(field)}: {value as string}</div>\n ))}\n </div>\n )}\n <div>{xAxisFormat?.label || getFieldLabel(xAxisField)}: {formatAxisValue(point.x, xAxisFormat)}</div>\n <div>{yAxisFormat?.label || getFieldLabel(yAxisField)}: {formatAxisValue(point.y, yAxisFormat)}</div>\n </div>\n )\n }}\n />\n )}\n {showLegend && (\n <Legend \n wrapperStyle={{ fontSize: '12px', paddingTop: '10px' }}\n iconType=\"circle\"\n iconSize={8}\n layout=\"horizontal\"\n align=\"center\"\n verticalAlign=\"bottom\"\n onMouseEnter={(o) => setHoveredLegend(String(o.dataKey || ''))}\n onMouseLeave={() => setHoveredLegend(null)}\n />\n )}\n {hasSeries ? (\n // Multiple series\n seriesKeys.map((seriesKey, index) => (\n <Scatter\n key={seriesKey}\n name={seriesKey}\n data={seriesGroups[seriesKey]}\n fill={(colorPalette?.colors && colorPalette.colors[index % colorPalette.colors.length]) || CHART_COLORS[index % CHART_COLORS.length]}\n fillOpacity={hoveredLegend ? (hoveredLegend === seriesKey ? 1 : 0.3) : 1}\n />\n ))\n ) : (\n // Single series\n <Scatter\n name=\"Data\"\n data={scatterData}\n fill={(colorPalette?.colors && colorPalette.colors[0]) || CHART_COLORS[0]}\n />\n )}\n </RechartsScatterChart>\n </ChartContainer>\n )\n } catch (error) {\n // 'ScatterChart rendering error\n return (\n <div className=\"flex flex-col items-center justify-center w-full text-dc-error p-4\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">Scatter Chart Error</div>\n <div className=\"text-xs mb-2\">{error instanceof Error ? error.message : 'Unknown rendering error'}</div>\n <div className=\"text-xs text-dc-text-muted\">Check the data and configuration</div>\n </div>\n </div>\n )\n }\n}"],"names":["ScatterChart","data","chartConfig","displayConfig","queryObject","height","colorPalette","hoveredLegend","setHoveredLegend","useState","getFieldLabel","useCubeContext","safeDisplayConfig","xAxisFormat","yAxisFormat","jsx","jsxs","xAxisField","yAxisField","seriesFields","seriesConfig","timeDimensionFields","td","scatterData","seriesGroups","seriesField","item","seriesValue","xGranularity","getFieldGranularity","xValue","formatTimeValue","yValue","parseNumericValue","xNum","isValidNumericValue","timeValues","field","granularity","key","point","seriesKeys","hasSeries","showLegend","chartMargins","CHART_MARGINS","ChartContainer","RechartsScatterChart","CartesianGrid","XAxis","value","formatAxisValue","YAxis","Tooltip","active","payload","Legend","o","seriesKey","index","Scatter","CHART_COLORS","error"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { g as e } from "./chart-activitygridchart-config-AVBoHdRn.js";
2
- const s = {
2
+ const i = {
3
3
  icon: e("scatter"),
4
4
  description: "Reveal correlations between variables",
5
5
  useCase: "Best for identifying patterns, correlations, outliers, and relationships between two measures",
@@ -32,9 +32,23 @@ const s = {
32
32
  emptyText: "Drop a dimension to color points"
33
33
  }
34
34
  ],
35
- displayOptions: ["showLegend", "showGrid", "showTooltip", "hideHeader"]
35
+ displayOptions: ["showLegend", "showGrid", "showTooltip", "hideHeader"],
36
+ displayOptionsConfig: [
37
+ {
38
+ key: "xAxisFormat",
39
+ label: "X-Axis Format",
40
+ type: "axisFormat",
41
+ description: "Number formatting for X-axis"
42
+ },
43
+ {
44
+ key: "leftYAxisFormat",
45
+ label: "Y-Axis Format",
46
+ type: "axisFormat",
47
+ description: "Number formatting for Y-axis"
48
+ }
49
+ ]
36
50
  };
37
51
  export {
38
- s as scatterChartConfig
52
+ i as scatterChartConfig
39
53
  };
40
- //# sourceMappingURL=chart-scatterchart-config-DsdmlpHr.js.map
54
+ //# sourceMappingURL=chart-scatterchart-config-UdHmbZ3s.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chart-scatterchart-config-DsdmlpHr.js","sources":["../../../src/client/components/charts/ScatterChart.config.tsx"],"sourcesContent":["import type { ChartTypeConfig } from '../../charts/chartConfigs'\nimport { getChartTypeIcon } from '../../icons'\n\n/**\n * Configuration for the scatter chart type\n */\nexport const scatterChartConfig: ChartTypeConfig = {\n icon: getChartTypeIcon('scatter'),\n description: 'Reveal correlations between variables',\n useCase: 'Best for identifying patterns, correlations, outliers, and relationships between two measures',\n dropZones: [\n {\n key: 'xAxis',\n label: 'X-Axis',\n description: 'Measure or dimension for X position',\n mandatory: true,\n maxItems: 1,\n acceptTypes: ['dimension', 'timeDimension', 'measure'],\n emptyText: 'Drop a field for X-axis'\n },\n {\n key: 'yAxis',\n label: 'Y-Axis',\n description: 'Measure for Y position',\n mandatory: true,\n maxItems: 1,\n acceptTypes: ['measure'],\n emptyText: 'Drop a measure for Y-axis'\n },\n {\n key: 'series',\n label: 'Series (Color Groups)',\n description: 'Dimension to color points by category',\n mandatory: false,\n maxItems: 1,\n acceptTypes: ['dimension'],\n emptyText: 'Drop a dimension to color points'\n }\n ],\n displayOptions: ['showLegend', 'showGrid', 'showTooltip', 'hideHeader']\n}"],"names":["scatterChartConfig","getChartTypeIcon"],"mappings":";AAMO,MAAMA,IAAsC;AAAA,EACjD,MAAMC,EAAiB,SAAS;AAAA,EAChC,aAAa;AAAA,EACb,SAAS;AAAA,EACT,WAAW;AAAA,IACT;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,aAAa;AAAA,MACb,WAAW;AAAA,MACX,UAAU;AAAA,MACV,aAAa,CAAC,aAAa,iBAAiB,SAAS;AAAA,MACrD,WAAW;AAAA,IAAA;AAAA,IAEb;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,aAAa;AAAA,MACb,WAAW;AAAA,MACX,UAAU;AAAA,MACV,aAAa,CAAC,SAAS;AAAA,MACvB,WAAW;AAAA,IAAA;AAAA,IAEb;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,aAAa;AAAA,MACb,WAAW;AAAA,MACX,UAAU;AAAA,MACV,aAAa,CAAC,WAAW;AAAA,MACzB,WAAW;AAAA,IAAA;AAAA,EACb;AAAA,EAEF,gBAAgB,CAAC,cAAc,YAAY,eAAe,YAAY;AACxE;"}
1
+ {"version":3,"file":"chart-scatterchart-config-UdHmbZ3s.js","sources":["../../../src/client/components/charts/ScatterChart.config.tsx"],"sourcesContent":["import type { ChartTypeConfig } from '../../charts/chartConfigs'\nimport { getChartTypeIcon } from '../../icons'\n\n/**\n * Configuration for the scatter chart type\n */\nexport const scatterChartConfig: ChartTypeConfig = {\n icon: getChartTypeIcon('scatter'),\n description: 'Reveal correlations between variables',\n useCase: 'Best for identifying patterns, correlations, outliers, and relationships between two measures',\n dropZones: [\n {\n key: 'xAxis',\n label: 'X-Axis',\n description: 'Measure or dimension for X position',\n mandatory: true,\n maxItems: 1,\n acceptTypes: ['dimension', 'timeDimension', 'measure'],\n emptyText: 'Drop a field for X-axis'\n },\n {\n key: 'yAxis',\n label: 'Y-Axis',\n description: 'Measure for Y position',\n mandatory: true,\n maxItems: 1,\n acceptTypes: ['measure'],\n emptyText: 'Drop a measure for Y-axis'\n },\n {\n key: 'series',\n label: 'Series (Color Groups)',\n description: 'Dimension to color points by category',\n mandatory: false,\n maxItems: 1,\n acceptTypes: ['dimension'],\n emptyText: 'Drop a dimension to color points'\n }\n ],\n displayOptions: ['showLegend', 'showGrid', 'showTooltip', 'hideHeader'],\n displayOptionsConfig: [\n {\n key: 'xAxisFormat',\n label: 'X-Axis Format',\n type: 'axisFormat',\n description: 'Number formatting for X-axis'\n },\n {\n key: 'leftYAxisFormat',\n label: 'Y-Axis Format',\n type: 'axisFormat',\n description: 'Number formatting for Y-axis'\n }\n ]\n}"],"names":["scatterChartConfig","getChartTypeIcon"],"mappings":";AAMO,MAAMA,IAAsC;AAAA,EACjD,MAAMC,EAAiB,SAAS;AAAA,EAChC,aAAa;AAAA,EACb,SAAS;AAAA,EACT,WAAW;AAAA,IACT;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,aAAa;AAAA,MACb,WAAW;AAAA,MACX,UAAU;AAAA,MACV,aAAa,CAAC,aAAa,iBAAiB,SAAS;AAAA,MACrD,WAAW;AAAA,IAAA;AAAA,IAEb;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,aAAa;AAAA,MACb,WAAW;AAAA,MACX,UAAU;AAAA,MACV,aAAa,CAAC,SAAS;AAAA,MACvB,WAAW;AAAA,IAAA;AAAA,IAEb;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,aAAa;AAAA,MACb,WAAW;AAAA,MACX,UAAU;AAAA,MACV,aAAa,CAAC,WAAW;AAAA,MACzB,WAAW;AAAA,IAAA;AAAA,EACb;AAAA,EAEF,gBAAgB,CAAC,cAAc,YAAY,eAAe,YAAY;AAAA,EACtE,sBAAsB;AAAA,IACpB;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,MAAM;AAAA,MACN,aAAa;AAAA,IAAA;AAAA,IAEf;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,MAAM;AAAA,MACN,aAAa;AAAA,IAAA;AAAA,EACf;AAEJ;"}