@burdenoff/microfe-bigconsole 2026.1008.12 → 2026.1008.14
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/README.md +3 -0
- package/dist/bigconsole/AdminRoot.d.ts +0 -1
- package/dist/bigconsole/AdminRoot.js +0 -2
- package/dist/bigconsole/AdminRoutes.d.ts +0 -1
- package/dist/bigconsole/AdminRoutes.js +0 -2
- package/dist/bigconsole/BigConsoleRoot.d.ts +0 -1
- package/dist/bigconsole/BigConsoleRoot.js +0 -2
- package/dist/bigconsole/BigConsoleRoutes.d.ts +0 -1
- package/dist/bigconsole/BigConsoleRoutes.js +0 -2
- package/dist/bigconsole/assistant/assistantApi.d.ts +0 -1
- package/dist/bigconsole/assistant/assistantApi.js +0 -2
- package/dist/bigconsole/assistant/assistantProduct.d.ts +0 -1
- package/dist/bigconsole/assistant/assistantProduct.js +0 -2
- package/dist/bigconsole/assistant/assistantPrompt.d.ts +0 -1
- package/dist/bigconsole/assistant/assistantPrompt.js +0 -2
- package/dist/bigconsole/assistant/assistantRunPersistence.d.ts +0 -1
- package/dist/bigconsole/assistant/assistantRunPersistence.js +0 -2
- package/dist/bigconsole/assistant/assistantRunStore.d.ts +0 -1
- package/dist/bigconsole/assistant/assistantRunStore.js +0 -2
- package/dist/bigconsole/assistant/assistantRuntime.d.ts +0 -1
- package/dist/bigconsole/assistant/assistantRuntime.js +0 -2
- package/dist/bigconsole/assistant/attachmentExtract.d.ts +0 -1
- package/dist/bigconsole/assistant/attachmentExtract.js +0 -2
- package/dist/bigconsole/assistant/conversationHistoryApi.d.ts +0 -1
- package/dist/bigconsole/assistant/conversationHistoryApi.js +0 -2
- package/dist/bigconsole/assistant/createSandboxAssistantTransport.d.ts +0 -1
- package/dist/bigconsole/assistant/createSandboxAssistantTransport.js +0 -2
- package/dist/bigconsole/assistant/displayCopy.d.ts +0 -1
- package/dist/bigconsole/assistant/index.d.ts +0 -1
- package/dist/bigconsole/assistant/modes.d.ts +0 -1
- package/dist/bigconsole/assistant/modes.js +0 -2
- package/dist/bigconsole/assistant/pageContext.d.ts +0 -1
- package/dist/bigconsole/assistant/pageContext.js +0 -2
- package/dist/bigconsole/assistant/previewController.d.ts +0 -1
- package/dist/bigconsole/assistant/previewController.js +0 -2
- package/dist/bigconsole/assistant/previewMutationResult.d.ts +0 -1
- package/dist/bigconsole/assistant/previewMutationResult.js +0 -2
- package/dist/bigconsole/assistant/previewRunAction.d.ts +0 -1
- package/dist/bigconsole/assistant/previewRunAction.js +0 -2
- package/dist/bigconsole/assistant/product.d.ts +0 -1
- package/dist/bigconsole/assistant/product.js +0 -2
- package/dist/bigconsole/assistant/recordAdapters.d.ts +0 -1
- package/dist/bigconsole/assistant/recordAdapters.js +0 -2
- package/dist/bigconsole/assistant/types.d.ts +0 -1
- package/dist/bigconsole/assistant/useAssistantRunWorkspace.d.ts +0 -1
- package/dist/bigconsole/assistant/useAssistantRunWorkspace.js +0 -2
- package/dist/bigconsole/assistant/useWorkspaceWriteAccess.d.ts +0 -1
- package/dist/bigconsole/assistant/useWorkspaceWriteAccess.js +0 -2
- package/dist/bigconsole/components/DrilldownDashboardRenderer.d.ts +0 -1
- package/dist/bigconsole/components/DrilldownDashboardRenderer.js +0 -2
- package/dist/bigconsole/components/DrilldownModal.d.ts +0 -1
- package/dist/bigconsole/components/DrilldownModal.js +0 -2
- package/dist/bigconsole/components/builder/BuilderCanvas.d.ts +0 -1
- package/dist/bigconsole/components/builder/BuilderCanvas.js +0 -2
- package/dist/bigconsole/components/builder/BuilderTopbar.d.ts +0 -1
- package/dist/bigconsole/components/builder/BuilderTopbar.js +0 -2
- package/dist/bigconsole/components/builder/DashboardEditorShell.d.ts +0 -1
- package/dist/bigconsole/components/builder/DashboardEditorShell.js +0 -2
- package/dist/bigconsole/components/builder/WidgetInspector.d.ts +0 -1
- package/dist/bigconsole/components/builder/WidgetInspector.js +0 -2
- package/dist/bigconsole/components/builder/index.d.ts +0 -1
- package/dist/bigconsole/components/builder/inspector/AdvancedSection.d.ts +0 -1
- package/dist/bigconsole/components/builder/inspector/AdvancedSection.js +0 -2
- package/dist/bigconsole/components/builder/inspector/AppearanceSection.d.ts +0 -1
- package/dist/bigconsole/components/builder/inspector/AppearanceSection.js +0 -2
- package/dist/bigconsole/components/builder/inspector/DataBindingSection.d.ts +0 -1
- package/dist/bigconsole/components/builder/inspector/DataBindingSection.js +0 -2
- package/dist/bigconsole/components/builder/inspector/GeneralSection.d.ts +0 -1
- package/dist/bigconsole/components/builder/inspector/GeneralSection.js +0 -2
- package/dist/bigconsole/components/builder/inspector/LayoutSection.d.ts +0 -1
- package/dist/bigconsole/components/builder/inspector/LayoutSection.js +0 -2
- package/dist/bigconsole/components/builder/inspector/index.d.ts +0 -1
- package/dist/bigconsole/components/common/Section.d.ts +0 -1
- package/dist/bigconsole/components/common/Section.js +0 -2
- package/dist/bigconsole/components/common/index.d.ts +0 -1
- package/dist/bigconsole/components/common/sectionStyles.d.ts +0 -1
- package/dist/bigconsole/components/common/sectionStyles.js +0 -2
- package/dist/bigconsole/components/dashboard/CreateDashboardDialog.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/CreateDashboardDialog.js +0 -2
- package/dist/bigconsole/components/dashboard/DashboardCanvas.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/DashboardCanvas.js +0 -2
- package/dist/bigconsole/components/dashboard/DashboardGrid.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/DashboardGrid.js +0 -2
- package/dist/bigconsole/components/dashboard/DashboardStatusPill.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/DashboardStatusPill.js +0 -2
- package/dist/bigconsole/components/dashboard/DashboardToolbar.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/DashboardToolbar.js +0 -2
- package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.js +0 -2
- package/dist/bigconsole/components/dashboard/ExportDashboardDialog.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/ExportDashboardDialog.js +0 -2
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.js +0 -2
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js +0 -2
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.js +0 -2
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js +0 -2
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/index.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/ImportDashboardDialog.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/ImportDashboardDialog.js +0 -2
- package/dist/bigconsole/components/dashboard/LiveBoardBanner.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/LiveBoardBanner.js +0 -2
- package/dist/bigconsole/components/dashboard/LiveCanvasToggle.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/LiveCanvasToggle.js +0 -2
- package/dist/bigconsole/components/dashboard/PageTabsManager/PageTabsManager.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/PageTabsManager/PageTabsManager.js +0 -2
- package/dist/bigconsole/components/dashboard/PageTabsManager/index.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/PublishToStoreDialog.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/PublishToStoreDialog.js +0 -2
- package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.js +0 -2
- package/dist/bigconsole/components/dashboard/SavedViewsDropdown/index.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.js +0 -2
- package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.js +0 -2
- package/dist/bigconsole/components/dashboard/ShareDialog/index.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/StoreTemplatePicker.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/StoreTemplatePicker.js +0 -2
- package/dist/bigconsole/components/dashboard/TemplateInstallOptions.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/TemplateInstallOptions.js +0 -2
- package/dist/bigconsole/components/dashboard/TemplateLayoutPreview.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/TemplateLayoutPreview.js +0 -2
- package/dist/bigconsole/components/dashboard/TemplatePicker/TemplatePicker.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/TemplatePicker/index.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/TemplateSetupBanner.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/TemplateSetupBanner.js +0 -2
- package/dist/bigconsole/components/dashboard/WidgetPalette.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/WidgetPalette.js +0 -2
- package/dist/bigconsole/components/dashboard/index.d.ts +0 -1
- package/dist/bigconsole/components/datasink/AlertExecutionHistory.d.ts +0 -1
- package/dist/bigconsole/components/datasink/AlertExecutionHistory.js +0 -2
- package/dist/bigconsole/components/datasink/AlertRuleEditor.d.ts +0 -1
- package/dist/bigconsole/components/datasink/AlertRuleEditor.js +0 -2
- package/dist/bigconsole/components/datasink/CacheTTLSelector.d.ts +0 -1
- package/dist/bigconsole/components/datasink/CacheTTLSelector.js +0 -2
- package/dist/bigconsole/components/datasink/ConfigurationForm.d.ts +0 -1
- package/dist/bigconsole/components/datasink/DataPreviewPanel.d.ts +0 -1
- package/dist/bigconsole/components/datasink/DataSinkCard.d.ts +0 -1
- package/dist/bigconsole/components/datasink/DataSinkCard.js +0 -2
- package/dist/bigconsole/components/datasink/DataSinkDataViewer.d.ts +0 -1
- package/dist/bigconsole/components/datasink/DataSinkDataViewer.js +0 -2
- package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.d.ts +0 -1
- package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.js +0 -2
- package/dist/bigconsole/components/datasink/DataSinkRefreshConfig.d.ts +0 -1
- package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.d.ts +0 -1
- package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.js +0 -2
- package/dist/bigconsole/components/datasink/DataSinkStatusBadge.d.ts +0 -1
- package/dist/bigconsole/components/datasink/DataSinkStatusBadge.js +0 -2
- package/dist/bigconsole/components/datasink/DataSinkTableViewer.d.ts +0 -1
- package/dist/bigconsole/components/datasink/DataSinkTableViewer.js +0 -2
- package/dist/bigconsole/components/datasink/ExportDataSinkDialog.d.ts +0 -1
- package/dist/bigconsole/components/datasink/ExportDataSinkDialog.js +0 -2
- package/dist/bigconsole/components/datasink/FluidGridsPanel.d.ts +0 -1
- package/dist/bigconsole/components/datasink/ImportDataGuideDialog.d.ts +0 -1
- package/dist/bigconsole/components/datasink/ImportDataGuideDialog.js +0 -2
- package/dist/bigconsole/components/datasink/ImportDataSinkDialog.d.ts +0 -1
- package/dist/bigconsole/components/datasink/ImportDataSinkDialog.js +0 -2
- package/dist/bigconsole/components/datasink/LinkedParsersPanel.d.ts +0 -1
- package/dist/bigconsole/components/datasink/LinkedParsersPanel.js +0 -2
- package/dist/bigconsole/components/datasink/LinkedWorkflowsPanel.d.ts +0 -1
- package/dist/bigconsole/components/datasink/LinkedWorkflowsPanel.js +0 -2
- package/dist/bigconsole/components/datasink/RefreshTypeSelector.d.ts +0 -1
- package/dist/bigconsole/components/datasink/RefreshTypeSelector.js +0 -2
- package/dist/bigconsole/components/datasink/SetupStateBadge.d.ts +0 -1
- package/dist/bigconsole/components/datasink/SetupStateBadge.js +0 -2
- package/dist/bigconsole/components/datasink/WorkflowStatusPanel.d.ts +0 -1
- package/dist/bigconsole/components/datasink/WorkflowStatusPanel.js +0 -2
- package/dist/bigconsole/components/datasink/index.d.ts +0 -1
- package/dist/bigconsole/components/embed/EmbedErrorBoundary.d.ts +0 -1
- package/dist/bigconsole/components/embed/EmbedErrorBoundary.js +0 -2
- package/dist/bigconsole/components/embed/EmbedWidgetRenderer.d.ts +0 -1
- package/dist/bigconsole/components/embed/EmbedWidgetRenderer.js +0 -2
- package/dist/bigconsole/components/embed/ReadOnlyDashboardRenderer.d.ts +0 -1
- package/dist/bigconsole/components/embed/ReadOnlyDashboardRenderer.js +0 -2
- package/dist/bigconsole/components/embed/drilldown.d.ts +0 -1
- package/dist/bigconsole/components/embed/drilldown.js +0 -2
- package/dist/bigconsole/components/embed/index.d.ts +0 -1
- package/dist/bigconsole/components/embed/renderer-manifest.d.ts +0 -1
- package/dist/bigconsole/components/embed/renderer-manifest.js +0 -2
- package/dist/bigconsole/components/embed/types.d.ts +0 -1
- package/dist/bigconsole/components/embed/types.js +0 -2
- package/dist/bigconsole/components/embed/validate.d.ts +0 -1
- package/dist/bigconsole/components/embed/validate.js +0 -2
- package/dist/bigconsole/components/embed/widgetShim.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgetShim.js +0 -2
- package/dist/bigconsole/components/embed/widgets/CalendarEmbed.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgets/CalendarEmbed.js +0 -2
- package/dist/bigconsole/components/embed/widgets/ChartEmbed.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgets/ChartEmbed.js +0 -2
- package/dist/bigconsole/components/embed/widgets/EmbedFrame.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgets/EmbedFrame.js +0 -2
- package/dist/bigconsole/components/embed/widgets/FormEmbed.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgets/FormEmbed.js +0 -2
- package/dist/bigconsole/components/embed/widgets/GaugeEmbed.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgets/GaugeEmbed.js +0 -2
- package/dist/bigconsole/components/embed/widgets/HeatmapEmbed.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgets/HeatmapEmbed.js +0 -2
- package/dist/bigconsole/components/embed/widgets/KanbanEmbed.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgets/KanbanEmbed.js +0 -2
- package/dist/bigconsole/components/embed/widgets/KpiComparisonEmbed.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgets/KpiComparisonEmbed.js +0 -2
- package/dist/bigconsole/components/embed/widgets/ListEmbed.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgets/ListEmbed.js +0 -2
- package/dist/bigconsole/components/embed/widgets/MetricCardEmbed.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgets/MetricCardEmbed.js +0 -2
- package/dist/bigconsole/components/embed/widgets/PivotEmbed.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgets/PivotEmbed.js +0 -2
- package/dist/bigconsole/components/embed/widgets/ProgressEmbed.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgets/ProgressEmbed.js +0 -2
- package/dist/bigconsole/components/embed/widgets/RetentionEmbed.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgets/RetentionEmbed.js +0 -2
- package/dist/bigconsole/components/embed/widgets/TableEmbed.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgets/TableEmbed.js +0 -2
- package/dist/bigconsole/components/embed/widgets/TextEmbed.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgets/TextEmbed.js +0 -2
- package/dist/bigconsole/components/embed/widgets/TimelineEmbed.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgets/TimelineEmbed.js +0 -2
- package/dist/bigconsole/components/embed/widgets/shared.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgets/shared.js +0 -2
- package/dist/bigconsole/components/overview/DashboardGuide.d.ts +0 -1
- package/dist/bigconsole/components/overview/DashboardGuide.js +0 -2
- package/dist/bigconsole/components/overview/DataHealthCard.d.ts +0 -1
- package/dist/bigconsole/components/overview/DataHealthCard.js +0 -2
- package/dist/bigconsole/components/overview/OverviewQuickActions.d.ts +0 -1
- package/dist/bigconsole/components/overview/OverviewQuickActions.js +0 -2
- package/dist/bigconsole/components/overview/OverviewStatCard.d.ts +0 -1
- package/dist/bigconsole/components/overview/OverviewStatCard.js +0 -2
- package/dist/bigconsole/components/overview/RecentDashboardsPanel.d.ts +0 -1
- package/dist/bigconsole/components/overview/RecentDashboardsPanel.js +0 -2
- package/dist/bigconsole/components/overview/dashboardGuideSteps.d.ts +0 -1
- package/dist/bigconsole/components/overview/dashboardGuideSteps.js +0 -2
- package/dist/bigconsole/components/overview/index.d.ts +0 -1
- package/dist/bigconsole/components/overview/overviewModel.d.ts +0 -1
- package/dist/bigconsole/components/overview/overviewModel.js +0 -2
- package/dist/bigconsole/components/overview/useOverviewData.d.ts +0 -1
- package/dist/bigconsole/components/overview/useOverviewData.js +0 -2
- package/dist/bigconsole/components/parser/DataSinkSelector.d.ts +0 -1
- package/dist/bigconsole/components/parser/DataSinkSelector.js +0 -2
- package/dist/bigconsole/components/parser/ExportParserDialog.d.ts +0 -1
- package/dist/bigconsole/components/parser/ExportParserDialog.js +0 -2
- package/dist/bigconsole/components/parser/ExpressionEditor.d.ts +0 -1
- package/dist/bigconsole/components/parser/ExpressionEditor.js +0 -2
- package/dist/bigconsole/components/parser/ImportParserDialog.d.ts +0 -1
- package/dist/bigconsole/components/parser/ImportParserDialog.js +0 -2
- package/dist/bigconsole/components/parser/ParserBuilder.d.ts +0 -1
- package/dist/bigconsole/components/parser/ParserCard.d.ts +0 -1
- package/dist/bigconsole/components/parser/ParserCard.js +0 -2
- package/dist/bigconsole/components/parser/ParserFormDialog.d.ts +0 -1
- package/dist/bigconsole/components/parser/ParserSelector.d.ts +0 -1
- package/dist/bigconsole/components/parser/ParserSelector.js +0 -2
- package/dist/bigconsole/components/parser/ParserStatusBadge.d.ts +0 -1
- package/dist/bigconsole/components/parser/ParserStatusBadge.js +0 -2
- package/dist/bigconsole/components/parser/ParserTypeBadge.d.ts +0 -1
- package/dist/bigconsole/components/parser/ParserTypeBadge.js +0 -2
- package/dist/bigconsole/components/parser/TestPanel.d.ts +0 -1
- package/dist/bigconsole/components/parser/index.d.ts +0 -1
- package/dist/bigconsole/components/parser/parserFieldStyles.d.ts +0 -1
- package/dist/bigconsole/components/pipeline/PipelineCard.d.ts +0 -1
- package/dist/bigconsole/components/pipeline/PipelineCard.js +0 -2
- package/dist/bigconsole/components/pipeline/PipelineDeleteDialog.d.ts +0 -1
- package/dist/bigconsole/components/pipeline/PipelineDeleteDialog.js +0 -2
- package/dist/bigconsole/components/pipeline/PipelineScopePicker.d.ts +0 -1
- package/dist/bigconsole/components/pipeline/PipelineScopePicker.js +0 -2
- package/dist/bigconsole/components/pipeline/PipelineStatusBadge.d.ts +0 -1
- package/dist/bigconsole/components/pipeline/PipelineStatusBadge.js +0 -2
- package/dist/bigconsole/components/pipeline/index.d.ts +0 -1
- package/dist/bigconsole/components/preview/AiPreviewContent.d.ts +0 -1
- package/dist/bigconsole/components/preview/AiPreviewContent.js +0 -2
- package/dist/bigconsole/components/preview/AiPreviewMiniPanel.d.ts +0 -1
- package/dist/bigconsole/components/preview/AiPreviewMiniPanel.js +0 -2
- package/dist/bigconsole/components/preview/AiPreviewPanel.d.ts +0 -1
- package/dist/bigconsole/components/preview/AiPreviewPanel.js +0 -2
- package/dist/bigconsole/components/preview/parserPreview.d.ts +0 -1
- package/dist/bigconsole/components/preview/parserPreview.js +0 -2
- package/dist/bigconsole/components/preview/previewShared.d.ts +0 -1
- package/dist/bigconsole/components/preview/previewShared.js +0 -2
- package/dist/bigconsole/components/widgets/ActionConfigDialog.d.ts +0 -1
- package/dist/bigconsole/components/widgets/ActionConfigDialog.js +0 -2
- package/dist/bigconsole/components/widgets/DrilldownConfigPanel.d.ts +0 -1
- package/dist/bigconsole/components/widgets/DrilldownConfigPanel.js +0 -2
- package/dist/bigconsole/components/widgets/PropertiesPanel.d.ts +0 -1
- package/dist/bigconsole/components/widgets/PropertiesPanel.js +505 -506
- package/dist/bigconsole/components/widgets/WidgetErrorBoundary.d.ts +0 -1
- package/dist/bigconsole/components/widgets/WidgetErrorBoundary.js +0 -2
- package/dist/bigconsole/components/widgets/WidgetHeader.d.ts +0 -1
- package/dist/bigconsole/components/widgets/WidgetHeader.js +0 -2
- package/dist/bigconsole/components/widgets/WidgetMenu.d.ts +0 -1
- package/dist/bigconsole/components/widgets/WidgetMenu.js +0 -2
- package/dist/bigconsole/components/widgets/WidgetRegistry.d.ts +0 -1
- package/dist/bigconsole/components/widgets/WidgetRegistry.js +0 -2
- package/dist/bigconsole/components/widgets/WidgetTypeSelector.d.ts +0 -1
- package/dist/bigconsole/components/widgets/WidgetWrapper.d.ts +0 -1
- package/dist/bigconsole/components/widgets/WidgetWrapper.js +0 -2
- package/dist/bigconsole/components/widgets/actionConfig.d.ts +0 -1
- package/dist/bigconsole/components/widgets/actionConfig.js +0 -2
- package/dist/bigconsole/components/widgets/adaptive-card/AdaptiveCardWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/adaptive-card/AdaptiveCardWidget.js +0 -2
- package/dist/bigconsole/components/widgets/adaptive-card/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/calendar/CalendarView.d.ts +0 -1
- package/dist/bigconsole/components/widgets/calendar/CalendarView.js +0 -2
- package/dist/bigconsole/components/widgets/calendar/CalendarWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/calendar/CalendarWidget.js +0 -2
- package/dist/bigconsole/components/widgets/calendar/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/chart/ChartConfig.d.ts +0 -1
- package/dist/bigconsole/components/widgets/chart/ChartConfig.js +0 -2
- package/dist/bigconsole/components/widgets/chart/ChartLegend.d.ts +0 -1
- package/dist/bigconsole/components/widgets/chart/ChartLegend.js +0 -2
- package/dist/bigconsole/components/widgets/chart/ChartTooltip.d.ts +0 -1
- package/dist/bigconsole/components/widgets/chart/ChartTooltip.js +0 -2
- package/dist/bigconsole/components/widgets/chart/ChartWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/chart/ChartWidget.js +0 -2
- package/dist/bigconsole/components/widgets/chart/charts/AreaChart.d.ts +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/AreaChart.js +0 -2
- package/dist/bigconsole/components/widgets/chart/charts/BarChart.d.ts +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/BarChart.js +0 -2
- package/dist/bigconsole/components/widgets/chart/charts/ComboChart.d.ts +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/ComboChart.js +0 -2
- package/dist/bigconsole/components/widgets/chart/charts/FunnelChart.d.ts +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/FunnelChart.js +0 -2
- package/dist/bigconsole/components/widgets/chart/charts/LineChart.d.ts +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/LineChart.js +0 -2
- package/dist/bigconsole/components/widgets/chart/charts/PieChart.d.ts +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/PieChart.js +0 -2
- package/dist/bigconsole/components/widgets/chart/charts/ScatterChart.d.ts +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/ScatterChart.js +0 -2
- package/dist/bigconsole/components/widgets/chart/charts/WaterfallChart.d.ts +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/WaterfallChart.js +0 -2
- package/dist/bigconsole/components/widgets/chart/charts/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/referenceElements.d.ts +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/referenceElements.js +0 -2
- package/dist/bigconsole/components/widgets/chart/charts/types.d.ts +0 -1
- package/dist/bigconsole/components/widgets/chart/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/comments/WidgetComments.d.ts +0 -1
- package/dist/bigconsole/components/widgets/comments/WidgetComments.js +0 -2
- package/dist/bigconsole/components/widgets/custom/CustomWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/custom/CustomWidget.js +0 -2
- package/dist/bigconsole/components/widgets/custom/config.d.ts +0 -1
- package/dist/bigconsole/components/widgets/custom/config.js +0 -2
- package/dist/bigconsole/components/widgets/custom/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/custom/utils.d.ts +0 -1
- package/dist/bigconsole/components/widgets/custom/utils.js +0 -2
- package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.d.ts +0 -1
- package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.js +0 -2
- package/dist/bigconsole/components/widgets/event-logs/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/form/FormWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/form/FormWidget.js +0 -2
- package/dist/bigconsole/components/widgets/form/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/funnel/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/funnel/index.js +0 -2
- package/dist/bigconsole/components/widgets/gauge/CircularGauge.d.ts +0 -1
- package/dist/bigconsole/components/widgets/gauge/CircularGauge.js +0 -2
- package/dist/bigconsole/components/widgets/gauge/GaugeConfig.d.ts +0 -1
- package/dist/bigconsole/components/widgets/gauge/GaugeConfig.js +0 -2
- package/dist/bigconsole/components/widgets/gauge/GaugeWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/gauge/GaugeWidget.js +0 -2
- package/dist/bigconsole/components/widgets/gauge/LinearGauge.d.ts +0 -1
- package/dist/bigconsole/components/widgets/gauge/LinearGauge.js +0 -2
- package/dist/bigconsole/components/widgets/gauge/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.d.ts +0 -1
- package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.js +0 -2
- package/dist/bigconsole/components/widgets/heatmap/HeatmapWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/heatmap/HeatmapWidget.js +0 -2
- package/dist/bigconsole/components/widgets/heatmap/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/iframe-widget/IframeWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/iframe-widget/IframeWidget.js +0 -2
- package/dist/bigconsole/components/widgets/iframe-widget/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/kanban/KanbanView.d.ts +0 -1
- package/dist/bigconsole/components/widgets/kanban/KanbanView.js +0 -2
- package/dist/bigconsole/components/widgets/kanban/KanbanWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/kanban/KanbanWidget.js +0 -2
- package/dist/bigconsole/components/widgets/kanban/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/kanban/model.d.ts +0 -1
- package/dist/bigconsole/components/widgets/kanban/model.js +0 -2
- package/dist/bigconsole/components/widgets/kpi/KPIWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/kpi/KPIWidget.js +0 -2
- package/dist/bigconsole/components/widgets/kpi/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/kpi-comparison/KPIComparisonWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/kpi-comparison/KPIComparisonWidget.js +0 -2
- package/dist/bigconsole/components/widgets/kpi-comparison/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/list/ListConfig.d.ts +0 -1
- package/dist/bigconsole/components/widgets/list/ListConfig.js +0 -2
- package/dist/bigconsole/components/widgets/list/ListItem.d.ts +0 -1
- package/dist/bigconsole/components/widgets/list/ListItem.js +0 -2
- package/dist/bigconsole/components/widgets/list/ListWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/list/ListWidget.js +0 -2
- package/dist/bigconsole/components/widgets/list/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/map-widget/MapWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/map-widget/MapWidget.js +0 -2
- package/dist/bigconsole/components/widgets/map-widget/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/metric-card/ComparisonBadge.d.ts +0 -1
- package/dist/bigconsole/components/widgets/metric-card/ComparisonBadge.js +0 -2
- package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.d.ts +0 -1
- package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.js +0 -2
- package/dist/bigconsole/components/widgets/metric-card/MetricCardWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/metric-card/MetricCardWidget.js +0 -2
- package/dist/bigconsole/components/widgets/metric-card/SparklineChart.d.ts +0 -1
- package/dist/bigconsole/components/widgets/metric-card/SparklineChart.js +0 -2
- package/dist/bigconsole/components/widgets/metric-card/TrendIndicator.d.ts +0 -1
- package/dist/bigconsole/components/widgets/metric-card/TrendIndicator.js +0 -2
- package/dist/bigconsole/components/widgets/metric-card/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.js +0 -2
- package/dist/bigconsole/components/widgets/pivot-table/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/progress/ProgressBar.d.ts +0 -1
- package/dist/bigconsole/components/widgets/progress/ProgressBar.js +0 -2
- package/dist/bigconsole/components/widgets/progress/ProgressConfig.d.ts +0 -1
- package/dist/bigconsole/components/widgets/progress/ProgressConfig.js +0 -2
- package/dist/bigconsole/components/widgets/progress/ProgressWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/progress/ProgressWidget.js +0 -2
- package/dist/bigconsole/components/widgets/progress/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/retention/RetentionWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/retention/RetentionWidget.js +0 -2
- package/dist/bigconsole/components/widgets/retention/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/states/EmptyState.d.ts +0 -1
- package/dist/bigconsole/components/widgets/states/EmptyState.js +0 -2
- package/dist/bigconsole/components/widgets/states/ErrorState.d.ts +0 -1
- package/dist/bigconsole/components/widgets/states/ErrorState.js +0 -2
- package/dist/bigconsole/components/widgets/states/LoadingState.d.ts +0 -1
- package/dist/bigconsole/components/widgets/states/LoadingState.js +0 -2
- package/dist/bigconsole/components/widgets/states/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/table/TableCell.d.ts +0 -1
- package/dist/bigconsole/components/widgets/table/TableCell.js +0 -2
- package/dist/bigconsole/components/widgets/table/TableConfig.d.ts +0 -1
- package/dist/bigconsole/components/widgets/table/TableConfig.js +0 -2
- package/dist/bigconsole/components/widgets/table/TableHeader.d.ts +0 -1
- package/dist/bigconsole/components/widgets/table/TableHeader.js +0 -2
- package/dist/bigconsole/components/widgets/table/TablePagination.d.ts +0 -1
- package/dist/bigconsole/components/widgets/table/TablePagination.js +0 -2
- package/dist/bigconsole/components/widgets/table/TableWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/table/TableWidget.js +0 -2
- package/dist/bigconsole/components/widgets/table/cellLink.d.ts +0 -1
- package/dist/bigconsole/components/widgets/table/cellLink.js +0 -2
- package/dist/bigconsole/components/widgets/table/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/text-widget/TextWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/text-widget/TextWidget.js +0 -2
- package/dist/bigconsole/components/widgets/text-widget/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/text-widget/textData.d.ts +0 -1
- package/dist/bigconsole/components/widgets/text-widget/textData.js +0 -2
- package/dist/bigconsole/components/widgets/timeline/TimelineWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/timeline/TimelineWidget.js +0 -2
- package/dist/bigconsole/components/widgets/timeline/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/utils/conditionalFormat.d.ts +0 -1
- package/dist/bigconsole/components/widgets/utils/conditionalFormat.js +0 -2
- package/dist/bigconsole/components/widgets/utils/inferFields.d.ts +0 -1
- package/dist/bigconsole/components/widgets/utils/inferFields.js +0 -2
- package/dist/bigconsole/components/widgets/utils/targetProgress.d.ts +0 -1
- package/dist/bigconsole/components/widgets/utils/targetProgress.js +0 -2
- package/dist/bigconsole/components/widgets/utils/translate.d.ts +0 -1
- package/dist/bigconsole/components/widgets/utils/translate.js +0 -2
- package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.d.ts +0 -1
- package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.js +0 -2
- package/dist/bigconsole/components/widgets/webhook-config/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/widget-actions/WidgetActions.d.ts +0 -1
- package/dist/bigconsole/components/widgets/widget-actions/WidgetActions.js +0 -2
- package/dist/bigconsole/components/widgets/widget-actions/index.d.ts +0 -1
- package/dist/bigconsole/components/workflow/DataSinkMultiSelector.d.ts +0 -1
- package/dist/bigconsole/components/workflow/WorkflowCard.d.ts +0 -1
- package/dist/bigconsole/components/workflow/WorkflowCard.js +0 -2
- package/dist/bigconsole/components/workflow/WorkflowDeleteDialog.d.ts +0 -1
- package/dist/bigconsole/components/workflow/WorkflowDeleteDialog.js +0 -2
- package/dist/bigconsole/components/workflow/WorkflowDesignPreview.d.ts +0 -1
- package/dist/bigconsole/components/workflow/WorkflowDesignPreview.js +0 -2
- package/dist/bigconsole/components/workflow/WorkflowOpenGuard.d.ts +0 -1
- package/dist/bigconsole/components/workflow/WorkflowOpenGuard.js +0 -2
- package/dist/bigconsole/components/workflow/WorkflowSinkLinkForm.d.ts +0 -1
- package/dist/bigconsole/components/workflow/WorkflowSinkLinkForm.js +0 -2
- package/dist/bigconsole/components/workflow/WorkflowStatusBadge.d.ts +0 -1
- package/dist/bigconsole/components/workflow/WorkflowStatusBadge.js +0 -2
- package/dist/bigconsole/components/workflow/index.d.ts +0 -1
- package/dist/bigconsole/constants/backendErrors.d.ts +0 -1
- package/dist/bigconsole/constants/backendErrors.js +0 -2
- package/dist/bigconsole/constants.d.ts +0 -1
- package/dist/bigconsole/constants.js +0 -2
- package/dist/bigconsole/context/BigConsoleContext.d.ts +0 -1
- package/dist/bigconsole/context/BigConsoleContext.js +0 -2
- package/dist/bigconsole/context/index.d.ts +0 -1
- package/dist/bigconsole/contexts/CrossFilterContext.d.ts +0 -1
- package/dist/bigconsole/contexts/CrossFilterContext.js +0 -2
- package/dist/bigconsole/contexts/NavigationContext.d.ts +0 -1
- package/dist/bigconsole/contexts/NavigationContext.js +0 -2
- package/dist/bigconsole/contexts/index.d.ts +0 -1
- package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.d.ts +0 -1
- package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.js +0 -2
- package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.d.ts +0 -1
- package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.js +0 -2
- package/dist/bigconsole/customWidget/index.d.ts +0 -1
- package/dist/bigconsole/customWidget/proposalContract.d.ts +0 -1
- package/dist/bigconsole/customWidget/proposalContract.js +0 -2
- package/dist/bigconsole/customWidget/proposalSource.d.ts +0 -1
- package/dist/bigconsole/customWidget/proposalSource.js +0 -2
- package/dist/bigconsole/graphql/apollo-compat.d.ts +0 -1
- package/dist/bigconsole/graphql/storeTemplates.d.ts +0 -1
- package/dist/bigconsole/graphql/storeTemplates.js +0 -2
- package/dist/bigconsole/hooks/index.d.ts +0 -1
- package/dist/bigconsole/hooks/useActivePage.d.ts +0 -1
- package/dist/bigconsole/hooks/useActivePage.js +0 -2
- package/dist/bigconsole/hooks/useAutoRefresh.d.ts +0 -1
- package/dist/bigconsole/hooks/useAutoRefresh.js +0 -2
- package/dist/bigconsole/hooks/useBigConsoleAnalytics.d.ts +0 -1
- package/dist/bigconsole/hooks/useBigConsoleAnalytics.js +0 -2
- package/dist/bigconsole/hooks/useBigConsoleSettings.d.ts +0 -1
- package/dist/bigconsole/hooks/useBigConsoleSettings.js +0 -2
- package/dist/bigconsole/hooks/useCrossFilter.d.ts +0 -1
- package/dist/bigconsole/hooks/useCrossFilter.js +0 -2
- package/dist/bigconsole/hooks/useDashboardEmbedPolicy.d.ts +0 -1
- package/dist/bigconsole/hooks/useDashboardEmbedPolicy.js +0 -2
- package/dist/bigconsole/hooks/useDashboardImageExport.d.ts +0 -1
- package/dist/bigconsole/hooks/useDashboardImageExport.js +0 -2
- package/dist/bigconsole/hooks/useDashboardLayoutBaseline.d.ts +0 -1
- package/dist/bigconsole/hooks/useDashboardLayoutBaseline.js +0 -2
- package/dist/bigconsole/hooks/useDashboardOperations.d.ts +0 -1
- package/dist/bigconsole/hooks/useDashboardOperations.js +0 -2
- package/dist/bigconsole/hooks/useDashboardSharing.d.ts +0 -1
- package/dist/bigconsole/hooks/useDashboardSharing.js +0 -2
- package/dist/bigconsole/hooks/useDashboardTemplates.d.ts +0 -1
- package/dist/bigconsole/hooks/useDashboardViews.d.ts +0 -1
- package/dist/bigconsole/hooks/useDashboardViews.js +0 -2
- package/dist/bigconsole/hooks/useDataSinkAlerts.d.ts +0 -1
- package/dist/bigconsole/hooks/useDataSinkAlerts.js +0 -2
- package/dist/bigconsole/hooks/useDataSinkOperations.d.ts +0 -1
- package/dist/bigconsole/hooks/useDataSinkOperations.js +0 -2
- package/dist/bigconsole/hooks/useDataSinkSubscription.d.ts +0 -1
- package/dist/bigconsole/hooks/useDataSinkSubscription.js +0 -2
- package/dist/bigconsole/hooks/useDrilldown.d.ts +0 -1
- package/dist/bigconsole/hooks/useDrilldown.js +0 -2
- package/dist/bigconsole/hooks/useDrilldownOperations.d.ts +0 -1
- package/dist/bigconsole/hooks/useDrilldownOperations.js +0 -2
- package/dist/bigconsole/hooks/useEventLogs.d.ts +0 -1
- package/dist/bigconsole/hooks/useEventLogs.js +0 -2
- package/dist/bigconsole/hooks/useEventWebhooks.d.ts +0 -1
- package/dist/bigconsole/hooks/useEventWebhooks.js +0 -2
- package/dist/bigconsole/hooks/useExportDashboard.d.ts +0 -1
- package/dist/bigconsole/hooks/useExportDashboard.js +0 -2
- package/dist/bigconsole/hooks/useExportDataSink.d.ts +0 -1
- package/dist/bigconsole/hooks/useExportDataSink.js +0 -2
- package/dist/bigconsole/hooks/useExportParser.d.ts +0 -1
- package/dist/bigconsole/hooks/useExportParser.js +0 -2
- package/dist/bigconsole/hooks/useFilterPresets.d.ts +0 -1
- package/dist/bigconsole/hooks/useFilterPresets.js +0 -2
- package/dist/bigconsole/hooks/useFilterUrlSync.d.ts +0 -1
- package/dist/bigconsole/hooks/useFilterUrlSync.js +0 -2
- package/dist/bigconsole/hooks/useGlobalFilters.d.ts +0 -1
- package/dist/bigconsole/hooks/useGlobalFilters.js +0 -2
- package/dist/bigconsole/hooks/useImportDashboard.d.ts +0 -1
- package/dist/bigconsole/hooks/useImportDashboard.js +0 -2
- package/dist/bigconsole/hooks/useImportDataSink.d.ts +0 -1
- package/dist/bigconsole/hooks/useImportDataSink.js +0 -2
- package/dist/bigconsole/hooks/useImportParser.d.ts +0 -1
- package/dist/bigconsole/hooks/useImportParser.js +0 -2
- package/dist/bigconsole/hooks/useInstalledWidgets.d.ts +0 -1
- package/dist/bigconsole/hooks/useInstalledWidgets.js +0 -2
- package/dist/bigconsole/hooks/useModalFocusTrap.d.ts +0 -1
- package/dist/bigconsole/hooks/useModalFocusTrap.js +0 -2
- package/dist/bigconsole/hooks/usePageOperations.d.ts +0 -1
- package/dist/bigconsole/hooks/usePageOperations.js +0 -2
- package/dist/bigconsole/hooks/useParserOperations.d.ts +0 -1
- package/dist/bigconsole/hooks/useParserOperations.js +0 -2
- package/dist/bigconsole/hooks/usePipelineOperations.d.ts +0 -1
- package/dist/bigconsole/hooks/usePipelineOperations.js +0 -2
- package/dist/bigconsole/hooks/useShareRecipients.d.ts +0 -1
- package/dist/bigconsole/hooks/useShareRecipients.js +0 -2
- package/dist/bigconsole/hooks/useStoreDashboardTemplates.d.ts +0 -1
- package/dist/bigconsole/hooks/useStoreDashboardTemplates.js +0 -2
- package/dist/bigconsole/hooks/useWidgetActions.d.ts +0 -1
- package/dist/bigconsole/hooks/useWidgetActions.js +0 -2
- package/dist/bigconsole/hooks/useWidgetCatalog.d.ts +0 -1
- package/dist/bigconsole/hooks/useWidgetCatalog.js +0 -2
- package/dist/bigconsole/hooks/useWidgetComments.d.ts +0 -1
- package/dist/bigconsole/hooks/useWidgetComments.js +0 -2
- package/dist/bigconsole/hooks/useWidgetConfigPersist.d.ts +0 -1
- package/dist/bigconsole/hooks/useWidgetConfigPersist.js +0 -2
- package/dist/bigconsole/hooks/useWidgetData.d.ts +0 -1
- package/dist/bigconsole/hooks/useWidgetData.js +0 -2
- package/dist/bigconsole/hooks/useWidgetEvents.d.ts +0 -1
- package/dist/bigconsole/hooks/useWidgetEvents.js +0 -2
- package/dist/bigconsole/hooks/useWidgetExport.d.ts +0 -1
- package/dist/bigconsole/hooks/useWidgetExport.js +0 -2
- package/dist/bigconsole/hooks/useWidgetOperations.d.ts +0 -1
- package/dist/bigconsole/hooks/useWidgetOperations.js +0 -2
- package/dist/bigconsole/hooks/useWorkflowOperations.d.ts +0 -1
- package/dist/bigconsole/hooks/useWorkflowOperations.js +0 -2
- package/dist/bigconsole/index.d.ts +0 -1
- package/dist/bigconsole/modules/dashboard/index.d.ts +0 -1
- package/dist/bigconsole/modules/index.d.ts +0 -1
- package/dist/bigconsole/modules/renderer/index.d.ts +0 -1
- package/dist/bigconsole/modules/widget/index.d.ts +0 -1
- package/dist/bigconsole/pages/AdminPage.d.ts +0 -1
- package/dist/bigconsole/pages/AdminPage.js +0 -2
- package/dist/bigconsole/pages/DashboardBuilderPage.d.ts +0 -1
- package/dist/bigconsole/pages/DashboardBuilderPage.js +0 -2
- package/dist/bigconsole/pages/DashboardViewPage.d.ts +0 -1
- package/dist/bigconsole/pages/DashboardViewPage.js +0 -2
- package/dist/bigconsole/pages/DashboardsPage.d.ts +0 -1
- package/dist/bigconsole/pages/DashboardsPage.js +0 -2
- package/dist/bigconsole/pages/DataParsersPage.d.ts +0 -1
- package/dist/bigconsole/pages/DataParsersPage.js +0 -2
- package/dist/bigconsole/pages/DataSinkAlertsPage.d.ts +0 -1
- package/dist/bigconsole/pages/DataSinkAlertsPage.js +0 -2
- package/dist/bigconsole/pages/DataSinkBuilderPage.d.ts +0 -1
- package/dist/bigconsole/pages/DataSinkBuilderPage.js +8 -10
- package/dist/bigconsole/pages/DataSinkViewPage.d.ts +0 -1
- package/dist/bigconsole/pages/DataSinkViewPage.js +0 -2
- package/dist/bigconsole/pages/DataSinksPage.d.ts +0 -1
- package/dist/bigconsole/pages/DataSinksPage.js +0 -2
- package/dist/bigconsole/pages/DataSourcesPage.d.ts +0 -1
- package/dist/bigconsole/pages/DataSourcesPage.js +0 -2
- package/dist/bigconsole/pages/InsightsPage.d.ts +0 -1
- package/dist/bigconsole/pages/InsightsPage.js +373 -361
- package/dist/bigconsole/pages/OverviewPage.d.ts +0 -1
- package/dist/bigconsole/pages/OverviewPage.js +0 -2
- package/dist/bigconsole/pages/ParserBuilderPage.d.ts +0 -1
- package/dist/bigconsole/pages/ParserBuilderPage.js +5 -7
- package/dist/bigconsole/pages/ParserViewPage.d.ts +0 -1
- package/dist/bigconsole/pages/ParserViewPage.js +0 -2
- package/dist/bigconsole/pages/PipelineBuilderPage.d.ts +0 -1
- package/dist/bigconsole/pages/PipelineBuilderPage.js +0 -2
- package/dist/bigconsole/pages/PipelineViewPage.d.ts +0 -1
- package/dist/bigconsole/pages/PipelineViewPage.js +0 -2
- package/dist/bigconsole/pages/PipelinesPage.d.ts +0 -1
- package/dist/bigconsole/pages/PipelinesPage.js +0 -2
- package/dist/bigconsole/pages/SettingsPage.d.ts +0 -1
- package/dist/bigconsole/pages/SettingsPage.js +0 -2
- package/dist/bigconsole/pages/WidgetDemoPage.d.ts +0 -1
- package/dist/bigconsole/pages/WidgetDemoPage.js +0 -2
- package/dist/bigconsole/pages/WorkflowViewPage.d.ts +0 -1
- package/dist/bigconsole/pages/WorkflowViewPage.js +0 -2
- package/dist/bigconsole/pages/WorkflowsPage.d.ts +0 -1
- package/dist/bigconsole/pages/WorkflowsPage.js +0 -2
- package/dist/bigconsole/pages/index.d.ts +0 -1
- package/dist/bigconsole/providers/BigConsoleQuotaProvider.d.ts +0 -1
- package/dist/bigconsole/providers/BigConsoleQuotaProvider.js +0 -2
- package/dist/bigconsole/renderers/adapters/AdaptiveCardRenderer.d.ts +0 -1
- package/dist/bigconsole/renderers/adapters/AdaptiveCardRenderer.js +0 -2
- package/dist/bigconsole/renderers/adapters/BigConsoleRenderer.d.ts +0 -1
- package/dist/bigconsole/renderers/adapters/BigConsoleRenderer.js +0 -2
- package/dist/bigconsole/renderers/adapters/BlockKitRenderer.d.ts +0 -1
- package/dist/bigconsole/renderers/adapters/BlockKitRenderer.js +0 -2
- package/dist/bigconsole/renderers/adapters/CustomRenderer.d.ts +0 -1
- package/dist/bigconsole/renderers/adapters/CustomRenderer.js +0 -2
- package/dist/bigconsole/renderers/adapters/index.d.ts +0 -1
- package/dist/bigconsole/renderers/factory/WidgetRendererFactory.d.ts +0 -1
- package/dist/bigconsole/renderers/factory/WidgetRendererFactory.js +0 -2
- package/dist/bigconsole/renderers/index.d.ts +0 -1
- package/dist/bigconsole/renderers/registry/RendererRegistry.d.ts +0 -1
- package/dist/bigconsole/renderers/registry/RendererRegistry.js +0 -2
- package/dist/bigconsole/renderers/types/index.d.ts +0 -1
- package/dist/bigconsole/renderers/types/renderer.d.ts +0 -1
- package/dist/bigconsole/store/dashboardStore.d.ts +0 -1
- package/dist/bigconsole/store/dashboardStore.js +0 -2
- package/dist/bigconsole/store/dataSinkStore.d.ts +0 -1
- package/dist/bigconsole/store/dataSinkStore.js +0 -2
- package/dist/bigconsole/store/drilldownStore.d.ts +0 -1
- package/dist/bigconsole/store/drilldownStore.js +0 -2
- package/dist/bigconsole/store/index.d.ts +0 -1
- package/dist/bigconsole/store/parserStore.d.ts +0 -1
- package/dist/bigconsole/store/parserStore.js +0 -2
- package/dist/bigconsole/store/pipelineStore.d.ts +0 -1
- package/dist/bigconsole/store/pipelineStore.js +0 -2
- package/dist/bigconsole/store/widgetStore.d.ts +0 -1
- package/dist/bigconsole/store/widgetStore.js +0 -2
- package/dist/bigconsole/store/workflowStore.d.ts +0 -1
- package/dist/bigconsole/store/workflowStore.js +0 -2
- package/dist/bigconsole/types/index.d.ts +0 -1
- package/dist/bigconsole/utils/alertRules.d.ts +0 -1
- package/dist/bigconsole/utils/alertRules.js +0 -2
- package/dist/bigconsole/utils/backendError.d.ts +0 -1
- package/dist/bigconsole/utils/backendError.js +0 -2
- package/dist/bigconsole/utils/createDialogParam.d.ts +0 -1
- package/dist/bigconsole/utils/createDialogParam.js +0 -2
- package/dist/bigconsole/utils/csv.d.ts +0 -1
- package/dist/bigconsole/utils/csv.js +0 -2
- package/dist/bigconsole/utils/dashboardTemplateContent.d.ts +0 -1
- package/dist/bigconsole/utils/dashboardTemplateContent.js +0 -2
- package/dist/bigconsole/utils/drilldownParams.d.ts +0 -1
- package/dist/bigconsole/utils/drilldownParams.js +0 -2
- package/dist/bigconsole/utils/formDirty.d.ts +0 -1
- package/dist/bigconsole/utils/formDirty.js +0 -2
- package/dist/bigconsole/utils/format.d.ts +0 -1
- package/dist/bigconsole/utils/format.js +0 -2
- package/dist/bigconsole/utils/index.d.ts +0 -1
- package/dist/bigconsole/utils/insightsDraft.d.ts +29 -0
- package/dist/bigconsole/utils/insightsDraft.js +8 -0
- package/dist/bigconsole/utils/layoutBaseline.d.ts +0 -1
- package/dist/bigconsole/utils/layoutBaseline.js +0 -2
- package/dist/bigconsole/utils/quota.d.ts +0 -1
- package/dist/bigconsole/utils/quota.js +0 -2
- package/dist/bigconsole/utils/semanticTokens.d.ts +0 -1
- package/dist/bigconsole/utils/semanticTokens.js +0 -2
- package/dist/bigconsole/utils/templateInstallInputs.d.ts +0 -1
- package/dist/bigconsole/utils/templateInstallInputs.js +0 -2
- package/dist/bigconsole/utils/widgetBinding.d.ts +0 -1
- package/dist/bigconsole/utils/widgetBinding.js +0 -2
- package/dist/bigconsole/utils/widgetFormDirty.d.ts +16 -0
- package/dist/bigconsole/utils/widgetFormDirty.js +13 -0
- package/dist/bigconsole/utils/widgetPositioning.d.ts +0 -1
- package/dist/bigconsole/utils/widgetPositioning.js +0 -2
- package/dist/bigconsole/utils/widgetTypeMapping.d.ts +0 -1
- package/dist/bigconsole/utils/widgetTypeMapping.js +0 -2
- package/dist/bigconsole/workflowOpen.d.ts +0 -1
- package/dist/bigconsole/workflowOpen.js +0 -2
- package/dist/constants/permissions.d.ts +0 -1
- package/dist/constants/permissions.js +0 -2
- package/dist/generated/global-operations.d.ts +0 -1
- package/dist/generated/global-operations.js +0 -2
- package/dist/generated/global-types.d.ts +0 -1
- package/dist/generated/wspace-operations.d.ts +0 -1
- package/dist/generated/wspace-operations.js +0 -2
- package/dist/generated/wspace-types.d.ts +0 -1
- package/dist/generated/wspace-types.js +0 -2
- package/dist/index.d.ts +0 -1
- package/dist/node_modules/@e965/xlsx/xlsx.js +0 -2
- package/dist/node_modules/pdfjs-dist/build/pdf.js +0 -2
- package/dist/shared/hooks/useTr.d.ts +0 -1
- package/dist/shared/hooks/useTr.js +0 -2
- package/dist/translations/en.d.ts +0 -1
- package/dist/utils/nativeBridge.d.ts +0 -1
- package/package.json +5 -4
- package/dist/bigconsole/AdminRoot.d.ts.map +0 -1
- package/dist/bigconsole/AdminRoot.js.map +0 -1
- package/dist/bigconsole/AdminRoutes.d.ts.map +0 -1
- package/dist/bigconsole/AdminRoutes.js.map +0 -1
- package/dist/bigconsole/BigConsoleRoot.d.ts.map +0 -1
- package/dist/bigconsole/BigConsoleRoot.js.map +0 -1
- package/dist/bigconsole/BigConsoleRoutes.d.ts.map +0 -1
- package/dist/bigconsole/BigConsoleRoutes.js.map +0 -1
- package/dist/bigconsole/assistant/assistantApi.d.ts.map +0 -1
- package/dist/bigconsole/assistant/assistantApi.js.map +0 -1
- package/dist/bigconsole/assistant/assistantProduct.d.ts.map +0 -1
- package/dist/bigconsole/assistant/assistantProduct.js.map +0 -1
- package/dist/bigconsole/assistant/assistantPrompt.d.ts.map +0 -1
- package/dist/bigconsole/assistant/assistantPrompt.js.map +0 -1
- package/dist/bigconsole/assistant/assistantRunPersistence.d.ts.map +0 -1
- package/dist/bigconsole/assistant/assistantRunPersistence.js.map +0 -1
- package/dist/bigconsole/assistant/assistantRunStore.d.ts.map +0 -1
- package/dist/bigconsole/assistant/assistantRunStore.js.map +0 -1
- package/dist/bigconsole/assistant/assistantRuntime.d.ts.map +0 -1
- package/dist/bigconsole/assistant/assistantRuntime.js.map +0 -1
- package/dist/bigconsole/assistant/attachmentExtract.d.ts.map +0 -1
- package/dist/bigconsole/assistant/attachmentExtract.js.map +0 -1
- package/dist/bigconsole/assistant/conversationHistoryApi.d.ts.map +0 -1
- package/dist/bigconsole/assistant/conversationHistoryApi.js.map +0 -1
- package/dist/bigconsole/assistant/createSandboxAssistantTransport.d.ts.map +0 -1
- package/dist/bigconsole/assistant/createSandboxAssistantTransport.js.map +0 -1
- package/dist/bigconsole/assistant/displayCopy.d.ts.map +0 -1
- package/dist/bigconsole/assistant/index.d.ts.map +0 -1
- package/dist/bigconsole/assistant/modes.d.ts.map +0 -1
- package/dist/bigconsole/assistant/modes.js.map +0 -1
- package/dist/bigconsole/assistant/pageContext.d.ts.map +0 -1
- package/dist/bigconsole/assistant/pageContext.js.map +0 -1
- package/dist/bigconsole/assistant/previewController.d.ts.map +0 -1
- package/dist/bigconsole/assistant/previewController.js.map +0 -1
- package/dist/bigconsole/assistant/previewMutationResult.d.ts.map +0 -1
- package/dist/bigconsole/assistant/previewMutationResult.js.map +0 -1
- package/dist/bigconsole/assistant/previewRunAction.d.ts.map +0 -1
- package/dist/bigconsole/assistant/previewRunAction.js.map +0 -1
- package/dist/bigconsole/assistant/product.d.ts.map +0 -1
- package/dist/bigconsole/assistant/product.js.map +0 -1
- package/dist/bigconsole/assistant/recordAdapters.d.ts.map +0 -1
- package/dist/bigconsole/assistant/recordAdapters.js.map +0 -1
- package/dist/bigconsole/assistant/types.d.ts.map +0 -1
- package/dist/bigconsole/assistant/useAssistantRunWorkspace.d.ts.map +0 -1
- package/dist/bigconsole/assistant/useAssistantRunWorkspace.js.map +0 -1
- package/dist/bigconsole/assistant/useWorkspaceWriteAccess.d.ts.map +0 -1
- package/dist/bigconsole/assistant/useWorkspaceWriteAccess.js.map +0 -1
- package/dist/bigconsole/components/DrilldownDashboardRenderer.d.ts.map +0 -1
- package/dist/bigconsole/components/DrilldownDashboardRenderer.js.map +0 -1
- package/dist/bigconsole/components/DrilldownModal.d.ts.map +0 -1
- package/dist/bigconsole/components/DrilldownModal.js.map +0 -1
- package/dist/bigconsole/components/builder/BuilderCanvas.d.ts.map +0 -1
- package/dist/bigconsole/components/builder/BuilderCanvas.js.map +0 -1
- package/dist/bigconsole/components/builder/BuilderTopbar.d.ts.map +0 -1
- package/dist/bigconsole/components/builder/BuilderTopbar.js.map +0 -1
- package/dist/bigconsole/components/builder/DashboardEditorShell.d.ts.map +0 -1
- package/dist/bigconsole/components/builder/DashboardEditorShell.js.map +0 -1
- package/dist/bigconsole/components/builder/WidgetInspector.d.ts.map +0 -1
- package/dist/bigconsole/components/builder/WidgetInspector.js.map +0 -1
- package/dist/bigconsole/components/builder/index.d.ts.map +0 -1
- package/dist/bigconsole/components/builder/inspector/AdvancedSection.d.ts.map +0 -1
- package/dist/bigconsole/components/builder/inspector/AdvancedSection.js.map +0 -1
- package/dist/bigconsole/components/builder/inspector/AppearanceSection.d.ts.map +0 -1
- package/dist/bigconsole/components/builder/inspector/AppearanceSection.js.map +0 -1
- package/dist/bigconsole/components/builder/inspector/DataBindingSection.d.ts.map +0 -1
- package/dist/bigconsole/components/builder/inspector/DataBindingSection.js.map +0 -1
- package/dist/bigconsole/components/builder/inspector/GeneralSection.d.ts.map +0 -1
- package/dist/bigconsole/components/builder/inspector/GeneralSection.js.map +0 -1
- package/dist/bigconsole/components/builder/inspector/LayoutSection.d.ts.map +0 -1
- package/dist/bigconsole/components/builder/inspector/LayoutSection.js.map +0 -1
- package/dist/bigconsole/components/builder/inspector/index.d.ts.map +0 -1
- package/dist/bigconsole/components/common/Section.d.ts.map +0 -1
- package/dist/bigconsole/components/common/Section.js.map +0 -1
- package/dist/bigconsole/components/common/index.d.ts.map +0 -1
- package/dist/bigconsole/components/common/sectionStyles.d.ts.map +0 -1
- package/dist/bigconsole/components/common/sectionStyles.js.map +0 -1
- package/dist/bigconsole/components/dashboard/CreateDashboardDialog.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/CreateDashboardDialog.js.map +0 -1
- package/dist/bigconsole/components/dashboard/DashboardCanvas.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/DashboardCanvas.js.map +0 -1
- package/dist/bigconsole/components/dashboard/DashboardGrid.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/DashboardGrid.js.map +0 -1
- package/dist/bigconsole/components/dashboard/DashboardStatusPill.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/DashboardStatusPill.js.map +0 -1
- package/dist/bigconsole/components/dashboard/DashboardToolbar.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/DashboardToolbar.js.map +0 -1
- package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.js.map +0 -1
- package/dist/bigconsole/components/dashboard/ExportDashboardDialog.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/ExportDashboardDialog.js.map +0 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.js.map +0 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js.map +0 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.js.map +0 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js.map +0 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/index.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/ImportDashboardDialog.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/ImportDashboardDialog.js.map +0 -1
- package/dist/bigconsole/components/dashboard/LiveBoardBanner.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/LiveBoardBanner.js.map +0 -1
- package/dist/bigconsole/components/dashboard/LiveCanvasToggle.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/LiveCanvasToggle.js.map +0 -1
- package/dist/bigconsole/components/dashboard/PageTabsManager/PageTabsManager.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/PageTabsManager/PageTabsManager.js.map +0 -1
- package/dist/bigconsole/components/dashboard/PageTabsManager/index.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/PublishToStoreDialog.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/PublishToStoreDialog.js.map +0 -1
- package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.js.map +0 -1
- package/dist/bigconsole/components/dashboard/SavedViewsDropdown/index.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.js.map +0 -1
- package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.js.map +0 -1
- package/dist/bigconsole/components/dashboard/ShareDialog/index.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/StoreTemplatePicker.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/StoreTemplatePicker.js.map +0 -1
- package/dist/bigconsole/components/dashboard/TemplateInstallOptions.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/TemplateInstallOptions.js.map +0 -1
- package/dist/bigconsole/components/dashboard/TemplateLayoutPreview.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/TemplateLayoutPreview.js.map +0 -1
- package/dist/bigconsole/components/dashboard/TemplatePicker/TemplatePicker.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/TemplatePicker/index.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/TemplateSetupBanner.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/TemplateSetupBanner.js.map +0 -1
- package/dist/bigconsole/components/dashboard/WidgetPalette.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/WidgetPalette.js.map +0 -1
- package/dist/bigconsole/components/dashboard/index.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/AlertExecutionHistory.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/AlertExecutionHistory.js.map +0 -1
- package/dist/bigconsole/components/datasink/AlertRuleEditor.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/AlertRuleEditor.js.map +0 -1
- package/dist/bigconsole/components/datasink/CacheTTLSelector.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/CacheTTLSelector.js.map +0 -1
- package/dist/bigconsole/components/datasink/ConfigurationForm.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/DataPreviewPanel.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/DataSinkCard.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/DataSinkCard.js.map +0 -1
- package/dist/bigconsole/components/datasink/DataSinkDataViewer.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/DataSinkDataViewer.js.map +0 -1
- package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.js.map +0 -1
- package/dist/bigconsole/components/datasink/DataSinkRefreshConfig.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.js.map +0 -1
- package/dist/bigconsole/components/datasink/DataSinkStatusBadge.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/DataSinkStatusBadge.js.map +0 -1
- package/dist/bigconsole/components/datasink/DataSinkTableViewer.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/DataSinkTableViewer.js.map +0 -1
- package/dist/bigconsole/components/datasink/ExportDataSinkDialog.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/ExportDataSinkDialog.js.map +0 -1
- package/dist/bigconsole/components/datasink/FluidGridsPanel.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/ImportDataGuideDialog.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/ImportDataGuideDialog.js.map +0 -1
- package/dist/bigconsole/components/datasink/ImportDataSinkDialog.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/ImportDataSinkDialog.js.map +0 -1
- package/dist/bigconsole/components/datasink/LinkedParsersPanel.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/LinkedParsersPanel.js.map +0 -1
- package/dist/bigconsole/components/datasink/LinkedWorkflowsPanel.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/LinkedWorkflowsPanel.js.map +0 -1
- package/dist/bigconsole/components/datasink/RefreshTypeSelector.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/RefreshTypeSelector.js.map +0 -1
- package/dist/bigconsole/components/datasink/SetupStateBadge.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/SetupStateBadge.js.map +0 -1
- package/dist/bigconsole/components/datasink/WorkflowStatusPanel.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/WorkflowStatusPanel.js.map +0 -1
- package/dist/bigconsole/components/datasink/index.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/EmbedErrorBoundary.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/EmbedErrorBoundary.js.map +0 -1
- package/dist/bigconsole/components/embed/EmbedWidgetRenderer.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/EmbedWidgetRenderer.js.map +0 -1
- package/dist/bigconsole/components/embed/ReadOnlyDashboardRenderer.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/ReadOnlyDashboardRenderer.js.map +0 -1
- package/dist/bigconsole/components/embed/drilldown.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/drilldown.js.map +0 -1
- package/dist/bigconsole/components/embed/index.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/renderer-manifest.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/renderer-manifest.js.map +0 -1
- package/dist/bigconsole/components/embed/types.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/types.js.map +0 -1
- package/dist/bigconsole/components/embed/validate.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/validate.js.map +0 -1
- package/dist/bigconsole/components/embed/widgetShim.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgetShim.js.map +0 -1
- package/dist/bigconsole/components/embed/widgets/CalendarEmbed.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgets/CalendarEmbed.js.map +0 -1
- package/dist/bigconsole/components/embed/widgets/ChartEmbed.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgets/ChartEmbed.js.map +0 -1
- package/dist/bigconsole/components/embed/widgets/EmbedFrame.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgets/EmbedFrame.js.map +0 -1
- package/dist/bigconsole/components/embed/widgets/FormEmbed.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgets/FormEmbed.js.map +0 -1
- package/dist/bigconsole/components/embed/widgets/GaugeEmbed.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgets/GaugeEmbed.js.map +0 -1
- package/dist/bigconsole/components/embed/widgets/HeatmapEmbed.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgets/HeatmapEmbed.js.map +0 -1
- package/dist/bigconsole/components/embed/widgets/KanbanEmbed.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgets/KanbanEmbed.js.map +0 -1
- package/dist/bigconsole/components/embed/widgets/KpiComparisonEmbed.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgets/KpiComparisonEmbed.js.map +0 -1
- package/dist/bigconsole/components/embed/widgets/ListEmbed.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgets/ListEmbed.js.map +0 -1
- package/dist/bigconsole/components/embed/widgets/MetricCardEmbed.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgets/MetricCardEmbed.js.map +0 -1
- package/dist/bigconsole/components/embed/widgets/PivotEmbed.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgets/PivotEmbed.js.map +0 -1
- package/dist/bigconsole/components/embed/widgets/ProgressEmbed.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgets/ProgressEmbed.js.map +0 -1
- package/dist/bigconsole/components/embed/widgets/RetentionEmbed.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgets/RetentionEmbed.js.map +0 -1
- package/dist/bigconsole/components/embed/widgets/TableEmbed.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgets/TableEmbed.js.map +0 -1
- package/dist/bigconsole/components/embed/widgets/TextEmbed.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgets/TextEmbed.js.map +0 -1
- package/dist/bigconsole/components/embed/widgets/TimelineEmbed.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgets/TimelineEmbed.js.map +0 -1
- package/dist/bigconsole/components/embed/widgets/shared.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgets/shared.js.map +0 -1
- package/dist/bigconsole/components/overview/DashboardGuide.d.ts.map +0 -1
- package/dist/bigconsole/components/overview/DashboardGuide.js.map +0 -1
- package/dist/bigconsole/components/overview/DataHealthCard.d.ts.map +0 -1
- package/dist/bigconsole/components/overview/DataHealthCard.js.map +0 -1
- package/dist/bigconsole/components/overview/OverviewQuickActions.d.ts.map +0 -1
- package/dist/bigconsole/components/overview/OverviewQuickActions.js.map +0 -1
- package/dist/bigconsole/components/overview/OverviewStatCard.d.ts.map +0 -1
- package/dist/bigconsole/components/overview/OverviewStatCard.js.map +0 -1
- package/dist/bigconsole/components/overview/RecentDashboardsPanel.d.ts.map +0 -1
- package/dist/bigconsole/components/overview/RecentDashboardsPanel.js.map +0 -1
- package/dist/bigconsole/components/overview/dashboardGuideSteps.d.ts.map +0 -1
- package/dist/bigconsole/components/overview/dashboardGuideSteps.js.map +0 -1
- package/dist/bigconsole/components/overview/index.d.ts.map +0 -1
- package/dist/bigconsole/components/overview/overviewModel.d.ts.map +0 -1
- package/dist/bigconsole/components/overview/overviewModel.js.map +0 -1
- package/dist/bigconsole/components/overview/useOverviewData.d.ts.map +0 -1
- package/dist/bigconsole/components/overview/useOverviewData.js.map +0 -1
- package/dist/bigconsole/components/parser/DataSinkSelector.d.ts.map +0 -1
- package/dist/bigconsole/components/parser/DataSinkSelector.js.map +0 -1
- package/dist/bigconsole/components/parser/ExportParserDialog.d.ts.map +0 -1
- package/dist/bigconsole/components/parser/ExportParserDialog.js.map +0 -1
- package/dist/bigconsole/components/parser/ExpressionEditor.d.ts.map +0 -1
- package/dist/bigconsole/components/parser/ExpressionEditor.js.map +0 -1
- package/dist/bigconsole/components/parser/ImportParserDialog.d.ts.map +0 -1
- package/dist/bigconsole/components/parser/ImportParserDialog.js.map +0 -1
- package/dist/bigconsole/components/parser/ParserBuilder.d.ts.map +0 -1
- package/dist/bigconsole/components/parser/ParserCard.d.ts.map +0 -1
- package/dist/bigconsole/components/parser/ParserCard.js.map +0 -1
- package/dist/bigconsole/components/parser/ParserFormDialog.d.ts.map +0 -1
- package/dist/bigconsole/components/parser/ParserSelector.d.ts.map +0 -1
- package/dist/bigconsole/components/parser/ParserSelector.js.map +0 -1
- package/dist/bigconsole/components/parser/ParserStatusBadge.d.ts.map +0 -1
- package/dist/bigconsole/components/parser/ParserStatusBadge.js.map +0 -1
- package/dist/bigconsole/components/parser/ParserTypeBadge.d.ts.map +0 -1
- package/dist/bigconsole/components/parser/ParserTypeBadge.js.map +0 -1
- package/dist/bigconsole/components/parser/TestPanel.d.ts.map +0 -1
- package/dist/bigconsole/components/parser/index.d.ts.map +0 -1
- package/dist/bigconsole/components/parser/parserFieldStyles.d.ts.map +0 -1
- package/dist/bigconsole/components/pipeline/PipelineCard.d.ts.map +0 -1
- package/dist/bigconsole/components/pipeline/PipelineCard.js.map +0 -1
- package/dist/bigconsole/components/pipeline/PipelineDeleteDialog.d.ts.map +0 -1
- package/dist/bigconsole/components/pipeline/PipelineDeleteDialog.js.map +0 -1
- package/dist/bigconsole/components/pipeline/PipelineScopePicker.d.ts.map +0 -1
- package/dist/bigconsole/components/pipeline/PipelineScopePicker.js.map +0 -1
- package/dist/bigconsole/components/pipeline/PipelineStatusBadge.d.ts.map +0 -1
- package/dist/bigconsole/components/pipeline/PipelineStatusBadge.js.map +0 -1
- package/dist/bigconsole/components/pipeline/index.d.ts.map +0 -1
- package/dist/bigconsole/components/preview/AiPreviewContent.d.ts.map +0 -1
- package/dist/bigconsole/components/preview/AiPreviewContent.js.map +0 -1
- package/dist/bigconsole/components/preview/AiPreviewMiniPanel.d.ts.map +0 -1
- package/dist/bigconsole/components/preview/AiPreviewMiniPanel.js.map +0 -1
- package/dist/bigconsole/components/preview/AiPreviewPanel.d.ts.map +0 -1
- package/dist/bigconsole/components/preview/AiPreviewPanel.js.map +0 -1
- package/dist/bigconsole/components/preview/parserPreview.d.ts.map +0 -1
- package/dist/bigconsole/components/preview/parserPreview.js.map +0 -1
- package/dist/bigconsole/components/preview/previewShared.d.ts.map +0 -1
- package/dist/bigconsole/components/preview/previewShared.js.map +0 -1
- package/dist/bigconsole/components/widgets/ActionConfigDialog.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/ActionConfigDialog.js.map +0 -1
- package/dist/bigconsole/components/widgets/DrilldownConfigPanel.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/DrilldownConfigPanel.js.map +0 -1
- package/dist/bigconsole/components/widgets/PropertiesPanel.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/PropertiesPanel.js.map +0 -1
- package/dist/bigconsole/components/widgets/WidgetErrorBoundary.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/WidgetErrorBoundary.js.map +0 -1
- package/dist/bigconsole/components/widgets/WidgetHeader.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/WidgetHeader.js.map +0 -1
- package/dist/bigconsole/components/widgets/WidgetMenu.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/WidgetMenu.js.map +0 -1
- package/dist/bigconsole/components/widgets/WidgetRegistry.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/WidgetRegistry.js.map +0 -1
- package/dist/bigconsole/components/widgets/WidgetTypeSelector.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/WidgetWrapper.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/WidgetWrapper.js.map +0 -1
- package/dist/bigconsole/components/widgets/actionConfig.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/actionConfig.js.map +0 -1
- package/dist/bigconsole/components/widgets/adaptive-card/AdaptiveCardWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/adaptive-card/AdaptiveCardWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/adaptive-card/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/calendar/CalendarView.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/calendar/CalendarView.js.map +0 -1
- package/dist/bigconsole/components/widgets/calendar/CalendarWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/calendar/CalendarWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/calendar/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/chart/ChartConfig.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/chart/ChartConfig.js.map +0 -1
- package/dist/bigconsole/components/widgets/chart/ChartLegend.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/chart/ChartLegend.js.map +0 -1
- package/dist/bigconsole/components/widgets/chart/ChartTooltip.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/chart/ChartTooltip.js.map +0 -1
- package/dist/bigconsole/components/widgets/chart/ChartWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/chart/ChartWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/AreaChart.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/AreaChart.js.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/BarChart.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/BarChart.js.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/ComboChart.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/ComboChart.js.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/FunnelChart.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/FunnelChart.js.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/LineChart.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/LineChart.js.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/PieChart.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/PieChart.js.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/ScatterChart.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/ScatterChart.js.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/WaterfallChart.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/WaterfallChart.js.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/referenceElements.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/referenceElements.js.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/types.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/chart/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/comments/WidgetComments.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/comments/WidgetComments.js.map +0 -1
- package/dist/bigconsole/components/widgets/custom/CustomWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/custom/CustomWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/custom/config.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/custom/config.js.map +0 -1
- package/dist/bigconsole/components/widgets/custom/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/custom/utils.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/custom/utils.js.map +0 -1
- package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.js.map +0 -1
- package/dist/bigconsole/components/widgets/event-logs/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/form/FormWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/form/FormWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/form/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/funnel/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/funnel/index.js.map +0 -1
- package/dist/bigconsole/components/widgets/gauge/CircularGauge.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/gauge/CircularGauge.js.map +0 -1
- package/dist/bigconsole/components/widgets/gauge/GaugeConfig.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/gauge/GaugeConfig.js.map +0 -1
- package/dist/bigconsole/components/widgets/gauge/GaugeWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/gauge/GaugeWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/gauge/LinearGauge.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/gauge/LinearGauge.js.map +0 -1
- package/dist/bigconsole/components/widgets/gauge/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.js.map +0 -1
- package/dist/bigconsole/components/widgets/heatmap/HeatmapWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/heatmap/HeatmapWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/heatmap/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/iframe-widget/IframeWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/iframe-widget/IframeWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/iframe-widget/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/kanban/KanbanView.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/kanban/KanbanView.js.map +0 -1
- package/dist/bigconsole/components/widgets/kanban/KanbanWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/kanban/KanbanWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/kanban/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/kanban/model.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/kanban/model.js.map +0 -1
- package/dist/bigconsole/components/widgets/kpi/KPIWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/kpi/KPIWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/kpi/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/kpi-comparison/KPIComparisonWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/kpi-comparison/KPIComparisonWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/kpi-comparison/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/list/ListConfig.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/list/ListConfig.js.map +0 -1
- package/dist/bigconsole/components/widgets/list/ListItem.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/list/ListItem.js.map +0 -1
- package/dist/bigconsole/components/widgets/list/ListWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/list/ListWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/list/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/map-widget/MapWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/map-widget/MapWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/map-widget/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/metric-card/ComparisonBadge.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/metric-card/ComparisonBadge.js.map +0 -1
- package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.js.map +0 -1
- package/dist/bigconsole/components/widgets/metric-card/MetricCardWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/metric-card/MetricCardWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/metric-card/SparklineChart.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/metric-card/SparklineChart.js.map +0 -1
- package/dist/bigconsole/components/widgets/metric-card/TrendIndicator.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/metric-card/TrendIndicator.js.map +0 -1
- package/dist/bigconsole/components/widgets/metric-card/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/pivot-table/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/progress/ProgressBar.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/progress/ProgressBar.js.map +0 -1
- package/dist/bigconsole/components/widgets/progress/ProgressConfig.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/progress/ProgressConfig.js.map +0 -1
- package/dist/bigconsole/components/widgets/progress/ProgressWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/progress/ProgressWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/progress/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/retention/RetentionWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/retention/RetentionWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/retention/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/states/EmptyState.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/states/EmptyState.js.map +0 -1
- package/dist/bigconsole/components/widgets/states/ErrorState.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/states/ErrorState.js.map +0 -1
- package/dist/bigconsole/components/widgets/states/LoadingState.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/states/LoadingState.js.map +0 -1
- package/dist/bigconsole/components/widgets/states/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/table/TableCell.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/table/TableCell.js.map +0 -1
- package/dist/bigconsole/components/widgets/table/TableConfig.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/table/TableConfig.js.map +0 -1
- package/dist/bigconsole/components/widgets/table/TableHeader.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/table/TableHeader.js.map +0 -1
- package/dist/bigconsole/components/widgets/table/TablePagination.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/table/TablePagination.js.map +0 -1
- package/dist/bigconsole/components/widgets/table/TableWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/table/TableWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/table/cellLink.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/table/cellLink.js.map +0 -1
- package/dist/bigconsole/components/widgets/table/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/text-widget/TextWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/text-widget/TextWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/text-widget/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/text-widget/textData.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/text-widget/textData.js.map +0 -1
- package/dist/bigconsole/components/widgets/timeline/TimelineWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/timeline/TimelineWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/timeline/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/utils/conditionalFormat.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/utils/conditionalFormat.js.map +0 -1
- package/dist/bigconsole/components/widgets/utils/inferFields.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/utils/inferFields.js.map +0 -1
- package/dist/bigconsole/components/widgets/utils/targetProgress.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/utils/targetProgress.js.map +0 -1
- package/dist/bigconsole/components/widgets/utils/translate.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/utils/translate.js.map +0 -1
- package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.js.map +0 -1
- package/dist/bigconsole/components/widgets/webhook-config/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/widget-actions/WidgetActions.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/widget-actions/WidgetActions.js.map +0 -1
- package/dist/bigconsole/components/widgets/widget-actions/index.d.ts.map +0 -1
- package/dist/bigconsole/components/workflow/DataSinkMultiSelector.d.ts.map +0 -1
- package/dist/bigconsole/components/workflow/WorkflowCard.d.ts.map +0 -1
- package/dist/bigconsole/components/workflow/WorkflowCard.js.map +0 -1
- package/dist/bigconsole/components/workflow/WorkflowDeleteDialog.d.ts.map +0 -1
- package/dist/bigconsole/components/workflow/WorkflowDeleteDialog.js.map +0 -1
- package/dist/bigconsole/components/workflow/WorkflowDesignPreview.d.ts.map +0 -1
- package/dist/bigconsole/components/workflow/WorkflowDesignPreview.js.map +0 -1
- package/dist/bigconsole/components/workflow/WorkflowOpenGuard.d.ts.map +0 -1
- package/dist/bigconsole/components/workflow/WorkflowOpenGuard.js.map +0 -1
- package/dist/bigconsole/components/workflow/WorkflowSinkLinkForm.d.ts.map +0 -1
- package/dist/bigconsole/components/workflow/WorkflowSinkLinkForm.js.map +0 -1
- package/dist/bigconsole/components/workflow/WorkflowStatusBadge.d.ts.map +0 -1
- package/dist/bigconsole/components/workflow/WorkflowStatusBadge.js.map +0 -1
- package/dist/bigconsole/components/workflow/index.d.ts.map +0 -1
- package/dist/bigconsole/constants/backendErrors.d.ts.map +0 -1
- package/dist/bigconsole/constants/backendErrors.js.map +0 -1
- package/dist/bigconsole/constants.d.ts.map +0 -1
- package/dist/bigconsole/constants.js.map +0 -1
- package/dist/bigconsole/context/BigConsoleContext.d.ts.map +0 -1
- package/dist/bigconsole/context/BigConsoleContext.js.map +0 -1
- package/dist/bigconsole/context/index.d.ts.map +0 -1
- package/dist/bigconsole/contexts/CrossFilterContext.d.ts.map +0 -1
- package/dist/bigconsole/contexts/CrossFilterContext.js.map +0 -1
- package/dist/bigconsole/contexts/NavigationContext.d.ts.map +0 -1
- package/dist/bigconsole/contexts/NavigationContext.js.map +0 -1
- package/dist/bigconsole/contexts/index.d.ts.map +0 -1
- package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.d.ts.map +0 -1
- package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.js.map +0 -1
- package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.d.ts.map +0 -1
- package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.js.map +0 -1
- package/dist/bigconsole/customWidget/index.d.ts.map +0 -1
- package/dist/bigconsole/customWidget/proposalContract.d.ts.map +0 -1
- package/dist/bigconsole/customWidget/proposalContract.js.map +0 -1
- package/dist/bigconsole/customWidget/proposalSource.d.ts.map +0 -1
- package/dist/bigconsole/customWidget/proposalSource.js.map +0 -1
- package/dist/bigconsole/graphql/apollo-compat.d.ts.map +0 -1
- package/dist/bigconsole/graphql/storeTemplates.d.ts.map +0 -1
- package/dist/bigconsole/graphql/storeTemplates.js.map +0 -1
- package/dist/bigconsole/hooks/index.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useActivePage.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useActivePage.js.map +0 -1
- package/dist/bigconsole/hooks/useAutoRefresh.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useAutoRefresh.js.map +0 -1
- package/dist/bigconsole/hooks/useBigConsoleAnalytics.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useBigConsoleAnalytics.js.map +0 -1
- package/dist/bigconsole/hooks/useBigConsoleSettings.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useBigConsoleSettings.js.map +0 -1
- package/dist/bigconsole/hooks/useCrossFilter.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useCrossFilter.js.map +0 -1
- package/dist/bigconsole/hooks/useDashboardEmbedPolicy.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useDashboardEmbedPolicy.js.map +0 -1
- package/dist/bigconsole/hooks/useDashboardImageExport.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useDashboardImageExport.js.map +0 -1
- package/dist/bigconsole/hooks/useDashboardLayoutBaseline.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useDashboardLayoutBaseline.js.map +0 -1
- package/dist/bigconsole/hooks/useDashboardOperations.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useDashboardOperations.js.map +0 -1
- package/dist/bigconsole/hooks/useDashboardSharing.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useDashboardSharing.js.map +0 -1
- package/dist/bigconsole/hooks/useDashboardTemplates.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useDashboardViews.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useDashboardViews.js.map +0 -1
- package/dist/bigconsole/hooks/useDataSinkAlerts.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useDataSinkAlerts.js.map +0 -1
- package/dist/bigconsole/hooks/useDataSinkOperations.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useDataSinkOperations.js.map +0 -1
- package/dist/bigconsole/hooks/useDataSinkSubscription.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useDataSinkSubscription.js.map +0 -1
- package/dist/bigconsole/hooks/useDrilldown.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useDrilldown.js.map +0 -1
- package/dist/bigconsole/hooks/useDrilldownOperations.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useDrilldownOperations.js.map +0 -1
- package/dist/bigconsole/hooks/useEventLogs.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useEventLogs.js.map +0 -1
- package/dist/bigconsole/hooks/useEventWebhooks.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useEventWebhooks.js.map +0 -1
- package/dist/bigconsole/hooks/useExportDashboard.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useExportDashboard.js.map +0 -1
- package/dist/bigconsole/hooks/useExportDataSink.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useExportDataSink.js.map +0 -1
- package/dist/bigconsole/hooks/useExportParser.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useExportParser.js.map +0 -1
- package/dist/bigconsole/hooks/useFilterPresets.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useFilterPresets.js.map +0 -1
- package/dist/bigconsole/hooks/useFilterUrlSync.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useFilterUrlSync.js.map +0 -1
- package/dist/bigconsole/hooks/useGlobalFilters.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useGlobalFilters.js.map +0 -1
- package/dist/bigconsole/hooks/useImportDashboard.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useImportDashboard.js.map +0 -1
- package/dist/bigconsole/hooks/useImportDataSink.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useImportDataSink.js.map +0 -1
- package/dist/bigconsole/hooks/useImportParser.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useImportParser.js.map +0 -1
- package/dist/bigconsole/hooks/useInstalledWidgets.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useInstalledWidgets.js.map +0 -1
- package/dist/bigconsole/hooks/useModalFocusTrap.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useModalFocusTrap.js.map +0 -1
- package/dist/bigconsole/hooks/usePageOperations.d.ts.map +0 -1
- package/dist/bigconsole/hooks/usePageOperations.js.map +0 -1
- package/dist/bigconsole/hooks/useParserOperations.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useParserOperations.js.map +0 -1
- package/dist/bigconsole/hooks/usePipelineOperations.d.ts.map +0 -1
- package/dist/bigconsole/hooks/usePipelineOperations.js.map +0 -1
- package/dist/bigconsole/hooks/useShareRecipients.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useShareRecipients.js.map +0 -1
- package/dist/bigconsole/hooks/useStoreDashboardTemplates.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useStoreDashboardTemplates.js.map +0 -1
- package/dist/bigconsole/hooks/useWidgetActions.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useWidgetActions.js.map +0 -1
- package/dist/bigconsole/hooks/useWidgetCatalog.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useWidgetCatalog.js.map +0 -1
- package/dist/bigconsole/hooks/useWidgetComments.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useWidgetComments.js.map +0 -1
- package/dist/bigconsole/hooks/useWidgetConfigPersist.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useWidgetConfigPersist.js.map +0 -1
- package/dist/bigconsole/hooks/useWidgetData.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useWidgetData.js.map +0 -1
- package/dist/bigconsole/hooks/useWidgetEvents.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useWidgetEvents.js.map +0 -1
- package/dist/bigconsole/hooks/useWidgetExport.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useWidgetExport.js.map +0 -1
- package/dist/bigconsole/hooks/useWidgetOperations.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useWidgetOperations.js.map +0 -1
- package/dist/bigconsole/hooks/useWorkflowOperations.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useWorkflowOperations.js.map +0 -1
- package/dist/bigconsole/index.d.ts.map +0 -1
- package/dist/bigconsole/modules/dashboard/index.d.ts.map +0 -1
- package/dist/bigconsole/modules/index.d.ts.map +0 -1
- package/dist/bigconsole/modules/renderer/index.d.ts.map +0 -1
- package/dist/bigconsole/modules/widget/index.d.ts.map +0 -1
- package/dist/bigconsole/pages/AdminPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/AdminPage.js.map +0 -1
- package/dist/bigconsole/pages/DashboardBuilderPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/DashboardBuilderPage.js.map +0 -1
- package/dist/bigconsole/pages/DashboardViewPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/DashboardViewPage.js.map +0 -1
- package/dist/bigconsole/pages/DashboardsPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/DashboardsPage.js.map +0 -1
- package/dist/bigconsole/pages/DataParsersPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/DataParsersPage.js.map +0 -1
- package/dist/bigconsole/pages/DataSinkAlertsPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/DataSinkAlertsPage.js.map +0 -1
- package/dist/bigconsole/pages/DataSinkBuilderPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/DataSinkBuilderPage.js.map +0 -1
- package/dist/bigconsole/pages/DataSinkViewPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/DataSinkViewPage.js.map +0 -1
- package/dist/bigconsole/pages/DataSinksPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/DataSinksPage.js.map +0 -1
- package/dist/bigconsole/pages/DataSourcesPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/DataSourcesPage.js.map +0 -1
- package/dist/bigconsole/pages/InsightsPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/InsightsPage.js.map +0 -1
- package/dist/bigconsole/pages/OverviewPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/OverviewPage.js.map +0 -1
- package/dist/bigconsole/pages/ParserBuilderPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/ParserBuilderPage.js.map +0 -1
- package/dist/bigconsole/pages/ParserViewPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/ParserViewPage.js.map +0 -1
- package/dist/bigconsole/pages/PipelineBuilderPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/PipelineBuilderPage.js.map +0 -1
- package/dist/bigconsole/pages/PipelineViewPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/PipelineViewPage.js.map +0 -1
- package/dist/bigconsole/pages/PipelinesPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/PipelinesPage.js.map +0 -1
- package/dist/bigconsole/pages/SettingsPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/SettingsPage.js.map +0 -1
- package/dist/bigconsole/pages/WidgetDemoPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/WidgetDemoPage.js.map +0 -1
- package/dist/bigconsole/pages/WorkflowViewPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/WorkflowViewPage.js.map +0 -1
- package/dist/bigconsole/pages/WorkflowsPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/WorkflowsPage.js.map +0 -1
- package/dist/bigconsole/pages/index.d.ts.map +0 -1
- package/dist/bigconsole/providers/BigConsoleQuotaProvider.d.ts.map +0 -1
- package/dist/bigconsole/providers/BigConsoleQuotaProvider.js.map +0 -1
- package/dist/bigconsole/renderers/adapters/AdaptiveCardRenderer.d.ts.map +0 -1
- package/dist/bigconsole/renderers/adapters/AdaptiveCardRenderer.js.map +0 -1
- package/dist/bigconsole/renderers/adapters/BigConsoleRenderer.d.ts.map +0 -1
- package/dist/bigconsole/renderers/adapters/BigConsoleRenderer.js.map +0 -1
- package/dist/bigconsole/renderers/adapters/BlockKitRenderer.d.ts.map +0 -1
- package/dist/bigconsole/renderers/adapters/BlockKitRenderer.js.map +0 -1
- package/dist/bigconsole/renderers/adapters/CustomRenderer.d.ts.map +0 -1
- package/dist/bigconsole/renderers/adapters/CustomRenderer.js.map +0 -1
- package/dist/bigconsole/renderers/adapters/index.d.ts.map +0 -1
- package/dist/bigconsole/renderers/factory/WidgetRendererFactory.d.ts.map +0 -1
- package/dist/bigconsole/renderers/factory/WidgetRendererFactory.js.map +0 -1
- package/dist/bigconsole/renderers/index.d.ts.map +0 -1
- package/dist/bigconsole/renderers/registry/RendererRegistry.d.ts.map +0 -1
- package/dist/bigconsole/renderers/registry/RendererRegistry.js.map +0 -1
- package/dist/bigconsole/renderers/types/index.d.ts.map +0 -1
- package/dist/bigconsole/renderers/types/renderer.d.ts.map +0 -1
- package/dist/bigconsole/store/dashboardStore.d.ts.map +0 -1
- package/dist/bigconsole/store/dashboardStore.js.map +0 -1
- package/dist/bigconsole/store/dataSinkStore.d.ts.map +0 -1
- package/dist/bigconsole/store/dataSinkStore.js.map +0 -1
- package/dist/bigconsole/store/drilldownStore.d.ts.map +0 -1
- package/dist/bigconsole/store/drilldownStore.js.map +0 -1
- package/dist/bigconsole/store/index.d.ts.map +0 -1
- package/dist/bigconsole/store/parserStore.d.ts.map +0 -1
- package/dist/bigconsole/store/parserStore.js.map +0 -1
- package/dist/bigconsole/store/pipelineStore.d.ts.map +0 -1
- package/dist/bigconsole/store/pipelineStore.js.map +0 -1
- package/dist/bigconsole/store/widgetStore.d.ts.map +0 -1
- package/dist/bigconsole/store/widgetStore.js.map +0 -1
- package/dist/bigconsole/store/workflowStore.d.ts.map +0 -1
- package/dist/bigconsole/store/workflowStore.js.map +0 -1
- package/dist/bigconsole/types/index.d.ts.map +0 -1
- package/dist/bigconsole/utils/alertRules.d.ts.map +0 -1
- package/dist/bigconsole/utils/alertRules.js.map +0 -1
- package/dist/bigconsole/utils/backendError.d.ts.map +0 -1
- package/dist/bigconsole/utils/backendError.js.map +0 -1
- package/dist/bigconsole/utils/createDialogParam.d.ts.map +0 -1
- package/dist/bigconsole/utils/createDialogParam.js.map +0 -1
- package/dist/bigconsole/utils/csv.d.ts.map +0 -1
- package/dist/bigconsole/utils/csv.js.map +0 -1
- package/dist/bigconsole/utils/dashboardTemplateContent.d.ts.map +0 -1
- package/dist/bigconsole/utils/dashboardTemplateContent.js.map +0 -1
- package/dist/bigconsole/utils/drilldownParams.d.ts.map +0 -1
- package/dist/bigconsole/utils/drilldownParams.js.map +0 -1
- package/dist/bigconsole/utils/formDirty.d.ts.map +0 -1
- package/dist/bigconsole/utils/formDirty.js.map +0 -1
- package/dist/bigconsole/utils/format.d.ts.map +0 -1
- package/dist/bigconsole/utils/format.js.map +0 -1
- package/dist/bigconsole/utils/index.d.ts.map +0 -1
- package/dist/bigconsole/utils/layoutBaseline.d.ts.map +0 -1
- package/dist/bigconsole/utils/layoutBaseline.js.map +0 -1
- package/dist/bigconsole/utils/quota.d.ts.map +0 -1
- package/dist/bigconsole/utils/quota.js.map +0 -1
- package/dist/bigconsole/utils/semanticTokens.d.ts.map +0 -1
- package/dist/bigconsole/utils/semanticTokens.js.map +0 -1
- package/dist/bigconsole/utils/templateInstallInputs.d.ts.map +0 -1
- package/dist/bigconsole/utils/templateInstallInputs.js.map +0 -1
- package/dist/bigconsole/utils/widgetBinding.d.ts.map +0 -1
- package/dist/bigconsole/utils/widgetBinding.js.map +0 -1
- package/dist/bigconsole/utils/widgetPositioning.d.ts.map +0 -1
- package/dist/bigconsole/utils/widgetPositioning.js.map +0 -1
- package/dist/bigconsole/utils/widgetTypeMapping.d.ts.map +0 -1
- package/dist/bigconsole/utils/widgetTypeMapping.js.map +0 -1
- package/dist/bigconsole/workflowOpen.d.ts.map +0 -1
- package/dist/bigconsole/workflowOpen.js.map +0 -1
- package/dist/constants/permissions.d.ts.map +0 -1
- package/dist/constants/permissions.js.map +0 -1
- package/dist/generated/global-operations.d.ts.map +0 -1
- package/dist/generated/global-operations.js.map +0 -1
- package/dist/generated/global-types.d.ts.map +0 -1
- package/dist/generated/wspace-operations.d.ts.map +0 -1
- package/dist/generated/wspace-operations.js.map +0 -1
- package/dist/generated/wspace-types.d.ts.map +0 -1
- package/dist/generated/wspace-types.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/node_modules/@e965/xlsx/xlsx.js.map +0 -1
- package/dist/node_modules/pdfjs-dist/build/pdf.js.map +0 -1
- package/dist/shared/hooks/useTr.d.ts.map +0 -1
- package/dist/shared/hooks/useTr.js.map +0 -1
- package/dist/stories/DashboardGuide.stories.d.ts +0 -15
- package/dist/stories/DashboardGuide.stories.d.ts.map +0 -1
- package/dist/stories/DataSinkStatusBadge.stories.d.ts +0 -12
- package/dist/stories/DataSinkStatusBadge.stories.d.ts.map +0 -1
- package/dist/stories/GaugeWidget.stories.d.ts +0 -58
- package/dist/stories/GaugeWidget.stories.d.ts.map +0 -1
- package/dist/stories/KPIComparisonWidget.stories.d.ts +0 -76
- package/dist/stories/KPIComparisonWidget.stories.d.ts.map +0 -1
- package/dist/stories/LiveCanvasToggle.stories.d.ts +0 -9
- package/dist/stories/LiveCanvasToggle.stories.d.ts.map +0 -1
- package/dist/stories/MetricCardWidget.stories.d.ts +0 -88
- package/dist/stories/MetricCardWidget.stories.d.ts.map +0 -1
- package/dist/stories/ProgressWidget.stories.d.ts +0 -48
- package/dist/stories/ProgressWidget.stories.d.ts.map +0 -1
- package/dist/stories/SetupStateBadge.stories.d.ts +0 -12
- package/dist/stories/SetupStateBadge.stories.d.ts.map +0 -1
- package/dist/translations/en.d.ts.map +0 -1
- package/dist/utils/nativeBridge.d.ts.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"InsightsPage.js","names":[],"sources":["../../../src/bigconsole/pages/InsightsPage.tsx"],"sourcesContent":["/**\n * InsightsPage\n *\n * AI-powered dashboard generation using the Prompt module backend.\n * Users enter a natural language prompt to generate dashboards with\n * suggested widgets, layouts, and configurations.\n *\n * Section emphasis (BOFF-5639): the screen reads as one ladder —\n * header band (structural)\n * → \"Describe your dashboard\" (PRIMARY: the reason the route exists)\n * → \"Starting points\" (MUTED: optional shortcuts, must not compete)\n * → \"Recent generations\" (BARE region of STANDARD result cards)\n * Status now travels through `Section tone` and a single tone-coded badge\n * instead of four unrelated hand-rolled error treatments.\n */\n\nimport { type CSSProperties, type FC, memo, useState, useCallback, useEffect } from 'react';\nimport { gql } from '@apollo/client';\nimport { useMutation, useQuery } from '@apollo/client/react';\nimport { AuroraBackground, GradientText, GlassCard, IllustratedEmptyState, PagePurpose } from '@burdenoff/fe-libs/ui';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { useAppNavigate } from '../contexts';\nimport { useBigConsoleAnalytics } from '../hooks/useBigConsoleAnalytics';\nimport { reportBigConsoleQuotaError } from '../utils/quota';\nimport { isNative, nativeImpact, nativeNotify } from '../../utils/nativeBridge';\nimport { Section, SectionStack, SECTION_FOCUS_RING } from '../components/common';\nimport './InsightsProposalGrid.css';\nimport {\n Sparkles,\n Loader2,\n Trash2,\n ArrowRight,\n Clock,\n CheckCircle,\n XCircle,\n AlertCircle,\n RefreshCw,\n Eye,\n Ban,\n Wand2,\n X,\n Lightbulb,\n History,\n} from 'lucide-react';\n\n// ============================================================================\n// GRAPHQL OPERATIONS (inline until codegen is configured for prompt module)\n// TODO(BOFF-2055): Replace inline gql with codegen-generated hooks\n// ============================================================================\n\nconst LIST_PROMPT_GENERATIONS = gql`\n query ListPromptGenerations($status: PromptGenerationStatus, $first: Int) {\n listPromptGenerations(status: $status, first: $first) {\n edges {\n node {\n id\n prompt\n status\n dashboardId\n errorMessage\n createdAt\n completedAt\n generatedSpec {\n name\n description\n overallConfidence\n reasoning\n pages {\n name\n layout\n gridColumns\n widgets {\n position {\n x\n y\n width\n height\n }\n title\n type\n confidence\n reasoning\n }\n }\n }\n }\n }\n totalCount\n }\n }\n`;\n\nconst GET_PROMPT_SUGGESTIONS = gql`\n query GetPromptSuggestions($category: String, $limit: Int) {\n getPromptSuggestions(category: $category, limit: $limit) {\n id\n category\n title\n prompt\n exampleDescription\n tags\n }\n }\n`;\n\nconst GENERATE_DASHBOARD = gql`\n mutation GenerateDashboardFromPrompt($input: GenerateDashboardFromPromptInput!) {\n generateDashboardFromPrompt(input: $input) {\n id\n status\n prompt\n }\n }\n`;\n\nconst CREATE_FROM_GENERATION = gql`\n mutation CreateDashboardFromGeneration($input: CreateDashboardFromGenerationInput!) {\n createDashboardFromGeneration(input: $input) {\n id\n }\n }\n`;\n\nconst DELETE_GENERATION = gql`\n mutation DeletePromptGeneration($generationId: ID!) {\n deletePromptGeneration(generationId: $generationId)\n }\n`;\n\nconst CANCEL_GENERATION = gql`\n mutation CancelPromptGeneration($generationId: ID!) {\n cancelPromptGeneration(generationId: $generationId) {\n id\n status\n }\n }\n`;\n\nconst REGENERATE_DASHBOARD = gql`\n mutation RegenerateDashboard($input: RegenerateDashboardInput!) {\n regenerateDashboard(input: $input) {\n id\n status\n prompt\n }\n }\n`;\n\nconst REFINE_GENERATION = gql`\n mutation RefineGeneratedDashboard($input: RefineGeneratedDashboardInput!) {\n refineGeneratedDashboard(input: $input) {\n id\n status\n prompt\n }\n }\n`;\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\ninterface ListPromptGenerationsData {\n listPromptGenerations: {\n edges: Array<{ node: PromptGeneration }>;\n totalCount: number;\n };\n}\n\ninterface GetPromptSuggestionsData {\n getPromptSuggestions: PromptSuggestion[];\n}\n\ninterface GenerateDashboardData {\n generateDashboardFromPrompt: {\n id: string;\n status: string;\n prompt: string;\n };\n}\n\ninterface CreateFromGenerationData {\n createDashboardFromGeneration: {\n id: string;\n };\n}\n\nconst NON_TERMINAL_STATUSES = ['PENDING', 'PROCESSING', 'GENERATING'];\n\n// ----------------------------------------------------------------------------\n// Generation options\n//\n// Mirrors GenerateDashboardFromPromptInput. Values and bounds are the ones the\n// service declares/enforces: `gridColumns` 1–24, `maxWidgets` <= 50 (resolver\n// `prompt/index.ts`), and the two enums exactly as composed into the schema —\n// so nothing here can be submitted and rejected.\n// ----------------------------------------------------------------------------\n\ntype DashboardStyleType = 'MODERN' | 'CLASSIC' | 'MINIMAL' | 'DARK' | 'VIBRANT';\ntype GeneratedLayoutType = 'GRID' | 'FLEX' | 'MASONRY' | 'SINGLE_COLUMN' | 'TWO_COLUMN' | 'THREE_COLUMN';\n\nconst DEFAULT_GRID_COLUMNS = 12;\nconst DEFAULT_MAX_WIDGETS = 8;\n\nconst STYLE_TYPE_OPTIONS: ReadonlyArray<{ value: DashboardStyleType; label: string }> = [\n { value: 'MODERN', label: 'Modern' },\n { value: 'CLASSIC', label: 'Classic' },\n { value: 'MINIMAL', label: 'Minimal' },\n { value: 'DARK', label: 'Dark' },\n { value: 'VIBRANT', label: 'Vibrant' },\n];\n\nconst LAYOUT_TYPE_OPTIONS: ReadonlyArray<{ value: GeneratedLayoutType; label: string }> = [\n { value: 'GRID', label: 'Grid' },\n { value: 'FLEX', label: 'Flex' },\n { value: 'MASONRY', label: 'Masonry' },\n { value: 'SINGLE_COLUMN', label: 'Single column' },\n { value: 'TWO_COLUMN', label: 'Two column' },\n { value: 'THREE_COLUMN', label: 'Three column' },\n];\n\nconst GRID_COLUMN_OPTIONS: readonly number[] = [6, 8, 12, 16, 24];\nconst MAX_WIDGET_OPTIONS: readonly number[] = [4, 6, 8, 12, 16, 24];\n\ninterface PromptSuggestion {\n id: string;\n category: string;\n title: string;\n prompt: string;\n exampleDescription?: string;\n tags: string[];\n}\n\ninterface PromptGeneration {\n id: string;\n prompt: string;\n status: string;\n dashboardId?: string;\n errorMessage?: string;\n createdAt: string;\n completedAt?: string;\n generatedSpec?: {\n name: string;\n description?: string;\n overallConfidence: number;\n /** Why the model chose this shape (GeneratedDashboardSpec.reasoning). */\n reasoning?: string | null;\n pages: Array<{\n name: string;\n layout: string;\n gridColumns: number;\n widgets: Array<{\n position: { x: number; y: number; width: number; height: number };\n title: string;\n type: string;\n /** WidgetConfidence enum — HIGH | MEDIUM | LOW. */\n confidence: string;\n /** Why this widget was proposed (GeneratedWidgetSpec.reasoning). */\n reasoning?: string | null;\n }>;\n }>;\n };\n}\n\n// ============================================================================\n// SHARED CONTROL STYLES\n//\n// Every action on this page used to repeat a ~12-line inline style object, and\n// none of them reserved a touch target. One base object keeps the cluster\n// consistent and guarantees `--size-controlHeight-md` (40px) on every button.\n//\n// Borders read `--color-border-default`, never `--color-border`: the latter has\n// no per-theme definition in this shell (only the frozen light `#D1D5DB` in the\n// app-shell `@theme`), so it kept a light-grey outline on every control in dark\n// mode. `--color-border-default` carries the same light value AND a dark one.\n// ============================================================================\n\nconst ACTION_BASE: CSSProperties = {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 'var(--space-iconGap)',\n minHeight: 'var(--size-controlHeight-md)',\n padding: '0 var(--space-formGap)',\n borderRadius: 'var(--radius-button)',\n fontSize: 'var(--font-size-body-sm)',\n fontWeight: 'var(--font-weight-medium)',\n lineHeight: 1.2,\n cursor: 'pointer',\n};\n\nconst NEUTRAL_ACTION: CSSProperties = {\n ...ACTION_BASE,\n border: '1px solid var(--color-border-default)',\n backgroundColor: 'transparent',\n color: 'var(--color-text-primary)',\n};\n\nconst PRIMARY_ACTION: CSSProperties = {\n ...ACTION_BASE,\n border: '1px solid transparent',\n backgroundColor: 'var(--color-action-primary-bg)',\n color: 'var(--color-action-primary-text)',\n};\n\nconst WARNING_ACTION: CSSProperties = {\n ...ACTION_BASE,\n border: '1px solid var(--color-status-warning-border)',\n backgroundColor: 'transparent',\n color: 'var(--color-status-warning-text)',\n};\n\nconst DANGER_ICON_ACTION: CSSProperties = {\n ...ACTION_BASE,\n minWidth: 'var(--size-controlHeight-md)',\n padding: '0 var(--space-controlGap)',\n border: '1px solid var(--color-border-default)',\n backgroundColor: 'transparent',\n color: 'var(--color-status-error-text)',\n};\n\n/** Label above a generation-option select. */\nconst OPTION_LABEL_STYLE: CSSProperties = {\n display: 'block',\n marginBottom: '2px',\n fontSize: 'var(--font-size-body-sm)',\n fontWeight: 'var(--font-weight-medium)',\n color: 'var(--color-text-secondary)',\n};\n\n/** The select itself — matches the prompt textarea's surface and border. */\nconst OPTION_CONTROL_STYLE: CSSProperties = {\n width: '100%',\n minHeight: 'var(--size-controlHeight-md)',\n padding: '0 var(--space-controlGap)',\n borderRadius: 'var(--radius-input)',\n border: '1px solid var(--color-border-default)',\n backgroundColor: 'var(--color-bg-canvas)',\n color: 'var(--color-text-primary)',\n fontSize: 'var(--font-size-body-sm)',\n};\n\nconst CHIP_BASE: CSSProperties = {\n display: 'inline-flex',\n alignItems: 'center',\n gap: 'var(--space-iconGap)',\n padding: '2px var(--space-controlGap)',\n borderRadius: 'var(--radius-pill)',\n fontSize: 'var(--font-size-body-sm)',\n fontWeight: 'var(--font-weight-medium)',\n border: '1px solid var(--color-border-subtle)',\n backgroundColor: 'var(--color-bg-sunken)',\n color: 'var(--color-text-secondary)',\n};\n\n// ============================================================================\n// STATUS HELPERS\n// ============================================================================\n\ntype StatusTone = 'success' | 'danger' | 'info' | 'neutral';\n\n/**\n * Status was previously drawn with raw Tailwind palette colours\n * (`text-green-500`, `text-red-500`, …), which ignore the theme entirely. Every\n * status now resolves to a semantic token so a FAILED card is unmistakably red\n * in light, dark and high-contrast themes.\n */\nfunction getStatusTone(status: string): StatusTone {\n switch (status) {\n case 'COMPLETED':\n return 'success';\n case 'FAILED':\n return 'danger';\n case 'PENDING':\n case 'PROCESSING':\n case 'GENERATING':\n return 'info';\n default:\n return 'neutral';\n }\n}\n\nconst STATUS_TONE_COLOR: Record<StatusTone, { text: string; bg: string; border: string }> = {\n success: {\n text: 'var(--color-status-success-text)',\n bg: 'var(--color-status-success-bgSubtle)',\n border: 'var(--color-status-success-border)',\n },\n danger: {\n text: 'var(--color-status-error-text)',\n bg: 'var(--color-status-error-bgSubtle)',\n border: 'var(--color-status-error-border)',\n },\n info: {\n text: 'var(--color-status-info-text)',\n bg: 'var(--color-status-info-bgSubtle)',\n border: 'var(--color-status-info-border)',\n },\n neutral: {\n text: 'var(--color-text-secondary)',\n bg: 'var(--color-bg-sunken)',\n border: 'var(--color-border-subtle)',\n },\n};\n\nfunction getStatusIcon(status: string) {\n const color = STATUS_TONE_COLOR[getStatusTone(status)].text;\n switch (status) {\n case 'COMPLETED':\n return <CheckCircle size={14} style={{ color }} aria-hidden=\"true\" />;\n case 'FAILED':\n case 'CANCELLED':\n return <XCircle size={14} style={{ color }} aria-hidden=\"true\" />;\n case 'PENDING':\n case 'PROCESSING':\n case 'GENERATING':\n return <Loader2 size={14} className=\"animate-spin\" style={{ color }} aria-hidden=\"true\" />;\n default:\n return <Clock size={14} style={{ color }} aria-hidden=\"true\" />;\n }\n}\n\nfunction getStatusLabel(status: string, t: (key: string, fallback: string) => string) {\n switch (status) {\n case 'COMPLETED':\n return t('bigconsole.insights.status.completed', 'Completed');\n case 'FAILED':\n return t('bigconsole.insights.status.failed', 'Failed');\n case 'CANCELLED':\n return t('bigconsole.insights.status.cancelled', 'Cancelled');\n case 'PENDING':\n return t('bigconsole.insights.status.pending', 'Pending');\n case 'PROCESSING':\n return t('bigconsole.insights.status.processing', 'Processing');\n case 'GENERATING':\n return t('bigconsole.insights.status.generating', 'Generating');\n default:\n return status;\n }\n}\n\n/** One tone-coded chip carrying icon + label, so status is legible at a glance. */\nconst StatusBadge: FC<{ status: string }> = ({ status }) => {\n const { t } = useI18n();\n const palette = STATUS_TONE_COLOR[getStatusTone(status)];\n return (\n <span\n data-status={status}\n style={{\n ...CHIP_BASE,\n border: `1px solid ${palette.border}`,\n backgroundColor: palette.bg,\n color: palette.text,\n }}\n >\n {getStatusIcon(status)}\n {getStatusLabel(status, t)}\n </span>\n );\n};\n\n/** Confidence is the one AI-quality signal on the card — colour it, don't hide it. */\nfunction confidenceChipStyle(confidence: number): CSSProperties {\n const tone: StatusTone = confidence >= 0.8 ? 'success' : confidence >= 0.5 ? 'neutral' : 'danger';\n const palette = STATUS_TONE_COLOR[tone];\n return {\n ...CHIP_BASE,\n border: `1px solid ${palette.border}`,\n backgroundColor: palette.bg,\n color: palette.text,\n };\n}\n\nfunction countWidgets(spec: NonNullable<PromptGeneration['generatedSpec']>): number {\n return spec.pages.reduce((acc, page) => acc + page.widgets.length, 0);\n}\n\n/**\n * Per-widget confidence (`GeneratedWidgetSpec.confidence`, WidgetConfidence).\n *\n * The overall score alone says a spec is 70% good without saying WHICH parts to\n * check — the widget-level grade is the one that tells you where to look before\n * accepting a generated board. The value is normalised because the enum is\n * declared SCREAMING_SNAKE but is carried through JSON columns; an unrecognised\n * value renders nothing rather than an unlabelled chip.\n */\ntype WidgetConfidenceLevel = 'HIGH' | 'MEDIUM' | 'LOW';\n\nfunction toConfidenceLevel(raw: string | undefined | null): WidgetConfidenceLevel | null {\n const upper = raw?.toUpperCase();\n return upper === 'HIGH' || upper === 'MEDIUM' || upper === 'LOW' ? upper : null;\n}\n\nconst WIDGET_CONFIDENCE_TONE: Record<WidgetConfidenceLevel, StatusTone> = {\n HIGH: 'success',\n MEDIUM: 'neutral',\n LOW: 'danger',\n};\n\ntype ProposalGridStyle = CSSProperties & { '--proposal-columns': number };\ntype ProposalWidgetStyle = CSSProperties & {\n '--proposal-column': number;\n '--proposal-width': number;\n '--proposal-row': number;\n '--proposal-height': number;\n};\n\nfunction proposalGridStyle(columns: number): ProposalGridStyle {\n return { '--proposal-columns': Math.max(1, Math.min(24, Math.trunc(columns))) };\n}\n\n// A model's proposal may contain out-of-grid positions. Keep the preview inside\n// its declared grid rather than creating implicit columns or inaccessible cards.\nfunction proposalPositionStyle(\n position: { x: number; y: number; width: number; height: number },\n columns: number\n): ProposalWidgetStyle {\n const gridColumns = Math.max(1, Math.min(24, Math.trunc(columns)));\n const column = Math.max(0, Math.min(gridColumns - 1, Math.trunc(position.x)));\n return {\n '--proposal-column': column + 1,\n '--proposal-width': Math.max(1, Math.min(gridColumns - column, Math.trunc(position.width))),\n '--proposal-row': Math.max(1, Math.min(100, Math.trunc(position.y) + 1)),\n '--proposal-height': Math.max(1, Math.min(24, Math.trunc(position.height))),\n };\n}\n\nfunction widgetConfidenceChipStyle(level: WidgetConfidenceLevel): CSSProperties {\n const palette = STATUS_TONE_COLOR[WIDGET_CONFIDENCE_TONE[level]];\n return {\n ...CHIP_BASE,\n padding: '0 var(--space-controlGap)',\n fontSize: 'var(--font-size-xs)',\n fontWeight: 'var(--font-weight-semibold)',\n letterSpacing: '0.02em',\n border: `1px solid ${palette.border}`,\n backgroundColor: palette.bg,\n color: palette.text,\n };\n}\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport const InsightsPage: FC = memo(function InsightsPage() {\n const { t } = useI18n();\n const navigate = useAppNavigate();\n const emitBigConsoleEvent = useBigConsoleAnalytics();\n const [promptText, setPromptText] = useState('');\n // Generation options. Every one of these is a real field on\n // GenerateDashboardFromPromptInput that the resolver validates and the\n // provider acts on — they were hard-coded to the schema defaults before, so\n // the caller could not influence the shape of what came back.\n const [styleType, setStyleType] = useState<DashboardStyleType>('MODERN');\n const [layoutType, setLayoutType] = useState<GeneratedLayoutType>('GRID');\n const [gridColumns, setGridColumns] = useState<number>(DEFAULT_GRID_COLUMNS);\n const [maxWidgets, setMaxWidgets] = useState<number>(DEFAULT_MAX_WIDGETS);\n const [isGenerating, setIsGenerating] = useState(false);\n const [mutationError, setMutationError] = useState<string | null>(null);\n // Track per-generation in-flight mutations independently so cancelling A\n // does not visually \"busy\" B's regenerate (and vice-versa).\n const [busyIds, setBusyIds] = useState<Set<string>>(() => new Set());\n const [previewGen, setPreviewGen] = useState<PromptGeneration | null>(null);\n const [refineGen, setRefineGen] = useState<PromptGeneration | null>(null);\n const [refineText, setRefineText] = useState('');\n\n const markBusy = useCallback((id: string) => {\n setBusyIds((prev) => new Set(prev).add(id));\n }, []);\n const clearBusy = useCallback((id: string) => {\n setBusyIds((prev) => {\n const next = new Set(prev);\n next.delete(id);\n return next;\n });\n }, []);\n\n // Fetch existing generations.\n const {\n data: generationsData,\n loading: generationsLoading,\n error: generationsError,\n refetch: refetchGenerations,\n startPolling,\n stopPolling,\n } = useQuery<ListPromptGenerationsData>(LIST_PROMPT_GENERATIONS, {\n variables: { first: 20 },\n fetchPolicy: 'cache-and-network',\n });\n\n // Whether any generation is still in a non-terminal state. Derived from the\n // latest query data so polling stops automatically once everything settles.\n const hasActiveGenerations =\n generationsData?.listPromptGenerations?.edges?.some((edge) => NON_TERMINAL_STATUSES.includes(edge.node.status)) ??\n false;\n\n // Fetch suggestions\n const {\n data: suggestionsData,\n error: suggestionsError,\n refetch: refetchSuggestions,\n } = useQuery<GetPromptSuggestionsData>(GET_PROMPT_SUGGESTIONS, {\n variables: { limit: 6 },\n });\n\n // Mutations\n const [generateDashboard] = useMutation<GenerateDashboardData>(GENERATE_DASHBOARD);\n const [createFromGeneration] = useMutation<CreateFromGenerationData>(CREATE_FROM_GENERATION);\n const [deleteGeneration] = useMutation(DELETE_GENERATION);\n const [cancelGeneration] = useMutation(CANCEL_GENERATION);\n const [regenerateDashboard] = useMutation(REGENERATE_DASHBOARD);\n const [refineGeneration] = useMutation(REFINE_GENERATION);\n\n const generations: PromptGeneration[] = generationsData?.listPromptGenerations?.edges?.map((edge) => edge.node) || [];\n const suggestions: PromptSuggestion[] = suggestionsData?.getPromptSuggestions || [];\n\n // Poll every 2s while a generation is non-terminal (or a generate request is\n // in flight) so cards advance (e.g. PROCESSING → COMPLETED) without a manual\n // refresh; polling is stopped once everything settles.\n useEffect(() => {\n if (hasActiveGenerations || isGenerating) {\n startPolling(2_000);\n } else {\n stopPolling();\n }\n return () => stopPolling();\n }, [hasActiveGenerations, isGenerating, startPolling, stopPolling]);\n\n // Close the Preview / Refine modals on Escape for keyboard accessibility.\n useEffect(() => {\n if (!previewGen && !refineGen) return;\n const onKey = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n setPreviewGen(null);\n setRefineGen(null);\n }\n };\n window.addEventListener('keydown', onKey);\n return () => window.removeEventListener('keydown', onKey);\n }, [previewGen, refineGen]);\n\n // Handlers\n const handleGenerate = useCallback(async () => {\n if (!promptText.trim() || isGenerating) return;\n if (promptText.length > 2000) {\n setMutationError(t('bigconsole.insights.error.promptTooLong', 'Prompt is too long (max 2000 characters).'));\n return;\n }\n setMutationError(null);\n setIsGenerating(true);\n try {\n emitBigConsoleEvent('bigconsole.ai.generate_clicked', { maxWidgets });\n const result = await generateDashboard({\n variables: {\n input: {\n prompt: promptText.trim(),\n styleType,\n layoutType,\n gridColumns,\n maxWidgets,\n },\n },\n });\n if (reportBigConsoleQuotaError(result, 'command')) {\n return;\n }\n const generationId = result.data?.generateDashboardFromPrompt?.id;\n if (generationId) {\n emitBigConsoleEvent('bigconsole.ai.dashboard_generated', {\n generationId,\n maxWidgets,\n });\n }\n setPromptText('');\n refetchGenerations();\n } catch (err) {\n if (reportBigConsoleQuotaError(err, 'command')) {\n return;\n }\n setMutationError(\n err instanceof Error\n ? err.message\n : t('bigconsole.insights.error.generateFailed', 'Failed to generate dashboard')\n );\n } finally {\n setIsGenerating(false);\n }\n }, [\n emitBigConsoleEvent,\n promptText,\n isGenerating,\n generateDashboard,\n refetchGenerations,\n styleType,\n layoutType,\n gridColumns,\n maxWidgets,\n t,\n ]);\n\n const handleCreateDashboard = useCallback(\n async (generationId: string) => {\n setMutationError(null);\n try {\n emitBigConsoleEvent('bigconsole.ai.create_dashboard_clicked', { generationId });\n const result = await createFromGeneration({\n variables: { input: { generationId } },\n });\n if (reportBigConsoleQuotaError(result, 'project')) {\n return;\n }\n const dashboardId = result.data?.createDashboardFromGeneration?.id;\n if (dashboardId) {\n emitBigConsoleEvent('bigconsole.ai.dashboard_created', {\n generationId,\n dashboardId,\n });\n navigate(`/dashboards/${dashboardId}`);\n }\n } catch (err) {\n if (reportBigConsoleQuotaError(err, 'project')) {\n return;\n }\n setMutationError(\n err instanceof Error ? err.message : t('bigconsole.insights.error.createFailed', 'Failed to create dashboard')\n );\n }\n },\n [createFromGeneration, emitBigConsoleEvent, navigate, t]\n );\n\n const handleDelete = useCallback(\n async (generationId: string) => {\n setMutationError(null);\n try {\n await deleteGeneration({ variables: { generationId } });\n if (isNative()) void nativeNotify('success');\n refetchGenerations();\n } catch (err) {\n setMutationError(\n err instanceof Error\n ? err.message\n : t('bigconsole.insights.error.deleteFailed', 'Failed to delete generation')\n );\n if (isNative()) void nativeNotify('error');\n }\n },\n [deleteGeneration, refetchGenerations, t]\n );\n\n // Cancel an in-flight (PENDING/PROCESSING/GENERATING) generation.\n const handleCancel = useCallback(\n async (generationId: string) => {\n setMutationError(null);\n markBusy(generationId);\n try {\n await cancelGeneration({ variables: { generationId } });\n refetchGenerations();\n } catch (err) {\n setMutationError(\n err instanceof Error\n ? err.message\n : t('bigconsole.insights.error.cancelFailed', 'Failed to cancel generation')\n );\n } finally {\n clearBusy(generationId);\n }\n },\n [cancelGeneration, refetchGenerations, t]\n );\n\n // Regenerate from an existing generation, reusing its original prompt.\n const handleRegenerate = useCallback(\n async (generationId: string) => {\n setMutationError(null);\n markBusy(generationId);\n try {\n const result = await regenerateDashboard({ variables: { input: { generationId } } });\n if (reportBigConsoleQuotaError(result, 'command')) {\n return;\n }\n refetchGenerations();\n } catch (err) {\n if (reportBigConsoleQuotaError(err, 'command')) {\n return;\n }\n setMutationError(\n err instanceof Error\n ? err.message\n : t('bigconsole.insights.error.regenerateFailed', 'Failed to regenerate dashboard')\n );\n } finally {\n clearBusy(generationId);\n }\n },\n [regenerateDashboard, refetchGenerations, t]\n );\n\n // Submit refinement instructions for a completed generation.\n const handleRefineSubmit = useCallback(async () => {\n if (!refineGen || !refineText.trim()) return;\n const generationId = refineGen.id;\n setMutationError(null);\n markBusy(generationId);\n let shouldClearRefine = false;\n try {\n const result = await refineGeneration({\n variables: { input: { generationId, refinementPrompt: refineText.trim() } },\n });\n if (reportBigConsoleQuotaError(result, 'command')) {\n // The user cannot retry quota failures without changing plan, so clear the completed refinement.\n shouldClearRefine = true;\n return;\n }\n shouldClearRefine = true;\n refetchGenerations();\n } catch (err) {\n if (reportBigConsoleQuotaError(err, 'command')) {\n // Keep the retry text only for non-quota errors; quota failures need a plan change first.\n shouldClearRefine = true;\n return;\n }\n setMutationError(\n err instanceof Error ? err.message : t('bigconsole.insights.error.refineFailed', 'Failed to refine generation')\n );\n } finally {\n if (shouldClearRefine) {\n setRefineGen(null);\n setRefineText('');\n }\n clearBusy(generationId);\n }\n }, [refineGen, refineText, refineGeneration, refetchGenerations, t]);\n\n const handleSuggestionClick = useCallback((prompt: string) => {\n setPromptText(prompt);\n }, []);\n\n const previewSpec = previewGen?.generatedSpec;\n\n return (\n // No `minHeight: 100vh`: the app shell already pads this content area, so a\n // full-viewport child guaranteed vertical overflow on every screen.\n <div data-tour=\"bigconsole-ai-insights\" className=\"min-w-0\" style={{ backgroundColor: 'var(--color-bg-canvas)' }}>\n {/* Page header strip — the same full-bleed band the other BigConsole\n pages use. The old rounded hero relied on `border-border-seam` +\n `bg-gloss-card`, neither of which is a registered utility in this\n shell, so it rendered with no seam and no gloss at all. */}\n <header className=\"relative overflow-hidden border-b border-[var(--color-border-seam)] bg-[image:var(--gradient-gloss-card)]\">\n <AuroraBackground intensity=\"subtle\" />\n <div style={{ padding: 'var(--space-pagePadding)' }}>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 'var(--space-formGap)',\n flexWrap: 'wrap',\n minWidth: 0,\n }}\n >\n <div\n style={{\n display: 'flex',\n height: 'var(--size-controlHeight-lg)',\n width: 'var(--size-controlHeight-lg)',\n flexShrink: 0,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 'var(--radius-card)',\n backgroundColor: 'var(--color-action-primary-bg)',\n }}\n >\n <Sparkles\n style={{\n height: 'var(--size-icon-lg)',\n width: 'var(--size-icon-lg)',\n color: 'var(--color-action-primary-text)',\n }}\n />\n </div>\n <div style={{ minWidth: 0 }}>\n {/* text-2xl matches the other page titles — `text-heading-h*`\n emits no CSS in this shell. */}\n <h1 className=\"m-0 text-2xl font-bold text-text-primary\">\n <GradientText>{t('bigconsole.insights.header.title', 'AI Insights')}</GradientText>\n </h1>\n <p className=\"m-0 text-sm text-text-secondary\">\n {t('bigconsole.insights.header.subtitle', 'Generate dashboards from natural language prompts')}\n </p>\n </div>\n </div>\n </div>\n </header>\n\n <div style={{ padding: 'var(--space-pagePadding)' }}>\n <PagePurpose className=\"mb-[var(--space-sectionGap)]\">\n Describe the dashboard you need in plain English and BigConsole proposes the pages, widgets and layout for it.\n Review the proposal, refine it in place, then create the real dashboard in one step — a generation is only a\n proposal until you accept it.\n </PagePurpose>\n\n <SectionStack>\n {/* Page-level failures were a red-bordered neutral card; they are now\n the same danger tone as every other status surface in BigConsole. */}\n {mutationError && (\n <Section\n headingLevel={2}\n tone=\"danger\"\n padding=\"compact\"\n title=\"That request did not go through\"\n description={mutationError}\n icon={<AlertCircle className=\"h-icon-sm w-icon-sm\" />}\n data-testid=\"insights-error\"\n actions={\n <button\n type=\"button\"\n onClick={() => setMutationError(null)}\n aria-label={t('bigconsole.insights.error.dismiss', 'Dismiss error')}\n className={SECTION_FOCUS_RING}\n style={NEUTRAL_ACTION}\n >\n Dismiss\n </button>\n }\n />\n )}\n\n {(generationsError || suggestionsError) && (\n <div role=\"alert\">\n <Section\n tone=\"danger\"\n padding=\"compact\"\n headingLevel={2}\n title={t('bigconsole.insights.error.loadFailed', 'AI Insights could not be loaded')}\n description={t(\n 'bigconsole.insights.error.loadFailedDescription',\n 'Your saved generations and suggestions may be unavailable. Retry the failed request.'\n )}\n data-testid=\"insights-load-error\"\n actions={\n <button\n type=\"button\"\n className={SECTION_FOCUS_RING}\n style={NEUTRAL_ACTION}\n onClick={() => {\n if (generationsError) void refetchGenerations().catch(() => undefined);\n if (suggestionsError) void refetchSuggestions().catch(() => undefined);\n }}\n >\n <RefreshCw size={14} aria-hidden=\"true\" /> {t('bigconsole.insights.error.retry', 'Retry')}\n </button>\n }\n />\n </div>\n )}\n\n {/* PRIMARY — the one block this route exists for. */}\n <Section\n id=\"insights-prompt\"\n emphasis=\"primary\"\n headingLevel={2}\n title=\"Describe your dashboard\"\n description=\"One or two sentences is enough — name the metrics, the breakdowns and who will read it.\"\n icon={<Sparkles className=\"h-icon-sm w-icon-sm\" />}\n data-testid=\"insights-prompt\"\n >\n <div style={{ display: 'flex', flexDirection: 'column', gap: 'var(--space-controlGap)' }}>\n <label\n htmlFor=\"prompt-input\"\n style={{\n display: 'block',\n fontSize: 'var(--font-size-body-sm)',\n fontWeight: 'var(--font-weight-medium)',\n color: 'var(--color-text-primary)',\n }}\n >\n {t('bigconsole.insights.prompt.label', 'Your prompt')}\n </label>\n <textarea\n id=\"prompt-input\"\n value={promptText}\n onChange={(e) => setPromptText(e.target.value)}\n placeholder={t(\n 'bigconsole.insights.prompt.placeholder',\n 'e.g., Create a sales dashboard showing revenue trends, top products, and regional performance'\n )}\n rows={3}\n maxLength={2000}\n // The page's most important control used to set `outline: none`\n // with no replacement, so it had no keyboard focus indicator.\n className={SECTION_FOCUS_RING}\n style={{\n width: '100%',\n maxWidth: '100%',\n padding: 'var(--space-controlGap) var(--space-formGap)',\n borderRadius: 'var(--radius-input)',\n border: '1px solid var(--color-border-default)',\n backgroundColor: 'var(--color-bg-canvas)',\n color: 'var(--color-text-primary)',\n fontSize: 'var(--font-size-body-md)',\n resize: 'vertical',\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n void handleGenerate();\n }\n }}\n />\n\n {/* Generation options. Style, layout, column count and widget cap\n are all fields on GenerateDashboardFromPromptInput that the\n service honours; they were pinned to the defaults, so the only\n lever the caller had was the prose of the prompt itself. */}\n <div\n role=\"group\"\n aria-label={t('bigconsole.insights.prompt.optionsLabel', 'Generation options')}\n data-testid=\"insights-generation-options\"\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(min(150px, 100%), 1fr))',\n gap: 'var(--space-controlGap)',\n }}\n >\n <div>\n <label htmlFor=\"prompt-style\" style={OPTION_LABEL_STYLE}>\n {t('bigconsole.insights.prompt.style', 'Style')}\n </label>\n <select\n id=\"prompt-style\"\n value={styleType}\n onChange={(e) => setStyleType(e.target.value as DashboardStyleType)}\n className={SECTION_FOCUS_RING}\n style={OPTION_CONTROL_STYLE}\n >\n {STYLE_TYPE_OPTIONS.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n </div>\n\n <div>\n <label htmlFor=\"prompt-layout\" style={OPTION_LABEL_STYLE}>\n {t('bigconsole.insights.prompt.layout', 'Layout')}\n </label>\n <select\n id=\"prompt-layout\"\n value={layoutType}\n onChange={(e) => setLayoutType(e.target.value as GeneratedLayoutType)}\n className={SECTION_FOCUS_RING}\n style={OPTION_CONTROL_STYLE}\n >\n {LAYOUT_TYPE_OPTIONS.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n </div>\n\n <div>\n <label htmlFor=\"prompt-columns\" style={OPTION_LABEL_STYLE}>\n {t('bigconsole.insights.prompt.columns', 'Columns')}\n </label>\n <select\n id=\"prompt-columns\"\n value={gridColumns}\n onChange={(e) => setGridColumns(Number(e.target.value))}\n className={SECTION_FOCUS_RING}\n style={OPTION_CONTROL_STYLE}\n >\n {GRID_COLUMN_OPTIONS.map((option) => (\n <option key={option} value={option}>\n {option}\n </option>\n ))}\n </select>\n </div>\n\n <div>\n <label htmlFor=\"prompt-max-widgets\" style={OPTION_LABEL_STYLE}>\n {t('bigconsole.insights.prompt.maxWidgets', 'Max widgets')}\n </label>\n <select\n id=\"prompt-max-widgets\"\n value={maxWidgets}\n onChange={(e) => setMaxWidgets(Number(e.target.value))}\n className={SECTION_FOCUS_RING}\n style={OPTION_CONTROL_STYLE}\n >\n {MAX_WIDGET_OPTIONS.map((option) => (\n <option key={option} value={option}>\n {option}\n </option>\n ))}\n </select>\n </div>\n </div>\n\n {/* A committed footer: the CTA now sits below a rule instead of\n floating as one more sibling of the label and the input. */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n gap: 'var(--space-controlGap)',\n borderTop: '1px solid var(--color-border-subtle)',\n paddingTop: 'var(--space-controlGap)',\n }}\n >\n <span\n style={{\n flex: '1 1 12rem',\n minWidth: 0,\n fontSize: 'var(--font-size-body-sm)',\n color: 'var(--color-text-muted)',\n }}\n >\n {t('bigconsole.insights.prompt.hint', 'Press Ctrl+Enter to generate')} · {promptText.length}/2000\n </span>\n <button\n type=\"button\"\n onClick={handleGenerate}\n disabled={!promptText.trim() || isGenerating}\n className={SECTION_FOCUS_RING}\n style={{\n ...PRIMARY_ACTION,\n // Keeps the CTA anchored to the right edge even after the\n // hint pushes it onto its own line.\n marginLeft: 'auto',\n cursor: !promptText.trim() || isGenerating ? 'not-allowed' : 'pointer',\n opacity: !promptText.trim() || isGenerating ? 0.5 : 1,\n }}\n >\n {isGenerating ? (\n <Loader2 size={16} className=\"animate-spin\" aria-hidden=\"true\" />\n ) : (\n <Sparkles size={16} aria-hidden=\"true\" />\n )}\n {t('bigconsole.insights.prompt.generateButton', 'Generate dashboard')}\n </button>\n </div>\n </div>\n </Section>\n\n {/* MUTED — optional shortcuts. Recessed so a prompt template can never\n be mistaken for a finished generation. */}\n {suggestions.length > 0 && (\n <Section\n emphasis=\"muted\"\n headingLevel={2}\n title={t('bigconsole.insights.suggestions.heading', 'Starting points')}\n description=\"Pick one to drop it into the prompt box above, then edit it before generating.\"\n icon={<Lightbulb className=\"h-icon-sm w-icon-sm\" />}\n data-testid=\"insights-suggestions\"\n >\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fill, minmax(min(260px, 100%), 1fr))',\n gap: 'var(--space-controlGap)',\n }}\n >\n {suggestions.map((s) => (\n <button\n key={s.id}\n type=\"button\"\n onClick={() => handleSuggestionClick(s.prompt)}\n className={SECTION_FOCUS_RING}\n style={{\n textAlign: 'left',\n minWidth: 0,\n minHeight: 'var(--size-controlHeight-lg)',\n padding: 'var(--space-controlGap)',\n borderRadius: 'var(--radius-card)',\n border: '1px solid var(--color-border-subtle)',\n backgroundColor: 'var(--color-bg-surface)',\n cursor: 'pointer',\n }}\n >\n <span\n style={{\n display: 'block',\n fontWeight: 'var(--font-weight-medium)',\n fontSize: 'var(--font-size-body-sm)',\n color: 'var(--color-text-primary)',\n marginBottom: 'var(--space-iconGap)',\n }}\n >\n {s.title}\n </span>\n <span\n style={{\n display: 'block',\n fontSize: 'var(--font-size-body-sm)',\n color: 'var(--color-text-secondary)',\n lineHeight: 1.4,\n }}\n >\n {s.exampleDescription || s.prompt}\n </span>\n {s.tags.length > 0 && (\n <span\n style={{\n display: 'flex',\n gap: 'var(--space-iconGap)',\n marginTop: 'var(--space-controlGap)',\n flexWrap: 'wrap',\n }}\n >\n {s.tags.slice(0, 3).map((tag) => (\n <span key={tag} style={CHIP_BASE}>\n {tag}\n </span>\n ))}\n </span>\n )}\n </button>\n ))}\n </div>\n </Section>\n )}\n\n {/* BARE region — the heading and count give the results a boundary;\n the cards inside carry the surface. */}\n <Section\n emphasis=\"bare\"\n padding=\"none\"\n headingLevel={2}\n title={t('bigconsole.insights.generations.heading', 'Recent generations')}\n description=\"Newest first. A generation stays a proposal until you create the dashboard from it.\"\n icon={<History className=\"h-icon-sm w-icon-sm\" />}\n meta={\n generations.length > 0 ? (\n // A bare digit next to the heading is unreadable out of context\n // for a screen reader, so the chip carries its own noun.\n <span style={CHIP_BASE}>\n {generations.length} generation{generations.length === 1 ? '' : 's'}\n </span>\n ) : undefined\n }\n data-testid=\"insights-generations\"\n >\n {generationsLoading && generations.length === 0 ? (\n <Section\n emphasis=\"muted\"\n headingLevel={3}\n aria-label=\"Loading generations\"\n className=\"min-h-[10rem]\"\n data-testid=\"insights-generations-loading\"\n >\n <div\n style={{\n display: 'flex',\n minHeight: '8rem',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 'var(--space-controlGap)',\n color: 'var(--color-text-muted)',\n }}\n >\n <Loader2 size={24} className=\"animate-spin\" aria-hidden=\"true\" />\n <p style={{ fontSize: 'var(--font-size-body-sm)' }}>\n {t('bigconsole.insights.generations.loading', 'Loading generations…')}\n </p>\n </div>\n </Section>\n ) : generations.length === 0 && !isGenerating && !generationsError ? (\n // `border-border-seam` emitted no CSS — the arbitrary form is\n // theme-aware and actually draws the seam.\n <GlassCard treatment=\"insight\" className=\"border-[var(--color-border-seam)]\">\n <IllustratedEmptyState\n illustration=\"onboarding\"\n title={t('bigconsole.insights.generations.emptyTitle', 'No generations yet')}\n description={t(\n 'bigconsole.insights.generations.emptyDescription',\n 'Describe a dashboard above to get started'\n )}\n />\n </GlassCard>\n ) : (\n <div className=\"flex flex-col gap-list-gap\">\n {/* Transient placeholder while the generate request is in flight\n and the backend has not yet returned the new PENDING\n generation. Toned `info` so it is not mistaken for a\n persisted generation. */}\n {isGenerating && !hasActiveGenerations && (\n <Section\n emphasis=\"muted\"\n tone=\"info\"\n padding=\"compact\"\n headingLevel={3}\n title=\"Sending your prompt…\"\n description=\"The new generation appears here as soon as the backend accepts it.\"\n icon={<Loader2 className=\"h-icon-sm w-icon-sm animate-spin\" />}\n data-testid=\"insights-generation-pending\"\n />\n )}\n {generations.map((gen) => {\n const spec = gen.generatedSpec;\n const busy = busyIds.has(gen.id);\n const inFlight = NON_TERMINAL_STATUSES.includes(gen.status);\n return (\n <Section\n key={gen.id}\n emphasis=\"standard\"\n padding=\"compact\"\n headingLevel={3}\n title={\n spec?.name ||\n (inFlight\n ? t('bigconsole.insights.generations.generating', 'Generating…')\n : 'Untitled generation')\n }\n meta={<StatusBadge status={gen.status} />}\n description={gen.prompt.length > 160 ? `${gen.prompt.slice(0, 160)}…` : gen.prompt}\n data-testid=\"insights-generation-card\"\n bodyClassName=\"flex flex-col gap-control-gap\"\n >\n {/* What the AI produced, separated from what was asked. */}\n {spec && (\n <div style={{ display: 'flex', flexWrap: 'wrap', gap: 'var(--space-iconGap)' }}>\n <span style={CHIP_BASE}>\n {countWidgets(spec)} widget{countWidgets(spec) === 1 ? '' : 's'}\n </span>\n <span style={CHIP_BASE}>\n {spec.pages.length} page{spec.pages.length === 1 ? '' : 's'}\n </span>\n <span style={confidenceChipStyle(spec.overallConfidence)}>\n {Math.round(spec.overallConfidence * 100)}% confidence\n </span>\n </div>\n )}\n\n {gen.errorMessage && (\n <Section\n headingLevel={4}\n tone=\"danger\"\n padding=\"compact\"\n title=\"Generation failed\"\n description={gen.errorMessage}\n icon={<AlertCircle className=\"h-icon-sm w-icon-sm\" />}\n />\n )}\n\n {/* Action cluster: reversible actions on the left, the\n decisive and destructive ones grouped on the right. */}\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: 'var(--space-controlGap)',\n borderTop: '1px solid var(--color-border-subtle)',\n paddingTop: 'var(--space-controlGap)',\n }}\n >\n {inFlight && (\n <button\n type=\"button\"\n onClick={() => {\n nativeImpact('medium');\n void handleCancel(gen.id);\n }}\n disabled={busy}\n title={t('bigconsole.insights.actions.cancelTitle', 'Cancel generation')}\n className={SECTION_FOCUS_RING}\n style={{ ...WARNING_ACTION, cursor: busy ? 'wait' : 'pointer' }}\n >\n <Ban size={14} aria-hidden=\"true\" /> {t('bigconsole.insights.actions.cancel', 'Cancel')}\n </button>\n )}\n {gen.status === 'COMPLETED' && spec && (\n <button\n type=\"button\"\n onClick={() => setPreviewGen(gen)}\n title={t('bigconsole.insights.actions.previewTitle', 'Preview proposed layout')}\n className={SECTION_FOCUS_RING}\n style={NEUTRAL_ACTION}\n >\n <Eye size={14} aria-hidden=\"true\" /> {t('bigconsole.insights.actions.preview', 'Preview')}\n </button>\n )}\n {gen.status === 'COMPLETED' && spec && (\n <button\n type=\"button\"\n onClick={() => {\n setRefineGen(gen);\n setRefineText('');\n }}\n title={t('bigconsole.insights.actions.refineTitle', 'Refine with instructions')}\n className={SECTION_FOCUS_RING}\n style={NEUTRAL_ACTION}\n >\n <Wand2 size={14} aria-hidden=\"true\" /> {t('bigconsole.insights.actions.refine', 'Refine')}\n </button>\n )}\n {(gen.status === 'COMPLETED' || gen.status === 'FAILED' || gen.status === 'CANCELLED') && (\n <button\n type=\"button\"\n onClick={() => {\n nativeImpact('medium');\n void handleRegenerate(gen.id);\n }}\n disabled={busy}\n title={t('bigconsole.insights.actions.regenerateTitle', 'Regenerate with the same prompt')}\n className={SECTION_FOCUS_RING}\n style={{ ...NEUTRAL_ACTION, cursor: busy ? 'wait' : 'pointer' }}\n >\n <RefreshCw size={14} className={busy ? 'animate-spin' : ''} aria-hidden=\"true\" />{' '}\n {t('bigconsole.insights.actions.regenerate', 'Regenerate')}\n </button>\n )}\n\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: 'var(--space-controlGap)',\n marginLeft: 'auto',\n }}\n >\n {gen.status === 'COMPLETED' && !gen.dashboardId && (\n <button\n type=\"button\"\n onClick={() => handleCreateDashboard(gen.id)}\n className={SECTION_FOCUS_RING}\n style={PRIMARY_ACTION}\n >\n {t('bigconsole.insights.actions.create', 'Create dashboard')}{' '}\n <ArrowRight size={14} aria-hidden=\"true\" />\n </button>\n )}\n {gen.dashboardId && (\n <button\n type=\"button\"\n onClick={() => navigate(`/dashboards/${gen.dashboardId ?? ''}`)}\n className={SECTION_FOCUS_RING}\n style={NEUTRAL_ACTION}\n >\n {t('bigconsole.insights.actions.viewDashboard', 'View dashboard')}{' '}\n <ArrowRight size={14} aria-hidden=\"true\" />\n </button>\n )}\n <button\n type=\"button\"\n onClick={() => {\n nativeImpact('medium');\n void handleDelete(gen.id);\n }}\n title={t('bigconsole.insights.actions.deleteTitle', 'Delete generation')}\n aria-label={t('bigconsole.insights.actions.deleteTitle', 'Delete generation')}\n className={SECTION_FOCUS_RING}\n style={DANGER_ICON_ACTION}\n >\n <Trash2 size={14} aria-hidden=\"true\" />\n </button>\n </div>\n </div>\n </Section>\n );\n })}\n </div>\n )}\n </Section>\n </SectionStack>\n </div>\n\n {/* Preview modal — shows the AI-proposed page/widget structure before creation */}\n {previewGen && previewSpec && (\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={t('bigconsole.insights.preview.ariaLabel', 'Generation preview')}\n onClick={() => setPreviewGen(null)}\n style={{\n position: 'fixed',\n inset: 0,\n zIndex: 1000,\n backgroundColor: 'var(--color-overlay-scrim)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: 'var(--space-pagePadding)',\n }}\n >\n <div\n onClick={(e) => e.stopPropagation()}\n style={{\n // Header and footer stay put while only the page list scrolls, so\n // the dashboard name and the accept action never scroll away.\n display: 'flex',\n flexDirection: 'column',\n minHeight: 0,\n width: 'min(640px, 100%)',\n maxHeight: 'calc(100dvh - 2 * var(--space-pagePadding))',\n backgroundColor: 'var(--color-bg-surface)',\n borderRadius: 'var(--radius-card)',\n border: '1px solid var(--color-border-default)',\n boxShadow: 'var(--shadow-elevation-3)',\n }}\n >\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n gap: 'var(--space-controlGap)',\n padding: 'var(--space-cardPadding)',\n borderBottom: '1px solid var(--color-border-subtle)',\n }}\n >\n <div style={{ minWidth: 0 }}>\n <h2\n style={{\n fontSize: 'var(--font-size-heading-h4)',\n fontWeight: 'var(--font-weight-semibold)',\n color: 'var(--color-text-primary)',\n }}\n >\n {previewSpec.name}\n </h2>\n {previewSpec.description && (\n <p\n style={{\n fontSize: 'var(--font-size-body-sm)',\n color: 'var(--color-text-secondary)',\n marginTop: 2,\n }}\n >\n {previewSpec.description}\n </p>\n )}\n </div>\n <button\n type=\"button\"\n onClick={() => setPreviewGen(null)}\n aria-label={t('bigconsole.insights.preview.close', 'Close preview')}\n className={SECTION_FOCUS_RING}\n style={{ ...DANGER_ICON_ACTION, color: 'var(--color-text-muted)' }}\n >\n <X size={18} aria-hidden=\"true\" />\n </button>\n </div>\n\n <div\n style={{\n flex: '1 1 auto',\n minHeight: 0,\n overflowY: 'auto',\n padding: 'var(--space-cardPadding)',\n display: 'flex',\n flexDirection: 'column',\n gap: 'var(--space-controlGap)',\n }}\n >\n {/* The decision-making numbers were 11px muted text; they are now\n the first thing in the body, at readable size. */}\n <div style={{ display: 'flex', flexWrap: 'wrap', gap: 'var(--space-iconGap)' }}>\n <span style={CHIP_BASE}>\n {countWidgets(previewSpec)} widget{countWidgets(previewSpec) === 1 ? '' : 's'}\n </span>\n <span style={CHIP_BASE}>\n {previewSpec.pages.length} page{previewSpec.pages.length === 1 ? '' : 's'}\n </span>\n <span style={confidenceChipStyle(previewSpec.overallConfidence)}>\n {Math.round(previewSpec.overallConfidence * 100)}% confidence\n </span>\n </div>\n\n {/* Why the model produced this shape. Reviewing a generated board\n without the reasoning means accepting it on the score alone. */}\n {previewSpec.reasoning && (\n <details data-testid=\"preview-reasoning\">\n <summary\n className={SECTION_FOCUS_RING}\n style={{\n cursor: 'pointer',\n fontSize: 'var(--font-size-body-sm)',\n fontWeight: 'var(--font-weight-medium)',\n color: 'var(--color-text-secondary)',\n borderRadius: 'var(--radius-button)',\n }}\n >\n {t('bigconsole.insights.preview.reasoningToggle', 'Why these widgets?')}\n </summary>\n <p\n style={{\n marginTop: 'var(--space-controlGap)',\n fontSize: 'var(--font-size-body-sm)',\n lineHeight: 'var(--font-lineHeight-normal)',\n color: 'var(--color-text-secondary)',\n }}\n >\n {previewSpec.reasoning}\n </p>\n </details>\n )}\n\n {/* One labelled block per page. Widgets are rows, not chips: each\n now carries its own confidence grade and the model's reason for\n proposing it, which no chip row can hold. */}\n {previewSpec.pages.map((page, pi) => (\n <Section\n key={pi}\n emphasis=\"muted\"\n padding=\"compact\"\n headingLevel={3}\n title={page.name}\n meta={\n <span style={CHIP_BASE}>\n {page.widgets.length} widget{page.widgets.length === 1 ? '' : 's'}\n </span>\n }\n >\n <p\n style={{\n fontSize: 'var(--font-size-body-sm)',\n color: 'var(--color-text-secondary)',\n marginBottom: 'var(--space-controlGap)',\n }}\n >\n {t('bigconsole.insights.preview.proposedLayout', 'Proposed layout')} · {page.gridColumns}{' '}\n {t('bigconsole.insights.preview.columns', 'columns')} ·{' '}\n {page.layout.toLowerCase().replaceAll('_', ' ')}\n </p>\n <div className=\"insights-proposal-grid\" style={proposalGridStyle(page.gridColumns)}>\n {page.widgets.map((w, wi) => {\n const level = toConfidenceLevel(w.confidence);\n return (\n <div\n key={wi}\n className=\"insights-proposal-widget\"\n style={{\n ...proposalPositionStyle(w.position, page.gridColumns),\n display: 'flex',\n flexDirection: 'column',\n gap: '2px',\n padding: 'var(--space-controlGap)',\n borderRadius: 'var(--radius-input)',\n backgroundColor: 'var(--color-bg-surface)',\n border: '1px solid var(--color-border-subtle)',\n }}\n >\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: 'var(--space-iconGap)',\n }}\n >\n <span\n style={{\n fontSize: 'var(--font-size-body-sm)',\n fontWeight: 'var(--font-weight-medium)',\n color: 'var(--color-text-primary)',\n minWidth: 0,\n }}\n >\n {w.title}\n </span>\n <span\n style={{ fontSize: 'var(--font-size-xs)', color: 'var(--color-text-muted)' }}\n data-testid=\"preview-widget-type\"\n >\n {w.type}\n </span>\n {level && (\n <span\n style={{ ...widgetConfidenceChipStyle(level), marginLeft: 'auto' }}\n data-testid=\"preview-widget-confidence\"\n >\n {level}\n </span>\n )}\n </div>\n {w.reasoning && (\n <p\n style={{\n margin: 0,\n fontSize: 'var(--font-size-xs)',\n lineHeight: 'var(--font-lineHeight-normal)',\n color: 'var(--color-text-muted)',\n }}\n >\n {w.reasoning}\n </p>\n )}\n </div>\n );\n })}\n </div>\n </Section>\n ))}\n </div>\n\n {/* Review → accept in one place: previously you had to close the\n modal and find the card again to create the dashboard. */}\n <div\n style={{\n display: 'flex',\n justifyContent: 'flex-end',\n flexWrap: 'wrap',\n gap: 'var(--space-controlGap)',\n padding: 'var(--space-cardPadding)',\n borderTop: '1px solid var(--color-border-subtle)',\n }}\n >\n <button\n type=\"button\"\n onClick={() => setPreviewGen(null)}\n className={SECTION_FOCUS_RING}\n style={NEUTRAL_ACTION}\n >\n Close\n </button>\n {/* Review → refine without losing the review: the Refine control\n only existed on the card behind this modal, so a reviewer who\n disagreed with the spec had to close and hunt for it. */}\n {previewGen.status === 'COMPLETED' && previewSpec && (\n <button\n type=\"button\"\n onClick={() => {\n const generation = previewGen;\n setPreviewGen(null);\n setRefineGen(generation);\n setRefineText('');\n }}\n title={t('bigconsole.insights.actions.refineTitle', 'Refine with instructions')}\n className={SECTION_FOCUS_RING}\n style={NEUTRAL_ACTION}\n >\n <Wand2 size={14} aria-hidden=\"true\" /> {t('bigconsole.insights.actions.refine', 'Refine')}\n </button>\n )}\n {previewGen.status === 'COMPLETED' && !previewGen.dashboardId && (\n <button\n type=\"button\"\n onClick={() => {\n const generationId = previewGen.id;\n setPreviewGen(null);\n void handleCreateDashboard(generationId);\n }}\n className={SECTION_FOCUS_RING}\n style={PRIMARY_ACTION}\n >\n {t('bigconsole.insights.actions.create', 'Create dashboard')}{' '}\n <ArrowRight size={14} aria-hidden=\"true\" />\n </button>\n )}\n </div>\n </div>\n </div>\n )}\n\n {/* Refine modal — collects refinement instructions for refineGeneratedDashboard */}\n {refineGen && (\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={t('bigconsole.insights.refine.ariaLabel', 'Refine generation')}\n onClick={() => setRefineGen(null)}\n style={{\n position: 'fixed',\n inset: 0,\n zIndex: 1000,\n backgroundColor: 'var(--color-overlay-scrim)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: 'var(--space-pagePadding)',\n }}\n >\n <div\n onClick={(e) => e.stopPropagation()}\n style={{\n // The refine dialog had no height cap and no scroll: with the\n // mobile keyboard open the Apply button was unreachable.\n display: 'flex',\n flexDirection: 'column',\n minHeight: 0,\n width: 'min(520px, 100%)',\n maxHeight: 'calc(100dvh - 2 * var(--space-pagePadding))',\n backgroundColor: 'var(--color-bg-surface)',\n borderRadius: 'var(--radius-card)',\n border: '1px solid var(--color-border-default)',\n boxShadow: 'var(--shadow-elevation-3)',\n }}\n >\n <div\n style={{\n padding: 'var(--space-cardPadding)',\n borderBottom: '1px solid var(--color-border-subtle)',\n }}\n >\n <h2\n style={{\n fontSize: 'var(--font-size-heading-h4)',\n fontWeight: 'var(--font-weight-semibold)',\n color: 'var(--color-text-primary)',\n }}\n >\n {t('bigconsole.insights.refine.heading', 'Refine dashboard')}\n </h2>\n <p\n style={{\n fontSize: 'var(--font-size-body-sm)',\n color: 'var(--color-text-secondary)',\n marginTop: 2,\n }}\n >\n {t(\n 'bigconsole.insights.refine.subtitle',\n 'Describe what to change — the AI keeps the existing spec and applies your instructions.'\n )}\n </p>\n </div>\n\n <div\n style={{\n flex: '1 1 auto',\n minHeight: 0,\n overflowY: 'auto',\n padding: 'var(--space-cardPadding)',\n display: 'flex',\n flexDirection: 'column',\n gap: 'var(--space-controlGap)',\n }}\n >\n {/* You were being asked to describe changes to something you could\n not see — the current proposal is now echoed above the box. */}\n <Section\n emphasis=\"muted\"\n padding=\"compact\"\n headingLevel={3}\n title={refineGen.generatedSpec?.name || 'Current proposal'}\n description={refineGen.prompt.length > 240 ? `${refineGen.prompt.slice(0, 240)}…` : refineGen.prompt}\n icon={<Sparkles className=\"h-icon-sm w-icon-sm\" />}\n />\n\n <div style={{ display: 'flex', flexDirection: 'column', gap: 'var(--space-controlGap)' }}>\n <label\n htmlFor=\"refine-input\"\n style={{\n display: 'block',\n fontSize: 'var(--font-size-body-sm)',\n fontWeight: 'var(--font-weight-medium)',\n color: 'var(--color-text-primary)',\n }}\n >\n What should change?\n </label>\n <textarea\n id=\"refine-input\"\n value={refineText}\n onChange={(e) => setRefineText(e.target.value)}\n maxLength={2000}\n rows={4}\n placeholder={t(\n 'bigconsole.insights.refine.placeholder',\n 'e.g., Add a revenue-by-region map and remove the duplicate KPI cards'\n )}\n className={SECTION_FOCUS_RING}\n style={{\n width: '100%',\n maxWidth: '100%',\n resize: 'vertical',\n // Matches the composer above — the two prompt inputs used\n // two different radii and two different padding scales.\n padding: 'var(--space-controlGap) var(--space-formGap)',\n borderRadius: 'var(--radius-input)',\n border: '1px solid var(--color-border-default)',\n backgroundColor: 'var(--color-bg-canvas)',\n color: 'var(--color-text-primary)',\n fontSize: 'var(--font-size-body-md)',\n }}\n />\n </div>\n </div>\n\n <div\n style={{\n display: 'flex',\n justifyContent: 'flex-end',\n flexWrap: 'wrap',\n gap: 'var(--space-controlGap)',\n padding: 'var(--space-cardPadding)',\n borderTop: '1px solid var(--color-border-subtle)',\n }}\n >\n <button\n type=\"button\"\n onClick={() => setRefineGen(null)}\n className={SECTION_FOCUS_RING}\n style={NEUTRAL_ACTION}\n >\n {t('bigconsole.insights.actions.cancel', 'Cancel')}\n </button>\n <button\n type=\"button\"\n onClick={() => void handleRefineSubmit()}\n disabled={!refineText.trim() || busyIds.has(refineGen.id)}\n className={SECTION_FOCUS_RING}\n style={{\n ...PRIMARY_ACTION,\n cursor: !refineText.trim() || busyIds.has(refineGen.id) ? 'not-allowed' : 'pointer',\n opacity: !refineText.trim() ? 0.6 : 1,\n }}\n >\n {busyIds.has(refineGen.id) ? (\n <Loader2 size={14} className=\"animate-spin\" aria-hidden=\"true\" />\n ) : (\n <Wand2 size={14} aria-hidden=\"true\" />\n )}\n {t('bigconsole.insights.refine.apply', 'Apply refinement')}\n </button>\n </div>\n </div>\n </div>\n )}\n </div>\n );\n});\n\nexport default InsightsPage;\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OverviewPage.d.ts","sourceRoot":"","sources":["../../../src/bigconsole/pages/OverviewPage.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,KAAK,EAAE,EAA2D,MAAM,OAAO,CAAC;AA2BzF,eAAO,MAAM,YAAY,EAAE,EA4UzB,CAAC;AAEH,eAAe,YAAY,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OverviewPage.js","names":[],"sources":["../../../src/bigconsole/pages/OverviewPage.tsx"],"sourcesContent":["/**\n * OverviewPage\n *\n * BigConsole home (`/bigconsole`): the dashboards and data at a glance, plus a\n * step-by-step guide to building a complete dashboard. Mirrors the VibeControls\n * product Overview — aurora hero, purpose line, guidance, KPI tiles and a single\n * emphasis panel — while showing only data the backend reports accurately.\n *\n * Every section is gated on its own read permission and loaded by its own\n * operation (see `useOverviewData`), so a caller missing one permission still\n * gets the rest of the page.\n */\n\nimport { type FC, memo, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { usePermissions } from '@burdenoff/fe-libs/shared/providers/shell';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { PageHeader } from '@burdenoff/fe-libs/chrome';\nimport { MotionItem, MotionList, MotionPage } from '@burdenoff/fe-libs/shared/motion';\nimport { AuroraBackground, Button, GradientText, PagePurpose } from '@burdenoff/fe-libs/ui';\nimport { Workflow, Database, FileCode2, LayoutDashboard, Plus, RefreshCw, Sparkles } from 'lucide-react';\nimport { BIGCONSOLE_PERMISSIONS } from '../../constants/permissions';\nimport { useTr } from '../../shared/hooks/useTr';\nimport { useAppNavigate } from '../contexts';\nimport {\n CREATE_DASHBOARD_PATH,\n DashboardGuide,\n DataHealthCard,\n OverviewQuickActions,\n OverviewStatCard,\n RecentDashboardsPanel,\n buildAiAlternative,\n buildDashboardGuideSteps,\n formatRelativeTime,\n resolveGuideDefaultExpanded,\n summarizeDashboards,\n summarizeDataSinks,\n useOverviewData,\n type OverviewQuickAction,\n} from '../components/overview';\n\nexport const OverviewPage: FC = memo(function OverviewPage() {\n const navigate = useAppNavigate();\n const tr = useTr();\n const { locale } = useI18n();\n const { hasPermission } = usePermissions();\n const { permissionsLoading, dashboards, dataSinks, parsers, pipelines, refetchAll } = useOverviewData();\n\n const handleNavigate = useCallback((path: string) => navigate(path), [navigate]);\n\n // ---------------------------------------------------------------------------\n // Derived data\n // ---------------------------------------------------------------------------\n\n const dashboardSummary = useMemo(() => summarizeDashboards(dashboards.data), [dashboards.data]);\n const dataSinkSummary = useMemo(() => summarizeDataSinks(dataSinks.data), [dataSinks.data]);\n\n const formatUpdated = useCallback((iso: string) => formatRelativeTime(iso, new Date(), tr, locale), [tr, locale]);\n\n const can = useCallback(\n (permission: string) => !permissionsLoading && hasPermission(permission),\n [permissionsLoading, hasPermission]\n );\n\n const guideSteps = useMemo(\n () =>\n buildDashboardGuideSteps({\n tr,\n latestDashboard: dashboardSummary.latest,\n permissions: {\n canCreateDataSink: can(BIGCONSOLE_PERMISSIONS.DATASINK_CREATE),\n canReadDataSinks: can(BIGCONSOLE_PERMISSIONS.DATASINK_READ),\n canCreateWorkflow: can(BIGCONSOLE_PERMISSIONS.WORKFLOW_CREATE),\n canCreateParser: can(BIGCONSOLE_PERMISSIONS.PARSER_CREATE),\n canCreateDashboard: can(BIGCONSOLE_PERMISSIONS.DASHBOARD_CREATE),\n canReadDashboards: can(BIGCONSOLE_PERMISSIONS.DASHBOARD_READ),\n canBuildDashboards: can(BIGCONSOLE_PERMISSIONS.DASHBOARD_UPDATE) && can(BIGCONSOLE_PERMISSIONS.WIDGET_CREATE),\n canGenerateWithAi: can(BIGCONSOLE_PERMISSIONS.PROMPT_CREATE),\n },\n }),\n [tr, can, dashboardSummary.latest]\n );\n\n const aiAlternative = useMemo(() => buildAiAlternative(tr, can(BIGCONSOLE_PERMISSIONS.PROMPT_CREATE)), [tr, can]);\n\n const quickActions = useMemo<OverviewQuickAction[]>(() => {\n const candidates: Array<{ permission: string; action: OverviewQuickAction }> = [\n {\n permission: BIGCONSOLE_PERMISSIONS.DASHBOARD_CREATE,\n action: {\n id: 'create-dashboard',\n label: tr('bigconsole.overview.actions.createDashboard', 'Create Dashboard'),\n icon: <Plus className=\"size-4\" aria-hidden=\"true\" />,\n path: CREATE_DASHBOARD_PATH,\n primary: true,\n },\n },\n {\n permission: BIGCONSOLE_PERMISSIONS.DATASINK_CREATE,\n action: {\n id: 'new-data-sink',\n label: tr('bigconsole.overview.actions.newDataSink', 'New Data Sink'),\n icon: <Database className=\"size-4\" aria-hidden=\"true\" />,\n path: '/datasinks/new',\n },\n },\n {\n permission: BIGCONSOLE_PERMISSIONS.PARSER_CREATE,\n action: {\n id: 'new-parser',\n label: tr('bigconsole.overview.actions.newParser', 'New Parser'),\n icon: <FileCode2 className=\"size-4\" aria-hidden=\"true\" />,\n path: '/parsers/new',\n },\n },\n {\n permission: BIGCONSOLE_PERMISSIONS.PIPELINE_CREATE,\n action: {\n id: 'new-pipeline',\n label: tr('bigconsole.overview.actions.newPipeline', 'New Pipeline'),\n icon: <Workflow className=\"size-4\" aria-hidden=\"true\" />,\n path: '/pipelines/new',\n },\n },\n {\n permission: BIGCONSOLE_PERMISSIONS.PROMPT_CREATE,\n action: {\n id: 'generate-with-ai',\n label: tr('bigconsole.overview.actions.generateWithAi', 'Generate with AI Insights'),\n icon: <Sparkles className=\"size-4\" aria-hidden=\"true\" />,\n path: '/insights',\n },\n },\n ];\n return candidates.filter(({ permission }) => can(permission)).map(({ action }) => action);\n }, [tr, can]);\n\n // ---------------------------------------------------------------------------\n // Guide: expanded by default only until the workspace has dashboards. The\n // default is applied once, after the first answer, so it never fights a user\n // who has toggled it.\n // ---------------------------------------------------------------------------\n\n const [guideExpanded, setGuideExpanded] = useState(false);\n const guideDefaultApplied = useRef(false);\n const guideDefault = resolveGuideDefaultExpanded({\n permissionsLoading,\n dashboardsAllowed: dashboards.allowed,\n dashboardsLoading: dashboards.loading,\n dashboardsTotal: dashboardSummary.total,\n dashboardsFailed: Boolean(dashboards.error),\n });\n\n useEffect(() => {\n if (guideDefaultApplied.current || guideDefault === null) return;\n guideDefaultApplied.current = true;\n setGuideExpanded(guideDefault);\n }, [guideDefault]);\n\n const handleToggleGuide = useCallback(() => {\n guideDefaultApplied.current = true;\n setGuideExpanded((expanded) => !expanded);\n }, []);\n\n const guideLabels = useMemo(\n () => ({\n title: tr('bigconsole.overview.guide.title', 'How to create a complete dashboard, end to end'),\n subtitle: tr(\n 'bigconsole.overview.guide.subtitle',\n 'Follow these steps in order — each button takes you to the right place.'\n ),\n show: tr('bigconsole.overview.guide.show', 'Show guide'),\n hide: tr('bigconsole.overview.guide.hide', 'Hide guide'),\n optional: tr('bigconsole.overview.guide.optional', 'Optional'),\n flow: [\n tr('bigconsole.overview.guide.flow.dataSink', 'Data Sink'),\n tr('bigconsole.overview.guide.flow.parser', 'Parser (optional)'),\n tr('bigconsole.overview.guide.flow.dashboard', 'Dashboard'),\n tr('bigconsole.overview.guide.flow.widgets', 'Widgets'),\n tr('bigconsole.overview.guide.flow.share', 'Share'),\n ],\n stepPrefix: (stepNumber: number) =>\n tr('bigconsole.overview.guide.stepPrefix', 'Step {{number}}:', { number: stepNumber }),\n }),\n [tr]\n );\n\n // ---------------------------------------------------------------------------\n // Render\n // ---------------------------------------------------------------------------\n\n const refreshing =\n (dashboards.loading && dashboards.data !== undefined) ||\n (dataSinks.loading && dataSinks.data !== undefined) ||\n (parsers.loading && parsers.data !== undefined) ||\n (pipelines.loading && pipelines.data !== undefined);\n const showKpis =\n permissionsLoading || dashboards.allowed || dataSinks.allowed || parsers.allowed || pipelines.allowed;\n // A section whose first load failed has no numbers to show; its tiles say so\n // instead of shimmering forever (a Retry that is in flight shows the skeleton).\n // (Apollo reports a rejected operation as `data: null`, so check the summaries.)\n const dashboardsUnavailable =\n !dashboards.loading && Boolean(dashboards.error) && dashboardSummary.total === undefined;\n const dataSinksUnavailable = !dataSinks.loading && Boolean(dataSinks.error) && dataSinkSummary.total === undefined;\n const unavailableLabel = tr('bigconsole.overview.kpis.unavailable', 'Currently unavailable');\n\n const quickActionsCard =\n quickActions.length > 0 ? <OverviewQuickActions actions={quickActions} onNavigate={handleNavigate} /> : null;\n const dataHealthCard = dataSinks.allowed ? (\n <DataHealthCard\n summary={dataSinkSummary}\n loading={dataSinks.loading}\n error={dataSinks.error}\n canCreate={can(BIGCONSOLE_PERMISSIONS.DATASINK_CREATE)}\n onRetry={dataSinks.refetch}\n onNavigate={handleNavigate}\n formatUpdated={formatUpdated}\n />\n ) : null;\n\n return (\n <MotionPage className=\"min-h-screen bg-bg-canvas p-[var(--space-pagePadding)]\">\n <div data-testid=\"overview-page\" className=\"space-y-6\">\n {/* Hero header — the one aurora backdrop on this page. */}\n <div className=\"relative overflow-hidden rounded-card border border-border-subtle bg-bg-surface px-6 py-5\">\n <AuroraBackground intensity=\"subtle\" />\n <PageHeader\n title={\n <>\n <GradientText>{tr('bigconsole.overview.titleNoun', 'BigConsole')}</GradientText>{' '}\n {tr('bigconsole.overview.titleSuffix', 'Overview')}\n </>\n }\n description={tr('bigconsole.overview.description', 'Your dashboards and data at a glance')}\n actions={\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={refetchAll}\n disabled={refreshing || permissionsLoading}\n className=\"min-h-11 sm:min-h-9\"\n data-testid=\"overview-refresh\"\n >\n <RefreshCw className={`size-4 ${refreshing ? 'motion-safe:animate-spin' : ''}`} aria-hidden=\"true\" />\n {tr('bigconsole.overview.refresh', 'Refresh')}\n </Button>\n }\n />\n </div>\n\n {showKpis ? (\n <MotionList\n data-tour=\"bigconsole-overview-stats\"\n data-testid=\"overview-kpis\"\n className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 xl:grid-cols-4\"\n stagger={0.06}\n >\n {permissionsLoading || dashboards.allowed ? (\n <MotionItem variant=\"fadeScale\">\n <OverviewStatCard\n title={tr('bigconsole.overview.kpis.dashboards', 'Dashboards')}\n value={dashboardSummary.total}\n loading={permissionsLoading || dashboards.loading}\n subtitle={\n dashboardsUnavailable\n ? unavailableLabel\n : tr('bigconsole.overview.kpis.dashboardsSubtitle', 'Across this workspace')\n }\n icon={<LayoutDashboard />}\n variant={dashboardsUnavailable ? 'warning' : 'default'}\n onClick={() => handleNavigate('/dashboards')}\n data-testid=\"overview-kpi-dashboards\"\n />\n </MotionItem>\n ) : null}\n {permissionsLoading || dataSinks.allowed ? (\n <>\n <MotionItem variant=\"fadeScale\">\n <OverviewStatCard\n title={tr('bigconsole.overview.kpis.dataSinks', 'Data Sinks')}\n value={dataSinkSummary.total}\n loading={permissionsLoading || dataSinks.loading}\n subtitle={\n dataSinksUnavailable\n ? unavailableLabel\n : dataSinkSummary.ready === undefined\n ? undefined\n : tr('bigconsole.overview.kpis.dataSinksReady', '{{count}} ready', {\n count: dataSinkSummary.ready,\n })\n }\n icon={<Database />}\n variant={dataSinksUnavailable ? 'warning' : 'default'}\n onClick={() => handleNavigate('/datasinks')}\n data-testid=\"overview-kpi-data-sinks\"\n />\n </MotionItem>\n </>\n ) : null}\n {permissionsLoading || parsers.allowed ? (\n <MotionItem variant=\"fadeScale\">\n <OverviewStatCard\n title={tr('bigconsole.overview.kpis.parsers', 'Parsers')}\n value={parsers.data?.listParsers.totalCount}\n loading={permissionsLoading || parsers.loading}\n subtitle={\n parsers.error\n ? unavailableLabel\n : tr('bigconsole.overview.kpis.defaultConsole', 'In the default console')\n }\n icon={<FileCode2 />}\n variant={parsers.error ? 'warning' : 'default'}\n onClick={() => handleNavigate('/parsers')}\n data-testid=\"overview-kpi-parsers\"\n />\n </MotionItem>\n ) : null}\n {permissionsLoading || pipelines.allowed ? (\n <MotionItem variant=\"fadeScale\">\n <OverviewStatCard\n title={tr('bigconsole.overview.kpis.pipelines', 'Pipelines')}\n value={pipelines.data?.listPipelines.totalCount}\n loading={permissionsLoading || pipelines.loading}\n valueSuffix={(pipelines.data?.listPipelines.totalCount ?? 0) >= 25 ? '+' : undefined}\n subtitle={\n pipelines.error\n ? unavailableLabel\n : tr('bigconsole.overview.kpis.defaultConsole', 'In the default console')\n }\n icon={<Workflow />}\n variant={pipelines.error ? 'warning' : 'default'}\n onClick={() => handleNavigate('/pipelines')}\n data-testid=\"overview-kpi-pipelines\"\n />\n </MotionItem>\n ) : null}\n </MotionList>\n ) : null}\n\n {quickActionsCard}\n {dashboards.allowed ? (\n <RecentDashboardsPanel\n dashboards={dashboardSummary.recent}\n loading={dashboards.loading}\n error={dashboards.error}\n canCreate={can(BIGCONSOLE_PERMISSIONS.DASHBOARD_CREATE)}\n onRetry={dashboards.refetch}\n onNavigate={handleNavigate}\n formatUpdated={formatUpdated}\n createDashboardPath={CREATE_DASHBOARD_PATH}\n />\n ) : null}\n <PagePurpose icon={<LayoutDashboard className=\"size-4\" />} className=\"max-w-[80ch]\">\n {tr(\n 'bigconsole.overview.purpose',\n 'Bring data into a Data Sink, optionally reshape it with a Parser, and turn it into live dashboards your team can share.'\n )}\n </PagePurpose>\n\n <DashboardGuide\n steps={guideSteps}\n alternative={aiAlternative}\n labels={guideLabels}\n expanded={guideExpanded}\n onToggle={handleToggleGuide}\n onNavigate={handleNavigate}\n />\n\n {dataHealthCard}\n </div>\n </MotionPage>\n );\n});\n\nexport default OverviewPage;\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ParserBuilderPage.d.ts","sourceRoot":"","sources":["../../../src/bigconsole/pages/ParserBuilderPage.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA0OH,eAAO,MAAM,iBAAiB,8CAgwC5B,CAAC;AAEH,eAAe,iBAAiB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ParserBuilderPage.js","names":[],"sources":["../../../src/bigconsole/pages/ParserBuilderPage.tsx"],"sourcesContent":["/**\n * Parser Builder Page\n *\n * Step wizard for creating and editing Parsers with JQ or JSONata expressions.\n * Required fields: consoleId, name, type, expression, inputSinkKey, outputKey\n *\n * Steps: 1) Details 2) Source & Type 3) Expression & Test 4) Cache & Review.\n * One step is shown at a time; a top Stepper allows quick-nav. See the reference\n * mock at bigconsole-app/public/parser-mockup-v2.html.\n */\n\nimport { memo, useState, useMemo, useEffect, useCallback, useRef } from 'react';\nimport { useParams } from 'react-router';\nimport { useAppNavigate } from '../contexts';\nimport { isDirty, shouldReseedForm } from '../utils/formDirty';\nimport { useParserOperations } from '../hooks/useParserOperations';\nimport { useDataSinkOperations } from '../hooks/useDataSinkOperations';\nimport { useDashboardOperations } from '../hooks/useDashboardOperations';\nimport { CacheTTLSelector } from '../components/datasink/CacheTTLSelector';\nimport { Section, SectionStack } from '../components/common';\nimport type { ParserType } from '../types';\n\n// i18n\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { useUnsavedChanges } from '@burdenoff/fe-libs/shared/hooks';\n\n// RBAC\nimport { usePermissions } from '@burdenoff/fe-libs/shared/providers/shell';\nimport { AccessDenied, PermissionButton } from '@burdenoff/fe-libs/shared/components';\nimport { BIGCONSOLE_PERMISSIONS } from '../../constants/permissions';\n\n// fe-libs UI components\nimport { Button } from '@burdenoff/fe-libs/ui';\nimport { PagePurpose, Stepper } from '@burdenoff/fe-libs/ui';\nimport type { StepperStep } from '@burdenoff/fe-libs/ui';\n\n// Lucide icons\nimport {\n ArrowLeft,\n Save,\n Play,\n Loader2,\n AlertCircle,\n CheckCircle2,\n FileCode2,\n Code,\n Settings,\n ChevronDown,\n ChevronRight,\n Eye,\n LayoutDashboard,\n Download,\n X,\n} from 'lucide-react';\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\ninterface FormState {\n name: string;\n outputKey: string;\n description: string;\n type: ParserType;\n expression: string;\n inputSinkKey: string;\n // `null` represents \"no caching / not set\" (matches Parser.ttl: number | null\n // on the backend and CacheTTLSelector's value prop). Using number-only here\n // would force a collapse to 0/900 that silently loses user intent on edit.\n ttl: number | null;\n}\n\ninterface FormErrors {\n name?: string;\n outputKey?: string;\n expression?: string;\n inputSinkKey?: string;\n ttl?: string;\n}\n\n/** Metadata about a loaded DataSink sample (BOFF-5518 Part A). */\ninterface SampleMeta {\n total: number | null;\n hasMore: boolean | null;\n sinkName: string;\n}\n\n// ============================================================================\n// STYLE HELPERS\n// ============================================================================\n\n/**\n * Shared chrome for the raw form controls on this page. Centralised so every\n * field keeps the same height (>= 40px, the mobile touch minimum), the same\n * focus ring, and a placeholder colour that actually emits CSS in this shell\n * (`text-text-tertiary` is unregistered and rendered nothing).\n */\nconst FIELD_BASE =\n 'w-full min-w-0 min-h-control-md rounded-md border bg-bg-surface px-3 py-2.5 text-sm text-text-primary placeholder:text-text-muted focus:outline-none focus:ring-2 focus:ring-action-primary-bg motion-safe:transition-colors disabled:bg-bg-sunken disabled:cursor-not-allowed disabled:opacity-60';\n\nfunction fieldClasses(hasError = false, extra = ''): string {\n return `${FIELD_BASE} ${hasError ? 'border-status-error-border' : 'border-[var(--color-border-default)]'} ${extra}`.trim();\n}\n\n/** Field-level label. Sits below a Section heading, never instead of one. */\nconst FIELD_LABEL = 'block text-sm font-medium text-text-primary mb-2';\n\n/** Helper/hint copy under a field. */\nconst FIELD_HINT = 'text-xs text-text-muted mt-1.5';\n\n// ============================================================================\n// HELPERS / CONSTANTS\n// ============================================================================\n\n/** Translate function shape from useI18n — accepts a key, a default/fallback, and optional interpolation params. */\ntype TFunc = (\n key: string,\n fallbackOrParams?: string | Record<string, string | number>,\n params?: Record<string, string | number>\n) => string;\n\n// Rows fetched for a DataSink preview / \"Load Sample\" (BOFF-5518). We never pull\n// the full payload into the browser — a small slice is enough to author + test a\n// parser, and keeps both the download and the subsequent test request small.\nconst PREVIEW_LIMIT = 25;\n\n// Default console ID for standalone parser creation (must match DataParsersPage)\nconst DEFAULT_CONSOLE_ID = 'default';\n\nconst STEP_KEYS = ['details', 'source', 'expression', 'review'] as const;\ntype StepKey = (typeof STEP_KEYS)[number];\n\nfunction buildSteps(t: TFunc): StepperStep[] {\n return [\n {\n key: 'details',\n label: t('bigconsole.parsers.builder.steps.details.label', 'Details'),\n description: t('bigconsole.parsers.builder.steps.details.description', 'Name & scope'),\n },\n {\n key: 'source',\n label: t('bigconsole.parsers.builder.steps.source.label', 'Source & Type'),\n description: t('bigconsole.parsers.builder.steps.source.description', 'Engine & data'),\n },\n {\n key: 'expression',\n label: t('bigconsole.parsers.builder.steps.expression.label', 'Expression & Test'),\n description: t('bigconsole.parsers.builder.steps.expression.description', 'Transform & verify'),\n },\n {\n key: 'review',\n label: t('bigconsole.parsers.builder.steps.review.label', 'Cache & Review'),\n description: t('bigconsole.parsers.builder.steps.review.description', 'Finish up'),\n },\n ];\n}\n\n/**\n * Generate a key from name (slug format)\n */\nfunction generateKey(name: string): string {\n return name\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '_')\n .replace(/^_+|_+$/g, '')\n .substring(0, 64);\n}\n\n/**\n * Validate form data\n */\nfunction validateForm(form: FormState, t: TFunc): FormErrors {\n const errors: FormErrors = {};\n\n if (!form.name.trim()) {\n errors.name = t('bigconsole.parsers.builder.validation.nameRequired', 'Name is required');\n } else if (form.name.length < 2) {\n errors.name = t('bigconsole.parsers.builder.validation.nameMinLength', 'Name must be at least 2 characters');\n }\n\n if (!form.outputKey.trim()) {\n errors.outputKey = t('bigconsole.parsers.builder.validation.outputKeyRequired', 'Output key is required');\n } else if (!/^[a-z0-9_]+$/.test(form.outputKey)) {\n errors.outputKey = t(\n 'bigconsole.parsers.builder.validation.outputKeyInvalid',\n 'Output key can only contain lowercase letters, numbers, and underscores'\n );\n }\n\n if (!form.expression.trim()) {\n errors.expression = t('bigconsole.parsers.builder.validation.expressionRequired', 'Expression is required');\n }\n\n if (!form.inputSinkKey.trim()) {\n errors.inputSinkKey = t('bigconsole.parsers.builder.validation.inputSinkRequired', 'Source DataSink is required');\n }\n\n if (form.ttl != null && form.ttl > 0 && (form.ttl < 30 || form.ttl > 86400)) {\n errors.ttl = t(\n 'bigconsole.parsers.builder.validation.cacheDurationRange',\n 'Cache duration must be between 30 and 86400 seconds'\n );\n }\n\n return errors;\n}\n\n// Parser type descriptions (JQ and JSONata only)\nfunction buildParserTypeInfo(\n t: TFunc\n): Record<ParserType, { name: string; description: string; placeholder: string; example: string }> {\n return {\n jq: {\n name: t('bigconsole.parsers.builder.parserType.jq.name', 'JQ'),\n description: t(\n 'bigconsole.parsers.builder.parserType.jq.description',\n 'Lightweight JSON processor - fast and efficient for simple transformations'\n ),\n placeholder: '.data | map({name: .name, value: .count})',\n example: t(\n 'bigconsole.parsers.builder.parserType.jq.example',\n '.data | map(.name) - Extract names from data array'\n ),\n },\n jsonata: {\n name: t('bigconsole.parsers.builder.parserType.jsonata.name', 'JSONata'),\n description: t(\n 'bigconsole.parsers.builder.parserType.jsonata.description',\n 'Query and transformation language - supports complex queries and calculations'\n ),\n placeholder: '$sum(data[*].value)',\n example: t(\n 'bigconsole.parsers.builder.parserType.jsonata.example',\n '$sum(data.values) - Calculate sum of values'\n ),\n },\n };\n}\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport const ParserBuilderPage = memo(function ParserBuilderPage() {\n const { parserId, consoleId: urlConsoleId } = useParams<{\n parserId?: string;\n consoleId?: string;\n }>();\n const navigate = useAppNavigate();\n const { t } = useI18n();\n\n // Translated wizard steps + parser-type metadata (rebuilt when locale/t changes)\n const steps = useMemo(() => buildSteps(t), [t]);\n const parserTypeInfo = useMemo(() => buildParserTypeInfo(t), [t]);\n const stepCount = steps.length;\n\n // Wizard step\n const [activeStep, setActiveStep] = useState(0);\n\n // State for selected dashboard (when creating from global route)\n const [selectedDashboardId, setSelectedDashboardId] = useState<string>(DEFAULT_CONSOLE_ID);\n\n // Use URL consoleId, or selected dashboard, or fall back to default\n const consoleId = urlConsoleId || selectedDashboardId || DEFAULT_CONSOLE_ID;\n\n const isEdit = parserId !== 'new' && !!parserId;\n\n // Permissions\n const { hasPermission, isLoading: permissionsLoading } = usePermissions();\n const canRead = hasPermission(BIGCONSOLE_PERMISSIONS.PARSER_READ);\n // The Save action needs update (edit mode) or create (new mode).\n const canSave = isEdit\n ? hasPermission(BIGCONSOLE_PERMISSIONS.PARSER_UPDATE)\n : hasPermission(BIGCONSOLE_PERMISSIONS.PARSER_CREATE);\n const savePermission = isEdit ? BIGCONSOLE_PERMISSIONS.PARSER_UPDATE : BIGCONSOLE_PERMISSIONS.PARSER_CREATE;\n\n // Show dashboard selector when NOT on dashboard-scoped route (both create and edit)\n const showDashboardSelector = !urlConsoleId;\n\n // Form state\n const [form, setForm] = useState<FormState>({\n name: '',\n outputKey: '',\n description: '',\n type: 'jq',\n expression: '',\n inputSinkKey: '',\n // 15 minutes (Recommended preset). A 0 default made CacheTTLSelector\n // auto-select \"Custom\" with an invalid value, blocking form submission.\n ttl: 900,\n });\n // The form as seeded or saved: the initial form (create), or the loaded parser (edit; null = clean until it lands).\n const [baseline, setBaseline] = useState<FormState | null>(() => (isEdit ? null : form));\n useUnsavedChanges({\n id: 'parser-editor',\n label: t('bigconsole.assistant.unsaved.parserEditor', 'the parser editor'),\n dirty: isDirty(form, baseline),\n });\n const [errors, setErrors] = useState<FormErrors>({});\n const [keyManuallyEdited, setKeyManuallyEdited] = useState(false);\n const [isSaving, setIsSaving] = useState(false);\n const [submitError, setSubmitError] = useState<string | null>(null);\n\n // Test panel state\n const [testInput, setTestInput] = useState(\n '{\\n \"data\": [\\n {\"name\": \"Item 1\", \"count\": 10},\\n {\"name\": \"Item 2\", \"count\": 20}\\n ]\\n}'\n );\n const [testOutput, setTestOutput] = useState('');\n const [testError, setTestError] = useState<string | null>(null);\n const [isTesting, setIsTesting] = useState(false);\n // Set when a reference-mode test ran against a truncated sample (BOFF-5518) —\n // surfaces \"tested first N of M rows\" so a partial-sample result is visible.\n const [testMeta, setTestMeta] = useState<{ sampledRows: number | null; totalRows: number | null } | null>(null);\n\n // Inferred test mode (BOFF-5518): once a sample is LOADED from a DataSink the\n // Input JSON is locked (read-only) — that's \"reference mode\". Typing into an\n // empty box is \"sample mode\". Locking prevents load-then-edit of a large\n // payload; the user must Clear to edit.\n const [inputLocked, setInputLocked] = useState(false);\n const [sampleMeta, setSampleMeta] = useState<SampleMeta | null>(null);\n const [loadingSample, setLoadingSample] = useState(false);\n // Mirrors the selected sink so an in-flight preview/sample load can detect a\n // mid-flight source change and drop its (now stale) result.\n const inputSinkKeyRef = useRef(form.inputSinkKey);\n useEffect(() => {\n inputSinkKeyRef.current = form.inputSinkKey;\n }, [form.inputSinkKey]);\n\n // Data preview state\n const [showDataPreview, setShowDataPreview] = useState(false);\n const [dataPreview, setDataPreview] = useState<Record<string, unknown> | null>(null);\n const [dataPreviewLoading, setDataPreviewLoading] = useState(false);\n const [dataPreviewError, setDataPreviewError] = useState<string | null>(null);\n const [dataPreviewMeta, setDataPreviewMeta] = useState<SampleMeta | null>(null);\n\n // Operations\n const { loading, error, parsers, fetchParser, createParser, updateParser, testParserExpression } =\n useParserOperations({\n consoleId: consoleId || '',\n skipFetch: true,\n });\n\n const { dataSinks, fetchDataSinks, getDataSinkData } = useDataSinkOperations({\n skipFetch: true,\n });\n\n // Fetch dashboards for the dashboard selector (only when showing selector)\n const { dashboards, fetchDashboards, loading: dashboardsLoading } = useDashboardOperations();\n\n // Get existing parser if editing\n const existingParser = isEdit ? parsers.find((p) => p.id === parserId) : null;\n\n // Load data on mount\n useEffect(() => {\n fetchDataSinks();\n if (isEdit && parserId) {\n fetchParser(parserId);\n }\n // Fetch dashboards for the selector (only when showing selector)\n if (showDashboardSelector) {\n fetchDashboards();\n }\n }, [isEdit, parserId, fetchParser, fetchDataSinks, showDashboardSelector, fetchDashboards]);\n\n // Populate form with existing data when editing. The record can land twice (partial list item,\n // then the full parser after fetchParser), so the form is re-seeded whenever it is still clean\n // and left alone only when the person has edited it (a refetch must not overwrite that edit).\n // form/baseline are read through refs so the effect keeps depending on the record alone.\n const seededParserId = useRef<string | null>(null);\n const formRef = useRef(form);\n const baselineRef = useRef(baseline);\n useEffect(() => {\n formRef.current = form;\n baselineRef.current = baseline;\n }, [form, baseline]);\n useEffect(() => {\n if (\n existingParser &&\n shouldReseedForm(seededParserId.current, existingParser.id, formRef.current, baselineRef.current)\n ) {\n seededParserId.current = existingParser.id;\n const seeded: FormState = {\n name: existingParser.name || '',\n outputKey: existingParser.outputKey || '',\n description: existingParser.description || '',\n type: existingParser.type,\n expression: existingParser.expression || '',\n inputSinkKey: existingParser.inputSinkKey || '',\n // Preserve the stored ttl exactly as saved — `null` and `0` both mean\n // \"no caching\" and are legitimate user choices. The BOFF-2241 default\n // (900) applies only to the *initial* Create-form state, never to\n // hydrating an existing parser.\n ttl: existingParser.ttl ?? null,\n };\n setForm(seeded);\n setBaseline(seeded);\n setKeyManuallyEdited(true);\n // Set the dashboard scope from existing parser's consoleId\n if (existingParser.consoleId) {\n setSelectedDashboardId(existingParser.consoleId);\n }\n }\n }, [existingParser]);\n\n const selectedSinkName = useMemo(() => {\n const sink = dataSinks.find((ds) => ds.key === form.inputSinkKey);\n return sink?.name || form.inputSinkKey;\n }, [dataSinks, form.inputSinkKey]);\n\n // Auto-generate key from name\n const handleNameChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const name = e.target.value;\n setForm((prev) => ({\n ...prev,\n name,\n outputKey: keyManuallyEdited ? prev.outputKey : generateKey(name),\n }));\n setErrors((prev) => ({ ...prev, name: undefined }));\n },\n [keyManuallyEdited]\n );\n\n // Handle output key change\n const handleOutputKeyChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n const outputKey = e.target.value.toLowerCase().replace(/[^a-z0-9_]/g, '');\n setForm((prev) => ({ ...prev, outputKey }));\n setKeyManuallyEdited(true);\n setErrors((prev) => ({ ...prev, outputKey: undefined }));\n }, []);\n\n // Handle description change\n const handleDescriptionChange = useCallback((e: React.ChangeEvent<HTMLTextAreaElement>) => {\n setForm((prev) => ({ ...prev, description: e.target.value }));\n }, []);\n\n // Handle type change\n const handleTypeChange = useCallback((type: ParserType) => {\n setForm((prev) => ({ ...prev, type }));\n // Clear test output when type changes\n setTestOutput('');\n setTestError(null);\n }, []);\n\n // Handle expression change\n const handleExpressionChange = useCallback((e: React.ChangeEvent<HTMLTextAreaElement>) => {\n setForm((prev) => ({ ...prev, expression: e.target.value }));\n setErrors((prev) => ({ ...prev, expression: undefined }));\n }, []);\n\n // Handle input sink change — reset any loaded sample (it belonged to the old sink)\n const handleInputSinkChange = useCallback(\n (e: React.ChangeEvent<HTMLSelectElement>) => {\n setForm((prev) => ({ ...prev, inputSinkKey: e.target.value }));\n setErrors((prev) => ({ ...prev, inputSinkKey: undefined }));\n setShowDataPreview(false);\n setDataPreview(null);\n setDataPreviewMeta(null);\n setDataPreviewError(null);\n // Reset any loaded reference sample — it belonged to the previous sink.\n // Without this, a locked (reference-mode) Input JSON would keep showing the\n // old sink's rows while Run Test sends the NEW dataSinkKey — a silent\n // data/display mismatch. A locked sample is cleared; hand-typed sample JSON\n // (unlocked) is left alone since it isn't tied to a specific sink.\n if (inputLocked) {\n setTestInput('');\n setInputLocked(false);\n }\n setSampleMeta(null);\n setTestOutput('');\n setTestError(null);\n setTestMeta(null);\n },\n [inputLocked]\n );\n\n // Handle TTL change\n const handleTTLChange = useCallback((ttl: number | null) => {\n setForm((prev) => ({ ...prev, ttl }));\n setErrors((prev) => ({ ...prev, ttl: undefined }));\n }, []);\n\n // Handle dashboard selection change\n const handleDashboardChange = useCallback((e: React.ChangeEvent<HTMLSelectElement>) => {\n setSelectedDashboardId(e.target.value);\n }, []);\n\n // Handle test input typing (only possible when NOT locked → sample mode)\n const handleTestInputChange = useCallback((e: React.ChangeEvent<HTMLTextAreaElement>) => {\n setTestInput(e.target.value);\n }, []);\n\n // Load a SMALL sample from the selected datasink into the Input JSON and lock\n // it (reference mode). BOFF-5518 Part A: only PREVIEW_LIMIT rows are fetched,\n // never the full payload.\n const handleLoadSampleData = useCallback(async () => {\n const requestedKey = form.inputSinkKey;\n if (!requestedKey) return;\n setLoadingSample(true);\n try {\n const result = await getDataSinkData({ key: requestedKey }, { limit: PREVIEW_LIMIT });\n // Ignore a result that arrived after the user switched sources mid-flight —\n // otherwise we'd lock the input to a stale sample while the form points at a\n // different sink (a reference-mode Run Test would then mismatch).\n if (inputSinkKeyRef.current !== requestedKey) return;\n if (result?.raw !== undefined && result?.raw !== null) {\n setTestInput(JSON.stringify(result.raw, null, 2));\n setInputLocked(true);\n setSampleMeta({\n total: result.totalCount ?? null,\n hasMore: result.hasMore ?? null,\n sinkName: selectedSinkName,\n });\n setTestOutput('');\n setTestError(null);\n setTestMeta(null);\n } else {\n // getDataSinkData returns null (not throws) on failure; surface it so the\n // click isn't a silent no-op after the spinner stops.\n setTestError(\n t('bigconsole.parsers.builder.errors.loadSampleFailed', 'Could not load a sample from the selected DataSink.')\n );\n }\n } catch (err) {\n if (inputSinkKeyRef.current !== requestedKey) return;\n setTestError(\n err instanceof Error\n ? err.message\n : t('bigconsole.parsers.builder.errors.loadSampleDataFailed', 'Failed to load sample data')\n );\n } finally {\n setLoadingSample(false);\n }\n }, [form.inputSinkKey, getDataSinkData, selectedSinkName, t]);\n\n // Clear the loaded sample → unlock for manual editing (back to sample mode).\n const handleClearInput = useCallback(() => {\n setTestInput('');\n setInputLocked(false);\n setSampleMeta(null);\n setTestMeta(null);\n setTestOutput('');\n setTestError(null);\n }, []);\n\n // Handle data preview toggle (step 2) — also a small slice only.\n const handleToggleDataPreview = useCallback(async () => {\n if (showDataPreview) {\n setShowDataPreview(false);\n return;\n }\n\n if (!form.inputSinkKey) {\n setDataPreviewError(\n t('bigconsole.parsers.builder.errors.selectSourceFirst', 'Please select a source DataSink first')\n );\n return;\n }\n\n setShowDataPreview(true);\n setDataPreviewLoading(true);\n setDataPreviewError(null);\n\n const requestedKey = form.inputSinkKey;\n try {\n const result = await getDataSinkData({ key: requestedKey }, { limit: PREVIEW_LIMIT });\n // Drop a stale result if the source changed while this was in flight.\n if (inputSinkKeyRef.current !== requestedKey) return;\n if (result?.raw !== undefined && result?.raw !== null) {\n setDataPreview(result.raw as Record<string, unknown>);\n setDataPreviewMeta({\n total: result.totalCount ?? null,\n hasMore: result.hasMore ?? null,\n sinkName: selectedSinkName,\n });\n } else {\n setDataPreviewError(\n t('bigconsole.parsers.builder.errors.noDataInSink', 'No data available in selected DataSink')\n );\n }\n } catch (err) {\n if (inputSinkKeyRef.current !== requestedKey) return;\n setDataPreviewError(\n err instanceof Error\n ? err.message\n : t('bigconsole.parsers.builder.errors.loadDataFailed', 'Failed to load data')\n );\n } finally {\n setDataPreviewLoading(false);\n }\n }, [showDataPreview, form.inputSinkKey, getDataSinkData, selectedSinkName, t]);\n\n // Handle test expression\n const handleTestExpression = useCallback(async () => {\n if (!form.expression.trim()) {\n setTestError(t('bigconsole.parsers.builder.validation.expressionRequired', 'Expression is required'));\n return;\n }\n\n // BOFF-5518: reference mode (a sample was loaded → box locked) sends only the\n // expression + DataSink key; the backend evaluates server-side, no data blob.\n // Sample mode sends the (hand-typed) JSON as before.\n let input: {\n type: ParserType;\n expression: string;\n sampleData?: unknown;\n dataSinkKey?: string;\n sampleLimit?: number;\n };\n if (inputLocked) {\n input = {\n type: form.type,\n expression: form.expression,\n dataSinkKey: form.inputSinkKey,\n sampleLimit: PREVIEW_LIMIT,\n };\n } else {\n let parsedInput: unknown;\n try {\n parsedInput = JSON.parse(testInput);\n } catch {\n setTestError(t('bigconsole.parsers.builder.errors.invalidInputJson', 'Input JSON is not valid JSON'));\n return;\n }\n input = { type: form.type, expression: form.expression, sampleData: parsedInput };\n }\n\n setIsTesting(true);\n setTestError(null);\n setTestOutput('');\n setTestMeta(null);\n\n try {\n const result = await testParserExpression(input);\n\n if (result) {\n if (result.success) {\n setTestOutput(JSON.stringify(result.output, null, 2));\n if (result.sampled) {\n setTestMeta({ sampledRows: result.sampledRows ?? null, totalRows: result.totalRows ?? null });\n }\n } else {\n setTestError(result.error || t('bigconsole.parsers.builder.errors.testFailed', 'Test failed'));\n }\n } else {\n // The hook returns null (not throws) when the GraphQL call fails —\n // surface it instead of stopping the spinner with no output/error.\n setTestError(\n t('bigconsole.parsers.builder.errors.testRequestFailed', 'Test request failed — please try again.')\n );\n }\n } catch (err) {\n setTestError(\n err instanceof Error ? err.message : t('bigconsole.parsers.builder.errors.testFailed', 'Test failed')\n );\n } finally {\n setIsTesting(false);\n }\n }, [form.type, form.expression, form.inputSinkKey, testInput, inputLocked, testParserExpression, t]);\n\n // Handle back navigation (leave the builder)\n const handleLeave = useCallback(() => {\n if (urlConsoleId) {\n navigate(`/dashboards/${urlConsoleId}/parsers`);\n } else {\n navigate('/parsers');\n }\n }, [navigate, urlConsoleId]);\n\n // Handle form submission\n const handleSubmit = useCallback(async () => {\n setSubmitError(null);\n\n // Validate form\n const validationErrors = validateForm(form, t);\n if (Object.keys(validationErrors).length > 0) {\n setErrors(validationErrors);\n // Jump to the first step whose field is invalid so the error is visible\n // (the offending field lives on an earlier step, not the Review step).\n if (validationErrors.name || validationErrors.outputKey) {\n setActiveStep(0);\n } else if (validationErrors.inputSinkKey) {\n setActiveStep(1);\n } else if (validationErrors.expression) {\n setActiveStep(2);\n }\n return;\n }\n\n setIsSaving(true);\n try {\n if (isEdit && existingParser) {\n // Update existing (type is immutable, not included in update)\n const result = await updateParser(\n existingParser.id,\n {\n name: form.name,\n description: form.description || undefined,\n expression: form.expression,\n inputSinkKey: form.inputSinkKey,\n outputKey: form.outputKey,\n // Pass `null` through so the backend distinguishes an explicit\n // \"clear caching\" from an unset field (InputMaybe<Int> = Int | null).\n ttl: form.ttl,\n },\n existingParser.version\n );\n if (!result) {\n throw new Error(t('bigconsole.parsers.builder.errors.updateFailed', 'Failed to update parser'));\n }\n } else {\n // Create new - include all required fields\n const result = await createParser({\n consoleId: consoleId || '',\n name: form.name,\n type: form.type,\n expression: form.expression,\n inputSinkKey: form.inputSinkKey,\n outputKey: form.outputKey,\n description: form.description || undefined,\n ttl: form.ttl ?? undefined,\n });\n if (!result) {\n throw new Error(t('bigconsole.parsers.builder.errors.createFailed', 'Failed to create parser'));\n }\n }\n setBaseline(form);\n handleLeave();\n } catch (err) {\n setSubmitError(\n err instanceof Error ? err.message : t('bigconsole.parsers.builder.errors.saveFailed', 'Failed to save parser')\n );\n } finally {\n setIsSaving(false);\n }\n }, [form, isEdit, existingParser, createParser, updateParser, consoleId, handleLeave, t]);\n\n // Full-form validity (gates the final Create action)\n const isFormValid = useMemo(() => {\n return (\n form.name.trim().length >= 2 &&\n form.expression.trim().length > 0 &&\n form.inputSinkKey.trim().length > 0 &&\n form.outputKey.trim().length > 0 &&\n /^[a-z0-9_]+$/.test(form.outputKey)\n );\n }, [form.name, form.expression, form.inputSinkKey, form.outputKey]);\n\n // Per-step validity — gates the \"Next\" button so problems surface in context.\n const canAdvance = useCallback(\n (step: number): boolean => {\n const key: StepKey = STEP_KEYS[step];\n switch (key) {\n case 'details':\n return (\n form.name.trim().length >= 2 && form.outputKey.trim().length > 0 && /^[a-z0-9_]+$/.test(form.outputKey)\n );\n case 'source':\n return form.inputSinkKey.trim().length > 0;\n case 'expression':\n return form.expression.trim().length > 0;\n default:\n return true;\n }\n },\n [form.name, form.outputKey, form.inputSinkKey, form.expression]\n );\n\n const goToStep = useCallback(\n (step: number) => {\n const target = Math.max(0, Math.min(step, stepCount - 1));\n // Backward navigation is always allowed; a forward jump requires every\n // intermediate step to be valid (defense-in-depth even though the Stepper\n // no longer offers skip-ahead) so you can't land on an empty Review step.\n if (target > activeStep) {\n for (let s = activeStep; s < target; s++) {\n if (!canAdvance(s)) return;\n }\n }\n setActiveStep(target);\n },\n [activeStep, canAdvance, stepCount]\n );\n const goNext = useCallback(() => {\n setActiveStep((s) => Math.min(s + 1, stepCount - 1));\n }, [stepCount]);\n const goPrev = useCallback(() => {\n setActiveStep((s) => Math.max(s - 1, 0));\n }, []);\n\n // Loading state (wait for the parser fetch in edit mode and the permission load)\n if ((loading && isEdit) || permissionsLoading) {\n return (\n <div className=\"flex items-center justify-center min-h-[400px]\">\n <Loader2 className=\"w-8 h-8 text-text-secondary animate-spin\" />\n </div>\n );\n }\n\n // Read gate — editing an existing parser requires read access\n if (isEdit && !canRead) {\n return (\n <AccessDenied\n title={t('bigconsole.parsers.builder.accessDenied.title', 'Access Denied')}\n description={t(\n 'bigconsole.parsers.builder.accessDenied.description',\n \"You don't have permission to view this parser.\"\n )}\n />\n );\n }\n\n // Error state\n if (error) {\n return (\n <div className=\"p-card-padding\">\n <Section\n tone=\"danger\"\n headingLevel={2}\n title={t('bigconsole.parsers.builder.errors.loadParserFailed', 'Failed to load Parser')}\n description=\"The parser could not be fetched, so the form cannot be filled in.\"\n icon={<AlertCircle className=\"h-icon-md w-icon-md text-[var(--color-status-error-text)]\" />}\n actions={\n <Button onClick={handleLeave} variant=\"secondary\" size=\"sm\">\n <ArrowLeft className=\"w-4 h-4 mr-2\" />\n {t('bigconsole.parsers.builder.header.backToParsers', 'Back to Parsers')}\n </Button>\n }\n data-testid=\"parser-builder-load-error\"\n >\n <p className=\"font-mono text-xs break-words text-text-secondary\">{error.message}</p>\n </Section>\n </div>\n );\n }\n\n const typeInfo = parserTypeInfo[form.type];\n const isLastStep = activeStep === stepCount - 1;\n\n // \"Step 2 of 4\" — rendered as the step section's `meta` chip, next to its title.\n const stepCounterChip = (\n <span className=\"text-xs font-medium text-text-muted\">\n {t('bigconsole.parsers.builder.header.stepCounter', 'Step {{current}} of {{total}}', {\n current: activeStep + 1,\n total: stepCount,\n })}\n </span>\n );\n\n return (\n <div data-tour=\"bigconsole-parser-builder\" className=\"min-h-screen bg-bg-canvas\">\n <div className=\"max-w-4xl mx-auto p-card-padding pb-10\">\n <SectionStack>\n {/* Page header strip — structural, no surface of its own */}\n <div className=\"border-b border-[var(--color-border-subtle)] pb-form-gap\">\n <Button onClick={handleLeave} variant=\"ghost\" size=\"sm\" className=\"mb-4\">\n <ArrowLeft className=\"w-4 h-4 mr-2\" />\n {t('bigconsole.parsers.builder.header.backToParsers', 'Back to Parsers')}\n </Button>\n <h1 className=\"text-2xl font-bold text-text-primary sm:text-3xl\">\n {isEdit\n ? t('bigconsole.parsers.builder.header.editTitle', 'Edit Parser')\n : t('bigconsole.parsers.builder.header.createTitle', 'Create Parser')}\n </h1>\n <p className=\"text-sm text-text-secondary mt-1\">\n {t('bigconsole.parsers.builder.header.subtitle', 'Transform data using JQ or JSONata expressions.')}\n </p>\n </div>\n\n <PagePurpose className=\"max-w-[80ch]\">\n {t(\n 'bigconsole.parsers.builder.header.purpose',\n 'A parser maps raw input into structured fields using a JQ or JSONata expression. Write the expression, run it against a sample to confirm the output, and save it once it produces the shape you need — then reuse it across pipelines to normalise any source.'\n )}\n </PagePurpose>\n\n {/* Stepper — click a step to jump.\n No allowSkipAhead: the Stepper only lets you revisit steps you've\n already reached (idx <= active). Forward progress goes through Next,\n which is gated by per-step validation — so you can't land on an\n empty Review before filling earlier steps. */}\n <div className=\"min-w-0 overflow-x-auto\">\n <Stepper steps={steps} active={activeStep} onStepClick={goToStep} />\n </div>\n\n {/* Error Alert */}\n {submitError && (\n <Section\n tone=\"danger\"\n headingLevel={2}\n title={t('bigconsole.parsers.builder.errors.saveParserFailed', 'Failed to save Parser')}\n icon={<AlertCircle className=\"h-icon-sm w-icon-sm text-[var(--color-status-error-text)]\" />}\n data-testid=\"parser-submit-error\"\n >\n <p className=\"font-mono text-xs break-words text-text-secondary\">{submitError}</p>\n </Section>\n )}\n\n {/* The wizard commits from the Save control on the last step, but the\n fields still live in a real <form> so labels, native validation and\n the Enter key behave normally. Enter must never post the page. */}\n <form\n className=\"flex flex-col gap-section-gap\"\n onSubmit={(e) => {\n e.preventDefault();\n if (isLastStep) {\n void handleSubmit();\n }\n }}\n >\n {/* ============ STEP 1: DETAILS ============ */}\n {activeStep === 0 && (\n <Section\n emphasis=\"primary\"\n headingLevel={2}\n title=\"Basic information\"\n description=\"Essential details for your parser.\"\n icon={<FileCode2 className=\"h-icon-sm w-icon-sm\" />}\n meta={stepCounterChip}\n bodyClassName=\"space-y-5\"\n data-testid=\"parser-basic-information\"\n >\n <div className=\"grid gap-5 sm:grid-cols-2\">\n {/* Name field */}\n <div>\n <label htmlFor=\"name\" className={FIELD_LABEL}>\n {t('bigconsole.parsers.builder.fields.name.label', 'Name')}{' '}\n <span className=\"text-status-error-text\">*</span>\n </label>\n <input\n id=\"name\"\n type=\"text\"\n value={form.name}\n onChange={handleNameChange}\n placeholder={t(\n 'bigconsole.parsers.builder.fields.name.placeholder',\n 'e.g., User Analytics Parser'\n )}\n className={fieldClasses(Boolean(errors.name))}\n />\n {errors.name && <p className=\"text-xs text-status-error-text mt-1.5\">{errors.name}</p>}\n </div>\n\n {/* Output Key field */}\n <div>\n <label htmlFor=\"outputKey\" className={FIELD_LABEL}>\n {t('bigconsole.parsers.builder.fields.outputKey.label', 'Output Key')}{' '}\n <span className=\"text-status-error-text\">*</span>\n </label>\n <input\n id=\"outputKey\"\n type=\"text\"\n value={form.outputKey}\n onChange={handleOutputKeyChange}\n placeholder=\"user_analytics_parser\"\n disabled={isEdit}\n className={fieldClasses(Boolean(errors.outputKey), 'font-mono')}\n />\n {errors.outputKey && <p className=\"text-xs text-status-error-text mt-1.5\">{errors.outputKey}</p>}\n {!isEdit && (\n <p className={FIELD_HINT}>\n {t(\n 'bigconsole.parsers.builder.fields.outputKey.helper',\n 'Auto-generated from name. Customize if needed.'\n )}\n </p>\n )}\n </div>\n </div>\n\n {/* Description field */}\n <div>\n <label htmlFor=\"description\" className={FIELD_LABEL}>\n {t('bigconsole.parsers.builder.fields.description.label', 'Description')}\n </label>\n <textarea\n id=\"description\"\n value={form.description}\n onChange={handleDescriptionChange}\n placeholder={t(\n 'bigconsole.parsers.builder.fields.description.placeholder',\n 'Describe what this parser does...'\n )}\n rows={3}\n className={fieldClasses(false, 'resize-y')}\n />\n </div>\n\n {/* Dashboard Selector - shown when NOT on dashboard-scoped route */}\n {showDashboardSelector && (\n <div>\n <label htmlFor=\"dashboard\" className={`${FIELD_LABEL} flex items-center gap-2`}>\n <LayoutDashboard aria-hidden=\"true\" className=\"w-4 h-4\" />\n {t('bigconsole.parsers.builder.fields.dashboard.label', 'Dashboard Scope')}\n </label>\n <select\n id=\"dashboard\"\n value={selectedDashboardId}\n onChange={handleDashboardChange}\n disabled={dashboardsLoading || isEdit}\n className={fieldClasses()}\n >\n <option value=\"default\">\n {t('bigconsole.parsers.builder.fields.dashboard.globalOption', 'Global (available everywhere)')}\n </option>\n {dashboards.map((dashboard) => (\n <option key={dashboard.id} value={dashboard.id}>\n {dashboard.name}\n </option>\n ))}\n </select>\n <p className={FIELD_HINT}>\n {isEdit\n ? t(\n 'bigconsole.parsers.builder.fields.dashboard.helperLocked',\n 'Dashboard scope cannot be changed after creation.'\n )\n : selectedDashboardId === 'default'\n ? t(\n 'bigconsole.parsers.builder.fields.dashboard.helperGlobal',\n 'Global parsers are available across all dashboards.'\n )\n : t(\n 'bigconsole.parsers.builder.fields.dashboard.helperScoped',\n 'This parser will only be available in the selected dashboard.'\n )}\n </p>\n </div>\n )}\n </Section>\n )}\n\n {/* ============ STEP 2: SOURCE & TYPE ============ */}\n {activeStep === 1 && (\n /* Parser configuration — the block this route exists for */\n <Section\n emphasis=\"primary\"\n headingLevel={2}\n title=\"Parser configuration\"\n description=\"Pick the language and point it at a source.\"\n icon={<Code className=\"h-icon-sm w-icon-sm\" />}\n meta={stepCounterChip}\n bodyClassName=\"space-y-5\"\n data-testid=\"parser-configuration\"\n >\n {/* Parser Type */}\n <fieldset className=\"min-w-0 border-0 p-0 m-0\">\n <legend className=\"mb-3 text-sm font-medium text-text-primary\">\n {t('bigconsole.parsers.builder.fields.parserType.label', 'Parser Type')}{' '}\n <span className=\"text-status-error-text\">*</span>\n </legend>\n <div className=\"space-y-2\">\n {(Object.keys(parserTypeInfo) as ParserType[]).map((type) => {\n const info = parserTypeInfo[type];\n return (\n <label\n key={type}\n className={`\n flex items-start gap-3 p-3\n rounded-md border\n cursor-pointer\n motion-safe:transition-colors\n ${\n form.type === type\n ? 'border-action-primary-bg bg-action-primary-bg/5'\n : 'border-transparent bg-bg-sunken hover:border-[var(--color-border-subtle)]'\n }\n `}\n >\n <input\n type=\"radio\"\n name=\"parserType\"\n value={type}\n checked={form.type === type}\n onChange={() => handleTypeChange(type)}\n className=\"mt-1 w-4 h-4 text-action-primary-bg\"\n />\n <span className=\"min-w-0\">\n <span className=\"block text-sm font-medium text-text-primary\">{info.name}</span>\n <span className=\"mt-0.5 block text-xs text-text-secondary\">{info.description}</span>\n </span>\n </label>\n );\n })}\n </div>\n </fieldset>\n\n {/* Source DataSink */}\n <div>\n <label htmlFor=\"inputSinkKey\" className={FIELD_LABEL}>\n {t('bigconsole.parsers.builder.fields.sourceDataSink.label', 'Source DataSink')}{' '}\n <span className=\"text-status-error-text\">*</span>\n </label>\n <select\n id=\"inputSinkKey\"\n value={form.inputSinkKey}\n onChange={handleInputSinkChange}\n className={fieldClasses(Boolean(errors.inputSinkKey))}\n >\n <option value=\"\">\n {t('bigconsole.parsers.builder.fields.sourceDataSink.placeholder', 'Select a DataSink...')}\n </option>\n {dataSinks.map((ds) => (\n <option key={ds.id} value={ds.key}>\n {ds.name || ds.key}\n </option>\n ))}\n </select>\n {errors.inputSinkKey && (\n <p className=\"text-xs text-status-error-text mt-1.5\">{errors.inputSinkKey}</p>\n )}\n {dataSinks.length === 0 ? (\n <p className={FIELD_HINT}>\n {t(\n 'bigconsole.parsers.builder.fields.sourceDataSink.emptyState',\n 'No DataSinks yet — create one first, then return here to build a parser for it.'\n )}\n </p>\n ) : (\n <p className={FIELD_HINT}>Select the data source for this parser to transform.</p>\n )}\n\n {/* Show Data Preview Button */}\n {form.inputSinkKey && (\n <div className=\"mt-3\">\n <button\n type=\"button\"\n onClick={handleToggleDataPreview}\n aria-expanded={showDataPreview}\n aria-controls=\"parser-data-preview\"\n className=\"inline-flex min-h-control-md items-center gap-2 rounded-md text-sm text-action-primary-bg hover:text-action-primary-bgHover motion-safe:transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-bg-surface\"\n >\n {showDataPreview ? <ChevronDown className=\"w-4 h-4\" /> : <ChevronRight className=\"w-4 h-4\" />}\n <Eye className=\"w-4 h-4\" />\n {t('bigconsole.parsers.builder.dataPreview.toggle', 'Show Data Preview')}\n </button>\n\n {/* Data Preview Panel — supporting context for the field above */}\n {showDataPreview && (\n <Section\n id=\"parser-data-preview\"\n emphasis=\"muted\"\n padding=\"compact\"\n headingLevel={3}\n title=\"Sample data\"\n description=\"A slice of the payload stored on the selected DataSink.\"\n className=\"mt-3\"\n data-testid=\"parser-data-preview\"\n >\n {dataPreviewLoading ? (\n <div className=\"flex items-center justify-center p-4\">\n <Loader2 className=\"w-5 h-5 text-text-secondary animate-spin\" />\n <span className=\"ml-2 text-sm text-text-secondary\">\n {t('bigconsole.parsers.builder.dataPreview.loading', 'Loading sample…')}\n </span>\n </div>\n ) : dataPreviewError ? (\n <p className=\"text-sm text-status-error-text\">{dataPreviewError}</p>\n ) : dataPreview ? (\n <>\n <pre className=\"max-h-48 min-w-0 overflow-auto rounded-md bg-bg-canvas p-3 font-mono text-xs text-text-primary\">\n {JSON.stringify(dataPreview, null, 2)}\n </pre>\n {dataPreviewMeta && (\n <p className={FIELD_HINT}>\n {t('bigconsole.parsers.builder.dataPreview.previewingSample', 'Previewing a sample')}\n {dataPreviewMeta.total != null\n ? t(\n 'bigconsole.parsers.builder.dataPreview.rowRange',\n ' (first {{shown}} of {{total}} rows)',\n {\n shown: Math.min(PREVIEW_LIMIT, dataPreviewMeta.total),\n total: dataPreviewMeta.total,\n }\n )\n : ''}\n {' · '}\n {dataPreviewMeta.sinkName}\n </p>\n )}\n </>\n ) : (\n <p className=\"text-center text-sm text-text-secondary\">\n {t('bigconsole.parsers.builder.dataPreview.noData', 'No data available')}\n </p>\n )}\n </Section>\n )}\n </div>\n )}\n </div>\n </Section>\n )}\n\n {/* ============ STEP 3: EXPRESSION & TEST ============ */}\n {activeStep === 2 && (\n <Section\n emphasis=\"primary\"\n headingLevel={2}\n title=\"Test expression\"\n description=\"Write the expression, then run it against sample data before you save.\"\n icon={<Play className=\"h-icon-sm w-icon-sm\" />}\n meta={stepCounterChip}\n bodyClassName=\"space-y-5\"\n data-testid=\"parser-test-expression\"\n >\n {/* Expression */}\n <div>\n <label htmlFor=\"expression\" className={FIELD_LABEL}>\n {t('bigconsole.parsers.builder.fields.expression.label', 'Expression')}{' '}\n <span className=\"text-status-error-text\">*</span>\n </label>\n <textarea\n id=\"expression\"\n value={form.expression}\n onChange={handleExpressionChange}\n placeholder={typeInfo.placeholder}\n rows={8}\n className={fieldClasses(Boolean(errors.expression), 'font-mono resize-y min-h-[12rem]')}\n />\n {errors.expression && <p className=\"text-xs text-status-error-text mt-1.5\">{errors.expression}</p>}\n <p className={FIELD_HINT}>\n {t('bigconsole.parsers.builder.fields.expression.example', 'Example: {{example}}', {\n example: typeInfo.example,\n })}\n </p>\n </div>\n\n {/* Test Input. Loading a sample locks the box (reference mode) —\n the mode badge and the Load/Clear pair live on the label row. */}\n <div>\n <div className=\"mb-2 flex flex-wrap items-center justify-between gap-control-gap\">\n <label htmlFor=\"test-input\" className={`${FIELD_LABEL} mb-0 flex flex-wrap items-center gap-2`}>\n {t('bigconsole.parsers.builder.test.inputJsonLabel', 'Input JSON')}\n <span\n className={`rounded border px-2 py-0.5 text-[10px] font-semibold uppercase tracking-wide ${\n inputLocked\n ? 'text-action-primary-bg bg-action-primary-bg/10 border-action-primary-bg/30'\n : 'text-text-secondary bg-bg-sunken border-[var(--color-border-subtle)]'\n }`}\n >\n {inputLocked\n ? t('bigconsole.parsers.builder.test.referenceMode', 'Reference mode')\n : t('bigconsole.parsers.builder.test.sampleMode', 'Sample mode')}\n </span>\n </label>\n <div className=\"flex flex-wrap items-center gap-2\">\n {form.inputSinkKey && !inputLocked && (\n <button\n type=\"button\"\n onClick={handleLoadSampleData}\n disabled={loadingSample}\n className=\"inline-flex items-center gap-1.5 whitespace-nowrap rounded-md border border-action-primary-bg px-2.5 py-1.5 text-xs font-semibold text-action-primary-bg hover:bg-action-primary-bg/10 motion-safe:transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-bg-surface disabled:opacity-50 disabled:cursor-not-allowed\"\n >\n {loadingSample ? (\n <Loader2 className=\"w-3.5 h-3.5 animate-spin\" />\n ) : (\n <Download className=\"w-3.5 h-3.5\" />\n )}\n {t('bigconsole.parsers.builder.actions.loadSample', 'Load Sample')}\n </button>\n )}\n {inputLocked && (\n <button\n type=\"button\"\n onClick={handleClearInput}\n className=\"inline-flex items-center gap-1.5 whitespace-nowrap rounded-md border border-[var(--color-border-default)] px-2.5 py-1.5 text-xs font-semibold text-text-primary hover:bg-bg-sunken motion-safe:transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-bg-surface\"\n >\n <X className=\"w-3.5 h-3.5\" />\n {t('bigconsole.parsers.builder.actions.clear', 'Clear')}\n </button>\n )}\n </div>\n </div>\n <textarea\n id=\"test-input\"\n value={testInput}\n onChange={handleTestInputChange}\n readOnly={inputLocked}\n placeholder={t(\n 'bigconsole.parsers.builder.test.inputPlaceholder',\n 'Type sample JSON to test against it — or Load a sample from the source…'\n )}\n rows={8}\n className={fieldClasses(\n false,\n `font-mono leading-relaxed resize-y ${inputLocked ? 'bg-bg-sunken opacity-80 cursor-not-allowed' : ''}`\n )}\n />\n {inputLocked && sampleMeta ? (\n <p className={FIELD_HINT}>\n {t('bigconsole.parsers.builder.test.loadedSample', 'Loaded a small sample')}\n {sampleMeta.total != null\n ? t('bigconsole.parsers.builder.dataPreview.rowRange', ' (first {{shown}} of {{total}} rows)', {\n shown: Math.min(PREVIEW_LIMIT, sampleMeta.total),\n total: sampleMeta.total,\n })\n : ''}{' '}\n {t(\n 'bigconsole.parsers.builder.test.loadedSampleFrom',\n 'from {{sinkName}} · locked — press Clear to edit.',\n { sinkName: sampleMeta.sinkName }\n )}\n </p>\n ) : (\n <p className={FIELD_HINT}>\n {t(\n 'bigconsole.parsers.builder.test.inputHelper',\n 'Type sample JSON to test against it, or Load a sample from the source.'\n )}\n </p>\n )}\n </div>\n\n {/* Test Button */}\n <PermissionButton permission={BIGCONSOLE_PERMISSIONS.PARSER_TEST} deniedBehavior=\"disable\">\n <Button\n type=\"button\"\n onClick={handleTestExpression}\n disabled={isTesting || !form.expression.trim()}\n variant=\"default\"\n className=\"w-full\"\n >\n {isTesting ? (\n <>\n <Loader2 className=\"w-4 h-4 mr-2 animate-spin\" />\n {t('bigconsole.parsers.builder.actions.testing', 'Testing...')}\n </>\n ) : (\n <>\n <Play className=\"w-4 h-4 mr-2\" />\n {t('bigconsole.parsers.builder.actions.runTest', 'Run Test')}\n </>\n )}\n </Button>\n </PermissionButton>\n\n {/* Test Output — a toned sub-section so the outcome reads at a glance */}\n {(testOutput || testError) && (\n <Section\n emphasis=\"muted\"\n padding=\"compact\"\n headingLevel={3}\n tone={testError ? 'danger' : 'success'}\n title={\n testError\n ? t('bigconsole.parsers.builder.test.errorOutputLabel', 'Error Output')\n : t('bigconsole.parsers.builder.test.outputLabel', 'Output')\n }\n meta={\n testError ? (\n <span className=\"inline-flex items-center gap-1 text-xs text-[var(--color-status-error-text)]\">\n <AlertCircle className=\"w-3 h-3\" /> {t('bigconsole.parsers.builder.test.failed', 'Failed')}\n </span>\n ) : (\n <span className=\"inline-flex items-center gap-1 text-xs text-status-success-text\">\n <CheckCircle2 className=\"w-3 h-3\" /> {t('bigconsole.parsers.builder.test.passed', 'Passed')}\n </span>\n )\n }\n data-testid=\"parser-test-output\"\n >\n <pre className=\"max-h-[150px] min-w-0 overflow-auto rounded-md bg-bg-canvas px-3 py-2.5 font-mono text-xs leading-relaxed text-text-primary\">\n {testError || testOutput}\n </pre>\n {testMeta && !testError && (\n <p className={FIELD_HINT}>\n {t('bigconsole.parsers.builder.test.testedSample', 'Tested a sample')}\n {testMeta.sampledRows != null && testMeta.totalRows != null\n ? t(\n 'bigconsole.parsers.builder.dataPreview.rowRange',\n ' (first {{shown}} of {{total}} rows)',\n {\n shown: testMeta.sampledRows,\n total: testMeta.totalRows,\n }\n )\n : ''}\n {t(\n 'bigconsole.parsers.builder.test.testedSampleNote',\n ' — a saved parser runs over the full source, so results may differ.'\n )}\n </p>\n )}\n </Section>\n )}\n\n {/* Help Text */}\n {!testOutput && !testError && (\n <Section\n emphasis=\"muted\"\n padding=\"compact\"\n headingLevel={3}\n title=\"No run yet\"\n data-testid=\"parser-test-empty\"\n >\n <p className=\"text-xs leading-relaxed text-text-secondary\">\n <strong>{t('bigconsole.parsers.builder.test.tipLabel', 'Tip:')}</strong>{' '}\n {t(\n 'bigconsole.parsers.builder.test.tipBody',\n 'write your expression and click “Run Test” to see the transformation.'\n )}\n </p>\n </Section>\n )}\n </Section>\n )}\n\n {/* ============ STEP 4: CACHE & REVIEW ============ */}\n {activeStep === 3 && (\n <>\n {/* Advanced settings. `primary`, not `muted`: it hosts the only\n editable control on this step. */}\n <Section\n emphasis=\"primary\"\n headingLevel={2}\n title={t('bigconsole.parsers.builder.review.cacheDurationLabel', 'Cache Duration')}\n description={t(\n 'bigconsole.parsers.builder.review.cacheDurationHelper',\n 'How long should data be cached before refreshing?'\n )}\n icon={<Settings className=\"h-icon-sm w-icon-sm\" />}\n meta={stepCounterChip}\n data-testid=\"parser-advanced-settings\"\n >\n {/* CacheTTLSelector renders its own \"Cache Duration\" field label,\n so the section heading carries it and the control hides its. */}\n <CacheTTLSelector value={form.ttl} onChange={handleTTLChange} error={errors.ttl} hideLabel />\n </Section>\n\n {/* Review — a read-only summary of the earlier steps, so `muted`. */}\n <Section\n emphasis=\"muted\"\n headingLevel={2}\n title={t('bigconsole.parsers.builder.review.label', 'Review')}\n description=\"Check these details before you save.\"\n data-testid=\"parser-review\"\n >\n <div className=\"overflow-hidden rounded-lg border border-[var(--color-border-subtle)]\">\n {(\n [\n [t('bigconsole.parsers.builder.review.name', 'Name'), form.name || '—'],\n [t('bigconsole.parsers.builder.review.outputKey', 'Output Key'), form.outputKey || '—'],\n [\n t('bigconsole.parsers.builder.review.scope', 'Scope'),\n showDashboardSelector\n ? selectedDashboardId === 'default'\n ? t('bigconsole.parsers.builder.review.scopeGlobal', 'Global')\n : dashboards.find((d) => d.id === selectedDashboardId)?.name || selectedDashboardId\n : t('bigconsole.parsers.builder.review.scopeDashboard', 'Dashboard'),\n ],\n [t('bigconsole.parsers.builder.review.type', 'Type'), parserTypeInfo[form.type].name],\n [t('bigconsole.parsers.builder.review.source', 'Source'), selectedSinkName || '—'],\n ] as const\n ).map(([k, v]) => (\n <div\n key={k}\n className=\"flex flex-wrap items-center justify-between gap-3 border-b border-[var(--color-border-subtle)] px-4 py-2.5 text-sm last:border-b-0\"\n >\n <span className=\"text-text-secondary\">{k}</span>\n <span className=\"min-w-0 break-words text-right font-medium text-text-primary\">{v}</span>\n </div>\n ))}\n </div>\n </Section>\n </>\n )}\n\n {/* Commit bar — sticks to the bottom so the wizard controls stay\n reachable from anywhere in the step */}\n <div className=\"sticky bottom-0 z-10 flex flex-col-reverse gap-control-gap border-t border-[var(--color-border-subtle)] bg-bg-canvas py-form-gap sm:flex-row sm:items-center sm:justify-between\">\n {activeStep === 0 ? (\n <Button type=\"button\" onClick={handleLeave} variant=\"secondary\" className=\"w-full sm:w-auto\">\n {t('bigconsole.parsers.builder.actions.cancel', 'Cancel')}\n </Button>\n ) : (\n <Button type=\"button\" onClick={goPrev} variant=\"secondary\" className=\"w-full sm:w-auto\">\n <ArrowLeft className=\"w-4 h-4 mr-2\" />\n {t('bigconsole.parsers.builder.actions.back', 'Back')}\n </Button>\n )}\n\n {isLastStep ? (\n <PermissionButton permission={savePermission} deniedBehavior=\"disable\">\n <Button\n type=\"submit\"\n disabled={!isFormValid || isSaving || !canSave}\n variant=\"default\"\n className=\"w-full sm:w-auto\"\n >\n {isSaving ? (\n <>\n <Loader2 className=\"w-4 h-4 mr-2 animate-spin\" />\n {t('bigconsole.parsers.builder.actions.saving', 'Saving...')}\n </>\n ) : (\n <>\n <Save className=\"w-4 h-4 mr-2\" />\n {isEdit\n ? t('bigconsole.parsers.builder.actions.saveChanges', 'Save Changes')\n : t('bigconsole.parsers.builder.actions.createParser', 'Create Parser')}\n </>\n )}\n </Button>\n </PermissionButton>\n ) : (\n <Button\n type=\"button\"\n onClick={goNext}\n disabled={!canAdvance(activeStep)}\n variant=\"default\"\n className=\"w-full sm:w-auto\"\n >\n {t('bigconsole.parsers.builder.actions.next', 'Next')}\n <ChevronRight className=\"w-4 h-4 ml-2\" />\n </Button>\n )}\n </div>\n </form>\n </SectionStack>\n </div>\n </div>\n );\n});\n\nexport default ParserBuilderPage;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAiGA,IAAM,IACJ;AAEF,SAAS,EAAa,IAAW,IAAO,IAAQ,IAAY;AAC1D,QAAO,GAAG,EAAW,GAAG,IAAW,+BAA+B,uCAAuC,GAAG,IAAQ,MAAM;;AAI5H,IAAM,IAAc,oDAGd,IAAa,kCAgBb,IAAgB,IAGhB,KAAqB,WAErB,KAAY;CAAC;CAAW;CAAU;CAAc;CAAS;AAG/D,SAAS,GAAW,GAAyB;AAC3C,QAAO;EACL;GACE,KAAK;GACL,OAAO,EAAE,kDAAkD,UAAU;GACrE,aAAa,EAAE,wDAAwD,eAAe;GACvF;EACD;GACE,KAAK;GACL,OAAO,EAAE,iDAAiD,gBAAgB;GAC1E,aAAa,EAAE,uDAAuD,gBAAgB;GACvF;EACD;GACE,KAAK;GACL,OAAO,EAAE,qDAAqD,oBAAoB;GAClF,aAAa,EAAE,2DAA2D,qBAAqB;GAChG;EACD;GACE,KAAK;GACL,OAAO,EAAE,iDAAiD,iBAAiB;GAC3E,aAAa,EAAE,uDAAuD,YAAY;GACnF;EACF;;AAMH,SAAS,GAAY,GAAsB;AACzC,QAAO,EACJ,aAAa,CACb,QAAQ,eAAe,IAAI,CAC3B,QAAQ,YAAY,GAAG,CACvB,UAAU,GAAG,GAAG;;AAMrB,SAAS,GAAa,GAAiB,GAAsB;CAC3D,IAAM,IAAqB,EAAE;AAgC7B,QA9BK,EAAK,KAAK,MAAM,GAEV,EAAK,KAAK,SAAS,MAC5B,EAAO,OAAO,EAAE,uDAAuD,qCAAqC,IAF5G,EAAO,OAAO,EAAE,sDAAsD,mBAAmB,EAKtF,EAAK,UAAU,MAAM,GAEd,eAAe,KAAK,EAAK,UAAU,KAC7C,EAAO,YAAY,EACjB,0DACA,0EACD,IALD,EAAO,YAAY,EAAE,2DAA2D,yBAAyB,EAQtG,EAAK,WAAW,MAAM,KACzB,EAAO,aAAa,EAAE,4DAA4D,yBAAyB,GAGxG,EAAK,aAAa,MAAM,KAC3B,EAAO,eAAe,EAAE,2DAA2D,8BAA8B,GAG/G,EAAK,OAAO,QAAQ,EAAK,MAAM,MAAM,EAAK,MAAM,MAAM,EAAK,MAAM,WACnE,EAAO,MAAM,EACX,4DACA,sDACD,GAGI;;AAIT,SAAS,GACP,GACiG;AACjG,QAAO;EACL,IAAI;GACF,MAAM,EAAE,iDAAiD,KAAK;GAC9D,aAAa,EACX,wDACA,6EACD;GACD,aAAa;GACb,SAAS,EACP,oDACA,qDACD;GACF;EACD,SAAS;GACP,MAAM,EAAE,sDAAsD,UAAU;GACxE,aAAa,EACX,6DACA,gFACD;GACD,aAAa;GACb,SAAS,EACP,yDACA,8CACD;GACF;EACF;;AAOH,IAAa,IAAoB,EAAK,WAA6B;CACjE,IAAM,EAAE,aAAU,WAAW,MAAiB,IAG1C,EACE,IAAW,GAAgB,EAC3B,EAAE,SAAM,IAAS,EAGjB,KAAQ,QAAc,GAAW,EAAE,EAAE,CAAC,EAAE,CAAC,EACzC,IAAiB,QAAc,GAAoB,EAAE,EAAE,CAAC,EAAE,CAAC,EAC3D,IAAY,GAAM,QAGlB,CAAC,GAAY,KAAiB,EAAS,EAAE,EAGzC,CAAC,GAAqB,MAA0B,EAAiB,GAAmB,EAGpF,KAAY,KAAgB,KAAuB,IAEnD,IAAS,MAAa,SAAS,CAAC,CAAC,GAGjC,EAAE,mBAAe,WAAW,OAAuB,IAAgB,EACnE,KAAU,GAAc,EAAuB,YAAY,EAE3D,KACF,GADY,IACE,EAAuB,gBACvB,EAAuB,cAAc,EACjD,KAAiB,IAAS,EAAuB,gBAAgB,EAAuB,eAGxF,IAAwB,CAAC,GAGzB,CAAC,GAAM,KAAW,EAAoB;EAC1C,MAAM;EACN,WAAW;EACX,aAAa;EACb,MAAM;EACN,YAAY;EACZ,cAAc;EAGd,KAAK;EACN,CAAC,EAEI,CAAC,GAAU,MAAe,QAAkC,IAAS,OAAO,EAAM;AACxF,IAAkB;EAChB,IAAI;EACJ,OAAO,EAAE,6CAA6C,oBAAoB;EAC1E,OAAO,GAAQ,GAAM,EAAS;EAC/B,CAAC;CACF,IAAM,CAAC,GAAQ,KAAa,EAAqB,EAAE,CAAC,EAC9C,CAAC,IAAmB,MAAwB,EAAS,GAAM,EAC3D,CAAC,IAAU,MAAe,EAAS,GAAM,EACzC,CAAC,IAAa,MAAkB,EAAwB,KAAK,EAG7D,CAAC,GAAW,KAAgB,EAChC,kHACD,EACK,CAAC,IAAY,KAAiB,EAAS,GAAG,EAC1C,CAAC,GAAW,KAAgB,EAAwB,KAAK,EACzD,CAAC,IAAW,MAAgB,EAAS,GAAM,EAG3C,CAAC,GAAU,KAAe,EAA0E,KAAK,EAMzG,CAAC,GAAa,MAAkB,EAAS,GAAM,EAC/C,CAAC,GAAY,MAAiB,EAA4B,KAAK,EAC/D,CAAC,IAAe,MAAoB,EAAS,GAAM,EAGnD,IAAkB,EAAO,EAAK,aAAa;AACjD,SAAgB;AACd,IAAgB,UAAU,EAAK;IAC9B,CAAC,EAAK,aAAa,CAAC;CAGvB,IAAM,CAAC,GAAiB,MAAsB,EAAS,GAAM,EACvD,CAAC,IAAa,MAAkB,EAAyC,KAAK,EAC9E,CAAC,IAAoB,MAAyB,EAAS,GAAM,EAC7D,CAAC,IAAkB,KAAuB,EAAwB,KAAK,EACvE,CAAC,GAAiB,MAAsB,EAA4B,KAAK,EAGzE,EAAE,aAAS,WAAO,aAAS,iBAAa,kBAAc,kBAAc,6BACxE,GAAoB;EAClB,WAAW,MAAa;EACxB,WAAW;EACZ,CAAC,EAEE,EAAE,cAAW,oBAAgB,uBAAoB,GAAsB,EAC3E,WAAW,IACZ,CAAC,EAGI,EAAE,gBAAY,qBAAiB,SAAS,OAAsB,IAAwB,EAGtF,IAAiB,IAAS,GAAQ,MAAM,MAAM,EAAE,OAAO,EAAS,GAAG;AAGzE,SAAgB;AAMd,EALA,IAAgB,EACZ,KAAU,KACZ,GAAY,EAAS,EAGnB,KACF,IAAiB;IAElB;EAAC;EAAQ;EAAU;EAAa;EAAgB;EAAuB;EAAgB,CAAC;CAM3F,IAAM,KAAiB,EAAsB,KAAK,EAC5C,KAAU,EAAO,EAAK,EACtB,KAAc,EAAO,EAAS;AAKpC,CAJA,QAAgB;AAEd,EADA,GAAQ,UAAU,GAClB,GAAY,UAAU;IACrB,CAAC,GAAM,EAAS,CAAC,EACpB,QAAgB;AACd,MACE,KACA,GAAiB,GAAe,SAAS,EAAe,IAAI,GAAQ,SAAS,GAAY,QAAQ,EACjG;AACA,MAAe,UAAU,EAAe;GACxC,IAAM,IAAoB;IACxB,MAAM,EAAe,QAAQ;IAC7B,WAAW,EAAe,aAAa;IACvC,aAAa,EAAe,eAAe;IAC3C,MAAM,EAAe;IACrB,YAAY,EAAe,cAAc;IACzC,cAAc,EAAe,gBAAgB;IAK7C,KAAK,EAAe,OAAO;IAC5B;AAKD,GAJA,EAAQ,EAAO,EACf,GAAY,EAAO,EACnB,GAAqB,GAAK,EAEtB,EAAe,aACjB,GAAuB,EAAe,UAAU;;IAGnD,CAAC,EAAe,CAAC;CAEpB,IAAM,IAAmB,QACV,EAAU,MAAM,MAAO,EAAG,QAAQ,EAAK,aAAa,EACpD,QAAQ,EAAK,cACzB,CAAC,GAAW,EAAK,aAAa,CAAC,EAG5B,KAAmB,GACtB,MAA2C;EAC1C,IAAM,IAAO,EAAE,OAAO;AAMtB,EALA,GAAS,OAAU;GACjB,GAAG;GACH;GACA,WAAW,KAAoB,EAAK,YAAY,GAAY,EAAK;GAClE,EAAE,EACH,GAAW,OAAU;GAAE,GAAG;GAAM,MAAM,KAAA;GAAW,EAAE;IAErD,CAAC,GAAkB,CACpB,EAGK,KAAwB,GAAa,MAA2C;EACpF,IAAM,IAAY,EAAE,OAAO,MAAM,aAAa,CAAC,QAAQ,eAAe,GAAG;AAGzE,EAFA,GAAS,OAAU;GAAE,GAAG;GAAM;GAAW,EAAE,EAC3C,GAAqB,GAAK,EAC1B,GAAW,OAAU;GAAE,GAAG;GAAM,WAAW,KAAA;GAAW,EAAE;IACvD,EAAE,CAAC,EAGA,KAA0B,GAAa,MAA8C;AACzF,KAAS,OAAU;GAAE,GAAG;GAAM,aAAa,EAAE,OAAO;GAAO,EAAE;IAC5D,EAAE,CAAC,EAGA,KAAmB,GAAa,MAAqB;AAIzD,EAHA,GAAS,OAAU;GAAE,GAAG;GAAM;GAAM,EAAE,EAEtC,EAAc,GAAG,EACjB,EAAa,KAAK;IACjB,EAAE,CAAC,EAGA,KAAyB,GAAa,MAA8C;AAExF,EADA,GAAS,OAAU;GAAE,GAAG;GAAM,YAAY,EAAE,OAAO;GAAO,EAAE,EAC5D,GAAW,OAAU;GAAE,GAAG;GAAM,YAAY,KAAA;GAAW,EAAE;IACxD,EAAE,CAAC,EAGA,KAAwB,GAC3B,MAA4C;AAmB3C,EAlBA,GAAS,OAAU;GAAE,GAAG;GAAM,cAAc,EAAE,OAAO;GAAO,EAAE,EAC9D,GAAW,OAAU;GAAE,GAAG;GAAM,cAAc,KAAA;GAAW,EAAE,EAC3D,GAAmB,GAAM,EACzB,GAAe,KAAK,EACpB,GAAmB,KAAK,EACxB,EAAoB,KAAK,EAMrB,MACF,EAAa,GAAG,EAChB,GAAe,GAAM,GAEvB,GAAc,KAAK,EACnB,EAAc,GAAG,EACjB,EAAa,KAAK,EAClB,EAAY,KAAK;IAEnB,CAAC,EAAY,CACd,EAGK,KAAkB,GAAa,MAAuB;AAE1D,EADA,GAAS,OAAU;GAAE,GAAG;GAAM;GAAK,EAAE,EACrC,GAAW,OAAU;GAAE,GAAG;GAAM,KAAK,KAAA;GAAW,EAAE;IACjD,EAAE,CAAC,EAGA,KAAwB,GAAa,MAA4C;AACrF,KAAuB,EAAE,OAAO,MAAM;IACrC,EAAE,CAAC,EAGA,KAAwB,GAAa,MAA8C;AACvF,IAAa,EAAE,OAAO,MAAM;IAC3B,EAAE,CAAC,EAKA,KAAuB,EAAY,YAAY;EACnD,IAAM,IAAe,EAAK;AACrB,SACL;MAAiB,GAAK;AACtB,OAAI;IACF,IAAM,IAAS,MAAM,EAAgB,EAAE,KAAK,GAAc,EAAE,EAAE,OAAO,GAAe,CAAC;AAIrF,QAAI,EAAgB,YAAY,EAAc;AAC9C,IAAI,GAAQ,QAAQ,KAAA,KAAa,GAAQ,QAAQ,QAC/C,EAAa,KAAK,UAAU,EAAO,KAAK,MAAM,EAAE,CAAC,EACjD,GAAe,GAAK,EACpB,GAAc;KACZ,OAAO,EAAO,cAAc;KAC5B,SAAS,EAAO,WAAW;KAC3B,UAAU;KACX,CAAC,EACF,EAAc,GAAG,EACjB,EAAa,KAAK,EAClB,EAAY,KAAK,IAIjB,EACE,EAAE,sDAAsD,sDAAsD,CAC/G;YAEI,GAAK;AACZ,QAAI,EAAgB,YAAY,EAAc;AAC9C,MACE,aAAe,QACX,EAAI,UACJ,EAAE,0DAA0D,6BAA6B,CAC9F;aACO;AACR,OAAiB,GAAM;;;IAExB;EAAC,EAAK;EAAc;EAAiB;EAAkB;EAAE,CAAC,EAGvD,KAAmB,QAAkB;AAMzC,EALA,EAAa,GAAG,EAChB,GAAe,GAAM,EACrB,GAAc,KAAK,EACnB,EAAY,KAAK,EACjB,EAAc,GAAG,EACjB,EAAa,KAAK;IACjB,EAAE,CAAC,EAGA,KAA0B,EAAY,YAAY;AACtD,MAAI,GAAiB;AACnB,MAAmB,GAAM;AACzB;;AAGF,MAAI,CAAC,EAAK,cAAc;AACtB,KACE,EAAE,uDAAuD,wCAAwC,CAClG;AACD;;AAKF,EAFA,GAAmB,GAAK,EACxB,GAAsB,GAAK,EAC3B,EAAoB,KAAK;EAEzB,IAAM,IAAe,EAAK;AAC1B,MAAI;GACF,IAAM,IAAS,MAAM,EAAgB,EAAE,KAAK,GAAc,EAAE,EAAE,OAAO,GAAe,CAAC;AAErF,OAAI,EAAgB,YAAY,EAAc;AAC9C,GAAI,GAAQ,QAAQ,KAAA,KAAa,GAAQ,QAAQ,QAC/C,GAAe,EAAO,IAA+B,EACrD,GAAmB;IACjB,OAAO,EAAO,cAAc;IAC5B,SAAS,EAAO,WAAW;IAC3B,UAAU;IACX,CAAC,IAEF,EACE,EAAE,kDAAkD,yCAAyC,CAC9F;WAEI,GAAK;AACZ,OAAI,EAAgB,YAAY,EAAc;AAC9C,KACE,aAAe,QACX,EAAI,UACJ,EAAE,oDAAoD,sBAAsB,CACjF;YACO;AACR,MAAsB,GAAM;;IAE7B;EAAC;EAAiB,EAAK;EAAc;EAAiB;EAAkB;EAAE,CAAC,EAGxE,KAAuB,EAAY,YAAY;AACnD,MAAI,CAAC,EAAK,WAAW,MAAM,EAAE;AAC3B,KAAa,EAAE,4DAA4D,yBAAyB,CAAC;AACrG;;EAMF,IAAI;AAOJ,MAAI,EACF,KAAQ;GACN,MAAM,EAAK;GACX,YAAY,EAAK;GACjB,aAAa,EAAK;GAClB,aAAa;GACd;OACI;GACL,IAAI;AACJ,OAAI;AACF,QAAc,KAAK,MAAM,EAAU;WAC7B;AACN,MAAa,EAAE,sDAAsD,+BAA+B,CAAC;AACrG;;AAEF,OAAQ;IAAE,MAAM,EAAK;IAAM,YAAY,EAAK;IAAY,YAAY;IAAa;;AAMnF,EAHA,GAAa,GAAK,EAClB,EAAa,KAAK,EAClB,EAAc,GAAG,EACjB,EAAY,KAAK;AAEjB,MAAI;GACF,IAAM,IAAS,MAAM,GAAqB,EAAM;AAEhD,GAAI,IACE,EAAO,WACT,EAAc,KAAK,UAAU,EAAO,QAAQ,MAAM,EAAE,CAAC,EACjD,EAAO,WACT,EAAY;IAAE,aAAa,EAAO,eAAe;IAAM,WAAW,EAAO,aAAa;IAAM,CAAC,IAG/F,EAAa,EAAO,SAAS,EAAE,gDAAgD,cAAc,CAAC,GAKhG,EACE,EAAE,uDAAuD,0CAA0C,CACpG;WAEI,GAAK;AACZ,KACE,aAAe,QAAQ,EAAI,UAAU,EAAE,gDAAgD,cAAc,CACtG;YACO;AACR,MAAa,GAAM;;IAEpB;EAAC,EAAK;EAAM,EAAK;EAAY,EAAK;EAAc;EAAW;EAAa;EAAsB;EAAE,CAAC,EAG9F,IAAc,QAAkB;AACpC,EACE,EADE,IACO,eAAe,EAAa,YAE5B,WAAW;IAErB,CAAC,GAAU,EAAa,CAAC,EAGtB,KAAe,EAAY,YAAY;AAC3C,KAAe,KAAK;EAGpB,IAAM,IAAmB,GAAa,GAAM,EAAE;AAC9C,MAAI,OAAO,KAAK,EAAiB,CAAC,SAAS,GAAG;AAI5C,GAHA,EAAU,EAAiB,EAGvB,EAAiB,QAAQ,EAAiB,YAC5C,EAAc,EAAE,GACP,EAAiB,eAC1B,EAAc,EAAE,GACP,EAAiB,cAC1B,EAAc,EAAE;AAElB;;AAGF,KAAY,GAAK;AACjB,MAAI;AACF,OAAI,KAAU;QAgBR,CAdW,MAAM,GACnB,EAAe,IACf;KACE,MAAM,EAAK;KACX,aAAa,EAAK,eAAe,KAAA;KACjC,YAAY,EAAK;KACjB,cAAc,EAAK;KACnB,WAAW,EAAK;KAGhB,KAAK,EAAK;KACX,EACD,EAAe,QAChB,CAEC,OAAU,MAAM,EAAE,kDAAkD,0BAA0B,CAAC;cAc7F,CAVW,MAAM,GAAa;IAChC,WAAW,MAAa;IACxB,MAAM,EAAK;IACX,MAAM,EAAK;IACX,YAAY,EAAK;IACjB,cAAc,EAAK;IACnB,WAAW,EAAK;IAChB,aAAa,EAAK,eAAe,KAAA;IACjC,KAAK,EAAK,OAAO,KAAA;IAClB,CAAC,CAEA,OAAU,MAAM,EAAE,kDAAkD,0BAA0B,CAAC;AAInG,GADA,GAAY,EAAK,EACjB,GAAa;WACN,GAAK;AACZ,MACE,aAAe,QAAQ,EAAI,UAAU,EAAE,gDAAgD,wBAAwB,CAChH;YACO;AACR,MAAY,GAAM;;IAEnB;EAAC;EAAM;EAAQ;EAAgB;EAAc;EAAc;EAAW;EAAa;EAAE,CAAC,EAGnF,KAAc,QAEhB,EAAK,KAAK,MAAM,CAAC,UAAU,KAC3B,EAAK,WAAW,MAAM,CAAC,SAAS,KAChC,EAAK,aAAa,MAAM,CAAC,SAAS,KAClC,EAAK,UAAU,MAAM,CAAC,SAAS,KAC/B,eAAe,KAAK,EAAK,UAAU,EAEpC;EAAC,EAAK;EAAM,EAAK;EAAY,EAAK;EAAc,EAAK;EAAU,CAAC,EAG7D,IAAa,GAChB,MAA0B;AAEzB,UADqB,GAAU,IAC/B;GACE,KAAK,UACH,QACE,EAAK,KAAK,MAAM,CAAC,UAAU,KAAK,EAAK,UAAU,MAAM,CAAC,SAAS,KAAK,eAAe,KAAK,EAAK,UAAU;GAE3G,KAAK,SACH,QAAO,EAAK,aAAa,MAAM,CAAC,SAAS;GAC3C,KAAK,aACH,QAAO,EAAK,WAAW,MAAM,CAAC,SAAS;GACzC,QACE,QAAO;;IAGb;EAAC,EAAK;EAAM,EAAK;EAAW,EAAK;EAAc,EAAK;EAAW,CAChE,EAEK,KAAW,GACd,MAAiB;EAChB,IAAM,IAAS,KAAK,IAAI,GAAG,KAAK,IAAI,GAAM,IAAY,EAAE,CAAC;AAIzD,MAAI,IAAS;QACN,IAAI,IAAI,GAAY,IAAI,GAAQ,IACnC,KAAI,CAAC,EAAW,EAAE,CAAE;;AAGxB,IAAc,EAAO;IAEvB;EAAC;EAAY;EAAY;EAAU,CACpC,EACK,KAAS,QAAkB;AAC/B,KAAe,MAAM,KAAK,IAAI,IAAI,GAAG,IAAY,EAAE,CAAC;IACnD,CAAC,EAAU,CAAC,EACT,KAAS,QAAkB;AAC/B,KAAe,MAAM,KAAK,IAAI,IAAI,GAAG,EAAE,CAAC;IACvC,EAAE,CAAC;AAGN,KAAK,MAAW,KAAW,GACzB,QACE,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,GAAD,EAAS,WAAU,4CAA6C,CAAA;EAC5D,CAAA;AAKV,KAAI,KAAU,CAAC,GACb,QACE,kBAAC,IAAD;EACE,OAAO,EAAE,iDAAiD,gBAAgB;EAC1E,aAAa,EACX,uDACA,iDACD;EACD,CAAA;AAKN,KAAI,GACF,QACE,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,GAAD;GACE,MAAK;GACL,cAAc;GACd,OAAO,EAAE,sDAAsD,wBAAwB;GACvF,aAAY;GACZ,MAAM,kBAAC,IAAD,EAAa,WAAU,6DAA8D,CAAA;GAC3F,SACE,kBAAC,GAAD;IAAQ,SAAS;IAAa,SAAQ;IAAY,MAAK;cAAvD,CACE,kBAAC,IAAD,EAAW,WAAU,gBAAiB,CAAA,EACrC,EAAE,mDAAmD,kBAAkB,CACjE;;GAEX,eAAY;aAEZ,kBAAC,KAAD;IAAG,WAAU;cAAqD,GAAM;IAAY,CAAA;GAC5E,CAAA;EACN,CAAA;CAIV,IAAM,KAAW,EAAe,EAAK,OAC/B,KAAa,MAAe,IAAY,GAGxC,IACJ,kBAAC,QAAD;EAAM,WAAU;YACb,EAAE,iDAAiD,iCAAiC;GACnF,SAAS,IAAa;GACtB,OAAO;GACR,CAAC;EACG,CAAA;AAGT,QACE,kBAAC,OAAD;EAAK,aAAU;EAA4B,WAAU;YACnD,kBAAC,OAAD;GAAK,WAAU;aACb,kBAAC,GAAD,EAAA,UAAA;IAEE,kBAAC,OAAD;KAAK,WAAU;eAAf;MACE,kBAAC,GAAD;OAAQ,SAAS;OAAa,SAAQ;OAAQ,MAAK;OAAK,WAAU;iBAAlE,CACE,kBAAC,IAAD,EAAW,WAAU,gBAAiB,CAAA,EACrC,EAAE,mDAAmD,kBAAkB,CACjE;;MACT,kBAAC,MAAD;OAAI,WAAU;iBACX,IACG,EAAE,+CAA+C,cAAc,GAC/D,EAAE,iDAAiD,gBAAgB;OACpE,CAAA;MACL,kBAAC,KAAD;OAAG,WAAU;iBACV,EAAE,8CAA8C,kDAAkD;OACjG,CAAA;MACA;;IAEN,kBAAC,IAAD;KAAa,WAAU;eACpB,EACC,6CACA,kQACD;KACW,CAAA;IAOd,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,IAAD;MAAgB;MAAO,QAAQ;MAAY,aAAa;MAAY,CAAA;KAChE,CAAA;IAGL,MACC,kBAAC,GAAD;KACE,MAAK;KACL,cAAc;KACd,OAAO,EAAE,sDAAsD,wBAAwB;KACvF,MAAM,kBAAC,IAAD,EAAa,WAAU,6DAA8D,CAAA;KAC3F,eAAY;eAEZ,kBAAC,KAAD;MAAG,WAAU;gBAAqD;MAAgB,CAAA;KAC1E,CAAA;IAMZ,kBAAC,QAAD;KACE,WAAU;KACV,WAAW,MAAM;AAEf,MADA,EAAE,gBAAgB,EACd,MACG,IAAc;;eALzB;MAUG,MAAe,KACd,kBAAC,GAAD;OACE,UAAS;OACT,cAAc;OACd,OAAM;OACN,aAAY;OACZ,MAAM,kBAAC,IAAD,EAAW,WAAU,uBAAwB,CAAA;OACnD,MAAM;OACN,eAAc;OACd,eAAY;iBARd;QAUE,kBAAC,OAAD;SAAK,WAAU;mBAAf,CAEE,kBAAC,OAAD,EAAA,UAAA;UACE,kBAAC,SAAD;WAAO,SAAQ;WAAO,WAAW;qBAAjC;YACG,EAAE,gDAAgD,OAAO;YAAE;YAC5D,kBAAC,QAAD;aAAM,WAAU;uBAAyB;aAAQ,CAAA;YAC3C;;UACR,kBAAC,SAAD;WACE,IAAG;WACH,MAAK;WACL,OAAO,EAAK;WACZ,UAAU;WACV,aAAa,EACX,sDACA,8BACD;WACD,WAAW,EAAa,EAAQ,EAAO,KAAM;WAC7C,CAAA;UACD,EAAO,QAAQ,kBAAC,KAAD;WAAG,WAAU;qBAAyC,EAAO;WAAS,CAAA;UAClF,EAAA,CAAA,EAGN,kBAAC,OAAD,EAAA,UAAA;UACE,kBAAC,SAAD;WAAO,SAAQ;WAAY,WAAW;qBAAtC;YACG,EAAE,qDAAqD,aAAa;YAAE;YACvE,kBAAC,QAAD;aAAM,WAAU;uBAAyB;aAAQ,CAAA;YAC3C;;UACR,kBAAC,SAAD;WACE,IAAG;WACH,MAAK;WACL,OAAO,EAAK;WACZ,UAAU;WACV,aAAY;WACZ,UAAU;WACV,WAAW,EAAa,EAAQ,EAAO,WAAY,YAAY;WAC/D,CAAA;UACD,EAAO,aAAa,kBAAC,KAAD;WAAG,WAAU;qBAAyC,EAAO;WAAc,CAAA;UAC/F,CAAC,KACA,kBAAC,KAAD;WAAG,WAAW;qBACX,EACC,sDACA,iDACD;WACC,CAAA;UAEF,EAAA,CAAA,CACF;;QAGN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;SAAO,SAAQ;SAAc,WAAW;mBACrC,EAAE,uDAAuD,cAAc;SAClE,CAAA,EACR,kBAAC,YAAD;SACE,IAAG;SACH,OAAO,EAAK;SACZ,UAAU;SACV,aAAa,EACX,6DACA,oCACD;SACD,MAAM;SACN,WAAW,EAAa,IAAO,WAAW;SAC1C,CAAA,CACE,EAAA,CAAA;QAGL,KACC,kBAAC,OAAD,EAAA,UAAA;SACE,kBAAC,SAAD;UAAO,SAAQ;UAAY,WAAW,GAAG,EAAY;oBAArD,CACE,kBAAC,IAAD;WAAiB,eAAY;WAAO,WAAU;WAAY,CAAA,EACzD,EAAE,qDAAqD,kBAAkB,CACpE;;SACR,kBAAC,UAAD;UACE,IAAG;UACH,OAAO;UACP,UAAU;UACV,UAAU,MAAqB;UAC/B,WAAW,GAAc;oBAL3B,CAOE,kBAAC,UAAD;WAAQ,OAAM;qBACX,EAAE,4DAA4D,gCAAgC;WACxF,CAAA,EACR,GAAW,KAAK,MACf,kBAAC,UAAD;WAA2B,OAAO,EAAU;qBACzC,EAAU;WACJ,EAFI,EAAU,GAEd,CACT,CACK;;SACT,kBAAC,KAAD;UAAG,WAAW;oBACX,IACG,EACE,4DACA,oDACD,GACD,MAAwB,YACtB,EACE,4DACA,sDACD,GACD,EACE,4DACA,gEACD;UACL,CAAA;SACA,EAAA,CAAA;QAEA;;MAIX,MAAe,KAEd,kBAAC,GAAD;OACE,UAAS;OACT,cAAc;OACd,OAAM;OACN,aAAY;OACZ,MAAM,kBAAC,IAAD,EAAM,WAAU,uBAAwB,CAAA;OAC9C,MAAM;OACN,eAAc;OACd,eAAY;iBARd,CAWE,kBAAC,YAAD;QAAU,WAAU;kBAApB,CACE,kBAAC,UAAD;SAAQ,WAAU;mBAAlB;UACG,EAAE,sDAAsD,cAAc;UAAE;UACzE,kBAAC,QAAD;WAAM,WAAU;qBAAyB;WAAQ,CAAA;UAC1C;YACT,kBAAC,OAAD;SAAK,WAAU;mBACX,OAAO,KAAK,EAAe,CAAkB,KAAK,MAAS;UAC3D,IAAM,IAAO,EAAe;AAC5B,iBACE,kBAAC,SAAD;WAEE,WAAW;;;;;gCAML,EAAK,SAAS,IACV,oDACA,4EACL;;qBAXP,CAcE,kBAAC,SAAD;YACE,MAAK;YACL,MAAK;YACL,OAAO;YACP,SAAS,EAAK,SAAS;YACvB,gBAAgB,GAAiB,EAAK;YACtC,WAAU;YACV,CAAA,EACF,kBAAC,QAAD;YAAM,WAAU;sBAAhB,CACE,kBAAC,QAAD;aAAM,WAAU;uBAA+C,EAAK;aAAY,CAAA,EAChF,kBAAC,QAAD;aAAM,WAAU;uBAA4C,EAAK;aAAmB,CAAA,CAC/E;cACD;aAzBD,EAyBC;WAEV;SACE,CAAA,CACG;WAGX,kBAAC,OAAD,EAAA,UAAA;QACE,kBAAC,SAAD;SAAO,SAAQ;SAAe,WAAW;mBAAzC;UACG,EAAE,0DAA0D,kBAAkB;UAAE;UACjF,kBAAC,QAAD;WAAM,WAAU;qBAAyB;WAAQ,CAAA;UAC3C;;QACR,kBAAC,UAAD;SACE,IAAG;SACH,OAAO,EAAK;SACZ,UAAU;SACV,WAAW,EAAa,EAAQ,EAAO,aAAc;mBAJvD,CAME,kBAAC,UAAD;UAAQ,OAAM;oBACX,EAAE,gEAAgE,uBAAuB;UACnF,CAAA,EACR,EAAU,KAAK,MACd,kBAAC,UAAD;UAAoB,OAAO,EAAG;oBAC3B,EAAG,QAAQ,EAAG;UACR,EAFI,EAAG,GAEP,CACT,CACK;;QACR,EAAO,gBACN,kBAAC,KAAD;SAAG,WAAU;mBAAyC,EAAO;SAAiB,CAAA;QAE/E,EAAU,WAAW,IACpB,kBAAC,KAAD;SAAG,WAAW;mBACX,EACC,+DACA,kFACD;SACC,CAAA,GAEJ,kBAAC,KAAD;SAAG,WAAW;mBAAY;SAAwD,CAAA;QAInF,EAAK,gBACJ,kBAAC,OAAD;SAAK,WAAU;mBAAf,CACE,kBAAC,UAAD;UACE,MAAK;UACL,SAAS;UACT,iBAAe;UACf,iBAAc;UACd,WAAU;oBALZ;WAOqB,EAAlB,IAAmB,KAAsC,IAAvC,EAAa,WAAU,WAAY,CAAuC;WAC7F,kBAAC,IAAD,EAAK,WAAU,WAAY,CAAA;WAC1B,EAAE,iDAAiD,oBAAoB;WACjE;aAGR,KACC,kBAAC,GAAD;UACE,IAAG;UACH,UAAS;UACT,SAAQ;UACR,cAAc;UACd,OAAM;UACN,aAAY;UACZ,WAAU;UACV,eAAY;oBAEX,KACC,kBAAC,OAAD;WAAK,WAAU;qBAAf,CACE,kBAAC,GAAD,EAAS,WAAU,4CAA6C,CAAA,EAChE,kBAAC,QAAD;YAAM,WAAU;sBACb,EAAE,kDAAkD,kBAAkB;YAClE,CAAA,CACH;eACJ,KACF,kBAAC,KAAD;WAAG,WAAU;qBAAkC;WAAqB,CAAA,GAClE,KACF,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,OAAD;WAAK,WAAU;qBACZ,KAAK,UAAU,IAAa,MAAM,EAAE;WACjC,CAAA,EACL,KACC,kBAAC,KAAD;WAAG,WAAW;qBAAd;YACG,EAAE,2DAA2D,sBAAsB;YACnF,EAAgB,SAAS,OAStB,KARA,EACE,mDACA,wCACA;aACE,OAAO,KAAK,IAAI,GAAe,EAAgB,MAAM;aACrD,OAAO,EAAgB;aACxB,CACF;YAEJ;YACA,EAAgB;YACf;aAEL,EAAA,CAAA,GAEH,kBAAC,KAAD;WAAG,WAAU;qBACV,EAAE,iDAAiD,oBAAoB;WACtE,CAAA;UAEE,CAAA,CAER;;QAEJ,EAAA,CAAA,CACE;;MAIX,MAAe,KACd,kBAAC,GAAD;OACE,UAAS;OACT,cAAc;OACd,OAAM;OACN,aAAY;OACZ,MAAM,kBAAC,IAAD,EAAM,WAAU,uBAAwB,CAAA;OAC9C,MAAM;OACN,eAAc;OACd,eAAY;iBARd;QAWE,kBAAC,OAAD,EAAA,UAAA;SACE,kBAAC,SAAD;UAAO,SAAQ;UAAa,WAAW;oBAAvC;WACG,EAAE,sDAAsD,aAAa;WAAE;WACxE,kBAAC,QAAD;YAAM,WAAU;sBAAyB;YAAQ,CAAA;WAC3C;;SACR,kBAAC,YAAD;UACE,IAAG;UACH,OAAO,EAAK;UACZ,UAAU;UACV,aAAa,GAAS;UACtB,MAAM;UACN,WAAW,EAAa,EAAQ,EAAO,YAAa,mCAAmC;UACvF,CAAA;SACD,EAAO,cAAc,kBAAC,KAAD;UAAG,WAAU;oBAAyC,EAAO;UAAe,CAAA;SAClG,kBAAC,KAAD;UAAG,WAAW;oBACX,EAAE,wDAAwD,wBAAwB,EACjF,SAAS,GAAS,SACnB,CAAC;UACA,CAAA;SACA,EAAA,CAAA;QAIN,kBAAC,OAAD,EAAA,UAAA;SACE,kBAAC,OAAD;UAAK,WAAU;oBAAf,CACE,kBAAC,SAAD;WAAO,SAAQ;WAAa,WAAW,GAAG,EAAY;qBAAtD,CACG,EAAE,kDAAkD,aAAa,EAClE,kBAAC,QAAD;YACE,WAAW,gFACT,IACI,+EACA;sBAGL,IACG,EAAE,iDAAiD,iBAAiB,GACpE,EAAE,8CAA8C,cAAc;YAC7D,CAAA,CACD;cACR,kBAAC,OAAD;WAAK,WAAU;qBAAf,CACG,EAAK,gBAAgB,CAAC,KACrB,kBAAC,UAAD;YACE,MAAK;YACL,SAAS;YACT,UAAU;YACV,WAAU;sBAJZ,CAMG,KACC,kBAAC,GAAD,EAAS,WAAU,4BAA6B,CAAA,GAEhD,kBAAC,IAAD,EAAU,WAAU,eAAgB,CAAA,EAErC,EAAE,iDAAiD,cAAc,CAC3D;eAEV,KACC,kBAAC,UAAD;YACE,MAAK;YACL,SAAS;YACT,WAAU;sBAHZ,CAKE,kBAAC,IAAD,EAAG,WAAU,eAAgB,CAAA,EAC5B,EAAE,4CAA4C,QAAQ,CAChD;cAEP;aACF;;SACN,kBAAC,YAAD;UACE,IAAG;UACH,OAAO;UACP,UAAU;UACV,UAAU;UACV,aAAa,EACX,oDACA,0EACD;UACD,MAAM;UACN,WAAW,EACT,IACA,sCAAsC,IAAc,+CAA+C,KACpG;UACD,CAAA;SACD,KAAe,IACd,kBAAC,KAAD;UAAG,WAAW;oBAAd;WACG,EAAE,gDAAgD,wBAAwB;WAC1E,EAAW,SAAS,OAKjB,KAJA,EAAE,mDAAmD,wCAAwC;YAC3F,OAAO,KAAK,IAAI,GAAe,EAAW,MAAM;YAChD,OAAO,EAAW;YACnB,CAAC;WACE;WACP,EACC,oDACA,qDACA,EAAE,UAAU,EAAW,UAAU,CAClC;WACC;cAEJ,kBAAC,KAAD;UAAG,WAAW;oBACX,EACC,+CACA,yEACD;UACC,CAAA;SAEF,EAAA,CAAA;QAGN,kBAAC,IAAD;SAAkB,YAAY,EAAuB;SAAa,gBAAe;mBAC/E,kBAAC,GAAD;UACE,MAAK;UACL,SAAS;UACT,UAAU,MAAa,CAAC,EAAK,WAAW,MAAM;UAC9C,SAAQ;UACR,WAAU;oBAET,KACC,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD,EAAS,WAAU,6BAA8B,CAAA,EAChD,EAAE,8CAA8C,aAAa,CAC7D,EAAA,CAAA,GAEH,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,IAAD,EAAM,WAAU,gBAAiB,CAAA,EAChC,EAAE,8CAA8C,WAAW,CAC3D,EAAA,CAAA;UAEE,CAAA;SACQ,CAAA;SAGjB,MAAc,MACd,kBAAC,GAAD;SACE,UAAS;SACT,SAAQ;SACR,cAAc;SACd,MAAM,IAAY,WAAW;SAC7B,OACE,IACI,EAAE,oDAAoD,eAAe,GACrE,EAAE,+CAA+C,SAAS;SAEhE,MACE,IACE,kBAAC,QAAD;UAAM,WAAU;oBAAhB;WACE,kBAAC,IAAD,EAAa,WAAU,WAAY,CAAA;;WAAE,EAAE,0CAA0C,SAAS;WACrF;cAEP,kBAAC,QAAD;UAAM,WAAU;oBAAhB;WACE,kBAAC,IAAD,EAAc,WAAU,WAAY,CAAA;;WAAE,EAAE,0CAA0C,SAAS;WACtF;;SAGX,eAAY;mBArBd,CAuBE,kBAAC,OAAD;UAAK,WAAU;oBACZ,KAAa;UACV,CAAA,EACL,KAAY,CAAC,KACZ,kBAAC,KAAD;UAAG,WAAW;oBAAd;WACG,EAAE,gDAAgD,kBAAkB;WACpE,EAAS,eAAe,QAAQ,EAAS,aAAa,OACnD,EACE,mDACA,wCACA;YACE,OAAO,EAAS;YAChB,OAAO,EAAS;YACjB,CACF,GACD;WACH,EACC,oDACA,sEACD;WACC;YAEE;;QAIX,CAAC,MAAc,CAAC,KACf,kBAAC,GAAD;SACE,UAAS;SACT,SAAQ;SACR,cAAc;SACd,OAAM;SACN,eAAY;mBAEZ,kBAAC,KAAD;UAAG,WAAU;oBAAb;WACE,kBAAC,UAAD,EAAA,UAAS,EAAE,4CAA4C,OAAO,EAAU,CAAA;WAAC;WACxE,EACC,2CACA,wEACD;WACC;;SACI,CAAA;QAEJ;;MAIX,MAAe,KACd,kBAAA,GAAA,EAAA,UAAA,CAGE,kBAAC,GAAD;OACE,UAAS;OACT,cAAc;OACd,OAAO,EAAE,wDAAwD,iBAAiB;OAClF,aAAa,EACX,yDACA,oDACD;OACD,MAAM,kBAAC,IAAD,EAAU,WAAU,uBAAwB,CAAA;OAClD,MAAM;OACN,eAAY;iBAIZ,kBAAC,IAAD;QAAkB,OAAO,EAAK;QAAK,UAAU;QAAiB,OAAO,EAAO;QAAK,WAAA;QAAY,CAAA;OACrF,CAAA,EAGV,kBAAC,GAAD;OACE,UAAS;OACT,cAAc;OACd,OAAO,EAAE,2CAA2C,SAAS;OAC7D,aAAY;OACZ,eAAY;iBAEZ,kBAAC,OAAD;QAAK,WAAU;kBAEX;SACE,CAAC,EAAE,0CAA0C,OAAO,EAAE,EAAK,QAAQ,IAAI;SACvE,CAAC,EAAE,+CAA+C,aAAa,EAAE,EAAK,aAAa,IAAI;SACvF,CACE,EAAE,2CAA2C,QAAQ,EACrD,IACI,MAAwB,YACtB,EAAE,iDAAiD,SAAS,GAC5D,GAAW,MAAM,MAAM,EAAE,OAAO,EAAoB,EAAE,QAAQ,IAChE,EAAE,oDAAoD,YAAY,CACvE;SACD,CAAC,EAAE,0CAA0C,OAAO,EAAE,EAAe,EAAK,MAAM,KAAK;SACrF,CAAC,EAAE,4CAA4C,SAAS,EAAE,KAAoB,IAAI;SACnF,CACD,KAAK,CAAC,GAAG,OACT,kBAAC,OAAD;SAEE,WAAU;mBAFZ,CAIE,kBAAC,QAAD;UAAM,WAAU;oBAAuB;UAAS,CAAA,EAChD,kBAAC,QAAD;UAAM,WAAU;oBAAgE;UAAS,CAAA,CACrF;WALC,EAKD,CACN;QACE,CAAA;OACE,CAAA,CACT,EAAA,CAAA;MAKL,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACG,MAAe,IACd,kBAAC,GAAD;QAAQ,MAAK;QAAS,SAAS;QAAa,SAAQ;QAAY,WAAU;kBACvE,EAAE,6CAA6C,SAAS;QAClD,CAAA,GAET,kBAAC,GAAD;QAAQ,MAAK;QAAS,SAAS;QAAQ,SAAQ;QAAY,WAAU;kBAArE,CACE,kBAAC,IAAD,EAAW,WAAU,gBAAiB,CAAA,EACrC,EAAE,2CAA2C,OAAO,CAC9C;WAGV,KACC,kBAAC,IAAD;QAAkB,YAAY;QAAgB,gBAAe;kBAC3D,kBAAC,GAAD;SACE,MAAK;SACL,UAAU,CAAC,MAAe,MAAY,CAAC;SACvC,SAAQ;SACR,WAAU;mBAET,KACC,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD,EAAS,WAAU,6BAA8B,CAAA,EAChD,EAAE,6CAA6C,YAAY,CAC3D,EAAA,CAAA,GAEH,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,IAAD,EAAM,WAAU,gBAAiB,CAAA,EAChC,IACG,EAAE,kDAAkD,eAAe,GACnE,EAAE,mDAAmD,gBAAgB,CACxE,EAAA,CAAA;SAEE,CAAA;QACQ,CAAA,GAEnB,kBAAC,GAAD;QACE,MAAK;QACL,SAAS;QACT,UAAU,CAAC,EAAW,EAAW;QACjC,SAAQ;QACR,WAAU;kBALZ,CAOG,EAAE,2CAA2C,OAAO,EACrD,kBAAC,IAAD,EAAc,WAAU,gBAAiB,CAAA,CAClC;UAEP;;MACD;;IACM,EAAA,CAAA;GACX,CAAA;EACF,CAAA;EAER"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ParserViewPage.d.ts","sourceRoot":"","sources":["../../../src/bigconsole/pages/ParserViewPage.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AA6DH,eAAO,MAAM,cAAc,8CAujBzB,CAAC;AAEH,eAAe,cAAc,CAAC"}
|