@burdenoff/microfe-bigconsole 2026.912.4 → 2026.916.1
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/assistant/assistantApi.js +62 -55
- package/dist/bigconsole/assistant/assistantApi.js.map +1 -1
- package/dist/bigconsole/assistant/assistantRuntime.js +45 -0
- package/dist/bigconsole/assistant/assistantRuntime.js.map +1 -0
- package/dist/bigconsole/assistant/createSandboxAssistantTransport.js +197 -194
- package/dist/bigconsole/assistant/createSandboxAssistantTransport.js.map +1 -1
- package/dist/bigconsole/components/preview/AiPreviewContent.js +129 -67
- package/dist/bigconsole/components/preview/AiPreviewContent.js.map +1 -1
- package/dist/bigconsole/hooks/useWidgetOperations.js +1 -1
- package/dist/bigconsole/hooks/useWidgetOperations.js.map +1 -1
- package/dist/generated/wspace-operations.js +48 -37
- package/dist/generated/wspace-operations.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWidgetOperations.js","names":[],"sources":["../../../src/bigconsole/hooks/useWidgetOperations.ts"],"sourcesContent":["/**\n * useWidgetOperations Hook\n *\n * Provides CRUD operations for widgets using GraphQL.\n */\n\nimport { useCallback, useState, useMemo, useEffect } from 'react';\nimport { useApolloClient } from '@apollo/client/react';\nimport type {\n Widget,\n WidgetType,\n WidgetPosition,\n ResponsivePosition,\n ResponsivePositionInput,\n RendererType,\n} from '../types';\nimport { useWidgetStore } from '../store';\nimport { normalizeWidgetTypeForApi, mapFromFederationWidgetType } from '../utils/widgetTypeMapping';\nimport {\n ListWidgetsForPageDocument,\n ListWidgetsByDashboardDocument,\n CreateWidgetDocument,\n UpdateWidgetDocument,\n DeleteWidgetDocument,\n DuplicateWidgetDocument,\n BatchUpdateWidgetPositionsDocument,\n RefreshWidgetDataDocument,\n} from '../../generated/wspace-operations';\nimport { useBigConsoleAnalytics } from './useBigConsoleAnalytics';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ninterface CreateWidgetInput {\n pageId: string;\n dashboardId?: string;\n type: WidgetType;\n title: string;\n description?: string;\n // v2.0: Renderer and template support\n renderer?: RendererType;\n template?: Record<string, unknown> | null;\n // v2.0: Data source fields (DataSink → Parser → Widget)\n dataSinkId?: string;\n datasetId?: string;\n parserId?: string;\n parserRules?: string;\n config?: Record<string, unknown>;\n // Fixed Grid Position (legacy v1.2)\n position: WidgetPosition;\n // Responsive Position (v1.0 spec)\n positionResponsive?: ResponsivePositionInput;\n rowOrder?: number;\n refreshInterval?: number;\n metadata?: Record<string, unknown>;\n}\n\ninterface UpdateWidgetInput {\n id: string;\n title?: string;\n description?: string;\n // v2.0: Renderer and template support\n renderer?: RendererType;\n template?: Record<string, unknown> | null;\n // v2.0: Data source fields (DataSink → Parser → Widget)\n dataSinkId?: string;\n datasetId?: string;\n parserId?: string;\n parserRules?: string;\n config?: Record<string, unknown>;\n // Fixed Grid Position (legacy v1.2)\n position?: WidgetPosition;\n // Responsive Position (v1.0 spec)\n positionResponsive?: ResponsivePositionInput;\n rowOrder?: number;\n refreshInterval?: number | null;\n cacheTTL?: number | null;\n metadata?: Record<string, unknown>;\n}\n\ninterface WidgetOperationsResult {\n // Query state\n loading: boolean;\n error: Error | null;\n widgets: Widget[];\n\n // Operations\n createWidget: (input: CreateWidgetInput) => Promise<Widget | null>;\n updateWidget: (input: UpdateWidgetInput) => Promise<Widget | null>;\n deleteWidget: (id: string) => Promise<boolean>;\n duplicateWidget: (id: string, newPosition?: WidgetPosition, newTitle?: string) => Promise<Widget | null>;\n batchUpdatePositions: (updates: Array<{ id: string; position: WidgetPosition }>) => Promise<boolean>;\n refreshWidgetData: (widgetId: string) => Promise<void>;\n refetch: () => Promise<void>;\n}\n\n// ============================================================================\n// Helper: Normalize widget from GraphQL response\n// ============================================================================\n\nfunction normalizeWidget(widget: Record<string, unknown>): Widget {\n const actions = widget.actions as unknown[] | undefined;\n const metadata = widget.metadata as Record<string, unknown> | undefined;\n const respPos = widget.positionResponsive as Record<string, unknown> | undefined;\n\n // Debug: Log raw widget from GraphQL\n\n // Fixed Grid Position (legacy v1.2)\n const position = (widget.position as WidgetPosition) || {\n x: (widget.positionX as number) ?? 0,\n y: (widget.positionY as number) ?? 0,\n width: (widget.positionWidth as number) ?? 4,\n height: (widget.positionHeight as number) ?? 4,\n };\n\n // Responsive Position (v1.0 spec)\n const positionResponsive: ResponsivePosition | null = respPos\n ? {\n xs: (respPos.xs as number) ?? 12,\n sm: (respPos.sm as number) ?? 6,\n md: (respPos.md as number) ?? 4,\n lg: (respPos.lg as number) ?? 3,\n // xl is optional; fall back to lg when absent (server has no xl tier yet)\n ...(respPos.xl !== undefined && respPos.xl !== null ? { xl: respPos.xl as number } : {}),\n }\n : null;\n\n // Read description from metadata if not directly available\n const description = (widget.description as string) || (metadata?.description as string) || '';\n\n // Get the config object\n const config = (widget.config as Record<string, unknown>) || {};\n\n // Check for stored internal widget type in config (preserves original type like 'gauge', 'progress', etc.)\n // This is needed because multiple internal types map to the same federation type (e.g., gauge -> KPI)\n const internalType = config._internalWidgetType as string | undefined;\n\n return {\n id: widget.id,\n pageId: widget.pageId || 'local',\n dashboardId: widget.dashboardId,\n // Use stored internal type if available, otherwise map from federation type\n type: internalType || mapFromFederationWidgetType((widget.type as string) || 'KPI'),\n title: widget.title || 'Untitled Widget',\n description: description,\n // v2.0: Renderer and template support\n renderer: widget.renderer || 'BIGCONSOLE',\n template: widget.template || null,\n // v2.0: Data source fields (DataSink → Parser → Widget)\n dataSinkId: widget.dataSinkId || null,\n datasetId: widget.datasetId || null,\n parserId: widget.parserId || null,\n parserRules: widget.parserRules || null,\n config: config,\n // Fixed Grid Position (legacy v1.2)\n position,\n positionX: position.x,\n positionY: position.y,\n positionWidth: position.width,\n positionHeight: position.height,\n // Responsive Position (v1.0 spec)\n positionResponsive,\n rowOrder: (widget.rowOrder as number | null) ?? null,\n refreshInterval: widget.refreshInterval,\n lastRefreshedAt: widget.lastRefreshedAt,\n cacheTTL: (widget.cacheTTL as number | null) ?? null,\n metadata: metadata,\n context: widget.context,\n drilldown: widget.drilldown,\n translations: widget.translations || [],\n // v2.0: Widget actions\n actions: actions || [],\n // Include widget data from backend\n data: widget.data || null,\n createdAt: widget.createdAt || new Date().toISOString(),\n updatedAt: widget.updatedAt || new Date().toISOString(),\n } as Widget;\n}\n\n// ============================================================================\n// Hook\n// ============================================================================\n\ninterface UseWidgetOperationsOptions {\n /** Skip auto-fetching widgets on mount (use when parent already fetches) */\n skipFetch?: boolean;\n}\n\nexport function useWidgetOperations(\n pageId?: string,\n dashboardId?: string,\n options: UseWidgetOperationsOptions = {}\n): WidgetOperationsResult {\n const { skipFetch = false } = options;\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n // Get Apollo Client from context\n const apolloClient = useApolloClient();\n const emitBigConsoleEvent = useBigConsoleAnalytics();\n\n // Store actions\n const widgetsMap = useWidgetStore((state) => state.widgets);\n const setWidgets = useWidgetStore((state) => state.setWidgets);\n const addWidgetToStore = useWidgetStore((state) => state.addWidget);\n const updateWidgetInStore = useWidgetStore((state) => state.updateWidget);\n const removeWidgetFromStore = useWidgetStore((state) => state.removeWidget);\n\n // Get widgets array from store - memoized\n const widgets = useMemo(() => Array.from(widgetsMap.values()), [widgetsMap]);\n\n // Fetch widgets from backend\n const fetchWidgets = useCallback(async () => {\n if (!pageId && !dashboardId) {\n return;\n }\n\n try {\n setLoading(true);\n setError(null);\n\n if (dashboardId) {\n const result = await apolloClient.query<Record<string, unknown>>({\n query: ListWidgetsByDashboardDocument,\n variables: { dashboardId },\n fetchPolicy: 'network-only',\n });\n const widgetsList = (result.data?.listWidgetsByDashboard as Record<string, unknown>[]) || [];\n setWidgets(widgetsList.map(normalizeWidget));\n } else if (pageId) {\n const result = await apolloClient.query<Record<string, unknown>>({\n query: ListWidgetsForPageDocument,\n variables: { pageId },\n fetchPolicy: 'network-only',\n });\n const listResult = result.data?.listWidgets as Record<string, unknown> | undefined;\n const edges = (listResult?.edges as { node: Record<string, unknown> }[]) || [];\n const widgetsList = edges.map((edge: { node: Record<string, unknown> }) => edge.node);\n setWidgets(widgetsList.map(normalizeWidget));\n }\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to fetch widgets');\n setError(error);\n } finally {\n setLoading(false);\n }\n }, [apolloClient, pageId, dashboardId, setWidgets]);\n\n // Fetch on mount and when pageId/dashboardId changes (unless skipFetch is true)\n useEffect(() => {\n if (!skipFetch) {\n fetchWidgets();\n }\n }, [fetchWidgets, skipFetch]);\n\n // Create widget\n const createWidget = useCallback(\n async (input: CreateWidgetInput): Promise<Widget | null> => {\n try {\n setLoading(true);\n setError(null);\n\n // Build mutation input\n // Map internal widget type to federation-accessible type for API calls\n const federationType = normalizeWidgetTypeForApi(input.type);\n\n // Store the original internal widget type in config for proper restoration\n // This is needed because multiple internal types (gauge, progress, text, etc.)\n // map to the same federation type (KPI), but we need to preserve the original\n // type for correct widget rendering\n const configWithInternalType = {\n ...(input.config || {}),\n _internalWidgetType: input.type,\n };\n\n const mutationInput: Record<string, unknown> = {\n pageId: input.pageId,\n type: federationType,\n title: input.title,\n // v2.0: Renderer and template support\n renderer: input.renderer || 'BIGCONSOLE',\n template: input.template || null,\n // v2.0: Data source fields (DataSink → Parser → Widget)\n dataSinkId: input.dataSinkId,\n datasetId: input.datasetId,\n parserId: input.parserId,\n parserRules: input.parserRules,\n config: configWithInternalType,\n // Fixed Grid Position (legacy v1.2)\n position: {\n x: input.position.x,\n y: input.position.y,\n width: input.position.width,\n height: input.position.height,\n },\n refreshInterval: input.refreshInterval,\n metadata: input.metadata,\n };\n\n // Add Responsive Position if provided (v1.0 spec)\n if (input.positionResponsive) {\n mutationInput.positionResponsive = {\n xs: input.positionResponsive.xs ?? 12,\n sm: input.positionResponsive.sm ?? 6,\n md: input.positionResponsive.md ?? 4,\n lg: input.positionResponsive.lg ?? 3,\n };\n }\n\n // Add rowOrder if provided\n if (input.rowOrder !== undefined) {\n mutationInput.rowOrder = input.rowOrder;\n }\n\n emitBigConsoleEvent('bigconsole.widget.create_clicked', {\n dashboardId: input.dashboardId || dashboardId,\n pageId: input.pageId,\n widgetType: input.type,\n });\n\n const result = await apolloClient.mutate<Record<string, unknown>>({\n mutation: CreateWidgetDocument,\n variables: { input: mutationInput },\n });\n\n const createResult = result.data?.createBigConsoleWidget as Record<string, unknown> | undefined;\n if (createResult) {\n const newWidget = normalizeWidget(createResult);\n addWidgetToStore(newWidget);\n emitBigConsoleEvent('bigconsole.widget.created', {\n dashboardId: newWidget.dashboardId || input.dashboardId || dashboardId,\n pageId: newWidget.pageId,\n widgetId: newWidget.id,\n widgetType: newWidget.type,\n });\n return newWidget;\n }\n\n return null;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to create widget');\n setError(error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [apolloClient, addWidgetToStore, dashboardId, emitBigConsoleEvent]\n );\n\n // Update widget\n const updateWidget = useCallback(\n async (input: UpdateWidgetInput): Promise<Widget | null> => {\n try {\n setLoading(true);\n setError(null);\n\n // Get latest widget from store (avoid stale closure)\n const currentWidgetsMap = useWidgetStore.getState().widgets;\n const existingWidget = currentWidgetsMap.get(input.id);\n if (!existingWidget) {\n throw new Error(`Widget not found: ${input.id}`);\n }\n\n const updateInput: Record<string, unknown> = { id: input.id };\n if (input.title !== undefined) updateInput.title = input.title;\n // v2.0: Renderer and template support\n if (input.renderer !== undefined) updateInput.renderer = input.renderer;\n if (input.template !== undefined) updateInput.template = input.template;\n // v2.0: Data source fields (DataSink → Parser → Widget)\n if (input.dataSinkId !== undefined) updateInput.dataSinkId = input.dataSinkId;\n if (input.datasetId !== undefined) updateInput.datasetId = input.datasetId;\n if (input.parserId !== undefined) updateInput.parserId = input.parserId;\n if (input.parserRules !== undefined) updateInput.parserRules = input.parserRules;\n if (input.config !== undefined) updateInput.config = input.config;\n if (input.refreshInterval !== undefined) updateInput.refreshInterval = input.refreshInterval;\n if (input.metadata !== undefined) updateInput.metadata = input.metadata;\n\n // Fixed Grid Position (legacy v1.2)\n if (input.position) {\n updateInput.position = {\n x: input.position.x,\n y: input.position.y,\n width: input.position.width,\n height: input.position.height,\n };\n }\n\n // Responsive Position (v1.0 spec)\n if (input.positionResponsive) {\n updateInput.positionResponsive = {\n xs: input.positionResponsive.xs,\n sm: input.positionResponsive.sm,\n md: input.positionResponsive.md,\n lg: input.positionResponsive.lg,\n };\n }\n\n // Row order\n if (input.rowOrder !== undefined) {\n updateInput.rowOrder = input.rowOrder;\n }\n\n const result = await apolloClient.mutate<Record<string, unknown>>({\n mutation: UpdateWidgetDocument,\n variables: { input: updateInput },\n });\n\n if (result.error) {\n throw result.error;\n }\n\n const updateResult = result.data?.updateBigConsoleWidget as Record<string, unknown> | undefined;\n if (updateResult) {\n const updatedWidget = normalizeWidget(updateResult);\n updateWidgetInStore(input.id, updatedWidget);\n return updatedWidget;\n }\n\n return null;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to update widget');\n setError(error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [apolloClient, updateWidgetInStore]\n );\n\n // Delete widget\n const deleteWidget = useCallback(\n async (id: string): Promise<boolean> => {\n try {\n setLoading(true);\n setError(null);\n\n const result = await apolloClient.mutate<Record<string, unknown>>({\n mutation: DeleteWidgetDocument,\n variables: { id },\n });\n\n if (result.data?.deleteBigConsoleWidget) {\n removeWidgetFromStore(id);\n return true;\n }\n\n return false;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to delete widget');\n setError(error);\n return false;\n } finally {\n setLoading(false);\n }\n },\n [apolloClient, removeWidgetFromStore]\n );\n\n // Duplicate widget\n const duplicateWidget = useCallback(\n async (id: string, newPosition?: WidgetPosition, newTitle?: string): Promise<Widget | null> => {\n try {\n setLoading(true);\n setError(null);\n\n // Get latest widget from store (avoid stale closure)\n const currentWidgetsMap = useWidgetStore.getState().widgets;\n const existingWidget = currentWidgetsMap.get(id);\n if (!existingWidget) {\n throw new Error(`Widget not found: ${id}`);\n }\n\n emitBigConsoleEvent('bigconsole.widget.duplicate_clicked', {\n dashboardId: existingWidget.dashboardId || dashboardId,\n pageId: existingWidget.pageId,\n sourceWidgetId: id,\n widgetType: existingWidget.type,\n });\n\n const result = await apolloClient.mutate<Record<string, unknown>>({\n mutation: DuplicateWidgetDocument,\n variables: {\n id,\n newPosition: newPosition\n ? {\n x: newPosition.x,\n y: newPosition.y,\n width: newPosition.width,\n height: newPosition.height,\n }\n : undefined,\n newTitle,\n },\n });\n\n if (result.error) {\n throw result.error;\n }\n\n const dupResult = result.data?.duplicateWidget as Record<string, unknown> | undefined;\n if (dupResult) {\n const duplicatedWidget = normalizeWidget(dupResult);\n addWidgetToStore(duplicatedWidget);\n emitBigConsoleEvent('bigconsole.widget.duplicated', {\n dashboardId: duplicatedWidget.dashboardId || existingWidget.dashboardId || dashboardId,\n pageId: duplicatedWidget.pageId,\n widgetId: duplicatedWidget.id,\n sourceWidgetId: id,\n widgetType: duplicatedWidget.type,\n });\n return duplicatedWidget;\n }\n\n return null;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to duplicate widget');\n setError(error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [apolloClient, addWidgetToStore, dashboardId, emitBigConsoleEvent]\n );\n\n // Batch update positions\n const batchUpdatePositions = useCallback(\n async (updates: Array<{ id: string; position: WidgetPosition }>): Promise<boolean> => {\n try {\n setLoading(true);\n setError(null);\n\n const result = await apolloClient.mutate<Record<string, unknown>>({\n mutation: BatchUpdateWidgetPositionsDocument,\n variables: {\n updates: updates.map((u) => ({\n id: u.id,\n position: {\n x: u.position.x,\n y: u.position.y,\n width: u.position.width,\n height: u.position.height,\n },\n })),\n },\n });\n\n if (result.data?.batchUpdateWidgetPositions) {\n // Update local store with results\n updates.forEach((update) => {\n updateWidgetInStore(update.id, {\n position: update.position,\n positionX: update.position.x,\n positionY: update.position.y,\n positionWidth: update.position.width,\n positionHeight: update.position.height,\n updatedAt: new Date().toISOString(),\n });\n });\n return true;\n }\n\n return false;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to batch update positions');\n setError(error);\n return false;\n } finally {\n setLoading(false);\n }\n },\n [apolloClient, updateWidgetInStore]\n );\n\n // Refresh widget data\n const refreshWidgetData = useCallback(\n async (widgetId: string): Promise<void> => {\n try {\n await apolloClient.mutate<Record<string, unknown>>({\n mutation: RefreshWidgetDataDocument,\n variables: { widgetId },\n });\n } catch (err) {}\n },\n [apolloClient]\n );\n\n // Refetch\n const refetch = useCallback(async (): Promise<void> => {\n await fetchWidgets();\n }, [fetchWidgets]);\n\n return {\n loading,\n error,\n widgets,\n createWidget,\n updateWidget,\n deleteWidget,\n duplicateWidget,\n batchUpdatePositions,\n refreshWidgetData,\n refetch,\n };\n}\n\nexport default useWidgetOperations;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useWidgetOperations.js","names":[],"sources":["../../../src/bigconsole/hooks/useWidgetOperations.ts"],"sourcesContent":["/**\n * useWidgetOperations Hook\n *\n * Provides CRUD operations for widgets using GraphQL.\n */\n\nimport { useCallback, useState, useMemo, useEffect } from 'react';\nimport { useApolloClient } from '@apollo/client/react';\nimport type {\n Widget,\n WidgetType,\n WidgetPosition,\n ResponsivePosition,\n ResponsivePositionInput,\n RendererType,\n} from '../types';\nimport { useWidgetStore } from '../store';\nimport { normalizeWidgetTypeForApi, mapFromFederationWidgetType } from '../utils/widgetTypeMapping';\nimport {\n ListWidgetsForPageDocument,\n ListWidgetsByDashboardDocument,\n CreateWidgetDocument,\n UpdateWidgetDocument,\n DeleteWidgetDocument,\n DuplicateWidgetDocument,\n BatchUpdateWidgetPositionsDocument,\n RefreshWidgetDataDocument,\n} from '../../generated/wspace-operations';\nimport { useBigConsoleAnalytics } from './useBigConsoleAnalytics';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ninterface CreateWidgetInput {\n pageId: string;\n dashboardId?: string;\n type: WidgetType;\n title: string;\n description?: string;\n // v2.0: Renderer and template support\n renderer?: RendererType;\n template?: Record<string, unknown> | null;\n // v2.0: Data source fields (DataSink → Parser → Widget)\n dataSinkId?: string;\n datasetId?: string;\n parserId?: string;\n parserRules?: string;\n config?: Record<string, unknown>;\n // Fixed Grid Position (legacy v1.2)\n position: WidgetPosition;\n // Responsive Position (v1.0 spec)\n positionResponsive?: ResponsivePositionInput;\n rowOrder?: number;\n refreshInterval?: number;\n metadata?: Record<string, unknown>;\n}\n\ninterface UpdateWidgetInput {\n id: string;\n title?: string;\n description?: string;\n // v2.0: Renderer and template support\n renderer?: RendererType;\n template?: Record<string, unknown> | null;\n // v2.0: Data source fields (DataSink → Parser → Widget)\n dataSinkId?: string;\n datasetId?: string;\n parserId?: string;\n parserRules?: string;\n config?: Record<string, unknown>;\n // Fixed Grid Position (legacy v1.2)\n position?: WidgetPosition;\n // Responsive Position (v1.0 spec)\n positionResponsive?: ResponsivePositionInput;\n rowOrder?: number;\n refreshInterval?: number | null;\n cacheTTL?: number | null;\n metadata?: Record<string, unknown>;\n}\n\ninterface WidgetOperationsResult {\n // Query state\n loading: boolean;\n error: Error | null;\n widgets: Widget[];\n\n // Operations\n createWidget: (input: CreateWidgetInput) => Promise<Widget | null>;\n updateWidget: (input: UpdateWidgetInput) => Promise<Widget | null>;\n deleteWidget: (id: string) => Promise<boolean>;\n duplicateWidget: (id: string, newPosition?: WidgetPosition, newTitle?: string) => Promise<Widget | null>;\n batchUpdatePositions: (updates: Array<{ id: string; position: WidgetPosition }>) => Promise<boolean>;\n refreshWidgetData: (widgetId: string) => Promise<void>;\n refetch: () => Promise<void>;\n}\n\n// ============================================================================\n// Helper: Normalize widget from GraphQL response\n// ============================================================================\n\n/**\n * Shape a raw GraphQL widget into the app's `Widget`.\n *\n * ★ Exported (BC0, BOFF-7333) so the AI preview can render widgets from its OWN\n * local state instead of going through this hook, which publishes into the\n * GLOBAL widget store. Opening the preview used to overwrite the widgets an\n * already-open dashboard was showing. Exporting the pure mapper keeps the two\n * paths on one normalisation rather than letting a copy drift.\n */\nexport function normalizeWidget(widget: Record<string, unknown>): Widget {\n const actions = widget.actions as unknown[] | undefined;\n const metadata = widget.metadata as Record<string, unknown> | undefined;\n const respPos = widget.positionResponsive as Record<string, unknown> | undefined;\n\n // Debug: Log raw widget from GraphQL\n\n // Fixed Grid Position (legacy v1.2)\n const position = (widget.position as WidgetPosition) || {\n x: (widget.positionX as number) ?? 0,\n y: (widget.positionY as number) ?? 0,\n width: (widget.positionWidth as number) ?? 4,\n height: (widget.positionHeight as number) ?? 4,\n };\n\n // Responsive Position (v1.0 spec)\n const positionResponsive: ResponsivePosition | null = respPos\n ? {\n xs: (respPos.xs as number) ?? 12,\n sm: (respPos.sm as number) ?? 6,\n md: (respPos.md as number) ?? 4,\n lg: (respPos.lg as number) ?? 3,\n // xl is optional; fall back to lg when absent (server has no xl tier yet)\n ...(respPos.xl !== undefined && respPos.xl !== null ? { xl: respPos.xl as number } : {}),\n }\n : null;\n\n // Read description from metadata if not directly available\n const description = (widget.description as string) || (metadata?.description as string) || '';\n\n // Get the config object\n const config = (widget.config as Record<string, unknown>) || {};\n\n // Check for stored internal widget type in config (preserves original type like 'gauge', 'progress', etc.)\n // This is needed because multiple internal types map to the same federation type (e.g., gauge -> KPI)\n const internalType = config._internalWidgetType as string | undefined;\n\n return {\n id: widget.id,\n pageId: widget.pageId || 'local',\n dashboardId: widget.dashboardId,\n // Use stored internal type if available, otherwise map from federation type\n type: internalType || mapFromFederationWidgetType((widget.type as string) || 'KPI'),\n title: widget.title || 'Untitled Widget',\n description: description,\n // v2.0: Renderer and template support\n renderer: widget.renderer || 'BIGCONSOLE',\n template: widget.template || null,\n // v2.0: Data source fields (DataSink → Parser → Widget)\n dataSinkId: widget.dataSinkId || null,\n datasetId: widget.datasetId || null,\n parserId: widget.parserId || null,\n parserRules: widget.parserRules || null,\n config: config,\n // Fixed Grid Position (legacy v1.2)\n position,\n positionX: position.x,\n positionY: position.y,\n positionWidth: position.width,\n positionHeight: position.height,\n // Responsive Position (v1.0 spec)\n positionResponsive,\n rowOrder: (widget.rowOrder as number | null) ?? null,\n refreshInterval: widget.refreshInterval,\n lastRefreshedAt: widget.lastRefreshedAt,\n cacheTTL: (widget.cacheTTL as number | null) ?? null,\n metadata: metadata,\n context: widget.context,\n drilldown: widget.drilldown,\n translations: widget.translations || [],\n // v2.0: Widget actions\n actions: actions || [],\n // Include widget data from backend\n data: widget.data || null,\n createdAt: widget.createdAt || new Date().toISOString(),\n updatedAt: widget.updatedAt || new Date().toISOString(),\n } as Widget;\n}\n\n// ============================================================================\n// Hook\n// ============================================================================\n\ninterface UseWidgetOperationsOptions {\n /** Skip auto-fetching widgets on mount (use when parent already fetches) */\n skipFetch?: boolean;\n}\n\nexport function useWidgetOperations(\n pageId?: string,\n dashboardId?: string,\n options: UseWidgetOperationsOptions = {}\n): WidgetOperationsResult {\n const { skipFetch = false } = options;\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n // Get Apollo Client from context\n const apolloClient = useApolloClient();\n const emitBigConsoleEvent = useBigConsoleAnalytics();\n\n // Store actions\n const widgetsMap = useWidgetStore((state) => state.widgets);\n const setWidgets = useWidgetStore((state) => state.setWidgets);\n const addWidgetToStore = useWidgetStore((state) => state.addWidget);\n const updateWidgetInStore = useWidgetStore((state) => state.updateWidget);\n const removeWidgetFromStore = useWidgetStore((state) => state.removeWidget);\n\n // Get widgets array from store - memoized\n const widgets = useMemo(() => Array.from(widgetsMap.values()), [widgetsMap]);\n\n // Fetch widgets from backend\n const fetchWidgets = useCallback(async () => {\n if (!pageId && !dashboardId) {\n return;\n }\n\n try {\n setLoading(true);\n setError(null);\n\n if (dashboardId) {\n const result = await apolloClient.query<Record<string, unknown>>({\n query: ListWidgetsByDashboardDocument,\n variables: { dashboardId },\n fetchPolicy: 'network-only',\n });\n const widgetsList = (result.data?.listWidgetsByDashboard as Record<string, unknown>[]) || [];\n setWidgets(widgetsList.map(normalizeWidget));\n } else if (pageId) {\n const result = await apolloClient.query<Record<string, unknown>>({\n query: ListWidgetsForPageDocument,\n variables: { pageId },\n fetchPolicy: 'network-only',\n });\n const listResult = result.data?.listWidgets as Record<string, unknown> | undefined;\n const edges = (listResult?.edges as { node: Record<string, unknown> }[]) || [];\n const widgetsList = edges.map((edge: { node: Record<string, unknown> }) => edge.node);\n setWidgets(widgetsList.map(normalizeWidget));\n }\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to fetch widgets');\n setError(error);\n } finally {\n setLoading(false);\n }\n }, [apolloClient, pageId, dashboardId, setWidgets]);\n\n // Fetch on mount and when pageId/dashboardId changes (unless skipFetch is true)\n useEffect(() => {\n if (!skipFetch) {\n fetchWidgets();\n }\n }, [fetchWidgets, skipFetch]);\n\n // Create widget\n const createWidget = useCallback(\n async (input: CreateWidgetInput): Promise<Widget | null> => {\n try {\n setLoading(true);\n setError(null);\n\n // Build mutation input\n // Map internal widget type to federation-accessible type for API calls\n const federationType = normalizeWidgetTypeForApi(input.type);\n\n // Store the original internal widget type in config for proper restoration\n // This is needed because multiple internal types (gauge, progress, text, etc.)\n // map to the same federation type (KPI), but we need to preserve the original\n // type for correct widget rendering\n const configWithInternalType = {\n ...(input.config || {}),\n _internalWidgetType: input.type,\n };\n\n const mutationInput: Record<string, unknown> = {\n pageId: input.pageId,\n type: federationType,\n title: input.title,\n // v2.0: Renderer and template support\n renderer: input.renderer || 'BIGCONSOLE',\n template: input.template || null,\n // v2.0: Data source fields (DataSink → Parser → Widget)\n dataSinkId: input.dataSinkId,\n datasetId: input.datasetId,\n parserId: input.parserId,\n parserRules: input.parserRules,\n config: configWithInternalType,\n // Fixed Grid Position (legacy v1.2)\n position: {\n x: input.position.x,\n y: input.position.y,\n width: input.position.width,\n height: input.position.height,\n },\n refreshInterval: input.refreshInterval,\n metadata: input.metadata,\n };\n\n // Add Responsive Position if provided (v1.0 spec)\n if (input.positionResponsive) {\n mutationInput.positionResponsive = {\n xs: input.positionResponsive.xs ?? 12,\n sm: input.positionResponsive.sm ?? 6,\n md: input.positionResponsive.md ?? 4,\n lg: input.positionResponsive.lg ?? 3,\n };\n }\n\n // Add rowOrder if provided\n if (input.rowOrder !== undefined) {\n mutationInput.rowOrder = input.rowOrder;\n }\n\n emitBigConsoleEvent('bigconsole.widget.create_clicked', {\n dashboardId: input.dashboardId || dashboardId,\n pageId: input.pageId,\n widgetType: input.type,\n });\n\n const result = await apolloClient.mutate<Record<string, unknown>>({\n mutation: CreateWidgetDocument,\n variables: { input: mutationInput },\n });\n\n const createResult = result.data?.createBigConsoleWidget as Record<string, unknown> | undefined;\n if (createResult) {\n const newWidget = normalizeWidget(createResult);\n addWidgetToStore(newWidget);\n emitBigConsoleEvent('bigconsole.widget.created', {\n dashboardId: newWidget.dashboardId || input.dashboardId || dashboardId,\n pageId: newWidget.pageId,\n widgetId: newWidget.id,\n widgetType: newWidget.type,\n });\n return newWidget;\n }\n\n return null;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to create widget');\n setError(error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [apolloClient, addWidgetToStore, dashboardId, emitBigConsoleEvent]\n );\n\n // Update widget\n const updateWidget = useCallback(\n async (input: UpdateWidgetInput): Promise<Widget | null> => {\n try {\n setLoading(true);\n setError(null);\n\n // Get latest widget from store (avoid stale closure)\n const currentWidgetsMap = useWidgetStore.getState().widgets;\n const existingWidget = currentWidgetsMap.get(input.id);\n if (!existingWidget) {\n throw new Error(`Widget not found: ${input.id}`);\n }\n\n const updateInput: Record<string, unknown> = { id: input.id };\n if (input.title !== undefined) updateInput.title = input.title;\n // v2.0: Renderer and template support\n if (input.renderer !== undefined) updateInput.renderer = input.renderer;\n if (input.template !== undefined) updateInput.template = input.template;\n // v2.0: Data source fields (DataSink → Parser → Widget)\n if (input.dataSinkId !== undefined) updateInput.dataSinkId = input.dataSinkId;\n if (input.datasetId !== undefined) updateInput.datasetId = input.datasetId;\n if (input.parserId !== undefined) updateInput.parserId = input.parserId;\n if (input.parserRules !== undefined) updateInput.parserRules = input.parserRules;\n if (input.config !== undefined) updateInput.config = input.config;\n if (input.refreshInterval !== undefined) updateInput.refreshInterval = input.refreshInterval;\n if (input.metadata !== undefined) updateInput.metadata = input.metadata;\n\n // Fixed Grid Position (legacy v1.2)\n if (input.position) {\n updateInput.position = {\n x: input.position.x,\n y: input.position.y,\n width: input.position.width,\n height: input.position.height,\n };\n }\n\n // Responsive Position (v1.0 spec)\n if (input.positionResponsive) {\n updateInput.positionResponsive = {\n xs: input.positionResponsive.xs,\n sm: input.positionResponsive.sm,\n md: input.positionResponsive.md,\n lg: input.positionResponsive.lg,\n };\n }\n\n // Row order\n if (input.rowOrder !== undefined) {\n updateInput.rowOrder = input.rowOrder;\n }\n\n const result = await apolloClient.mutate<Record<string, unknown>>({\n mutation: UpdateWidgetDocument,\n variables: { input: updateInput },\n });\n\n if (result.error) {\n throw result.error;\n }\n\n const updateResult = result.data?.updateBigConsoleWidget as Record<string, unknown> | undefined;\n if (updateResult) {\n const updatedWidget = normalizeWidget(updateResult);\n updateWidgetInStore(input.id, updatedWidget);\n return updatedWidget;\n }\n\n return null;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to update widget');\n setError(error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [apolloClient, updateWidgetInStore]\n );\n\n // Delete widget\n const deleteWidget = useCallback(\n async (id: string): Promise<boolean> => {\n try {\n setLoading(true);\n setError(null);\n\n const result = await apolloClient.mutate<Record<string, unknown>>({\n mutation: DeleteWidgetDocument,\n variables: { id },\n });\n\n if (result.data?.deleteBigConsoleWidget) {\n removeWidgetFromStore(id);\n return true;\n }\n\n return false;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to delete widget');\n setError(error);\n return false;\n } finally {\n setLoading(false);\n }\n },\n [apolloClient, removeWidgetFromStore]\n );\n\n // Duplicate widget\n const duplicateWidget = useCallback(\n async (id: string, newPosition?: WidgetPosition, newTitle?: string): Promise<Widget | null> => {\n try {\n setLoading(true);\n setError(null);\n\n // Get latest widget from store (avoid stale closure)\n const currentWidgetsMap = useWidgetStore.getState().widgets;\n const existingWidget = currentWidgetsMap.get(id);\n if (!existingWidget) {\n throw new Error(`Widget not found: ${id}`);\n }\n\n emitBigConsoleEvent('bigconsole.widget.duplicate_clicked', {\n dashboardId: existingWidget.dashboardId || dashboardId,\n pageId: existingWidget.pageId,\n sourceWidgetId: id,\n widgetType: existingWidget.type,\n });\n\n const result = await apolloClient.mutate<Record<string, unknown>>({\n mutation: DuplicateWidgetDocument,\n variables: {\n id,\n newPosition: newPosition\n ? {\n x: newPosition.x,\n y: newPosition.y,\n width: newPosition.width,\n height: newPosition.height,\n }\n : undefined,\n newTitle,\n },\n });\n\n if (result.error) {\n throw result.error;\n }\n\n const dupResult = result.data?.duplicateWidget as Record<string, unknown> | undefined;\n if (dupResult) {\n const duplicatedWidget = normalizeWidget(dupResult);\n addWidgetToStore(duplicatedWidget);\n emitBigConsoleEvent('bigconsole.widget.duplicated', {\n dashboardId: duplicatedWidget.dashboardId || existingWidget.dashboardId || dashboardId,\n pageId: duplicatedWidget.pageId,\n widgetId: duplicatedWidget.id,\n sourceWidgetId: id,\n widgetType: duplicatedWidget.type,\n });\n return duplicatedWidget;\n }\n\n return null;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to duplicate widget');\n setError(error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [apolloClient, addWidgetToStore, dashboardId, emitBigConsoleEvent]\n );\n\n // Batch update positions\n const batchUpdatePositions = useCallback(\n async (updates: Array<{ id: string; position: WidgetPosition }>): Promise<boolean> => {\n try {\n setLoading(true);\n setError(null);\n\n const result = await apolloClient.mutate<Record<string, unknown>>({\n mutation: BatchUpdateWidgetPositionsDocument,\n variables: {\n updates: updates.map((u) => ({\n id: u.id,\n position: {\n x: u.position.x,\n y: u.position.y,\n width: u.position.width,\n height: u.position.height,\n },\n })),\n },\n });\n\n if (result.data?.batchUpdateWidgetPositions) {\n // Update local store with results\n updates.forEach((update) => {\n updateWidgetInStore(update.id, {\n position: update.position,\n positionX: update.position.x,\n positionY: update.position.y,\n positionWidth: update.position.width,\n positionHeight: update.position.height,\n updatedAt: new Date().toISOString(),\n });\n });\n return true;\n }\n\n return false;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to batch update positions');\n setError(error);\n return false;\n } finally {\n setLoading(false);\n }\n },\n [apolloClient, updateWidgetInStore]\n );\n\n // Refresh widget data\n const refreshWidgetData = useCallback(\n async (widgetId: string): Promise<void> => {\n try {\n await apolloClient.mutate<Record<string, unknown>>({\n mutation: RefreshWidgetDataDocument,\n variables: { widgetId },\n });\n } catch (err) {}\n },\n [apolloClient]\n );\n\n // Refetch\n const refetch = useCallback(async (): Promise<void> => {\n await fetchWidgets();\n }, [fetchWidgets]);\n\n return {\n loading,\n error,\n widgets,\n createWidget,\n updateWidget,\n deleteWidget,\n duplicateWidget,\n batchUpdatePositions,\n refreshWidgetData,\n refetch,\n };\n}\n\nexport default useWidgetOperations;\n"],"mappings":";;;;;;;;AA8GA,SAAgB,EAAgB,GAAyC;CACvE,IAAM,IAAU,EAAO,SACjB,IAAW,EAAO,UAClB,IAAU,EAAO,oBAKjB,IAAY,EAAO,YAA+B;EACtD,GAAI,EAAO,aAAwB;EACnC,GAAI,EAAO,aAAwB;EACnC,OAAQ,EAAO,iBAA4B;EAC3C,QAAS,EAAO,kBAA6B;EAC9C,EAGK,IAAgD,IAClD;EACE,IAAK,EAAQ,MAAiB;EAC9B,IAAK,EAAQ,MAAiB;EAC9B,IAAK,EAAQ,MAAiB;EAC9B,IAAK,EAAQ,MAAiB;EAE9B,GAAI,EAAQ,OAAO,KAAA,KAAa,EAAQ,OAAO,OAAO,EAAE,IAAI,EAAQ,IAAc,GAAG,EAAE;EACxF,GACD,MAGE,IAAe,EAAO,eAA2B,GAAU,eAA0B,IAGrF,IAAU,EAAO,UAAsC,EAAE,EAIzD,IAAe,EAAO;AAE5B,QAAO;EACL,IAAI,EAAO;EACX,QAAQ,EAAO,UAAU;EACzB,aAAa,EAAO;EAEpB,MAAM,KAAgB,EAA6B,EAAO,QAAmB,MAAM;EACnF,OAAO,EAAO,SAAS;EACV;EAEb,UAAU,EAAO,YAAY;EAC7B,UAAU,EAAO,YAAY;EAE7B,YAAY,EAAO,cAAc;EACjC,WAAW,EAAO,aAAa;EAC/B,UAAU,EAAO,YAAY;EAC7B,aAAa,EAAO,eAAe;EAC3B;EAER;EACA,WAAW,EAAS;EACpB,WAAW,EAAS;EACpB,eAAe,EAAS;EACxB,gBAAgB,EAAS;EAEzB;EACA,UAAW,EAAO,YAA8B;EAChD,iBAAiB,EAAO;EACxB,iBAAiB,EAAO;EACxB,UAAW,EAAO,YAA8B;EACtC;EACV,SAAS,EAAO;EAChB,WAAW,EAAO;EAClB,cAAc,EAAO,gBAAgB,EAAE;EAEvC,SAAS,KAAW,EAAE;EAEtB,MAAM,EAAO,QAAQ;EACrB,WAAW,EAAO,8BAAa,IAAI,MAAM,EAAC,aAAa;EACvD,WAAW,EAAO,8BAAa,IAAI,MAAM,EAAC,aAAa;EACxD;;AAYH,SAAgB,EACd,GACA,GACA,IAAsC,EAAE,EAChB;CACxB,IAAM,EAAE,eAAY,OAAU,GACxB,CAAC,GAAS,KAAc,EAAS,GAAM,EACvC,CAAC,GAAO,KAAY,EAAuB,KAAK,EAGhD,IAAe,GAAiB,EAChC,IAAsB,GAAwB,EAG9C,IAAa,GAAgB,MAAU,EAAM,QAAQ,EACrD,IAAa,GAAgB,MAAU,EAAM,WAAW,EACxD,IAAmB,GAAgB,MAAU,EAAM,UAAU,EAC7D,IAAsB,GAAgB,MAAU,EAAM,aAAa,EACnE,IAAwB,GAAgB,MAAU,EAAM,aAAa,EAGrE,IAAU,QAAc,MAAM,KAAK,EAAW,QAAQ,CAAC,EAAE,CAAC,EAAW,CAAC,EAGtE,IAAe,EAAY,YAAY;AACvC,SAAC,KAAU,CAAC,GAIhB,KAAI;AAIF,GAHA,EAAW,GAAK,EAChB,EAAS,KAAK,EAEV,IAOF,IANe,MAAM,EAAa,MAA+B;IAC/D,OAAO;IACP,WAAW,EAAE,gBAAa;IAC1B,aAAa;IACd,CAAC,EAC0B,MAAM,0BAAwD,EAAE,EACrE,IAAI,EAAgB,CAAC,GACnC,KAST,IARe,MAAM,EAAa,MAA+B;IAC/D,OAAO;IACP,WAAW,EAAE,WAAQ;IACrB,aAAa;IACd,CAAC,EACwB,MAAM,aACL,SAAiD,EAAE,EACpD,KAAK,MAA4C,EAAK,KAAK,CAC9D,IAAI,EAAgB,CAAC;WAEvC,GAAK;AAEZ,KADc,aAAe,QAAQ,IAAM,gBAAI,MAAM,0BAA0B,CAChE;YACP;AACR,KAAW,GAAM;;IAElB;EAAC;EAAc;EAAQ;EAAa;EAAW,CAAC;AA4VnD,QAzVA,QAAgB;AACd,EAAK,KACH,GAAc;IAEf,CAAC,GAAc,EAAU,CAAC,EAqVtB;EACL;EACA;EACA;EACA,cAtVmB,EACnB,OAAO,MAAqD;AAC1D,OAAI;AAEF,IADA,EAAW,GAAK,EAChB,EAAS,KAAK;IAId,IAAM,IAAiB,EAA0B,EAAM,KAAK,EAMtD,IAAyB;KAC7B,GAAI,EAAM,UAAU,EAAE;KACtB,qBAAqB,EAAM;KAC5B,EAEK,IAAyC;KAC7C,QAAQ,EAAM;KACd,MAAM;KACN,OAAO,EAAM;KAEb,UAAU,EAAM,YAAY;KAC5B,UAAU,EAAM,YAAY;KAE5B,YAAY,EAAM;KAClB,WAAW,EAAM;KACjB,UAAU,EAAM;KAChB,aAAa,EAAM;KACnB,QAAQ;KAER,UAAU;MACR,GAAG,EAAM,SAAS;MAClB,GAAG,EAAM,SAAS;MAClB,OAAO,EAAM,SAAS;MACtB,QAAQ,EAAM,SAAS;MACxB;KACD,iBAAiB,EAAM;KACvB,UAAU,EAAM;KACjB;AAiBD,IAdI,EAAM,uBACR,EAAc,qBAAqB;KACjC,IAAI,EAAM,mBAAmB,MAAM;KACnC,IAAI,EAAM,mBAAmB,MAAM;KACnC,IAAI,EAAM,mBAAmB,MAAM;KACnC,IAAI,EAAM,mBAAmB,MAAM;KACpC,GAIC,EAAM,aAAa,KAAA,MACrB,EAAc,WAAW,EAAM,WAGjC,EAAoB,oCAAoC;KACtD,aAAa,EAAM,eAAe;KAClC,QAAQ,EAAM;KACd,YAAY,EAAM;KACnB,CAAC;IAOF,IAAM,KALS,MAAM,EAAa,OAAgC;KAChE,UAAU;KACV,WAAW,EAAE,OAAO,GAAe;KACpC,CAAC,EAE0B,MAAM;AAClC,QAAI,GAAc;KAChB,IAAM,IAAY,EAAgB,EAAa;AAQ/C,YAPA,EAAiB,EAAU,EAC3B,EAAoB,6BAA6B;MAC/C,aAAa,EAAU,eAAe,EAAM,eAAe;MAC3D,QAAQ,EAAU;MAClB,UAAU,EAAU;MACpB,YAAY,EAAU;MACvB,CAAC,EACK;;AAGT,WAAO;YACA,GAAK;AAGZ,WADA,EADc,aAAe,QAAQ,IAAM,gBAAI,MAAM,0BAA0B,CAChE,EACR;aACC;AACR,MAAW,GAAM;;KAGrB;GAAC;GAAc;GAAkB;GAAa;GAAoB,CACnE;EA2PC,cAxPmB,EACnB,OAAO,MAAqD;AAC1D,OAAI;AAOF,QANA,EAAW,GAAK,EAChB,EAAS,KAAK,EAKV,CAFsB,EAAe,UAAU,CAAC,QACX,IAAI,EAAM,GAAG,CAEpD,OAAU,MAAM,qBAAqB,EAAM,KAAK;IAGlD,IAAM,IAAuC,EAAE,IAAI,EAAM,IAAI;AAmC7D,IAlCI,EAAM,UAAU,KAAA,MAAW,EAAY,QAAQ,EAAM,QAErD,EAAM,aAAa,KAAA,MAAW,EAAY,WAAW,EAAM,WAC3D,EAAM,aAAa,KAAA,MAAW,EAAY,WAAW,EAAM,WAE3D,EAAM,eAAe,KAAA,MAAW,EAAY,aAAa,EAAM,aAC/D,EAAM,cAAc,KAAA,MAAW,EAAY,YAAY,EAAM,YAC7D,EAAM,aAAa,KAAA,MAAW,EAAY,WAAW,EAAM,WAC3D,EAAM,gBAAgB,KAAA,MAAW,EAAY,cAAc,EAAM,cACjE,EAAM,WAAW,KAAA,MAAW,EAAY,SAAS,EAAM,SACvD,EAAM,oBAAoB,KAAA,MAAW,EAAY,kBAAkB,EAAM,kBACzE,EAAM,aAAa,KAAA,MAAW,EAAY,WAAW,EAAM,WAG3D,EAAM,aACR,EAAY,WAAW;KACrB,GAAG,EAAM,SAAS;KAClB,GAAG,EAAM,SAAS;KAClB,OAAO,EAAM,SAAS;KACtB,QAAQ,EAAM,SAAS;KACxB,GAIC,EAAM,uBACR,EAAY,qBAAqB;KAC/B,IAAI,EAAM,mBAAmB;KAC7B,IAAI,EAAM,mBAAmB;KAC7B,IAAI,EAAM,mBAAmB;KAC7B,IAAI,EAAM,mBAAmB;KAC9B,GAIC,EAAM,aAAa,KAAA,MACrB,EAAY,WAAW,EAAM;IAG/B,IAAM,IAAS,MAAM,EAAa,OAAgC;KAChE,UAAU;KACV,WAAW,EAAE,OAAO,GAAa;KAClC,CAAC;AAEF,QAAI,EAAO,MACT,OAAM,EAAO;IAGf,IAAM,IAAe,EAAO,MAAM;AAClC,QAAI,GAAc;KAChB,IAAM,IAAgB,EAAgB,EAAa;AAEnD,YADA,EAAoB,EAAM,IAAI,EAAc,EACrC;;AAGT,WAAO;YACA,GAAK;AAGZ,WADA,EADc,aAAe,QAAQ,IAAM,gBAAI,MAAM,0BAA0B,CAChE,EACR;aACC;AACR,MAAW,GAAM;;KAGrB,CAAC,GAAc,EAAoB,CACpC;EA2KC,cAxKmB,EACnB,OAAO,MAAiC;AACtC,OAAI;AAcF,WAbA,EAAW,GAAK,EAChB,EAAS,KAAK,GAEC,MAAM,EAAa,OAAgC;KAChE,UAAU;KACV,WAAW,EAAE,OAAI;KAClB,CAAC,EAES,MAAM,0BACf,EAAsB,EAAG,EAClB,MAGF;YACA,GAAK;AAGZ,WADA,EADc,aAAe,QAAQ,IAAM,gBAAI,MAAM,0BAA0B,CAChE,EACR;aACC;AACR,MAAW,GAAM;;KAGrB,CAAC,GAAc,EAAsB,CACtC;EA+IC,iBA5IsB,EACtB,OAAO,GAAY,GAA8B,MAA8C;AAC7F,OAAI;AAEF,IADA,EAAW,GAAK,EAChB,EAAS,KAAK;IAId,IAAM,IADoB,EAAe,UAAU,CAAC,QACX,IAAI,EAAG;AAChD,QAAI,CAAC,EACH,OAAU,MAAM,qBAAqB,IAAK;AAG5C,MAAoB,uCAAuC;KACzD,aAAa,EAAe,eAAe;KAC3C,QAAQ,EAAe;KACvB,gBAAgB;KAChB,YAAY,EAAe;KAC5B,CAAC;IAEF,IAAM,IAAS,MAAM,EAAa,OAAgC;KAChE,UAAU;KACV,WAAW;MACT;MACA,aAAa,IACT;OACE,GAAG,EAAY;OACf,GAAG,EAAY;OACf,OAAO,EAAY;OACnB,QAAQ,EAAY;OACrB,GACD,KAAA;MACJ;MACD;KACF,CAAC;AAEF,QAAI,EAAO,MACT,OAAM,EAAO;IAGf,IAAM,IAAY,EAAO,MAAM;AAC/B,QAAI,GAAW;KACb,IAAM,IAAmB,EAAgB,EAAU;AASnD,YARA,EAAiB,EAAiB,EAClC,EAAoB,gCAAgC;MAClD,aAAa,EAAiB,eAAe,EAAe,eAAe;MAC3E,QAAQ,EAAiB;MACzB,UAAU,EAAiB;MAC3B,gBAAgB;MAChB,YAAY,EAAiB;MAC9B,CAAC,EACK;;AAGT,WAAO;YACA,GAAK;AAGZ,WADA,EADc,aAAe,QAAQ,IAAM,gBAAI,MAAM,6BAA6B,CACnE,EACR;aACC;AACR,MAAW,GAAM;;KAGrB;GAAC;GAAc;GAAkB;GAAa;GAAoB,CACnE;EA6EC,sBA1E2B,EAC3B,OAAO,MAA+E;AACpF,OAAI;AAkCF,WAjCA,EAAW,GAAK,EAChB,EAAS,KAAK,GAEC,MAAM,EAAa,OAAgC;KAChE,UAAU;KACV,WAAW,EACT,SAAS,EAAQ,KAAK,OAAO;MAC3B,IAAI,EAAE;MACN,UAAU;OACR,GAAG,EAAE,SAAS;OACd,GAAG,EAAE,SAAS;OACd,OAAO,EAAE,SAAS;OAClB,QAAQ,EAAE,SAAS;OACpB;MACF,EAAE,EACJ;KACF,CAAC,EAES,MAAM,8BAEf,EAAQ,SAAS,MAAW;AAC1B,OAAoB,EAAO,IAAI;MAC7B,UAAU,EAAO;MACjB,WAAW,EAAO,SAAS;MAC3B,WAAW,EAAO,SAAS;MAC3B,eAAe,EAAO,SAAS;MAC/B,gBAAgB,EAAO,SAAS;MAChC,4BAAW,IAAI,MAAM,EAAC,aAAa;MACpC,CAAC;MACF,EACK,MAGF;YACA,GAAK;AAGZ,WADA,EADc,aAAe,QAAQ,IAAM,gBAAI,MAAM,mCAAmC,CACzE,EACR;aACC;AACR,MAAW,GAAM;;KAGrB,CAAC,GAAc,EAAoB,CACpC;EA6BC,mBA1BwB,EACxB,OAAO,MAAoC;AACzC,OAAI;AACF,UAAM,EAAa,OAAgC;KACjD,UAAU;KACV,WAAW,EAAE,aAAU;KACxB,CAAC;WACU;KAEhB,CAAC,EAAa,CACf;EAiBC,SAdc,EAAY,YAA2B;AACrD,SAAM,GAAc;KACnB,CAAC,EAAa,CAAC;EAajB"}
|
|
@@ -1853,6 +1853,17 @@ var ut = e`
|
|
|
1853
1853
|
}
|
|
1854
1854
|
}
|
|
1855
1855
|
`, mt = e`
|
|
1856
|
+
query GetReusableAssistantSandbox($id: ID!, $context: ContextInput!) {
|
|
1857
|
+
getSandbox(id: $id, context: $context) {
|
|
1858
|
+
id
|
|
1859
|
+
name
|
|
1860
|
+
status
|
|
1861
|
+
metadata
|
|
1862
|
+
template
|
|
1863
|
+
createdBy
|
|
1864
|
+
}
|
|
1865
|
+
}
|
|
1866
|
+
`, ht = e`
|
|
1856
1867
|
query GetActiveSandboxes($context: ContextInput!) {
|
|
1857
1868
|
getActiveSandboxes(context: $context) {
|
|
1858
1869
|
id
|
|
@@ -1863,7 +1874,7 @@ var ut = e`
|
|
|
1863
1874
|
createdBy
|
|
1864
1875
|
}
|
|
1865
1876
|
}
|
|
1866
|
-
`,
|
|
1877
|
+
`, gt = e`
|
|
1867
1878
|
mutation BatchUpdateWidgetPositions($updates: [WidgetPositionUpdateInput!]!) {
|
|
1868
1879
|
batchUpdateWidgetPositions(updates: $updates) {
|
|
1869
1880
|
id
|
|
@@ -1871,25 +1882,25 @@ var ut = e`
|
|
|
1871
1882
|
updatedAt
|
|
1872
1883
|
}
|
|
1873
1884
|
}
|
|
1874
|
-
`,
|
|
1885
|
+
`, _t = e`
|
|
1875
1886
|
mutation CreateEventWebhookMapping($input: CreateEventWebhookMappingInput!) {
|
|
1876
1887
|
createEventWebhookMapping(input: $input) {
|
|
1877
1888
|
...EventWebhookMappingFields
|
|
1878
1889
|
}
|
|
1879
1890
|
}
|
|
1880
|
-
${D}`,
|
|
1891
|
+
${D}`, vt = e`
|
|
1881
1892
|
mutation CreateWidget($input: BigConsoleCreateWidgetInput!) {
|
|
1882
1893
|
createBigConsoleWidget(input: $input) {
|
|
1883
1894
|
...WidgetFullFields
|
|
1884
1895
|
}
|
|
1885
1896
|
}
|
|
1886
|
-
${P}`,
|
|
1897
|
+
${P}`, yt = e`
|
|
1887
1898
|
mutation CreateWidgetAction($input: CreateWidgetActionInput!) {
|
|
1888
1899
|
createWidgetAction(input: $input) {
|
|
1889
1900
|
...WidgetActionFields
|
|
1890
1901
|
}
|
|
1891
1902
|
}
|
|
1892
|
-
${N}`,
|
|
1903
|
+
${N}`, bt = e`
|
|
1893
1904
|
mutation CreateWidgetDrilldown($sourceWidgetId: ID!, $targetDashboardId: ID!, $parameterMapping: JSON!, $navigationMode: NavigationMode = SAME_WINDOW) {
|
|
1894
1905
|
createWidgetDrilldown(
|
|
1895
1906
|
sourceWidgetId: $sourceWidgetId
|
|
@@ -1900,29 +1911,29 @@ var ut = e`
|
|
|
1900
1911
|
...WidgetDrilldownFields
|
|
1901
1912
|
}
|
|
1902
1913
|
}
|
|
1903
|
-
${A}`,
|
|
1914
|
+
${A}`, xt = e`
|
|
1904
1915
|
mutation DeleteEventWebhookMapping($id: ID!) {
|
|
1905
1916
|
deleteEventWebhookMapping(id: $id)
|
|
1906
1917
|
}
|
|
1907
|
-
`,
|
|
1918
|
+
`, St = e`
|
|
1908
1919
|
mutation DeleteWidget($id: ID!) {
|
|
1909
1920
|
deleteBigConsoleWidget(id: $id)
|
|
1910
1921
|
}
|
|
1911
|
-
`,
|
|
1922
|
+
`, Ct = e`
|
|
1912
1923
|
mutation DeleteWidgetAction($id: ID!) {
|
|
1913
1924
|
deleteWidgetAction(id: $id)
|
|
1914
1925
|
}
|
|
1915
|
-
`,
|
|
1926
|
+
`, wt = e`
|
|
1916
1927
|
mutation DeleteWidgetDrilldown($id: ID!) {
|
|
1917
1928
|
deleteWidgetDrilldown(id: $id)
|
|
1918
1929
|
}
|
|
1919
|
-
`,
|
|
1930
|
+
`, Tt = e`
|
|
1920
1931
|
mutation DuplicateWidget($id: ID!, $newPosition: WidgetPositionInput, $newTitle: String) {
|
|
1921
1932
|
duplicateWidget(id: $id, newPosition: $newPosition, newTitle: $newTitle) {
|
|
1922
1933
|
...WidgetFullFields
|
|
1923
1934
|
}
|
|
1924
1935
|
}
|
|
1925
|
-
${P}`,
|
|
1936
|
+
${P}`, Et = e`
|
|
1926
1937
|
mutation EmitWidgetEvent($input: EmitWidgetEventInput!) {
|
|
1927
1938
|
emitWidgetEvent(input: $input) {
|
|
1928
1939
|
...EventLogFields
|
|
@@ -1940,26 +1951,26 @@ e`
|
|
|
1940
1951
|
}
|
|
1941
1952
|
}
|
|
1942
1953
|
${P}`;
|
|
1943
|
-
var
|
|
1954
|
+
var Dt = e`
|
|
1944
1955
|
mutation RefreshWidgetData($widgetId: ID!) {
|
|
1945
1956
|
refreshWidgetData(widgetId: $widgetId) {
|
|
1946
1957
|
...WidgetDataFields
|
|
1947
1958
|
}
|
|
1948
1959
|
}
|
|
1949
|
-
${M}`,
|
|
1960
|
+
${M}`, Ot = e`
|
|
1950
1961
|
mutation ReorderWidgetActions($widgetId: ID!, $actionIds: [ID!]!) {
|
|
1951
1962
|
reorderWidgetActions(widgetId: $widgetId, actionIds: $actionIds) {
|
|
1952
1963
|
id
|
|
1953
1964
|
order
|
|
1954
1965
|
}
|
|
1955
1966
|
}
|
|
1956
|
-
`,
|
|
1967
|
+
`, kt = e`
|
|
1957
1968
|
mutation RetryEventDelivery($eventId: ID!) {
|
|
1958
1969
|
retryEventDelivery(eventId: $eventId) {
|
|
1959
1970
|
...EventLogFields
|
|
1960
1971
|
}
|
|
1961
1972
|
}
|
|
1962
|
-
${E}`,
|
|
1973
|
+
${E}`, At = e`
|
|
1963
1974
|
mutation TestWebhookMapping($id: ID!) {
|
|
1964
1975
|
testWebhookMapping(id: $id) {
|
|
1965
1976
|
success
|
|
@@ -1969,31 +1980,31 @@ var Et = e`
|
|
|
1969
1980
|
latencyMs
|
|
1970
1981
|
}
|
|
1971
1982
|
}
|
|
1972
|
-
`,
|
|
1983
|
+
`, jt = e`
|
|
1973
1984
|
mutation ToggleEventWebhookMapping($id: ID!, $isActive: Boolean!) {
|
|
1974
1985
|
toggleEventWebhookMapping(id: $id, isActive: $isActive) {
|
|
1975
1986
|
...EventWebhookMappingFields
|
|
1976
1987
|
}
|
|
1977
1988
|
}
|
|
1978
|
-
${D}`,
|
|
1989
|
+
${D}`, Mt = e`
|
|
1979
1990
|
mutation UpdateEventWebhookMapping($id: ID!, $input: UpdateEventWebhookMappingInput!) {
|
|
1980
1991
|
updateEventWebhookMapping(id: $id, input: $input) {
|
|
1981
1992
|
...EventWebhookMappingFields
|
|
1982
1993
|
}
|
|
1983
1994
|
}
|
|
1984
|
-
${D}`,
|
|
1995
|
+
${D}`, Nt = e`
|
|
1985
1996
|
mutation UpdateWidget($input: BigConsoleUpdateWidgetInput!) {
|
|
1986
1997
|
updateBigConsoleWidget(input: $input) {
|
|
1987
1998
|
...WidgetFullFields
|
|
1988
1999
|
}
|
|
1989
2000
|
}
|
|
1990
|
-
${P}`,
|
|
2001
|
+
${P}`, $ = e`
|
|
1991
2002
|
mutation UpdateWidgetAction($input: UpdateWidgetActionInput!) {
|
|
1992
2003
|
updateWidgetAction(input: $input) {
|
|
1993
2004
|
...WidgetActionFields
|
|
1994
2005
|
}
|
|
1995
2006
|
}
|
|
1996
|
-
${N}`,
|
|
2007
|
+
${N}`, Pt = e`
|
|
1997
2008
|
mutation UpdateWidgetDrilldown($id: ID!, $targetDashboardId: ID, $parameterMapping: JSON, $navigationMode: NavigationMode, $enabled: Boolean) {
|
|
1998
2009
|
updateWidgetDrilldown(
|
|
1999
2010
|
id: $id
|
|
@@ -2032,19 +2043,19 @@ e`
|
|
|
2032
2043
|
}
|
|
2033
2044
|
}
|
|
2034
2045
|
${D}`;
|
|
2035
|
-
var
|
|
2046
|
+
var Ft = e`
|
|
2036
2047
|
query GetWidget($id: ID!) {
|
|
2037
2048
|
getWidget(id: $id) {
|
|
2038
2049
|
...WidgetFullFields
|
|
2039
2050
|
}
|
|
2040
2051
|
}
|
|
2041
|
-
${P}`,
|
|
2052
|
+
${P}`, It = e`
|
|
2042
2053
|
query GetWidgetActions($widgetId: ID!) {
|
|
2043
2054
|
getWidgetActions(widgetId: $widgetId) {
|
|
2044
2055
|
...WidgetActionFields
|
|
2045
2056
|
}
|
|
2046
2057
|
}
|
|
2047
|
-
${N}`,
|
|
2058
|
+
${N}`, Lt = e`
|
|
2048
2059
|
query GetWidgetTypes {
|
|
2049
2060
|
getWidgetTypes {
|
|
2050
2061
|
...WidgetTypeInfoFields
|
|
@@ -2070,7 +2081,7 @@ e`
|
|
|
2070
2081
|
${A}
|
|
2071
2082
|
${j}
|
|
2072
2083
|
${M}`;
|
|
2073
|
-
var
|
|
2084
|
+
var Rt = e`
|
|
2074
2085
|
query ListEventLogs($dashboardId: ID, $widgetId: ID, $eventName: String, $status: EventStatus, $first: Int, $after: String) {
|
|
2075
2086
|
listEventLogs(
|
|
2076
2087
|
dashboardId: $dashboardId
|
|
@@ -2093,7 +2104,7 @@ var Lt = e`
|
|
|
2093
2104
|
}
|
|
2094
2105
|
}
|
|
2095
2106
|
${E}
|
|
2096
|
-
${O}`,
|
|
2107
|
+
${O}`, zt = e`
|
|
2097
2108
|
query ListEventWebhookMappings($dashboardId: ID, $widgetId: ID, $isActive: Boolean) {
|
|
2098
2109
|
listEventWebhookMappings(
|
|
2099
2110
|
dashboardId: $dashboardId
|
|
@@ -2121,13 +2132,13 @@ e`
|
|
|
2121
2132
|
}
|
|
2122
2133
|
${I}
|
|
2123
2134
|
${O}`;
|
|
2124
|
-
var
|
|
2135
|
+
var Bt = e`
|
|
2125
2136
|
query ListWidgetsByDashboard($dashboardId: ID!, $type: WidgetType) {
|
|
2126
2137
|
listWidgetsByDashboard(dashboardId: $dashboardId, type: $type) {
|
|
2127
2138
|
...WidgetListFields
|
|
2128
2139
|
}
|
|
2129
2140
|
}
|
|
2130
|
-
${F}`,
|
|
2141
|
+
${F}`, Vt = e`
|
|
2131
2142
|
query ListWidgetsForPage($pageId: ID!, $type: WidgetType) {
|
|
2132
2143
|
listWidgets(pageId: $pageId, type: $type, first: 100) {
|
|
2133
2144
|
edges {
|
|
@@ -2138,29 +2149,29 @@ var zt = e`
|
|
|
2138
2149
|
totalCount
|
|
2139
2150
|
}
|
|
2140
2151
|
}
|
|
2141
|
-
${F}`,
|
|
2152
|
+
${F}`, Ht = e`
|
|
2142
2153
|
mutation CreateWorkflow($input: CreateWorkflowInput!) {
|
|
2143
2154
|
createWorkflow(input: $input) {
|
|
2144
2155
|
...WorkflowFullFields
|
|
2145
2156
|
}
|
|
2146
2157
|
}
|
|
2147
|
-
${B}`,
|
|
2158
|
+
${B}`, Ut = e`
|
|
2148
2159
|
mutation DeleteWorkflow($id: ID!) {
|
|
2149
2160
|
deleteWorkflow(id: $id)
|
|
2150
2161
|
}
|
|
2151
|
-
`,
|
|
2162
|
+
`, Wt = e`
|
|
2152
2163
|
mutation ExecuteWorkflow($id: ID!, $triggerData: JSON) {
|
|
2153
2164
|
executeWorkflow(id: $id, triggerData: $triggerData) {
|
|
2154
2165
|
...WorkflowFullFields
|
|
2155
2166
|
}
|
|
2156
2167
|
}
|
|
2157
|
-
${B}`,
|
|
2168
|
+
${B}`, Gt = e`
|
|
2158
2169
|
mutation LinkDataSinkToWorkflow($workflowId: ID!, $input: LinkDataSinkInput!) {
|
|
2159
2170
|
linkDataSinkToWorkflow(workflowId: $workflowId, input: $input) {
|
|
2160
2171
|
...DataSinkWorkflowLinkFields
|
|
2161
2172
|
}
|
|
2162
2173
|
}
|
|
2163
|
-
${z}`,
|
|
2174
|
+
${z}`, Kt = e`
|
|
2164
2175
|
mutation UnlinkDataSinkFromWorkflow($workflowId: ID!, $dataSinkId: ID!) {
|
|
2165
2176
|
unlinkDataSinkFromWorkflow(workflowId: $workflowId, dataSinkId: $dataSinkId)
|
|
2166
2177
|
}
|
|
@@ -2172,25 +2183,25 @@ e`
|
|
|
2172
2183
|
}
|
|
2173
2184
|
}
|
|
2174
2185
|
${z}`;
|
|
2175
|
-
var
|
|
2186
|
+
var qt = e`
|
|
2176
2187
|
mutation UpdateWorkflow($id: ID!, $input: UpdateWorkflowInput!, $version: Int!) {
|
|
2177
2188
|
updateWorkflow(id: $id, input: $input, version: $version) {
|
|
2178
2189
|
...WorkflowFullFields
|
|
2179
2190
|
}
|
|
2180
2191
|
}
|
|
2181
|
-
${B}`,
|
|
2192
|
+
${B}`, Jt = e`
|
|
2182
2193
|
query GetWorkflow($id: ID!) {
|
|
2183
2194
|
workflow(id: $id) {
|
|
2184
2195
|
...WorkflowFullFields
|
|
2185
2196
|
}
|
|
2186
2197
|
}
|
|
2187
|
-
${B}`,
|
|
2198
|
+
${B}`, Yt = e`
|
|
2188
2199
|
query GetWorkflowByKey($key: String!) {
|
|
2189
2200
|
workflowByKey(key: $key) {
|
|
2190
2201
|
...WorkflowFullFields
|
|
2191
2202
|
}
|
|
2192
2203
|
}
|
|
2193
|
-
${B}`,
|
|
2204
|
+
${B}`, Xt = e`
|
|
2194
2205
|
query ListWorkflows($filter: FluidGridsWorkflowFilterInput) {
|
|
2195
2206
|
workflows(filter: $filter) {
|
|
2196
2207
|
...WorkflowListItem
|
|
@@ -2198,6 +2209,6 @@ var Kt = e`
|
|
|
2198
2209
|
}
|
|
2199
2210
|
${V}`;
|
|
2200
2211
|
//#endregion
|
|
2201
|
-
export { Ie as BatchCreateDataSinksDocument, Le as BatchDeleteDataSinksDocument,
|
|
2212
|
+
export { Ie as BatchCreateDataSinksDocument, Le as BatchDeleteDataSinksDocument, gt as BatchUpdateWidgetPositionsDocument, Z as CloneDashboardDocument, Q as CreateDashboardDocument, ne as CreateDashboardEmbedPolicyDocument, re as CreateDashboardPageDocument, ie as CreateDashboardViewDocument, Re as CreateDataSinkDocument, _t as CreateEventWebhookMappingDocument, ae as CreateGlobalFilterDocument, Je as CreateParserDocument, tt as CreatePipelineDocument, ut as CreateSandboxDocument, yt as CreateWidgetActionDocument, vt as CreateWidgetDocument, bt as CreateWidgetDrilldownDocument, Ht as CreateWorkflowDocument, Ke as DataSinkDataUpdatedDocument, qe as DataSinkUpdatedDocument, oe as DeleteDashboardDocument, se as DeleteDashboardPageDocument, ce as DeleteDashboardViewDocument, ze as DeleteDataSinkDocument, xt as DeleteEventWebhookMappingDocument, le as DeleteGlobalFilterDocument, Ye as DeleteParserDocument, nt as DeletePipelineDocument, Ct as DeleteWidgetActionDocument, St as DeleteWidgetDocument, wt as DeleteWidgetDrilldownDocument, Ut as DeleteWorkflowDocument, Tt as DuplicateWidgetDocument, Et as EmitWidgetEventDocument, Xe as ExecuteParserDocument, rt as ExecutePipelineDocument, Wt as ExecuteWorkflowDocument, Ee as ExportDashboardDocument, ft as ExtendSandboxTtlDocument, ht as GetActiveSandboxesDocument, De as GetDashboardDocument, Oe as GetDashboardViewDocument, We as GetDataSinkDataDocument, Ue as GetDataSinkDocument, ke as GetDefaultDashboardViewDocument, Qe as GetParserDocument, ot as GetPipelineDocument, st as GetPipelineExecutionDocument, mt as GetReusableAssistantSandboxDocument, pt as GetSandboxDocument, It as GetWidgetActionsDocument, Ft as GetWidgetDocument, Lt as GetWidgetTypesDocument, Yt as GetWorkflowByKeyDocument, Jt as GetWorkflowDocument, ue as ImportDashboardDocument, Be as InvalidateDataSinkCacheDocument, Gt as LinkDataSinkToWorkflowDocument, Ae as ListDashboardEmbedPoliciesDocument, je as ListDashboardSharesDocument, Me as ListDashboardViewsDocument, Ne as ListDashboardsDocument, Ge as ListDataSinksDocument, Rt as ListEventLogsDocument, zt as ListEventWebhookMappingsDocument, $e as ListParsersDocument, ct as ListPipelineExecutionsDocument, lt as ListPipelinesDocument, Pe as ListSharedWithMeDocument, Bt as ListWidgetsByDashboardDocument, Vt as ListWidgetsForPageDocument, Xt as ListWorkflowsDocument, dt as ProxySandboxRequestDocument, de as PublishDashboardEmbedPolicyDocument, Ve as RefreshDataSinkDocument, Dt as RefreshWidgetDataDocument, fe as ReorderDashboardPagesDocument, pe as ReorderGlobalFiltersDocument, Ot as ReorderWidgetActionsDocument, kt as RetryEventDeliveryDocument, me as RevokeAllSharesDocument, he as RevokeDashboardEmbedPolicyDocument, ge as RevokeDashboardShareDocument, _e as RotateDashboardEmbedPolicyDocument, ve as SetDefaultViewDocument, ye as ShareDashboardDocument, et as TestParserExpressionDocument, it as TestPipelineDocument, At as TestWebhookMappingDocument, jt as ToggleEventWebhookMappingDocument, Kt as UnlinkDataSinkFromWorkflowDocument, be as UpdateDashboardDocument, xe as UpdateDashboardEmbedPolicyDocument, Se as UpdateDashboardPageDocument, Ce as UpdateDashboardShareDocument, we as UpdateDashboardViewDocument, He as UpdateDataSinkDocument, Mt as UpdateEventWebhookMappingDocument, Te as UpdateGlobalFilterDocument, Ze as UpdateParserDocument, at as UpdatePipelineDocument, $ as UpdateWidgetActionDocument, Nt as UpdateWidgetDocument, Pt as UpdateWidgetDrilldownDocument, qt as UpdateWorkflowDocument, Fe as ValidateDashboardImportDocument, H as WorkspaceInstalledAppsDocument, W as useCreateEntityCommentMutation, K as useDeleteEntityCommentMutation, X as useGetEntityCommentsQuery, J as useResolveEntityCommentMutation };
|
|
2202
2213
|
|
|
2203
2214
|
//# sourceMappingURL=wspace-operations.js.map
|