@burdenoff/microfe-bigconsole 2026.1004.3 → 2026.1004.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bigconsole/BigConsoleRoutes.d.ts +1 -1
- package/dist/bigconsole/BigConsoleRoutes.d.ts.map +1 -1
- package/dist/bigconsole/BigConsoleRoutes.js +15 -1
- package/dist/bigconsole/BigConsoleRoutes.js.map +1 -1
- package/dist/bigconsole/components/DrilldownDashboardRenderer.d.ts.map +1 -1
- package/dist/bigconsole/components/DrilldownDashboardRenderer.js +57 -56
- package/dist/bigconsole/components/DrilldownDashboardRenderer.js.map +1 -1
- package/dist/bigconsole/components/DrilldownModal.d.ts.map +1 -1
- package/dist/bigconsole/components/DrilldownModal.js +55 -53
- package/dist/bigconsole/components/DrilldownModal.js.map +1 -1
- package/dist/bigconsole/components/builder/inspector/DataBindingSection.d.ts +3 -1
- package/dist/bigconsole/components/builder/inspector/DataBindingSection.d.ts.map +1 -1
- package/dist/bigconsole/components/builder/inspector/DataBindingSection.js +40 -39
- package/dist/bigconsole/components/builder/inspector/DataBindingSection.js.map +1 -1
- package/dist/bigconsole/components/dashboard/DashboardCanvas.d.ts.map +1 -1
- package/dist/bigconsole/components/dashboard/DashboardCanvas.js +184 -177
- package/dist/bigconsole/components/dashboard/DashboardCanvas.js.map +1 -1
- package/dist/bigconsole/components/dashboard/DashboardGrid.d.ts.map +1 -1
- package/dist/bigconsole/components/dashboard/DashboardGrid.js +40 -22
- package/dist/bigconsole/components/dashboard/DashboardGrid.js.map +1 -1
- package/dist/bigconsole/components/dashboard/ExportDashboardDialog.d.ts.map +1 -1
- package/dist/bigconsole/components/dashboard/ExportDashboardDialog.js +31 -25
- package/dist/bigconsole/components/dashboard/ExportDashboardDialog.js.map +1 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.d.ts +1 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.d.ts.map +1 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js +115 -80
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js.map +1 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.d.ts.map +1 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js +177 -146
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js.map +1 -1
- package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.d.ts +1 -1
- package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.d.ts.map +1 -1
- package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.js +375 -325
- package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.js.map +1 -1
- package/dist/bigconsole/components/datasink/CacheTTLSelector.d.ts.map +1 -1
- package/dist/bigconsole/components/datasink/CacheTTLSelector.js +7 -1
- package/dist/bigconsole/components/datasink/CacheTTLSelector.js.map +1 -1
- package/dist/bigconsole/components/parser/ParserSelector.d.ts +3 -1
- package/dist/bigconsole/components/parser/ParserSelector.d.ts.map +1 -1
- package/dist/bigconsole/components/parser/ParserSelector.js +94 -94
- package/dist/bigconsole/components/parser/ParserSelector.js.map +1 -1
- package/dist/bigconsole/components/pipeline/PipelineCard.d.ts.map +1 -1
- package/dist/bigconsole/components/pipeline/PipelineCard.js +111 -89
- package/dist/bigconsole/components/pipeline/PipelineCard.js.map +1 -1
- package/dist/bigconsole/components/pipeline/PipelineScopePicker.d.ts +8 -0
- package/dist/bigconsole/components/pipeline/PipelineScopePicker.d.ts.map +1 -0
- package/dist/bigconsole/components/pipeline/PipelineScopePicker.js +52 -0
- package/dist/bigconsole/components/pipeline/PipelineScopePicker.js.map +1 -0
- package/dist/bigconsole/components/widgets/PropertiesPanel.d.ts.map +1 -1
- package/dist/bigconsole/components/widgets/PropertiesPanel.js +257 -221
- package/dist/bigconsole/components/widgets/PropertiesPanel.js.map +1 -1
- package/dist/bigconsole/components/widgets/WidgetHeader.d.ts +1 -0
- package/dist/bigconsole/components/widgets/WidgetHeader.d.ts.map +1 -1
- package/dist/bigconsole/components/widgets/WidgetHeader.js +29 -29
- package/dist/bigconsole/components/widgets/WidgetHeader.js.map +1 -1
- package/dist/bigconsole/components/widgets/WidgetWrapper.d.ts +2 -0
- package/dist/bigconsole/components/widgets/WidgetWrapper.d.ts.map +1 -1
- package/dist/bigconsole/components/widgets/WidgetWrapper.js +247 -239
- package/dist/bigconsole/components/widgets/WidgetWrapper.js.map +1 -1
- package/dist/bigconsole/components/widgets/metric-card/MetricCardWidget.d.ts.map +1 -1
- package/dist/bigconsole/components/widgets/metric-card/MetricCardWidget.js +6 -4
- package/dist/bigconsole/components/widgets/metric-card/MetricCardWidget.js.map +1 -1
- package/dist/bigconsole/components/widgets/states/EmptyState.d.ts +1 -0
- package/dist/bigconsole/components/widgets/states/EmptyState.d.ts.map +1 -1
- package/dist/bigconsole/components/widgets/states/EmptyState.js +4 -4
- package/dist/bigconsole/components/widgets/states/EmptyState.js.map +1 -1
- package/dist/bigconsole/components/workflow/WorkflowDesignPreview.d.ts +7 -0
- package/dist/bigconsole/components/workflow/WorkflowDesignPreview.d.ts.map +1 -0
- package/dist/bigconsole/components/workflow/WorkflowDesignPreview.js +94 -0
- package/dist/bigconsole/components/workflow/WorkflowDesignPreview.js.map +1 -0
- package/dist/bigconsole/components/workflow/WorkflowSinkLinkForm.d.ts +7 -0
- package/dist/bigconsole/components/workflow/WorkflowSinkLinkForm.d.ts.map +1 -0
- package/dist/bigconsole/components/workflow/WorkflowSinkLinkForm.js +101 -0
- package/dist/bigconsole/components/workflow/WorkflowSinkLinkForm.js.map +1 -0
- package/dist/bigconsole/hooks/useBigConsoleSettings.d.ts +16 -0
- package/dist/bigconsole/hooks/useBigConsoleSettings.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useBigConsoleSettings.js +57 -0
- package/dist/bigconsole/hooks/useBigConsoleSettings.js.map +1 -0
- package/dist/bigconsole/hooks/useDashboardOperations.d.ts.map +1 -1
- package/dist/bigconsole/hooks/useDashboardOperations.js +102 -79
- package/dist/bigconsole/hooks/useDashboardOperations.js.map +1 -1
- package/dist/bigconsole/hooks/useExportDashboard.d.ts +3 -1
- package/dist/bigconsole/hooks/useExportDashboard.d.ts.map +1 -1
- package/dist/bigconsole/hooks/useExportDashboard.js +23 -13
- package/dist/bigconsole/hooks/useExportDashboard.js.map +1 -1
- package/dist/bigconsole/hooks/useFilterUrlSync.d.ts +18 -0
- package/dist/bigconsole/hooks/useFilterUrlSync.d.ts.map +1 -1
- package/dist/bigconsole/hooks/useFilterUrlSync.js +87 -57
- package/dist/bigconsole/hooks/useFilterUrlSync.js.map +1 -1
- package/dist/bigconsole/hooks/useGlobalFilters.d.ts.map +1 -1
- package/dist/bigconsole/hooks/useGlobalFilters.js +39 -29
- package/dist/bigconsole/hooks/useGlobalFilters.js.map +1 -1
- package/dist/bigconsole/hooks/usePageOperations.d.ts.map +1 -1
- package/dist/bigconsole/hooks/usePageOperations.js +1 -0
- package/dist/bigconsole/hooks/usePageOperations.js.map +1 -1
- package/dist/bigconsole/hooks/usePipelineOperations.d.ts.map +1 -1
- package/dist/bigconsole/hooks/usePipelineOperations.js +114 -112
- package/dist/bigconsole/hooks/usePipelineOperations.js.map +1 -1
- package/dist/bigconsole/hooks/useShareRecipients.d.ts +22 -0
- package/dist/bigconsole/hooks/useShareRecipients.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useShareRecipients.js +198 -0
- package/dist/bigconsole/hooks/useShareRecipients.js.map +1 -0
- package/dist/bigconsole/pages/DashboardBuilderPage.d.ts.map +1 -1
- package/dist/bigconsole/pages/DashboardBuilderPage.js +198 -193
- package/dist/bigconsole/pages/DashboardBuilderPage.js.map +1 -1
- package/dist/bigconsole/pages/DashboardViewPage.d.ts.map +1 -1
- package/dist/bigconsole/pages/DashboardViewPage.js +171 -167
- package/dist/bigconsole/pages/DashboardViewPage.js.map +1 -1
- package/dist/bigconsole/pages/DashboardsPage.d.ts.map +1 -1
- package/dist/bigconsole/pages/DashboardsPage.js +313 -266
- package/dist/bigconsole/pages/DashboardsPage.js.map +1 -1
- package/dist/bigconsole/pages/DataSinkBuilderPage.d.ts.map +1 -1
- package/dist/bigconsole/pages/DataSinkBuilderPage.js +84 -79
- package/dist/bigconsole/pages/DataSinkBuilderPage.js.map +1 -1
- package/dist/bigconsole/pages/DataSinkViewPage.d.ts.map +1 -1
- package/dist/bigconsole/pages/DataSinkViewPage.js +267 -257
- package/dist/bigconsole/pages/DataSinkViewPage.js.map +1 -1
- package/dist/bigconsole/pages/InsightsPage.d.ts.map +1 -1
- package/dist/bigconsole/pages/InsightsPage.js +465 -402
- package/dist/bigconsole/pages/InsightsPage.js.map +1 -1
- package/dist/bigconsole/pages/PipelineBuilderPage.d.ts.map +1 -1
- package/dist/bigconsole/pages/PipelineBuilderPage.js +169 -157
- package/dist/bigconsole/pages/PipelineBuilderPage.js.map +1 -1
- package/dist/bigconsole/pages/PipelineViewPage.d.ts.map +1 -1
- package/dist/bigconsole/pages/PipelineViewPage.js +370 -230
- package/dist/bigconsole/pages/PipelineViewPage.js.map +1 -1
- package/dist/bigconsole/pages/PipelinesPage.d.ts.map +1 -1
- package/dist/bigconsole/pages/PipelinesPage.js +181 -151
- package/dist/bigconsole/pages/PipelinesPage.js.map +1 -1
- package/dist/bigconsole/pages/SettingsPage.d.ts.map +1 -1
- package/dist/bigconsole/pages/SettingsPage.js +188 -208
- package/dist/bigconsole/pages/SettingsPage.js.map +1 -1
- package/dist/bigconsole/pages/WidgetDemoPage.d.ts.map +1 -1
- package/dist/bigconsole/pages/WidgetDemoPage.js +134 -117
- package/dist/bigconsole/pages/WidgetDemoPage.js.map +1 -1
- package/dist/bigconsole/pages/WorkflowViewPage.d.ts.map +1 -1
- package/dist/bigconsole/pages/WorkflowViewPage.js +315 -267
- package/dist/bigconsole/pages/WorkflowViewPage.js.map +1 -1
- package/dist/bigconsole/pages/WorkflowsPage.d.ts.map +1 -1
- package/dist/bigconsole/pages/WorkflowsPage.js +4 -3
- package/dist/bigconsole/pages/WorkflowsPage.js.map +1 -1
- package/dist/bigconsole/types/index.d.ts +4 -0
- package/dist/bigconsole/types/index.d.ts.map +1 -1
- package/dist/bigconsole/utils/drilldownParams.d.ts +3 -0
- package/dist/bigconsole/utils/drilldownParams.d.ts.map +1 -0
- package/dist/bigconsole/utils/drilldownParams.js +8 -0
- package/dist/bigconsole/utils/drilldownParams.js.map +1 -0
- package/dist/generated/wspace-operations.d.ts +148 -0
- package/dist/generated/wspace-operations.d.ts.map +1 -1
- package/dist/generated/wspace-operations.js +172 -133
- package/dist/generated/wspace-operations.js.map +1 -1
- package/dist/generated/wspace-types.d.ts +21 -0
- package/dist/generated/wspace-types.d.ts.map +1 -1
- package/dist/generated/wspace-types.js.map +1 -1
- package/dist/microfe-bigconsole.css +1 -1
- package/dist/translations/en.d.ts.map +1 -1
- package/package.json +2 -1
|
@@ -25,7 +25,7 @@ function d(e) {
|
|
|
25
25
|
}
|
|
26
26
|
function f() {
|
|
27
27
|
let [f, p] = s([]), [m, h] = s({}), [g, _] = s(!1), [v, y] = s(null), b = o(""), [x, S] = l(u, {}), C = c();
|
|
28
|
-
|
|
28
|
+
a((e) => {
|
|
29
29
|
let t = x[e];
|
|
30
30
|
return t ? t.map((e) => d(e)) : [];
|
|
31
31
|
}, [x]), a((e, t) => {
|
|
@@ -33,34 +33,36 @@ function f() {
|
|
|
33
33
|
...n,
|
|
34
34
|
[e]: t
|
|
35
35
|
}));
|
|
36
|
-
}, [S])
|
|
36
|
+
}, [S]);
|
|
37
|
+
let w = a(async (e) => {
|
|
38
|
+
b.current = e;
|
|
39
|
+
try {
|
|
40
|
+
_(!0), y(null);
|
|
41
|
+
let t = ((await C.query({
|
|
42
|
+
query: n,
|
|
43
|
+
variables: { id: e },
|
|
44
|
+
fetchPolicy: "network-only"
|
|
45
|
+
})).data?.getDashboard?.globalFilters || []).map(d).sort((e, t) => e.order - t.order);
|
|
46
|
+
p(t);
|
|
47
|
+
let r = {};
|
|
48
|
+
return t.forEach((e) => {
|
|
49
|
+
e.defaultValue !== void 0 && (r[e.id] = e.defaultValue);
|
|
50
|
+
}), h((e) => ({
|
|
51
|
+
...r,
|
|
52
|
+
...e
|
|
53
|
+
})), t;
|
|
54
|
+
} catch (e) {
|
|
55
|
+
return y(e instanceof Error ? e : /* @__PURE__ */ Error("Failed to fetch filters")), [];
|
|
56
|
+
} finally {
|
|
57
|
+
_(!1);
|
|
58
|
+
}
|
|
59
|
+
}, [C]);
|
|
60
|
+
return {
|
|
37
61
|
filters: f,
|
|
38
62
|
activeValues: m,
|
|
39
63
|
loading: g,
|
|
40
64
|
error: v,
|
|
41
|
-
fetchFilters:
|
|
42
|
-
b.current = e;
|
|
43
|
-
try {
|
|
44
|
-
_(!0), y(null);
|
|
45
|
-
let t = ((await C.query({
|
|
46
|
-
query: n,
|
|
47
|
-
variables: { id: e },
|
|
48
|
-
fetchPolicy: "network-only"
|
|
49
|
-
})).data?.getDashboard?.globalFilters || []).map(d).sort((e, t) => e.order - t.order);
|
|
50
|
-
p(t);
|
|
51
|
-
let r = {};
|
|
52
|
-
return t.forEach((e) => {
|
|
53
|
-
e.defaultValue !== void 0 && (r[e.id] = e.defaultValue);
|
|
54
|
-
}), h((e) => ({
|
|
55
|
-
...r,
|
|
56
|
-
...e
|
|
57
|
-
})), t;
|
|
58
|
-
} catch (e) {
|
|
59
|
-
return y(e instanceof Error ? e : /* @__PURE__ */ Error("Failed to fetch filters")), [];
|
|
60
|
-
} finally {
|
|
61
|
-
_(!1);
|
|
62
|
-
}
|
|
63
|
-
}, [C]),
|
|
65
|
+
fetchFilters: w,
|
|
64
66
|
createFilter: a(async (t) => {
|
|
65
67
|
try {
|
|
66
68
|
_(!0), y(null);
|
|
@@ -73,7 +75,7 @@ function f() {
|
|
|
73
75
|
return p((t) => [...t, e].sort((e, t) => e.order - t.order)), e.defaultValue !== void 0 && h((t) => ({
|
|
74
76
|
...t,
|
|
75
77
|
[e.id]: e.defaultValue
|
|
76
|
-
})), e;
|
|
78
|
+
})), await w(e.dashboardId), e;
|
|
77
79
|
}
|
|
78
80
|
return null;
|
|
79
81
|
} catch (e) {
|
|
@@ -81,7 +83,11 @@ function f() {
|
|
|
81
83
|
} finally {
|
|
82
84
|
_(!1);
|
|
83
85
|
}
|
|
84
|
-
}, [
|
|
86
|
+
}, [
|
|
87
|
+
C,
|
|
88
|
+
f,
|
|
89
|
+
w
|
|
90
|
+
]),
|
|
85
91
|
updateFilter: a(async (e) => {
|
|
86
92
|
try {
|
|
87
93
|
_(!0), y(null);
|
|
@@ -91,7 +97,7 @@ function f() {
|
|
|
91
97
|
})).data?.updateGlobalFilter;
|
|
92
98
|
if (t) {
|
|
93
99
|
let e = d(t);
|
|
94
|
-
return p((t) => t.map((t) => t.id === e.id ? e : t).sort((e, t) => e.order - t.order)), e;
|
|
100
|
+
return p((t) => t.map((t) => t.id === e.id ? e : t).sort((e, t) => e.order - t.order)), await w(e.dashboardId), e;
|
|
95
101
|
}
|
|
96
102
|
return null;
|
|
97
103
|
} catch (e) {
|
|
@@ -99,7 +105,11 @@ function f() {
|
|
|
99
105
|
} finally {
|
|
100
106
|
_(!1);
|
|
101
107
|
}
|
|
102
|
-
}, [
|
|
108
|
+
}, [
|
|
109
|
+
C,
|
|
110
|
+
f,
|
|
111
|
+
w
|
|
112
|
+
]),
|
|
103
113
|
deleteFilter: a(async (e) => {
|
|
104
114
|
try {
|
|
105
115
|
return _(!0), y(null), (await C.mutate({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGlobalFilters.js","names":[],"sources":["../../../src/bigconsole/hooks/useGlobalFilters.ts"],"sourcesContent":["/**\n * useGlobalFilters Hook\n *\n * Provides operations for managing dashboard global filters.\n * Supports local-only mode for development/testing when GraphQL backend is unavailable.\n *\n * Uses @burdenoff/fe-libs storage hooks for proper storage management (P0.3 compliance).\n */\n\nimport { useCallback, useState, useRef } from 'react';\nimport { useApolloClient } from '@apollo/client/react';\nimport { useLocalStorage } from '@burdenoff/fe-libs/shared/hooks';\nimport {\n CreateGlobalFilterDocument,\n UpdateGlobalFilterDocument,\n DeleteGlobalFilterDocument,\n ReorderGlobalFiltersDocument,\n GetDashboardDocument,\n} from '../../generated/wspace-operations';\n\n// Enable local-only mode for development (set to false to use GraphQL backend)\nconst USE_LOCAL_MODE = false;\n\n// Helper to generate unique IDs\nfunction generateId(): string {\n return `local-filter-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n}\n\n// Local storage key for persisting filters during development\nconst STORAGE_KEY = 'bigconsole_local_filters';\n\n// Type for stored filters by dashboard\ntype StoredFilters = Record<string, GlobalFilter[]>;\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/**\n * Filter types as per spec (03-graphql-contract.md)\n * Spec values: date_range, category, custom, numeric_range, text_search\n */\nexport type FilterType = 'DATE_RANGE' | 'CATEGORY' | 'CUSTOM' | 'NUMERIC_RANGE' | 'TEXT_SEARCH';\n\nexport interface GlobalFilter {\n id: string;\n dashboardId: string;\n name: string;\n type: FilterType;\n config: Record<string, unknown>;\n defaultValue?: unknown;\n isRequired: boolean;\n order: number;\n dependsOn?: string;\n cascadeConfig?: Record<string, unknown>;\n cascadeDepth: number;\n version: number;\n metadata?: Record<string, unknown>;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface CreateGlobalFilterInput {\n dashboardId: string;\n name: string;\n type: FilterType;\n config: Record<string, unknown>;\n defaultValue?: unknown;\n isRequired?: boolean;\n dependsOn?: string;\n cascadeConfig?: Record<string, unknown>;\n metadata?: Record<string, unknown>;\n}\n\nexport interface UpdateGlobalFilterInput {\n id: string;\n name?: string;\n config?: Record<string, unknown>;\n defaultValue?: unknown;\n isRequired?: boolean;\n order?: number;\n dependsOn?: string;\n cascadeConfig?: Record<string, unknown>;\n metadata?: Record<string, unknown>;\n}\n\nexport interface UseGlobalFiltersResult {\n filters: GlobalFilter[];\n activeValues: Record<string, unknown>;\n loading: boolean;\n error: Error | null;\n\n // Operations\n fetchFilters: (dashboardId: string) => Promise<GlobalFilter[]>;\n createFilter: (input: CreateGlobalFilterInput) => Promise<GlobalFilter | null>;\n updateFilter: (input: UpdateGlobalFilterInput) => Promise<GlobalFilter | null>;\n deleteFilter: (id: string) => Promise<boolean>;\n reorderFilters: (dashboardId: string, filterIds: string[]) => Promise<GlobalFilter[]>;\n setFilterValue: (filterId: string, value: unknown) => void;\n resetFilters: () => void;\n getFilterValues: () => Record<string, unknown>;\n}\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\nfunction normalizeFilter(data: Record<string, unknown>): GlobalFilter {\n return {\n id: data.id as string,\n dashboardId: data.dashboardId as string,\n name: data.name as string,\n type: data.type as FilterType,\n config: (data.config as Record<string, unknown>) || {},\n defaultValue: data.defaultValue,\n isRequired: (data.isRequired as boolean) || false,\n order: (data.order as number) || 0,\n dependsOn: data.dependsOn as string | undefined,\n cascadeConfig: data.cascadeConfig as Record<string, unknown> | undefined,\n cascadeDepth: (data.cascadeDepth as number) || 0,\n version: (data.version as number) || 1,\n metadata: data.metadata as Record<string, unknown> | undefined,\n createdAt: (data.createdAt as string) || new Date().toISOString(),\n updatedAt: (data.updatedAt as string) || new Date().toISOString(),\n };\n}\n\n// ============================================================================\n// Hook\n// ============================================================================\n\nexport function useGlobalFilters(): UseGlobalFiltersResult {\n const [filters, setFilters] = useState<GlobalFilter[]>([]);\n const [activeValues, setActiveValues] = useState<Record<string, unknown>>({});\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const currentDashboardId = useRef<string>('');\n\n // Use fe-libs storage hook for local mode persistence (P0.3 compliance)\n const [storedFilters, setStoredFilters] = useLocalStorage<StoredFilters>(STORAGE_KEY, {});\n\n const apolloClient = useApolloClient();\n\n // Helper functions that use the fe-libs storage hook\n const loadLocalFilters = useCallback(\n (dashboardId: string): GlobalFilter[] => {\n const dashboardFilters = storedFilters[dashboardId];\n if (dashboardFilters) {\n return dashboardFilters.map((f) => normalizeFilter(f as unknown as Record<string, unknown>));\n }\n return [];\n },\n [storedFilters]\n );\n\n const saveLocalFilters = useCallback(\n (dashboardId: string, newFilters: GlobalFilter[]): void => {\n setStoredFilters((prev) => ({\n ...prev,\n [dashboardId]: newFilters,\n }));\n },\n [setStoredFilters]\n );\n\n // Fetch filters for a dashboard\n const fetchFilters = useCallback(\n async (dashboardId: string): Promise<GlobalFilter[]> => {\n currentDashboardId.current = dashboardId;\n\n // LOCAL MODE: Load from storage via fe-libs hook\n if (USE_LOCAL_MODE) {\n setLoading(true);\n try {\n const localFilters = loadLocalFilters(dashboardId);\n setFilters(localFilters);\n\n // Initialize active values with defaults\n const defaults: Record<string, unknown> = {};\n localFilters.forEach((filter: GlobalFilter) => {\n if (filter.defaultValue !== undefined) {\n defaults[filter.id] = filter.defaultValue;\n }\n });\n setActiveValues((prev) => ({ ...defaults, ...prev }));\n\n return localFilters;\n } finally {\n setLoading(false);\n }\n }\n\n // GRAPHQL MODE: Fetch from backend\n try {\n setLoading(true);\n setError(null);\n\n // Filters are returned as part of the dashboard query\n const result = await apolloClient.query<Record<string, unknown>>({\n query: GetDashboardDocument,\n variables: { id: dashboardId },\n fetchPolicy: 'network-only',\n });\n\n const dashboard = result.data?.getDashboard as Record<string, unknown> | undefined;\n const rawFilters = (dashboard?.globalFilters as Record<string, unknown>[]) || [];\n const normalizedFilters = rawFilters\n .map(normalizeFilter)\n .sort((a: GlobalFilter, b: GlobalFilter) => a.order - b.order);\n\n setFilters(normalizedFilters);\n\n // Initialize active values with defaults\n const defaults: Record<string, unknown> = {};\n normalizedFilters.forEach((filter: GlobalFilter) => {\n if (filter.defaultValue !== undefined) {\n defaults[filter.id] = filter.defaultValue;\n }\n });\n setActiveValues((prev) => ({ ...defaults, ...prev }));\n\n return normalizedFilters;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to fetch filters');\n setError(error);\n return [];\n } finally {\n setLoading(false);\n }\n },\n [apolloClient]\n );\n\n // Create a new filter\n const createFilter = useCallback(\n async (input: CreateGlobalFilterInput): Promise<GlobalFilter | null> => {\n // LOCAL MODE: Create locally and save to localStorage\n if (USE_LOCAL_MODE) {\n setLoading(true);\n try {\n const newFilter: GlobalFilter = {\n id: generateId(),\n dashboardId: input.dashboardId,\n name: input.name,\n type: input.type,\n config: input.config || {},\n defaultValue: input.defaultValue,\n isRequired: input.isRequired || false,\n order: filters.length,\n dependsOn: input.dependsOn,\n cascadeConfig: input.cascadeConfig,\n cascadeDepth: 0,\n version: 1,\n metadata: input.metadata,\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n };\n\n const updatedFilters = [...filters, newFilter].sort((a, b) => a.order - b.order);\n setFilters(updatedFilters);\n saveLocalFilters(input.dashboardId, updatedFilters);\n\n // Set default value if provided\n if (newFilter.defaultValue !== undefined) {\n setActiveValues((prev) => ({ ...prev, [newFilter.id]: newFilter.defaultValue }));\n }\n\n return newFilter;\n } finally {\n setLoading(false);\n }\n }\n\n // GRAPHQL MODE: Create via backend\n try {\n setLoading(true);\n setError(null);\n\n const result = await apolloClient.mutate<Record<string, unknown>>({\n mutation: CreateGlobalFilterDocument,\n variables: { input },\n });\n\n const createResult = result.data?.createGlobalFilter as Record<string, unknown> | undefined;\n if (createResult) {\n const newFilter = normalizeFilter(createResult);\n setFilters((prev) => [...prev, newFilter].sort((a, b) => a.order - b.order));\n\n // Set default value if provided\n if (newFilter.defaultValue !== undefined) {\n setActiveValues((prev) => ({ ...prev, [newFilter.id]: newFilter.defaultValue }));\n }\n\n return newFilter;\n }\n\n return null;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to create filter');\n setError(error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [apolloClient, filters]\n );\n\n // Update a filter\n const updateFilter = useCallback(\n async (input: UpdateGlobalFilterInput): Promise<GlobalFilter | null> => {\n // LOCAL MODE: Update locally and save to localStorage\n if (USE_LOCAL_MODE) {\n setLoading(true);\n try {\n const existingFilter = filters.find((f) => f.id === input.id);\n if (!existingFilter) {\n return null;\n }\n\n const updatedFilter: GlobalFilter = {\n ...existingFilter,\n name: input.name ?? existingFilter.name,\n config: input.config ?? existingFilter.config,\n defaultValue: input.defaultValue ?? existingFilter.defaultValue,\n isRequired: input.isRequired ?? existingFilter.isRequired,\n order: input.order ?? existingFilter.order,\n dependsOn: input.dependsOn ?? existingFilter.dependsOn,\n cascadeConfig: input.cascadeConfig ?? existingFilter.cascadeConfig,\n metadata: input.metadata ?? existingFilter.metadata,\n version: existingFilter.version + 1,\n updatedAt: new Date().toISOString(),\n };\n\n const updatedFilters = filters\n .map((f) => (f.id === updatedFilter.id ? updatedFilter : f))\n .sort((a, b) => a.order - b.order);\n setFilters(updatedFilters);\n saveLocalFilters(existingFilter.dashboardId, updatedFilters);\n\n return updatedFilter;\n } finally {\n setLoading(false);\n }\n }\n\n // GRAPHQL MODE: Update via backend\n try {\n setLoading(true);\n setError(null);\n\n const result = await apolloClient.mutate<Record<string, unknown>>({\n mutation: UpdateGlobalFilterDocument,\n variables: { input },\n });\n\n const updateResult = result.data?.updateGlobalFilter as Record<string, unknown> | undefined;\n if (updateResult) {\n const updatedFilter = normalizeFilter(updateResult);\n setFilters((prev) =>\n prev.map((f) => (f.id === updatedFilter.id ? updatedFilter : f)).sort((a, b) => a.order - b.order)\n );\n return updatedFilter;\n }\n\n return null;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to update filter');\n setError(error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [apolloClient, filters]\n );\n\n // Delete a filter\n const deleteFilter = useCallback(\n async (id: string): Promise<boolean> => {\n // LOCAL MODE: Delete locally and save to localStorage\n if (USE_LOCAL_MODE) {\n setLoading(true);\n try {\n const existingFilter = filters.find((f) => f.id === id);\n if (!existingFilter) {\n return false;\n }\n\n const updatedFilters = filters.filter((f) => f.id !== id);\n setFilters(updatedFilters);\n saveLocalFilters(existingFilter.dashboardId, updatedFilters);\n\n setActiveValues((prev) => Object.fromEntries(Object.entries(prev).filter(([key]) => key !== id)));\n\n return true;\n } finally {\n setLoading(false);\n }\n }\n\n // GRAPHQL MODE: Delete via backend\n try {\n setLoading(true);\n setError(null);\n\n const result = await apolloClient.mutate<Record<string, unknown>>({\n mutation: DeleteGlobalFilterDocument,\n variables: { id },\n });\n\n if (result.data?.deleteGlobalFilter) {\n setFilters((prev) => prev.filter((f) => f.id !== id));\n setActiveValues((prev) => Object.fromEntries(Object.entries(prev).filter(([key]) => key !== id)));\n return true;\n }\n\n return false;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to delete filter');\n setError(error);\n return false;\n } finally {\n setLoading(false);\n }\n },\n [apolloClient, filters]\n );\n\n // Reorder filters\n const reorderFilters = useCallback(\n async (dashboardId: string, filterIds: string[]): Promise<GlobalFilter[]> => {\n // LOCAL MODE: Reorder locally and save to localStorage\n if (USE_LOCAL_MODE) {\n setLoading(true);\n try {\n const reorderedFilters = filterIds\n .map((id, index) => {\n const filter = filters.find((f) => f.id === id);\n return filter ? { ...filter, order: index } : null;\n })\n .filter((f): f is GlobalFilter => f !== null);\n\n setFilters(reorderedFilters);\n saveLocalFilters(dashboardId, reorderedFilters);\n\n return reorderedFilters;\n } finally {\n setLoading(false);\n }\n }\n\n // GRAPHQL MODE: Reorder via backend\n try {\n setLoading(true);\n setError(null);\n\n const result = await apolloClient.mutate<Record<string, unknown>>({\n mutation: ReorderGlobalFiltersDocument,\n variables: { dashboardId, filterIds },\n });\n\n const reorderResult = result.data?.reorderGlobalFilters as Record<string, unknown>[] | undefined;\n if (reorderResult) {\n const reorderedFilters = reorderResult.map(normalizeFilter);\n setFilters(reorderedFilters);\n return reorderedFilters;\n }\n\n return [];\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to reorder filters');\n setError(error);\n return [];\n } finally {\n setLoading(false);\n }\n },\n [apolloClient, filters]\n );\n\n // Set a filter value locally\n const setFilterValue = useCallback((filterId: string, value: unknown) => {\n setActiveValues((prev) => ({ ...prev, [filterId]: value }));\n }, []);\n\n // Reset all filter values to defaults\n const resetFilters = useCallback(() => {\n const resetDefaults: Record<string, unknown> = {};\n filters.forEach((filter) => {\n if (filter.defaultValue !== undefined) {\n resetDefaults[filter.id] = filter.defaultValue;\n }\n });\n setActiveValues(resetDefaults);\n }, [filters]);\n\n // Get current filter values\n const getFilterValues = useCallback(() => {\n return { ...activeValues };\n }, [activeValues]);\n\n return {\n filters,\n activeValues,\n loading,\n error,\n fetchFilters,\n createFilter,\n updateFilter,\n deleteFilter,\n reorderFilters,\n setFilterValue,\n resetFilters,\n getFilterValues,\n };\n}\n\nexport default useGlobalFilters;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useGlobalFilters.js","names":[],"sources":["../../../src/bigconsole/hooks/useGlobalFilters.ts"],"sourcesContent":["/**\n * useGlobalFilters Hook\n *\n * Provides operations for managing dashboard global filters.\n * Supports local-only mode for development/testing when GraphQL backend is unavailable.\n *\n * Uses @burdenoff/fe-libs storage hooks for proper storage management (P0.3 compliance).\n */\n\nimport { useCallback, useState, useRef } from 'react';\nimport { useApolloClient } from '@apollo/client/react';\nimport { useLocalStorage } from '@burdenoff/fe-libs/shared/hooks';\nimport {\n CreateGlobalFilterDocument,\n UpdateGlobalFilterDocument,\n DeleteGlobalFilterDocument,\n ReorderGlobalFiltersDocument,\n GetDashboardDocument,\n} from '../../generated/wspace-operations';\n\n// Enable local-only mode for development (set to false to use GraphQL backend)\nconst USE_LOCAL_MODE = false;\n\n// Helper to generate unique IDs\nfunction generateId(): string {\n return `local-filter-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n}\n\n// Local storage key for persisting filters during development\nconst STORAGE_KEY = 'bigconsole_local_filters';\n\n// Type for stored filters by dashboard\ntype StoredFilters = Record<string, GlobalFilter[]>;\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/**\n * Filter types as per spec (03-graphql-contract.md)\n * Spec values: date_range, category, custom, numeric_range, text_search\n */\nexport type FilterType = 'DATE_RANGE' | 'CATEGORY' | 'CUSTOM' | 'NUMERIC_RANGE' | 'TEXT_SEARCH';\n\nexport interface GlobalFilter {\n id: string;\n dashboardId: string;\n name: string;\n type: FilterType;\n config: Record<string, unknown>;\n defaultValue?: unknown;\n isRequired: boolean;\n order: number;\n dependsOn?: string;\n cascadeConfig?: Record<string, unknown>;\n cascadeDepth: number;\n version: number;\n metadata?: Record<string, unknown>;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface CreateGlobalFilterInput {\n dashboardId: string;\n name: string;\n type: FilterType;\n config: Record<string, unknown>;\n defaultValue?: unknown;\n isRequired?: boolean;\n dependsOn?: string;\n cascadeConfig?: Record<string, unknown>;\n metadata?: Record<string, unknown>;\n}\n\nexport interface UpdateGlobalFilterInput {\n id: string;\n name?: string;\n config?: Record<string, unknown>;\n defaultValue?: unknown;\n isRequired?: boolean;\n order?: number;\n dependsOn?: string;\n cascadeConfig?: Record<string, unknown>;\n metadata?: Record<string, unknown>;\n}\n\nexport interface UseGlobalFiltersResult {\n filters: GlobalFilter[];\n activeValues: Record<string, unknown>;\n loading: boolean;\n error: Error | null;\n\n // Operations\n fetchFilters: (dashboardId: string) => Promise<GlobalFilter[]>;\n createFilter: (input: CreateGlobalFilterInput) => Promise<GlobalFilter | null>;\n updateFilter: (input: UpdateGlobalFilterInput) => Promise<GlobalFilter | null>;\n deleteFilter: (id: string) => Promise<boolean>;\n reorderFilters: (dashboardId: string, filterIds: string[]) => Promise<GlobalFilter[]>;\n setFilterValue: (filterId: string, value: unknown) => void;\n resetFilters: () => void;\n getFilterValues: () => Record<string, unknown>;\n}\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\nfunction normalizeFilter(data: Record<string, unknown>): GlobalFilter {\n return {\n id: data.id as string,\n dashboardId: data.dashboardId as string,\n name: data.name as string,\n type: data.type as FilterType,\n config: (data.config as Record<string, unknown>) || {},\n defaultValue: data.defaultValue,\n isRequired: (data.isRequired as boolean) || false,\n order: (data.order as number) || 0,\n dependsOn: data.dependsOn as string | undefined,\n cascadeConfig: data.cascadeConfig as Record<string, unknown> | undefined,\n cascadeDepth: (data.cascadeDepth as number) || 0,\n version: (data.version as number) || 1,\n metadata: data.metadata as Record<string, unknown> | undefined,\n createdAt: (data.createdAt as string) || new Date().toISOString(),\n updatedAt: (data.updatedAt as string) || new Date().toISOString(),\n };\n}\n\n// ============================================================================\n// Hook\n// ============================================================================\n\nexport function useGlobalFilters(): UseGlobalFiltersResult {\n const [filters, setFilters] = useState<GlobalFilter[]>([]);\n const [activeValues, setActiveValues] = useState<Record<string, unknown>>({});\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const currentDashboardId = useRef<string>('');\n\n // Use fe-libs storage hook for local mode persistence (P0.3 compliance)\n const [storedFilters, setStoredFilters] = useLocalStorage<StoredFilters>(STORAGE_KEY, {});\n\n const apolloClient = useApolloClient();\n\n // Helper functions that use the fe-libs storage hook\n const loadLocalFilters = useCallback(\n (dashboardId: string): GlobalFilter[] => {\n const dashboardFilters = storedFilters[dashboardId];\n if (dashboardFilters) {\n return dashboardFilters.map((f) => normalizeFilter(f as unknown as Record<string, unknown>));\n }\n return [];\n },\n [storedFilters]\n );\n\n const saveLocalFilters = useCallback(\n (dashboardId: string, newFilters: GlobalFilter[]): void => {\n setStoredFilters((prev) => ({\n ...prev,\n [dashboardId]: newFilters,\n }));\n },\n [setStoredFilters]\n );\n\n // Fetch filters for a dashboard\n const fetchFilters = useCallback(\n async (dashboardId: string): Promise<GlobalFilter[]> => {\n currentDashboardId.current = dashboardId;\n\n // LOCAL MODE: Load from storage via fe-libs hook\n if (USE_LOCAL_MODE) {\n setLoading(true);\n try {\n const localFilters = loadLocalFilters(dashboardId);\n setFilters(localFilters);\n\n // Initialize active values with defaults\n const defaults: Record<string, unknown> = {};\n localFilters.forEach((filter: GlobalFilter) => {\n if (filter.defaultValue !== undefined) {\n defaults[filter.id] = filter.defaultValue;\n }\n });\n setActiveValues((prev) => ({ ...defaults, ...prev }));\n\n return localFilters;\n } finally {\n setLoading(false);\n }\n }\n\n // GRAPHQL MODE: Fetch from backend\n try {\n setLoading(true);\n setError(null);\n\n // Filters are returned as part of the dashboard query\n const result = await apolloClient.query<Record<string, unknown>>({\n query: GetDashboardDocument,\n variables: { id: dashboardId },\n fetchPolicy: 'network-only',\n });\n\n const dashboard = result.data?.getDashboard as Record<string, unknown> | undefined;\n const rawFilters = (dashboard?.globalFilters as Record<string, unknown>[]) || [];\n const normalizedFilters = rawFilters\n .map(normalizeFilter)\n .sort((a: GlobalFilter, b: GlobalFilter) => a.order - b.order);\n\n setFilters(normalizedFilters);\n\n // Initialize active values with defaults\n const defaults: Record<string, unknown> = {};\n normalizedFilters.forEach((filter: GlobalFilter) => {\n if (filter.defaultValue !== undefined) {\n defaults[filter.id] = filter.defaultValue;\n }\n });\n setActiveValues((prev) => ({ ...defaults, ...prev }));\n\n return normalizedFilters;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to fetch filters');\n setError(error);\n return [];\n } finally {\n setLoading(false);\n }\n },\n [apolloClient]\n );\n\n // Create a new filter\n const createFilter = useCallback(\n async (input: CreateGlobalFilterInput): Promise<GlobalFilter | null> => {\n // LOCAL MODE: Create locally and save to localStorage\n if (USE_LOCAL_MODE) {\n setLoading(true);\n try {\n const newFilter: GlobalFilter = {\n id: generateId(),\n dashboardId: input.dashboardId,\n name: input.name,\n type: input.type,\n config: input.config || {},\n defaultValue: input.defaultValue,\n isRequired: input.isRequired || false,\n order: filters.length,\n dependsOn: input.dependsOn,\n cascadeConfig: input.cascadeConfig,\n cascadeDepth: 0,\n version: 1,\n metadata: input.metadata,\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n };\n\n const updatedFilters = [...filters, newFilter].sort((a, b) => a.order - b.order);\n setFilters(updatedFilters);\n saveLocalFilters(input.dashboardId, updatedFilters);\n\n // Set default value if provided\n if (newFilter.defaultValue !== undefined) {\n setActiveValues((prev) => ({ ...prev, [newFilter.id]: newFilter.defaultValue }));\n }\n\n return newFilter;\n } finally {\n setLoading(false);\n }\n }\n\n // GRAPHQL MODE: Create via backend\n try {\n setLoading(true);\n setError(null);\n\n const result = await apolloClient.mutate<Record<string, unknown>>({\n mutation: CreateGlobalFilterDocument,\n variables: { input },\n });\n\n const createResult = result.data?.createGlobalFilter as Record<string, unknown> | undefined;\n if (createResult) {\n const newFilter = normalizeFilter(createResult);\n setFilters((prev) => [...prev, newFilter].sort((a, b) => a.order - b.order));\n\n // Set default value if provided\n if (newFilter.defaultValue !== undefined) {\n setActiveValues((prev) => ({ ...prev, [newFilter.id]: newFilter.defaultValue }));\n }\n\n await fetchFilters(newFilter.dashboardId);\n return newFilter;\n }\n\n return null;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to create filter');\n setError(error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [apolloClient, filters, fetchFilters]\n );\n\n // Update a filter\n const updateFilter = useCallback(\n async (input: UpdateGlobalFilterInput): Promise<GlobalFilter | null> => {\n // LOCAL MODE: Update locally and save to localStorage\n if (USE_LOCAL_MODE) {\n setLoading(true);\n try {\n const existingFilter = filters.find((f) => f.id === input.id);\n if (!existingFilter) {\n return null;\n }\n\n const updatedFilter: GlobalFilter = {\n ...existingFilter,\n name: input.name ?? existingFilter.name,\n config: input.config ?? existingFilter.config,\n defaultValue: input.defaultValue ?? existingFilter.defaultValue,\n isRequired: input.isRequired ?? existingFilter.isRequired,\n order: input.order ?? existingFilter.order,\n dependsOn: input.dependsOn ?? existingFilter.dependsOn,\n cascadeConfig: input.cascadeConfig ?? existingFilter.cascadeConfig,\n metadata: input.metadata ?? existingFilter.metadata,\n version: existingFilter.version + 1,\n updatedAt: new Date().toISOString(),\n };\n\n const updatedFilters = filters\n .map((f) => (f.id === updatedFilter.id ? updatedFilter : f))\n .sort((a, b) => a.order - b.order);\n setFilters(updatedFilters);\n saveLocalFilters(existingFilter.dashboardId, updatedFilters);\n\n return updatedFilter;\n } finally {\n setLoading(false);\n }\n }\n\n // GRAPHQL MODE: Update via backend\n try {\n setLoading(true);\n setError(null);\n\n const result = await apolloClient.mutate<Record<string, unknown>>({\n mutation: UpdateGlobalFilterDocument,\n variables: { input },\n });\n\n const updateResult = result.data?.updateGlobalFilter as Record<string, unknown> | undefined;\n if (updateResult) {\n const updatedFilter = normalizeFilter(updateResult);\n setFilters((prev) =>\n prev.map((f) => (f.id === updatedFilter.id ? updatedFilter : f)).sort((a, b) => a.order - b.order)\n );\n await fetchFilters(updatedFilter.dashboardId);\n return updatedFilter;\n }\n\n return null;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to update filter');\n setError(error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [apolloClient, filters, fetchFilters]\n );\n\n // Delete a filter\n const deleteFilter = useCallback(\n async (id: string): Promise<boolean> => {\n // LOCAL MODE: Delete locally and save to localStorage\n if (USE_LOCAL_MODE) {\n setLoading(true);\n try {\n const existingFilter = filters.find((f) => f.id === id);\n if (!existingFilter) {\n return false;\n }\n\n const updatedFilters = filters.filter((f) => f.id !== id);\n setFilters(updatedFilters);\n saveLocalFilters(existingFilter.dashboardId, updatedFilters);\n\n setActiveValues((prev) => Object.fromEntries(Object.entries(prev).filter(([key]) => key !== id)));\n\n return true;\n } finally {\n setLoading(false);\n }\n }\n\n // GRAPHQL MODE: Delete via backend\n try {\n setLoading(true);\n setError(null);\n\n const result = await apolloClient.mutate<Record<string, unknown>>({\n mutation: DeleteGlobalFilterDocument,\n variables: { id },\n });\n\n if (result.data?.deleteGlobalFilter) {\n setFilters((prev) => prev.filter((f) => f.id !== id));\n setActiveValues((prev) => Object.fromEntries(Object.entries(prev).filter(([key]) => key !== id)));\n return true;\n }\n\n return false;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to delete filter');\n setError(error);\n return false;\n } finally {\n setLoading(false);\n }\n },\n [apolloClient, filters]\n );\n\n // Reorder filters\n const reorderFilters = useCallback(\n async (dashboardId: string, filterIds: string[]): Promise<GlobalFilter[]> => {\n // LOCAL MODE: Reorder locally and save to localStorage\n if (USE_LOCAL_MODE) {\n setLoading(true);\n try {\n const reorderedFilters = filterIds\n .map((id, index) => {\n const filter = filters.find((f) => f.id === id);\n return filter ? { ...filter, order: index } : null;\n })\n .filter((f): f is GlobalFilter => f !== null);\n\n setFilters(reorderedFilters);\n saveLocalFilters(dashboardId, reorderedFilters);\n\n return reorderedFilters;\n } finally {\n setLoading(false);\n }\n }\n\n // GRAPHQL MODE: Reorder via backend\n try {\n setLoading(true);\n setError(null);\n\n const result = await apolloClient.mutate<Record<string, unknown>>({\n mutation: ReorderGlobalFiltersDocument,\n variables: { dashboardId, filterIds },\n });\n\n const reorderResult = result.data?.reorderGlobalFilters as Record<string, unknown>[] | undefined;\n if (reorderResult) {\n const reorderedFilters = reorderResult.map(normalizeFilter);\n setFilters(reorderedFilters);\n return reorderedFilters;\n }\n\n return [];\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to reorder filters');\n setError(error);\n return [];\n } finally {\n setLoading(false);\n }\n },\n [apolloClient, filters]\n );\n\n // Set a filter value locally\n const setFilterValue = useCallback((filterId: string, value: unknown) => {\n setActiveValues((prev) => ({ ...prev, [filterId]: value }));\n }, []);\n\n // Reset all filter values to defaults\n const resetFilters = useCallback(() => {\n const resetDefaults: Record<string, unknown> = {};\n filters.forEach((filter) => {\n if (filter.defaultValue !== undefined) {\n resetDefaults[filter.id] = filter.defaultValue;\n }\n });\n setActiveValues(resetDefaults);\n }, [filters]);\n\n // Get current filter values\n const getFilterValues = useCallback(() => {\n return { ...activeValues };\n }, [activeValues]);\n\n return {\n filters,\n activeValues,\n loading,\n error,\n fetchFilters,\n createFilter,\n updateFilter,\n deleteFilter,\n reorderFilters,\n setFilterValue,\n resetFilters,\n getFilterValues,\n };\n}\n\nexport default useGlobalFilters;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePageOperations.d.ts","sourceRoot":"","sources":["../../../src/bigconsole/hooks/usePageOperations.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAY9C,qDAAqD;AACrD,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;AAEtD,UAAU,eAAe;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,UAAU,eAAe;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,UAAU,oBAAoB;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,UAAU,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACtE,UAAU,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACtE,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,YAAY,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,CAAC;CAC3F;
|
|
1
|
+
{"version":3,"file":"usePageOperations.d.ts","sourceRoot":"","sources":["../../../src/bigconsole/hooks/usePageOperations.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAY9C,qDAAqD;AACrD,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;AAEtD,UAAU,eAAe;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,UAAU,eAAe;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,UAAU,oBAAoB;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,UAAU,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACtE,UAAU,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACtE,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,YAAY,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,CAAC;CAC3F;AA0BD,wBAAgB,iBAAiB,IAAI,oBAAoB,CA8KxD;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -11,6 +11,7 @@ function s(e) {
|
|
|
11
11
|
slug: t?.toLowerCase().replace(/\s+/g, "-") || "",
|
|
12
12
|
order: e.order ?? 0,
|
|
13
13
|
layoutConfig: e.layout || {},
|
|
14
|
+
gridColumns: typeof e.gridColumns == "number" ? e.gridColumns : 12,
|
|
14
15
|
widgets: [],
|
|
15
16
|
createdAt: e.createdAt || (/* @__PURE__ */ new Date()).toISOString(),
|
|
16
17
|
updatedAt: e.updatedAt || (/* @__PURE__ */ new Date()).toISOString()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePageOperations.js","names":[],"sources":["../../../src/bigconsole/hooks/usePageOperations.ts"],"sourcesContent":["/**\n * usePageOperations Hook\n *\n * Provides CRUD operations for dashboard pages using GraphQL.\n */\n\nimport { useCallback, useState } from 'react';\nimport { useApolloClient } from '@apollo/client/react';\nimport type { DashboardPage } from '../types';\nimport {\n CreateDashboardPageDocument,\n UpdateDashboardPageDocument,\n DeleteDashboardPageDocument,\n ReorderDashboardPagesDocument,\n} from '../../generated/wspace-operations';\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/** PageLayout enum values matching GraphQL schema */\nexport type PageLayout = 'GRID' | 'FLEX' | 'FREEFORM';\n\ninterface CreatePageInput {\n dashboardId: string;\n name: string;\n /** PageLayout enum: GRID, FLEX, or FREEFORM (default: GRID) */\n layout?: PageLayout;\n gridColumns?: number;\n metadata?: Record<string, unknown>;\n context?: Record<string, unknown>;\n}\n\ninterface UpdatePageInput {\n id: string;\n name?: string;\n /** PageLayout enum: GRID, FLEX, or FREEFORM */\n layout?: PageLayout;\n gridColumns?: number;\n /** Display order (only for update, not create) */\n order?: number;\n metadata?: Record<string, unknown>;\n context?: Record<string, unknown>;\n}\n\ninterface PageOperationsResult {\n loading: boolean;\n error: Error | null;\n createPage: (input: CreatePageInput) => Promise<DashboardPage | null>;\n updatePage: (input: UpdatePageInput) => Promise<DashboardPage | null>;\n deletePage: (id: string) => Promise<boolean>;\n reorderPages: (dashboardId: string, pageIds: string[]) => Promise<DashboardPage[] | null>;\n}\n\n// ============================================================================\n// Helper: Normalize page from GraphQL response\n// ============================================================================\n\nfunction normalizePage(data: Record<string, unknown>): DashboardPage {\n const name = data.name as string | undefined;\n return {\n id: data.id as string,\n dashboardId: data.dashboardId as string,\n name,\n slug: name?.toLowerCase().replace(/\\s+/g, '-') || '',\n order: (data.order as number) ?? 0,\n layoutConfig: (data.layout as Record<string, unknown>) || {},\n widgets: [],\n createdAt: (data.createdAt as string) || new Date().toISOString(),\n updatedAt: (data.updatedAt as string) || new Date().toISOString(),\n };\n}\n\n// ============================================================================\n// Hook\n// ============================================================================\n\nexport function usePageOperations(): PageOperationsResult {\n const client = useApolloClient();\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n // Create a new page\n const createPage = useCallback(\n async (input: CreatePageInput): Promise<DashboardPage | null> => {\n setLoading(true);\n setError(null);\n\n try {\n // Build input object - only include fields that exist in CreateDashboardPageInput schema\n // Note: 'order' is not available for create, only for update\n const createInput: Record<string, unknown> = {\n dashboardId: input.dashboardId,\n name: input.name,\n };\n\n // Only include optional fields if provided\n if (input.layout) {\n createInput.layout = input.layout;\n }\n if (input.gridColumns !== undefined) {\n createInput.gridColumns = input.gridColumns;\n }\n if (input.metadata) {\n createInput.metadata = input.metadata;\n }\n if (input.context) {\n createInput.context = input.context;\n }\n\n const { data } = await client.mutate<Record<string, unknown>>({\n mutation: CreateDashboardPageDocument,\n variables: {\n input: createInput,\n },\n });\n\n const createPageResult = data?.createDashboardPage as Record<string, unknown> | undefined;\n if (createPageResult) {\n return normalizePage(createPageResult);\n }\n return null;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to create page');\n setError(error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [client]\n );\n\n // Update an existing page\n const updatePage = useCallback(\n async (input: UpdatePageInput): Promise<DashboardPage | null> => {\n setLoading(true);\n setError(null);\n\n try {\n // Build input object - only include fields that are provided\n const updateInput: Record<string, unknown> = {\n id: input.id,\n };\n\n // Only include optional fields if provided\n if (input.name !== undefined) {\n updateInput.name = input.name;\n }\n if (input.layout) {\n updateInput.layout = input.layout;\n }\n if (input.gridColumns !== undefined) {\n updateInput.gridColumns = input.gridColumns;\n }\n if (input.order !== undefined) {\n updateInput.order = input.order;\n }\n if (input.metadata) {\n updateInput.metadata = input.metadata;\n }\n if (input.context) {\n updateInput.context = input.context;\n }\n\n const { data } = await client.mutate<Record<string, unknown>>({\n mutation: UpdateDashboardPageDocument,\n variables: {\n input: updateInput,\n },\n });\n\n const updatePageResult = data?.updateDashboardPage as Record<string, unknown> | undefined;\n if (updatePageResult) {\n return normalizePage(updatePageResult);\n }\n return null;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to update page');\n setError(error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [client]\n );\n\n // Delete a page\n const deletePage = useCallback(\n async (id: string): Promise<boolean> => {\n setLoading(true);\n setError(null);\n\n try {\n const { data } = await client.mutate<Record<string, unknown>>({\n mutation: DeleteDashboardPageDocument,\n variables: { id },\n });\n\n return data?.deleteDashboardPage === true;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to delete page');\n setError(error);\n return false;\n } finally {\n setLoading(false);\n }\n },\n [client]\n );\n\n // Reorder pages\n const reorderPages = useCallback(\n async (dashboardId: string, pageIds: string[]): Promise<DashboardPage[] | null> => {\n setLoading(true);\n setError(null);\n\n try {\n const { data } = await client.mutate<Record<string, unknown>>({\n mutation: ReorderDashboardPagesDocument,\n variables: {\n dashboardId,\n pageIds,\n },\n });\n\n const reorderResult = data?.reorderDashboardPages as Record<string, unknown>[] | undefined;\n if (reorderResult) {\n return reorderResult.map(normalizePage);\n }\n return null;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to reorder pages');\n setError(error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [client]\n );\n\n return {\n loading,\n error,\n createPage,\n updatePage,\n deletePage,\n reorderPages,\n };\n}\n\nexport default usePageOperations;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"usePageOperations.js","names":[],"sources":["../../../src/bigconsole/hooks/usePageOperations.ts"],"sourcesContent":["/**\n * usePageOperations Hook\n *\n * Provides CRUD operations for dashboard pages using GraphQL.\n */\n\nimport { useCallback, useState } from 'react';\nimport { useApolloClient } from '@apollo/client/react';\nimport type { DashboardPage } from '../types';\nimport {\n CreateDashboardPageDocument,\n UpdateDashboardPageDocument,\n DeleteDashboardPageDocument,\n ReorderDashboardPagesDocument,\n} from '../../generated/wspace-operations';\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/** PageLayout enum values matching GraphQL schema */\nexport type PageLayout = 'GRID' | 'FLEX' | 'FREEFORM';\n\ninterface CreatePageInput {\n dashboardId: string;\n name: string;\n /** PageLayout enum: GRID, FLEX, or FREEFORM (default: GRID) */\n layout?: PageLayout;\n gridColumns?: number;\n metadata?: Record<string, unknown>;\n context?: Record<string, unknown>;\n}\n\ninterface UpdatePageInput {\n id: string;\n name?: string;\n /** PageLayout enum: GRID, FLEX, or FREEFORM */\n layout?: PageLayout;\n gridColumns?: number;\n /** Display order (only for update, not create) */\n order?: number;\n metadata?: Record<string, unknown>;\n context?: Record<string, unknown>;\n}\n\ninterface PageOperationsResult {\n loading: boolean;\n error: Error | null;\n createPage: (input: CreatePageInput) => Promise<DashboardPage | null>;\n updatePage: (input: UpdatePageInput) => Promise<DashboardPage | null>;\n deletePage: (id: string) => Promise<boolean>;\n reorderPages: (dashboardId: string, pageIds: string[]) => Promise<DashboardPage[] | null>;\n}\n\n// ============================================================================\n// Helper: Normalize page from GraphQL response\n// ============================================================================\n\nfunction normalizePage(data: Record<string, unknown>): DashboardPage {\n const name = data.name as string | undefined;\n return {\n id: data.id as string,\n dashboardId: data.dashboardId as string,\n name,\n slug: name?.toLowerCase().replace(/\\s+/g, '-') || '',\n order: (data.order as number) ?? 0,\n layoutConfig: (data.layout as Record<string, unknown>) || {},\n gridColumns: typeof data.gridColumns === 'number' ? data.gridColumns : 12,\n widgets: [],\n createdAt: (data.createdAt as string) || new Date().toISOString(),\n updatedAt: (data.updatedAt as string) || new Date().toISOString(),\n };\n}\n\n// ============================================================================\n// Hook\n// ============================================================================\n\nexport function usePageOperations(): PageOperationsResult {\n const client = useApolloClient();\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n // Create a new page\n const createPage = useCallback(\n async (input: CreatePageInput): Promise<DashboardPage | null> => {\n setLoading(true);\n setError(null);\n\n try {\n // Build input object - only include fields that exist in CreateDashboardPageInput schema\n // Note: 'order' is not available for create, only for update\n const createInput: Record<string, unknown> = {\n dashboardId: input.dashboardId,\n name: input.name,\n };\n\n // Only include optional fields if provided\n if (input.layout) {\n createInput.layout = input.layout;\n }\n if (input.gridColumns !== undefined) {\n createInput.gridColumns = input.gridColumns;\n }\n if (input.metadata) {\n createInput.metadata = input.metadata;\n }\n if (input.context) {\n createInput.context = input.context;\n }\n\n const { data } = await client.mutate<Record<string, unknown>>({\n mutation: CreateDashboardPageDocument,\n variables: {\n input: createInput,\n },\n });\n\n const createPageResult = data?.createDashboardPage as Record<string, unknown> | undefined;\n if (createPageResult) {\n return normalizePage(createPageResult);\n }\n return null;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to create page');\n setError(error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [client]\n );\n\n // Update an existing page\n const updatePage = useCallback(\n async (input: UpdatePageInput): Promise<DashboardPage | null> => {\n setLoading(true);\n setError(null);\n\n try {\n // Build input object - only include fields that are provided\n const updateInput: Record<string, unknown> = {\n id: input.id,\n };\n\n // Only include optional fields if provided\n if (input.name !== undefined) {\n updateInput.name = input.name;\n }\n if (input.layout) {\n updateInput.layout = input.layout;\n }\n if (input.gridColumns !== undefined) {\n updateInput.gridColumns = input.gridColumns;\n }\n if (input.order !== undefined) {\n updateInput.order = input.order;\n }\n if (input.metadata) {\n updateInput.metadata = input.metadata;\n }\n if (input.context) {\n updateInput.context = input.context;\n }\n\n const { data } = await client.mutate<Record<string, unknown>>({\n mutation: UpdateDashboardPageDocument,\n variables: {\n input: updateInput,\n },\n });\n\n const updatePageResult = data?.updateDashboardPage as Record<string, unknown> | undefined;\n if (updatePageResult) {\n return normalizePage(updatePageResult);\n }\n return null;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to update page');\n setError(error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [client]\n );\n\n // Delete a page\n const deletePage = useCallback(\n async (id: string): Promise<boolean> => {\n setLoading(true);\n setError(null);\n\n try {\n const { data } = await client.mutate<Record<string, unknown>>({\n mutation: DeleteDashboardPageDocument,\n variables: { id },\n });\n\n return data?.deleteDashboardPage === true;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to delete page');\n setError(error);\n return false;\n } finally {\n setLoading(false);\n }\n },\n [client]\n );\n\n // Reorder pages\n const reorderPages = useCallback(\n async (dashboardId: string, pageIds: string[]): Promise<DashboardPage[] | null> => {\n setLoading(true);\n setError(null);\n\n try {\n const { data } = await client.mutate<Record<string, unknown>>({\n mutation: ReorderDashboardPagesDocument,\n variables: {\n dashboardId,\n pageIds,\n },\n });\n\n const reorderResult = data?.reorderDashboardPages as Record<string, unknown>[] | undefined;\n if (reorderResult) {\n return reorderResult.map(normalizePage);\n }\n return null;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to reorder pages');\n setError(error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [client]\n );\n\n return {\n loading,\n error,\n createPage,\n updatePage,\n deletePage,\n reorderPages,\n };\n}\n\nexport default usePageOperations;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePipelineOperations.d.ts","sourceRoot":"","sources":["../../../src/bigconsole/hooks/usePipelineOperations.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgBH,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,UAAU,EACX,MAAM,UAAU,CAAC;AAMlB,UAAU,4BAA4B;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,UAAU,eAAe;IACvB,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB;AAED,UAAU,mBAAmB;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,MAAM,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,UAAU,mBAAmB;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,UAAU,wBAAwB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,wBAAwB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,iBAAiB;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,oBAAoB;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAkED,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,4BAAiC;;;;+
|
|
1
|
+
{"version":3,"file":"usePipelineOperations.d.ts","sourceRoot":"","sources":["../../../src/bigconsole/hooks/usePipelineOperations.ts"],"names":[],"mappings":"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"}
|