@sqlrooms/mosaic 0.29.0-rc.7 → 0.29.0-rc.9
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/LICENSE.md +2 -1
- package/README.md +179 -35
- package/dist/MosaicSlice.d.ts +1 -0
- package/dist/MosaicSlice.d.ts.map +1 -1
- package/dist/MosaicSlice.js.map +1 -1
- package/dist/VgPlotChart.d.ts.map +1 -1
- package/dist/VgPlotChart.js +9 -3
- package/dist/VgPlotChart.js.map +1 -1
- package/dist/ai/agentIntent.d.ts +5 -0
- package/dist/ai/agentIntent.d.ts.map +1 -0
- package/dist/ai/agentIntent.js +8 -0
- package/dist/ai/agentIntent.js.map +1 -0
- package/dist/ai/block-document/constants.d.ts +9 -0
- package/dist/ai/block-document/constants.d.ts.map +1 -0
- package/dist/ai/block-document/constants.js +9 -0
- package/dist/ai/block-document/constants.js.map +1 -0
- package/dist/ai/block-document/createAddMosaicDashboardBlockTool.d.ts +48 -0
- package/dist/ai/block-document/createAddMosaicDashboardBlockTool.d.ts.map +1 -0
- package/dist/ai/block-document/createAddMosaicDashboardBlockTool.js +59 -0
- package/dist/ai/block-document/createAddMosaicDashboardBlockTool.js.map +1 -0
- package/dist/ai/block-document/createBlockDocumentChartTools.d.ts +19 -0
- package/dist/ai/block-document/createBlockDocumentChartTools.d.ts.map +1 -0
- package/dist/ai/block-document/createBlockDocumentChartTools.js +37 -0
- package/dist/ai/block-document/createBlockDocumentChartTools.js.map +1 -0
- package/dist/ai/block-document/createBlockDocumentDataTableExplorerTool.d.ts +32 -0
- package/dist/ai/block-document/createBlockDocumentDataTableExplorerTool.d.ts.map +1 -0
- package/dist/ai/block-document/createBlockDocumentDataTableExplorerTool.js +37 -0
- package/dist/ai/block-document/createBlockDocumentDataTableExplorerTool.js.map +1 -0
- package/dist/ai/constants.d.ts +3 -0
- package/dist/ai/constants.d.ts.map +1 -0
- package/dist/ai/constants.js +3 -0
- package/dist/ai/constants.js.map +1 -0
- package/dist/ai/createDataTableExplorerTool.d.ts +69 -0
- package/dist/ai/createDataTableExplorerTool.d.ts.map +1 -0
- package/dist/ai/createDataTableExplorerTool.js +68 -0
- package/dist/ai/createDataTableExplorerTool.js.map +1 -0
- package/dist/ai/dashboard/constants.d.ts +6 -0
- package/dist/ai/dashboard/constants.d.ts.map +1 -0
- package/dist/ai/dashboard/constants.js +6 -0
- package/dist/ai/dashboard/constants.js.map +1 -0
- package/dist/ai/dashboard/createDashboardAgentTool.d.ts +17 -0
- package/dist/ai/dashboard/createDashboardAgentTool.d.ts.map +1 -0
- package/dist/ai/dashboard/createDashboardAgentTool.js +205 -0
- package/dist/ai/dashboard/createDashboardAgentTool.js.map +1 -0
- package/dist/ai/dashboard/createDashboardAiAdapter.d.ts +14 -0
- package/dist/ai/dashboard/createDashboardAiAdapter.d.ts.map +1 -0
- package/dist/ai/dashboard/createDashboardAiAdapter.js +75 -0
- package/dist/ai/dashboard/createDashboardAiAdapter.js.map +1 -0
- package/dist/ai/dashboard/createDashboardAiTools.d.ts +26 -0
- package/dist/ai/dashboard/createDashboardAiTools.d.ts.map +1 -0
- package/dist/ai/dashboard/createDashboardAiTools.js +40 -0
- package/dist/ai/dashboard/createDashboardAiTools.js.map +1 -0
- package/dist/ai/dashboard/createDashboardChartTools.d.ts +27 -0
- package/dist/ai/dashboard/createDashboardChartTools.d.ts.map +1 -0
- package/dist/ai/dashboard/createDashboardChartTools.js +55 -0
- package/dist/ai/dashboard/createDashboardChartTools.js.map +1 -0
- package/dist/ai/dashboard/createDashboardDataTableExplorerTool.d.ts +23 -0
- package/dist/ai/dashboard/createDashboardDataTableExplorerTool.d.ts.map +1 -0
- package/dist/ai/dashboard/createDashboardDataTableExplorerTool.js +29 -0
- package/dist/ai/dashboard/createDashboardDataTableExplorerTool.js.map +1 -0
- package/dist/ai/dashboard/createListDashboardPanelsTool.d.ts +28 -0
- package/dist/ai/dashboard/createListDashboardPanelsTool.d.ts.map +1 -0
- package/dist/ai/dashboard/createListDashboardPanelsTool.js +54 -0
- package/dist/ai/dashboard/createListDashboardPanelsTool.js.map +1 -0
- package/dist/ai/dashboard/dashboard-types.d.ts +59 -0
- package/dist/ai/dashboard/dashboard-types.d.ts.map +1 -0
- package/dist/ai/dashboard/dashboard-types.js +2 -0
- package/dist/ai/dashboard/dashboard-types.js.map +1 -0
- package/dist/ai/database-types.d.ts +12 -0
- package/dist/ai/database-types.d.ts.map +1 -0
- package/dist/ai/database-types.js +2 -0
- package/dist/ai/database-types.js.map +1 -0
- package/dist/ai/errors.d.ts +8 -0
- package/dist/ai/errors.d.ts.map +1 -0
- package/dist/ai/errors.js +11 -0
- package/dist/ai/errors.js.map +1 -0
- package/dist/ai/tool-helpers.d.ts +28 -29
- package/dist/ai/tool-helpers.d.ts.map +1 -1
- package/dist/ai/tool-helpers.js +38 -76
- package/dist/ai/tool-helpers.js.map +1 -1
- package/dist/ai/tool-schemas.d.ts +9 -4
- package/dist/ai/tool-schemas.d.ts.map +1 -1
- package/dist/ai/tool-schemas.js +12 -12
- package/dist/ai/tool-schemas.js.map +1 -1
- package/dist/ai/tool-types.d.ts +19 -1
- package/dist/ai/tool-types.d.ts.map +1 -1
- package/dist/ai/tool-types.js.map +1 -1
- package/dist/ai/types.d.ts +64 -0
- package/dist/ai/types.d.ts.map +1 -0
- package/dist/ai/types.js +2 -0
- package/dist/ai/types.js.map +1 -0
- package/dist/ai.d.ts +16 -2
- package/dist/ai.d.ts.map +1 -1
- package/dist/ai.js +14 -5
- package/dist/ai.js.map +1 -1
- package/dist/charts/MosaicChart.d.ts +3 -1
- package/dist/charts/MosaicChart.d.ts.map +1 -1
- package/dist/charts/MosaicChart.js +2 -2
- package/dist/charts/MosaicChart.js.map +1 -1
- package/dist/charts/MosaicChartError.d.ts +8 -2
- package/dist/charts/MosaicChartError.d.ts.map +1 -1
- package/dist/charts/MosaicChartError.js +29 -3
- package/dist/charts/MosaicChartError.js.map +1 -1
- package/dist/charts/MosaicChartSettingsButton.d.ts +15 -0
- package/dist/charts/MosaicChartSettingsButton.d.ts.map +1 -0
- package/dist/charts/MosaicChartSettingsButton.js +7 -0
- package/dist/charts/MosaicChartSettingsButton.js.map +1 -0
- package/dist/charts/MosaicChartView.d.ts +2 -0
- package/dist/charts/MosaicChartView.d.ts.map +1 -1
- package/dist/charts/MosaicChartView.js +19 -7
- package/dist/charts/MosaicChartView.js.map +1 -1
- package/dist/charts/chart-settings/MosaicChartSettings.d.ts.map +1 -1
- package/dist/charts/chart-settings/MosaicChartSettings.js +3 -3
- package/dist/charts/chart-settings/MosaicChartSettings.js.map +1 -1
- package/dist/charts/chart-settings/MosaicChartSettingsPanel.js +1 -1
- package/dist/charts/chart-settings/MosaicChartSettingsPanel.js.map +1 -1
- package/dist/charts/chart-settings/MosaicChartSpecViewerPanel.d.ts.map +1 -1
- package/dist/charts/chart-settings/MosaicChartSpecViewerPanel.js +2 -1
- package/dist/charts/chart-settings/MosaicChartSpecViewerPanel.js.map +1 -1
- package/dist/charts/chart-settings/MosaicChartTypeSelector.d.ts.map +1 -1
- package/dist/charts/chart-settings/MosaicChartTypeSelector.js +3 -3
- package/dist/charts/chart-settings/MosaicChartTypeSelector.js.map +1 -1
- package/dist/charts/chart-types/base-types.d.ts +40 -25
- package/dist/charts/chart-types/base-types.d.ts.map +1 -1
- package/dist/charts/chart-types/base-types.js +5 -0
- package/dist/charts/chart-types/base-types.js.map +1 -1
- package/dist/charts/chart-types/box-plot/definition.d.ts.map +1 -1
- package/dist/charts/chart-types/box-plot/definition.js +1 -0
- package/dist/charts/chart-types/box-plot/definition.js.map +1 -1
- package/dist/charts/chart-types/box-plot/renderer/BoxPlotClient.d.ts +37 -3
- package/dist/charts/chart-types/box-plot/renderer/BoxPlotClient.d.ts.map +1 -1
- package/dist/charts/chart-types/box-plot/renderer/BoxPlotClient.js +28 -13
- package/dist/charts/chart-types/box-plot/renderer/BoxPlotClient.js.map +1 -1
- package/dist/charts/chart-types/box-plot/renderer/BoxPlotPanelRenderer.js +2 -2
- package/dist/charts/chart-types/box-plot/renderer/BoxPlotPanelRenderer.js.map +1 -1
- package/dist/charts/chart-types/box-plot/renderer/useBoxPlotClient.d.ts +12 -1
- package/dist/charts/chart-types/box-plot/renderer/useBoxPlotClient.d.ts.map +1 -1
- package/dist/charts/chart-types/box-plot/renderer/useBoxPlotClient.js +13 -3
- package/dist/charts/chart-types/box-plot/renderer/useBoxPlotClient.js.map +1 -1
- package/dist/charts/chart-types/box-plot/tool.d.ts +20 -24
- package/dist/charts/chart-types/box-plot/tool.d.ts.map +1 -1
- package/dist/charts/chart-types/box-plot/tool.js +25 -33
- package/dist/charts/chart-types/box-plot/tool.js.map +1 -1
- package/dist/charts/chart-types/box-plot/validation.d.ts +9 -0
- package/dist/charts/chart-types/box-plot/validation.d.ts.map +1 -0
- package/dist/charts/chart-types/box-plot/validation.js +32 -0
- package/dist/charts/chart-types/box-plot/validation.js.map +1 -0
- package/dist/charts/chart-types/chart-config.d.ts +3 -1
- package/dist/charts/chart-types/chart-config.d.ts.map +1 -1
- package/dist/charts/chart-types/chart-config.js +2 -2
- package/dist/charts/chart-types/chart-config.js.map +1 -1
- package/dist/charts/chart-types/column-types.d.ts +8 -0
- package/dist/charts/chart-types/column-types.d.ts.map +1 -0
- package/dist/charts/chart-types/column-types.js +2 -0
- package/dist/charts/chart-types/column-types.js.map +1 -0
- package/dist/charts/chart-types/count-plot/definition.d.ts.map +1 -1
- package/dist/charts/chart-types/count-plot/definition.js +1 -0
- package/dist/charts/chart-types/count-plot/definition.js.map +1 -1
- package/dist/charts/chart-types/count-plot/spec.d.ts +2 -1
- package/dist/charts/chart-types/count-plot/spec.d.ts.map +1 -1
- package/dist/charts/chart-types/count-plot/spec.js +47 -34
- package/dist/charts/chart-types/count-plot/spec.js.map +1 -1
- package/dist/charts/chart-types/count-plot/tool.d.ts +19 -24
- package/dist/charts/chart-types/count-plot/tool.d.ts.map +1 -1
- package/dist/charts/chart-types/count-plot/tool.js +26 -33
- package/dist/charts/chart-types/count-plot/tool.js.map +1 -1
- package/dist/charts/chart-types/count-plot/validation.d.ts +8 -0
- package/dist/charts/chart-types/count-plot/validation.d.ts.map +1 -0
- package/dist/charts/chart-types/count-plot/validation.js +20 -0
- package/dist/charts/chart-types/count-plot/validation.js.map +1 -0
- package/dist/charts/chart-types/createChartInstructions.d.ts +3 -0
- package/dist/charts/chart-types/createChartInstructions.d.ts.map +1 -0
- package/dist/charts/chart-types/createChartInstructions.js +12 -0
- package/dist/charts/chart-types/createChartInstructions.js.map +1 -0
- package/dist/charts/chart-types/createChartTools.d.ts +15 -9
- package/dist/charts/chart-types/createChartTools.d.ts.map +1 -1
- package/dist/charts/chart-types/createChartTools.js +16 -10
- package/dist/charts/chart-types/createChartTools.js.map +1 -1
- package/dist/charts/chart-types/createDefaultChartTypes.js +2 -2
- package/dist/charts/chart-types/createDefaultChartTypes.js.map +1 -1
- package/dist/charts/chart-types/custom-spec/definition.d.ts.map +1 -1
- package/dist/charts/chart-types/custom-spec/definition.js +1 -0
- package/dist/charts/chart-types/custom-spec/definition.js.map +1 -1
- package/dist/charts/chart-types/custom-spec/spec.d.ts +2 -1
- package/dist/charts/chart-types/custom-spec/spec.d.ts.map +1 -1
- package/dist/charts/chart-types/custom-spec/spec.js +16 -12
- package/dist/charts/chart-types/custom-spec/spec.js.map +1 -1
- package/dist/charts/chart-types/errors.d.ts +35 -0
- package/dist/charts/chart-types/errors.d.ts.map +1 -1
- package/dist/charts/chart-types/errors.js +56 -0
- package/dist/charts/chart-types/errors.js.map +1 -1
- package/dist/charts/chart-types/heatmap/definition.d.ts.map +1 -1
- package/dist/charts/chart-types/heatmap/definition.js +1 -0
- package/dist/charts/chart-types/heatmap/definition.js.map +1 -1
- package/dist/charts/chart-types/heatmap/spec.d.ts +2 -1
- package/dist/charts/chart-types/heatmap/spec.d.ts.map +1 -1
- package/dist/charts/chart-types/heatmap/spec.js +21 -21
- package/dist/charts/chart-types/heatmap/spec.js.map +1 -1
- package/dist/charts/chart-types/heatmap/tool.d.ts +20 -24
- package/dist/charts/chart-types/heatmap/tool.d.ts.map +1 -1
- package/dist/charts/chart-types/heatmap/tool.js +27 -37
- package/dist/charts/chart-types/heatmap/tool.js.map +1 -1
- package/dist/charts/chart-types/heatmap/validation.d.ts +9 -0
- package/dist/charts/chart-types/heatmap/validation.d.ts.map +1 -0
- package/dist/charts/chart-types/heatmap/validation.js +34 -0
- package/dist/charts/chart-types/heatmap/validation.js.map +1 -0
- package/dist/charts/chart-types/histogram/HistogramSettings.d.ts.map +1 -1
- package/dist/charts/chart-types/histogram/HistogramSettings.js +3 -1
- package/dist/charts/chart-types/histogram/HistogramSettings.js.map +1 -1
- package/dist/charts/chart-types/histogram/definition.d.ts.map +1 -1
- package/dist/charts/chart-types/histogram/definition.js +1 -0
- package/dist/charts/chart-types/histogram/definition.js.map +1 -1
- package/dist/charts/chart-types/histogram/schema.d.ts +2 -0
- package/dist/charts/chart-types/histogram/schema.d.ts.map +1 -1
- package/dist/charts/chart-types/histogram/schema.js +1 -0
- package/dist/charts/chart-types/histogram/schema.js.map +1 -1
- package/dist/charts/chart-types/histogram/spec.d.ts +2 -1
- package/dist/charts/chart-types/histogram/spec.d.ts.map +1 -1
- package/dist/charts/chart-types/histogram/spec.js +31 -28
- package/dist/charts/chart-types/histogram/spec.js.map +1 -1
- package/dist/charts/chart-types/histogram/tool.d.ts +39 -24
- package/dist/charts/chart-types/histogram/tool.d.ts.map +1 -1
- package/dist/charts/chart-types/histogram/tool.js +39 -33
- package/dist/charts/chart-types/histogram/tool.js.map +1 -1
- package/dist/charts/chart-types/histogram/validation.d.ts +9 -0
- package/dist/charts/chart-types/histogram/validation.d.ts.map +1 -0
- package/dist/charts/chart-types/histogram/validation.js +22 -0
- package/dist/charts/chart-types/histogram/validation.js.map +1 -0
- package/dist/charts/chart-types/index.d.ts +5 -11
- package/dist/charts/chart-types/index.d.ts.map +1 -1
- package/dist/charts/chart-types/index.js +6 -12
- package/dist/charts/chart-types/index.js.map +1 -1
- package/dist/charts/chart-types/line-chart/LineChartSettings.d.ts.map +1 -1
- package/dist/charts/chart-types/line-chart/LineChartSettings.js +4 -13
- package/dist/charts/chart-types/line-chart/LineChartSettings.js.map +1 -1
- package/dist/charts/chart-types/line-chart/LineChartXFieldSelector.d.ts +7 -0
- package/dist/charts/chart-types/line-chart/LineChartXFieldSelector.d.ts.map +1 -0
- package/dist/charts/chart-types/line-chart/LineChartXFieldSelector.js +22 -0
- package/dist/charts/chart-types/line-chart/LineChartXFieldSelector.js.map +1 -0
- package/dist/charts/chart-types/line-chart/LineChartYFieldsSelector.d.ts +7 -0
- package/dist/charts/chart-types/line-chart/LineChartYFieldsSelector.d.ts.map +1 -0
- package/dist/charts/chart-types/line-chart/LineChartYFieldsSelector.js +42 -0
- package/dist/charts/chart-types/line-chart/LineChartYFieldsSelector.js.map +1 -0
- package/dist/charts/chart-types/line-chart/definition.d.ts.map +1 -1
- package/dist/charts/chart-types/line-chart/definition.js +1 -0
- package/dist/charts/chart-types/line-chart/definition.js.map +1 -1
- package/dist/charts/chart-types/line-chart/schema.d.ts +2 -0
- package/dist/charts/chart-types/line-chart/schema.d.ts.map +1 -1
- package/dist/charts/chart-types/line-chart/schema.js +5 -0
- package/dist/charts/chart-types/line-chart/schema.js.map +1 -1
- package/dist/charts/chart-types/line-chart/spec.d.ts +2 -1
- package/dist/charts/chart-types/line-chart/spec.d.ts.map +1 -1
- package/dist/charts/chart-types/line-chart/spec.js +56 -65
- package/dist/charts/chart-types/line-chart/spec.js.map +1 -1
- package/dist/charts/chart-types/line-chart/tool.d.ts +28 -24
- package/dist/charts/chart-types/line-chart/tool.d.ts.map +1 -1
- package/dist/charts/chart-types/line-chart/tool.js +27 -39
- package/dist/charts/chart-types/line-chart/tool.js.map +1 -1
- package/dist/charts/chart-types/line-chart/utils.d.ts +7 -0
- package/dist/charts/chart-types/line-chart/utils.d.ts.map +1 -0
- package/dist/charts/chart-types/line-chart/utils.js +17 -0
- package/dist/charts/chart-types/line-chart/utils.js.map +1 -0
- package/dist/charts/chart-types/line-chart/validation.d.ts +16 -0
- package/dist/charts/chart-types/line-chart/validation.d.ts.map +1 -0
- package/dist/charts/chart-types/line-chart/validation.js +43 -0
- package/dist/charts/chart-types/line-chart/validation.js.map +1 -0
- package/dist/charts/chart-types/mosaicChartTypes.d.ts +4 -2
- package/dist/charts/chart-types/mosaicChartTypes.d.ts.map +1 -1
- package/dist/charts/chart-types/mosaicChartTypes.js +2 -2
- package/dist/charts/chart-types/mosaicChartTypes.js.map +1 -1
- package/dist/charts/chart-types/resolveChartTypes.d.ts +3 -0
- package/dist/charts/chart-types/resolveChartTypes.d.ts.map +1 -0
- package/dist/charts/chart-types/resolveChartTypes.js +8 -0
- package/dist/charts/chart-types/resolveChartTypes.js.map +1 -0
- package/dist/charts/chart-types/scatter-plot/ScatterPlotSettings.d.ts +3 -0
- package/dist/charts/chart-types/scatter-plot/ScatterPlotSettings.d.ts.map +1 -0
- package/dist/charts/chart-types/{bubble-chart/BubbleChartSettings.js → scatter-plot/ScatterPlotSettings.js} +4 -4
- package/dist/charts/chart-types/scatter-plot/ScatterPlotSettings.js.map +1 -0
- package/dist/charts/chart-types/scatter-plot/definition.d.ts +4 -0
- package/dist/charts/chart-types/scatter-plot/definition.d.ts.map +1 -0
- package/dist/charts/chart-types/scatter-plot/definition.js +25 -0
- package/dist/charts/chart-types/scatter-plot/definition.js.map +1 -0
- package/dist/charts/chart-types/{bubble-chart → scatter-plot}/schema.d.ts +5 -5
- package/dist/charts/chart-types/scatter-plot/schema.d.ts.map +1 -0
- package/dist/charts/chart-types/{bubble-chart → scatter-plot}/schema.js +5 -5
- package/dist/charts/chart-types/scatter-plot/schema.js.map +1 -0
- package/dist/charts/chart-types/scatter-plot/spec.d.ts +5 -0
- package/dist/charts/chart-types/scatter-plot/spec.d.ts.map +1 -0
- package/dist/charts/chart-types/scatter-plot/spec.js +37 -0
- package/dist/charts/chart-types/scatter-plot/spec.js.map +1 -0
- package/dist/charts/chart-types/scatter-plot/tool.d.ts +39 -0
- package/dist/charts/chart-types/scatter-plot/tool.d.ts.map +1 -0
- package/dist/charts/chart-types/scatter-plot/tool.js +57 -0
- package/dist/charts/chart-types/scatter-plot/tool.js.map +1 -0
- package/dist/charts/chart-types/scatter-plot/validation.d.ts +13 -0
- package/dist/charts/chart-types/scatter-plot/validation.d.ts.map +1 -0
- package/dist/charts/chart-types/scatter-plot/validation.js +52 -0
- package/dist/charts/chart-types/scatter-plot/validation.js.map +1 -0
- package/dist/charts/chart-types/tool-types.d.ts +43 -0
- package/dist/charts/chart-types/tool-types.d.ts.map +1 -0
- package/dist/charts/chart-types/tool-types.js +2 -0
- package/dist/charts/chart-types/tool-types.js.map +1 -0
- package/dist/charts/chart-types/utils.d.ts +3 -0
- package/dist/charts/chart-types/utils.d.ts.map +1 -0
- package/dist/charts/chart-types/utils.js +4 -0
- package/dist/charts/chart-types/utils.js.map +1 -0
- package/dist/charts/dashboard/MosaicDashboardChartHeaderActions.d.ts.map +1 -1
- package/dist/charts/dashboard/MosaicDashboardChartHeaderActions.js +12 -5
- package/dist/charts/dashboard/MosaicDashboardChartHeaderActions.js.map +1 -1
- package/dist/charts/dashboard/MosaicDashboardChartRenderer.d.ts.map +1 -1
- package/dist/charts/dashboard/MosaicDashboardChartRenderer.js +6 -4
- package/dist/charts/dashboard/MosaicDashboardChartRenderer.js.map +1 -1
- package/dist/charts/useChartDataPolicy.d.ts.map +1 -1
- package/dist/charts/useChartDataPolicy.js +2 -1
- package/dist/charts/useChartDataPolicy.js.map +1 -1
- package/dist/charts/useChartPanelClients.d.ts +8 -0
- package/dist/charts/useChartPanelClients.d.ts.map +1 -0
- package/dist/charts/useChartPanelClients.js +22 -0
- package/dist/charts/useChartPanelClients.js.map +1 -0
- package/dist/charts/useMosaicChartRenderContext.d.ts +2 -3
- package/dist/charts/useMosaicChartRenderContext.d.ts.map +1 -1
- package/dist/charts/useMosaicChartRenderContext.js +15 -15
- package/dist/charts/useMosaicChartRenderContext.js.map +1 -1
- package/dist/charts/worksheet/ChartBlockHeader.d.ts.map +1 -1
- package/dist/charts/worksheet/ChartBlockHeader.js +4 -3
- package/dist/charts/worksheet/ChartBlockHeader.js.map +1 -1
- package/dist/charts/worksheet/ChartBlockRenderer.d.ts.map +1 -1
- package/dist/charts/worksheet/ChartBlockRenderer.js +3 -13
- package/dist/charts/worksheet/ChartBlockRenderer.js.map +1 -1
- package/dist/column-types-utils.d.ts.map +1 -1
- package/dist/column-types-utils.js +12 -4
- package/dist/column-types-utils.js.map +1 -1
- package/dist/components/AggregationSelector.d.ts.map +1 -1
- package/dist/components/AggregationSelector.js +9 -2
- package/dist/components/AggregationSelector.js.map +1 -1
- package/dist/components/BlockCaptionEditor.d.ts +20 -0
- package/dist/components/BlockCaptionEditor.d.ts.map +1 -0
- package/dist/components/BlockCaptionEditor.js +15 -0
- package/dist/components/BlockCaptionEditor.js.map +1 -0
- package/dist/components/ColorSelector.d.ts +12 -0
- package/dist/components/ColorSelector.d.ts.map +1 -0
- package/dist/components/ColorSelector.js +13 -0
- package/dist/components/ColorSelector.js.map +1 -0
- package/dist/components/ColumnSelector.d.ts +1 -0
- package/dist/components/ColumnSelector.d.ts.map +1 -1
- package/dist/components/ColumnSelector.js +2 -2
- package/dist/components/ColumnSelector.js.map +1 -1
- package/dist/components/FieldSelectorInput.d.ts +1 -0
- package/dist/components/FieldSelectorInput.d.ts.map +1 -1
- package/dist/components/FieldSelectorInput.js +4 -9
- package/dist/components/FieldSelectorInput.js.map +1 -1
- package/dist/components/MultiFieldSelector.d.ts +4 -1
- package/dist/components/MultiFieldSelector.d.ts.map +1 -1
- package/dist/components/MultiFieldSelector.js +4 -13
- package/dist/components/MultiFieldSelector.js.map +1 -1
- package/dist/components/TemporalGranularitySelector.d.ts.map +1 -1
- package/dist/components/TemporalGranularitySelector.js +13 -9
- package/dist/components/TemporalGranularitySelector.js.map +1 -1
- package/dist/constants/chart-colors.d.ts +3 -0
- package/dist/constants/chart-colors.d.ts.map +1 -0
- package/dist/constants/chart-colors.js +5 -0
- package/dist/constants/chart-colors.js.map +1 -0
- package/dist/dashboard/DefaultMosaicDashboardBlock.d.ts +2 -1
- package/dist/dashboard/DefaultMosaicDashboardBlock.d.ts.map +1 -1
- package/dist/dashboard/DefaultMosaicDashboardBlock.js +1 -1
- package/dist/dashboard/DefaultMosaicDashboardBlock.js.map +1 -1
- package/dist/dashboard/MosaicDashboardCommands.d.ts +19 -0
- package/dist/dashboard/MosaicDashboardCommands.d.ts.map +1 -0
- package/dist/dashboard/MosaicDashboardCommands.js +226 -0
- package/dist/dashboard/MosaicDashboardCommands.js.map +1 -0
- package/dist/dashboard/MosaicDashboardSlice.d.ts +22 -4
- package/dist/dashboard/MosaicDashboardSlice.d.ts.map +1 -1
- package/dist/dashboard/MosaicDashboardSlice.js +55 -0
- package/dist/dashboard/MosaicDashboardSlice.js.map +1 -1
- package/dist/dashboard/components/ResetFiltersButton.d.ts +14 -0
- package/dist/dashboard/components/ResetFiltersButton.d.ts.map +1 -0
- package/dist/dashboard/components/ResetFiltersButton.js +15 -0
- package/dist/dashboard/components/ResetFiltersButton.js.map +1 -0
- package/dist/dashboard/dashboard-types.d.ts +9 -3
- package/dist/dashboard/dashboard-types.d.ts.map +1 -1
- package/dist/dashboard/dashboard-types.js.map +1 -1
- package/dist/dashboard/hooks/useDashboardResetFilters.d.ts +14 -0
- package/dist/dashboard/hooks/useDashboardResetFilters.d.ts.map +1 -0
- package/dist/dashboard/hooks/useDashboardResetFilters.js +39 -0
- package/dist/dashboard/hooks/useDashboardResetFilters.js.map +1 -0
- package/dist/dashboard/hooks/usePanelResetFilters.d.ts +16 -0
- package/dist/dashboard/hooks/usePanelResetFilters.d.ts.map +1 -0
- package/dist/dashboard/hooks/usePanelResetFilters.js +47 -0
- package/dist/dashboard/hooks/usePanelResetFilters.js.map +1 -0
- package/dist/dashboard/panel/MosaicDashboardPanel.d.ts.map +1 -1
- package/dist/dashboard/panel/MosaicDashboardPanel.js +1 -1
- package/dist/dashboard/panel/MosaicDashboardPanel.js.map +1 -1
- package/dist/dashboard/panel/MosaicDashboardPanelLayout.d.ts.map +1 -1
- package/dist/dashboard/panel/MosaicDashboardPanelLayout.js +3 -3
- package/dist/dashboard/panel/MosaicDashboardPanelLayout.js.map +1 -1
- package/dist/dashboard/panel/MosaicDashboardPanels.d.ts.map +1 -1
- package/dist/dashboard/panel/MosaicDashboardPanels.js +4 -2
- package/dist/dashboard/panel/MosaicDashboardPanels.js.map +1 -1
- package/dist/dashboard/toolbar/MosaicDashboardAddPanelDropdown.d.ts.map +1 -1
- package/dist/dashboard/toolbar/MosaicDashboardAddPanelDropdown.js +3 -3
- package/dist/dashboard/toolbar/MosaicDashboardAddPanelDropdown.js.map +1 -1
- package/dist/dashboard/toolbar/MosaicDashboardDataTableSelector.d.ts +7 -0
- package/dist/dashboard/toolbar/MosaicDashboardDataTableSelector.d.ts.map +1 -0
- package/dist/dashboard/toolbar/MosaicDashboardDataTableSelector.js +18 -0
- package/dist/dashboard/toolbar/MosaicDashboardDataTableSelector.js.map +1 -0
- package/dist/dashboard/toolbar/MosaicDashboardResetFiltersButton.d.ts.map +1 -1
- package/dist/dashboard/toolbar/MosaicDashboardResetFiltersButton.js +4 -32
- package/dist/dashboard/toolbar/MosaicDashboardResetFiltersButton.js.map +1 -1
- package/dist/dashboard/toolbar/MosaicDashboardToolbar.d.ts +2 -2
- package/dist/dashboard/toolbar/MosaicDashboardToolbar.d.ts.map +1 -1
- package/dist/dashboard/toolbar/MosaicDashboardToolbar.js +14 -10
- package/dist/dashboard/toolbar/MosaicDashboardToolbar.js.map +1 -1
- package/dist/dashboard/usePanelClientRegistration.d.ts +7 -0
- package/dist/dashboard/usePanelClientRegistration.d.ts.map +1 -0
- package/dist/dashboard/usePanelClientRegistration.js +30 -0
- package/dist/dashboard/usePanelClientRegistration.js.map +1 -0
- package/dist/dashboard/usePanelClients.d.ts +7 -0
- package/dist/dashboard/usePanelClients.d.ts.map +1 -0
- package/dist/dashboard/usePanelClients.js +13 -0
- package/dist/dashboard/usePanelClients.js.map +1 -0
- package/dist/dashboard/useSelectedOrFirstTable.d.ts +1 -1
- package/dist/dashboard/useSelectedOrFirstTable.d.ts.map +1 -1
- package/dist/dashboard/useSelectedOrFirstTable.js +10 -8
- package/dist/dashboard/useSelectedOrFirstTable.js.map +1 -1
- package/dist/data-table-explorer/DataTableExplorer.d.ts +4 -2
- package/dist/data-table-explorer/DataTableExplorer.d.ts.map +1 -1
- package/dist/data-table-explorer/DataTableExplorer.js +4 -4
- package/dist/data-table-explorer/DataTableExplorer.js.map +1 -1
- package/dist/data-table-explorer/DataTableExplorerCategoryClient.d.ts +3 -2
- package/dist/data-table-explorer/DataTableExplorerCategoryClient.d.ts.map +1 -1
- package/dist/data-table-explorer/DataTableExplorerCategoryClient.js +4 -3
- package/dist/data-table-explorer/DataTableExplorerCategoryClient.js.map +1 -1
- package/dist/data-table-explorer/DataTableExplorerCountClient.d.ts +3 -1
- package/dist/data-table-explorer/DataTableExplorerCountClient.d.ts.map +1 -1
- package/dist/data-table-explorer/DataTableExplorerCountClient.js +3 -3
- package/dist/data-table-explorer/DataTableExplorerCountClient.js.map +1 -1
- package/dist/data-table-explorer/DataTableExplorerHistogramClient.d.ts +3 -2
- package/dist/data-table-explorer/DataTableExplorerHistogramClient.d.ts.map +1 -1
- package/dist/data-table-explorer/DataTableExplorerHistogramClient.js +4 -4
- package/dist/data-table-explorer/DataTableExplorerHistogramClient.js.map +1 -1
- package/dist/data-table-explorer/DataTableExplorerPageClient.d.ts +3 -1
- package/dist/data-table-explorer/DataTableExplorerPageClient.d.ts.map +1 -1
- package/dist/data-table-explorer/DataTableExplorerPageClient.js +3 -1
- package/dist/data-table-explorer/DataTableExplorerPageClient.js.map +1 -1
- package/dist/data-table-explorer/DataTableExplorerUnsupportedSummaryClient.d.ts +3 -2
- package/dist/data-table-explorer/DataTableExplorerUnsupportedSummaryClient.d.ts.map +1 -1
- package/dist/data-table-explorer/DataTableExplorerUnsupportedSummaryClient.js +3 -3
- package/dist/data-table-explorer/DataTableExplorerUnsupportedSummaryClient.js.map +1 -1
- package/dist/data-table-explorer/createDataTableExplorerStore.d.ts +3 -0
- package/dist/data-table-explorer/createDataTableExplorerStore.d.ts.map +1 -1
- package/dist/data-table-explorer/createDataTableExplorerStore.js +6 -0
- package/dist/data-table-explorer/createDataTableExplorerStore.js.map +1 -1
- package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerHeaderActions.d.ts +4 -0
- package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerHeaderActions.d.ts.map +1 -0
- package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerHeaderActions.js +13 -0
- package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerHeaderActions.js.map +1 -0
- package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerPanelRenderer.d.ts.map +1 -1
- package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerPanelRenderer.js +26 -8
- package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerPanelRenderer.js.map +1 -1
- package/dist/data-table-explorer/dashboard/useDataTableExplorerPanelClients.d.ts +13 -0
- package/dist/data-table-explorer/dashboard/useDataTableExplorerPanelClients.d.ts.map +1 -0
- package/dist/data-table-explorer/dashboard/useDataTableExplorerPanelClients.js +32 -0
- package/dist/data-table-explorer/dashboard/useDataTableExplorerPanelClients.js.map +1 -0
- package/dist/data-table-explorer/dataTableExplorerController.d.ts +63 -3
- package/dist/data-table-explorer/dataTableExplorerController.d.ts.map +1 -1
- package/dist/data-table-explorer/dataTableExplorerController.js +73 -10
- package/dist/data-table-explorer/dataTableExplorerController.js.map +1 -1
- package/dist/data-table-explorer/hooks/useDataTableExplorerColumns.d.ts +12 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerColumns.d.ts.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerColumns.js +19 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerColumns.js.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerLifecycles.d.ts +52 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerLifecycles.d.ts.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerLifecycles.js +153 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerLifecycles.js.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerQueryState.d.ts +42 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerQueryState.d.ts.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerQueryState.js +43 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerQueryState.js.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerSelection.d.ts +13 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerSelection.d.ts.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerSelection.js +40 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerSelection.js.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerStatus.d.ts +18 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerStatus.d.ts.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerStatus.js +23 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerStatus.js.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerStoreState.d.ts +27 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerStoreState.d.ts.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerStoreState.js +28 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerStoreState.js.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerVisiblePage.d.ts +15 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerVisiblePage.d.ts.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerVisiblePage.js +21 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerVisiblePage.js.map +1 -0
- package/dist/data-table-explorer/types.d.ts +16 -3
- package/dist/data-table-explorer/types.d.ts.map +1 -1
- package/dist/data-table-explorer/types.js.map +1 -1
- package/dist/data-table-explorer/useDataTableExplorer.d.ts.map +1 -1
- package/dist/data-table-explorer/useDataTableExplorer.js +20 -279
- package/dist/data-table-explorer/useDataTableExplorer.js.map +1 -1
- package/dist/data-table-explorer/utils.d.ts +64 -6
- package/dist/data-table-explorer/utils.d.ts.map +1 -1
- package/dist/data-table-explorer/utils.js +58 -0
- package/dist/data-table-explorer/utils.js.map +1 -1
- package/dist/data-table-explorer/worksheet/DataTableBlockHeader.d.ts +1 -0
- package/dist/data-table-explorer/worksheet/DataTableBlockHeader.d.ts.map +1 -1
- package/dist/data-table-explorer/worksheet/DataTableBlockHeader.js +4 -2
- package/dist/data-table-explorer/worksheet/DataTableBlockHeader.js.map +1 -1
- package/dist/data-table-explorer/worksheet/DataTableBlockRenderer.d.ts.map +1 -1
- package/dist/data-table-explorer/worksheet/DataTableBlockRenderer.js +4 -4
- package/dist/data-table-explorer/worksheet/DataTableBlockRenderer.js.map +1 -1
- package/dist/index.d.ts +55 -31
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +86 -26
- package/dist/index.js.map +1 -1
- package/dist/mosaicTableReference.d.ts +59 -0
- package/dist/mosaicTableReference.d.ts.map +1 -0
- package/dist/mosaicTableReference.js +68 -0
- package/dist/mosaicTableReference.js.map +1 -0
- package/dist/useVgPlotChartRender.d.ts.map +1 -1
- package/dist/useVgPlotChartRender.js +151 -25
- package/dist/useVgPlotChartRender.js.map +1 -1
- package/dist/useVgPlotChartRetention.d.ts +11 -0
- package/dist/useVgPlotChartRetention.d.ts.map +1 -1
- package/dist/useVgPlotChartRetention.js.map +1 -1
- package/dist/utils/table-lookup.d.ts +7 -0
- package/dist/utils/table-lookup.d.ts.map +1 -0
- package/dist/utils/table-lookup.js +10 -0
- package/dist/utils/table-lookup.js.map +1 -0
- package/package.json +14 -14
- package/dist/ai/ai.d.ts +0 -103
- package/dist/ai/ai.d.ts.map +0 -1
- package/dist/ai/ai.js +0 -419
- package/dist/ai/ai.js.map +0 -1
- package/dist/ai/data-table-explorer-tool.d.ts +0 -40
- package/dist/ai/data-table-explorer-tool.d.ts.map +0 -1
- package/dist/ai/data-table-explorer-tool.js +0 -75
- package/dist/ai/data-table-explorer-tool.js.map +0 -1
- package/dist/ai/list-panels-tool.d.ts +0 -35
- package/dist/ai/list-panels-tool.d.ts.map +0 -1
- package/dist/ai/list-panels-tool.js +0 -66
- package/dist/ai/list-panels-tool.js.map +0 -1
- package/dist/ai/remove-panel-tool.d.ts +0 -31
- package/dist/ai/remove-panel-tool.d.ts.map +0 -1
- package/dist/ai/remove-panel-tool.js +0 -55
- package/dist/ai/remove-panel-tool.js.map +0 -1
- package/dist/ai/tool-validation.d.ts +0 -3
- package/dist/ai/tool-validation.d.ts.map +0 -1
- package/dist/ai/tool-validation.js +0 -11
- package/dist/ai/tool-validation.js.map +0 -1
- package/dist/charts/chart-types/bubble-chart/BubbleChartSettings.d.ts +0 -3
- package/dist/charts/chart-types/bubble-chart/BubbleChartSettings.d.ts.map +0 -1
- package/dist/charts/chart-types/bubble-chart/BubbleChartSettings.js.map +0 -1
- package/dist/charts/chart-types/bubble-chart/definition.d.ts +0 -4
- package/dist/charts/chart-types/bubble-chart/definition.d.ts.map +0 -1
- package/dist/charts/chart-types/bubble-chart/definition.js +0 -24
- package/dist/charts/chart-types/bubble-chart/definition.js.map +0 -1
- package/dist/charts/chart-types/bubble-chart/schema.d.ts.map +0 -1
- package/dist/charts/chart-types/bubble-chart/schema.js.map +0 -1
- package/dist/charts/chart-types/bubble-chart/spec.d.ts +0 -4
- package/dist/charts/chart-types/bubble-chart/spec.d.ts.map +0 -1
- package/dist/charts/chart-types/bubble-chart/spec.js +0 -31
- package/dist/charts/chart-types/bubble-chart/spec.js.map +0 -1
- package/dist/charts/chart-types/bubble-chart/tool.d.ts +0 -42
- package/dist/charts/chart-types/bubble-chart/tool.d.ts.map +0 -1
- package/dist/charts/chart-types/bubble-chart/tool.js +0 -66
- package/dist/charts/chart-types/bubble-chart/tool.js.map +0 -1
- package/dist/hooks/useDataTable.d.ts +0 -3
- package/dist/hooks/useDataTable.d.ts.map +0 -1
- package/dist/hooks/useDataTable.js +0 -28
- package/dist/hooks/useDataTable.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePanelResetFilters.js","sourceRoot":"","sources":["../../../src/dashboard/hooks/usePanelResetFilters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAEhE,OAAO,EAAC,2BAA2B,EAAC,MAAM,yBAAyB,CAAC;AAYpE;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,EACnC,YAAY,EACZ,aAAa,GACe;IAC5B,MAAM,YAAY,GAAG,2BAA2B,CAC9C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CACrC,CAAC;IAEF,MAAM,SAAS,GAAG,OAAO,CACvB,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,aAAa,CAAC,EAChD,CAAC,YAAY,EAAE,aAAa,CAAC,CAC9B,CAAC;IAEF,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE5D,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzD,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC9C,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAChE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE;QACpC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACvC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAa,CAAC;YAEpC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,KAAK,CAAC;YACf,CAAC;YAED,OAAO,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QACH,uDAAuD;IACzD,CAAC,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAExD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,MAAM,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;YAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAa,CAAC;YACpC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,KAAK,CAAC;YACf,CAAC;YAED,OAAO,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACnC,CAAC;IACH,CAAC,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC;IAE9B,OAAO;QACL,gBAAgB;QAChB,KAAK;KACN,CAAC;AACJ,CAAC","sourcesContent":["import {useCallback, useEffect, useMemo, useState} from 'react';\nimport type {MosaicClient} from '@uwdata/mosaic-core';\nimport {useStoreWithMosaicDashboard} from '../MosaicDashboardSlice';\n\nexport type UsePanelResetFiltersOptions = {\n panelClients: MosaicClient[];\n selectionName: string;\n};\n\nexport type UsePanelResetFiltersReturn = {\n hasActiveFilters: boolean;\n reset: () => void;\n};\n\n/**\n * Hook for managing panel-specific filter reset logic.\n * Tracks active filters from the given panel clients and provides a reset function\n * that only clears filters originating from those clients.\n */\nexport function usePanelResetFilters({\n panelClients,\n selectionName,\n}: UsePanelResetFiltersOptions): UsePanelResetFiltersReturn {\n const getSelection = useStoreWithMosaicDashboard(\n (state) => state.mosaic.getSelection,\n );\n\n const selection = useMemo(\n () => getSelection(selectionName, 'crossfilter'),\n [getSelection, selectionName],\n );\n\n const [selectionVersion, setSelectionVersion] = useState(0);\n\n useEffect(() => {\n const listener = () => setSelectionVersion((n) => n + 1);\n selection.addEventListener('value', listener);\n return () => selection.removeEventListener('value', listener);\n }, [selection]);\n\n const hasActiveFilters = useMemo(() => {\n if (panelClients.length === 0) {\n return false;\n }\n\n return selection.clauses.some((clause) => {\n const source = clause.source as any;\n\n if (!source) {\n return false;\n }\n\n return panelClients.includes(source);\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [panelClients, selection.clauses, selectionVersion]);\n\n const reset = useCallback(() => {\n const clausesToRemove = selection.clauses.filter((clause) => {\n const source = clause.source as any;\n if (!source) {\n return false;\n }\n\n return panelClients.includes(source);\n });\n\n if (clausesToRemove.length > 0) {\n selection.reset(clausesToRemove);\n }\n }, [panelClients, selection]);\n\n return {\n hasActiveFilters,\n reset,\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MosaicDashboardPanel.d.ts","sourceRoot":"","sources":["../../../src/dashboard/panel/MosaicDashboardPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAUzD,eAAO,MAAM,oBAAoB,EAAE,
|
|
1
|
+
{"version":3,"file":"MosaicDashboardPanel.d.ts","sourceRoot":"","sources":["../../../src/dashboard/panel/MosaicDashboardPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAUzD,eAAO,MAAM,oBAAoB,EAAE,kBA8DlC,CAAC"}
|
|
@@ -18,6 +18,6 @@ export const MosaicDashboardPanel = ({ meta }) => {
|
|
|
18
18
|
return (_jsx("div", { className: "text-muted-foreground flex h-full items-center justify-center text-sm", children: "Dashboard panel not found" }));
|
|
19
19
|
}
|
|
20
20
|
const RendererComponent = renderer?.component;
|
|
21
|
-
return (_jsxs("div", { className: "flex h-full flex-col", children: [_jsx(MosaicDashboardPanelHeader, { dashboardId: dashboardId, dashboard: dashboard, panel: panel, renderer: renderer, selectionName: selectionName }), _jsx("div", { className: "min-h-0 flex-1 overflow-hidden", children: _jsx(MosaicDashboardPanelErrorBoundary, { panelType: panel.type, children: RendererComponent ? (_jsx(RendererComponent, { dashboardId: dashboardId, dashboard: dashboard, panel: panel, selectionName: selectionName })) : (_jsxs("div", { className: "text-muted-foreground flex h-full items-center justify-center p-4 text-sm", children: ["Unsupported dashboard panel type: ", panel.type] })) }) })] }));
|
|
21
|
+
return (_jsxs("div", { className: "flex h-full flex-col", children: [_jsx(MosaicDashboardPanelHeader, { dashboardId: dashboardId, dashboard: dashboard, panel: panel, renderer: renderer, selectionName: selectionName }), _jsx("div", { className: "min-h-0 flex-1 overflow-hidden", children: _jsx(MosaicDashboardPanelErrorBoundary, { panelType: panel.type, children: RendererComponent ? (_jsx(RendererComponent, { dashboardId: dashboardId, dashboard: dashboard, panel: panel, selectionName: selectionName })) : (_jsxs("div", { className: "text-muted-foreground flex h-full items-center justify-center p-4 text-sm", children: ["Unsupported dashboard panel type: ", panel.type] })) }, dashboard?.selectedTable ?? '') })] }));
|
|
22
22
|
};
|
|
23
23
|
//# sourceMappingURL=MosaicDashboardPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MosaicDashboardPanel.js","sourceRoot":"","sources":["../../../src/dashboard/panel/MosaicDashboardPanel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAC,iCAAiC,EAAC,MAAM,qCAAqC,CAAC;AACtF,OAAO,EAAC,0BAA0B,EAAC,MAAM,8BAA8B,CAAC;AACxE,OAAO,EACL,+BAA+B,EAC/B,2BAA2B,GAC5B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAC,yBAAyB,EAAC,MAAM,2BAA2B,CAAC;AAEpE,MAAM,CAAC,MAAM,oBAAoB,GAAuB,CAAC,EAAC,IAAI,EAAC,EAAE,EAAE;IACjE,MAAM,EAAC,WAAW,EAAC,GAAG,yBAAyB,EAAE,CAAC;IAClD,MAAM,OAAO,GAAG,IAAI,EAAE,OAA6B,CAAC;IAEpD,MAAM,SAAS,GAAG,2BAA2B,CAC3C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CACpE,CAAC;IACF,MAAM,cAAc,GAAG,2BAA2B,CAChD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,cAAc,CAChD,CAAC;IACF,MAAM,aAAa,GAAG,+BAA+B,CAAC,WAAW,CAAC,CAAC;IAEnE,MAAM,KAAK,GAAG,OAAO,CACnB,GAAG,EAAE,CACH,OAAO;QACL,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,OAAO,CAAC;QACjE,CAAC,CAAC,SAAS,EACf,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAC7B,CAAC;IACF,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEhE,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC;QACzB,OAAO,CACL,cAAK,SAAS,EAAC,uEAAuE,0CAEhF,CACP,CAAC;IACJ,CAAC;IAED,MAAM,iBAAiB,GAAG,QAAQ,EAAE,SAAS,CAAC;IAE9C,OAAO,CACL,eAAK,SAAS,EAAC,sBAAsB,aACnC,KAAC,0BAA0B,IACzB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,aAAa,GAC5B,EAEF,cAAK,SAAS,EAAC,gCAAgC,YAC7C,KAAC,iCAAiC,
|
|
1
|
+
{"version":3,"file":"MosaicDashboardPanel.js","sourceRoot":"","sources":["../../../src/dashboard/panel/MosaicDashboardPanel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAC,iCAAiC,EAAC,MAAM,qCAAqC,CAAC;AACtF,OAAO,EAAC,0BAA0B,EAAC,MAAM,8BAA8B,CAAC;AACxE,OAAO,EACL,+BAA+B,EAC/B,2BAA2B,GAC5B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAC,yBAAyB,EAAC,MAAM,2BAA2B,CAAC;AAEpE,MAAM,CAAC,MAAM,oBAAoB,GAAuB,CAAC,EAAC,IAAI,EAAC,EAAE,EAAE;IACjE,MAAM,EAAC,WAAW,EAAC,GAAG,yBAAyB,EAAE,CAAC;IAClD,MAAM,OAAO,GAAG,IAAI,EAAE,OAA6B,CAAC;IAEpD,MAAM,SAAS,GAAG,2BAA2B,CAC3C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CACpE,CAAC;IACF,MAAM,cAAc,GAAG,2BAA2B,CAChD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,cAAc,CAChD,CAAC;IACF,MAAM,aAAa,GAAG,+BAA+B,CAAC,WAAW,CAAC,CAAC;IAEnE,MAAM,KAAK,GAAG,OAAO,CACnB,GAAG,EAAE,CACH,OAAO;QACL,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,OAAO,CAAC;QACjE,CAAC,CAAC,SAAS,EACf,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAC7B,CAAC;IACF,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEhE,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC;QACzB,OAAO,CACL,cAAK,SAAS,EAAC,uEAAuE,0CAEhF,CACP,CAAC;IACJ,CAAC;IAED,MAAM,iBAAiB,GAAG,QAAQ,EAAE,SAAS,CAAC;IAE9C,OAAO,CACL,eAAK,SAAS,EAAC,sBAAsB,aACnC,KAAC,0BAA0B,IACzB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,aAAa,GAC5B,EAEF,cAAK,SAAS,EAAC,gCAAgC,YAC7C,KAAC,iCAAiC,IAEhC,SAAS,EAAE,KAAK,CAAC,IAAI,YAEpB,iBAAiB,CAAC,CAAC,CAAC,CACnB,KAAC,iBAAiB,IAChB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,aAAa,GAC5B,CACH,CAAC,CAAC,CAAC,CACF,eAAK,SAAS,EAAC,2EAA2E,mDACrD,KAAK,CAAC,IAAI,IACzC,CACP,IAdI,SAAS,EAAE,aAAa,IAAI,EAAE,CAeD,GAChC,IACF,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import type {RoomPanelComponent} from '@sqlrooms/layout';\nimport {useMemo} from 'react';\nimport {MosaicDashboardPanelErrorBoundary} from './MosaicDashboardPanelErrorBoundary';\nimport {MosaicDashboardPanelHeader} from './MosaicDashboardPanelHeader';\nimport {\n getMosaicDashboardSelectionName,\n useStoreWithMosaicDashboard,\n} from '../MosaicDashboardSlice';\nimport {useMosaicDashboardContext} from '../MosaicDashboardContext';\n\nexport const MosaicDashboardPanel: RoomPanelComponent = ({meta}) => {\n const {dashboardId} = useMosaicDashboardContext();\n const panelId = meta?.panelId as string | undefined;\n\n const dashboard = useStoreWithMosaicDashboard(\n (state) => state.mosaicDashboard.config.dashboardsById[dashboardId],\n );\n const panelRenderers = useStoreWithMosaicDashboard(\n (state) => state.mosaicDashboard.panelRenderers,\n );\n const selectionName = getMosaicDashboardSelectionName(dashboardId);\n\n const panel = useMemo(\n () =>\n panelId\n ? dashboard?.panels.find((candidate) => candidate.id === panelId)\n : undefined,\n [dashboard?.panels, panelId],\n );\n const renderer = panel ? panelRenderers[panel.type] : undefined;\n\n if (!dashboard || !panel) {\n return (\n <div className=\"text-muted-foreground flex h-full items-center justify-center text-sm\">\n Dashboard panel not found\n </div>\n );\n }\n\n const RendererComponent = renderer?.component;\n\n return (\n <div className=\"flex h-full flex-col\">\n <MosaicDashboardPanelHeader\n dashboardId={dashboardId}\n dashboard={dashboard}\n panel={panel}\n renderer={renderer}\n selectionName={selectionName}\n />\n\n <div className=\"min-h-0 flex-1 overflow-hidden\">\n <MosaicDashboardPanelErrorBoundary\n key={dashboard?.selectedTable ?? ''}\n panelType={panel.type}\n >\n {RendererComponent ? (\n <RendererComponent\n dashboardId={dashboardId}\n dashboard={dashboard}\n panel={panel}\n selectionName={selectionName}\n />\n ) : (\n <div className=\"text-muted-foreground flex h-full items-center justify-center p-4 text-sm\">\n Unsupported dashboard panel type: {panel.type}\n </div>\n )}\n </MosaicDashboardPanelErrorBoundary>\n </div>\n </div>\n );\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MosaicDashboardPanelLayout.d.ts","sourceRoot":"","sources":["../../../src/dashboard/panel/MosaicDashboardPanelLayout.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MosaicDashboardPanelLayout.d.ts","sourceRoot":"","sources":["../../../src/dashboard/panel/MosaicDashboardPanelLayout.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,EAAC,EAAE,EAA8B,MAAM,OAAO,CAAC;AAE7D,KAAK,+BAA+B,GAAG;IACrC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAIF,eAAO,MAAM,0BAA0B,EAAE,EAAE,CACzC,+BAA+B,CA0EhC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { ResizableHandle, ResizablePanel, ResizablePanelGroup, } from '@sqlrooms/ui';
|
|
2
|
+
import { ResizableHandle, ResizablePanel, ResizablePanelGroup, ScrollArea, } from '@sqlrooms/ui';
|
|
3
3
|
import { useEffect, useRef, useState } from 'react';
|
|
4
4
|
const MIN_WIDTH_FOR_SPLIT_VIEW = 200; // pixels
|
|
5
5
|
export const MosaicDashboardPanelLayout = ({ isOpen, onIsOpenChange, settings, content }) => {
|
|
@@ -39,8 +39,8 @@ export const MosaicDashboardPanelLayout = ({ isOpen, onIsOpenChange, settings, c
|
|
|
39
39
|
};
|
|
40
40
|
// If container is too small and settings are open, show only settings
|
|
41
41
|
if (containerWidth < MIN_WIDTH_FOR_SPLIT_VIEW && isOpen) {
|
|
42
|
-
return (_jsx("div", { ref: containerRef, className: "h-full overflow-
|
|
42
|
+
return (_jsx("div", { ref: containerRef, className: "h-full overflow-hidden", children: _jsx(ScrollArea, { className: "h-full", children: settings }) }));
|
|
43
43
|
}
|
|
44
|
-
return (_jsx("div", { ref: containerRef, className: "h-full", children: _jsxs(ResizablePanelGroup, { orientation: "horizontal", className: "h-full", children: [_jsx(ResizablePanel, { ref: panelRef, defaultSize: "35%", minSize: "30%", maxSize: "70%", collapsible: true, collapsedSize: 0, className: "overflow-
|
|
44
|
+
return (_jsx("div", { ref: containerRef, className: "h-full", children: _jsxs(ResizablePanelGroup, { orientation: "horizontal", className: "h-full", children: [_jsx(ResizablePanel, { ref: panelRef, defaultSize: "35%", minSize: "30%", maxSize: "70%", collapsible: true, collapsedSize: 0, className: "overflow-hidden", onResize: onResize, children: _jsx(ScrollArea, { className: "h-full", children: settings }) }), _jsx(ResizableHandle, { className: "w-px" }), _jsx(ResizablePanel, { children: content })] }) }));
|
|
45
45
|
};
|
|
46
46
|
//# sourceMappingURL=MosaicDashboardPanelLayout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MosaicDashboardPanelLayout.js","sourceRoot":"","sources":["../../../src/dashboard/panel/MosaicDashboardPanelLayout.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,eAAe,EACf,cAAc,EACd,mBAAmB,
|
|
1
|
+
{"version":3,"file":"MosaicDashboardPanelLayout.js","sourceRoot":"","sources":["../../../src/dashboard/panel/MosaicDashboardPanelLayout.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,UAAU,GAEX,MAAM,cAAc,CAAC;AACtB,OAAc,EAAK,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAS7D,MAAM,wBAAwB,GAAG,GAAG,CAAC,CAAC,SAAS;AAE/C,MAAM,CAAC,MAAM,0BAA0B,GAEnC,CAAC,EAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAC,EAAE,EAAE;IAClD,MAAM,QAAQ,GAAG,MAAM,CAAuB,IAAI,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAClD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAClD,MAAM,CAAC,UAAU,CAClB,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,MAAM,EAAE,CAAC;YACX,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC;QACvC,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,CAAC,OAAO,EAAE,EAAE;YACpD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAElC,OAAO,GAAG,EAAE;YACV,cAAc,CAAC,UAAU,EAAE,CAAC;QAC9B,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;QAEpD,IAAI,WAAW,IAAI,MAAM,EAAE,CAAC;YAC1B,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC;YAC5B,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,CAAC;IAEF,sEAAsE;IACtE,IAAI,cAAc,GAAG,wBAAwB,IAAI,MAAM,EAAE,CAAC;QACxD,OAAO,CACL,cAAK,GAAG,EAAE,YAAY,EAAE,SAAS,EAAC,wBAAwB,YACxD,KAAC,UAAU,IAAC,SAAS,EAAC,QAAQ,YAAE,QAAQ,GAAc,GAClD,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,cAAK,GAAG,EAAE,YAAY,EAAE,SAAS,EAAC,QAAQ,YACxC,MAAC,mBAAmB,IAAC,WAAW,EAAC,YAAY,EAAC,SAAS,EAAC,QAAQ,aAC9D,KAAC,cAAc,IACb,GAAG,EAAE,QAAQ,EACb,WAAW,EAAC,KAAK,EACjB,OAAO,EAAC,KAAK,EACb,OAAO,EAAC,KAAK,EACb,WAAW,EAAE,IAAI,EACjB,aAAa,EAAE,CAAC,EAChB,SAAS,EAAC,iBAAiB,EAC3B,QAAQ,EAAE,QAAQ,YAElB,KAAC,UAAU,IAAC,SAAS,EAAC,QAAQ,YAAE,QAAQ,GAAc,GACvC,EACjB,KAAC,eAAe,IAAC,SAAS,EAAC,MAAM,GAAG,EACpC,KAAC,cAAc,cAAE,OAAO,GAAkB,IACtB,GAClB,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {\n ResizableHandle,\n ResizablePanel,\n ResizablePanelGroup,\n ScrollArea,\n type ResizablePanelHandle,\n} from '@sqlrooms/ui';\nimport React, {FC, useEffect, useRef, useState} from 'react';\n\ntype MosaicDashboardPanelLayoutProps = {\n isOpen?: boolean;\n onIsOpenChange?: (isOpen: boolean) => void;\n settings?: React.ReactNode;\n content?: React.ReactNode;\n};\n\nconst MIN_WIDTH_FOR_SPLIT_VIEW = 200; // pixels\n\nexport const MosaicDashboardPanelLayout: FC<\n MosaicDashboardPanelLayoutProps\n> = ({isOpen, onIsOpenChange, settings, content}) => {\n const panelRef = useRef<ResizablePanelHandle>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const [containerWidth, setContainerWidth] = useState<number>(\n window.innerWidth,\n );\n\n useEffect(() => {\n if (isOpen) {\n panelRef.current?.expand();\n } else {\n panelRef.current?.collapse();\n }\n }, [isOpen]);\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n setContainerWidth(entry.contentRect.width);\n }\n });\n\n resizeObserver.observe(container);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n const onResize = () => {\n const isCollapsed = panelRef.current?.isCollapsed();\n\n if (isCollapsed && isOpen) {\n onIsOpenChange?.(false);\n }\n\n if (!isCollapsed && !isOpen) {\n onIsOpenChange?.(true);\n }\n };\n\n // If container is too small and settings are open, show only settings\n if (containerWidth < MIN_WIDTH_FOR_SPLIT_VIEW && isOpen) {\n return (\n <div ref={containerRef} className=\"h-full overflow-hidden\">\n <ScrollArea className=\"h-full\">{settings}</ScrollArea>\n </div>\n );\n }\n\n return (\n <div ref={containerRef} className=\"h-full\">\n <ResizablePanelGroup orientation=\"horizontal\" className=\"h-full\">\n <ResizablePanel\n ref={panelRef}\n defaultSize=\"35%\"\n minSize=\"30%\"\n maxSize=\"70%\"\n collapsible={true}\n collapsedSize={0}\n className=\"overflow-hidden\"\n onResize={onResize}\n >\n <ScrollArea className=\"h-full\">{settings}</ScrollArea>\n </ResizablePanel>\n <ResizableHandle className=\"w-px\" />\n <ResizablePanel>{content}</ResizablePanel>\n </ResizablePanelGroup>\n </div>\n );\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MosaicDashboardPanels.d.ts","sourceRoot":"","sources":["../../../src/dashboard/panel/MosaicDashboardPanels.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MosaicDashboardPanels.d.ts","sourceRoot":"","sources":["../../../src/dashboard/panel/MosaicDashboardPanels.tsx"],"names":[],"mappings":"AA0BA,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAyGzC,CAAC"}
|
|
@@ -7,6 +7,7 @@ import { MosaicDashboardPanel } from './MosaicDashboardPanel';
|
|
|
7
7
|
import { getMosaicDashboardDockId, MOSAIC_DASHBOARD_PANEL, useStoreWithMosaicDashboard, } from '../MosaicDashboardSlice';
|
|
8
8
|
import { DataTableSelectorEmptyState } from '../../components/DataTableSelector';
|
|
9
9
|
import { useTablesWithColumns } from '../../hooks/useTablesWithColumns';
|
|
10
|
+
import { getMosaicTableIdentity, resolveMosaicTableReference, } from '../../mosaicTableReference';
|
|
10
11
|
const EMPTY_DASHBOARD_PANELS = [];
|
|
11
12
|
export const MosaicDashboardPanels = () => {
|
|
12
13
|
const { dashboardId } = useMosaicDashboardContext();
|
|
@@ -20,8 +21,9 @@ export const MosaicDashboardPanels = () => {
|
|
|
20
21
|
const tables = useTablesWithColumns();
|
|
21
22
|
const selectedTable = useStoreWithMosaicDashboard((state) => state.mosaicDashboard.config.dashboardsById[dashboardId]?.selectedTable);
|
|
22
23
|
const setSelectedTable = useStoreWithMosaicDashboard((state) => state.mosaicDashboard.setSelectedTable);
|
|
24
|
+
const selectedDataTable = useMemo(() => resolveMosaicTableReference(tables, selectedTable).table, [selectedTable, tables]);
|
|
23
25
|
const handleTableChange = useCallback((table) => {
|
|
24
|
-
setSelectedTable(dashboardId, table.table
|
|
26
|
+
setSelectedTable(dashboardId, getMosaicTableIdentity(table.table));
|
|
25
27
|
}, [dashboardId, setSelectedTable]);
|
|
26
28
|
useEffect(() => {
|
|
27
29
|
// This renderer is shared by every Mosaic dashboard panel in the room.
|
|
@@ -52,7 +54,7 @@ export const MosaicDashboardPanels = () => {
|
|
|
52
54
|
: nextLayout;
|
|
53
55
|
setLayout(dashboardId, innerLayout);
|
|
54
56
|
}, [dashboardId, setLayout]);
|
|
55
|
-
if (!
|
|
57
|
+
if (!selectedDataTable) {
|
|
56
58
|
return (_jsx(DataTableSelectorEmptyState, { onChange: handleTableChange, tables: tables }));
|
|
57
59
|
}
|
|
58
60
|
if (!panels.length || !rootLayout) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MosaicDashboardPanels.js","sourceRoot":"","sources":["../../../src/dashboard/panel/MosaicDashboardPanels.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAEhB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAC,MAAM,OAAO,CAAC;AACtD,OAAO,EAAC,yBAAyB,EAAC,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAC,+BAA+B,EAAC,MAAM,mCAAmC,CAAC;AAClF,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAC,2BAA2B,EAAC,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAC,oBAAoB,EAAC,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"MosaicDashboardPanels.js","sourceRoot":"","sources":["../../../src/dashboard/panel/MosaicDashboardPanels.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAEhB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAC,MAAM,OAAO,CAAC;AACtD,OAAO,EAAC,yBAAyB,EAAC,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAC,+BAA+B,EAAC,MAAM,mCAAmC,CAAC;AAClF,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAC,2BAA2B,EAAC,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAC,oBAAoB,EAAC,MAAM,kCAAkC,CAAC;AAEtE,OAAO,EACL,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,4BAA4B,CAAC;AAEpC,MAAM,sBAAsB,GAAiC,EAAE,CAAC;AAEhE,MAAM,CAAC,MAAM,qBAAqB,GAAa,GAAG,EAAE;IAClD,MAAM,EAAC,WAAW,EAAC,GAAG,yBAAyB,EAAE,CAAC;IAClD,MAAM,aAAa,GAAG,2BAA2B,CAC/C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CACtC,CAAC;IACF,MAAM,SAAS,GAAG,2BAA2B,CAC3C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAC3C,CAAC;IACF,MAAM,MAAM,GAAG,2BAA2B,CACxC,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM;QAChE,sBAAsB,CACzB,CAAC;IACF,MAAM,eAAe,GAAG,2BAA2B,CACjD,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,IAAI,IAAI,CAC3E,CAAC;IACF,MAAM,mBAAmB,GAAG,2BAA2B,CACrD,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,UAAU;QACpE,MAAM,CACT,CAAC;IAEF,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;IACtC,MAAM,aAAa,GAAG,2BAA2B,CAC/C,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,aAAa,CAC1E,CAAC;IACF,MAAM,gBAAgB,GAAG,2BAA2B,CAClD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,gBAAgB,CAClD,CAAC;IACF,MAAM,iBAAiB,GAAG,OAAO,CAC/B,GAAG,EAAE,CAAC,2BAA2B,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,KAAK,EAC9D,CAAC,aAAa,EAAE,MAAM,CAAC,CACxB,CAAC;IAEF,MAAM,iBAAiB,GAAG,WAAW,CACnC,CAAC,KAAgB,EAAE,EAAE;QACnB,gBAAgB,CAAC,WAAW,EAAE,sBAAsB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACrE,CAAC,EACD,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAChC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,uEAAuE;QACvE,2EAA2E;QAC3E,0EAA0E;QAC1E,kDAAkD;QAClD,aAAa,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAAC,CAAC;YAC3C,KAAK,EAAE,iBAAiB;YACxB,SAAS,EAAE,oBAAoB;YAC/B,WAAW,EAAE,+BAA+B;SAC7C,CAAC,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,MAAM,UAAU,GAAsB,OAAO,CAAC,GAAG,EAAE;QACjD,IAAI,CAAC,eAAe;YAAE,OAAO,IAAI,CAAC;QAClC,IAAI,mBAAmB,KAAK,MAAM,EAAE,CAAC;YACnC,OAAO,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC;QACpE,CAAC;QACD,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,EAAE,EAAE,wBAAwB,CAAC,WAAW,CAAC;YACzC,IAAI,EAAE,eAAe;SACtB,CAAC;IACJ,CAAC,EAAE,CAAC,WAAW,EAAE,eAAe,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAExD,MAAM,kBAAkB,GAAG,WAAW,CACpC,CAAC,UAA6B,EAAE,EAAE;QAChC,MAAM,WAAW,GACf,UAAU,IAAI,gBAAgB,CAAC,UAAU,CAAC;YACxC,CAAC,CAAC,UAAU,CAAC,IAAI;YACjB,CAAC,CAAC,UAAU,CAAC;QACjB,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACtC,CAAC,EACD,CAAC,WAAW,EAAE,SAAS,CAAC,CACzB,CAAC;IAEF,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,OAAO,CACL,KAAC,2BAA2B,IAC1B,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,EAAE,MAAM,GACd,CACH,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,OAAO,CACL,cAAK,SAAS,EAAC,6CAA6C,YAC1D,cAAK,SAAS,EAAC,+BAA+B,gEAExC,GACF,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,cAAK,SAAS,EAAC,sBAAsB,YACnC,KAAC,cAAc,IACb,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,kBAAkB,GAClC,GACE,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {\n isLayoutDockNode,\n isLayoutGridNode,\n LayoutNode,\n LayoutRenderer,\n} from '@sqlrooms/layout';\nimport {useCallback, useEffect, useMemo} from 'react';\nimport {useMosaicDashboardContext} from '../MosaicDashboardContext';\nimport {MosaicDashboardPanelDragOverlay} from './MosaicDashboardPanelDragOverlay';\nimport {MosaicDashboardPanel} from './MosaicDashboardPanel';\nimport type {MosaicDashboardPanelConfig} from '../dashboard-types';\nimport {\n getMosaicDashboardDockId,\n MOSAIC_DASHBOARD_PANEL,\n useStoreWithMosaicDashboard,\n} from '../MosaicDashboardSlice';\nimport {DataTableSelectorEmptyState} from '../../components/DataTableSelector';\nimport {useTablesWithColumns} from '../../hooks/useTablesWithColumns';\nimport type {DataTable} from '@sqlrooms/db';\nimport {\n getMosaicTableIdentity,\n resolveMosaicTableReference,\n} from '../../mosaicTableReference';\n\nconst EMPTY_DASHBOARD_PANELS: MosaicDashboardPanelConfig[] = [];\n\nexport const MosaicDashboardPanels: React.FC = () => {\n const {dashboardId} = useMosaicDashboardContext();\n const registerPanel = useStoreWithMosaicDashboard(\n (state) => state.layout.registerPanel,\n );\n const setLayout = useStoreWithMosaicDashboard(\n (state) => state.mosaicDashboard.setLayout,\n );\n const panels = useStoreWithMosaicDashboard(\n (state) =>\n state.mosaicDashboard.config.dashboardsById[dashboardId]?.panels ??\n EMPTY_DASHBOARD_PANELS,\n );\n const dashboardLayout = useStoreWithMosaicDashboard(\n (state) =>\n state.mosaicDashboard.config.dashboardsById[dashboardId]?.layout ?? null,\n );\n const dashboardLayoutType = useStoreWithMosaicDashboard(\n (state) =>\n state.mosaicDashboard.config.dashboardsById[dashboardId]?.layoutType ??\n 'dock',\n );\n\n const tables = useTablesWithColumns();\n const selectedTable = useStoreWithMosaicDashboard(\n (state) =>\n state.mosaicDashboard.config.dashboardsById[dashboardId]?.selectedTable,\n );\n const setSelectedTable = useStoreWithMosaicDashboard(\n (state) => state.mosaicDashboard.setSelectedTable,\n );\n const selectedDataTable = useMemo(\n () => resolveMosaicTableReference(tables, selectedTable).table,\n [selectedTable, tables],\n );\n\n const handleTableChange = useCallback(\n (table: DataTable) => {\n setSelectedTable(dashboardId, getMosaicTableIdentity(table.table));\n },\n [dashboardId, setSelectedTable],\n );\n\n useEffect(() => {\n // This renderer is shared by every Mosaic dashboard panel in the room.\n // Dashboard blocks can be transiently unmounted by the surrounding editor,\n // so unregistering on instance cleanup can leave still-mounted dashboards\n // with layout panel shells but no chart renderer.\n registerPanel(MOSAIC_DASHBOARD_PANEL, () => ({\n title: 'Dashboard panel',\n component: MosaicDashboardPanel,\n dragOverlay: MosaicDashboardPanelDragOverlay,\n }));\n }, [registerPanel]);\n\n const rootLayout: LayoutNode | null = useMemo(() => {\n if (!dashboardLayout) return null;\n if (dashboardLayoutType === 'grid') {\n return isLayoutGridNode(dashboardLayout) ? dashboardLayout : null;\n }\n return {\n type: 'dock',\n id: getMosaicDashboardDockId(dashboardId),\n root: dashboardLayout,\n };\n }, [dashboardId, dashboardLayout, dashboardLayoutType]);\n\n const handleLayoutChange = useCallback(\n (nextLayout: LayoutNode | null) => {\n const innerLayout =\n nextLayout && isLayoutDockNode(nextLayout)\n ? nextLayout.root\n : nextLayout;\n setLayout(dashboardId, innerLayout);\n },\n [dashboardId, setLayout],\n );\n\n if (!selectedDataTable) {\n return (\n <DataTableSelectorEmptyState\n onChange={handleTableChange}\n tables={tables}\n />\n );\n }\n\n if (!panels.length || !rootLayout) {\n return (\n <div className=\"flex h-full items-center justify-center p-4\">\n <div className=\"text-muted-foreground text-sm\">\n Dashboard is empty. Add a panel to get started.\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"h-full min-h-[360px]\">\n <LayoutRenderer\n rootLayout={rootLayout}\n onLayoutChange={handleLayoutChange}\n />\n </div>\n );\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MosaicDashboardAddPanelDropdown.d.ts","sourceRoot":"","sources":["../../../src/dashboard/toolbar/MosaicDashboardAddPanelDropdown.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,EAAC,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"MosaicDashboardAddPanelDropdown.d.ts","sourceRoot":"","sources":["../../../src/dashboard/toolbar/MosaicDashboardAddPanelDropdown.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,EAAC,MAAM,OAAO,CAAC;AAc9B,UAAU,oCAAoC;IAC5C,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,+BAA+B,EAAE,EAAE,CAC9C,oCAAoC,CAwCrC,CAAC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Button, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from '@sqlrooms/ui';
|
|
2
|
+
import { Button, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, Tooltip, TooltipContent, TooltipTrigger, } from '@sqlrooms/ui';
|
|
3
3
|
import { Plus } from 'lucide-react';
|
|
4
4
|
import { useAddPanelActions } from '../useAddPanelActions';
|
|
5
5
|
export const MosaicDashboardAddPanelDropdown = ({ dashboardId }) => {
|
|
6
6
|
const { handleAddPanel, canAddPanel, actions, canAddAnyPanel } = useAddPanelActions(dashboardId);
|
|
7
|
-
return (_jsxs(DropdownMenu, { modal: false, children: [_jsx(DropdownMenuTrigger, { asChild: true, children:
|
|
7
|
+
return (_jsxs(DropdownMenu, { modal: false, children: [_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { variant: "outline", className: "h-8 w-8", disabled: !canAddAnyPanel, "aria-label": "Add panel", children: _jsx(Plus, { className: "h-3.5 w-3.5" }) }) }) }), _jsx(TooltipContent, { children: "Add panel" })] }), _jsx(DropdownMenuContent, { align: "end", children: actions.map((action) => {
|
|
8
8
|
const Icon = action.icon;
|
|
9
|
-
return (_jsxs(DropdownMenuItem, { onClick: () => handleAddPanel(action), disabled: !canAddPanel(action), children: [Icon ? _jsx(Icon, { className: "mr-2 h-
|
|
9
|
+
return (_jsxs(DropdownMenuItem, { onClick: () => handleAddPanel(action), disabled: !canAddPanel(action), children: [Icon ? _jsx(Icon, { className: "mr-2 h-3.5 w-3.5" }) : null, action.label] }, action.type));
|
|
10
10
|
}) })] }));
|
|
11
11
|
};
|
|
12
12
|
//# sourceMappingURL=MosaicDashboardAddPanelDropdown.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MosaicDashboardAddPanelDropdown.js","sourceRoot":"","sources":["../../../src/dashboard/toolbar/MosaicDashboardAddPanelDropdown.tsx"],"names":[],"mappings":";AACA,OAAO,EACL,MAAM,EACN,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"MosaicDashboardAddPanelDropdown.js","sourceRoot":"","sources":["../../../src/dashboard/toolbar/MosaicDashboardAddPanelDropdown.tsx"],"names":[],"mappings":";AACA,OAAO,EACL,MAAM,EACN,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,OAAO,EACP,cAAc,EACd,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAC,IAAI,EAAC,MAAM,cAAc,CAAC;AAClC,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAC;AAMzD,MAAM,CAAC,MAAM,+BAA+B,GAExC,CAAC,EAAC,WAAW,EAAC,EAAE,EAAE;IACpB,MAAM,EAAC,cAAc,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAC,GAC1D,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAElC,OAAO,CACL,MAAC,YAAY,IAAC,KAAK,EAAE,KAAK,aACxB,MAAC,OAAO,eACN,KAAC,cAAc,IAAC,OAAO,kBACrB,KAAC,mBAAmB,IAAC,OAAO,kBAC1B,KAAC,MAAM,IACL,OAAO,EAAC,SAAS,EACjB,SAAS,EAAC,SAAS,EACnB,QAAQ,EAAE,CAAC,cAAc,gBACd,WAAW,YAEtB,KAAC,IAAI,IAAC,SAAS,EAAC,aAAa,GAAG,GACzB,GACW,GACP,EACjB,KAAC,cAAc,4BAA2B,IAClC,EACV,KAAC,mBAAmB,IAAC,KAAK,EAAC,KAAK,YAC7B,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;oBACtB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;oBAEzB,OAAO,CACL,MAAC,gBAAgB,IAEf,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,EACrC,QAAQ,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,aAE7B,IAAI,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,SAAS,EAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC,IAAI,EACnD,MAAM,CAAC,KAAK,KALR,MAAM,CAAC,IAAI,CAMC,CACpB,CAAC;gBACJ,CAAC,CAAC,GACkB,IACT,CAChB,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {type FC} from 'react';\nimport {\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from '@sqlrooms/ui';\nimport {Plus} from 'lucide-react';\nimport {useAddPanelActions} from '../useAddPanelActions';\n\ninterface MosaicDashboardAddPanelDropdownProps {\n dashboardId: string;\n}\n\nexport const MosaicDashboardAddPanelDropdown: FC<\n MosaicDashboardAddPanelDropdownProps\n> = ({dashboardId}) => {\n const {handleAddPanel, canAddPanel, actions, canAddAnyPanel} =\n useAddPanelActions(dashboardId);\n\n return (\n <DropdownMenu modal={false}>\n <Tooltip>\n <TooltipTrigger asChild>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"outline\"\n className=\"h-8 w-8\"\n disabled={!canAddAnyPanel}\n aria-label=\"Add panel\"\n >\n <Plus className=\"h-3.5 w-3.5\" />\n </Button>\n </DropdownMenuTrigger>\n </TooltipTrigger>\n <TooltipContent>Add panel</TooltipContent>\n </Tooltip>\n <DropdownMenuContent align=\"end\">\n {actions.map((action) => {\n const Icon = action.icon;\n\n return (\n <DropdownMenuItem\n key={action.type}\n onClick={() => handleAddPanel(action)}\n disabled={!canAddPanel(action)}\n >\n {Icon ? <Icon className=\"mr-2 h-3.5 w-3.5\" /> : null}\n {action.label}\n </DropdownMenuItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n};\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
interface MosaicDashboardDataTableSelectorProps {
|
|
3
|
+
dashboardId: string;
|
|
4
|
+
}
|
|
5
|
+
export declare const MosaicDashboardDataTableSelector: FC<MosaicDashboardDataTableSelectorProps>;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=MosaicDashboardDataTableSelector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MosaicDashboardDataTableSelector.d.ts","sourceRoot":"","sources":["../../../src/dashboard/toolbar/MosaicDashboardDataTableSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,EAAE,EAAuB,MAAM,OAAO,CAAC;AAU/C,UAAU,qCAAqC;IAC7C,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,gCAAgC,EAAE,EAAE,CAC/C,qCAAqC,CA+BtC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useMemo } from 'react';
|
|
3
|
+
import { useStoreWithMosaicDashboard } from '../MosaicDashboardSlice';
|
|
4
|
+
import { DataTableSelector } from '../../components/DataTableSelector';
|
|
5
|
+
import { useTablesWithColumns } from '../../hooks/useTablesWithColumns';
|
|
6
|
+
import { getMosaicTableIdentity, resolveMosaicTableReference, } from '../../mosaicTableReference';
|
|
7
|
+
export const MosaicDashboardDataTableSelector = ({ dashboardId }) => {
|
|
8
|
+
const tables = useTablesWithColumns();
|
|
9
|
+
const dashboard = useStoreWithMosaicDashboard((state) => state.mosaicDashboard.config.dashboardsById[dashboardId]);
|
|
10
|
+
const selectedTableName = dashboard?.selectedTable;
|
|
11
|
+
const selectedTable = useMemo(() => resolveMosaicTableReference(tables, selectedTableName).table, [selectedTableName, tables]);
|
|
12
|
+
const setSelectedTable = useStoreWithMosaicDashboard((state) => state.mosaicDashboard.setSelectedTable);
|
|
13
|
+
const handleTableChange = useCallback((table) => {
|
|
14
|
+
setSelectedTable(dashboardId, getMosaicTableIdentity(table.table));
|
|
15
|
+
}, [dashboardId, setSelectedTable]);
|
|
16
|
+
return (_jsx(DataTableSelector, { onChange: handleTableChange, tables: tables, value: selectedTable }));
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=MosaicDashboardDataTableSelector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MosaicDashboardDataTableSelector.js","sourceRoot":"","sources":["../../../src/dashboard/toolbar/MosaicDashboardDataTableSelector.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAK,WAAW,EAAE,OAAO,EAAC,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAC,2BAA2B,EAAC,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAC,iBAAiB,EAAC,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAC,oBAAoB,EAAC,MAAM,kCAAkC,CAAC;AAEtE,OAAO,EACL,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,4BAA4B,CAAC;AAMpC,MAAM,CAAC,MAAM,gCAAgC,GAEzC,CAAC,EAAC,WAAW,EAAC,EAAE,EAAE;IACpB,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;IACtC,MAAM,SAAS,GAAG,2BAA2B,CAC3C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CACpE,CAAC;IACF,MAAM,iBAAiB,GAAG,SAAS,EAAE,aAAa,CAAC;IAEnD,MAAM,aAAa,GAAG,OAAO,CAC3B,GAAG,EAAE,CAAC,2BAA2B,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,KAAK,EAClE,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAC5B,CAAC;IAEF,MAAM,gBAAgB,GAAG,2BAA2B,CAClD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,gBAAgB,CAClD,CAAC;IAEF,MAAM,iBAAiB,GAAG,WAAW,CACnC,CAAC,KAAgB,EAAE,EAAE;QACnB,gBAAgB,CAAC,WAAW,EAAE,sBAAsB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACrE,CAAC,EACD,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAChC,CAAC;IAEF,OAAO,CACL,KAAC,iBAAiB,IAChB,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,aAAa,GACpB,CACH,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {FC, useCallback, useMemo} from 'react';\nimport {useStoreWithMosaicDashboard} from '../MosaicDashboardSlice';\nimport {DataTableSelector} from '../../components/DataTableSelector';\nimport {useTablesWithColumns} from '../../hooks/useTablesWithColumns';\nimport type {DataTable} from '@sqlrooms/db';\nimport {\n getMosaicTableIdentity,\n resolveMosaicTableReference,\n} from '../../mosaicTableReference';\n\ninterface MosaicDashboardDataTableSelectorProps {\n dashboardId: string;\n}\n\nexport const MosaicDashboardDataTableSelector: FC<\n MosaicDashboardDataTableSelectorProps\n> = ({dashboardId}) => {\n const tables = useTablesWithColumns();\n const dashboard = useStoreWithMosaicDashboard(\n (state) => state.mosaicDashboard.config.dashboardsById[dashboardId],\n );\n const selectedTableName = dashboard?.selectedTable;\n\n const selectedTable = useMemo(\n () => resolveMosaicTableReference(tables, selectedTableName).table,\n [selectedTableName, tables],\n );\n\n const setSelectedTable = useStoreWithMosaicDashboard(\n (state) => state.mosaicDashboard.setSelectedTable,\n );\n\n const handleTableChange = useCallback(\n (table: DataTable) => {\n setSelectedTable(dashboardId, getMosaicTableIdentity(table.table));\n },\n [dashboardId, setSelectedTable],\n );\n\n return (\n <DataTableSelector\n onChange={handleTableChange}\n tables={tables}\n value={selectedTable}\n />\n );\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MosaicDashboardResetFiltersButton.d.ts","sourceRoot":"","sources":["../../../src/dashboard/toolbar/MosaicDashboardResetFiltersButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"MosaicDashboardResetFiltersButton.d.ts","sourceRoot":"","sources":["../../../src/dashboard/toolbar/MosaicDashboardResetFiltersButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,EAAC,MAAM,OAAO,CAAC;AAI9B,UAAU,sCAAsC;IAC9C,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,iCAAiC,EAAE,EAAE,CAChD,sCAAsC,CAYvC,CAAC"}
|
|
@@ -1,36 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { getMosaicDashboardSelectionName, useStoreWithMosaicDashboard, } from '../MosaicDashboardSlice';
|
|
2
|
+
import { useDashboardResetFilters } from '../hooks/useDashboardResetFilters';
|
|
3
|
+
import { ResetFiltersButton } from '../components/ResetFiltersButton';
|
|
5
4
|
export const MosaicDashboardResetFiltersButton = ({ dashboardId }) => {
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
const dashboardSelection = useStoreWithMosaicDashboard((state) => state.mosaic.selections[dashboardSelectionName]);
|
|
9
|
-
const [selectionVersion, setSelectionVersion] = useState(0);
|
|
10
|
-
useEffect(() => {
|
|
11
|
-
if (!dashboardSelection) {
|
|
12
|
-
getSelection(dashboardSelectionName, 'crossfilter');
|
|
13
|
-
}
|
|
14
|
-
}, [dashboardSelection, dashboardSelectionName, getSelection]);
|
|
15
|
-
useEffect(() => {
|
|
16
|
-
if (!dashboardSelection) {
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
const handleSelectionChange = () => {
|
|
20
|
-
setSelectionVersion((value) => value + 1);
|
|
21
|
-
};
|
|
22
|
-
dashboardSelection.addEventListener('value', handleSelectionChange);
|
|
23
|
-
return () => {
|
|
24
|
-
dashboardSelection.removeEventListener('value', handleSelectionChange);
|
|
25
|
-
};
|
|
26
|
-
}, [dashboardSelection]);
|
|
27
|
-
const hasActiveFilters = useMemo(() => Boolean(dashboardSelection?.clauses.length), [dashboardSelection, selectionVersion]);
|
|
28
|
-
const handleResetFilters = () => {
|
|
29
|
-
dashboardSelection?.reset();
|
|
30
|
-
};
|
|
31
|
-
if (!hasActiveFilters) {
|
|
32
|
-
return null;
|
|
33
|
-
}
|
|
34
|
-
return (_jsx(Button, { variant: "link", size: "sm", className: "h-8 px-0", onClick: handleResetFilters, children: "Reset filters" }));
|
|
5
|
+
const { hasActiveFilters, reset } = useDashboardResetFilters({ dashboardId });
|
|
6
|
+
return (_jsx(ResetFiltersButton, { className: "h-8 w-8", disabled: !hasActiveFilters, onClick: reset, tooltip: "Reset all filters" }));
|
|
35
7
|
};
|
|
36
8
|
//# sourceMappingURL=MosaicDashboardResetFiltersButton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MosaicDashboardResetFiltersButton.js","sourceRoot":"","sources":["../../../src/dashboard/toolbar/MosaicDashboardResetFiltersButton.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"MosaicDashboardResetFiltersButton.js","sourceRoot":"","sources":["../../../src/dashboard/toolbar/MosaicDashboardResetFiltersButton.tsx"],"names":[],"mappings":";AACA,OAAO,EAAC,wBAAwB,EAAC,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAC,kBAAkB,EAAC,MAAM,kCAAkC,CAAC;AAMpE,MAAM,CAAC,MAAM,iCAAiC,GAE1C,CAAC,EAAC,WAAW,EAAC,EAAE,EAAE;IACpB,MAAM,EAAC,gBAAgB,EAAE,KAAK,EAAC,GAAG,wBAAwB,CAAC,EAAC,WAAW,EAAC,CAAC,CAAC;IAE1E,OAAO,CACL,KAAC,kBAAkB,IACjB,SAAS,EAAC,SAAS,EACnB,QAAQ,EAAE,CAAC,gBAAgB,EAC3B,OAAO,EAAE,KAAK,EACd,OAAO,EAAC,mBAAmB,GAC3B,CACH,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {type FC} from 'react';\nimport {useDashboardResetFilters} from '../hooks/useDashboardResetFilters';\nimport {ResetFiltersButton} from '../components/ResetFiltersButton';\n\ninterface MosaicDashboardResetFiltersButtonProps {\n dashboardId: string;\n}\n\nexport const MosaicDashboardResetFiltersButton: FC<\n MosaicDashboardResetFiltersButtonProps\n> = ({dashboardId}) => {\n const {hasActiveFilters, reset} = useDashboardResetFilters({dashboardId});\n\n return (\n <ResetFiltersButton\n className=\"h-8 w-8\"\n disabled={!hasActiveFilters}\n onClick={reset}\n tooltip=\"Reset all filters\"\n />\n );\n};\n"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import
|
|
2
|
-
export declare const MosaicDashboardToolbar:
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
export declare const MosaicDashboardToolbar: FC;
|
|
3
3
|
//# sourceMappingURL=MosaicDashboardToolbar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MosaicDashboardToolbar.d.ts","sourceRoot":"","sources":["../../../src/dashboard/toolbar/MosaicDashboardToolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"MosaicDashboardToolbar.d.ts","sourceRoot":"","sources":["../../../src/dashboard/toolbar/MosaicDashboardToolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,EAAE,EAAuB,MAAM,OAAO,CAAC;AAU/C,eAAO,MAAM,sBAAsB,EAAE,EA8CpC,CAAC"}
|
|
@@ -1,24 +1,28 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useCallback } from 'react';
|
|
2
|
+
import { useCallback, useMemo } from 'react';
|
|
3
3
|
import { useMosaicDashboardContext } from '../MosaicDashboardContext';
|
|
4
4
|
import { useStoreWithMosaicDashboard } from '../MosaicDashboardSlice';
|
|
5
5
|
import { MosaicDashboardAddPanelDropdown } from './MosaicDashboardAddPanelDropdown';
|
|
6
6
|
import { MosaicDashboardResetFiltersButton } from './MosaicDashboardResetFiltersButton';
|
|
7
|
-
import {
|
|
7
|
+
import { MosaicDashboardDataTableSelector } from './MosaicDashboardDataTableSelector';
|
|
8
|
+
import { BlockCaptionEditor } from '../../components/BlockCaptionEditor';
|
|
8
9
|
import { useTablesWithColumns } from '../../hooks/useTablesWithColumns';
|
|
9
|
-
import {
|
|
10
|
+
import { resolveMosaicTableReference } from '../../mosaicTableReference';
|
|
10
11
|
export const MosaicDashboardToolbar = () => {
|
|
11
12
|
const { dashboardId } = useMosaicDashboardContext();
|
|
13
|
+
const dashboard = useStoreWithMosaicDashboard((state) => state.mosaicDashboard.config.dashboardsById[dashboardId]);
|
|
14
|
+
const selectedTableName = dashboard?.selectedTable;
|
|
15
|
+
const dashboardTitle = dashboard?.title ?? '';
|
|
12
16
|
const tables = useTablesWithColumns();
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
}, [dashboardId,
|
|
17
|
+
const selectedTable = useMemo(() => resolveMosaicTableReference(tables, selectedTableName).table, [selectedTableName, tables]);
|
|
18
|
+
const tableName = selectedTable?.table.table;
|
|
19
|
+
const setDashboardTitle = useStoreWithMosaicDashboard((state) => state.mosaicDashboard.setDashboardTitle);
|
|
20
|
+
const handleTitleChange = useCallback((title) => {
|
|
21
|
+
setDashboardTitle(dashboardId, title || '');
|
|
22
|
+
}, [dashboardId, setDashboardTitle]);
|
|
19
23
|
if (!selectedTableName) {
|
|
20
24
|
return null;
|
|
21
25
|
}
|
|
22
|
-
return (_jsxs("div", { className: "flex items-center justify-between border-b px-5 py-2", children: [_jsx(
|
|
26
|
+
return (_jsxs("div", { className: "flex items-center justify-between gap-2 border-b px-5 py-2", children: [_jsx(BlockCaptionEditor, { value: dashboardTitle, placeholder: tableName || 'Dashboard title', onChange: handleTitleChange }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(MosaicDashboardAddPanelDropdown, { dashboardId: dashboardId }), _jsx(MosaicDashboardDataTableSelector, { dashboardId: dashboardId }), _jsx(MosaicDashboardResetFiltersButton, { dashboardId: dashboardId })] })] }));
|
|
23
27
|
};
|
|
24
28
|
//# sourceMappingURL=MosaicDashboardToolbar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MosaicDashboardToolbar.js","sourceRoot":"","sources":["../../../src/dashboard/toolbar/MosaicDashboardToolbar.tsx"],"names":[],"mappings":";AAAA,
|
|
1
|
+
{"version":3,"file":"MosaicDashboardToolbar.js","sourceRoot":"","sources":["../../../src/dashboard/toolbar/MosaicDashboardToolbar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAK,WAAW,EAAE,OAAO,EAAC,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAC,yBAAyB,EAAC,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAC,2BAA2B,EAAC,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAC,+BAA+B,EAAC,MAAM,mCAAmC,CAAC;AAClF,OAAO,EAAC,iCAAiC,EAAC,MAAM,qCAAqC,CAAC;AACtF,OAAO,EAAC,gCAAgC,EAAC,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAAC,kBAAkB,EAAC,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAC,oBAAoB,EAAC,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAC,2BAA2B,EAAC,MAAM,4BAA4B,CAAC;AAEvE,MAAM,CAAC,MAAM,sBAAsB,GAAO,GAAG,EAAE;IAC7C,MAAM,EAAC,WAAW,EAAC,GAAG,yBAAyB,EAAE,CAAC;IAElD,MAAM,SAAS,GAAG,2BAA2B,CAC3C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CACpE,CAAC;IACF,MAAM,iBAAiB,GAAG,SAAS,EAAE,aAAa,CAAC;IACnD,MAAM,cAAc,GAAG,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC;IAE9C,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;IACtC,MAAM,aAAa,GAAG,OAAO,CAC3B,GAAG,EAAE,CAAC,2BAA2B,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,KAAK,EAClE,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAC5B,CAAC;IACF,MAAM,SAAS,GAAG,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC;IAE7C,MAAM,iBAAiB,GAAG,2BAA2B,CACnD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,iBAAiB,CACnD,CAAC;IAEF,MAAM,iBAAiB,GAAG,WAAW,CACnC,CAAC,KAAyB,EAAE,EAAE;QAC5B,iBAAiB,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC,EACD,CAAC,WAAW,EAAE,iBAAiB,CAAC,CACjC,CAAC;IAEF,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAC,4DAA4D,aACzE,KAAC,kBAAkB,IACjB,KAAK,EAAE,cAAc,EACrB,WAAW,EAAE,SAAS,IAAI,iBAAiB,EAC3C,QAAQ,EAAE,iBAAiB,GAC3B,EAEF,eAAK,SAAS,EAAC,yBAAyB,aACtC,KAAC,+BAA+B,IAAC,WAAW,EAAE,WAAW,GAAI,EAC7D,KAAC,gCAAgC,IAAC,WAAW,EAAE,WAAW,GAAI,EAC9D,KAAC,iCAAiC,IAAC,WAAW,EAAE,WAAW,GAAI,IAC3D,IACF,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {FC, useCallback, useMemo} from 'react';\nimport {useMosaicDashboardContext} from '../MosaicDashboardContext';\nimport {useStoreWithMosaicDashboard} from '../MosaicDashboardSlice';\nimport {MosaicDashboardAddPanelDropdown} from './MosaicDashboardAddPanelDropdown';\nimport {MosaicDashboardResetFiltersButton} from './MosaicDashboardResetFiltersButton';\nimport {MosaicDashboardDataTableSelector} from './MosaicDashboardDataTableSelector';\nimport {BlockCaptionEditor} from '../../components/BlockCaptionEditor';\nimport {useTablesWithColumns} from '../../hooks/useTablesWithColumns';\nimport {resolveMosaicTableReference} from '../../mosaicTableReference';\n\nexport const MosaicDashboardToolbar: FC = () => {\n const {dashboardId} = useMosaicDashboardContext();\n\n const dashboard = useStoreWithMosaicDashboard(\n (state) => state.mosaicDashboard.config.dashboardsById[dashboardId],\n );\n const selectedTableName = dashboard?.selectedTable;\n const dashboardTitle = dashboard?.title ?? '';\n\n const tables = useTablesWithColumns();\n const selectedTable = useMemo(\n () => resolveMosaicTableReference(tables, selectedTableName).table,\n [selectedTableName, tables],\n );\n const tableName = selectedTable?.table.table;\n\n const setDashboardTitle = useStoreWithMosaicDashboard(\n (state) => state.mosaicDashboard.setDashboardTitle,\n );\n\n const handleTitleChange = useCallback(\n (title: string | undefined) => {\n setDashboardTitle(dashboardId, title || '');\n },\n [dashboardId, setDashboardTitle],\n );\n\n if (!selectedTableName) {\n return null;\n }\n\n return (\n <div className=\"flex items-center justify-between gap-2 border-b px-5 py-2\">\n <BlockCaptionEditor\n value={dashboardTitle}\n placeholder={tableName || 'Dashboard title'}\n onChange={handleTitleChange}\n />\n\n <div className=\"flex items-center gap-2\">\n <MosaicDashboardAddPanelDropdown dashboardId={dashboardId} />\n <MosaicDashboardDataTableSelector dashboardId={dashboardId} />\n <MosaicDashboardResetFiltersButton dashboardId={dashboardId} />\n </div>\n </div>\n );\n};\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type MosaicClient } from '@uwdata/mosaic-core';
|
|
2
|
+
/**
|
|
3
|
+
* Registers Mosaic clients for a dashboard panel so the panel's reset button
|
|
4
|
+
* can track which filters originate from this panel.
|
|
5
|
+
*/
|
|
6
|
+
export declare function usePanelClientRegistration(dashboardId: string | undefined, panelId: string | undefined, clients: MosaicClient[]): void;
|
|
7
|
+
//# sourceMappingURL=usePanelClientRegistration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePanelClientRegistration.d.ts","sourceRoot":"","sources":["../../src/dashboard/usePanelClientRegistration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,YAAY,EAAC,MAAM,qBAAqB,CAAC;AAItD;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE,YAAY,EAAE,GACtB,IAAI,CA6BN"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
import { useStoreWithMosaicDashboard } from './MosaicDashboardSlice';
|
|
3
|
+
/**
|
|
4
|
+
* Registers Mosaic clients for a dashboard panel so the panel's reset button
|
|
5
|
+
* can track which filters originate from this panel.
|
|
6
|
+
*/
|
|
7
|
+
export function usePanelClientRegistration(dashboardId, panelId, clients) {
|
|
8
|
+
const registerPanelClient = useStoreWithMosaicDashboard((state) => state.mosaicDashboard.registerPanelClient);
|
|
9
|
+
const unregisterPanelClient = useStoreWithMosaicDashboard((state) => state.mosaicDashboard.unregisterPanelClient);
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
if (!dashboardId || !panelId || clients.length === 0) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
clients.forEach((client) => {
|
|
15
|
+
registerPanelClient(dashboardId, panelId, client);
|
|
16
|
+
});
|
|
17
|
+
return () => {
|
|
18
|
+
clients.forEach((client) => {
|
|
19
|
+
unregisterPanelClient(dashboardId, panelId, client);
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
}, [
|
|
23
|
+
dashboardId,
|
|
24
|
+
panelId,
|
|
25
|
+
clients,
|
|
26
|
+
registerPanelClient,
|
|
27
|
+
unregisterPanelClient,
|
|
28
|
+
]);
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=usePanelClientRegistration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePanelClientRegistration.js","sourceRoot":"","sources":["../../src/dashboard/usePanelClientRegistration.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAChC,OAAO,EAAC,2BAA2B,EAAC,MAAM,wBAAwB,CAAC;AAEnE;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CACxC,WAA+B,EAC/B,OAA2B,EAC3B,OAAuB;IAEvB,MAAM,mBAAmB,GAAG,2BAA2B,CACrD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,mBAAmB,CACrD,CAAC;IACF,MAAM,qBAAqB,GAAG,2BAA2B,CACvD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,qBAAqB,CACvD,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrD,OAAO;QACT,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACzB,mBAAmB,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBACzB,qBAAqB,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC,EAAE;QACD,WAAW;QACX,OAAO;QACP,OAAO;QACP,mBAAmB;QACnB,qBAAqB;KACtB,CAAC,CAAC;AACL,CAAC","sourcesContent":["import {type MosaicClient} from '@uwdata/mosaic-core';\nimport {useEffect} from 'react';\nimport {useStoreWithMosaicDashboard} from './MosaicDashboardSlice';\n\n/**\n * Registers Mosaic clients for a dashboard panel so the panel's reset button\n * can track which filters originate from this panel.\n */\nexport function usePanelClientRegistration(\n dashboardId: string | undefined,\n panelId: string | undefined,\n clients: MosaicClient[],\n): void {\n const registerPanelClient = useStoreWithMosaicDashboard(\n (state) => state.mosaicDashboard.registerPanelClient,\n );\n const unregisterPanelClient = useStoreWithMosaicDashboard(\n (state) => state.mosaicDashboard.unregisterPanelClient,\n );\n\n useEffect(() => {\n if (!dashboardId || !panelId || clients.length === 0) {\n return;\n }\n\n clients.forEach((client) => {\n registerPanelClient(dashboardId, panelId, client);\n });\n\n return () => {\n clients.forEach((client) => {\n unregisterPanelClient(dashboardId, panelId, client);\n });\n };\n }, [\n dashboardId,\n panelId,\n clients,\n registerPanelClient,\n unregisterPanelClient,\n ]);\n}\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type MosaicClient } from '@uwdata/mosaic-core';
|
|
2
|
+
/**
|
|
3
|
+
* Returns the list of registered Mosaic clients for a specific dashboard panel.
|
|
4
|
+
* These clients are used to determine which filters originate from this panel.
|
|
5
|
+
*/
|
|
6
|
+
export declare function usePanelClients(dashboardId: string, panelId: string): MosaicClient[];
|
|
7
|
+
//# sourceMappingURL=usePanelClients.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePanelClients.d.ts","sourceRoot":"","sources":["../../src/dashboard/usePanelClients.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,YAAY,EAAC,MAAM,qBAAqB,CAAC;AAMtD;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,YAAY,EAAE,CAOhB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { useStoreWithMosaicDashboard, getMosaicDashboardPanelId, } from './MosaicDashboardSlice';
|
|
2
|
+
/**
|
|
3
|
+
* Returns the list of registered Mosaic clients for a specific dashboard panel.
|
|
4
|
+
* These clients are used to determine which filters originate from this panel.
|
|
5
|
+
*/
|
|
6
|
+
export function usePanelClients(dashboardId, panelId) {
|
|
7
|
+
const panelClientsFromStore = useStoreWithMosaicDashboard((state) => {
|
|
8
|
+
const key = getMosaicDashboardPanelId(dashboardId, panelId);
|
|
9
|
+
return state.mosaicDashboard.runtime.panelClients[key];
|
|
10
|
+
});
|
|
11
|
+
return panelClientsFromStore ?? [];
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=usePanelClients.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePanelClients.js","sourceRoot":"","sources":["../../src/dashboard/usePanelClients.ts"],"names":[],"mappings":"AACA,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAEhC;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,WAAmB,EACnB,OAAe;IAEf,MAAM,qBAAqB,GAAG,2BAA2B,CAAC,CAAC,KAAK,EAAE,EAAE;QAClE,MAAM,GAAG,GAAG,yBAAyB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC5D,OAAO,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,OAAO,qBAAqB,IAAI,EAAE,CAAC;AACrC,CAAC","sourcesContent":["import {type MosaicClient} from '@uwdata/mosaic-core';\nimport {\n useStoreWithMosaicDashboard,\n getMosaicDashboardPanelId,\n} from './MosaicDashboardSlice';\n\n/**\n * Returns the list of registered Mosaic clients for a specific dashboard panel.\n * These clients are used to determine which filters originate from this panel.\n */\nexport function usePanelClients(\n dashboardId: string,\n panelId: string,\n): MosaicClient[] {\n const panelClientsFromStore = useStoreWithMosaicDashboard((state) => {\n const key = getMosaicDashboardPanelId(dashboardId, panelId);\n return state.mosaicDashboard.runtime.panelClients[key];\n });\n\n return panelClientsFromStore ?? [];\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type DataTable } from '@sqlrooms/db';
|
|
2
2
|
/**
|
|
3
|
-
* Returns the
|
|
3
|
+
* Returns the selected table for a dashboard if it exists,
|
|
4
4
|
* otherwise falls back to the first table with columns.
|
|
5
5
|
*
|
|
6
6
|
* @param dashboardId - The dashboard ID
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSelectedOrFirstTable.d.ts","sourceRoot":"","sources":["../../src/dashboard/useSelectedOrFirstTable.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,KAAK,SAAS,EAAC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"useSelectedOrFirstTable.d.ts","sourceRoot":"","sources":["../../src/dashboard/useSelectedOrFirstTable.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,KAAK,SAAS,EAAC,MAAM,cAAc,CAAC;AAK5C;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,GAClB,SAAS,GAAG,SAAS,CAwBvB"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { useMemo } from 'react';
|
|
2
2
|
import { useStoreWithMosaicDashboard } from './MosaicDashboardSlice';
|
|
3
3
|
import { useTablesWithColumns } from '../hooks/useTablesWithColumns';
|
|
4
|
+
import { resolveMosaicTableReference } from '../mosaicTableReference';
|
|
4
5
|
/**
|
|
5
|
-
* Returns the
|
|
6
|
+
* Returns the selected table for a dashboard if it exists,
|
|
6
7
|
* otherwise falls back to the first table with columns.
|
|
7
8
|
*
|
|
8
9
|
* @param dashboardId - The dashboard ID
|
|
@@ -12,14 +13,15 @@ export function useSelectedOrFirstTable(dashboardId) {
|
|
|
12
13
|
const dashboard = useStoreWithMosaicDashboard((state) => state.mosaicDashboard.config.dashboardsById[dashboardId]);
|
|
13
14
|
const tables = useTablesWithColumns();
|
|
14
15
|
return useMemo(() => {
|
|
15
|
-
const
|
|
16
|
-
if (!
|
|
16
|
+
const selectedTableName = dashboard?.selectedTable ?? dashboard?.lastSelectedTable;
|
|
17
|
+
if (!selectedTableName) {
|
|
17
18
|
return tables[0];
|
|
18
19
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
const { table, ambiguousMatches } = resolveMosaicTableReference(tables, selectedTableName);
|
|
21
|
+
if (ambiguousMatches?.length) {
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
return table ?? tables[0];
|
|
25
|
+
}, [dashboard?.lastSelectedTable, dashboard?.selectedTable, tables]);
|
|
24
26
|
}
|
|
25
27
|
//# sourceMappingURL=useSelectedOrFirstTable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSelectedOrFirstTable.js","sourceRoot":"","sources":["../../src/dashboard/useSelectedOrFirstTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AAE9B,OAAO,EAAC,2BAA2B,EAAC,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAC,oBAAoB,EAAC,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"useSelectedOrFirstTable.js","sourceRoot":"","sources":["../../src/dashboard/useSelectedOrFirstTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AAE9B,OAAO,EAAC,2BAA2B,EAAC,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAC,oBAAoB,EAAC,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAC,2BAA2B,EAAC,MAAM,yBAAyB,CAAC;AAEpE;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACrC,WAAmB;IAEnB,MAAM,SAAS,GAAG,2BAA2B,CAC3C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CACpE,CAAC;IACF,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;IAEtC,OAAO,OAAO,CAAC,GAAG,EAAE;QAClB,MAAM,iBAAiB,GACrB,SAAS,EAAE,aAAa,IAAI,SAAS,EAAE,iBAAiB,CAAC;QAE3D,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;QAED,MAAM,EAAC,KAAK,EAAE,gBAAgB,EAAC,GAAG,2BAA2B,CAC3D,MAAM,EACN,iBAAiB,CAClB,CAAC;QACF,IAAI,gBAAgB,EAAE,MAAM,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC,EAAE,CAAC,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;AACvE,CAAC","sourcesContent":["import {useMemo} from 'react';\nimport {type DataTable} from '@sqlrooms/db';\nimport {useStoreWithMosaicDashboard} from './MosaicDashboardSlice';\nimport {useTablesWithColumns} from '../hooks/useTablesWithColumns';\nimport {resolveMosaicTableReference} from '../mosaicTableReference';\n\n/**\n * Returns the selected table for a dashboard if it exists,\n * otherwise falls back to the first table with columns.\n *\n * @param dashboardId - The dashboard ID\n * @returns The selected table, or the first table, or undefined if no tables exist\n */\nexport function useSelectedOrFirstTable(\n dashboardId: string,\n): DataTable | undefined {\n const dashboard = useStoreWithMosaicDashboard(\n (state) => state.mosaicDashboard.config.dashboardsById[dashboardId],\n );\n const tables = useTablesWithColumns();\n\n return useMemo(() => {\n const selectedTableName =\n dashboard?.selectedTable ?? dashboard?.lastSelectedTable;\n\n if (!selectedTableName) {\n return tables[0];\n }\n\n const {table, ambiguousMatches} = resolveMosaicTableReference(\n tables,\n selectedTableName,\n );\n if (ambiguousMatches?.length) {\n return undefined;\n }\n\n return table ?? tables[0];\n }, [dashboard?.lastSelectedTable, dashboard?.selectedTable, tables]);\n}\n"]}
|