drizzle-cube 0.4.2 → 0.4.4

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 (100) hide show
  1. package/dist/adapters/express/index.cjs +1 -1
  2. package/dist/adapters/express/index.js +1 -1
  3. package/dist/adapters/fastify/index.cjs +1 -1
  4. package/dist/adapters/fastify/index.js +1 -1
  5. package/dist/adapters/hono/index.cjs +1 -1
  6. package/dist/adapters/hono/index.js +1 -1
  7. package/dist/adapters/mcp-transport-BqLo4hKi.cjs +257 -0
  8. package/dist/adapters/{mcp-transport-Dmolep14.js → mcp-transport-YHDZWKOi.js} +1727 -1624
  9. package/dist/adapters/nextjs/index.cjs +1 -1
  10. package/dist/adapters/nextjs/index.js +1 -1
  11. package/dist/client/charts.js +13 -13
  12. package/dist/client/chunks/{RetentionCombinedChart-7bGP_ozM.js → RetentionCombinedChart-BK8N-MOQ.js} +2 -2
  13. package/dist/client/chunks/{RetentionCombinedChart-7bGP_ozM.js.map → RetentionCombinedChart-BK8N-MOQ.js.map} +1 -1
  14. package/dist/client/chunks/{analysis-builder-CIuNLos1.js → analysis-builder-CNBmAGAO.js} +8 -9
  15. package/dist/client/chunks/{analysis-builder-CIuNLos1.js.map → analysis-builder-CNBmAGAO.js.map} +1 -1
  16. package/dist/client/chunks/{analysis-builder-shared-gky0SKQH.js → analysis-builder-shared-INGGwyTG.js} +6 -6
  17. package/dist/client/chunks/{analysis-builder-shared-gky0SKQH.js.map → analysis-builder-shared-INGGwyTG.js.map} +1 -1
  18. package/dist/client/chunks/{chart-activity-grid-sUkuCJzm.js → chart-activity-grid-DvgTYQaE.js} +2 -2
  19. package/dist/client/chunks/{chart-activity-grid-sUkuCJzm.js.map → chart-activity-grid-DvgTYQaE.js.map} +1 -1
  20. package/dist/client/chunks/{chart-area-C4DIi9k_.js → chart-area-BKjd_STS.js} +3 -3
  21. package/dist/client/chunks/{chart-area-C4DIi9k_.js.map → chart-area-BKjd_STS.js.map} +1 -1
  22. package/dist/client/chunks/{chart-bar-7ZleGCsN.js → chart-bar-DBI41w05.js} +2 -2
  23. package/dist/client/chunks/{chart-bar-7ZleGCsN.js.map → chart-bar-DBI41w05.js.map} +1 -1
  24. package/dist/client/chunks/{chart-bubble-D-auWIjP.js → chart-bubble-BD-1kneU.js} +2 -2
  25. package/dist/client/chunks/{chart-bubble-D-auWIjP.js.map → chart-bubble-BD-1kneU.js.map} +1 -1
  26. package/dist/client/chunks/{chart-config-markdown-DZxdGNVQ.js → chart-config-markdown-6fsr-U6_.js} +38 -8
  27. package/dist/client/chunks/chart-config-markdown-6fsr-U6_.js.map +1 -0
  28. package/dist/client/chunks/{chart-data-table-DW6VNGeW.js → chart-data-table-B74HLpAx.js} +3 -3
  29. package/dist/client/chunks/{chart-data-table-DW6VNGeW.js.map → chart-data-table-B74HLpAx.js.map} +1 -1
  30. package/dist/client/chunks/{chart-funnel-eUJApzmA.js → chart-funnel-DQ9cW6j9.js} +2 -2
  31. package/dist/client/chunks/{chart-funnel-eUJApzmA.js.map → chart-funnel-DQ9cW6j9.js.map} +1 -1
  32. package/dist/client/chunks/{chart-heat-map-DR3O3GXx.js → chart-heat-map-CpIr4tbs.js} +2 -2
  33. package/dist/client/chunks/{chart-heat-map-DR3O3GXx.js.map → chart-heat-map-CpIr4tbs.js.map} +1 -1
  34. package/dist/client/chunks/{chart-kpi-delta-Bp9Yrgyc.js → chart-kpi-delta-DPcSazD3.js} +3 -3
  35. package/dist/client/chunks/{chart-kpi-delta-Bp9Yrgyc.js.map → chart-kpi-delta-DPcSazD3.js.map} +1 -1
  36. package/dist/client/chunks/{chart-kpi-number-B3yvgbr-.js → chart-kpi-number-D62PzKZ1.js} +2 -2
  37. package/dist/client/chunks/{chart-kpi-number-B3yvgbr-.js.map → chart-kpi-number-D62PzKZ1.js.map} +1 -1
  38. package/dist/client/chunks/{chart-kpi-text-D0TsUiaO.js → chart-kpi-text-B6Z5tFV1.js} +3 -3
  39. package/dist/client/chunks/{chart-kpi-text-D0TsUiaO.js.map → chart-kpi-text-B6Z5tFV1.js.map} +1 -1
  40. package/dist/client/chunks/{chart-line-C7VStgaJ.js → chart-line-Ds4BYA0K.js} +3 -3
  41. package/dist/client/chunks/{chart-line-C7VStgaJ.js.map → chart-line-Ds4BYA0K.js.map} +1 -1
  42. package/dist/client/chunks/chart-markdown-Rq6ORisB.js +276 -0
  43. package/dist/client/chunks/chart-markdown-Rq6ORisB.js.map +1 -0
  44. package/dist/client/chunks/{chart-pie-DPdYJSM3.js → chart-pie-BBrLh0iU.js} +2 -2
  45. package/dist/client/chunks/{chart-pie-DPdYJSM3.js.map → chart-pie-BBrLh0iU.js.map} +1 -1
  46. package/dist/client/chunks/{chart-radar-DF6VNSiC.js → chart-radar-vr5FgjHT.js} +2 -2
  47. package/dist/client/chunks/{chart-radar-DF6VNSiC.js.map → chart-radar-vr5FgjHT.js.map} +1 -1
  48. package/dist/client/chunks/{chart-radial-bar-7Ttfz-kO.js → chart-radial-bar-BV_3Nm5P.js} +2 -2
  49. package/dist/client/chunks/{chart-radial-bar-7Ttfz-kO.js.map → chart-radial-bar-BV_3Nm5P.js.map} +1 -1
  50. package/dist/client/chunks/{chart-sankey-D86RYk9B.js → chart-sankey-CHROzr4S.js} +2 -2
  51. package/dist/client/chunks/{chart-sankey-D86RYk9B.js.map → chart-sankey-CHROzr4S.js.map} +1 -1
  52. package/dist/client/chunks/{chart-scatter-BUnIiLr_.js → chart-scatter-DbRTU3FG.js} +2 -2
  53. package/dist/client/chunks/{chart-scatter-BUnIiLr_.js.map → chart-scatter-DbRTU3FG.js.map} +1 -1
  54. package/dist/client/chunks/{chart-sunburst-CsHlHfZQ.js → chart-sunburst-B-aPUzYL.js} +2 -2
  55. package/dist/client/chunks/{chart-sunburst-CsHlHfZQ.js.map → chart-sunburst-B-aPUzYL.js.map} +1 -1
  56. package/dist/client/chunks/{chart-tree-map-DFAbkeo1.js → chart-tree-map-qY148fiC.js} +2 -2
  57. package/dist/client/chunks/{chart-tree-map-DFAbkeo1.js.map → chart-tree-map-qY148fiC.js.map} +1 -1
  58. package/dist/client/chunks/{chartConfigRegistry-DNEbwgTc.js → chartConfigRegistry-Di34paQH.js} +2 -2
  59. package/dist/client/chunks/{chartConfigRegistry-DNEbwgTc.js.map → chartConfigRegistry-Di34paQH.js.map} +1 -1
  60. package/dist/client/chunks/{charts-core-DAF1iT_h.js → charts-core-T8UglYyq.js} +224 -224
  61. package/dist/client/chunks/charts-core-T8UglYyq.js.map +1 -0
  62. package/dist/client/chunks/{charts-loader-7pEaEz-f.js → charts-loader-YnhJHubD.js} +21 -21
  63. package/dist/client/chunks/{charts-loader-7pEaEz-f.js.map → charts-loader-YnhJHubD.js.map} +1 -1
  64. package/dist/client/chunks/components-D0i1yQsk.js +9835 -0
  65. package/dist/client/chunks/components-D0i1yQsk.js.map +1 -0
  66. package/dist/client/chunks/{core-DGLxd5v5.js → core-D_8mkGpQ.js} +2 -2
  67. package/dist/client/chunks/{core-DGLxd5v5.js.map → core-D_8mkGpQ.js.map} +1 -1
  68. package/dist/client/chunks/{providers-D2xswCYu.js → providers-CgxXm6Ll.js} +2 -2
  69. package/dist/client/chunks/{providers-D2xswCYu.js.map → providers-CgxXm6Ll.js.map} +1 -1
  70. package/dist/client/chunks/{syntaxHighlighting-DAT9C6Ss.js → syntaxHighlighting-BQfjio-i.js} +2 -2
  71. package/dist/client/chunks/{syntaxHighlighting-DAT9C6Ss.js.map → syntaxHighlighting-BQfjio-i.js.map} +1 -1
  72. package/dist/client/chunks/{useDirtyStateTracking-CTS_m9mg.js → useDirtyStateTracking-Cu1HSjmo.js} +9 -9
  73. package/dist/client/chunks/{useDirtyStateTracking-CTS_m9mg.js.map → useDirtyStateTracking-Cu1HSjmo.js.map} +1 -1
  74. package/dist/client/chunks/{vendor-DfDLOfBe.js → vendor-AVsJ2ni0.js} +4 -4
  75. package/dist/client/chunks/{vendor-DfDLOfBe.js.map → vendor-AVsJ2ni0.js.map} +1 -1
  76. package/dist/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.d.ts +3 -1
  77. package/dist/client/components/FloatingEditToolbar.d.ts +3 -1
  78. package/dist/client/components/TextPortletModal.d.ts +12 -0
  79. package/dist/client/components.js +15 -352
  80. package/dist/client/components.js.map +1 -1
  81. package/dist/client/hooks/useDashboardHook.d.ts +7 -2
  82. package/dist/client/hooks.js +23 -23
  83. package/dist/client/index.js +8 -8
  84. package/dist/client/providers.js +1 -1
  85. package/dist/client/stores/dashboardStore.d.ts +14 -0
  86. package/dist/client/styles.css +1 -1
  87. package/dist/client/types.d.ts +3 -0
  88. package/dist/client/utils.js +6 -6
  89. package/dist/client-bundle-stats.html +1 -1
  90. package/dist/server/index.cjs +83 -83
  91. package/dist/server/index.d.ts +26 -2
  92. package/dist/server/index.js +3034 -2931
  93. package/package.json +1 -1
  94. package/dist/adapters/mcp-transport-h__yKJm9.cjs +0 -257
  95. package/dist/client/chunks/DashboardEditModal-D6TDeTBa.js +0 -9165
  96. package/dist/client/chunks/DashboardEditModal-D6TDeTBa.js.map +0 -1
  97. package/dist/client/chunks/chart-config-markdown-DZxdGNVQ.js.map +0 -1
  98. package/dist/client/chunks/chart-markdown-Cget3iEq.js +0 -257
  99. package/dist/client/chunks/chart-markdown-Cget3iEq.js.map +0 -1
  100. package/dist/client/chunks/charts-core-DAF1iT_h.js.map +0 -1
@@ -4,6 +4,8 @@ interface AnalysisDisplayConfigPanelProps {
4
4
  displayConfig: ChartDisplayConfig;
5
5
  colorPalette?: ColorPalette;
6
6
  onDisplayConfigChange: (config: ChartDisplayConfig) => void;
7
+ /** Keys to exclude from displayOptionsConfig rendering (e.g., ['content'] when content is managed elsewhere) */
8
+ excludeKeys?: string[];
7
9
  }
8
- export default function AnalysisDisplayConfigPanel({ chartType, displayConfig, colorPalette, onDisplayConfigChange }: AnalysisDisplayConfigPanelProps): import("react/jsx-runtime").JSX.Element;
10
+ export default function AnalysisDisplayConfigPanel({ chartType, displayConfig, colorPalette, onDisplayConfigChange, excludeKeys, }: AnalysisDisplayConfigPanelProps): import("react/jsx-runtime").JSX.Element;
9
11
  export {};
@@ -23,6 +23,8 @@ interface FloatingEditToolbarProps {
23
23
  onPaletteChange: (palette: string) => void;
24
24
  /** Add new portlet */
25
25
  onAddPortlet: () => void;
26
+ /** Add new text portlet */
27
+ onAddText?: () => void;
26
28
  }
27
- export default function FloatingEditToolbar({ isEditBarVisible, position, isEditMode, onEditModeToggle, layoutMode, onLayoutModeChange, allowedModes, canChangeLayoutMode, currentPalette, onPaletteChange, onAddPortlet }: FloatingEditToolbarProps): React.ReactPortal | null;
29
+ export default function FloatingEditToolbar({ isEditBarVisible, position, isEditMode, onEditModeToggle, layoutMode, onLayoutModeChange, allowedModes, canChangeLayoutMode, currentPalette, onPaletteChange, onAddPortlet, onAddText }: FloatingEditToolbarProps): React.ReactPortal | null;
28
30
  export {};
@@ -0,0 +1,12 @@
1
+ import { PortletConfig } from '../types';
2
+ import { ColorPalette } from '../utils/colorPalettes';
3
+ interface TextPortletModalProps {
4
+ isOpen: boolean;
5
+ onClose: () => void;
6
+ onSave: (portlet: PortletConfig | Omit<PortletConfig, 'id' | 'x' | 'y'>) => void;
7
+ portlet?: PortletConfig | null;
8
+ colorPalette?: ColorPalette;
9
+ existingTitles?: string[];
10
+ }
11
+ export default function TextPortletModal({ isOpen, onClose, onSave, portlet, colorPalette, existingTitles, }: TextPortletModalProps): import("react/jsx-runtime").JSX.Element | null;
12
+ export {};
@@ -1,355 +1,18 @@
1
- import { a as V, A, e as T, D as P, M as G, P as H } from "./chunks/DashboardEditModal-D6TDeTBa.js";
2
- import { jsx as c, jsxs as a } from "react/jsx-runtime";
3
- import { useState as b, useEffect as o, useCallback as i } from "react";
4
- import { S as y, A as N } from "./chunks/charts-core-DAF1iT_h.js";
5
- import { useChartConfig as v } from "./charts.js";
6
- import { c as $, d as F, b as M, a as z, g as B, v as E } from "./chunks/index-CApFCBF9.js";
7
- function k({
8
- label: m,
9
- value: t,
10
- onChange: x,
11
- placeholder: r,
12
- description: s
13
- }) {
14
- const [u, n] = b(() => t.join(`
15
- `));
16
- o(() => {
17
- const d = t.join(`
18
- `);
19
- n(d);
20
- }, [t]);
21
- const e = i(() => {
22
- const d = u.split(`
23
- `).map((l) => l.trim()).filter((l) => l.length > 0);
24
- x(d);
25
- }, [u, x]);
26
- return /* @__PURE__ */ a("div", { className: "dc:space-y-1", children: [
27
- /* @__PURE__ */ c("label", { className: "dc:text-sm text-dc-text-secondary", children: m }),
28
- /* @__PURE__ */ c(
29
- "textarea",
30
- {
31
- value: u,
32
- onChange: (d) => n(d.target.value),
33
- onBlur: e,
34
- placeholder: r,
35
- rows: 4,
36
- 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 dc:resize-y"
37
- }
38
- ),
39
- s && /* @__PURE__ */ c("p", { className: "dc:text-xs text-dc-text-muted", children: s })
40
- ] });
41
- }
42
- function O({
43
- chartType: m,
44
- displayConfig: t,
45
- colorPalette: x,
46
- onDisplayConfigChange: r
47
- }) {
48
- const { config: s, loaded: u } = v(m);
49
- return u ? s.displayOptions && s.displayOptions.length > 0 || s.displayOptionsConfig && s.displayOptionsConfig.length > 0 ? /* @__PURE__ */ c("div", { className: "dc:space-y-6", children: /* @__PURE__ */ a("div", { children: [
50
- /* @__PURE__ */ c(y, { className: "dc:mb-2", children: "Display Options" }),
51
- /* @__PURE__ */ a("div", { className: "dc:space-y-2", children: [
52
- s.displayOptions?.includes("showLegend") && /* @__PURE__ */ a("label", { className: "dc:flex dc:items-center dc:space-x-2", children: [
53
- /* @__PURE__ */ c(
54
- "input",
55
- {
56
- type: "checkbox",
57
- checked: t.showLegend ?? !0,
58
- onChange: (e) => r({
59
- ...t,
60
- showLegend: e.target.checked
61
- }),
62
- className: "dc:rounded border-dc-border focus:ring-dc-accent",
63
- style: { color: "var(--dc-primary)" }
64
- }
65
- ),
66
- /* @__PURE__ */ c("span", { className: "dc:text-sm text-dc-text", children: "Show Legend" })
67
- ] }),
68
- s.displayOptions?.includes("showGrid") && /* @__PURE__ */ a("label", { className: "dc:flex dc:items-center dc:space-x-2", children: [
69
- /* @__PURE__ */ c(
70
- "input",
71
- {
72
- type: "checkbox",
73
- checked: t.showGrid ?? !0,
74
- onChange: (e) => r({
75
- ...t,
76
- showGrid: e.target.checked
77
- }),
78
- className: "dc:rounded border-dc-border focus:ring-dc-accent",
79
- style: { color: "var(--dc-primary)" }
80
- }
81
- ),
82
- /* @__PURE__ */ c("span", { className: "dc:text-sm text-dc-text", children: "Show Grid" })
83
- ] }),
84
- s.displayOptions?.includes("showTooltip") && /* @__PURE__ */ a("label", { className: "dc:flex dc:items-center dc:space-x-2", children: [
85
- /* @__PURE__ */ c(
86
- "input",
87
- {
88
- type: "checkbox",
89
- checked: t.showTooltip ?? !0,
90
- onChange: (e) => r({
91
- ...t,
92
- showTooltip: e.target.checked
93
- }),
94
- className: "dc:rounded border-dc-border focus:ring-dc-accent",
95
- style: { color: "var(--dc-primary)" }
96
- }
97
- ),
98
- /* @__PURE__ */ c("span", { className: "dc:text-sm text-dc-text", children: "Show Tooltip" })
99
- ] }),
100
- s.displayOptions?.includes("stacked") && /* @__PURE__ */ a("label", { className: "dc:flex dc:items-center dc:space-x-2", children: [
101
- /* @__PURE__ */ c(
102
- "input",
103
- {
104
- type: "checkbox",
105
- checked: t.stacked ?? !1,
106
- onChange: (e) => r({
107
- ...t,
108
- stacked: e.target.checked
109
- }),
110
- className: "dc:rounded border-dc-border focus:ring-dc-accent",
111
- style: { color: "var(--dc-primary)" }
112
- }
113
- ),
114
- /* @__PURE__ */ c("span", { className: "dc:text-sm text-dc-text", children: "Stacked" })
115
- ] }),
116
- s.displayOptions?.includes("hideHeader") && /* @__PURE__ */ a("label", { className: "dc:flex dc:items-center dc:space-x-2", children: [
117
- /* @__PURE__ */ c(
118
- "input",
119
- {
120
- type: "checkbox",
121
- checked: t.hideHeader ?? !1,
122
- onChange: (e) => r({
123
- ...t,
124
- hideHeader: e.target.checked
125
- }),
126
- className: "dc:rounded border-dc-border focus:ring-dc-accent",
127
- style: { color: "var(--dc-primary)" }
128
- }
129
- ),
130
- /* @__PURE__ */ c("span", { className: "dc:text-sm text-dc-text", children: "Hide Header" })
131
- ] }),
132
- s.displayOptionsConfig?.map((e) => /* @__PURE__ */ a("div", { className: `dc:space-y-1 ${e.type === "axisFormat" ? "dc:mt-6 dc:pt-2" : ""}`, children: [
133
- e.type === "boolean" && /* @__PURE__ */ a("label", { className: "dc:flex dc:items-center dc:space-x-2", children: [
134
- /* @__PURE__ */ c(
135
- "input",
136
- {
137
- type: "checkbox",
138
- checked: t[e.key] ?? e.defaultValue ?? !1,
139
- onChange: (d) => r({
140
- ...t,
141
- [e.key]: d.target.checked
142
- }),
143
- className: "dc:rounded border-dc-border focus:ring-dc-accent",
144
- style: { color: "var(--dc-primary)" }
145
- }
146
- ),
147
- /* @__PURE__ */ c("span", { className: "dc:text-sm text-dc-text", children: e.label })
148
- ] }),
149
- e.type === "string" && /* @__PURE__ */ a("div", { className: "dc:space-y-1", children: [
150
- /* @__PURE__ */ a("label", { className: "dc:text-sm text-dc-text-secondary", children: [
151
- e.label,
152
- e.key === "content" && /* @__PURE__ */ c("span", { className: "dc:text-xs text-dc-text-muted dc:ml-1", children: "(only headers, lists and links)" })
153
- ] }),
154
- e.key === "content" ? /* @__PURE__ */ c(
155
- "textarea",
156
- {
157
- value: t[e.key] ?? e.defaultValue ?? "",
158
- onChange: (d) => r({
159
- ...t,
160
- [e.key]: d.target.value
161
- }),
162
- placeholder: e.placeholder,
163
- rows: 8,
164
- 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 dc:font-mono dc:resize-y bg-dc-surface text-dc-text"
165
- }
166
- ) : /* @__PURE__ */ c(
167
- "input",
168
- {
169
- type: "text",
170
- value: t[e.key] ?? e.defaultValue ?? "",
171
- onChange: (d) => r({
172
- ...t,
173
- [e.key]: d.target.value
174
- }),
175
- placeholder: e.placeholder,
176
- 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"
177
- }
178
- ),
179
- e.description && /* @__PURE__ */ c("p", { className: "dc:text-xs text-dc-text-muted", children: e.description })
180
- ] }),
181
- e.type === "paletteColor" && /* @__PURE__ */ a("div", { className: "dc:space-y-1", children: [
182
- /* @__PURE__ */ c("label", { className: "dc:text-sm text-dc-text-secondary", children: e.label }),
183
- /* @__PURE__ */ c("div", { className: "dc:flex dc:flex-wrap dc:gap-2", children: x?.colors.map((d, l) => {
184
- const h = (t[e.key] ?? e.defaultValue ?? 0) === l;
185
- return /* @__PURE__ */ c(
186
- "button",
187
- {
188
- type: "button",
189
- onClick: () => r({
190
- ...t,
191
- [e.key]: l
192
- }),
193
- className: `dc:w-8 dc:h-8 dc:rounded dc:border-2 dc:transition-all dc:duration-200 dc:hover:scale-110 focus:outline-hidden dc:focus:ring-2 focus:ring-dc-accent dc:focus:ring-offset-1 ${h ? "dc:ring-2 dc:ring-offset-1 dc:scale-110" : "hover:border-dc-text-muted"}`,
194
- style: {
195
- backgroundColor: d,
196
- borderColor: h ? "var(--dc-primary)" : "var(--dc-border)"
197
- },
198
- title: `Color ${l + 1}: ${d}`
199
- },
200
- l
201
- );
202
- }) || [
203
- // Fallback if no palette available
204
- /* @__PURE__ */ c(
205
- "button",
206
- {
207
- type: "button",
208
- onClick: () => r({
209
- ...t,
210
- [e.key]: 0
211
- }),
212
- className: "dc:w-8 dc:h-8 dc:rounded-sm dc:border-2 dc:ring-2 dc:ring-offset-1",
213
- style: {
214
- backgroundColor: "#8884d8",
215
- borderColor: "var(--dc-primary)",
216
- boxShadow: "0 0 0 2px var(--dc-primary)"
217
- },
218
- title: "Default Color"
219
- },
220
- 0
221
- )
222
- ] }),
223
- e.description && /* @__PURE__ */ c("p", { className: "dc:text-xs text-dc-text-muted", children: e.description })
224
- ] }),
225
- e.type === "number" && /* @__PURE__ */ a("div", { className: "dc:space-y-1", children: [
226
- /* @__PURE__ */ c("label", { className: "dc:text-sm text-dc-text-secondary", children: e.label }),
227
- /* @__PURE__ */ c(
228
- "input",
229
- {
230
- type: "number",
231
- value: t[e.key] ?? e.defaultValue ?? 0,
232
- onChange: (d) => r({
233
- ...t,
234
- [e.key]: d.target.value === "" ? void 0 : Number(d.target.value)
235
- }),
236
- placeholder: e.placeholder,
237
- min: e.min,
238
- max: e.max,
239
- step: e.step,
240
- 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"
241
- }
242
- ),
243
- e.description && /* @__PURE__ */ c("p", { className: "dc:text-xs text-dc-text-muted", children: e.description })
244
- ] }),
245
- e.type === "select" && /* @__PURE__ */ a("div", { className: "dc:space-y-1", children: [
246
- /* @__PURE__ */ c("label", { className: "dc:text-sm text-dc-text-secondary", children: e.label }),
247
- /* @__PURE__ */ c(
248
- "select",
249
- {
250
- value: t[e.key] ?? e.defaultValue ?? "",
251
- onChange: (d) => r({
252
- ...t,
253
- [e.key]: d.target.value
254
- }),
255
- 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",
256
- children: e.options?.map((d) => /* @__PURE__ */ c("option", { value: d.value, children: d.label }, d.value))
257
- }
258
- ),
259
- e.description && /* @__PURE__ */ c("p", { className: "dc:text-xs text-dc-text-muted", children: e.description })
260
- ] }),
261
- e.type === "color" && /* @__PURE__ */ a("div", { className: "dc:space-y-1", children: [
262
- /* @__PURE__ */ c("label", { className: "dc:text-sm text-dc-text-secondary", children: e.label }),
263
- /* @__PURE__ */ a("div", { className: "dc:flex dc:items-center dc:space-x-2", children: [
264
- /* @__PURE__ */ c(
265
- "input",
266
- {
267
- type: "color",
268
- value: t[e.key] ?? e.defaultValue ?? "#8884d8",
269
- onChange: (d) => r({
270
- ...t,
271
- [e.key]: d.target.value
272
- }),
273
- className: "dc:w-12 dc:h-8 dc:border border-dc-border dc:rounded-sm dc:cursor-pointer"
274
- }
275
- ),
276
- /* @__PURE__ */ c(
277
- "input",
278
- {
279
- type: "text",
280
- value: t[e.key] ?? e.defaultValue ?? "#8884d8",
281
- onChange: (d) => r({
282
- ...t,
283
- [e.key]: d.target.value
284
- }),
285
- placeholder: e.placeholder || "#8884d8",
286
- className: "dc:flex-1 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"
287
- }
288
- )
289
- ] }),
290
- e.description && /* @__PURE__ */ c("p", { className: "dc:text-xs text-dc-text-muted", children: e.description })
291
- ] }),
292
- e.type === "axisFormat" && /* @__PURE__ */ c(
293
- N,
294
- {
295
- axisLabel: e.label,
296
- value: t[e.key] || {},
297
- onChange: (d) => r({
298
- ...t,
299
- [e.key]: Object.keys(d).length > 0 ? d : void 0
300
- })
301
- }
302
- ),
303
- e.type === "stringArray" && /* @__PURE__ */ c(
304
- k,
305
- {
306
- label: e.label,
307
- value: t[e.key] ?? [],
308
- onChange: (d) => r({
309
- ...t,
310
- [e.key]: d.length > 0 ? d : void 0
311
- }),
312
- placeholder: e.placeholder,
313
- description: e.description
314
- }
315
- ),
316
- e.type === "buttonGroup" && /* @__PURE__ */ a("div", { className: "dc:space-y-1", children: [
317
- /* @__PURE__ */ c("label", { className: "dc:text-sm text-dc-text-secondary", children: e.label }),
318
- /* @__PURE__ */ c("div", { className: "dc:flex dc:border border-dc-border dc:rounded-sm dc:overflow-hidden", children: e.options?.map((d) => {
319
- const l = (t[e.key] ?? e.defaultValue) === d.value;
320
- return /* @__PURE__ */ c(
321
- "button",
322
- {
323
- type: "button",
324
- onClick: () => r({
325
- ...t,
326
- [e.key]: d.value
327
- }),
328
- className: `dc:flex-1 dc:px-3 dc:py-1.5 dc:text-sm dc:font-medium dc:transition-colors ${l ? "bg-dc-primary text-white" : "bg-dc-surface text-dc-text hover:bg-dc-border"}`,
329
- children: d.label
330
- },
331
- d.value
332
- );
333
- }) }),
334
- e.description && /* @__PURE__ */ c("p", { className: "dc:text-xs text-dc-text-muted", children: e.description })
335
- ] })
336
- ] }, e.key))
337
- ] })
338
- ] }) }) : /* @__PURE__ */ c("div", { className: "dc:text-center text-dc-text-muted dc:text-sm dc:py-4", children: /* @__PURE__ */ c("p", { children: "No display options available for this chart type." }) }) : /* @__PURE__ */ c("div", { className: "dc:text-center text-dc-text-muted dc:text-sm dc:py-4", children: "Loading display options..." });
339
- }
1
+ import { a8 as s, a as t, A as o, e as r, D as i, M as l, P as d } from "./chunks/components-D0i1yQsk.js";
2
+ import { c as y, d as P, b, a as D, g as c, v as p } from "./chunks/index-CApFCBF9.js";
340
3
  export {
341
- O as AnalysisDisplayConfigPanel,
342
- V as AnalyticsDashboard,
343
- A as AnalyticsPortlet,
344
- T as DashboardEditModal,
345
- P as DashboardGrid,
346
- G as Modal,
347
- H as PortletContainer,
348
- $ as createDashboardLayout,
349
- F as createSamplePortlet,
350
- M as findNextPosition,
351
- z as generatePortletId,
352
- B as generateResponsiveLayouts,
353
- E as validateCubeQuery
4
+ s as AnalysisDisplayConfigPanel,
5
+ t as AnalyticsDashboard,
6
+ o as AnalyticsPortlet,
7
+ r as DashboardEditModal,
8
+ i as DashboardGrid,
9
+ l as Modal,
10
+ d as PortletContainer,
11
+ y as createDashboardLayout,
12
+ P as createSamplePortlet,
13
+ b as findNextPosition,
14
+ D as generatePortletId,
15
+ c as generateResponsiveLayouts,
16
+ p as validateCubeQuery
354
17
  };
355
18
  //# sourceMappingURL=components.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"components.js","sources":["../../src/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.tsx"],"sourcesContent":["/**\n * AnalysisDisplayConfigPanel Component\n *\n * A panel for configuring chart display options (legend, grid, tooltip, etc.)\n * Extracted from AnalysisChartConfigPanel to be shown in its own tab.\n */\n\nimport { useState, useCallback, useEffect } from 'react'\nimport SectionHeading from './SectionHeading'\nimport { useChartConfig } from '../../charts/lazyChartConfigRegistry'\nimport type { ChartType, ChartDisplayConfig, ColorPalette, AxisFormatConfig } from '../../types'\nimport { AxisFormatControls } from '../charts/AxisFormatControls'\n\ninterface AnalysisDisplayConfigPanelProps {\n chartType: ChartType\n displayConfig: ChartDisplayConfig\n colorPalette?: ColorPalette\n onDisplayConfigChange: (config: ChartDisplayConfig) => void\n}\n\n/**\n * StringArrayInput - A textarea that edits an array of strings\n * Uses local state while editing and only updates on blur\n */\nfunction StringArrayInput({\n label,\n value,\n onChange,\n placeholder,\n description,\n}: {\n label: string\n value: string[]\n onChange: (value: string[]) => void\n placeholder?: string\n description?: string\n}) {\n // Local state for textarea editing\n const [localText, setLocalText] = useState(() => value.join('\\n'))\n\n // Sync local state when external value changes (e.g., from undo/redo or load)\n useEffect(() => {\n const externalText = value.join('\\n')\n setLocalText(externalText)\n }, [value])\n\n const handleBlur = useCallback(() => {\n // Convert text to array, filtering empty strings\n const arrayValue = localText\n .split('\\n')\n .map(s => s.trim())\n .filter(s => s.length > 0)\n onChange(arrayValue)\n }, [localText, onChange])\n\n return (\n <div className=\"dc:space-y-1\">\n <label className=\"dc:text-sm text-dc-text-secondary\">{label}</label>\n <textarea\n value={localText}\n onChange={(e) => setLocalText(e.target.value)}\n onBlur={handleBlur}\n placeholder={placeholder}\n rows={4}\n 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 dc:resize-y\"\n />\n {description && (\n <p className=\"dc:text-xs text-dc-text-muted\">{description}</p>\n )}\n </div>\n )\n}\n\nexport default function AnalysisDisplayConfigPanel({\n chartType,\n displayConfig,\n colorPalette,\n onDisplayConfigChange\n}: AnalysisDisplayConfigPanelProps) {\n // Get configuration for current chart type\n const { config: chartTypeConfig, loaded: chartConfigLoaded } = useChartConfig(chartType)\n\n if (!chartConfigLoaded) {\n return (\n <div className=\"dc:text-center text-dc-text-muted dc:text-sm dc:py-4\">\n Loading display options...\n </div>\n )\n }\n\n // Check if we have any display options to show\n const hasDisplayOptions =\n (chartTypeConfig.displayOptions && chartTypeConfig.displayOptions.length > 0) ||\n (chartTypeConfig.displayOptionsConfig && chartTypeConfig.displayOptionsConfig.length > 0)\n\n if (!hasDisplayOptions) {\n return (\n <div className=\"dc:text-center text-dc-text-muted dc:text-sm dc:py-4\">\n <p>No display options available for this chart type.</p>\n </div>\n )\n }\n\n return (\n <div className=\"dc:space-y-6\">\n <div>\n <SectionHeading className=\"dc:mb-2\">Display Options</SectionHeading>\n <div className=\"dc:space-y-2\">\n {/* Backward compatibility: Simple boolean display options */}\n {chartTypeConfig.displayOptions?.includes('showLegend') && (\n <label className=\"dc:flex dc:items-center dc:space-x-2\">\n <input\n type=\"checkbox\"\n checked={displayConfig.showLegend ?? true}\n onChange={(e) =>\n onDisplayConfigChange({\n ...displayConfig,\n showLegend: e.target.checked\n })\n }\n className=\"dc:rounded border-dc-border focus:ring-dc-accent\"\n style={{ color: 'var(--dc-primary)' }}\n />\n <span className=\"dc:text-sm text-dc-text\">Show Legend</span>\n </label>\n )}\n\n {chartTypeConfig.displayOptions?.includes('showGrid') && (\n <label className=\"dc:flex dc:items-center dc:space-x-2\">\n <input\n type=\"checkbox\"\n checked={displayConfig.showGrid ?? true}\n onChange={(e) =>\n onDisplayConfigChange({\n ...displayConfig,\n showGrid: e.target.checked\n })\n }\n className=\"dc:rounded border-dc-border focus:ring-dc-accent\"\n style={{ color: 'var(--dc-primary)' }}\n />\n <span className=\"dc:text-sm text-dc-text\">Show Grid</span>\n </label>\n )}\n\n {chartTypeConfig.displayOptions?.includes('showTooltip') && (\n <label className=\"dc:flex dc:items-center dc:space-x-2\">\n <input\n type=\"checkbox\"\n checked={displayConfig.showTooltip ?? true}\n onChange={(e) =>\n onDisplayConfigChange({\n ...displayConfig,\n showTooltip: e.target.checked\n })\n }\n className=\"dc:rounded border-dc-border focus:ring-dc-accent\"\n style={{ color: 'var(--dc-primary)' }}\n />\n <span className=\"dc:text-sm text-dc-text\">Show Tooltip</span>\n </label>\n )}\n\n {chartTypeConfig.displayOptions?.includes('stacked') && (\n <label className=\"dc:flex dc:items-center dc:space-x-2\">\n <input\n type=\"checkbox\"\n checked={displayConfig.stacked ?? false}\n onChange={(e) =>\n onDisplayConfigChange({\n ...displayConfig,\n stacked: e.target.checked\n })\n }\n className=\"dc:rounded border-dc-border focus:ring-dc-accent\"\n style={{ color: 'var(--dc-primary)' }}\n />\n <span className=\"dc:text-sm text-dc-text\">Stacked</span>\n </label>\n )}\n\n {chartTypeConfig.displayOptions?.includes('hideHeader') && (\n <label className=\"dc:flex dc:items-center dc:space-x-2\">\n <input\n type=\"checkbox\"\n checked={displayConfig.hideHeader ?? false}\n onChange={(e) =>\n onDisplayConfigChange({\n ...displayConfig,\n hideHeader: e.target.checked\n })\n }\n className=\"dc:rounded border-dc-border focus:ring-dc-accent\"\n style={{ color: 'var(--dc-primary)' }}\n />\n <span className=\"dc:text-sm text-dc-text\">Hide Header</span>\n </label>\n )}\n\n {/* New structured display options */}\n {chartTypeConfig.displayOptionsConfig?.map((option) => (\n <div key={option.key} className={`dc:space-y-1 ${option.type === 'axisFormat' ? 'dc:mt-6 dc:pt-2' : ''}`}>\n {option.type === 'boolean' && (\n <label className=\"dc:flex dc:items-center dc:space-x-2\">\n <input\n type=\"checkbox\"\n checked={\n (displayConfig[option.key as keyof ChartDisplayConfig] as boolean) ??\n option.defaultValue ??\n false\n }\n onChange={(e) =>\n onDisplayConfigChange({\n ...displayConfig,\n [option.key]: e.target.checked\n })\n }\n className=\"dc:rounded border-dc-border focus:ring-dc-accent\"\n style={{ color: 'var(--dc-primary)' }}\n />\n <span className=\"dc:text-sm text-dc-text\">{option.label}</span>\n </label>\n )}\n\n {option.type === 'string' && (\n <div className=\"dc:space-y-1\">\n <label className=\"dc:text-sm text-dc-text-secondary\">\n {option.label}\n {option.key === 'content' && (\n <span className=\"dc:text-xs text-dc-text-muted dc:ml-1\">\n (only headers, lists and links)\n </span>\n )}\n </label>\n {option.key === 'content' ? (\n <textarea\n value={\n (displayConfig[option.key as keyof ChartDisplayConfig] as string) ??\n option.defaultValue ??\n ''\n }\n onChange={(e) =>\n onDisplayConfigChange({\n ...displayConfig,\n [option.key]: e.target.value\n })\n }\n placeholder={option.placeholder}\n rows={8}\n 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 dc:font-mono dc:resize-y bg-dc-surface text-dc-text\"\n />\n ) : (\n <input\n type=\"text\"\n value={\n (displayConfig[option.key as keyof ChartDisplayConfig] as string) ??\n option.defaultValue ??\n ''\n }\n onChange={(e) =>\n onDisplayConfigChange({\n ...displayConfig,\n [option.key]: e.target.value\n })\n }\n placeholder={option.placeholder}\n 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\"\n />\n )}\n {option.description && (\n <p className=\"dc:text-xs text-dc-text-muted\">{option.description}</p>\n )}\n </div>\n )}\n\n {option.type === 'paletteColor' && (\n <div className=\"dc:space-y-1\">\n <label className=\"dc:text-sm text-dc-text-secondary\">{option.label}</label>\n <div className=\"dc:flex dc:flex-wrap dc:gap-2\">\n {colorPalette?.colors.map((color, index) => {\n const isSelected =\n ((displayConfig[option.key as keyof ChartDisplayConfig] as number) ??\n option.defaultValue ??\n 0) === index\n return (\n <button\n key={index}\n type=\"button\"\n onClick={() =>\n onDisplayConfigChange({\n ...displayConfig,\n [option.key]: index\n })\n }\n className={`dc:w-8 dc:h-8 dc:rounded dc:border-2 dc:transition-all dc:duration-200 dc:hover:scale-110 focus:outline-hidden dc:focus:ring-2 focus:ring-dc-accent dc:focus:ring-offset-1 ${\n isSelected\n ? 'dc:ring-2 dc:ring-offset-1 dc:scale-110'\n : 'hover:border-dc-text-muted'\n }`}\n style={{\n backgroundColor: color,\n borderColor: isSelected ? 'var(--dc-primary)' : 'var(--dc-border)'\n }}\n title={`Color ${index + 1}: ${color}`}\n />\n )\n }) || [\n // Fallback if no palette available\n <button\n key={0}\n type=\"button\"\n onClick={() =>\n onDisplayConfigChange({\n ...displayConfig,\n [option.key]: 0\n })\n }\n className=\"dc:w-8 dc:h-8 dc:rounded-sm dc:border-2 dc:ring-2 dc:ring-offset-1\"\n style={{\n backgroundColor: '#8884d8',\n borderColor: 'var(--dc-primary)',\n boxShadow: '0 0 0 2px var(--dc-primary)'\n }}\n title=\"Default Color\"\n />\n ]}\n </div>\n {option.description && (\n <p className=\"dc:text-xs text-dc-text-muted\">{option.description}</p>\n )}\n </div>\n )}\n\n {option.type === 'number' && (\n <div className=\"dc:space-y-1\">\n <label className=\"dc:text-sm text-dc-text-secondary\">{option.label}</label>\n <input\n type=\"number\"\n value={\n (displayConfig[option.key as keyof ChartDisplayConfig] as number) ??\n option.defaultValue ??\n 0\n }\n onChange={(e) =>\n onDisplayConfigChange({\n ...displayConfig,\n [option.key]: e.target.value === '' ? undefined : Number(e.target.value)\n })\n }\n placeholder={option.placeholder}\n min={option.min}\n max={option.max}\n step={option.step}\n 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\"\n />\n {option.description && (\n <p className=\"dc:text-xs text-dc-text-muted\">{option.description}</p>\n )}\n </div>\n )}\n\n {option.type === 'select' && (\n <div className=\"dc:space-y-1\">\n <label className=\"dc:text-sm text-dc-text-secondary\">{option.label}</label>\n <select\n value={\n (displayConfig[option.key as keyof ChartDisplayConfig] as string) ??\n option.defaultValue ??\n ''\n }\n onChange={(e) =>\n onDisplayConfigChange({\n ...displayConfig,\n [option.key]: e.target.value\n })\n }\n 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\"\n >\n {option.options?.map((opt) => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))}\n </select>\n {option.description && (\n <p className=\"dc:text-xs text-dc-text-muted\">{option.description}</p>\n )}\n </div>\n )}\n\n {option.type === 'color' && (\n <div className=\"dc:space-y-1\">\n <label className=\"dc:text-sm text-dc-text-secondary\">{option.label}</label>\n <div className=\"dc:flex dc:items-center dc:space-x-2\">\n <input\n type=\"color\"\n value={\n (displayConfig[option.key as keyof ChartDisplayConfig] as string) ??\n option.defaultValue ??\n '#8884d8'\n }\n onChange={(e) =>\n onDisplayConfigChange({\n ...displayConfig,\n [option.key]: e.target.value\n })\n }\n className=\"dc:w-12 dc:h-8 dc:border border-dc-border dc:rounded-sm dc:cursor-pointer\"\n />\n <input\n type=\"text\"\n value={\n (displayConfig[option.key as keyof ChartDisplayConfig] as string) ??\n option.defaultValue ??\n '#8884d8'\n }\n onChange={(e) =>\n onDisplayConfigChange({\n ...displayConfig,\n [option.key]: e.target.value\n })\n }\n placeholder={option.placeholder || '#8884d8'}\n className=\"dc:flex-1 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\"\n />\n </div>\n {option.description && (\n <p className=\"dc:text-xs text-dc-text-muted\">{option.description}</p>\n )}\n </div>\n )}\n\n {option.type === 'axisFormat' && (\n <AxisFormatControls\n axisLabel={option.label}\n value={(displayConfig[option.key as keyof ChartDisplayConfig] as AxisFormatConfig) || {}}\n onChange={(config) =>\n onDisplayConfigChange({\n ...displayConfig,\n [option.key]: Object.keys(config).length > 0 ? config : undefined\n })\n }\n />\n )}\n\n {option.type === 'stringArray' && (\n <StringArrayInput\n label={option.label}\n value={(displayConfig[option.key as keyof ChartDisplayConfig] as string[]) ?? []}\n onChange={(arrayValue) =>\n onDisplayConfigChange({\n ...displayConfig,\n [option.key]: arrayValue.length > 0 ? arrayValue : undefined\n })\n }\n placeholder={option.placeholder}\n description={option.description}\n />\n )}\n\n {option.type === 'buttonGroup' && (\n <div className=\"dc:space-y-1\">\n <label className=\"dc:text-sm text-dc-text-secondary\">{option.label}</label>\n <div className=\"dc:flex dc:border border-dc-border dc:rounded-sm dc:overflow-hidden\">\n {option.options?.map((opt) => {\n const isSelected = (displayConfig[option.key as keyof ChartDisplayConfig] ?? option.defaultValue) === opt.value\n return (\n <button\n key={opt.value}\n type=\"button\"\n onClick={() =>\n onDisplayConfigChange({\n ...displayConfig,\n [option.key]: opt.value\n })\n }\n className={`dc:flex-1 dc:px-3 dc:py-1.5 dc:text-sm dc:font-medium dc:transition-colors ${\n isSelected\n ? 'bg-dc-primary text-white'\n : 'bg-dc-surface text-dc-text hover:bg-dc-border'\n }`}\n >\n {opt.label}\n </button>\n )\n })}\n </div>\n {option.description && (\n <p className=\"dc:text-xs text-dc-text-muted\">{option.description}</p>\n )}\n </div>\n )}\n </div>\n ))}\n </div>\n </div>\n </div>\n )\n}\n"],"names":["StringArrayInput","label","value","onChange","placeholder","description","localText","setLocalText","useState","useEffect","externalText","handleBlur","useCallback","arrayValue","s","jsxs","jsx","e","AnalysisDisplayConfigPanel","chartType","displayConfig","colorPalette","onDisplayConfigChange","chartTypeConfig","chartConfigLoaded","useChartConfig","SectionHeading","option","color","index","isSelected","opt","AxisFormatControls","config"],"mappings":"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"}
1
+ {"version":3,"file":"components.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -45,6 +45,10 @@ export interface UseDashboardResult {
45
45
  isPortletModalOpen: boolean;
46
46
  /** Portlet being edited */
47
47
  editingPortlet: PortletConfig | null;
48
+ /** Whether text portlet modal is open */
49
+ isTextModalOpen: boolean;
50
+ /** Portlet being edited in text modal */
51
+ editingTextPortlet: PortletConfig | null;
48
52
  /** Whether filter config modal is open */
49
53
  isFilterConfigModalOpen: boolean;
50
54
  /** Portlet for filter configuration */
@@ -59,8 +63,6 @@ export interface UseDashboardResult {
59
63
  lastKnownLayout: LayoutItem[];
60
64
  /** Whether component is initialized */
61
65
  isInitialized: boolean;
62
- /** Debug data per portlet */
63
- debugData: Record<string, PortletDebugDataEntry>;
64
66
  /** Whether editing is allowed (editable && isEditMode && desktop && !filterMode) */
65
67
  canEdit: boolean;
66
68
  /** Whether layout mode can be changed */
@@ -84,6 +86,9 @@ export interface UseDashboardActions {
84
86
  openAddPortlet: () => void;
85
87
  openEditPortlet: (portlet: PortletConfig) => void;
86
88
  closePortletModal: () => void;
89
+ openAddText: () => void;
90
+ openEditText: (portlet: PortletConfig) => void;
91
+ closeTextModal: () => void;
87
92
  openFilterConfig: (portlet: PortletConfig) => void;
88
93
  closeFilterConfig: () => void;
89
94
  setDraftRows: (rows: RowLayout[] | null) => void;
@@ -1,8 +1,8 @@
1
- import { t as p, B as h } from "./chunks/useDirtyStateTracking-CTS_m9mg.js";
2
- import { e as Y, c as $, u as B, u as H, p as J, A as V, r as W, d as X, b as G, a as Z, z as ee, o as ne } from "./chunks/useDirtyStateTracking-CTS_m9mg.js";
3
- import { f as m, g as E } from "./chunks/providers-D2xswCYu.js";
4
- import { j as te } from "./chunks/providers-D2xswCYu.js";
5
- import { a as w, i as F, u as A, j as q } from "./chunks/vendor-DfDLOfBe.js";
1
+ import { t as p, w as h } from "./chunks/useDirtyStateTracking-Cu1HSjmo.js";
2
+ import { e as Y, c as $, u as H, u as J, p as V, x as W, r as X, d as B, b as G, a as Z, y as ee, o as ne } from "./chunks/useDirtyStateTracking-Cu1HSjmo.js";
3
+ import { f as m, g as E } from "./chunks/providers-CgxXm6Ll.js";
4
+ import { j as te } from "./chunks/providers-CgxXm6Ll.js";
5
+ import { a as w, h as F, u as A, i as q } from "./chunks/vendor-AVsJ2ni0.js";
6
6
  import { useMemo as b, useState as g, useCallback as d } from "react";
7
7
  function R(e) {
8
8
  return e ? ["cube", "dryRun", h(e)] : ["cube", "dryRun", null];
@@ -22,7 +22,7 @@ function x(e) {
22
22
  modeMetadata: e.modeMetadata
23
23
  };
24
24
  }
25
- function z(e, s = {}) {
25
+ function S(e, s = {}) {
26
26
  const { skip: i = !1, staleTime: a = 300 * 1e3 } = s, { cubeApi: o } = m(), r = b(() => {
27
27
  if (!e) return null;
28
28
  const t = e;
@@ -54,7 +54,7 @@ function z(e, s = {}) {
54
54
  refetch: () => u.refetch()
55
55
  };
56
56
  }
57
- function j(e, s = {}) {
57
+ function v(e, s = {}) {
58
58
  const { skip: i = !1, staleTime: a = 300 * 1e3 } = s, { cubeApi: o } = m(), r = b(() => e.map((n) => p(n)), [e]), u = F({
59
59
  queries: r.map((n) => ({
60
60
  queryKey: R(n),
@@ -86,14 +86,14 @@ function j(e, s = {}) {
86
86
  }
87
87
  };
88
88
  }
89
- function S(e) {
89
+ function z(e) {
90
90
  const { queries: s, isMultiQueryMode: i, skip: a = !1, staleTime: o } = e, r = i ? s : s.slice(0, 1);
91
- return j(r, { skip: a, staleTime: o });
91
+ return v(r, { skip: a, staleTime: o });
92
92
  }
93
- function v(e, s) {
93
+ function D(e, s) {
94
94
  return e ? ["cube", "explain", h(e), s?.analyze ?? !1] : ["cube", "explain", null, null];
95
95
  }
96
- function D(e) {
96
+ function j(e) {
97
97
  return typeof e == "object" && e !== null && "funnel" in e;
98
98
  }
99
99
  function C(e) {
@@ -103,8 +103,8 @@ function K(e) {
103
103
  return typeof e == "object" && e !== null && "retention" in e;
104
104
  }
105
105
  function P(e, s = {}) {
106
- const { skip: i = !1 } = s, { cubeApi: a } = m(), [o, r] = g(null), [u, l] = g(!1), t = b(() => e ? D(e) || C(e) || K(e) ? e : p(e) : null, [e]), c = !!t && !i && u, n = w({
107
- queryKey: v(t, o ?? void 0),
106
+ const { skip: i = !1 } = s, { cubeApi: a } = m(), [o, r] = g(null), [u, l] = g(!1), t = b(() => e ? j(e) || C(e) || K(e) ? e : p(e) : null, [e]), c = !!t && !i && u, n = w({
107
+ queryKey: D(t, o ?? void 0),
108
108
  queryFn: async () => {
109
109
  if (!t) throw new Error("No query provided");
110
110
  return await a.explain(t, o ?? void 0);
@@ -174,23 +174,23 @@ function U(e = {}) {
174
174
  };
175
175
  }
176
176
  export {
177
- v as createExplainQueryKey,
177
+ D as createExplainQueryKey,
178
178
  Y as createFlowQueryKey,
179
179
  $ as createFunnelQueryKey,
180
- B as useCubeLoadQuery,
180
+ H as useCubeLoadQuery,
181
181
  te as useCubeMetaQuery,
182
- H as useCubeQuery,
183
- J as useDebounce,
184
- V as useDirtyStateTracking,
185
- S as useDryRunQueries,
186
- z as useDryRunQuery,
182
+ J as useCubeQuery,
183
+ V as useDebounce,
184
+ W as useDirtyStateTracking,
185
+ z as useDryRunQueries,
186
+ S as useDryRunQuery,
187
187
  U as useExplainAI,
188
188
  P as useExplainQuery,
189
- W as useFilterValues,
190
- X as useFlowQuery,
189
+ X as useFilterValues,
190
+ B as useFlowQuery,
191
191
  G as useFunnelQuery,
192
192
  Z as useMultiCubeLoadQuery,
193
- j as useMultiDryRunQueries,
193
+ v as useMultiDryRunQueries,
194
194
  ee as useResponsiveDashboard,
195
195
  ne as useRetentionQuery
196
196
  };
@@ -1,19 +1,19 @@
1
- import { g as d, a as y, A as g, C as m, f as b, e as C, D as h, h as f, c as p, b as D, M as x, d as S, P as Q, l as A, R as M, O as F, N as v, L as T, Q as I, T as E, G as L, F as P, I as B, U as w, E as R, H as K, V, J as k, K as N, S as j, W as U, X as z, x as G, o as O, v as W, q, s as H, t as _, n as J, r as X, m as $, p as Y, w as Z, u as ee, i as ae, j as se, k as te, B as re, z as ie, y as le } from "./chunks/DashboardEditModal-D6TDeTBa.js";
1
+ import { g as d, a as y, A as g, C as m, f as b, e as C, D as h, h as f, c as p, b as D, M as x, d as S, P as Q, l as A, R as M, O as F, N as v, L as T, Q as I, T as E, G as L, F as P, I as B, U as w, E as R, H as K, V, J as k, K as N, S as j, W as U, X as z, x as G, o as O, v as W, q, s as H, t as _, n as J, r as X, m as $, p as Y, w as Z, u as ee, i as ae, j as se, k as te, B as re, z as ie, y as le } from "./chunks/components-D0i1yQsk.js";
2
2
  import { jsx as e, jsxs as s } from "react/jsx-runtime";
3
- import { L as ne, u as ue } from "./chunks/charts-core-DAF1iT_h.js";
4
- import { L as de, g as ye, c as ge, b as me, i as be, p as Ce, a as he } from "./chunks/charts-loader-7pEaEz-f.js";
3
+ import { L as ne, u as ue } from "./chunks/charts-core-T8UglYyq.js";
4
+ import { L as de, g as ye, c as ge, b as me, i as be, p as Ce, a as he } from "./chunks/charts-loader-YnhJHubD.js";
5
5
  import { b as t } from "./chunks/icons-DRreo6m8.js";
6
6
  import { D as pe, a as De, i as xe, c as Se, f as Qe, h as Ae, g as Me, r as Fe, e as ve, s as Te } from "./chunks/icons-DRreo6m8.js";
7
- import { E as Ee, a as Le, p as Pe, q as Be, m as we, l as Re, r as Ke, C as Ve, D as ke, o as Ne, B as je, n as Ue, w as ze, t as Ge, d as Oe, f as We, s as qe, e as He, i as _e, c as Je, h as Xe, g as $e, u as Ye, b as Ze, y as ea, A as aa, x as sa, k as ta, v as ra, z as ia, j as la } from "./chunks/analysis-builder-shared-gky0SKQH.js";
8
- import { h as na, a as ua, S as ca, e as da, d as ya, i as ga, f as ma, b as ba, g as Ca, u as ha, j as fa, c as pa, w as Da } from "./chunks/providers-D2xswCYu.js";
9
- import { u as Sa } from "./chunks/chart-bubble-D-auWIjP.js";
7
+ import { E as Ee, a as Le, p as Pe, q as Be, m as we, l as Re, r as Ke, C as Ve, D as ke, o as Ne, B as je, n as Ue, w as ze, t as Ge, d as Oe, f as We, s as qe, e as He, i as _e, c as Je, h as Xe, g as $e, u as Ye, b as Ze, y as ea, A as aa, x as sa, k as ta, v as ra, z as ia, j as la } from "./chunks/analysis-builder-shared-INGGwyTG.js";
8
+ import { h as na, a as ua, S as ca, e as da, d as ya, i as ga, f as ma, b as ba, g as Ca, u as ha, j as fa, c as pa, w as Da } from "./chunks/providers-CgxXm6Ll.js";
9
+ import { u as Sa } from "./chunks/chart-bubble-BD-1kneU.js";
10
10
  import { c as Aa, f as Ma } from "./chunks/index-CApFCBF9.js";
11
- import { e as va, c as Ta, l as Ia, h as Ea, k as La, j as Pa, i as Ba, m as wa, g as Ra, f as Ka, u as Va, u as ka, d as Na, b as ja, a as Ua, v as za } from "./chunks/useDirtyStateTracking-CTS_m9mg.js";
11
+ import { e as va, c as Ta, l as Ia, h as Ea, k as La, j as Pa, i as Ba, m as wa, g as Ra, f as Ka, u as Va, u as ka, d as Na, b as ja, a as Ua, v as za } from "./chunks/useDirtyStateTracking-Cu1HSjmo.js";
12
12
  import { c as Oa, b as Wa, f as qa, g as Ha, a as _a, i as Ja, t as Xa } from "./chunks/funnel-utils-CyonoNeC.js";
13
13
  import { T as Ya, c as Za, g as es, a as as, i as ss, r as ts, s as rs, b as is, w as ls } from "./chunks/theme-Dp3hFed1.js";
14
14
  import { createExplainQueryKey as ns, useDryRunQueries as us, useDryRunQuery as cs, useExplainAI as ds, useExplainQuery as ys, useMultiDryRunQueries as gs } from "./hooks.js";
15
15
  import { i as bs, a as Cs } from "./chunks/flow-utils-CjQZG5qq.js";
16
- import { h as fs } from "./chunks/syntaxHighlighting-DAT9C6Ss.js";
16
+ import { h as fs } from "./chunks/syntaxHighlighting-BQfjio-i.js";
17
17
  function o() {
18
18
  return /* @__PURE__ */ e("div", { children: "Analytics Page - Coming in Phase 4" });
19
19
  }
@@ -1,4 +1,4 @@
1
- import { a, S as o, d as s, b as t, c as C } from "./chunks/providers-D2xswCYu.js";
1
+ import { a, S as o, d as s, b as t, c as C } from "./chunks/providers-CgxXm6Ll.js";
2
2
  export {
3
3
  a as CubeProvider,
4
4
  o as ScrollContainerProvider,