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.
- package/dist/adapters/express/index.cjs +1 -1
- package/dist/adapters/express/index.js +1 -1
- package/dist/adapters/fastify/index.cjs +1 -1
- package/dist/adapters/fastify/index.js +1 -1
- package/dist/adapters/hono/index.cjs +1 -1
- package/dist/adapters/hono/index.js +1 -1
- package/dist/adapters/mcp-transport-BqLo4hKi.cjs +257 -0
- package/dist/adapters/{mcp-transport-Dmolep14.js → mcp-transport-YHDZWKOi.js} +1727 -1624
- package/dist/adapters/nextjs/index.cjs +1 -1
- package/dist/adapters/nextjs/index.js +1 -1
- package/dist/client/charts.js +13 -13
- package/dist/client/chunks/{RetentionCombinedChart-7bGP_ozM.js → RetentionCombinedChart-BK8N-MOQ.js} +2 -2
- package/dist/client/chunks/{RetentionCombinedChart-7bGP_ozM.js.map → RetentionCombinedChart-BK8N-MOQ.js.map} +1 -1
- package/dist/client/chunks/{analysis-builder-CIuNLos1.js → analysis-builder-CNBmAGAO.js} +8 -9
- package/dist/client/chunks/{analysis-builder-CIuNLos1.js.map → analysis-builder-CNBmAGAO.js.map} +1 -1
- package/dist/client/chunks/{analysis-builder-shared-gky0SKQH.js → analysis-builder-shared-INGGwyTG.js} +6 -6
- package/dist/client/chunks/{analysis-builder-shared-gky0SKQH.js.map → analysis-builder-shared-INGGwyTG.js.map} +1 -1
- package/dist/client/chunks/{chart-activity-grid-sUkuCJzm.js → chart-activity-grid-DvgTYQaE.js} +2 -2
- package/dist/client/chunks/{chart-activity-grid-sUkuCJzm.js.map → chart-activity-grid-DvgTYQaE.js.map} +1 -1
- package/dist/client/chunks/{chart-area-C4DIi9k_.js → chart-area-BKjd_STS.js} +3 -3
- package/dist/client/chunks/{chart-area-C4DIi9k_.js.map → chart-area-BKjd_STS.js.map} +1 -1
- package/dist/client/chunks/{chart-bar-7ZleGCsN.js → chart-bar-DBI41w05.js} +2 -2
- package/dist/client/chunks/{chart-bar-7ZleGCsN.js.map → chart-bar-DBI41w05.js.map} +1 -1
- package/dist/client/chunks/{chart-bubble-D-auWIjP.js → chart-bubble-BD-1kneU.js} +2 -2
- package/dist/client/chunks/{chart-bubble-D-auWIjP.js.map → chart-bubble-BD-1kneU.js.map} +1 -1
- package/dist/client/chunks/{chart-config-markdown-DZxdGNVQ.js → chart-config-markdown-6fsr-U6_.js} +38 -8
- package/dist/client/chunks/chart-config-markdown-6fsr-U6_.js.map +1 -0
- package/dist/client/chunks/{chart-data-table-DW6VNGeW.js → chart-data-table-B74HLpAx.js} +3 -3
- package/dist/client/chunks/{chart-data-table-DW6VNGeW.js.map → chart-data-table-B74HLpAx.js.map} +1 -1
- package/dist/client/chunks/{chart-funnel-eUJApzmA.js → chart-funnel-DQ9cW6j9.js} +2 -2
- package/dist/client/chunks/{chart-funnel-eUJApzmA.js.map → chart-funnel-DQ9cW6j9.js.map} +1 -1
- package/dist/client/chunks/{chart-heat-map-DR3O3GXx.js → chart-heat-map-CpIr4tbs.js} +2 -2
- package/dist/client/chunks/{chart-heat-map-DR3O3GXx.js.map → chart-heat-map-CpIr4tbs.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-delta-Bp9Yrgyc.js → chart-kpi-delta-DPcSazD3.js} +3 -3
- package/dist/client/chunks/{chart-kpi-delta-Bp9Yrgyc.js.map → chart-kpi-delta-DPcSazD3.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-number-B3yvgbr-.js → chart-kpi-number-D62PzKZ1.js} +2 -2
- package/dist/client/chunks/{chart-kpi-number-B3yvgbr-.js.map → chart-kpi-number-D62PzKZ1.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-text-D0TsUiaO.js → chart-kpi-text-B6Z5tFV1.js} +3 -3
- package/dist/client/chunks/{chart-kpi-text-D0TsUiaO.js.map → chart-kpi-text-B6Z5tFV1.js.map} +1 -1
- package/dist/client/chunks/{chart-line-C7VStgaJ.js → chart-line-Ds4BYA0K.js} +3 -3
- package/dist/client/chunks/{chart-line-C7VStgaJ.js.map → chart-line-Ds4BYA0K.js.map} +1 -1
- package/dist/client/chunks/chart-markdown-Rq6ORisB.js +276 -0
- package/dist/client/chunks/chart-markdown-Rq6ORisB.js.map +1 -0
- package/dist/client/chunks/{chart-pie-DPdYJSM3.js → chart-pie-BBrLh0iU.js} +2 -2
- package/dist/client/chunks/{chart-pie-DPdYJSM3.js.map → chart-pie-BBrLh0iU.js.map} +1 -1
- package/dist/client/chunks/{chart-radar-DF6VNSiC.js → chart-radar-vr5FgjHT.js} +2 -2
- package/dist/client/chunks/{chart-radar-DF6VNSiC.js.map → chart-radar-vr5FgjHT.js.map} +1 -1
- package/dist/client/chunks/{chart-radial-bar-7Ttfz-kO.js → chart-radial-bar-BV_3Nm5P.js} +2 -2
- package/dist/client/chunks/{chart-radial-bar-7Ttfz-kO.js.map → chart-radial-bar-BV_3Nm5P.js.map} +1 -1
- package/dist/client/chunks/{chart-sankey-D86RYk9B.js → chart-sankey-CHROzr4S.js} +2 -2
- package/dist/client/chunks/{chart-sankey-D86RYk9B.js.map → chart-sankey-CHROzr4S.js.map} +1 -1
- package/dist/client/chunks/{chart-scatter-BUnIiLr_.js → chart-scatter-DbRTU3FG.js} +2 -2
- package/dist/client/chunks/{chart-scatter-BUnIiLr_.js.map → chart-scatter-DbRTU3FG.js.map} +1 -1
- package/dist/client/chunks/{chart-sunburst-CsHlHfZQ.js → chart-sunburst-B-aPUzYL.js} +2 -2
- package/dist/client/chunks/{chart-sunburst-CsHlHfZQ.js.map → chart-sunburst-B-aPUzYL.js.map} +1 -1
- package/dist/client/chunks/{chart-tree-map-DFAbkeo1.js → chart-tree-map-qY148fiC.js} +2 -2
- package/dist/client/chunks/{chart-tree-map-DFAbkeo1.js.map → chart-tree-map-qY148fiC.js.map} +1 -1
- package/dist/client/chunks/{chartConfigRegistry-DNEbwgTc.js → chartConfigRegistry-Di34paQH.js} +2 -2
- package/dist/client/chunks/{chartConfigRegistry-DNEbwgTc.js.map → chartConfigRegistry-Di34paQH.js.map} +1 -1
- package/dist/client/chunks/{charts-core-DAF1iT_h.js → charts-core-T8UglYyq.js} +224 -224
- package/dist/client/chunks/charts-core-T8UglYyq.js.map +1 -0
- package/dist/client/chunks/{charts-loader-7pEaEz-f.js → charts-loader-YnhJHubD.js} +21 -21
- package/dist/client/chunks/{charts-loader-7pEaEz-f.js.map → charts-loader-YnhJHubD.js.map} +1 -1
- package/dist/client/chunks/components-D0i1yQsk.js +9835 -0
- package/dist/client/chunks/components-D0i1yQsk.js.map +1 -0
- package/dist/client/chunks/{core-DGLxd5v5.js → core-D_8mkGpQ.js} +2 -2
- package/dist/client/chunks/{core-DGLxd5v5.js.map → core-D_8mkGpQ.js.map} +1 -1
- package/dist/client/chunks/{providers-D2xswCYu.js → providers-CgxXm6Ll.js} +2 -2
- package/dist/client/chunks/{providers-D2xswCYu.js.map → providers-CgxXm6Ll.js.map} +1 -1
- package/dist/client/chunks/{syntaxHighlighting-DAT9C6Ss.js → syntaxHighlighting-BQfjio-i.js} +2 -2
- package/dist/client/chunks/{syntaxHighlighting-DAT9C6Ss.js.map → syntaxHighlighting-BQfjio-i.js.map} +1 -1
- package/dist/client/chunks/{useDirtyStateTracking-CTS_m9mg.js → useDirtyStateTracking-Cu1HSjmo.js} +9 -9
- package/dist/client/chunks/{useDirtyStateTracking-CTS_m9mg.js.map → useDirtyStateTracking-Cu1HSjmo.js.map} +1 -1
- package/dist/client/chunks/{vendor-DfDLOfBe.js → vendor-AVsJ2ni0.js} +4 -4
- package/dist/client/chunks/{vendor-DfDLOfBe.js.map → vendor-AVsJ2ni0.js.map} +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.d.ts +3 -1
- package/dist/client/components/FloatingEditToolbar.d.ts +3 -1
- package/dist/client/components/TextPortletModal.d.ts +12 -0
- package/dist/client/components.js +15 -352
- package/dist/client/components.js.map +1 -1
- package/dist/client/hooks/useDashboardHook.d.ts +7 -2
- package/dist/client/hooks.js +23 -23
- package/dist/client/index.js +8 -8
- package/dist/client/providers.js +1 -1
- package/dist/client/stores/dashboardStore.d.ts +14 -0
- package/dist/client/styles.css +1 -1
- package/dist/client/types.d.ts +3 -0
- package/dist/client/utils.js +6 -6
- package/dist/client-bundle-stats.html +1 -1
- package/dist/server/index.cjs +83 -83
- package/dist/server/index.d.ts +26 -2
- package/dist/server/index.js +3034 -2931
- package/package.json +1 -1
- package/dist/adapters/mcp-transport-h__yKJm9.cjs +0 -257
- package/dist/client/chunks/DashboardEditModal-D6TDeTBa.js +0 -9165
- package/dist/client/chunks/DashboardEditModal-D6TDeTBa.js.map +0 -1
- package/dist/client/chunks/chart-config-markdown-DZxdGNVQ.js.map +0 -1
- package/dist/client/chunks/chart-markdown-Cget3iEq.js +0 -257
- package/dist/client/chunks/chart-markdown-Cget3iEq.js.map +0 -1
- 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
|
|
2
|
-
import {
|
|
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
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
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;
|
package/dist/client/hooks.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { t as p,
|
|
2
|
-
import { e as Y, c as $, u as
|
|
3
|
-
import { f as m, g as E } from "./chunks/providers-
|
|
4
|
-
import { j as te } from "./chunks/providers-
|
|
5
|
-
import { a as w,
|
|
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
|
|
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
|
|
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
|
|
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
|
|
91
|
+
return v(r, { skip: a, staleTime: o });
|
|
92
92
|
}
|
|
93
|
-
function
|
|
93
|
+
function D(e, s) {
|
|
94
94
|
return e ? ["cube", "explain", h(e), s?.analyze ?? !1] : ["cube", "explain", null, null];
|
|
95
95
|
}
|
|
96
|
-
function
|
|
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 ?
|
|
107
|
-
queryKey:
|
|
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
|
-
|
|
177
|
+
D as createExplainQueryKey,
|
|
178
178
|
Y as createFlowQueryKey,
|
|
179
179
|
$ as createFunnelQueryKey,
|
|
180
|
-
|
|
180
|
+
H as useCubeLoadQuery,
|
|
181
181
|
te as useCubeMetaQuery,
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
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
|
-
|
|
190
|
-
|
|
189
|
+
X as useFilterValues,
|
|
190
|
+
B as useFlowQuery,
|
|
191
191
|
G as useFunnelQuery,
|
|
192
192
|
Z as useMultiCubeLoadQuery,
|
|
193
|
-
|
|
193
|
+
v as useMultiDryRunQueries,
|
|
194
194
|
ee as useResponsiveDashboard,
|
|
195
195
|
ne as useRetentionQuery
|
|
196
196
|
};
|
package/dist/client/index.js
CHANGED
|
@@ -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/
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
9
|
-
import { u as Sa } from "./chunks/chart-bubble-
|
|
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-
|
|
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-
|
|
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
|
}
|
package/dist/client/providers.js
CHANGED