@burdenoff/microfe-bigconsole 2026.930.2 → 2026.1001.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bigconsole/AdminRoot.d.ts +10 -0
- package/dist/bigconsole/AdminRoot.d.ts.map +1 -0
- package/dist/bigconsole/AdminRoutes.d.ts +7 -0
- package/dist/bigconsole/AdminRoutes.d.ts.map +1 -0
- package/dist/bigconsole/BigConsoleRoot.d.ts +29 -0
- package/dist/bigconsole/BigConsoleRoot.d.ts.map +1 -0
- package/dist/bigconsole/BigConsoleRoutes.d.ts +6 -0
- package/dist/bigconsole/BigConsoleRoutes.d.ts.map +1 -0
- package/dist/bigconsole/assistant/assistantApi.d.ts +91 -0
- package/dist/bigconsole/assistant/assistantApi.d.ts.map +1 -0
- package/dist/bigconsole/assistant/assistantProduct.d.ts +73 -0
- package/dist/bigconsole/assistant/assistantProduct.d.ts.map +1 -0
- package/dist/bigconsole/assistant/assistantPrompt.d.ts +48 -0
- package/dist/bigconsole/assistant/assistantPrompt.d.ts.map +1 -0
- package/dist/bigconsole/assistant/assistantRunPersistence.d.ts +30 -0
- package/dist/bigconsole/assistant/assistantRunPersistence.d.ts.map +1 -0
- package/dist/bigconsole/assistant/assistantRunPersistence.js +14 -11
- package/dist/bigconsole/assistant/assistantRunPersistence.js.map +1 -1
- package/dist/bigconsole/assistant/assistantRunStore.d.ts +75 -0
- package/dist/bigconsole/assistant/assistantRunStore.d.ts.map +1 -0
- package/dist/bigconsole/assistant/assistantRunStore.js +78 -47
- package/dist/bigconsole/assistant/assistantRunStore.js.map +1 -1
- package/dist/bigconsole/assistant/assistantRuntime.d.ts +52 -0
- package/dist/bigconsole/assistant/assistantRuntime.d.ts.map +1 -0
- package/dist/bigconsole/assistant/attachmentExtract.d.ts +49 -0
- package/dist/bigconsole/assistant/attachmentExtract.d.ts.map +1 -0
- package/dist/bigconsole/assistant/conversationHistoryApi.d.ts +38 -0
- package/dist/bigconsole/assistant/conversationHistoryApi.d.ts.map +1 -0
- package/dist/bigconsole/assistant/createSandboxAssistantTransport.d.ts +67 -0
- package/dist/bigconsole/assistant/createSandboxAssistantTransport.d.ts.map +1 -0
- package/dist/bigconsole/assistant/index.d.ts +33 -0
- package/dist/bigconsole/assistant/index.d.ts.map +1 -0
- package/dist/bigconsole/assistant/modes.d.ts +255 -0
- package/dist/bigconsole/assistant/modes.d.ts.map +1 -0
- package/dist/bigconsole/assistant/pageContext.d.ts +65 -0
- package/dist/bigconsole/assistant/pageContext.d.ts.map +1 -0
- package/dist/bigconsole/assistant/previewController.d.ts +33 -0
- package/dist/bigconsole/assistant/previewController.d.ts.map +1 -0
- package/dist/bigconsole/assistant/previewController.js +28 -19
- package/dist/bigconsole/assistant/previewController.js.map +1 -1
- package/dist/bigconsole/assistant/previewMutationResult.d.ts +11 -0
- package/dist/bigconsole/assistant/previewMutationResult.d.ts.map +1 -0
- package/dist/bigconsole/assistant/previewMutationResult.js +59 -0
- package/dist/bigconsole/assistant/previewMutationResult.js.map +1 -0
- package/dist/bigconsole/assistant/previewRunAction.d.ts +25 -0
- package/dist/bigconsole/assistant/previewRunAction.d.ts.map +1 -0
- package/dist/bigconsole/assistant/product.d.ts +28 -0
- package/dist/bigconsole/assistant/product.d.ts.map +1 -0
- package/dist/bigconsole/assistant/types.d.ts +57 -0
- package/dist/bigconsole/assistant/types.d.ts.map +1 -0
- package/dist/bigconsole/assistant/useAssistantRunWorkspace.d.ts +17 -0
- package/dist/bigconsole/assistant/useAssistantRunWorkspace.d.ts.map +1 -0
- package/dist/bigconsole/assistant/useAssistantRunWorkspace.js +11 -6
- package/dist/bigconsole/assistant/useAssistantRunWorkspace.js.map +1 -1
- package/dist/bigconsole/assistant/useWorkspaceWriteAccess.d.ts +36 -0
- package/dist/bigconsole/assistant/useWorkspaceWriteAccess.d.ts.map +1 -0
- package/dist/bigconsole/components/DrilldownDashboardRenderer.d.ts +13 -0
- package/dist/bigconsole/components/DrilldownDashboardRenderer.d.ts.map +1 -0
- package/dist/bigconsole/components/DrilldownDashboardRenderer.js +67 -47
- package/dist/bigconsole/components/DrilldownDashboardRenderer.js.map +1 -1
- package/dist/bigconsole/components/DrilldownModal.d.ts +11 -0
- package/dist/bigconsole/components/DrilldownModal.d.ts.map +1 -0
- package/dist/bigconsole/components/builder/BuilderCanvas.d.ts +17 -0
- package/dist/bigconsole/components/builder/BuilderCanvas.d.ts.map +1 -0
- package/dist/bigconsole/components/builder/BuilderTopbar.d.ts +17 -0
- package/dist/bigconsole/components/builder/BuilderTopbar.d.ts.map +1 -0
- package/dist/bigconsole/components/builder/DashboardEditorShell.d.ts +9 -0
- package/dist/bigconsole/components/builder/DashboardEditorShell.d.ts.map +1 -0
- package/dist/bigconsole/components/builder/WidgetInspector.d.ts +15 -0
- package/dist/bigconsole/components/builder/WidgetInspector.d.ts.map +1 -0
- package/dist/bigconsole/components/builder/index.d.ts +5 -0
- package/dist/bigconsole/components/builder/index.d.ts.map +1 -0
- package/dist/bigconsole/components/builder/inspector/AdvancedSection.d.ts +17 -0
- package/dist/bigconsole/components/builder/inspector/AdvancedSection.d.ts.map +1 -0
- package/dist/bigconsole/components/builder/inspector/AppearanceSection.d.ts +11 -0
- package/dist/bigconsole/components/builder/inspector/AppearanceSection.d.ts.map +1 -0
- package/dist/bigconsole/components/builder/inspector/DataBindingSection.d.ts +18 -0
- package/dist/bigconsole/components/builder/inspector/DataBindingSection.d.ts.map +1 -0
- package/dist/bigconsole/components/builder/inspector/GeneralSection.d.ts +18 -0
- package/dist/bigconsole/components/builder/inspector/GeneralSection.d.ts.map +1 -0
- package/dist/bigconsole/components/builder/inspector/LayoutSection.d.ts +28 -0
- package/dist/bigconsole/components/builder/inspector/LayoutSection.d.ts.map +1 -0
- package/dist/bigconsole/components/builder/inspector/index.d.ts +6 -0
- package/dist/bigconsole/components/builder/inspector/index.d.ts.map +1 -0
- package/dist/bigconsole/components/common/Section.d.ts +77 -0
- package/dist/bigconsole/components/common/Section.d.ts.map +1 -0
- package/dist/bigconsole/components/common/index.d.ts +4 -0
- package/dist/bigconsole/components/common/index.d.ts.map +1 -0
- package/dist/bigconsole/components/common/sectionStyles.d.ts +68 -0
- package/dist/bigconsole/components/common/sectionStyles.d.ts.map +1 -0
- package/dist/bigconsole/components/dashboard/CreateDashboardDialog.d.ts +28 -0
- package/dist/bigconsole/components/dashboard/CreateDashboardDialog.d.ts.map +1 -0
- package/dist/bigconsole/components/dashboard/DashboardCanvas.d.ts +45 -0
- package/dist/bigconsole/components/dashboard/DashboardCanvas.d.ts.map +1 -0
- package/dist/bigconsole/components/dashboard/DashboardGrid.d.ts +25 -0
- package/dist/bigconsole/components/dashboard/DashboardGrid.d.ts.map +1 -0
- package/dist/bigconsole/components/dashboard/DashboardStatusPill.d.ts +12 -0
- package/dist/bigconsole/components/dashboard/DashboardStatusPill.d.ts.map +1 -0
- package/dist/bigconsole/components/dashboard/DashboardToolbar.d.ts +35 -0
- package/dist/bigconsole/components/dashboard/DashboardToolbar.d.ts.map +1 -0
- package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.d.ts +26 -0
- package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.d.ts.map +1 -0
- package/dist/bigconsole/components/dashboard/ExportDashboardDialog.d.ts +17 -0
- package/dist/bigconsole/components/dashboard/ExportDashboardDialog.d.ts.map +1 -0
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.d.ts +13 -0
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.d.ts.map +1 -0
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.d.ts +17 -0
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.d.ts.map +1 -0
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.d.ts +14 -0
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.d.ts.map +1 -0
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.d.ts +15 -0
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.d.ts.map +1 -0
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/index.d.ts +8 -0
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/index.d.ts.map +1 -0
- package/dist/bigconsole/components/dashboard/ImportDashboardDialog.d.ts +10 -0
- package/dist/bigconsole/components/dashboard/ImportDashboardDialog.d.ts.map +1 -0
- package/dist/bigconsole/components/dashboard/LiveBoardBanner.d.ts +12 -0
- package/dist/bigconsole/components/dashboard/LiveBoardBanner.d.ts.map +1 -0
- package/dist/bigconsole/components/dashboard/LiveCanvasToggle.d.ts +11 -0
- package/dist/bigconsole/components/dashboard/LiveCanvasToggle.d.ts.map +1 -0
- package/dist/bigconsole/components/dashboard/PageTabsManager/PageTabsManager.d.ts +23 -0
- package/dist/bigconsole/components/dashboard/PageTabsManager/PageTabsManager.d.ts.map +1 -0
- package/dist/bigconsole/components/dashboard/PageTabsManager/index.d.ts +6 -0
- package/dist/bigconsole/components/dashboard/PageTabsManager/index.d.ts.map +1 -0
- package/dist/bigconsole/components/dashboard/PublishToStoreDialog.d.ts +14 -0
- package/dist/bigconsole/components/dashboard/PublishToStoreDialog.d.ts.map +1 -0
- package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.d.ts +13 -0
- package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.d.ts.map +1 -0
- package/dist/bigconsole/components/dashboard/SavedViewsDropdown/index.d.ts +6 -0
- package/dist/bigconsole/components/dashboard/SavedViewsDropdown/index.d.ts.map +1 -0
- package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.d.ts +35 -0
- package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.d.ts.map +1 -0
- package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.d.ts +23 -0
- package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.d.ts.map +1 -0
- package/dist/bigconsole/components/dashboard/ShareDialog/index.d.ts +6 -0
- package/dist/bigconsole/components/dashboard/ShareDialog/index.d.ts.map +1 -0
- package/dist/bigconsole/components/dashboard/StoreTemplatePicker.d.ts +13 -0
- package/dist/bigconsole/components/dashboard/StoreTemplatePicker.d.ts.map +1 -0
- package/dist/bigconsole/components/dashboard/TemplatePicker/TemplatePicker.d.ts +20 -0
- package/dist/bigconsole/components/dashboard/TemplatePicker/TemplatePicker.d.ts.map +1 -0
- package/dist/bigconsole/components/dashboard/TemplatePicker/index.d.ts +6 -0
- package/dist/bigconsole/components/dashboard/TemplatePicker/index.d.ts.map +1 -0
- package/dist/bigconsole/components/dashboard/TemplateSetupBanner.d.ts +13 -0
- package/dist/bigconsole/components/dashboard/TemplateSetupBanner.d.ts.map +1 -0
- package/dist/bigconsole/components/dashboard/WidgetPalette.d.ts +29 -0
- package/dist/bigconsole/components/dashboard/WidgetPalette.d.ts.map +1 -0
- package/dist/bigconsole/components/dashboard/index.d.ts +24 -0
- package/dist/bigconsole/components/dashboard/index.d.ts.map +1 -0
- package/dist/bigconsole/components/datasink/CacheTTLSelector.d.ts +24 -0
- package/dist/bigconsole/components/datasink/CacheTTLSelector.d.ts.map +1 -0
- package/dist/bigconsole/components/datasink/ConfigurationForm.d.ts +21 -0
- package/dist/bigconsole/components/datasink/ConfigurationForm.d.ts.map +1 -0
- package/dist/bigconsole/components/datasink/DataPreviewPanel.d.ts +20 -0
- package/dist/bigconsole/components/datasink/DataPreviewPanel.d.ts.map +1 -0
- package/dist/bigconsole/components/datasink/DataSinkCard.d.ts +29 -0
- package/dist/bigconsole/components/datasink/DataSinkCard.d.ts.map +1 -0
- package/dist/bigconsole/components/datasink/DataSinkDataViewer.d.ts +18 -0
- package/dist/bigconsole/components/datasink/DataSinkDataViewer.d.ts.map +1 -0
- package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.d.ts +17 -0
- package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.d.ts.map +1 -0
- package/dist/bigconsole/components/datasink/DataSinkRefreshConfig.d.ts +22 -0
- package/dist/bigconsole/components/datasink/DataSinkRefreshConfig.d.ts.map +1 -0
- package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.d.ts +17 -0
- package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.d.ts.map +1 -0
- package/dist/bigconsole/components/datasink/DataSinkStatusBadge.d.ts +13 -0
- package/dist/bigconsole/components/datasink/DataSinkStatusBadge.d.ts.map +1 -0
- package/dist/bigconsole/components/datasink/DataSinkTableViewer.d.ts +13 -0
- package/dist/bigconsole/components/datasink/DataSinkTableViewer.d.ts.map +1 -0
- package/dist/bigconsole/components/datasink/ExportDataSinkDialog.d.ts +17 -0
- package/dist/bigconsole/components/datasink/ExportDataSinkDialog.d.ts.map +1 -0
- package/dist/bigconsole/components/datasink/FluidGridsPanel.d.ts +31 -0
- package/dist/bigconsole/components/datasink/FluidGridsPanel.d.ts.map +1 -0
- package/dist/bigconsole/components/datasink/ImportDataGuideDialog.d.ts +23 -0
- package/dist/bigconsole/components/datasink/ImportDataGuideDialog.d.ts.map +1 -0
- package/dist/bigconsole/components/datasink/ImportDataSinkDialog.d.ts +10 -0
- package/dist/bigconsole/components/datasink/ImportDataSinkDialog.d.ts.map +1 -0
- package/dist/bigconsole/components/datasink/LinkedParsersPanel.d.ts +12 -0
- package/dist/bigconsole/components/datasink/LinkedParsersPanel.d.ts.map +1 -0
- package/dist/bigconsole/components/datasink/LinkedWorkflowsPanel.d.ts +11 -0
- package/dist/bigconsole/components/datasink/LinkedWorkflowsPanel.d.ts.map +1 -0
- package/dist/bigconsole/components/datasink/RefreshTypeSelector.d.ts +26 -0
- package/dist/bigconsole/components/datasink/RefreshTypeSelector.d.ts.map +1 -0
- package/dist/bigconsole/components/datasink/SetupStateBadge.d.ts +13 -0
- package/dist/bigconsole/components/datasink/SetupStateBadge.d.ts.map +1 -0
- package/dist/bigconsole/components/datasink/WorkflowStatusPanel.d.ts +30 -0
- package/dist/bigconsole/components/datasink/WorkflowStatusPanel.d.ts.map +1 -0
- package/dist/bigconsole/components/datasink/index.d.ts +24 -0
- package/dist/bigconsole/components/datasink/index.d.ts.map +1 -0
- package/dist/bigconsole/components/embed/EmbedErrorBoundary.d.ts +18 -0
- package/dist/bigconsole/components/embed/EmbedErrorBoundary.d.ts.map +1 -0
- package/dist/bigconsole/components/embed/EmbedWidgetRenderer.d.ts +6 -0
- package/dist/bigconsole/components/embed/EmbedWidgetRenderer.d.ts.map +1 -0
- package/dist/bigconsole/components/embed/ReadOnlyDashboardRenderer.d.ts +14 -0
- package/dist/bigconsole/components/embed/ReadOnlyDashboardRenderer.d.ts.map +1 -0
- package/dist/bigconsole/components/embed/drilldown.d.ts +5 -0
- package/dist/bigconsole/components/embed/drilldown.d.ts.map +1 -0
- package/dist/bigconsole/components/embed/index.d.ts +16 -0
- package/dist/bigconsole/components/embed/index.d.ts.map +1 -0
- package/dist/bigconsole/components/embed/renderer-manifest.d.ts +23 -0
- package/dist/bigconsole/components/embed/renderer-manifest.d.ts.map +1 -0
- package/dist/bigconsole/components/embed/types.d.ts +106 -0
- package/dist/bigconsole/components/embed/types.d.ts.map +1 -0
- package/dist/bigconsole/components/embed/validate.d.ts +4 -0
- package/dist/bigconsole/components/embed/validate.d.ts.map +1 -0
- package/dist/bigconsole/components/embed/widgetShim.d.ts +5 -0
- package/dist/bigconsole/components/embed/widgetShim.d.ts.map +1 -0
- package/dist/bigconsole/components/embed/widgets/CalendarEmbed.d.ts +4 -0
- package/dist/bigconsole/components/embed/widgets/CalendarEmbed.d.ts.map +1 -0
- package/dist/bigconsole/components/embed/widgets/ChartEmbed.d.ts +10 -0
- package/dist/bigconsole/components/embed/widgets/ChartEmbed.d.ts.map +1 -0
- package/dist/bigconsole/components/embed/widgets/EmbedFrame.d.ts +7 -0
- package/dist/bigconsole/components/embed/widgets/EmbedFrame.d.ts.map +1 -0
- package/dist/bigconsole/components/embed/widgets/FormEmbed.d.ts +4 -0
- package/dist/bigconsole/components/embed/widgets/FormEmbed.d.ts.map +1 -0
- package/dist/bigconsole/components/embed/widgets/GaugeEmbed.d.ts +4 -0
- package/dist/bigconsole/components/embed/widgets/GaugeEmbed.d.ts.map +1 -0
- package/dist/bigconsole/components/embed/widgets/HeatmapEmbed.d.ts +4 -0
- package/dist/bigconsole/components/embed/widgets/HeatmapEmbed.d.ts.map +1 -0
- package/dist/bigconsole/components/embed/widgets/KanbanEmbed.d.ts +4 -0
- package/dist/bigconsole/components/embed/widgets/KanbanEmbed.d.ts.map +1 -0
- package/dist/bigconsole/components/embed/widgets/KpiComparisonEmbed.d.ts +4 -0
- package/dist/bigconsole/components/embed/widgets/KpiComparisonEmbed.d.ts.map +1 -0
- package/dist/bigconsole/components/embed/widgets/ListEmbed.d.ts +4 -0
- package/dist/bigconsole/components/embed/widgets/ListEmbed.d.ts.map +1 -0
- package/dist/bigconsole/components/embed/widgets/MetricCardEmbed.d.ts +4 -0
- package/dist/bigconsole/components/embed/widgets/MetricCardEmbed.d.ts.map +1 -0
- package/dist/bigconsole/components/embed/widgets/PivotEmbed.d.ts +4 -0
- package/dist/bigconsole/components/embed/widgets/PivotEmbed.d.ts.map +1 -0
- package/dist/bigconsole/components/embed/widgets/ProgressEmbed.d.ts +4 -0
- package/dist/bigconsole/components/embed/widgets/ProgressEmbed.d.ts.map +1 -0
- package/dist/bigconsole/components/embed/widgets/RetentionEmbed.d.ts +4 -0
- package/dist/bigconsole/components/embed/widgets/RetentionEmbed.d.ts.map +1 -0
- package/dist/bigconsole/components/embed/widgets/TableEmbed.d.ts +4 -0
- package/dist/bigconsole/components/embed/widgets/TableEmbed.d.ts.map +1 -0
- package/dist/bigconsole/components/embed/widgets/TextEmbed.d.ts +4 -0
- package/dist/bigconsole/components/embed/widgets/TextEmbed.d.ts.map +1 -0
- package/dist/bigconsole/components/embed/widgets/TimelineEmbed.d.ts +4 -0
- package/dist/bigconsole/components/embed/widgets/TimelineEmbed.d.ts.map +1 -0
- package/dist/bigconsole/components/embed/widgets/shared.d.ts +37 -0
- package/dist/bigconsole/components/embed/widgets/shared.d.ts.map +1 -0
- package/dist/bigconsole/components/overview/DashboardGuide.d.ts +27 -0
- package/dist/bigconsole/components/overview/DashboardGuide.d.ts.map +1 -0
- package/dist/bigconsole/components/overview/DataHealthCard.d.ts +18 -0
- package/dist/bigconsole/components/overview/DataHealthCard.d.ts.map +1 -0
- package/dist/bigconsole/components/overview/OverviewQuickActions.d.ts +16 -0
- package/dist/bigconsole/components/overview/OverviewQuickActions.d.ts.map +1 -0
- package/dist/bigconsole/components/overview/OverviewStatCard.d.ts +18 -0
- package/dist/bigconsole/components/overview/OverviewStatCard.d.ts.map +1 -0
- package/dist/bigconsole/components/overview/RecentDashboardsPanel.d.ts +19 -0
- package/dist/bigconsole/components/overview/RecentDashboardsPanel.d.ts.map +1 -0
- package/dist/bigconsole/components/overview/dashboardGuideSteps.d.ts +79 -0
- package/dist/bigconsole/components/overview/dashboardGuideSteps.d.ts.map +1 -0
- package/dist/bigconsole/components/overview/index.d.ts +14 -0
- package/dist/bigconsole/components/overview/index.d.ts.map +1 -0
- package/dist/bigconsole/components/overview/overviewModel.d.ts +124 -0
- package/dist/bigconsole/components/overview/overviewModel.d.ts.map +1 -0
- package/dist/bigconsole/components/overview/useOverviewData.d.ts +22 -0
- package/dist/bigconsole/components/overview/useOverviewData.d.ts.map +1 -0
- package/dist/bigconsole/components/parser/DataSinkSelector.d.ts +21 -0
- package/dist/bigconsole/components/parser/DataSinkSelector.d.ts.map +1 -0
- package/dist/bigconsole/components/parser/ExportParserDialog.d.ts +17 -0
- package/dist/bigconsole/components/parser/ExportParserDialog.d.ts.map +1 -0
- package/dist/bigconsole/components/parser/ExpressionEditor.d.ts +25 -0
- package/dist/bigconsole/components/parser/ExpressionEditor.d.ts.map +1 -0
- package/dist/bigconsole/components/parser/ImportParserDialog.d.ts +12 -0
- package/dist/bigconsole/components/parser/ImportParserDialog.d.ts.map +1 -0
- package/dist/bigconsole/components/parser/ParserBuilder.d.ts +41 -0
- package/dist/bigconsole/components/parser/ParserBuilder.d.ts.map +1 -0
- package/dist/bigconsole/components/parser/ParserCard.d.ts +23 -0
- package/dist/bigconsole/components/parser/ParserCard.d.ts.map +1 -0
- package/dist/bigconsole/components/parser/ParserFormDialog.d.ts +42 -0
- package/dist/bigconsole/components/parser/ParserFormDialog.d.ts.map +1 -0
- package/dist/bigconsole/components/parser/ParserSelector.d.ts +27 -0
- package/dist/bigconsole/components/parser/ParserSelector.d.ts.map +1 -0
- package/dist/bigconsole/components/parser/ParserStatusBadge.d.ts +13 -0
- package/dist/bigconsole/components/parser/ParserStatusBadge.d.ts.map +1 -0
- package/dist/bigconsole/components/parser/ParserTypeBadge.d.ts +11 -0
- package/dist/bigconsole/components/parser/ParserTypeBadge.d.ts.map +1 -0
- package/dist/bigconsole/components/parser/TestPanel.d.ts +25 -0
- package/dist/bigconsole/components/parser/TestPanel.d.ts.map +1 -0
- package/dist/bigconsole/components/parser/index.d.ts +17 -0
- package/dist/bigconsole/components/parser/index.d.ts.map +1 -0
- package/dist/bigconsole/components/parser/parserFieldStyles.d.ts +17 -0
- package/dist/bigconsole/components/parser/parserFieldStyles.d.ts.map +1 -0
- package/dist/bigconsole/components/pipeline/PipelineCard.d.ts +12 -0
- package/dist/bigconsole/components/pipeline/PipelineCard.d.ts.map +1 -0
- package/dist/bigconsole/components/pipeline/PipelineDeleteDialog.d.ts +11 -0
- package/dist/bigconsole/components/pipeline/PipelineDeleteDialog.d.ts.map +1 -0
- package/dist/bigconsole/components/pipeline/PipelineStatusBadge.d.ts +9 -0
- package/dist/bigconsole/components/pipeline/PipelineStatusBadge.d.ts.map +1 -0
- package/dist/bigconsole/components/pipeline/index.d.ts +9 -0
- package/dist/bigconsole/components/pipeline/index.d.ts.map +1 -0
- package/dist/bigconsole/components/preview/AiPreviewContent.d.ts +30 -0
- package/dist/bigconsole/components/preview/AiPreviewContent.d.ts.map +1 -0
- package/dist/bigconsole/components/preview/AiPreviewContent.js +80 -69
- package/dist/bigconsole/components/preview/AiPreviewContent.js.map +1 -1
- package/dist/bigconsole/components/preview/AiPreviewMiniPanel.d.ts +11 -0
- package/dist/bigconsole/components/preview/AiPreviewMiniPanel.d.ts.map +1 -0
- package/dist/bigconsole/components/preview/AiPreviewPanel.d.ts +2 -0
- package/dist/bigconsole/components/preview/AiPreviewPanel.d.ts.map +1 -0
- package/dist/bigconsole/components/preview/AiPreviewPanel.js +4 -1
- package/dist/bigconsole/components/preview/AiPreviewPanel.js.map +1 -1
- package/dist/bigconsole/components/preview/previewShared.d.ts +134 -0
- package/dist/bigconsole/components/preview/previewShared.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/ActionConfigDialog.d.ts +20 -0
- package/dist/bigconsole/components/widgets/ActionConfigDialog.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/DrilldownConfigPanel.d.ts +26 -0
- package/dist/bigconsole/components/widgets/DrilldownConfigPanel.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/PropertiesPanel.d.ts +9 -0
- package/dist/bigconsole/components/widgets/PropertiesPanel.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/WidgetErrorBoundary.d.ts +23 -0
- package/dist/bigconsole/components/widgets/WidgetErrorBoundary.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/WidgetHeader.d.ts +43 -0
- package/dist/bigconsole/components/widgets/WidgetHeader.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/WidgetMenu.d.ts +18 -0
- package/dist/bigconsole/components/widgets/WidgetMenu.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/WidgetRegistry.d.ts +131 -0
- package/dist/bigconsole/components/widgets/WidgetRegistry.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/WidgetTypeSelector.d.ts +22 -0
- package/dist/bigconsole/components/widgets/WidgetTypeSelector.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/WidgetWrapper.d.ts +31 -0
- package/dist/bigconsole/components/widgets/WidgetWrapper.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/actionConfig.d.ts +36 -0
- package/dist/bigconsole/components/widgets/actionConfig.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/adaptive-card/AdaptiveCardWidget.d.ts +38 -0
- package/dist/bigconsole/components/widgets/adaptive-card/AdaptiveCardWidget.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/adaptive-card/index.d.ts +7 -0
- package/dist/bigconsole/components/widgets/adaptive-card/index.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/calendar/CalendarView.d.ts +43 -0
- package/dist/bigconsole/components/widgets/calendar/CalendarView.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/calendar/CalendarWidget.d.ts +7 -0
- package/dist/bigconsole/components/widgets/calendar/CalendarWidget.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/calendar/index.d.ts +3 -0
- package/dist/bigconsole/components/widgets/calendar/index.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/chart/ChartConfig.d.ts +12 -0
- package/dist/bigconsole/components/widgets/chart/ChartConfig.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/chart/ChartLegend.d.ts +25 -0
- package/dist/bigconsole/components/widgets/chart/ChartLegend.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/chart/ChartTooltip.d.ts +24 -0
- package/dist/bigconsole/components/widgets/chart/ChartTooltip.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/chart/ChartWidget.d.ts +17 -0
- package/dist/bigconsole/components/widgets/chart/ChartWidget.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/chart/charts/AreaChart.d.ts +16 -0
- package/dist/bigconsole/components/widgets/chart/charts/AreaChart.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/chart/charts/BarChart.d.ts +16 -0
- package/dist/bigconsole/components/widgets/chart/charts/BarChart.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/chart/charts/ComboChart.d.ts +12 -0
- package/dist/bigconsole/components/widgets/chart/charts/ComboChart.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/chart/charts/FunnelChart.d.ts +18 -0
- package/dist/bigconsole/components/widgets/chart/charts/FunnelChart.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/chart/charts/LineChart.d.ts +16 -0
- package/dist/bigconsole/components/widgets/chart/charts/LineChart.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/chart/charts/PieChart.d.ts +18 -0
- package/dist/bigconsole/components/widgets/chart/charts/PieChart.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/chart/charts/ScatterChart.d.ts +12 -0
- package/dist/bigconsole/components/widgets/chart/charts/ScatterChart.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/chart/charts/WaterfallChart.d.ts +12 -0
- package/dist/bigconsole/components/widgets/chart/charts/WaterfallChart.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/chart/charts/index.d.ts +16 -0
- package/dist/bigconsole/components/widgets/chart/charts/index.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/chart/charts/referenceElements.d.ts +19 -0
- package/dist/bigconsole/components/widgets/chart/charts/referenceElements.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/chart/charts/types.d.ts +89 -0
- package/dist/bigconsole/components/widgets/chart/charts/types.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/chart/index.d.ts +11 -0
- package/dist/bigconsole/components/widgets/chart/index.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/comments/WidgetComments.d.ts +10 -0
- package/dist/bigconsole/components/widgets/comments/WidgetComments.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/custom/CustomWidget.d.ts +13 -0
- package/dist/bigconsole/components/widgets/custom/CustomWidget.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/custom/config.d.ts +9 -0
- package/dist/bigconsole/components/widgets/custom/config.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/custom/index.d.ts +8 -0
- package/dist/bigconsole/components/widgets/custom/index.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/custom/utils.d.ts +4 -0
- package/dist/bigconsole/components/widgets/custom/utils.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.d.ts +16 -0
- package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/event-logs/index.d.ts +6 -0
- package/dist/bigconsole/components/widgets/event-logs/index.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/form/FormWidget.d.ts +46 -0
- package/dist/bigconsole/components/widgets/form/FormWidget.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/form/index.d.ts +6 -0
- package/dist/bigconsole/components/widgets/form/index.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/funnel/index.d.ts +12 -0
- package/dist/bigconsole/components/widgets/funnel/index.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/gauge/CircularGauge.d.ts +42 -0
- package/dist/bigconsole/components/widgets/gauge/CircularGauge.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/gauge/GaugeConfig.d.ts +12 -0
- package/dist/bigconsole/components/widgets/gauge/GaugeConfig.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/gauge/GaugeWidget.d.ts +22 -0
- package/dist/bigconsole/components/widgets/gauge/GaugeWidget.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/gauge/LinearGauge.d.ts +28 -0
- package/dist/bigconsole/components/widgets/gauge/LinearGauge.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/gauge/index.d.ts +10 -0
- package/dist/bigconsole/components/widgets/gauge/index.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.d.ts +12 -0
- package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/heatmap/HeatmapWidget.d.ts +38 -0
- package/dist/bigconsole/components/widgets/heatmap/HeatmapWidget.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/heatmap/index.d.ts +8 -0
- package/dist/bigconsole/components/widgets/heatmap/index.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/iframe-widget/IframeWidget.d.ts +31 -0
- package/dist/bigconsole/components/widgets/iframe-widget/IframeWidget.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/iframe-widget/index.d.ts +3 -0
- package/dist/bigconsole/components/widgets/iframe-widget/index.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/index.d.ts +35 -0
- package/dist/bigconsole/components/widgets/index.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/kanban/KanbanView.d.ts +34 -0
- package/dist/bigconsole/components/widgets/kanban/KanbanView.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/kanban/KanbanWidget.d.ts +7 -0
- package/dist/bigconsole/components/widgets/kanban/KanbanWidget.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/kanban/index.d.ts +3 -0
- package/dist/bigconsole/components/widgets/kanban/index.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/kpi/KPIWidget.d.ts +23 -0
- package/dist/bigconsole/components/widgets/kpi/KPIWidget.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/kpi/index.d.ts +7 -0
- package/dist/bigconsole/components/widgets/kpi/index.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/kpi-comparison/KPIComparisonWidget.d.ts +28 -0
- package/dist/bigconsole/components/widgets/kpi-comparison/KPIComparisonWidget.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/kpi-comparison/index.d.ts +3 -0
- package/dist/bigconsole/components/widgets/kpi-comparison/index.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/list/ListConfig.d.ts +12 -0
- package/dist/bigconsole/components/widgets/list/ListConfig.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/list/ListItem.d.ts +39 -0
- package/dist/bigconsole/components/widgets/list/ListItem.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/list/ListWidget.d.ts +17 -0
- package/dist/bigconsole/components/widgets/list/ListWidget.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/list/index.d.ts +9 -0
- package/dist/bigconsole/components/widgets/list/index.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/map-widget/MapWidget.d.ts +52 -0
- package/dist/bigconsole/components/widgets/map-widget/MapWidget.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/map-widget/index.d.ts +3 -0
- package/dist/bigconsole/components/widgets/map-widget/index.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/metric-card/ComparisonBadge.d.ts +15 -0
- package/dist/bigconsole/components/widgets/metric-card/ComparisonBadge.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.d.ts +12 -0
- package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/metric-card/MetricCardWidget.d.ts +36 -0
- package/dist/bigconsole/components/widgets/metric-card/MetricCardWidget.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/metric-card/SparklineChart.d.ts +23 -0
- package/dist/bigconsole/components/widgets/metric-card/SparklineChart.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/metric-card/TrendIndicator.d.ts +14 -0
- package/dist/bigconsole/components/widgets/metric-card/TrendIndicator.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/metric-card/index.d.ts +11 -0
- package/dist/bigconsole/components/widgets/metric-card/index.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.d.ts +26 -0
- package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/pivot-table/index.d.ts +6 -0
- package/dist/bigconsole/components/widgets/pivot-table/index.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/progress/ProgressBar.d.ts +29 -0
- package/dist/bigconsole/components/widgets/progress/ProgressBar.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/progress/ProgressConfig.d.ts +12 -0
- package/dist/bigconsole/components/widgets/progress/ProgressConfig.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/progress/ProgressWidget.d.ts +28 -0
- package/dist/bigconsole/components/widgets/progress/ProgressWidget.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/progress/index.d.ts +9 -0
- package/dist/bigconsole/components/widgets/progress/index.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/retention/RetentionWidget.d.ts +25 -0
- package/dist/bigconsole/components/widgets/retention/RetentionWidget.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/retention/index.d.ts +7 -0
- package/dist/bigconsole/components/widgets/retention/index.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/states/EmptyState.d.ts +20 -0
- package/dist/bigconsole/components/widgets/states/EmptyState.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/states/ErrorState.d.ts +11 -0
- package/dist/bigconsole/components/widgets/states/ErrorState.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/states/LoadingState.d.ts +9 -0
- package/dist/bigconsole/components/widgets/states/LoadingState.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/states/index.d.ts +9 -0
- package/dist/bigconsole/components/widgets/states/index.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/table/TableCell.d.ts +42 -0
- package/dist/bigconsole/components/widgets/table/TableCell.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/table/TableConfig.d.ts +12 -0
- package/dist/bigconsole/components/widgets/table/TableConfig.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/table/TableHeader.d.ts +42 -0
- package/dist/bigconsole/components/widgets/table/TableHeader.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/table/TablePagination.d.ts +23 -0
- package/dist/bigconsole/components/widgets/table/TablePagination.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/table/TableWidget.d.ts +16 -0
- package/dist/bigconsole/components/widgets/table/TableWidget.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/table/cellLink.d.ts +37 -0
- package/dist/bigconsole/components/widgets/table/cellLink.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/table/index.d.ts +11 -0
- package/dist/bigconsole/components/widgets/table/index.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/text-widget/TextWidget.d.ts +11 -0
- package/dist/bigconsole/components/widgets/text-widget/TextWidget.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/text-widget/index.d.ts +4 -0
- package/dist/bigconsole/components/widgets/text-widget/index.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/text-widget/textData.d.ts +32 -0
- package/dist/bigconsole/components/widgets/text-widget/textData.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/timeline/TimelineWidget.d.ts +42 -0
- package/dist/bigconsole/components/widgets/timeline/TimelineWidget.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/timeline/index.d.ts +3 -0
- package/dist/bigconsole/components/widgets/timeline/index.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/utils/conditionalFormat.d.ts +74 -0
- package/dist/bigconsole/components/widgets/utils/conditionalFormat.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/utils/inferFields.d.ts +45 -0
- package/dist/bigconsole/components/widgets/utils/inferFields.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/utils/targetProgress.d.ts +26 -0
- package/dist/bigconsole/components/widgets/utils/targetProgress.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/utils/translate.d.ts +14 -0
- package/dist/bigconsole/components/widgets/utils/translate.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.d.ts +16 -0
- package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/webhook-config/index.d.ts +6 -0
- package/dist/bigconsole/components/widgets/webhook-config/index.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/widget-actions/WidgetActions.d.ts +26 -0
- package/dist/bigconsole/components/widgets/widget-actions/WidgetActions.d.ts.map +1 -0
- package/dist/bigconsole/components/widgets/widget-actions/index.d.ts +8 -0
- package/dist/bigconsole/components/widgets/widget-actions/index.d.ts.map +1 -0
- package/dist/bigconsole/components/workflow/DataSinkMultiSelector.d.ts +24 -0
- package/dist/bigconsole/components/workflow/DataSinkMultiSelector.d.ts.map +1 -0
- package/dist/bigconsole/components/workflow/WorkflowCard.d.ts +18 -0
- package/dist/bigconsole/components/workflow/WorkflowCard.d.ts.map +1 -0
- package/dist/bigconsole/components/workflow/WorkflowDeleteDialog.d.ts +11 -0
- package/dist/bigconsole/components/workflow/WorkflowDeleteDialog.d.ts.map +1 -0
- package/dist/bigconsole/components/workflow/WorkflowStatusBadge.d.ts +13 -0
- package/dist/bigconsole/components/workflow/WorkflowStatusBadge.d.ts.map +1 -0
- package/dist/bigconsole/components/workflow/index.d.ts +10 -0
- package/dist/bigconsole/components/workflow/index.d.ts.map +1 -0
- package/dist/bigconsole/constants/backendErrors.d.ts +22 -0
- package/dist/bigconsole/constants/backendErrors.d.ts.map +1 -0
- package/dist/bigconsole/constants.d.ts +15 -0
- package/dist/bigconsole/constants.d.ts.map +1 -0
- package/dist/bigconsole/context/BigConsoleContext.d.ts +30 -0
- package/dist/bigconsole/context/BigConsoleContext.d.ts.map +1 -0
- package/dist/bigconsole/context/index.d.ts +2 -0
- package/dist/bigconsole/context/index.d.ts.map +1 -0
- package/dist/bigconsole/contexts/CrossFilterContext.d.ts +48 -0
- package/dist/bigconsole/contexts/CrossFilterContext.d.ts.map +1 -0
- package/dist/bigconsole/contexts/NavigationContext.d.ts +45 -0
- package/dist/bigconsole/contexts/NavigationContext.d.ts.map +1 -0
- package/dist/bigconsole/contexts/index.d.ts +8 -0
- package/dist/bigconsole/contexts/index.d.ts.map +1 -0
- package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.d.ts +14 -0
- package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.d.ts.map +1 -0
- package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.d.ts +25 -0
- package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.d.ts.map +1 -0
- package/dist/bigconsole/customWidget/index.d.ts +12 -0
- package/dist/bigconsole/customWidget/index.d.ts.map +1 -0
- package/dist/bigconsole/customWidget/proposalContract.d.ts +121 -0
- package/dist/bigconsole/customWidget/proposalContract.d.ts.map +1 -0
- package/dist/bigconsole/customWidget/proposalSource.d.ts +41 -0
- package/dist/bigconsole/customWidget/proposalSource.d.ts.map +1 -0
- package/dist/bigconsole/graphql/apollo-compat.d.ts +16 -0
- package/dist/bigconsole/graphql/apollo-compat.d.ts.map +1 -0
- package/dist/bigconsole/graphql/storeTemplates.d.ts +9 -0
- package/dist/bigconsole/graphql/storeTemplates.d.ts.map +1 -0
- package/dist/bigconsole/hooks/index.d.ts +41 -0
- package/dist/bigconsole/hooks/index.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useActivePage.d.ts +37 -0
- package/dist/bigconsole/hooks/useActivePage.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useAutoRefresh.d.ts +51 -0
- package/dist/bigconsole/hooks/useAutoRefresh.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useBigConsoleAnalytics.d.ts +48 -0
- package/dist/bigconsole/hooks/useBigConsoleAnalytics.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useCrossFilter.d.ts +79 -0
- package/dist/bigconsole/hooks/useCrossFilter.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useDashboardEmbedPolicy.d.ts +72 -0
- package/dist/bigconsole/hooks/useDashboardEmbedPolicy.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useDashboardImageExport.d.ts +18 -0
- package/dist/bigconsole/hooks/useDashboardImageExport.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useDashboardOperations.d.ts +70 -0
- package/dist/bigconsole/hooks/useDashboardOperations.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useDashboardSharing.d.ts +60 -0
- package/dist/bigconsole/hooks/useDashboardSharing.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useDashboardTemplates.d.ts +135 -0
- package/dist/bigconsole/hooks/useDashboardTemplates.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useDashboardViews.d.ts +58 -0
- package/dist/bigconsole/hooks/useDashboardViews.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useDataSinkOperations.d.ts +66 -0
- package/dist/bigconsole/hooks/useDataSinkOperations.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useDataSinkSubscription.d.ts +31 -0
- package/dist/bigconsole/hooks/useDataSinkSubscription.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useDrilldown.d.ts +65 -0
- package/dist/bigconsole/hooks/useDrilldown.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useDrilldownOperations.d.ts +42 -0
- package/dist/bigconsole/hooks/useDrilldownOperations.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useEventLogs.d.ts +94 -0
- package/dist/bigconsole/hooks/useEventLogs.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useEventWebhooks.d.ts +95 -0
- package/dist/bigconsole/hooks/useEventWebhooks.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useExportDashboard.d.ts +28 -0
- package/dist/bigconsole/hooks/useExportDashboard.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useExportDataSink.d.ts +27 -0
- package/dist/bigconsole/hooks/useExportDataSink.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useExportParser.d.ts +25 -0
- package/dist/bigconsole/hooks/useExportParser.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useFilterPresets.d.ts +47 -0
- package/dist/bigconsole/hooks/useFilterPresets.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useFilterUrlSync.d.ts +46 -0
- package/dist/bigconsole/hooks/useFilterUrlSync.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useGlobalFilters.d.ts +69 -0
- package/dist/bigconsole/hooks/useGlobalFilters.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useImportDashboard.d.ts +88 -0
- package/dist/bigconsole/hooks/useImportDashboard.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useImportDataSink.d.ts +74 -0
- package/dist/bigconsole/hooks/useImportDataSink.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useImportParser.d.ts +77 -0
- package/dist/bigconsole/hooks/useImportParser.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useInstalledWidgets.d.ts +15 -0
- package/dist/bigconsole/hooks/useInstalledWidgets.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useModalFocusTrap.d.ts +24 -0
- package/dist/bigconsole/hooks/useModalFocusTrap.d.ts.map +1 -0
- package/dist/bigconsole/hooks/usePageOperations.d.ts +35 -0
- package/dist/bigconsole/hooks/usePageOperations.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useParserOperations.d.ts +70 -0
- package/dist/bigconsole/hooks/useParserOperations.d.ts.map +1 -0
- package/dist/bigconsole/hooks/usePipelineOperations.d.ts +76 -0
- package/dist/bigconsole/hooks/usePipelineOperations.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useStoreDashboardTemplates.d.ts +122 -0
- package/dist/bigconsole/hooks/useStoreDashboardTemplates.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useWidgetActions.d.ts +69 -0
- package/dist/bigconsole/hooks/useWidgetActions.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useWidgetCatalog.d.ts +20 -0
- package/dist/bigconsole/hooks/useWidgetCatalog.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useWidgetComments.d.ts +24 -0
- package/dist/bigconsole/hooks/useWidgetComments.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useWidgetConfigPersist.d.ts +14 -0
- package/dist/bigconsole/hooks/useWidgetConfigPersist.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useWidgetData.d.ts +45 -0
- package/dist/bigconsole/hooks/useWidgetData.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useWidgetEvents.d.ts +60 -0
- package/dist/bigconsole/hooks/useWidgetEvents.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useWidgetExport.d.ts +19 -0
- package/dist/bigconsole/hooks/useWidgetExport.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useWidgetOperations.d.ts +71 -0
- package/dist/bigconsole/hooks/useWidgetOperations.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useWorkflowOperations.d.ts +54 -0
- package/dist/bigconsole/hooks/useWorkflowOperations.d.ts.map +1 -0
- package/dist/bigconsole/index.d.ts +32 -0
- package/dist/bigconsole/index.d.ts.map +1 -0
- package/dist/bigconsole/modules/dashboard/index.d.ts +15 -0
- package/dist/bigconsole/modules/dashboard/index.d.ts.map +1 -0
- package/dist/bigconsole/modules/index.d.ts +15 -0
- package/dist/bigconsole/modules/index.d.ts.map +1 -0
- package/dist/bigconsole/modules/renderer/index.d.ts +8 -0
- package/dist/bigconsole/modules/renderer/index.d.ts.map +1 -0
- package/dist/bigconsole/modules/widget/index.d.ts +19 -0
- package/dist/bigconsole/modules/widget/index.d.ts.map +1 -0
- package/dist/bigconsole/pages/AdminPage.d.ts +4 -0
- package/dist/bigconsole/pages/AdminPage.d.ts.map +1 -0
- package/dist/bigconsole/pages/DashboardBuilderPage.d.ts +5 -0
- package/dist/bigconsole/pages/DashboardBuilderPage.d.ts.map +1 -0
- package/dist/bigconsole/pages/DashboardViewPage.d.ts +5 -0
- package/dist/bigconsole/pages/DashboardViewPage.d.ts.map +1 -0
- package/dist/bigconsole/pages/DashboardsPage.d.ts +5 -0
- package/dist/bigconsole/pages/DashboardsPage.d.ts.map +1 -0
- package/dist/bigconsole/pages/DataParsersPage.d.ts +9 -0
- package/dist/bigconsole/pages/DataParsersPage.d.ts.map +1 -0
- package/dist/bigconsole/pages/DataSinkBuilderPage.d.ts +10 -0
- package/dist/bigconsole/pages/DataSinkBuilderPage.d.ts.map +1 -0
- package/dist/bigconsole/pages/DataSinkViewPage.d.ts +8 -0
- package/dist/bigconsole/pages/DataSinkViewPage.d.ts.map +1 -0
- package/dist/bigconsole/pages/DataSinksPage.d.ts +5 -0
- package/dist/bigconsole/pages/DataSinksPage.d.ts.map +1 -0
- package/dist/bigconsole/pages/DataSourcesPage.d.ts +10 -0
- package/dist/bigconsole/pages/DataSourcesPage.d.ts.map +1 -0
- package/dist/bigconsole/pages/InsightsPage.d.ts +5 -0
- package/dist/bigconsole/pages/InsightsPage.d.ts.map +1 -0
- package/dist/bigconsole/pages/OverviewPage.d.ts +5 -0
- package/dist/bigconsole/pages/OverviewPage.d.ts.map +1 -0
- package/dist/bigconsole/pages/ParserBuilderPage.d.ts +13 -0
- package/dist/bigconsole/pages/ParserBuilderPage.d.ts.map +1 -0
- package/dist/bigconsole/pages/ParserViewPage.d.ts +8 -0
- package/dist/bigconsole/pages/ParserViewPage.d.ts.map +1 -0
- package/dist/bigconsole/pages/PipelineBuilderPage.d.ts +21 -0
- package/dist/bigconsole/pages/PipelineBuilderPage.d.ts.map +1 -0
- package/dist/bigconsole/pages/PipelineViewPage.d.ts +20 -0
- package/dist/bigconsole/pages/PipelineViewPage.d.ts.map +1 -0
- package/dist/bigconsole/pages/PipelinesPage.d.ts +14 -0
- package/dist/bigconsole/pages/PipelinesPage.d.ts.map +1 -0
- package/dist/bigconsole/pages/SettingsPage.d.ts +5 -0
- package/dist/bigconsole/pages/SettingsPage.d.ts.map +1 -0
- package/dist/bigconsole/pages/WidgetDemoPage.d.ts +5 -0
- package/dist/bigconsole/pages/WidgetDemoPage.d.ts.map +1 -0
- package/dist/bigconsole/pages/WorkflowViewPage.d.ts +20 -0
- package/dist/bigconsole/pages/WorkflowViewPage.d.ts.map +1 -0
- package/dist/bigconsole/pages/WorkflowsPage.d.ts +16 -0
- package/dist/bigconsole/pages/WorkflowsPage.d.ts.map +1 -0
- package/dist/bigconsole/pages/index.d.ts +14 -0
- package/dist/bigconsole/pages/index.d.ts.map +1 -0
- package/dist/bigconsole/providers/BigConsoleQuotaProvider.d.ts +10 -0
- package/dist/bigconsole/providers/BigConsoleQuotaProvider.d.ts.map +1 -0
- package/dist/bigconsole/renderers/adapters/AdaptiveCardRenderer.d.ts +6 -0
- package/dist/bigconsole/renderers/adapters/AdaptiveCardRenderer.d.ts.map +1 -0
- package/dist/bigconsole/renderers/adapters/BigConsoleRenderer.d.ts +9 -0
- package/dist/bigconsole/renderers/adapters/BigConsoleRenderer.d.ts.map +1 -0
- package/dist/bigconsole/renderers/adapters/BlockKitRenderer.d.ts +6 -0
- package/dist/bigconsole/renderers/adapters/BlockKitRenderer.d.ts.map +1 -0
- package/dist/bigconsole/renderers/adapters/CustomRenderer.d.ts +46 -0
- package/dist/bigconsole/renderers/adapters/CustomRenderer.d.ts.map +1 -0
- package/dist/bigconsole/renderers/adapters/index.d.ts +10 -0
- package/dist/bigconsole/renderers/adapters/index.d.ts.map +1 -0
- package/dist/bigconsole/renderers/factory/WidgetRendererFactory.d.ts +46 -0
- package/dist/bigconsole/renderers/factory/WidgetRendererFactory.d.ts.map +1 -0
- package/dist/bigconsole/renderers/index.d.ts +10 -0
- package/dist/bigconsole/renderers/index.d.ts.map +1 -0
- package/dist/bigconsole/renderers/registry/RendererRegistry.d.ts +42 -0
- package/dist/bigconsole/renderers/registry/RendererRegistry.d.ts.map +1 -0
- package/dist/bigconsole/renderers/types/index.d.ts +7 -0
- package/dist/bigconsole/renderers/types/index.d.ts.map +1 -0
- package/dist/bigconsole/renderers/types/renderer.d.ts +228 -0
- package/dist/bigconsole/renderers/types/renderer.d.ts.map +1 -0
- package/dist/bigconsole/store/dashboardStore.d.ts +132 -0
- package/dist/bigconsole/store/dashboardStore.d.ts.map +1 -0
- package/dist/bigconsole/store/dataSinkStore.d.ts +94 -0
- package/dist/bigconsole/store/dataSinkStore.d.ts.map +1 -0
- package/dist/bigconsole/store/drilldownStore.d.ts +63 -0
- package/dist/bigconsole/store/drilldownStore.d.ts.map +1 -0
- package/dist/bigconsole/store/index.d.ts +13 -0
- package/dist/bigconsole/store/index.d.ts.map +1 -0
- package/dist/bigconsole/store/parserStore.d.ts +106 -0
- package/dist/bigconsole/store/parserStore.d.ts.map +1 -0
- package/dist/bigconsole/store/pipelineStore.d.ts +113 -0
- package/dist/bigconsole/store/pipelineStore.d.ts.map +1 -0
- package/dist/bigconsole/store/widgetStore.d.ts +106 -0
- package/dist/bigconsole/store/widgetStore.d.ts.map +1 -0
- package/dist/bigconsole/store/workflowStore.d.ts +120 -0
- package/dist/bigconsole/store/workflowStore.d.ts.map +1 -0
- package/dist/bigconsole/types/index.d.ts +1373 -0
- package/dist/bigconsole/types/index.d.ts.map +1 -0
- package/dist/bigconsole/utils/backendError.d.ts +4 -0
- package/dist/bigconsole/utils/backendError.d.ts.map +1 -0
- package/dist/bigconsole/utils/createDialogParam.d.ts +26 -0
- package/dist/bigconsole/utils/createDialogParam.d.ts.map +1 -0
- package/dist/bigconsole/utils/csv.d.ts +28 -0
- package/dist/bigconsole/utils/csv.d.ts.map +1 -0
- package/dist/bigconsole/utils/format.d.ts +17 -0
- package/dist/bigconsole/utils/format.d.ts.map +1 -0
- package/dist/bigconsole/utils/index.d.ts +11 -0
- package/dist/bigconsole/utils/index.d.ts.map +1 -0
- package/dist/bigconsole/utils/quota.d.ts +39 -0
- package/dist/bigconsole/utils/quota.d.ts.map +1 -0
- package/dist/bigconsole/utils/semanticTokens.d.ts +88 -0
- package/dist/bigconsole/utils/semanticTokens.d.ts.map +1 -0
- package/dist/bigconsole/utils/widgetBinding.d.ts +50 -0
- package/dist/bigconsole/utils/widgetBinding.d.ts.map +1 -0
- package/dist/bigconsole/utils/widgetPositioning.d.ts +97 -0
- package/dist/bigconsole/utils/widgetPositioning.d.ts.map +1 -0
- package/dist/bigconsole/utils/widgetTypeMapping.d.ts +34 -0
- package/dist/bigconsole/utils/widgetTypeMapping.d.ts.map +1 -0
- package/dist/constants/permissions.d.ts +118 -0
- package/dist/constants/permissions.d.ts.map +1 -0
- package/dist/generated/global-operations.d.ts +187 -0
- package/dist/generated/global-operations.d.ts.map +1 -0
- package/dist/generated/global-types.d.ts +23527 -0
- package/dist/generated/global-types.d.ts.map +1 -0
- package/dist/generated/wspace-operations.d.ts +10521 -0
- package/dist/generated/wspace-operations.d.ts.map +1 -0
- package/dist/generated/wspace-types.d.ts +58025 -0
- package/dist/generated/wspace-types.d.ts.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/shared/hooks/useTr.d.ts +25 -0
- package/dist/shared/hooks/useTr.d.ts.map +1 -0
- package/dist/stories/DashboardGuide.stories.d.ts +15 -0
- package/dist/stories/DashboardGuide.stories.d.ts.map +1 -0
- package/dist/stories/DataSinkStatusBadge.stories.d.ts +12 -0
- package/dist/stories/DataSinkStatusBadge.stories.d.ts.map +1 -0
- package/dist/stories/GaugeWidget.stories.d.ts +58 -0
- package/dist/stories/GaugeWidget.stories.d.ts.map +1 -0
- package/dist/stories/KPIComparisonWidget.stories.d.ts +76 -0
- package/dist/stories/KPIComparisonWidget.stories.d.ts.map +1 -0
- package/dist/stories/LiveCanvasToggle.stories.d.ts +9 -0
- package/dist/stories/LiveCanvasToggle.stories.d.ts.map +1 -0
- package/dist/stories/MetricCardWidget.stories.d.ts +88 -0
- package/dist/stories/MetricCardWidget.stories.d.ts.map +1 -0
- package/dist/stories/ProgressWidget.stories.d.ts +48 -0
- package/dist/stories/ProgressWidget.stories.d.ts.map +1 -0
- package/dist/stories/SetupStateBadge.stories.d.ts +12 -0
- package/dist/stories/SetupStateBadge.stories.d.ts.map +1 -0
- package/dist/translations/en.d.ts +29 -0
- package/dist/translations/en.d.ts.map +1 -0
- package/dist/utils/nativeBridge.d.ts +3 -0
- package/dist/utils/nativeBridge.d.ts.map +1 -0
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AiPreviewContent.js","names":[],"sources":["../../../../src/bigconsole/components/preview/AiPreviewContent.tsx"],"sourcesContent":["/**\n * Live content renderers for the AI preview tabs.\n *\n * Each tab shows the REAL content of the entity the assistant just built —\n * the data sink's rows, the live dashboard, the parser's transformed output,\n * the rendered widget charts — not a list with an Open button. They reuse the\n * same components the real pages use (DataSinkTableViewer, DrilldownDashboard-\n * Renderer, WidgetWrapper) so what you see in the preview is what you get.\n *\n * These require Apollo + the BigConsole providers, which is why they live only\n * in the full AiPreviewPanel (mounted inside BigConsoleRoot), never in the\n * store-only app-shell mini panel.\n *\n * ── BC0 (BOFF-7333; BOFF-7270, BOFF-7271) ────────────────────────────────────\n * A PREVIEW MUST OBSERVE, NEVER MUTATE, AND NEVER PUBLISH.\n *\n * Three defects made this panel change the system it was previewing:\n *\n * 1. The Parser tab polled `executeParser` — a MUTATION — every 4s for 60s,\n * re-running the transform server-side up to ~15 times per turn. It now\n * reads the parser (query), follows its `outputKey`, and reads that sink\n * read-only. Zero mutations.\n * 2. The Widgets tab went through `useWidgetOperations`, which publishes into\n * the GLOBAL widget store — so opening the preview overwrote the widgets an\n * already-open dashboard was rendering. It now holds widgets in local state.\n * 3. `useLiveContent` never reset on key change, so the PREVIOUS entity's rows\n * stayed on screen as though current, and an un-caught rejection left the\n * tab spinning forever with no error surface.\n *\n * ★ Deliberately NOT changed: the other `executeParser` callers\n * (`ParserViewPage`, `CustomWidgetBuilderSheet`, `PropertiesPanel`). Those are\n * user-initiated \"run this parser\" actions where executing IS the intent. Only\n * the passive preview had no business mutating.\n */\nimport { useEffect, useRef, useState } from 'react';\nimport { useApolloClient } from '@apollo/client/react';\nimport { Spinner } from '@burdenoff/fe-libs/ui';\n\nimport { DataSinkTableViewer } from '../datasink/DataSinkTableViewer';\nimport { DrilldownDashboardRenderer } from '../DrilldownDashboardRenderer';\nimport { WidgetWrapper } from '../widgets/WidgetWrapper';\nimport { useDataSinkOperations } from '../../hooks/useDataSinkOperations';\nimport { normalizeWidget } from '../../hooks/useWidgetOperations';\nimport { GetParserDocument, ListWidgetsByDashboardDocument } from '../../../generated/wspace-operations';\nimport type { Parser, Widget } from '../../types';\n\n/** While the build is live, re-pull content on this cadence so it fills in. */\nconst CONTENT_POLL_MS = 4000;\n/** Stop the live re-pull after this long even if the turn is still running. */\nconst CONTENT_POLL_WINDOW_MS = 60_000;\n\n/**\n * Loading and waiting states share one recessed, height-reserved block so the\n * panel does not jump every time a tab fills in — previously each tab had its\n * own bare paragraph and its own height.\n */\nconst PLACEHOLDER_BOX =\n 'flex min-h-[6rem] min-w-0 items-center justify-center gap-2 rounded-card bg-bg-sunken px-3 py-6 text-center text-sm text-text-muted';\n\nfunction CenteredSpinner({ label, testId }: { label: string; testId?: string }) {\n return (\n <div className={PLACEHOLDER_BOX} data-testid={testId}>\n <Spinner className=\"size-4 shrink-0\" />\n {label}\n </div>\n );\n}\n\nfunction Waiting({ text, testId }: { text: string; testId?: string }) {\n return (\n <p className={PLACEHOLDER_BOX} data-testid={testId}>\n {text}\n </p>\n );\n}\n\n/**\n * ★ BC0: the tab had no error surface at all. An un-caught rejection inside the\n * poller left `loading` true forever, so a failed read was indistinguishable\n * from a slow one — and it surfaced as an unhandled promise rejection.\n */\nfunction ErrorBox({ text, testId }: { text: string; testId?: string }) {\n return (\n <p className={`${PLACEHOLDER_BOX} text-status-error-text`} data-testid={testId}>\n {text}\n </p>\n );\n}\n\n/**\n * Fetch-on-mount, then re-fetch every CONTENT_POLL_MS while `live`, bounded to\n * CONTENT_POLL_WINDOW_MS. Returns { data, loading, error }. `fetcher` must be\n * stable-ish; we hold it in a ref so the effect keys only on `key`/`live`.\n *\n * ★★ BC0: RESETS ON KEY CHANGE. Previously `data` survived a key change, so\n * switching to a different entity rendered the PREVIOUS entity's rows as though\n * they were the new one's — with `loading` already false, nothing said otherwise.\n */\nfunction useLiveContent<T>(fetcher: () => Promise<T | null>, key: string | undefined, live: boolean) {\n const [data, setData] = useState<T | null>(null);\n const [loading, setLoading] = useState(Boolean(key));\n const [error, setError] = useState<Error | null>(null);\n const [renderedKey, setRenderedKey] = useState(key);\n const fetcherRef = useRef(fetcher);\n fetcherRef.current = fetcher;\n\n // ★★ The reset happens DURING RENDER, not in an effect. An effect-based reset\n // commits one frame carrying the PREVIOUS entity's rows before clearing them —\n // which is the very defect being fixed here. Adjusting state while rendering is\n // React's supported pattern for \"a prop changed, discard the derived state\": it\n // re-runs this component immediately, before anything reaches the DOM, so the\n // stale rows are never painted. A key going undefined clears the render too.\n if (key !== renderedKey) {\n setRenderedKey(key);\n setData(null);\n setError(null);\n setLoading(Boolean(key));\n }\n\n useEffect(() => {\n if (!key) return;\n\n let cancelled = false;\n const startedAt = Date.now();\n const pull = async () => {\n try {\n const result = await fetcherRef.current();\n if (cancelled) return;\n if (result !== null && result !== undefined) setData(result);\n setError(null);\n } catch (err) {\n if (cancelled) return;\n // A later successful poll clears this, so a transient blip does not\n // strand the tab on an error.\n setError(err instanceof Error ? err : new Error('Failed to load preview content'));\n } finally {\n if (!cancelled) setLoading(false);\n }\n };\n void pull();\n const intervalId = window.setInterval(() => {\n if (!live || Date.now() - startedAt > CONTENT_POLL_WINDOW_MS) return;\n if (typeof document !== 'undefined' && document.visibilityState !== 'visible') return;\n void pull();\n }, CONTENT_POLL_MS);\n return () => {\n cancelled = true;\n window.clearInterval(intervalId);\n };\n }, [key, live]);\n\n return { data, loading, error };\n}\n\nexport function DataSinkContent({ id, live }: { id?: string; live: boolean }) {\n const { getDataSinkData } = useDataSinkOperations({ skipFetch: true });\n const { data, loading, error } = useLiveContent(\n async () => {\n const res = await getDataSinkData({ id }, { limit: 50 });\n return res ? res.raw : null;\n },\n id,\n live\n );\n\n if (!id) return <Waiting text=\"Waiting for the data sink to be created…\" testId=\"ai-preview-datasink-waiting\" />;\n if (error) return <ErrorBox text=\"Could not load the data sink's rows.\" testId=\"ai-preview-datasink-error\" />;\n if (loading) return <CenteredSpinner label=\"Loading the data sink’s data…\" testId=\"ai-preview-datasink-loading\" />;\n return (\n <div data-testid=\"ai-preview-content-datasink\" className=\"min-w-0\">\n <DataSinkTableViewer data={data} maxHeight=\"300px\" />\n </div>\n );\n}\n\nexport function DashboardContent({ dashboardId }: { dashboardId?: string }) {\n if (!dashboardId)\n return <Waiting text=\"Waiting for the dashboard to be created…\" testId=\"ai-preview-dashboard-waiting\" />;\n // No inner `max-h + overflow-y-auto`: the panel already owns a vertical\n // scroll, and nesting a second one put two scrollbars in ~440px of space.\n return (\n <div data-testid=\"ai-preview-content-dashboard\" className=\"min-w-0\">\n <DrilldownDashboardRenderer dashboardId={dashboardId} params={{}} />\n </div>\n );\n}\n\n/**\n * ★★★ BC0 — READ-ONLY. This tab used to call `executeParser`, a mutation, on\n * every poll: ~15 server-side re-executions per turn purely to look at output.\n *\n * A parser writes its transformed rows into a data sink named by its own\n * `outputKey` (`ParserCoreFields`), and `getDataSinkData` accepts `{ key }`. So\n * the output is fully readable without executing anything: read the parser,\n * follow `outputKey`, read the sink.\n *\n * ★ Apollo is queried directly rather than via `useParserOperations.fetchParser`,\n * because that helper calls `addParser()` and would publish into the global\n * parser store — trading defect 2's leak for the same leak one store over.\n */\nexport function ParserContent({ parserId, live }: { parserId?: string; live: boolean }) {\n const client = useApolloClient();\n const { getDataSinkData } = useDataSinkOperations({ skipFetch: true });\n const { data, loading, error } = useLiveContent(\n async () => {\n if (!parserId) return null;\n const res = await client.query<{ parser?: Parser | null }>({\n query: GetParserDocument,\n variables: { id: parserId },\n fetchPolicy: 'network-only',\n });\n const outputKey = res.data?.parser?.outputKey;\n if (!outputKey) return null;\n const sink = await getDataSinkData({ key: outputKey }, { limit: 50 });\n return sink ? sink.raw : null;\n },\n parserId,\n live\n );\n\n if (!parserId)\n return (\n <Waiting text=\"No parser in this build — the rows were already shaped.\" testId=\"ai-preview-parser-waiting\" />\n );\n if (error) return <ErrorBox text=\"Could not read the parser's output.\" testId=\"ai-preview-parser-error\" />;\n // \"Running the parser…\" would now be a lie — nothing is executed.\n if (loading) return <CenteredSpinner label=\"Loading the parser’s output…\" testId=\"ai-preview-parser-loading\" />;\n // The \"Parser output (transformed rows)\" caption used to sit here; it now\n // lives on the section header, so the tab does not label itself twice.\n return (\n <div data-testid=\"ai-preview-content-parser\" className=\"min-w-0\">\n <DataSinkTableViewer data={data} maxHeight=\"280px\" />\n </div>\n );\n}\n\n/**\n * Recharts needs a definite height or it renders 0px tall, but a hard 320px box\n * eats a short viewport whole. `min(px, vh)` keeps the definite height Recharts\n * needs while letting the box shrink on small screens.\n */\nfunction widgetBoxHeight(type: string): string {\n const t = type.toUpperCase();\n if (t.includes('METRIC') || t.includes('KPI') || t.includes('CARD') || t.includes('STAT')) return 'min(160px, 40vh)';\n if (t.includes('TABLE') || t.includes('LIST')) return 'min(280px, 50vh)';\n return 'min(320px, 50vh)';\n}\n\n/**\n * ★★★ BC0 — COMPONENT-LOCAL widgets.\n *\n * `useWidgetOperations` publishes every fetch into the GLOBAL widget store, so\n * merely opening this preview replaced the widget set an already-open dashboard\n * was rendering. The query and the normalisation are reused — `normalizeWidget`\n * is exported from that hook precisely so the two paths cannot drift — but the\n * result stays here, in this component's state.\n *\n * It also inherits `useLiveContent`'s bounded window and visibility check,\n * replacing the bespoke interval this tab used to run.\n */\nfunction usePreviewWidgets(dashboardId: string | undefined, live: boolean) {\n const client = useApolloClient();\n const { data, loading, error } = useLiveContent<Widget[]>(\n async () => {\n if (!dashboardId) return null;\n const result = await client.query<Record<string, unknown>>({\n query: ListWidgetsByDashboardDocument,\n variables: { dashboardId },\n fetchPolicy: 'network-only',\n });\n const list = (result.data?.listWidgetsByDashboard as Record<string, unknown>[]) || [];\n return list.map(normalizeWidget);\n },\n dashboardId,\n live\n );\n return { widgets: data ?? [], loading, error };\n}\n\nexport function WidgetsContent({ dashboardId, live }: { dashboardId?: string; live: boolean }) {\n const { widgets, loading, error } = usePreviewWidgets(dashboardId, live);\n\n if (!dashboardId)\n return <Waiting text=\"Waiting for the dashboard — widgets live on it.\" testId=\"ai-preview-widget-waiting\" />;\n if (error) return <ErrorBox text=\"Could not load this dashboard's widgets.\" testId=\"ai-preview-widget-error\" />;\n if (loading && widgets.length === 0)\n return <CenteredSpinner label=\"Loading widgets…\" testId=\"ai-preview-widget-loading\" />;\n if (widgets.length === 0)\n return <Waiting text=\"No widgets on this dashboard yet.\" testId=\"ai-preview-widget-empty\" />;\n\n return (\n <div data-testid=\"ai-preview-content-widget\" className=\"flex min-w-0 flex-col gap-list-gap\">\n {widgets.map((widget) => (\n <div\n key={widget.id}\n // `border-border-subtle` is registered as a frozen light hex in this\n // shell, so the box kept a light border in dark mode.\n className=\"min-w-0 overflow-hidden rounded-card border border-[var(--color-border-subtle)] bg-bg-canvas\"\n style={{ height: widgetBoxHeight(widget.type) }}\n >\n <WidgetWrapper widget={widget} isLoading={false} error={null} filterValues={{}} />\n </div>\n ))}\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AiPreviewContent.js","names":[],"sources":["../../../../src/bigconsole/components/preview/AiPreviewContent.tsx"],"sourcesContent":["/**\n * Live content renderers for the AI preview tabs.\n *\n * Each tab shows the REAL content of the entity the assistant just built —\n * the data sink's rows, the live dashboard, the parser's transformed output,\n * the rendered widget charts — not a list with an Open button. They reuse the\n * same components the real pages use (DataSinkTableViewer, DrilldownDashboard-\n * Renderer, WidgetWrapper) so what you see in the preview is what you get.\n *\n * These require Apollo + the BigConsole providers, which is why they live only\n * in the full AiPreviewPanel (mounted inside BigConsoleRoot), never in the\n * store-only app-shell mini panel.\n *\n * ── BC0 (BOFF-7333; BOFF-7270, BOFF-7271) ────────────────────────────────────\n * A PREVIEW MUST OBSERVE, NEVER MUTATE, AND NEVER PUBLISH.\n *\n * Three defects made this panel change the system it was previewing:\n *\n * 1. The Parser tab polled `executeParser` — a MUTATION — every 4s for 60s,\n * re-running the transform server-side up to ~15 times per turn. It now\n * reads the parser (query), follows its `outputKey`, and reads that sink\n * read-only. Zero mutations.\n * 2. The Widgets tab went through `useWidgetOperations`, which publishes into\n * the GLOBAL widget store — so opening the preview overwrote the widgets an\n * already-open dashboard was rendering. It now holds widgets in local state.\n * 3. `useLiveContent` never reset on key change, so the PREVIOUS entity's rows\n * stayed on screen as though current, and an un-caught rejection left the\n * tab spinning forever with no error surface.\n *\n * ★ Deliberately NOT changed: the other `executeParser` callers\n * (`ParserViewPage`, `CustomWidgetBuilderSheet`, `PropertiesPanel`). Those are\n * user-initiated \"run this parser\" actions where executing IS the intent. Only\n * the passive preview had no business mutating.\n */\nimport { useEffect, useRef, useState } from 'react';\nimport { useApolloClient } from '@apollo/client/react';\nimport { Spinner } from '@burdenoff/fe-libs/ui';\n\nimport { DataSinkTableViewer } from '../datasink/DataSinkTableViewer';\nimport { DrilldownDashboardRenderer } from '../DrilldownDashboardRenderer';\nimport { WidgetWrapper } from '../widgets/WidgetWrapper';\nimport { useDataSinkOperations } from '../../hooks/useDataSinkOperations';\nimport { normalizeWidget } from '../../hooks/useWidgetOperations';\nimport { GetParserDocument, ListWidgetsByDashboardDocument } from '../../../generated/wspace-operations';\nimport type { Parser, Widget } from '../../types';\nimport { useAssistantRunStore } from '../../assistant/assistantRunStore';\n\n/** While the build is live, re-pull content on this cadence so it fills in. */\nconst CONTENT_POLL_MS = 4000;\n\n/**\n * Loading and waiting states share one recessed, height-reserved block so the\n * panel does not jump every time a tab fills in — previously each tab had its\n * own bare paragraph and its own height.\n */\nconst PLACEHOLDER_BOX =\n 'flex min-h-[6rem] min-w-0 items-center justify-center gap-2 rounded-card bg-bg-sunken px-3 py-6 text-center text-sm text-text-muted';\n\nfunction CenteredSpinner({ label, testId }: { label: string; testId?: string }) {\n return (\n <div className={PLACEHOLDER_BOX} data-testid={testId}>\n <Spinner className=\"size-4 shrink-0\" />\n {label}\n </div>\n );\n}\n\nfunction Waiting({ text, testId }: { text: string; testId?: string }) {\n return (\n <p className={PLACEHOLDER_BOX} data-testid={testId}>\n {text}\n </p>\n );\n}\n\n/**\n * ★ BC0: the tab had no error surface at all. An un-caught rejection inside the\n * poller left `loading` true forever, so a failed read was indistinguishable\n * from a slow one — and it surfaced as an unhandled promise rejection.\n */\nfunction ErrorBox({ text, testId }: { text: string; testId?: string }) {\n return (\n <p className={`${PLACEHOLDER_BOX} text-status-error-text`} data-testid={testId}>\n {text}\n </p>\n );\n}\n\n/**\n * Fetch-on-mount and confirmed-result revisions, then re-fetch every CONTENT_POLL_MS while `live`. Returns { data, loading, error }. `fetcher` must be\n * stable-ish; we hold it in a ref so the effect keys only on `key`/`live`.\n *\n * ★★ BC0: RESETS ON KEY CHANGE. Previously `data` survived a key change, so\n * switching to a different entity rendered the PREVIOUS entity's rows as though\n * they were the new one's — with `loading` already false, nothing said otherwise.\n */\nfunction useLiveContent<T>(fetcher: () => Promise<T | null>, key: string | undefined, live: boolean) {\n const revision = useAssistantRunStore((state) => state.contentRevision);\n const [data, setData] = useState<T | null>(null);\n const [loading, setLoading] = useState(Boolean(key));\n const [error, setError] = useState<Error | null>(null);\n const [renderedKey, setRenderedKey] = useState(key);\n const fetcherRef = useRef(fetcher);\n fetcherRef.current = fetcher;\n\n // ★★ The reset happens DURING RENDER, not in an effect. An effect-based reset\n // commits one frame carrying the PREVIOUS entity's rows before clearing them —\n // which is the very defect being fixed here. Adjusting state while rendering is\n // React's supported pattern for \"a prop changed, discard the derived state\": it\n // re-runs this component immediately, before anything reaches the DOM, so the\n // stale rows are never painted. A key going undefined clears the render too.\n if (key !== renderedKey) {\n setRenderedKey(key);\n setData(null);\n setError(null);\n setLoading(Boolean(key));\n }\n\n useEffect(() => {\n if (!key) return;\n\n let cancelled = false;\n let fetching = false;\n const pull = async () => {\n if (fetching) return;\n fetching = true;\n try {\n const result = await fetcherRef.current();\n if (cancelled) return;\n setData(result ?? null);\n setError(null);\n } catch (err) {\n if (cancelled) return;\n // A later successful poll clears this, so a transient blip does not\n // strand the tab on an error.\n setError(err instanceof Error ? err : new Error('Failed to load preview content'));\n } finally {\n fetching = false;\n if (!cancelled) setLoading(false);\n }\n };\n void pull();\n const intervalId = window.setInterval(() => {\n if (!live) return;\n if (typeof document !== 'undefined' && document.visibilityState !== 'visible') return;\n void pull();\n }, CONTENT_POLL_MS);\n return () => {\n cancelled = true;\n window.clearInterval(intervalId);\n };\n }, [key, live, revision]);\n\n return { data, loading, error };\n}\n\nexport function DataSinkContent({ id, live }: { id?: string; live: boolean }) {\n const { getDataSinkData } = useDataSinkOperations({ skipFetch: true });\n const { data, loading, error } = useLiveContent(\n async () => {\n const res = await getDataSinkData({ id }, { limit: 50 });\n return res ? res.raw : null;\n },\n id,\n live\n );\n\n if (!id) return <Waiting text=\"Waiting for the data sink to be created…\" testId=\"ai-preview-datasink-waiting\" />;\n if (error) return <ErrorBox text=\"Could not load the data sink's rows.\" testId=\"ai-preview-datasink-error\" />;\n if (loading) return <CenteredSpinner label=\"Loading the data sink’s data…\" testId=\"ai-preview-datasink-loading\" />;\n return (\n <div data-testid=\"ai-preview-content-datasink\" className=\"min-w-0\">\n <DataSinkTableViewer data={data} maxHeight=\"300px\" />\n </div>\n );\n}\n\nexport function DashboardContent({ dashboardId, live = false }: { dashboardId?: string; live?: boolean }) {\n const revision = useAssistantRunStore((state) => state.contentRevision);\n if (!dashboardId)\n return <Waiting text=\"Waiting for the dashboard to be created…\" testId=\"ai-preview-dashboard-waiting\" />;\n // No inner `max-h + overflow-y-auto`: the panel already owns a vertical\n // scroll, and nesting a second one put two scrollbars in ~440px of space.\n return (\n <div data-testid=\"ai-preview-content-dashboard\" className=\"min-w-0\">\n <DrilldownDashboardRenderer\n key={dashboardId}\n dashboardId={dashboardId}\n params={{}}\n live={live}\n refreshRevision={revision}\n />\n </div>\n );\n}\n\n/**\n * ★★★ BC0 — READ-ONLY. This tab used to call `executeParser`, a mutation, on\n * every poll: ~15 server-side re-executions per turn purely to look at output.\n *\n * A parser writes its transformed rows into a data sink named by its own\n * `outputKey` (`ParserCoreFields`), and `getDataSinkData` accepts `{ key }`. So\n * the output is fully readable without executing anything: read the parser,\n * follow `outputKey`, read the sink.\n *\n * ★ Apollo is queried directly rather than via `useParserOperations.fetchParser`,\n * because that helper calls `addParser()` and would publish into the global\n * parser store — trading defect 2's leak for the same leak one store over.\n */\nexport function ParserContent({ parserId, live }: { parserId?: string; live: boolean }) {\n const client = useApolloClient();\n const { getDataSinkData } = useDataSinkOperations({ skipFetch: true });\n const { data, loading, error } = useLiveContent(\n async () => {\n if (!parserId) return null;\n const res = await client.query<{ parser?: Parser | null }>({\n query: GetParserDocument,\n variables: { id: parserId },\n fetchPolicy: 'network-only',\n });\n const outputKey = res.data?.parser?.outputKey;\n if (!outputKey) return null;\n const sink = await getDataSinkData({ key: outputKey }, { limit: 50 });\n return sink ? sink.raw : null;\n },\n parserId,\n live\n );\n\n if (!parserId) return <Waiting text=\"Waiting for the parser to be created…\" testId=\"ai-preview-parser-waiting\" />;\n if (error) return <ErrorBox text=\"Could not read the parser's output.\" testId=\"ai-preview-parser-error\" />;\n // \"Running the parser…\" would now be a lie — nothing is executed.\n if (loading) return <CenteredSpinner label=\"Loading the parser’s output…\" testId=\"ai-preview-parser-loading\" />;\n // The \"Parser output (transformed rows)\" caption used to sit here; it now\n // lives on the section header, so the tab does not label itself twice.\n return (\n <div data-testid=\"ai-preview-content-parser\" className=\"min-w-0\">\n <DataSinkTableViewer data={data} maxHeight=\"280px\" />\n </div>\n );\n}\n\n/**\n * Recharts needs a definite height or it renders 0px tall, but a hard 320px box\n * eats a short viewport whole. `min(px, vh)` keeps the definite height Recharts\n * needs while letting the box shrink on small screens.\n */\nfunction widgetBoxHeight(type: string): string {\n const t = type.toUpperCase();\n if (t.includes('METRIC') || t.includes('KPI') || t.includes('CARD') || t.includes('STAT')) return 'min(160px, 40vh)';\n if (t.includes('TABLE') || t.includes('LIST')) return 'min(280px, 50vh)';\n return 'min(320px, 50vh)';\n}\n\n/**\n * ★★★ BC0 — COMPONENT-LOCAL widgets.\n *\n * `useWidgetOperations` publishes every fetch into the GLOBAL widget store, so\n * merely opening this preview replaced the widget set an already-open dashboard\n * was rendering. The query and the normalisation are reused — `normalizeWidget`\n * is exported from that hook precisely so the two paths cannot drift — but the\n * result stays here, in this component's state.\n *\n * It also inherits `useLiveContent`'s result refresh and visibility check,\n * replacing the bespoke interval this tab used to run.\n */\nfunction usePreviewWidgets(dashboardId: string | undefined, live: boolean) {\n const client = useApolloClient();\n const { data, loading, error } = useLiveContent<Widget[]>(\n async () => {\n if (!dashboardId) return null;\n const result = await client.query<Record<string, unknown>>({\n query: ListWidgetsByDashboardDocument,\n variables: { dashboardId },\n fetchPolicy: 'network-only',\n });\n const list = (result.data?.listWidgetsByDashboard as Record<string, unknown>[]) || [];\n return list.map(normalizeWidget);\n },\n dashboardId,\n live\n );\n return { widgets: data ?? [], loading, error };\n}\n\nexport function WidgetsContent({ dashboardId, live }: { dashboardId?: string; live: boolean }) {\n const { widgets, loading, error } = usePreviewWidgets(dashboardId, live);\n\n if (!dashboardId)\n return <Waiting text=\"Waiting for the dashboard — widgets live on it.\" testId=\"ai-preview-widget-waiting\" />;\n if (error) return <ErrorBox text=\"Could not load this dashboard's widgets.\" testId=\"ai-preview-widget-error\" />;\n if (loading && widgets.length === 0)\n return <CenteredSpinner label=\"Loading widgets…\" testId=\"ai-preview-widget-loading\" />;\n if (widgets.length === 0)\n return <Waiting text=\"No widgets on this dashboard yet.\" testId=\"ai-preview-widget-empty\" />;\n\n return (\n <div data-testid=\"ai-preview-content-widget\" className=\"flex min-w-0 flex-col gap-list-gap\">\n {widgets.map((widget) => (\n <div\n key={widget.id}\n // `border-border-subtle` is registered as a frozen light hex in this\n // shell, so the box kept a light border in dark mode.\n className=\"min-w-0 overflow-hidden rounded-card border border-[var(--color-border-subtle)] bg-bg-canvas\"\n style={{ height: widgetBoxHeight(widget.type) }}\n >\n <WidgetWrapper widget={widget} isLoading={false} error={null} filterValues={{}} />\n </div>\n ))}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;AAgDA,IAAM,IAAkB,KAOlB,IACJ;AAEF,SAAS,EAAgB,EAAE,UAAO,aAA8C;AAC9E,QACE,kBAAC,OAAD;EAAK,WAAW;EAAiB,eAAa;YAA9C,CACE,kBAAC,GAAD,EAAS,WAAU,mBAAoB,CAAA,EACtC,EACG;;;AAIV,SAAS,EAAQ,EAAE,SAAM,aAA6C;AACpE,QACE,kBAAC,KAAD;EAAG,WAAW;EAAiB,eAAa;YACzC;EACC,CAAA;;AASR,SAAS,EAAS,EAAE,SAAM,aAA6C;AACrE,QACE,kBAAC,KAAD;EAAG,WAAW,GAAG,EAAgB;EAA0B,eAAa;YACrE;EACC,CAAA;;AAYR,SAAS,EAAkB,GAAkC,GAAyB,GAAe;CACnG,IAAM,IAAW,GAAsB,MAAU,EAAM,gBAAgB,EACjE,CAAC,GAAM,KAAW,EAAmB,KAAK,EAC1C,CAAC,GAAS,KAAc,EAAS,EAAQ,EAAK,EAC9C,CAAC,GAAO,KAAY,EAAuB,KAAK,EAChD,CAAC,GAAa,KAAkB,EAAS,EAAI,EAC7C,IAAa,EAAO,EAAQ;AAmDlC,QAlDA,EAAW,UAAU,GAQjB,MAAQ,MACV,EAAe,EAAI,EACnB,EAAQ,KAAK,EACb,EAAS,KAAK,EACd,EAAW,EAAQ,EAAK,GAG1B,QAAgB;AACd,MAAI,CAAC,EAAK;EAEV,IAAI,IAAY,IACZ,IAAW,IACT,IAAO,YAAY;AACnB,WACJ;QAAW;AACX,QAAI;KACF,IAAM,IAAS,MAAM,EAAW,SAAS;AACzC,SAAI,EAAW;AAEf,KADA,EAAQ,KAAU,KAAK,EACvB,EAAS,KAAK;aACP,GAAK;AACZ,SAAI,EAAW;AAGf,OAAS,aAAe,QAAQ,IAAM,gBAAI,MAAM,iCAAiC,CAAC;cAC1E;AAER,KADA,IAAW,IACN,KAAW,EAAW,GAAM;;;;AAGhC,KAAM;EACX,IAAM,IAAa,OAAO,kBAAkB;AACrC,SACD,OAAO,WAAa,OAAe,SAAS,oBAAoB,aAC/D,GAAM;KACV,EAAgB;AACnB,eAAa;AAEX,GADA,IAAY,IACZ,OAAO,cAAc,EAAW;;IAEjC;EAAC;EAAK;EAAM;EAAS,CAAC,EAElB;EAAE;EAAM;EAAS;EAAO;;AAGjC,SAAgB,EAAgB,EAAE,OAAI,WAAwC;CAC5E,IAAM,EAAE,uBAAoB,EAAsB,EAAE,WAAW,IAAM,CAAC,EAChE,EAAE,SAAM,YAAS,aAAU,EAC/B,YAAY;EACV,IAAM,IAAM,MAAM,EAAgB,EAAE,OAAI,EAAE,EAAE,OAAO,IAAI,CAAC;AACxD,SAAO,IAAM,EAAI,MAAM;IAEzB,GACA,EACD;AAKD,QAHK,IACD,IAAc,kBAAC,GAAD;EAAU,MAAK;EAAuC,QAAO;EAA8B,CAAA,GACzG,IAAgB,kBAAC,GAAD;EAAiB,OAAM;EAAgC,QAAO;EAAgC,CAAA,GAEhH,kBAAC,OAAD;EAAK,eAAY;EAA8B,WAAU;YACvD,kBAAC,GAAD;GAA2B;GAAM,WAAU;GAAU,CAAA;EACjD,CAAA,GANQ,kBAAC,GAAD;EAAS,MAAK;EAA2C,QAAO;EAAgC,CAAA;;AAUlH,SAAgB,EAAiB,EAAE,gBAAa,UAAO,MAAmD;CACxG,IAAM,IAAW,GAAsB,MAAU,EAAM,gBAAgB;AAKvE,QAJK,IAKH,kBAAC,OAAD;EAAK,eAAY;EAA+B,WAAU;YACxD,kBAAC,GAAD;GAEe;GACb,QAAQ,EAAE;GACJ;GACN,iBAAiB;GACjB,EALK,EAKL;EACE,CAAA,GAZC,kBAAC,GAAD;EAAS,MAAK;EAA2C,QAAO;EAAiC,CAAA;;AA6B5G,SAAgB,EAAc,EAAE,aAAU,WAA8C;CACtF,IAAM,IAAS,GAAiB,EAC1B,EAAE,uBAAoB,EAAsB,EAAE,WAAW,IAAM,CAAC,EAChE,EAAE,SAAM,YAAS,aAAU,EAC/B,YAAY;AACV,MAAI,CAAC,EAAU,QAAO;EAMtB,IAAM,KALM,MAAM,EAAO,MAAkC;GACzD,OAAO;GACP,WAAW,EAAE,IAAI,GAAU;GAC3B,aAAa;GACd,CAAC,EACoB,MAAM,QAAQ;AACpC,MAAI,CAAC,EAAW,QAAO;EACvB,IAAM,IAAO,MAAM,EAAgB,EAAE,KAAK,GAAW,EAAE,EAAE,OAAO,IAAI,CAAC;AACrE,SAAO,IAAO,EAAK,MAAM;IAE3B,GACA,EACD;AAQD,QANK,IACD,IAAc,kBAAC,GAAD;EAAU,MAAK;EAAsC,QAAO;EAA4B,CAAA,GAEtG,IAAgB,kBAAC,GAAD;EAAiB,OAAM;EAA+B,QAAO;EAA8B,CAAA,GAI7G,kBAAC,OAAD;EAAK,eAAY;EAA4B,WAAU;YACrD,kBAAC,GAAD;GAA2B;GAAM,WAAU;GAAU,CAAA;EACjD,CAAA,GATc,kBAAC,GAAD;EAAS,MAAK;EAAwC,QAAO;EAA8B,CAAA;;AAkBnH,SAAS,EAAgB,GAAsB;CAC7C,IAAM,IAAI,EAAK,aAAa;AAG5B,QAFI,EAAE,SAAS,SAAS,IAAI,EAAE,SAAS,MAAM,IAAI,EAAE,SAAS,OAAO,IAAI,EAAE,SAAS,OAAO,GAAS,qBAC9F,EAAE,SAAS,QAAQ,IAAI,EAAE,SAAS,OAAO,GAAS,qBAC/C;;AAeT,SAAS,EAAkB,GAAiC,GAAe;CACzE,IAAM,IAAS,GAAiB,EAC1B,EAAE,SAAM,YAAS,aAAU,EAC/B,YACO,MACU,MAAM,EAAO,MAA+B;EACzD,OAAO;EACP,WAAW,EAAE,gBAAa;EAC1B,aAAa;EACd,CAAC,EACmB,MAAM,0BAAwD,EAAE,EACzE,IAAI,EAAgB,GAPP,MAS3B,GACA,EACD;AACD,QAAO;EAAE,SAAS,KAAQ,EAAE;EAAE;EAAS;EAAO;;AAGhD,SAAgB,EAAe,EAAE,gBAAa,WAAiD;CAC7F,IAAM,EAAE,YAAS,YAAS,aAAU,EAAkB,GAAa,EAAK;AAUxE,QARK,IAED,IAAc,kBAAC,GAAD;EAAU,MAAK;EAA2C,QAAO;EAA4B,CAAA,GAC3G,KAAW,EAAQ,WAAW,IACzB,kBAAC,GAAD;EAAiB,OAAM;EAAmB,QAAO;EAA8B,CAAA,GACpF,EAAQ,WAAW,IACd,kBAAC,GAAD;EAAS,MAAK;EAAoC,QAAO;EAA4B,CAAA,GAG5F,kBAAC,OAAD;EAAK,eAAY;EAA4B,WAAU;YACpD,EAAQ,KAAK,MACZ,kBAAC,OAAD;GAIE,WAAU;GACV,OAAO,EAAE,QAAQ,EAAgB,EAAO,KAAK,EAAE;aAE/C,kBAAC,GAAD;IAAuB;IAAQ,WAAW;IAAO,OAAO;IAAM,cAAc,EAAE;IAAI,CAAA;GAC9E,EAPC,EAAO,GAOR,CACN;EACE,CAAA,GApBC,kBAAC,GAAD;EAAS,MAAK;EAAkD,QAAO;EAA8B,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
interface AiPreviewMiniPanelProps {
|
|
2
|
+
/**
|
|
3
|
+
* Route to an in-app path. The links are absolute (`/bigconsole/...`) because
|
|
4
|
+
* this panel renders outside the BigConsole router. Falls back to a full
|
|
5
|
+
* navigation when the host does not supply a handler.
|
|
6
|
+
*/
|
|
7
|
+
onNavigate?: (path: string) => void;
|
|
8
|
+
}
|
|
9
|
+
export declare function AiPreviewMiniPanel({ onNavigate }: AiPreviewMiniPanelProps): import("react").JSX.Element | null;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=AiPreviewMiniPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AiPreviewMiniPanel.d.ts","sourceRoot":"","sources":["../../../../src/bigconsole/components/preview/AiPreviewMiniPanel.tsx"],"names":[],"mappings":"AAmCA,UAAU,uBAAuB;IAC/B;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AASD,wBAAgB,kBAAkB,CAAC,EAAE,UAAU,EAAE,EAAE,uBAAuB,sCA6MzE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AiPreviewPanel.d.ts","sourceRoot":"","sources":["../../../../src/bigconsole/components/preview/AiPreviewPanel.tsx"],"names":[],"mappings":"AA0EA,wBAAgB,cAAc,uCAqP7B"}
|
|
@@ -90,7 +90,10 @@ function O() {
|
|
|
90
90
|
title: _("bigconsole.widget.aiPreview.tab.dashboard", "Dashboard"),
|
|
91
91
|
description: _("bigconsole.widget.aiPreview.dashboardHint", "The live board, rendered exactly as the real page renders it."),
|
|
92
92
|
actions: U ? /* @__PURE__ */ S(D, { onOpen: () => O(`/dashboards/${U}`) }) : void 0,
|
|
93
|
-
children: /* @__PURE__ */ S(u, {
|
|
93
|
+
children: /* @__PURE__ */ S(u, {
|
|
94
|
+
dashboardId: U,
|
|
95
|
+
live: k
|
|
96
|
+
})
|
|
94
97
|
}) })
|
|
95
98
|
},
|
|
96
99
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AiPreviewPanel.js","names":[],"sources":["../../../../src/bigconsole/components/preview/AiPreviewPanel.tsx"],"sourcesContent":["/**\n * AI Preview — watch the assistant build, with the real content inline.\n *\n * Opens by itself the moment a prompt starts. A step rail (driven by the agent's\n * own narration) shows DataSink → Dashboard → Parser → Widget filling in, and\n * the four tabs show the ACTUAL content of each entity as it lands — the data\n * sink's rows, the live dashboard, the parser's transformed output, the rendered\n * widget charts — not a list of links. Each tab has an \"Open\" button that jumps\n * to the real page.\n *\n * The content renderers need Apollo + the BigConsole providers, which is why\n * this full panel lives inside BigConsoleRoot; the store-only app-shell mini\n * panel (AiPreviewMiniPanel) keeps the lighter link view for other pages.\n *\n * ★★★ THE SHELL, RAIL AND TABS ARE fe-libs' NOW (`AssistantEntityPreview`).\n * What stays here is what is actually BigConsole's: which entities exist, how to\n * render each one, and where the panel sits relative to the assistant sidebar.\n * The shared surface brought three things this file could not have on its own:\n *\n * - a viewer's tab choice is HONOURED. The local `useEffect` re-selected a tab\n * on every store tick, so clicking one held for about 1.5 seconds before the\n * next progress update took it back — you could not read a tab while the\n * build continued.\n * - the rail can show a FAILED step instead of drawing a failure as \"not\n * started\" (the store still cannot produce one — see `assistantRunStore` —\n * but the surface no longer loses it if it ever does).\n * - keyboard navigation across the tabs, which the Radix tablist here never\n * had overflow handling for below ~430px.\n */\nimport { useEffect, useRef, useState, type ReactNode } from 'react';\nimport { Button } from '@burdenoff/fe-libs/ui';\nimport {\n AssistantEntityPreview,\n type AssistantPreviewStep,\n type AssistantPreviewTab,\n} from '@burdenoff/fe-libs/shared/assistant';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { ArrowUpRight, Loader2, Sparkles, X } from 'lucide-react';\n\nimport { PREVIEW_STEPS, useAssistantRunStore } from '../../assistant/assistantRunStore';\nimport { useAssistantRunWorkspace } from '../../assistant/useAssistantRunWorkspace';\nimport { useBigConsoleNavigate } from '../../context';\nimport { Section } from '../common';\nimport { DOCK_CLEARANCE, PreviewMeta, STEP_LABEL, formatAgo, previewLabels } from './previewShared';\nimport { DashboardContent, DataSinkContent, ParserContent, WidgetsContent } from './AiPreviewContent';\n\n/**\n * The scroll box each tab's content sits in.\n *\n * ★★ The cap is NOT cosmetic and does not belong in fe-libs: the shared surface\n * is laid out by whatever contains it, and this panel is injected ABOVE a\n * routed page — so without a cap a long data-sink preview pushes the whole page\n * down. `min(440px, 60vh)` is the original value; the hard 440px alone ate most\n * of the fold on a short laptop screen.\n */\nfunction TabBody({ children }: { children: ReactNode }) {\n return (\n <div className=\"min-w-0 overflow-y-auto p-3\" style={{ maxHeight: 'min(440px, 60vh)' }}>\n {children}\n </div>\n );\n}\n\n/** Jump-to-the-real-page button, shared by all four tabs. */\nfunction OpenEntityButton({ onOpen }: { onOpen: () => void }) {\n const { t } = useI18n();\n return (\n <Button size=\"sm\" variant=\"outline\" onClick={onOpen} data-testid=\"ai-preview-open-entity\">\n {t('bigconsole.widget.aiPreview.open', 'Open')}\n <ArrowUpRight className=\"ml-1 size-3.5\" />\n </Button>\n );\n}\n\nexport function AiPreviewPanel() {\n const { t } = useI18n();\n // ★★★ THE PAGE SURFACES ARE THE ONLY SURFACES (BOFF-7799). The assistant's\n // controller is headless, so nothing inside the panel competes with this one\n // and there is nothing to stand down for. Binding the workspace restores the\n // run after a reload in this tab and clears it on a workspace switch.\n useAssistantRunWorkspace();\n const navigate = useBigConsoleNavigate();\n\n const isRunning = useAssistantRunStore((state) => state.isRunning);\n const previewOpen = useAssistantRunStore((state) => state.previewOpen);\n const hasRun = useAssistantRunStore((state) => state.hasRun);\n const steps = useAssistantRunStore((state) => state.steps);\n const entityIds = useAssistantRunStore((state) => state.entityIds);\n const caption = useAssistantRunStore((state) => state.caption);\n const error = useAssistantRunStore((state) => state.error);\n const updatedAt = useAssistantRunStore((state) => state.updatedAt);\n const openPreview = useAssistantRunStore((state) => state.openPreview);\n const closePreview = useAssistantRunStore((state) => state.closePreview);\n const setRichMounted = useAssistantRunStore((state) => state.setRichMounted);\n\n useEffect(() => {\n setRichMounted(true);\n return () => {\n setRichMounted(false);\n };\n }, [setRichMounted]);\n\n /**\n * ★★★ WHAT COUNTS AS A \"RUN\" HERE, for the purpose of releasing a pinned tab.\n *\n * The store has no run id and deliberately never resets — a new prompt\n * CONTINUES the same build, preserving every step and entity id already made\n * (`assistantRunStore.startRun`). So the key is minted here, on the rising\n * edge of `isRunning`: each new turn is a new run, which releases a tab the\n * viewer pinned during the previous one. That is the right side to err on —\n * asking for something new and being shown the old tab is worse than losing a\n * pin you made a turn ago.\n */\n const [runKey, setRunKey] = useState(0);\n const wasRunningRef = useRef(false);\n useEffect(() => {\n if (isRunning && !wasRunningRef.current) setRunKey((n) => n + 1);\n wasRunningRef.current = isRunning;\n }, [isRunning]);\n\n if (!hasRun) return null;\n\n if (!previewOpen) {\n return (\n <div\n className=\"flex flex-wrap items-center justify-end gap-control-gap px-4 pt-3 md:px-6\"\n style={{ marginRight: DOCK_CLEARANCE }}\n >\n {/* The lone button gave no clue what it belonged to. */}\n <span className=\"text-xs text-text-muted\">\n {isRunning\n ? t('bigconsole.widget.aiPreview.buildRunning', 'AI build running')\n : t('bigconsole.widget.aiPreview.buildFinished', 'AI build finished')}\n </span>\n <Button size=\"sm\" variant=\"outline\" onClick={openPreview} data-testid=\"ai-preview-open\">\n <Sparkles className=\"mr-1.5 size-4\" />\n {t('bigconsole.widget.aiPreview.previewButton', 'Preview')}\n {isRunning ? <Loader2 className=\"ml-1.5 size-3.5 animate-spin\" /> : null}\n </Button>\n </div>\n );\n }\n\n const dashboardId = entityIds.dashboard;\n\n const railSteps: AssistantPreviewStep[] = PREVIEW_STEPS.map((key) => ({\n id: key,\n label: t(STEP_LABEL[key].key, STEP_LABEL[key].fallback),\n status: steps[key],\n }));\n\n const tabs: AssistantPreviewTab[] = [\n {\n id: 'datasink',\n label: t('bigconsole.widget.aiPreview.tab.dataSink', 'Data Sink'),\n render: () => (\n <TabBody>\n <Section\n emphasis=\"standard\"\n padding=\"compact\"\n headingLevel={3}\n title={t('bigconsole.widget.aiPreview.dataSinkRows', 'Data sink rows')}\n description={t(\n 'bigconsole.widget.aiPreview.dataSinkRowsHint',\n 'The rows the assistant just landed, straight from the sink.'\n )}\n actions={\n entityIds.datasink ? (\n <OpenEntityButton onOpen={() => navigate(`/datasinks/${entityIds.datasink}`)} />\n ) : undefined\n }\n >\n <DataSinkContent id={entityIds.datasink} live={isRunning} />\n </Section>\n </TabBody>\n ),\n },\n {\n id: 'dashboard',\n label: t('bigconsole.widget.aiPreview.tab.dashboard', 'Dashboard'),\n render: () => (\n <TabBody>\n <Section\n emphasis=\"standard\"\n padding=\"compact\"\n headingLevel={3}\n title={t('bigconsole.widget.aiPreview.tab.dashboard', 'Dashboard')}\n description={t(\n 'bigconsole.widget.aiPreview.dashboardHint',\n 'The live board, rendered exactly as the real page renders it.'\n )}\n actions={\n dashboardId ? <OpenEntityButton onOpen={() => navigate(`/dashboards/${dashboardId}`)} /> : undefined\n }\n >\n <DashboardContent dashboardId={dashboardId} />\n </Section>\n </TabBody>\n ),\n },\n {\n id: 'parser',\n label: t('bigconsole.widget.aiPreview.tab.parser', 'Parser'),\n render: () => (\n <TabBody>\n <Section\n emphasis=\"standard\"\n padding=\"compact\"\n headingLevel={3}\n title={t('bigconsole.widget.aiPreview.parserOutput', 'Parser output')}\n description={t(\n 'bigconsole.widget.aiPreview.parserOutputHint',\n \"The rows after the parser's transform, so you can check the shape.\"\n )}\n actions={\n entityIds.parser ? (\n <OpenEntityButton onOpen={() => navigate(`/parsers/${entityIds.parser}`)} />\n ) : undefined\n }\n >\n <ParserContent parserId={entityIds.parser} live={isRunning} />\n </Section>\n </TabBody>\n ),\n },\n {\n id: 'widget',\n label: t('bigconsole.widget.aiPreview.tab.widget', 'Widget'),\n render: () => (\n <TabBody>\n <Section\n emphasis=\"standard\"\n padding=\"compact\"\n headingLevel={3}\n title={t('bigconsole.widget.aiPreview.widgets', 'Widgets')}\n description={t(\n 'bigconsole.widget.aiPreview.widgetsHint',\n 'Every widget on the new dashboard, rendered live.'\n )}\n actions={\n dashboardId ? <OpenEntityButton onOpen={() => navigate(`/dashboards/${dashboardId}`)} /> : undefined\n }\n >\n <WidgetsContent dashboardId={dashboardId} live={isRunning} />\n </Section>\n </TabBody>\n ),\n },\n ];\n\n return (\n // ★ The wrapper owns POSITIONING only — clearance for the assistant dock,\n // page gutters, and the testid BigConsole already had. Everything visual\n // belongs to the shared surface.\n //\n // ★★ PADDING, not margin: `mx-4 md:mx-6` is the page gutter and it is\n // RESPONSIVE. See DOCK_CLEARANCE's docblock.\n <div data-testid=\"ai-preview-panel\" style={{ paddingRight: DOCK_CLEARANCE }} className=\"mx-4 mt-3 min-w-0 md:mx-6\">\n {/* ★★ The panel's own heading, restored. The shared surface renders its\n title as a styled <span> inside a <section aria-label>, which labels\n the region but leaves NO heading — while it still renders an <h3> for\n the step rail. main had <h2>AI Preview</h2> above that <h3>, so the\n migration both removed the panel from screen-reader heading navigation\n and orphaned the h3 under whatever <h2> the page beneath happens to\n end with. Visually hidden because the surface already shows the title;\n this only restores the structure. */}\n <h2 className=\"sr-only\">{t('bigconsole.widget.aiPreview.title', 'AI Preview')}</h2>\n <AssistantEntityPreview\n title={t('bigconsole.widget.aiPreview.title', 'AI Preview')}\n runKey={String(runKey)}\n steps={railSteps}\n tabs={tabs}\n // ★ Explicit, though it is the default: this panel's own rule was\n // \"show the LATEST thing that actually landed — so the moment the data\n // sink is created you see its rows, not an empty 'waiting for the\n // dashboard' tab\". Stating it keeps that reasoning attached to the\n // consumer that discovered it, not only to the library that adopted it.\n follow=\"produced\"\n // ★★ TWO branches, not three, and deliberately so: the shared surface\n // renders `{error ? '' : caption}` — it BLANKS the caption whenever\n // `error` is set, so a failure branch here would compute a string that\n // is then discarded. The failure is named in `meta` instead, which\n // `PreviewHeader` renders without consulting `error`.\n caption={\n isRunning\n ? caption || t('bigconsole.widget.aiPreview.working', 'Working…')\n : t('bigconsole.widget.aiPreview.done', 'Done')\n }\n error={error}\n meta={\n <PreviewMeta\n state={isRunning ? 'running' : error ? 'stopped' : 'idle'}\n stateLabel={\n isRunning\n ? t('bigconsole.widget.aiPreview.live', 'Live')\n : error\n ? t('bigconsole.widget.aiPreview.stopped', 'Stopped')\n : null\n }\n updatedLabel={t('bigconsole.widget.aiPreview.updated', 'updated')}\n updatedAt={updatedAt}\n ago={(seconds) => formatAgo(seconds, t)}\n />\n }\n headerActions={\n <Button\n size=\"sm\"\n variant=\"ghost\"\n onClick={closePreview}\n aria-label={t('bigconsole.widget.aiPreview.closeAriaLabel', 'Close preview')}\n data-testid=\"ai-preview-close\"\n >\n <X className=\"size-4\" />\n </Button>\n }\n labels={previewLabels(t)}\n />\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AiPreviewPanel.js","names":[],"sources":["../../../../src/bigconsole/components/preview/AiPreviewPanel.tsx"],"sourcesContent":["/**\n * AI Preview — watch the assistant build, with the real content inline.\n *\n * Opens by itself the moment a prompt starts. A step rail (driven by the agent's\n * own narration) shows DataSink → Dashboard → Parser → Widget filling in, and\n * the four tabs show the ACTUAL content of each entity as it lands — the data\n * sink's rows, the live dashboard, the parser's transformed output, the rendered\n * widget charts — not a list of links. Each tab has an \"Open\" button that jumps\n * to the real page.\n *\n * The content renderers need Apollo + the BigConsole providers, which is why\n * this full panel lives inside BigConsoleRoot; the store-only app-shell mini\n * panel (AiPreviewMiniPanel) keeps the lighter link view for other pages.\n *\n * ★★★ THE SHELL, RAIL AND TABS ARE fe-libs' NOW (`AssistantEntityPreview`).\n * What stays here is what is actually BigConsole's: which entities exist, how to\n * render each one, and where the panel sits relative to the assistant sidebar.\n * The shared surface brought three things this file could not have on its own:\n *\n * - a viewer's tab choice is HONOURED. The local `useEffect` re-selected a tab\n * on every store tick, so clicking one held for about 1.5 seconds before the\n * next progress update took it back — you could not read a tab while the\n * build continued.\n * - the rail can show a FAILED step instead of drawing a failure as \"not\n * started\" (the store still cannot produce one — see `assistantRunStore` —\n * but the surface no longer loses it if it ever does).\n * - keyboard navigation across the tabs, which the Radix tablist here never\n * had overflow handling for below ~430px.\n */\nimport { useEffect, useRef, useState, type ReactNode } from 'react';\nimport { Button } from '@burdenoff/fe-libs/ui';\nimport {\n AssistantEntityPreview,\n type AssistantPreviewStep,\n type AssistantPreviewTab,\n} from '@burdenoff/fe-libs/shared/assistant';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { ArrowUpRight, Loader2, Sparkles, X } from 'lucide-react';\n\nimport { PREVIEW_STEPS, useAssistantRunStore } from '../../assistant/assistantRunStore';\nimport { useAssistantRunWorkspace } from '../../assistant/useAssistantRunWorkspace';\nimport { useBigConsoleNavigate } from '../../context';\nimport { Section } from '../common';\nimport { DOCK_CLEARANCE, PreviewMeta, STEP_LABEL, formatAgo, previewLabels } from './previewShared';\nimport { DashboardContent, DataSinkContent, ParserContent, WidgetsContent } from './AiPreviewContent';\n\n/**\n * The scroll box each tab's content sits in.\n *\n * ★★ The cap is NOT cosmetic and does not belong in fe-libs: the shared surface\n * is laid out by whatever contains it, and this panel is injected ABOVE a\n * routed page — so without a cap a long data-sink preview pushes the whole page\n * down. `min(440px, 60vh)` is the original value; the hard 440px alone ate most\n * of the fold on a short laptop screen.\n */\nfunction TabBody({ children }: { children: ReactNode }) {\n return (\n <div className=\"min-w-0 overflow-y-auto p-3\" style={{ maxHeight: 'min(440px, 60vh)' }}>\n {children}\n </div>\n );\n}\n\n/** Jump-to-the-real-page button, shared by all four tabs. */\nfunction OpenEntityButton({ onOpen }: { onOpen: () => void }) {\n const { t } = useI18n();\n return (\n <Button size=\"sm\" variant=\"outline\" onClick={onOpen} data-testid=\"ai-preview-open-entity\">\n {t('bigconsole.widget.aiPreview.open', 'Open')}\n <ArrowUpRight className=\"ml-1 size-3.5\" />\n </Button>\n );\n}\n\nexport function AiPreviewPanel() {\n const { t } = useI18n();\n // ★★★ THE PAGE SURFACES ARE THE ONLY SURFACES (BOFF-7799). The assistant's\n // controller is headless, so nothing inside the panel competes with this one\n // and there is nothing to stand down for. Binding the workspace restores the\n // run after a reload in this tab and clears it on a workspace switch.\n useAssistantRunWorkspace();\n const navigate = useBigConsoleNavigate();\n\n const isRunning = useAssistantRunStore((state) => state.isRunning);\n const previewOpen = useAssistantRunStore((state) => state.previewOpen);\n const hasRun = useAssistantRunStore((state) => state.hasRun);\n const steps = useAssistantRunStore((state) => state.steps);\n const entityIds = useAssistantRunStore((state) => state.entityIds);\n const caption = useAssistantRunStore((state) => state.caption);\n const error = useAssistantRunStore((state) => state.error);\n const updatedAt = useAssistantRunStore((state) => state.updatedAt);\n const openPreview = useAssistantRunStore((state) => state.openPreview);\n const closePreview = useAssistantRunStore((state) => state.closePreview);\n const setRichMounted = useAssistantRunStore((state) => state.setRichMounted);\n\n useEffect(() => {\n setRichMounted(true);\n return () => {\n setRichMounted(false);\n };\n }, [setRichMounted]);\n\n /**\n * ★★★ WHAT COUNTS AS A \"RUN\" HERE, for the purpose of releasing a pinned tab.\n *\n * The store has no run id and deliberately never resets — a new prompt\n * CONTINUES the same build, preserving every step and entity id already made\n * (`assistantRunStore.startRun`). So the key is minted here, on the rising\n * edge of `isRunning`: each new turn is a new run, which releases a tab the\n * viewer pinned during the previous one. That is the right side to err on —\n * asking for something new and being shown the old tab is worse than losing a\n * pin you made a turn ago.\n */\n const [runKey, setRunKey] = useState(0);\n const wasRunningRef = useRef(false);\n useEffect(() => {\n if (isRunning && !wasRunningRef.current) setRunKey((n) => n + 1);\n wasRunningRef.current = isRunning;\n }, [isRunning]);\n\n if (!hasRun) return null;\n\n if (!previewOpen) {\n return (\n <div\n className=\"flex flex-wrap items-center justify-end gap-control-gap px-4 pt-3 md:px-6\"\n style={{ marginRight: DOCK_CLEARANCE }}\n >\n {/* The lone button gave no clue what it belonged to. */}\n <span className=\"text-xs text-text-muted\">\n {isRunning\n ? t('bigconsole.widget.aiPreview.buildRunning', 'AI build running')\n : t('bigconsole.widget.aiPreview.buildFinished', 'AI build finished')}\n </span>\n <Button size=\"sm\" variant=\"outline\" onClick={openPreview} data-testid=\"ai-preview-open\">\n <Sparkles className=\"mr-1.5 size-4\" />\n {t('bigconsole.widget.aiPreview.previewButton', 'Preview')}\n {isRunning ? <Loader2 className=\"ml-1.5 size-3.5 animate-spin\" /> : null}\n </Button>\n </div>\n );\n }\n\n const dashboardId = entityIds.dashboard;\n\n const railSteps: AssistantPreviewStep[] = PREVIEW_STEPS.map((key) => ({\n id: key,\n label: t(STEP_LABEL[key].key, STEP_LABEL[key].fallback),\n status: steps[key],\n }));\n\n const tabs: AssistantPreviewTab[] = [\n {\n id: 'datasink',\n label: t('bigconsole.widget.aiPreview.tab.dataSink', 'Data Sink'),\n render: () => (\n <TabBody>\n <Section\n emphasis=\"standard\"\n padding=\"compact\"\n headingLevel={3}\n title={t('bigconsole.widget.aiPreview.dataSinkRows', 'Data sink rows')}\n description={t(\n 'bigconsole.widget.aiPreview.dataSinkRowsHint',\n 'The rows the assistant just landed, straight from the sink.'\n )}\n actions={\n entityIds.datasink ? (\n <OpenEntityButton onOpen={() => navigate(`/datasinks/${entityIds.datasink}`)} />\n ) : undefined\n }\n >\n <DataSinkContent id={entityIds.datasink} live={isRunning} />\n </Section>\n </TabBody>\n ),\n },\n {\n id: 'dashboard',\n label: t('bigconsole.widget.aiPreview.tab.dashboard', 'Dashboard'),\n render: () => (\n <TabBody>\n <Section\n emphasis=\"standard\"\n padding=\"compact\"\n headingLevel={3}\n title={t('bigconsole.widget.aiPreview.tab.dashboard', 'Dashboard')}\n description={t(\n 'bigconsole.widget.aiPreview.dashboardHint',\n 'The live board, rendered exactly as the real page renders it.'\n )}\n actions={\n dashboardId ? <OpenEntityButton onOpen={() => navigate(`/dashboards/${dashboardId}`)} /> : undefined\n }\n >\n <DashboardContent dashboardId={dashboardId} live={isRunning} />\n </Section>\n </TabBody>\n ),\n },\n {\n id: 'parser',\n label: t('bigconsole.widget.aiPreview.tab.parser', 'Parser'),\n render: () => (\n <TabBody>\n <Section\n emphasis=\"standard\"\n padding=\"compact\"\n headingLevel={3}\n title={t('bigconsole.widget.aiPreview.parserOutput', 'Parser output')}\n description={t(\n 'bigconsole.widget.aiPreview.parserOutputHint',\n \"The rows after the parser's transform, so you can check the shape.\"\n )}\n actions={\n entityIds.parser ? (\n <OpenEntityButton onOpen={() => navigate(`/parsers/${entityIds.parser}`)} />\n ) : undefined\n }\n >\n <ParserContent parserId={entityIds.parser} live={isRunning} />\n </Section>\n </TabBody>\n ),\n },\n {\n id: 'widget',\n label: t('bigconsole.widget.aiPreview.tab.widget', 'Widget'),\n render: () => (\n <TabBody>\n <Section\n emphasis=\"standard\"\n padding=\"compact\"\n headingLevel={3}\n title={t('bigconsole.widget.aiPreview.widgets', 'Widgets')}\n description={t(\n 'bigconsole.widget.aiPreview.widgetsHint',\n 'Every widget on the new dashboard, rendered live.'\n )}\n actions={\n dashboardId ? <OpenEntityButton onOpen={() => navigate(`/dashboards/${dashboardId}`)} /> : undefined\n }\n >\n <WidgetsContent dashboardId={dashboardId} live={isRunning} />\n </Section>\n </TabBody>\n ),\n },\n ];\n\n return (\n // ★ The wrapper owns POSITIONING only — clearance for the assistant dock,\n // page gutters, and the testid BigConsole already had. Everything visual\n // belongs to the shared surface.\n //\n // ★★ PADDING, not margin: `mx-4 md:mx-6` is the page gutter and it is\n // RESPONSIVE. See DOCK_CLEARANCE's docblock.\n <div data-testid=\"ai-preview-panel\" style={{ paddingRight: DOCK_CLEARANCE }} className=\"mx-4 mt-3 min-w-0 md:mx-6\">\n {/* ★★ The panel's own heading, restored. The shared surface renders its\n title as a styled <span> inside a <section aria-label>, which labels\n the region but leaves NO heading — while it still renders an <h3> for\n the step rail. main had <h2>AI Preview</h2> above that <h3>, so the\n migration both removed the panel from screen-reader heading navigation\n and orphaned the h3 under whatever <h2> the page beneath happens to\n end with. Visually hidden because the surface already shows the title;\n this only restores the structure. */}\n <h2 className=\"sr-only\">{t('bigconsole.widget.aiPreview.title', 'AI Preview')}</h2>\n <AssistantEntityPreview\n title={t('bigconsole.widget.aiPreview.title', 'AI Preview')}\n runKey={String(runKey)}\n steps={railSteps}\n tabs={tabs}\n // ★ Explicit, though it is the default: this panel's own rule was\n // \"show the LATEST thing that actually landed — so the moment the data\n // sink is created you see its rows, not an empty 'waiting for the\n // dashboard' tab\". Stating it keeps that reasoning attached to the\n // consumer that discovered it, not only to the library that adopted it.\n follow=\"produced\"\n // ★★ TWO branches, not three, and deliberately so: the shared surface\n // renders `{error ? '' : caption}` — it BLANKS the caption whenever\n // `error` is set, so a failure branch here would compute a string that\n // is then discarded. The failure is named in `meta` instead, which\n // `PreviewHeader` renders without consulting `error`.\n caption={\n isRunning\n ? caption || t('bigconsole.widget.aiPreview.working', 'Working…')\n : t('bigconsole.widget.aiPreview.done', 'Done')\n }\n error={error}\n meta={\n <PreviewMeta\n state={isRunning ? 'running' : error ? 'stopped' : 'idle'}\n stateLabel={\n isRunning\n ? t('bigconsole.widget.aiPreview.live', 'Live')\n : error\n ? t('bigconsole.widget.aiPreview.stopped', 'Stopped')\n : null\n }\n updatedLabel={t('bigconsole.widget.aiPreview.updated', 'updated')}\n updatedAt={updatedAt}\n ago={(seconds) => formatAgo(seconds, t)}\n />\n }\n headerActions={\n <Button\n size=\"sm\"\n variant=\"ghost\"\n onClick={closePreview}\n aria-label={t('bigconsole.widget.aiPreview.closeAriaLabel', 'Close preview')}\n data-testid=\"ai-preview-close\"\n >\n <X className=\"size-4\" />\n </Button>\n }\n labels={previewLabels(t)}\n />\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { AssistantEntityPreviewProps } from '@burdenoff/fe-libs/shared/assistant';
|
|
2
|
+
import { PreviewStepKey } from '../../assistant/assistantRunStore';
|
|
3
|
+
|
|
4
|
+
/** The `t` both panels already hold — accepted rather than imported, so this
|
|
5
|
+
* file keeps no provider requirement of its own. */
|
|
6
|
+
type Translate = (key: string, fallback: string, params?: Record<string, string | number>) => string;
|
|
7
|
+
/**
|
|
8
|
+
* "just now" / "40s ago" / "12m ago" / "3h ago".
|
|
9
|
+
*
|
|
10
|
+
* ★★ TRANSLATED, and it now has an hour bucket. It used to return English in
|
|
11
|
+
* all three locales (en, hi, ta), and a panel left open past an hour read "240m ago" rather
|
|
12
|
+
* than "4h ago" — both of which were only visible on the surface that outlives
|
|
13
|
+
* a build, which is exactly the one people leave sitting there.
|
|
14
|
+
*/
|
|
15
|
+
export declare function formatAgo(seconds: number, t: Translate): string;
|
|
16
|
+
/**
|
|
17
|
+
* Clearance for the assistant dock, as a CSS length.
|
|
18
|
+
*
|
|
19
|
+
* ★★★ THIS REPLACED A 500ms `querySelector` POLL (BC4, BOFF-7337). The old hook
|
|
20
|
+
* measured `[data-testid="assistant-widget-window"][data-layout="sidebar"]` on an
|
|
21
|
+
* interval because the legacy widget lived in fe-libs, was mounted by the app
|
|
22
|
+
* shell, and emitted nothing when it opened or closed — reading the DOM really
|
|
23
|
+
* was the only signal available.
|
|
24
|
+
*
|
|
25
|
+
* The shared overlay publishes its width instead. fe-libs sets
|
|
26
|
+
* `--assistant-dock-width` on `<html>` from
|
|
27
|
+
* `publishedAssistantDockWidth({ isOpen, docked, isDesktop })` — 440px only when
|
|
28
|
+
* the panel is open AND docked AND the viewport is at least 640px — and REMOVES
|
|
29
|
+
* the property on unmount.
|
|
30
|
+
*
|
|
31
|
+
* ★★★ THE FLOATING PANEL NEEDS CLEARANCE TOO (BOFF-7799, fe-libs 2026.930.3).
|
|
32
|
+
* The dock width is `0px` while the panel FLOATS, which is the default, so
|
|
33
|
+
* reading it alone left the right 45 % of the preview (its close button, its
|
|
34
|
+
* "Live · updated" status and the tabs' Open buttons) under the open chat.
|
|
35
|
+
* fe-libs now also publishes `--assistant-panel-inset` from
|
|
36
|
+
* `publishedAssistantPanelInset`: 440px docked, 544px floating (the 520px
|
|
37
|
+
* window plus its 24px right gap), and `0px` closed or below 640px, where the
|
|
38
|
+
* panel is a bottom sheet. It is read FIRST, with the dock width as the fallback
|
|
39
|
+
* for an fe-libs that does not publish it, and `0px` after that for a host with
|
|
40
|
+
* no overlay mounted at all.
|
|
41
|
+
*
|
|
42
|
+
* ★★★ THE FALLBACK FAILS OPEN, SO THE VERSIONS ARE COUPLED. A host shell that
|
|
43
|
+
* pins this package but still mounts the LEGACY `AssistantWidget` publishes no
|
|
44
|
+
* variable at all, this resolves to `0px`, and the preview renders underneath a
|
|
45
|
+
* fixed 440px dock where tabs and Open buttons silently stop taking clicks.
|
|
46
|
+
* Nothing throws and no test fails. bigconsole-app therefore bumps this
|
|
47
|
+
* dependency and mounts `AssistantOverlay` in the SAME commit.
|
|
48
|
+
*
|
|
49
|
+
* ★★ A STRING, NOT A HOOK. It needs no React context and no provider ancestry —
|
|
50
|
+
* which matters because the mini panel is mounted by the app shell, outside the
|
|
51
|
+
* assistant's own tree — and the browser recomputes the margin on open/close
|
|
52
|
+
* with no re-render at all.
|
|
53
|
+
*
|
|
54
|
+
* ★ APPLIED TWO WAYS, DELIBERATELY. The collapsed bars carry only `px-*`, so
|
|
55
|
+
* they take it as `marginRight` and a closed dock reproduces the old `0`
|
|
56
|
+
* exactly. The open panels carry `mx-4 md:mx-6`, so they take it as
|
|
57
|
+
* `paddingRight` and leave those margins alone: the old
|
|
58
|
+
* `assistantWidth ? assistantWidth + 16 : undefined` fell through to the
|
|
59
|
+
* RESPONSIVE 24px gutter at md when closed, and folding a flat `+ 16px` into a
|
|
60
|
+
* calc would have quietly shrunk it on every desktop width. Padding keeps the
|
|
61
|
+
* closed state pixel-identical and only adds clearance while the panel is open.
|
|
62
|
+
*/
|
|
63
|
+
export declare const DOCK_CLEARANCE = "var(--assistant-panel-inset, var(--assistant-dock-width, 0px))";
|
|
64
|
+
/**
|
|
65
|
+
* Step labels, reusing the TAB keys.
|
|
66
|
+
*
|
|
67
|
+
* ★★ They used to be English constants in the store (`PREVIEW_STEP_LABEL`), so
|
|
68
|
+
* the rail rendered "Data Sink / Dashboard / Parser / Widget" in every locale —
|
|
69
|
+
* directly beside the SAME four names rendered translated as tab labels. The
|
|
70
|
+
* keys already exist and are already seeded; nothing new was needed to fix it.
|
|
71
|
+
*
|
|
72
|
+
* ★ Lives here because BOTH panels render the rail. It was defined twice, which
|
|
73
|
+
* is the exact duplication this migration exists to remove.
|
|
74
|
+
*/
|
|
75
|
+
export declare const STEP_LABEL: Record<PreviewStepKey, {
|
|
76
|
+
key: string;
|
|
77
|
+
fallback: string;
|
|
78
|
+
}>;
|
|
79
|
+
/**
|
|
80
|
+
* The shared surface's chrome strings, already translated.
|
|
81
|
+
*
|
|
82
|
+
* ★★ ONE copy, deliberately. BOTH defects this migration produced were the same
|
|
83
|
+
* bug written twice — the failure caption and the reopen clock each had to be
|
|
84
|
+
* fixed in the full panel AND the mini panel — so anything the two pass
|
|
85
|
+
* identically belongs here rather than inlined in each. That is the same reason
|
|
86
|
+
* the shell lived in this file before it moved to fe-libs.
|
|
87
|
+
*
|
|
88
|
+
* ★ Both surfaces use the `aiPreview` namespace, not `aiPreviewMini`: the rail
|
|
89
|
+
* says the same thing wherever it is rendered, and splitting the keys would mean
|
|
90
|
+
* translating "running" and "failed" twice per locale for no difference.
|
|
91
|
+
*
|
|
92
|
+
* `AssistantEntityPreviewProps['labels']` rather than a hand-written shape, so a
|
|
93
|
+
* new label added upstream is a type error here instead of a silently missing
|
|
94
|
+
* string.
|
|
95
|
+
*/
|
|
96
|
+
export declare function previewLabels(t: Translate): AssistantEntityPreviewProps['labels'];
|
|
97
|
+
/**
|
|
98
|
+
* The status strip both panels hand to the shared surface as `meta`.
|
|
99
|
+
*
|
|
100
|
+
* ★★★ ONE copy, and this one is not a tidiness argument — the SAME DEFECT was
|
|
101
|
+
* written into both panels twice over. The migration changed this chip from
|
|
102
|
+
* `bg-status-success-bg` to `bg-status-success-bgSubtle` in both files, and that
|
|
103
|
+
* utility DOES NOT EXIST: the token is `--color-status-success-bgSubtle` but the
|
|
104
|
+
* Tailwind preset exposes it as `status-success-bg-subtle`. The app shell emits
|
|
105
|
+
* `.bg-status-success-bg-subtle` and never `.bg-status-success-bgSubtle`, so the
|
|
106
|
+
* "Live" pill lost its background entirely and became transparent text.
|
|
107
|
+
* Nothing failed: an unknown utility is simply absent from the stylesheet.
|
|
108
|
+
*
|
|
109
|
+
* ★ Fixed with the ARBITRARY-VALUE form, `bg-[var(--color-status-…-bgSubtle)]`,
|
|
110
|
+
* which is what the other ~30 sites in this repo use. It names the token
|
|
111
|
+
* directly, so it cannot be broken by a preset key being spelled differently
|
|
112
|
+
* from the variable — which is the entire mechanism of the bug above.
|
|
113
|
+
*
|
|
114
|
+
* ★★ It also carries the FAILED state, which the caption cannot. The shared
|
|
115
|
+
* surface blanks `caption` whenever `error` is set — deliberately, so a rotating
|
|
116
|
+
* "Creating…" cannot sit under a dead run — so a product that wants the failure
|
|
117
|
+
* NAMED (as this one did on main, with "Stopped") has to say it somewhere the
|
|
118
|
+
* error does not suppress. `meta` is that place: `PreviewHeader` renders it
|
|
119
|
+
* without consulting `error`.
|
|
120
|
+
*
|
|
121
|
+
* Labels are passed in already translated, so the `t('literal.key', …)` calls
|
|
122
|
+
* stay greppable at each call site and each panel keeps its own namespace.
|
|
123
|
+
*/
|
|
124
|
+
export declare function PreviewMeta({ state, stateLabel, updatedLabel, updatedAt, ago, }: {
|
|
125
|
+
state: 'running' | 'stopped' | 'idle';
|
|
126
|
+
stateLabel: string | null;
|
|
127
|
+
updatedLabel: string;
|
|
128
|
+
/** When the run last changed, or null when there is nothing to age. */
|
|
129
|
+
updatedAt: number | null;
|
|
130
|
+
/** Renders the elapsed seconds — `formatAgo` bound to the caller's `t`. */
|
|
131
|
+
ago: (seconds: number) => string;
|
|
132
|
+
}): import("react").JSX.Element;
|
|
133
|
+
export {};
|
|
134
|
+
//# sourceMappingURL=previewShared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"previewShared.d.ts","sourceRoot":"","sources":["../../../../src/bigconsole/components/preview/previewShared.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAEvF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAExE;qDACqD;AACrD,KAAK,SAAS,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,KAAK,MAAM,CAAC;AAErG;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CAY/D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,eAAO,MAAM,cAAc,mEAAmE,CAAC;AAE/F;;;;;;;;;;GAUG;AACH,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,cAAc,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAKhF,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,SAAS,GAAG,2BAA2B,CAAC,QAAQ,CAAC,CAmBjF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,UAAU,EACV,YAAY,EACZ,SAAS,EACT,GAAG,GACJ,EAAE;IACD,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;IACtC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,2EAA2E;IAC3E,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;CAClC,+BA8DA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { WidgetAction } from '../../hooks/useWidgetActions';
|
|
3
|
+
import { ActionSaveData, ActionWebhookDraft } from './actionConfig';
|
|
4
|
+
|
|
5
|
+
export type { ActionOutcome, ActionSaveData, ActionWebhookDraft } from './actionConfig';
|
|
6
|
+
export interface ActionConfigDialogProps {
|
|
7
|
+
isOpen: boolean;
|
|
8
|
+
action?: WidgetAction;
|
|
9
|
+
/** Existing webhook binding for the edited action (prefills the URL field). */
|
|
10
|
+
initialWebhook?: ActionWebhookDraft | null;
|
|
11
|
+
isLoading?: boolean;
|
|
12
|
+
/** A save failure from the parent (action or webhook mutation) to surface inline. */
|
|
13
|
+
saveError?: string | null;
|
|
14
|
+
onClose: () => void;
|
|
15
|
+
/** `webhook` is the paired binding, or `null` to remove any existing one. */
|
|
16
|
+
onSave: (data: ActionSaveData, webhook: ActionWebhookDraft | null) => void;
|
|
17
|
+
}
|
|
18
|
+
export declare const ActionConfigDialog: FC<ActionConfigDialogProps>;
|
|
19
|
+
export default ActionConfigDialog;
|
|
20
|
+
//# sourceMappingURL=ActionConfigDialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActionConfigDialog.d.ts","sourceRoot":"","sources":["../../../../src/bigconsole/components/widgets/ActionConfigDialog.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,KAAK,EAAE,EAAkE,MAAM,OAAO,CAAC;AAmBhG,OAAO,KAAK,EAAE,YAAY,EAAmC,MAAM,8BAA8B,CAAC;AAGlG,OAAO,EAOL,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACxB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAMxF,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,+EAA+E;IAC/E,cAAc,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC3C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qFAAqF;IACrF,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,6EAA6E;IAC7E,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,kBAAkB,GAAG,IAAI,KAAK,IAAI,CAAC;CAC5E;AA4ED,eAAO,MAAM,kBAAkB,EAAE,EAAE,CAAC,uBAAuB,CA0mBzD,CAAC;AAEH,eAAe,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { Widget, NavigationMode } from '../../types';
|
|
3
|
+
|
|
4
|
+
export interface DrilldownConfigPanelProps {
|
|
5
|
+
/** Widget to configure drilldown for */
|
|
6
|
+
widget: Widget;
|
|
7
|
+
/** Callback when drilldown settings change (for tracking unsaved changes) */
|
|
8
|
+
onChange?: (config: DrilldownConfig) => void;
|
|
9
|
+
/** Sample widget data for field suggestions */
|
|
10
|
+
widgetData?: Record<string, unknown>;
|
|
11
|
+
}
|
|
12
|
+
export interface DrilldownConfig {
|
|
13
|
+
enabled: boolean;
|
|
14
|
+
targetDashboardId: string;
|
|
15
|
+
/** Page of the target dashboard; null opens its first page (BOFF-7625) */
|
|
16
|
+
targetPageId: string | null;
|
|
17
|
+
navigationMode: NavigationMode;
|
|
18
|
+
parameterMapping: Record<string, string>;
|
|
19
|
+
/** Whether to pass global filters to target dashboard */
|
|
20
|
+
passGlobalFilters: boolean;
|
|
21
|
+
/** Maximum drilldown depth (default: 3) */
|
|
22
|
+
maxDepth: number;
|
|
23
|
+
}
|
|
24
|
+
export declare const DrilldownConfigPanel: FC<DrilldownConfigPanelProps>;
|
|
25
|
+
export default DrilldownConfigPanel;
|
|
26
|
+
//# sourceMappingURL=DrilldownConfigPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DrilldownConfigPanel.d.ts","sourceRoot":"","sources":["../../../../src/bigconsole/components/widgets/DrilldownConfigPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,KAAK,EAAE,EAAmD,MAAM,OAAO,CAAC;AAGjF,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AA0C1D,MAAM,WAAW,yBAAyB;IACxC,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IAC7C,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,0EAA0E;IAC1E,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,cAAc,EAAE,cAAc,CAAC;IAC/B,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,yDAAyD;IACzD,iBAAiB,EAAE,OAAO,CAAC;IAC3B,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;CAClB;AA6DD,eAAO,MAAM,oBAAoB,EAAE,EAAE,CAAC,yBAAyB,CAkjB7D,CAAC;AAEH,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
|
|
3
|
+
export interface PropertiesPanelProps {
|
|
4
|
+
isOpen: boolean;
|
|
5
|
+
onClose: () => void;
|
|
6
|
+
}
|
|
7
|
+
export declare const PropertiesPanel: FC<PropertiesPanelProps>;
|
|
8
|
+
export default PropertiesPanel;
|
|
9
|
+
//# sourceMappingURL=PropertiesPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PropertiesPanel.d.ts","sourceRoot":"","sources":["../../../../src/bigconsole/components/widgets/PropertiesPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAc,EAAE,KAAK,EAAE,EAA2D,MAAM,OAAO,CAAC;AAmJhG,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAqWD,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,oBAAoB,CAiiDnD,CAAC;AAEH,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Component, ErrorInfo, ReactNode } from 'react';
|
|
2
|
+
|
|
3
|
+
export interface WidgetErrorBoundaryProps {
|
|
4
|
+
widgetId: string;
|
|
5
|
+
widgetType?: string;
|
|
6
|
+
widgetTitle?: string;
|
|
7
|
+
resetKey?: string | number;
|
|
8
|
+
children: ReactNode;
|
|
9
|
+
onError?: (error: Error, info: ErrorInfo) => void;
|
|
10
|
+
}
|
|
11
|
+
interface WidgetErrorBoundaryState {
|
|
12
|
+
error: Error | null;
|
|
13
|
+
}
|
|
14
|
+
export declare class WidgetErrorBoundary extends Component<WidgetErrorBoundaryProps, WidgetErrorBoundaryState> {
|
|
15
|
+
state: WidgetErrorBoundaryState;
|
|
16
|
+
static getDerivedStateFromError(error: Error): WidgetErrorBoundaryState;
|
|
17
|
+
componentDidCatch(error: Error, info: ErrorInfo): void;
|
|
18
|
+
componentDidUpdate(prevProps: WidgetErrorBoundaryProps): void;
|
|
19
|
+
private handleRetry;
|
|
20
|
+
render(): ReactNode;
|
|
21
|
+
}
|
|
22
|
+
export default WidgetErrorBoundary;
|
|
23
|
+
//# sourceMappingURL=WidgetErrorBoundary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WidgetErrorBoundary.d.ts","sourceRoot":"","sources":["../../../../src/bigconsole/components/widgets/WidgetErrorBoundary.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAElE,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;CACnD;AAED,UAAU,wBAAwB;IAChC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED,qBAAa,mBAAoB,SAAQ,SAAS,CAAC,wBAAwB,EAAE,wBAAwB,CAAC;IACpG,KAAK,EAAE,wBAAwB,CAAmB;IAElD,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,wBAAwB;IAIvE,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI;IAatD,kBAAkB,CAAC,SAAS,EAAE,wBAAwB,GAAG,IAAI;IAU7D,OAAO,CAAC,WAAW,CAEjB;IAEF,MAAM,IAAI,SAAS;CAkDpB;AAED,eAAe,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { Widget } from '../../types';
|
|
3
|
+
import { WidgetDefinition } from './WidgetRegistry';
|
|
4
|
+
|
|
5
|
+
export interface WidgetHeaderProps {
|
|
6
|
+
/** The widget data */
|
|
7
|
+
widget: Widget;
|
|
8
|
+
/** Widget definition from registry */
|
|
9
|
+
definition: WidgetDefinition;
|
|
10
|
+
/** Whether the widget is selected */
|
|
11
|
+
isSelected?: boolean;
|
|
12
|
+
/** Whether in edit mode */
|
|
13
|
+
isEditMode?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* The rendered values come from a template's embedded sample, not a
|
|
16
|
+
* connected data source. Badged so nobody mistakes example numbers for
|
|
17
|
+
* their own.
|
|
18
|
+
*/
|
|
19
|
+
isSampleData?: boolean;
|
|
20
|
+
/** Whether the widget is loading */
|
|
21
|
+
isLoading?: boolean;
|
|
22
|
+
/** Time until next refresh (formatted string) */
|
|
23
|
+
timeUntilRefresh?: string;
|
|
24
|
+
/** Whether drilldown is enabled on this widget */
|
|
25
|
+
hasDrilldown?: boolean;
|
|
26
|
+
/** Callback to refresh widget */
|
|
27
|
+
onRefresh?: () => void;
|
|
28
|
+
/** Callback to export as CSV */
|
|
29
|
+
onExportCSV?: () => void;
|
|
30
|
+
/** Callback to export as PNG */
|
|
31
|
+
onExportPNG?: () => void;
|
|
32
|
+
/** Callback for drilldown */
|
|
33
|
+
onDrilldown?: () => void;
|
|
34
|
+
/** Toggle the widget comments panel */
|
|
35
|
+
onToggleComments?: () => void;
|
|
36
|
+
/** Whether the comments panel is currently open */
|
|
37
|
+
commentsOpen?: boolean;
|
|
38
|
+
/** Number of comments on this widget (badge) */
|
|
39
|
+
commentCount?: number;
|
|
40
|
+
}
|
|
41
|
+
export declare const WidgetHeader: FC<WidgetHeaderProps>;
|
|
42
|
+
export default WidgetHeader;
|
|
43
|
+
//# sourceMappingURL=WidgetHeader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WidgetHeader.d.ts","sourceRoot":"","sources":["../../../../src/bigconsole/components/widgets/WidgetHeader.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,EAA2B,MAAM,OAAO,CAAC;AAEzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAOzD,MAAM,WAAW,iBAAiB;IAChC,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,qCAAqC;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,2BAA2B;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oCAAoC;IACpC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iDAAiD;IACjD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kDAAkD;IAClD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,gCAAgC;IAChC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,gCAAgC;IAChC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,6BAA6B;IAC7B,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,uCAAuC;IACvC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,mDAAmD;IACnD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAMD,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,iBAAiB,CAmO7C,CAAC;AAgHH,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { Widget } from '../../types';
|
|
3
|
+
|
|
4
|
+
export interface WidgetMenuProps {
|
|
5
|
+
/** The widget data */
|
|
6
|
+
widget: Widget;
|
|
7
|
+
/** Whether in edit mode */
|
|
8
|
+
isEditMode?: boolean;
|
|
9
|
+
/** Callback to refresh widget */
|
|
10
|
+
onRefresh?: () => void;
|
|
11
|
+
/** Callback to export as CSV */
|
|
12
|
+
onExportCSV?: () => void;
|
|
13
|
+
/** Callback to export as PNG */
|
|
14
|
+
onExportPNG?: () => void;
|
|
15
|
+
}
|
|
16
|
+
export declare const WidgetMenu: FC<WidgetMenuProps>;
|
|
17
|
+
export default WidgetMenu;
|
|
18
|
+
//# sourceMappingURL=WidgetMenu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WidgetMenu.d.ts","sourceRoot":"","sources":["../../../../src/bigconsole/components/widgets/WidgetMenu.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,EAAqE,MAAM,OAAO,CAAC;AAGnG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAS1C,MAAM,WAAW,eAAe;IAC9B,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,gCAAgC;IAChC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,gCAAgC;IAChC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B;AAsBD,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,eAAe,CAuZzC,CAAC;AAEH,eAAe,UAAU,CAAC"}
|