@sqlrooms/mosaic 0.29.0-rc.2 → 0.29.0-rc.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +209 -0
- package/dist/MosaicChartBuilder.d.ts +44 -13
- package/dist/MosaicChartBuilder.d.ts.map +1 -1
- package/dist/MosaicChartBuilder.js +22 -30
- package/dist/MosaicChartBuilder.js.map +1 -1
- package/dist/MosaicSlice.d.ts +28 -10
- package/dist/MosaicSlice.d.ts.map +1 -1
- package/dist/MosaicSlice.js +77 -11
- package/dist/MosaicSlice.js.map +1 -1
- package/dist/ResponsivePlot.d.ts +23 -0
- package/dist/ResponsivePlot.d.ts.map +1 -0
- package/dist/ResponsivePlot.js +43 -0
- package/dist/ResponsivePlot.js.map +1 -0
- package/dist/VgPlotChart.d.ts +18 -2
- package/dist/VgPlotChart.d.ts.map +1 -1
- package/dist/VgPlotChart.js +112 -26
- package/dist/VgPlotChart.js.map +1 -1
- package/dist/boxplot/BoxPlotClient.d.ts +58 -0
- package/dist/boxplot/BoxPlotClient.d.ts.map +1 -0
- package/dist/boxplot/BoxPlotClient.js +264 -0
- package/dist/boxplot/BoxPlotClient.js.map +1 -0
- package/dist/chart/MosaicDashboardChart.d.ts +14 -0
- package/dist/chart/MosaicDashboardChart.d.ts.map +1 -0
- package/dist/chart/MosaicDashboardChart.js +21 -0
- package/dist/chart/MosaicDashboardChart.js.map +1 -0
- package/dist/chart/MosaicDashboardChartContent.d.ts +16 -0
- package/dist/chart/MosaicDashboardChartContent.d.ts.map +1 -0
- package/dist/chart/MosaicDashboardChartContent.js +18 -0
- package/dist/chart/MosaicDashboardChartContent.js.map +1 -0
- package/dist/chart/MosaicDashboardChartHeaderActions.d.ts +4 -0
- package/dist/chart/MosaicDashboardChartHeaderActions.d.ts.map +1 -0
- package/dist/chart/MosaicDashboardChartHeaderActions.js +16 -0
- package/dist/chart/MosaicDashboardChartHeaderActions.js.map +1 -0
- package/dist/chart/MosaicDashboardChartRenderer.d.ts +3 -0
- package/dist/chart/MosaicDashboardChartRenderer.d.ts.map +1 -0
- package/dist/chart/MosaicDashboardChartRenderer.js +31 -0
- package/dist/chart/MosaicDashboardChartRenderer.js.map +1 -0
- package/dist/chart/MosaicDashboardComponentChart.d.ts +14 -0
- package/dist/chart/MosaicDashboardComponentChart.d.ts.map +1 -0
- package/dist/chart/MosaicDashboardComponentChart.js +11 -0
- package/dist/chart/MosaicDashboardComponentChart.js.map +1 -0
- package/dist/chart/MosaicDashboardVgPlotChart.d.ts +10 -0
- package/dist/chart/MosaicDashboardVgPlotChart.d.ts.map +1 -0
- package/dist/chart/MosaicDashboardVgPlotChart.js +10 -0
- package/dist/chart/MosaicDashboardVgPlotChart.js.map +1 -0
- package/dist/chart/MosaicDashboardVgPlotError.d.ts +8 -0
- package/dist/chart/MosaicDashboardVgPlotError.d.ts.map +1 -0
- package/dist/chart/MosaicDashboardVgPlotError.js +11 -0
- package/dist/chart/MosaicDashboardVgPlotError.js.map +1 -0
- package/dist/chart/chart-settings/ChartSettings.d.ts +44 -0
- package/dist/chart/chart-settings/ChartSettings.d.ts.map +1 -0
- package/dist/chart/chart-settings/ChartSettings.js +71 -0
- package/dist/chart/chart-settings/ChartSettings.js.map +1 -0
- package/dist/chart/chart-settings/ChartSettingsContent.d.ts +13 -0
- package/dist/chart/chart-settings/ChartSettingsContent.d.ts.map +1 -0
- package/dist/chart/chart-settings/ChartSettingsContent.js +18 -0
- package/dist/chart/chart-settings/ChartSettingsContent.js.map +1 -0
- package/dist/chart/chart-settings/ChartSettingsContext.d.ts +27 -0
- package/dist/chart/chart-settings/ChartSettingsContext.d.ts.map +1 -0
- package/dist/chart/chart-settings/ChartSettingsContext.js +35 -0
- package/dist/chart/chart-settings/ChartSettingsContext.js.map +1 -0
- package/dist/chart/chart-settings/ChartSettingsPanel.d.ts +14 -0
- package/dist/chart/chart-settings/ChartSettingsPanel.d.ts.map +1 -0
- package/dist/chart/chart-settings/ChartSettingsPanel.js +17 -0
- package/dist/chart/chart-settings/ChartSettingsPanel.js.map +1 -0
- package/dist/chart/chart-settings/ChartSpecViewerPanel.d.ts +9 -0
- package/dist/chart/chart-settings/ChartSpecViewerPanel.d.ts.map +1 -0
- package/dist/chart/chart-settings/ChartSpecViewerPanel.js +11 -0
- package/dist/chart/chart-settings/ChartSpecViewerPanel.js.map +1 -0
- package/dist/chart/chart-settings/ChartTypeSelector.d.ts +9 -0
- package/dist/chart/chart-settings/ChartTypeSelector.d.ts.map +1 -0
- package/dist/chart/chart-settings/ChartTypeSelector.js +16 -0
- package/dist/chart/chart-settings/ChartTypeSelector.js.map +1 -0
- package/dist/chart/chart-settings/useTableColumns.d.ts +3 -0
- package/dist/chart/chart-settings/useTableColumns.d.ts.map +1 -0
- package/dist/chart/chart-settings/useTableColumns.js +12 -0
- package/dist/chart/chart-settings/useTableColumns.js.map +1 -0
- package/dist/chart/useBrushSelectionParams.d.ts +3 -0
- package/dist/chart/useBrushSelectionParams.d.ts.map +1 -0
- package/dist/chart/useBrushSelectionParams.js +16 -0
- package/dist/chart/useBrushSelectionParams.js.map +1 -0
- package/dist/chart/useChartRetainer.d.ts +3 -0
- package/dist/chart/useChartRetainer.d.ts.map +1 -0
- package/dist/chart/useChartRetainer.js +11 -0
- package/dist/chart/useChartRetainer.js.map +1 -0
- package/dist/chart/useGenerateSpec.d.ts +13 -0
- package/dist/chart/useGenerateSpec.d.ts.map +1 -0
- package/dist/chart/useGenerateSpec.js +32 -0
- package/dist/chart/useGenerateSpec.js.map +1 -0
- package/dist/chart-builders/AggregationSelector.d.ts +11 -0
- package/dist/chart-builders/AggregationSelector.d.ts.map +1 -0
- package/dist/chart-builders/AggregationSelector.js +9 -0
- package/dist/chart-builders/AggregationSelector.js.map +1 -0
- package/dist/chart-builders/ChartBuilderActions.d.ts +6 -0
- package/dist/chart-builders/ChartBuilderActions.d.ts.map +1 -0
- package/dist/chart-builders/ChartBuilderActions.js +36 -0
- package/dist/chart-builders/ChartBuilderActions.js.map +1 -0
- package/dist/chart-builders/ChartBuilderContent.d.ts +12 -12
- package/dist/chart-builders/ChartBuilderContent.d.ts.map +1 -1
- package/dist/chart-builders/ChartBuilderContent.js +21 -52
- package/dist/chart-builders/ChartBuilderContent.js.map +1 -1
- package/dist/chart-builders/ChartBuilderContext.d.ts +8 -4
- package/dist/chart-builders/ChartBuilderContext.d.ts.map +1 -1
- package/dist/chart-builders/ChartBuilderContext.js +5 -0
- package/dist/chart-builders/ChartBuilderContext.js.map +1 -1
- package/dist/chart-builders/ChartBuilderDialog.d.ts +30 -8
- package/dist/chart-builders/ChartBuilderDialog.d.ts.map +1 -1
- package/dist/chart-builders/ChartBuilderDialog.js +25 -10
- package/dist/chart-builders/ChartBuilderDialog.js.map +1 -1
- package/dist/chart-builders/ChartBuilderFields.d.ts +6 -0
- package/dist/chart-builders/ChartBuilderFields.d.ts.map +1 -0
- package/dist/chart-builders/ChartBuilderFields.js +39 -0
- package/dist/chart-builders/ChartBuilderFields.js.map +1 -0
- package/dist/chart-builders/ChartBuilderRoot.d.ts +25 -0
- package/dist/chart-builders/ChartBuilderRoot.d.ts.map +1 -0
- package/dist/chart-builders/ChartBuilderRoot.js +42 -0
- package/dist/chart-builders/ChartBuilderRoot.js.map +1 -0
- package/dist/chart-builders/ChartBuilderTypeGrid.d.ts +7 -0
- package/dist/chart-builders/ChartBuilderTypeGrid.d.ts.map +1 -0
- package/dist/chart-builders/ChartBuilderTypeGrid.js +23 -0
- package/dist/chart-builders/ChartBuilderTypeGrid.js.map +1 -0
- package/dist/chart-builders/ColumnSelector.d.ts +15 -0
- package/dist/chart-builders/ColumnSelector.d.ts.map +1 -0
- package/dist/chart-builders/ColumnSelector.js +31 -0
- package/dist/chart-builders/ColumnSelector.js.map +1 -0
- package/dist/chart-builders/Field.d.ts +11 -0
- package/dist/chart-builders/Field.d.ts.map +1 -0
- package/dist/chart-builders/Field.js +9 -0
- package/dist/chart-builders/Field.js.map +1 -0
- package/dist/chart-builders/FieldSelectorInput.d.ts +2 -1
- package/dist/chart-builders/FieldSelectorInput.d.ts.map +1 -1
- package/dist/chart-builders/FieldSelectorInput.js +5 -5
- package/dist/chart-builders/FieldSelectorInput.js.map +1 -1
- package/dist/chart-builders/MultiFieldSelector.d.ts +14 -0
- package/dist/chart-builders/MultiFieldSelector.d.ts.map +1 -0
- package/dist/chart-builders/MultiFieldSelector.js +53 -0
- package/dist/chart-builders/MultiFieldSelector.js.map +1 -0
- package/dist/chart-builders/TemporalGranularitySelector.d.ts +10 -0
- package/dist/chart-builders/TemporalGranularitySelector.d.ts.map +1 -0
- package/dist/chart-builders/TemporalGranularitySelector.js +37 -0
- package/dist/chart-builders/TemporalGranularitySelector.js.map +1 -0
- package/dist/chart-builders/chartSpecTitle.d.ts +3 -4
- package/dist/chart-builders/chartSpecTitle.d.ts.map +1 -1
- package/dist/chart-builders/chartSpecTitle.js +3 -5
- package/dist/chart-builders/chartSpecTitle.js.map +1 -1
- package/dist/chart-builders/chartTypeUtils.d.ts +13 -0
- package/dist/chart-builders/chartTypeUtils.d.ts.map +1 -0
- package/dist/chart-builders/chartTypeUtils.js +47 -0
- package/dist/chart-builders/chartTypeUtils.js.map +1 -0
- package/dist/chart-builders/constants.d.ts +12 -0
- package/dist/chart-builders/constants.d.ts.map +1 -0
- package/dist/chart-builders/constants.js +47 -0
- package/dist/chart-builders/constants.js.map +1 -0
- package/dist/chart-builders/createChartBuilderStore.d.ts +11 -0
- package/dist/chart-builders/createChartBuilderStore.d.ts.map +1 -0
- package/dist/chart-builders/createChartBuilderStore.js +26 -0
- package/dist/chart-builders/createChartBuilderStore.js.map +1 -0
- package/dist/chart-types/base-types.d.ts +148 -0
- package/dist/chart-types/base-types.d.ts.map +1 -0
- package/dist/chart-types/base-types.js +11 -0
- package/dist/chart-types/base-types.js.map +1 -0
- package/dist/chart-types/box-plot/BoxPlotSettings.d.ts +3 -0
- package/dist/chart-types/box-plot/BoxPlotSettings.d.ts.map +1 -0
- package/dist/chart-types/box-plot/BoxPlotSettings.js +9 -0
- package/dist/chart-types/box-plot/BoxPlotSettings.js.map +1 -0
- package/dist/chart-types/box-plot/definition.d.ts +4 -0
- package/dist/chart-types/box-plot/definition.d.ts.map +1 -0
- package/dist/chart-types/box-plot/definition.js +19 -0
- package/dist/chart-types/box-plot/definition.js.map +1 -0
- package/dist/chart-types/box-plot/renderer/BoxPlotErrorBoundary.d.ts +18 -0
- package/dist/chart-types/box-plot/renderer/BoxPlotErrorBoundary.d.ts.map +1 -0
- package/dist/chart-types/box-plot/renderer/BoxPlotErrorBoundary.js +28 -0
- package/dist/chart-types/box-plot/renderer/BoxPlotErrorBoundary.js.map +1 -0
- package/dist/chart-types/box-plot/renderer/BoxPlotPanelRenderer.d.ts +9 -0
- package/dist/chart-types/box-plot/renderer/BoxPlotPanelRenderer.d.ts.map +1 -0
- package/dist/chart-types/box-plot/renderer/BoxPlotPanelRenderer.js +115 -0
- package/dist/chart-types/box-plot/renderer/BoxPlotPanelRenderer.js.map +1 -0
- package/dist/chart-types/box-plot/renderer/constants.d.ts +24 -0
- package/dist/chart-types/box-plot/renderer/constants.d.ts.map +1 -0
- package/dist/chart-types/box-plot/renderer/constants.js +17 -0
- package/dist/chart-types/box-plot/renderer/constants.js.map +1 -0
- package/dist/chart-types/box-plot/renderer/plot.d.ts +14 -0
- package/dist/chart-types/box-plot/renderer/plot.d.ts.map +1 -0
- package/dist/chart-types/box-plot/renderer/plot.js +91 -0
- package/dist/chart-types/box-plot/renderer/plot.js.map +1 -0
- package/dist/chart-types/box-plot/renderer/useBoxPlotClient.d.ts +14 -0
- package/dist/chart-types/box-plot/renderer/useBoxPlotClient.d.ts.map +1 -0
- package/dist/chart-types/box-plot/renderer/useBoxPlotClient.js +45 -0
- package/dist/chart-types/box-plot/renderer/useBoxPlotClient.js.map +1 -0
- package/dist/chart-types/box-plot/renderer/utils.d.ts +6 -0
- package/dist/chart-types/box-plot/renderer/utils.d.ts.map +1 -0
- package/dist/chart-types/box-plot/renderer/utils.js +34 -0
- package/dist/chart-types/box-plot/renderer/utils.js.map +1 -0
- package/dist/chart-types/box-plot/schema.d.ts +16 -0
- package/dist/chart-types/box-plot/schema.d.ts.map +1 -0
- package/dist/chart-types/box-plot/schema.js +11 -0
- package/dist/chart-types/box-plot/schema.js.map +1 -0
- package/dist/chart-types/box-plot/tool.d.ts +44 -0
- package/dist/chart-types/box-plot/tool.d.ts.map +1 -0
- package/dist/chart-types/box-plot/tool.js +59 -0
- package/dist/chart-types/box-plot/tool.js.map +1 -0
- package/dist/chart-types/bubble-chart/BubbleChartSettings.d.ts +3 -0
- package/dist/chart-types/bubble-chart/BubbleChartSettings.d.ts.map +1 -0
- package/dist/chart-types/bubble-chart/BubbleChartSettings.js +9 -0
- package/dist/chart-types/bubble-chart/BubbleChartSettings.js.map +1 -0
- package/dist/chart-types/bubble-chart/definition.d.ts +4 -0
- package/dist/chart-types/bubble-chart/definition.d.ts.map +1 -0
- package/dist/chart-types/bubble-chart/definition.js +19 -0
- package/dist/chart-types/bubble-chart/definition.js.map +1 -0
- package/dist/chart-types/bubble-chart/schema.d.ts +18 -0
- package/dist/chart-types/bubble-chart/schema.d.ts.map +1 -0
- package/dist/chart-types/bubble-chart/schema.js +15 -0
- package/dist/chart-types/bubble-chart/schema.js.map +1 -0
- package/dist/chart-types/bubble-chart/spec.d.ts +4 -0
- package/dist/chart-types/bubble-chart/spec.d.ts.map +1 -0
- package/dist/chart-types/bubble-chart/spec.js +31 -0
- package/dist/chart-types/bubble-chart/spec.js.map +1 -0
- package/dist/chart-types/bubble-chart/tool.d.ts +46 -0
- package/dist/chart-types/bubble-chart/tool.d.ts.map +1 -0
- package/dist/chart-types/bubble-chart/tool.js +58 -0
- package/dist/chart-types/bubble-chart/tool.js.map +1 -0
- package/dist/chart-types/chart-config.d.ts +92 -0
- package/dist/chart-types/chart-config.d.ts.map +1 -0
- package/dist/chart-types/chart-config.js +47 -0
- package/dist/chart-types/chart-config.js.map +1 -0
- package/dist/chart-types/count-plot/CountPlotSettings.d.ts +3 -0
- package/dist/chart-types/count-plot/CountPlotSettings.d.ts.map +1 -0
- package/dist/chart-types/count-plot/CountPlotSettings.js +9 -0
- package/dist/chart-types/count-plot/CountPlotSettings.js.map +1 -0
- package/dist/chart-types/count-plot/definition.d.ts +4 -0
- package/dist/chart-types/count-plot/definition.d.ts.map +1 -0
- package/dist/chart-types/count-plot/definition.js +19 -0
- package/dist/chart-types/count-plot/definition.js.map +1 -0
- package/dist/chart-types/count-plot/schema.d.ts +14 -0
- package/dist/chart-types/count-plot/schema.d.ts.map +1 -0
- package/dist/chart-types/count-plot/schema.js +13 -0
- package/dist/chart-types/count-plot/schema.js.map +1 -0
- package/dist/chart-types/count-plot/spec.d.ts +4 -0
- package/dist/chart-types/count-plot/spec.d.ts.map +1 -0
- package/dist/chart-types/count-plot/spec.js +49 -0
- package/dist/chart-types/count-plot/spec.js.map +1 -0
- package/dist/chart-types/count-plot/tool.d.ts +42 -0
- package/dist/chart-types/count-plot/tool.d.ts.map +1 -0
- package/dist/chart-types/count-plot/tool.js +55 -0
- package/dist/chart-types/count-plot/tool.js.map +1 -0
- package/dist/chart-types/custom-spec/CustomSpecSettings.d.ts +7 -0
- package/dist/chart-types/custom-spec/CustomSpecSettings.d.ts.map +1 -0
- package/dist/chart-types/custom-spec/CustomSpecSettings.js +30 -0
- package/dist/chart-types/custom-spec/CustomSpecSettings.js.map +1 -0
- package/dist/chart-types/custom-spec/definition.d.ts +4 -0
- package/dist/chart-types/custom-spec/definition.d.ts.map +1 -0
- package/dist/chart-types/custom-spec/definition.js +17 -0
- package/dist/chart-types/custom-spec/definition.js.map +1 -0
- package/dist/chart-types/custom-spec/schema.d.ts +14 -0
- package/dist/chart-types/custom-spec/schema.d.ts.map +1 -0
- package/dist/chart-types/custom-spec/schema.js +10 -0
- package/dist/chart-types/custom-spec/schema.js.map +1 -0
- package/dist/chart-types/custom-spec/spec.d.ts +4 -0
- package/dist/chart-types/custom-spec/spec.d.ts.map +1 -0
- package/dist/chart-types/custom-spec/spec.js +24 -0
- package/dist/chart-types/custom-spec/spec.js.map +1 -0
- package/dist/chart-types/errors.d.ts +23 -0
- package/dist/chart-types/errors.d.ts.map +1 -0
- package/dist/chart-types/errors.js +26 -0
- package/dist/chart-types/errors.js.map +1 -0
- package/dist/chart-types/heatmap/HeatmapSettings.d.ts +3 -0
- package/dist/chart-types/heatmap/HeatmapSettings.d.ts.map +1 -0
- package/dist/chart-types/heatmap/HeatmapSettings.js +9 -0
- package/dist/chart-types/heatmap/HeatmapSettings.js.map +1 -0
- package/dist/chart-types/heatmap/definition.d.ts +4 -0
- package/dist/chart-types/heatmap/definition.d.ts.map +1 -0
- package/dist/chart-types/heatmap/definition.js +19 -0
- package/dist/chart-types/heatmap/definition.js.map +1 -0
- package/dist/chart-types/heatmap/schema.d.ts +16 -0
- package/dist/chart-types/heatmap/schema.d.ts.map +1 -0
- package/dist/chart-types/heatmap/schema.js +11 -0
- package/dist/chart-types/heatmap/schema.js.map +1 -0
- package/dist/chart-types/heatmap/spec.d.ts +4 -0
- package/dist/chart-types/heatmap/spec.d.ts.map +1 -0
- package/dist/chart-types/heatmap/spec.js +32 -0
- package/dist/chart-types/heatmap/spec.js.map +1 -0
- package/dist/chart-types/heatmap/tool.d.ts +44 -0
- package/dist/chart-types/heatmap/tool.d.ts.map +1 -0
- package/dist/chart-types/heatmap/tool.js +59 -0
- package/dist/chart-types/heatmap/tool.js.map +1 -0
- package/dist/chart-types/histogram/HistogramSettings.d.ts +3 -0
- package/dist/chart-types/histogram/HistogramSettings.d.ts.map +1 -0
- package/dist/chart-types/histogram/HistogramSettings.js +9 -0
- package/dist/chart-types/histogram/HistogramSettings.js.map +1 -0
- package/dist/chart-types/histogram/definition.d.ts +4 -0
- package/dist/chart-types/histogram/definition.d.ts.map +1 -0
- package/dist/chart-types/histogram/definition.js +19 -0
- package/dist/chart-types/histogram/definition.js.map +1 -0
- package/dist/chart-types/histogram/schema.d.ts +14 -0
- package/dist/chart-types/histogram/schema.d.ts.map +1 -0
- package/dist/chart-types/histogram/schema.js +13 -0
- package/dist/chart-types/histogram/schema.js.map +1 -0
- package/dist/chart-types/histogram/spec.d.ts +4 -0
- package/dist/chart-types/histogram/spec.d.ts.map +1 -0
- package/dist/chart-types/histogram/spec.js +36 -0
- package/dist/chart-types/histogram/spec.js.map +1 -0
- package/dist/chart-types/histogram/tool.d.ts +42 -0
- package/dist/chart-types/histogram/tool.d.ts.map +1 -0
- package/dist/chart-types/histogram/tool.js +55 -0
- package/dist/chart-types/histogram/tool.js.map +1 -0
- package/dist/chart-types/index.d.ts +115 -0
- package/dist/chart-types/index.d.ts.map +1 -0
- package/dist/chart-types/index.js +100 -0
- package/dist/chart-types/index.js.map +1 -0
- package/dist/chart-types/line-chart/LineChartSettings.d.ts +7 -0
- package/dist/chart-types/line-chart/LineChartSettings.d.ts.map +1 -0
- package/dist/chart-types/line-chart/LineChartSettings.js +22 -0
- package/dist/chart-types/line-chart/LineChartSettings.js.map +1 -0
- package/dist/chart-types/line-chart/definition.d.ts +4 -0
- package/dist/chart-types/line-chart/definition.d.ts.map +1 -0
- package/dist/chart-types/line-chart/definition.js +19 -0
- package/dist/chart-types/line-chart/definition.js.map +1 -0
- package/dist/chart-types/line-chart/schema.d.ts +83 -0
- package/dist/chart-types/line-chart/schema.d.ts.map +1 -0
- package/dist/chart-types/line-chart/schema.js +39 -0
- package/dist/chart-types/line-chart/schema.js.map +1 -0
- package/dist/chart-types/line-chart/spec.d.ts +4 -0
- package/dist/chart-types/line-chart/spec.d.ts.map +1 -0
- package/dist/chart-types/line-chart/spec.js +91 -0
- package/dist/chart-types/line-chart/spec.js.map +1 -0
- package/dist/chart-types/line-chart/tool.d.ts +68 -0
- package/dist/chart-types/line-chart/tool.d.ts.map +1 -0
- package/dist/chart-types/line-chart/tool.js +66 -0
- package/dist/chart-types/line-chart/tool.js.map +1 -0
- package/dist/chart-types/tool-schemas.d.ts +8 -0
- package/dist/chart-types/tool-schemas.d.ts.map +1 -0
- package/dist/chart-types/tool-schemas.js +18 -0
- package/dist/chart-types/tool-schemas.js.map +1 -0
- package/dist/chart-types/tool-types.d.ts +26 -0
- package/dist/chart-types/tool-types.d.ts.map +1 -0
- package/dist/chart-types/tool-types.js +2 -0
- package/dist/chart-types/tool-types.js.map +1 -0
- package/dist/chart-types/tool-validation.d.ts +3 -0
- package/dist/chart-types/tool-validation.d.ts.map +1 -0
- package/dist/chart-types/tool-validation.js +11 -0
- package/dist/chart-types/tool-validation.js.map +1 -0
- package/dist/chart-types/useChartTypeDefinition.d.ts +3 -0
- package/dist/chart-types/useChartTypeDefinition.d.ts.map +1 -0
- package/dist/chart-types/useChartTypeDefinition.js +8 -0
- package/dist/chart-types/useChartTypeDefinition.js.map +1 -0
- package/dist/dashboard/DashboardPanelErrorBoundary.d.ts +17 -0
- package/dist/dashboard/DashboardPanelErrorBoundary.d.ts.map +1 -0
- package/dist/dashboard/DashboardPanelErrorBoundary.js +21 -0
- package/dist/dashboard/DashboardPanelErrorBoundary.js.map +1 -0
- package/dist/dashboard/MosaicDashboard.d.ts +2 -4
- package/dist/dashboard/MosaicDashboard.d.ts.map +1 -1
- package/dist/dashboard/MosaicDashboard.js +38 -19
- package/dist/dashboard/MosaicDashboard.js.map +1 -1
- package/dist/dashboard/MosaicDashboardContext.d.ts +1 -0
- package/dist/dashboard/MosaicDashboardContext.d.ts.map +1 -1
- package/dist/dashboard/MosaicDashboardContext.js.map +1 -1
- package/dist/dashboard/MosaicDashboardEmptyState.d.ts +2 -0
- package/dist/dashboard/MosaicDashboardEmptyState.d.ts.map +1 -0
- package/dist/dashboard/MosaicDashboardEmptyState.js +50 -0
- package/dist/dashboard/MosaicDashboardEmptyState.js.map +1 -0
- package/dist/dashboard/MosaicDashboardPanel.d.ts +3 -0
- package/dist/dashboard/MosaicDashboardPanel.d.ts.map +1 -0
- package/dist/dashboard/MosaicDashboardPanel.js +26 -0
- package/dist/dashboard/MosaicDashboardPanel.js.map +1 -0
- package/dist/dashboard/MosaicDashboardPanelDragOverlay.d.ts +8 -0
- package/dist/dashboard/MosaicDashboardPanelDragOverlay.d.ts.map +1 -0
- package/dist/dashboard/MosaicDashboardPanelDragOverlay.js +17 -0
- package/dist/dashboard/MosaicDashboardPanelDragOverlay.js.map +1 -0
- package/dist/dashboard/MosaicDashboardPanelHeader.d.ts +13 -0
- package/dist/dashboard/MosaicDashboardPanelHeader.d.ts.map +1 -0
- package/dist/dashboard/MosaicDashboardPanelHeader.js +30 -0
- package/dist/dashboard/MosaicDashboardPanelHeader.js.map +1 -0
- package/dist/dashboard/MosaicDashboardPanelLayout.d.ts +10 -0
- package/dist/dashboard/MosaicDashboardPanelLayout.d.ts.map +1 -0
- package/dist/dashboard/MosaicDashboardPanelLayout.js +46 -0
- package/dist/dashboard/MosaicDashboardPanelLayout.js.map +1 -0
- package/dist/dashboard/MosaicDashboardPanels.d.ts +2 -0
- package/dist/dashboard/MosaicDashboardPanels.d.ts.map +1 -0
- package/dist/dashboard/MosaicDashboardPanels.js +53 -0
- package/dist/dashboard/MosaicDashboardPanels.js.map +1 -0
- package/dist/dashboard/MosaicDashboardSlice.d.ts +607 -27
- package/dist/dashboard/MosaicDashboardSlice.d.ts.map +1 -1
- package/dist/dashboard/MosaicDashboardSlice.js +525 -93
- package/dist/dashboard/MosaicDashboardSlice.js.map +1 -1
- package/dist/dashboard/MosaicDashboardToolbar.d.ts.map +1 -1
- package/dist/dashboard/MosaicDashboardToolbar.js +74 -7
- package/dist/dashboard/MosaicDashboardToolbar.js.map +1 -1
- package/dist/dashboard/defaultPanelRenderers.d.ts +3 -0
- package/dist/dashboard/defaultPanelRenderers.d.ts.map +1 -0
- package/dist/dashboard/defaultPanelRenderers.js +13 -0
- package/dist/dashboard/defaultPanelRenderers.js.map +1 -0
- package/dist/dashboard/utils.d.ts +3 -0
- package/dist/dashboard/utils.d.ts.map +1 -0
- package/dist/dashboard/utils.js +16 -0
- package/dist/dashboard/utils.js.map +1 -0
- package/dist/editor/MosaicChartDisplay.d.ts.map +1 -1
- package/dist/editor/MosaicChartDisplay.js +6 -1
- package/dist/editor/MosaicChartDisplay.js.map +1 -1
- package/dist/index.d.ts +28 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -3
- package/dist/index.js.map +1 -1
- package/dist/profiler/MosaicDashboardProfilerPanelRenderer.d.ts +3 -0
- package/dist/profiler/MosaicDashboardProfilerPanelRenderer.d.ts.map +1 -0
- package/dist/profiler/MosaicDashboardProfilerPanelRenderer.js +32 -0
- package/dist/profiler/MosaicDashboardProfilerPanelRenderer.js.map +1 -0
- package/dist/profiler/useMosaicProfiler.d.ts.map +1 -1
- package/dist/profiler/useMosaicProfiler.js.map +1 -1
- package/dist/tableInterop.js.map +1 -1
- package/dist/text/MosaicDashboardTextRenderer.d.ts +3 -0
- package/dist/text/MosaicDashboardTextRenderer.d.ts.map +1 -0
- package/dist/text/MosaicDashboardTextRenderer.js +46 -0
- package/dist/text/MosaicDashboardTextRenderer.js.map +1 -0
- package/dist/useMosaicClient.d.ts +4 -15
- package/dist/useMosaicClient.d.ts.map +1 -1
- package/dist/useMosaicClient.js +10 -4
- package/dist/useMosaicClient.js.map +1 -1
- package/package.json +40 -31
- package/dist/chart-builders/builders.d.ts +0 -7
- package/dist/chart-builders/builders.d.ts.map +0 -1
- package/dist/chart-builders/builders.js +0 -280
- package/dist/chart-builders/builders.js.map +0 -1
- package/dist/chart-builders/createMosaicChartTool.d.ts +0 -45
- package/dist/chart-builders/createMosaicChartTool.d.ts.map +0 -1
- package/dist/chart-builders/createMosaicChartTool.js +0 -109
- package/dist/chart-builders/createMosaicChartTool.js.map +0 -1
- package/dist/chart-builders/describeChartSpecs.d.ts +0 -7
- package/dist/chart-builders/describeChartSpecs.d.ts.map +0 -1
- package/dist/chart-builders/describeChartSpecs.js +0 -38
- package/dist/chart-builders/describeChartSpecs.js.map +0 -1
- package/dist/chart-builders/types.d.ts +0 -40
- package/dist/chart-builders/types.d.ts.map +0 -1
- package/dist/chart-builders/types.js +0 -2
- package/dist/chart-builders/types.js.map +0 -1
- package/dist/dashboard/MosaicDashboardChartPanel.d.ts +0 -3
- package/dist/dashboard/MosaicDashboardChartPanel.d.ts.map +0 -1
- package/dist/dashboard/MosaicDashboardChartPanel.js +0 -49
- package/dist/dashboard/MosaicDashboardChartPanel.js.map +0 -1
- package/dist/dashboard/MosaicDashboardCharts.d.ts +0 -3
- package/dist/dashboard/MosaicDashboardCharts.d.ts.map +0 -1
- package/dist/dashboard/MosaicDashboardCharts.js +0 -45
- package/dist/dashboard/MosaicDashboardCharts.js.map +0 -1
- package/dist/dashboard/MosaicDashboardProfiler.d.ts +0 -3
- package/dist/dashboard/MosaicDashboardProfiler.d.ts.map +0 -1
- package/dist/dashboard/MosaicDashboardProfiler.js +0 -21
- package/dist/dashboard/MosaicDashboardProfiler.js.map +0 -1
- package/dist/dashboard/VgPlotSpecPopoverEditor.d.ts +0 -8
- package/dist/dashboard/VgPlotSpecPopoverEditor.d.ts.map +0 -1
- package/dist/dashboard/VgPlotSpecPopoverEditor.js +0 -40
- package/dist/dashboard/VgPlotSpecPopoverEditor.js.map +0 -1
- package/dist/use-mosaic.d.ts +0 -11
- package/dist/use-mosaic.d.ts.map +0 -1
- package/dist/use-mosaic.js +0 -42
- package/dist/use-mosaic.js.map +0 -1
package/README.md
CHANGED
|
@@ -41,6 +41,36 @@ export const {roomStore, useRoomStore} = createRoomStore<RoomState>(
|
|
|
41
41
|
);
|
|
42
42
|
```
|
|
43
43
|
|
|
44
|
+
Mosaic's pre-aggregation optimization creates `preagg_*` cache tables lazily
|
|
45
|
+
when users interact with cross-filtered selections. By default Mosaic writes
|
|
46
|
+
those tables to the persistent `mosaic` schema. If the DuckDB database is a user
|
|
47
|
+
project file, point pre-aggregates at an attached cache database or disable them:
|
|
48
|
+
|
|
49
|
+
```tsx
|
|
50
|
+
const mosaicCacheDatabase = '__sqlrooms_mosaic_cache';
|
|
51
|
+
|
|
52
|
+
const connector = createWebSocketDuckDbConnector({
|
|
53
|
+
initializationQuery: [
|
|
54
|
+
`ATTACH IF NOT EXISTS ':memory:' AS ${mosaicCacheDatabase}`,
|
|
55
|
+
`CREATE SCHEMA IF NOT EXISTS ${mosaicCacheDatabase}.mosaic`,
|
|
56
|
+
].join('; '),
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
export const {roomStore, useRoomStore} = createRoomStore<RoomState>(
|
|
60
|
+
(set, get, store) => ({
|
|
61
|
+
// ... db slice using connector
|
|
62
|
+
...createMosaicSlice({
|
|
63
|
+
preagg: {
|
|
64
|
+
schema: `${mosaicCacheDatabase}.mosaic`,
|
|
65
|
+
},
|
|
66
|
+
})(set, get, store),
|
|
67
|
+
}),
|
|
68
|
+
);
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Set `preagg.enabled` to `false` when you prefer to avoid pre-aggregate tables
|
|
72
|
+
entirely.
|
|
73
|
+
|
|
44
74
|
The Mosaic connection is automatically initialized when the DuckDB connector is ready. You can check the connection status:
|
|
45
75
|
|
|
46
76
|
```tsx
|
|
@@ -137,6 +167,185 @@ For the common case, prefer the compound `MosaicProfiler` API. `useMosaicProfile
|
|
|
137
167
|
is still available when you need direct access to the profiler state for custom
|
|
138
168
|
layout, sizing, or advanced composition.
|
|
139
169
|
|
|
170
|
+
### Mosaic Dashboard Panels
|
|
171
|
+
|
|
172
|
+
`MosaicDashboard` is a compound dashboard surface backed by generic dashboard
|
|
173
|
+
panels instead of a chart-only list. Configure supported panel renderers and
|
|
174
|
+
runtime add-panel actions when creating the dashboard slice.
|
|
175
|
+
|
|
176
|
+
```tsx
|
|
177
|
+
import {
|
|
178
|
+
createDefaultMosaicDashboardPanelRenderers,
|
|
179
|
+
createMosaicDashboardProfilerPanelConfig,
|
|
180
|
+
createMosaicDashboardChartPanelConfig,
|
|
181
|
+
createMosaicDashboardSlice,
|
|
182
|
+
MosaicDashboard,
|
|
183
|
+
} from '@sqlrooms/mosaic';
|
|
184
|
+
|
|
185
|
+
const dashboardSlice = createMosaicDashboardSlice({
|
|
186
|
+
panelRenderers: createDefaultMosaicDashboardPanelRenderers(),
|
|
187
|
+
// Optional: pass chartTypes/chartBuilders to customize Add Chart.
|
|
188
|
+
// Optional: pass addPanelActions to add app-specific menu entries.
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
function Dashboard() {
|
|
192
|
+
return <MosaicDashboard dashboardId="main" />;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
function addProfiler(store: RoomStore) {
|
|
196
|
+
store.getState().mosaicDashboard.addPanel(
|
|
197
|
+
'main',
|
|
198
|
+
createMosaicDashboardProfilerPanelConfig({
|
|
199
|
+
source: {tableName: 'earthquakes'},
|
|
200
|
+
}),
|
|
201
|
+
);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
function addBoxPlotChart(store: RoomStore) {
|
|
205
|
+
store.getState().mosaicDashboard.addPanel(
|
|
206
|
+
'main',
|
|
207
|
+
createMosaicDashboardChartPanelConfig('Magnitude by Region', {
|
|
208
|
+
chartType: 'box-plot',
|
|
209
|
+
settings: {
|
|
210
|
+
x: 'region',
|
|
211
|
+
y: 'magnitude',
|
|
212
|
+
},
|
|
213
|
+
}),
|
|
214
|
+
);
|
|
215
|
+
}
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
Dashboards have a creation-time `layoutType` of either `dock` or `grid`.
|
|
219
|
+
Existing persisted dashboards default to `dock`; pass `'grid'` to
|
|
220
|
+
`createDashboard(title, 'grid')` or `ensureDashboard(id, title, 'grid')` when
|
|
221
|
+
creating a dashboard that should use the scrollable grid renderer. Re-ensuring
|
|
222
|
+
an existing dashboard does not convert between layout types.
|
|
223
|
+
|
|
224
|
+
Dashboard panel sources may specify a `tableName` or trusted `sqlQuery`; when a
|
|
225
|
+
panel omits a source it falls back to the dashboard selected table. Panel renderer
|
|
226
|
+
definitions and chart builder definitions are runtime-only and intentionally
|
|
227
|
+
live outside persisted dashboard config.
|
|
228
|
+
|
|
229
|
+
### AI Chart Tools
|
|
230
|
+
|
|
231
|
+
`createChartTools` generates assistant tools for the built-in chart types. The
|
|
232
|
+
injected `ChartToolDeps.resolveResources(params, context)` callback receives the
|
|
233
|
+
tool execution context as its second argument. Client apps should prefer
|
|
234
|
+
execution-scoped context, such as a captured AI run context, over live UI state
|
|
235
|
+
when resolving implicit dashboard targets. Explicit `params.artifactId` should
|
|
236
|
+
still take precedence.
|
|
237
|
+
|
|
238
|
+
```ts
|
|
239
|
+
import {
|
|
240
|
+
createChartTools,
|
|
241
|
+
createDefaultChartTypes,
|
|
242
|
+
type ChartToolDeps,
|
|
243
|
+
} from '@sqlrooms/mosaic';
|
|
244
|
+
|
|
245
|
+
const deps: ChartToolDeps = {
|
|
246
|
+
resolveResources: (params, context) => {
|
|
247
|
+
const sessionId = context?.sessionId;
|
|
248
|
+
const runContext = context?.aiRunContext;
|
|
249
|
+
const contextArtifactId = getDashboardArtifactIdFromRunContext(
|
|
250
|
+
runContext,
|
|
251
|
+
sessionId,
|
|
252
|
+
);
|
|
253
|
+
|
|
254
|
+
// Prefer execution-scoped context over live UI state for implicit targets.
|
|
255
|
+
// Explicit tool input still wins over anything derived from context.
|
|
256
|
+
const artifactId =
|
|
257
|
+
params.artifactId ??
|
|
258
|
+
contextArtifactId ??
|
|
259
|
+
getCurrentDashboardArtifactId();
|
|
260
|
+
const tableName = params.tableName ?? getSelectedTableName(artifactId);
|
|
261
|
+
|
|
262
|
+
return {
|
|
263
|
+
artifactId,
|
|
264
|
+
tableName,
|
|
265
|
+
columns: getTableColumns(tableName),
|
|
266
|
+
};
|
|
267
|
+
},
|
|
268
|
+
createChart: ({artifactId, tableName, title, config}) =>
|
|
269
|
+
addChartPanel({artifactId, tableName, title, config}),
|
|
270
|
+
};
|
|
271
|
+
|
|
272
|
+
const chartTools = createChartTools(
|
|
273
|
+
createDefaultChartTypes({includeCustomSpec: false}),
|
|
274
|
+
deps,
|
|
275
|
+
);
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
### Box Plot Chart Type
|
|
279
|
+
|
|
280
|
+
The built-in Box Plot chart type (`'box-plot'`) is a specialized chart that uses
|
|
281
|
+
a custom renderer instead of Vega-Lite. It calculates quartiles, whiskers, and
|
|
282
|
+
outliers directly in DuckDB using SQL queries, then renders them with Observable
|
|
283
|
+
Plot primitives. This approach provides better performance and more accurate
|
|
284
|
+
statistical calculations than Observable Plot's built-in `boxY` mark.
|
|
285
|
+
|
|
286
|
+
Box plots support:
|
|
287
|
+
|
|
288
|
+
- Grouped box plots by categorical variable (x-axis)
|
|
289
|
+
- Y-axis brushing for interactive filtering
|
|
290
|
+
- Cross-filtering integration with other dashboard charts
|
|
291
|
+
- Custom quartile calculation using DuckDB's `quantile_cont` function
|
|
292
|
+
|
|
293
|
+
The renderer is modular and organized in the `chart-types/box-plot/renderer/`
|
|
294
|
+
directory with separate concerns:
|
|
295
|
+
|
|
296
|
+
- **BoxPlotPanelRenderer.tsx** - Main React component with drag interactions
|
|
297
|
+
- **BoxPlotClient.ts** - Mosaic client for SQL-based data queries
|
|
298
|
+
- **plot.ts** - Observable Plot rendering logic
|
|
299
|
+
- **utils.ts** - Statistical calculations and coordinate transformations
|
|
300
|
+
- **constants.ts** - Theme colors and layout constants
|
|
301
|
+
|
|
302
|
+
### Chart Builder Compound Components
|
|
303
|
+
|
|
304
|
+
The chart builder UI can be used as a compound component API for flexible composition:
|
|
305
|
+
|
|
306
|
+
```tsx
|
|
307
|
+
import {
|
|
308
|
+
ChartBuilderRoot,
|
|
309
|
+
ChartBuilderTrigger,
|
|
310
|
+
ChartBuilderDialogContent,
|
|
311
|
+
ChartBuilderContent,
|
|
312
|
+
} from '@sqlrooms/mosaic';
|
|
313
|
+
|
|
314
|
+
function MyDashboard() {
|
|
315
|
+
const columns = [...]; // Your table columns
|
|
316
|
+
|
|
317
|
+
return (
|
|
318
|
+
<ChartBuilderRoot
|
|
319
|
+
tableName="earthquakes"
|
|
320
|
+
columns={columns}
|
|
321
|
+
onCreateChart={(spec, title) => {
|
|
322
|
+
// Handle chart creation
|
|
323
|
+
}}
|
|
324
|
+
onCreateChartOutput={(output, title) => {
|
|
325
|
+
// Optional: handle non-spec outputs such as dashboard panel chart types.
|
|
326
|
+
}}
|
|
327
|
+
>
|
|
328
|
+
<ChartBuilderTrigger />
|
|
329
|
+
<ChartBuilderDialogContent>
|
|
330
|
+
<ChartBuilderContent />
|
|
331
|
+
</ChartBuilderDialogContent>
|
|
332
|
+
</ChartBuilderRoot>
|
|
333
|
+
);
|
|
334
|
+
}
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
Available compound components:
|
|
338
|
+
|
|
339
|
+
- `ChartBuilderRoot` - Context provider and dialog wrapper
|
|
340
|
+
- `ChartBuilderTrigger` - Button to open the dialog
|
|
341
|
+
- `ChartBuilderDialogContent` - Dialog content wrapper
|
|
342
|
+
- `ChartBuilderContent` - Main chart builder UI (type grid + fields + actions)
|
|
343
|
+
- `ChartBuilderTypeGrid` - Chart type selector grid
|
|
344
|
+
- `ChartBuilderFields` - Field selector inputs
|
|
345
|
+
- `ChartBuilderActions` - Back/Create buttons
|
|
346
|
+
|
|
347
|
+
For simpler use cases, the legacy `ChartBuilderDialog` component is still available but deprecated.
|
|
348
|
+
|
|
140
349
|
### Working with Selections
|
|
141
350
|
|
|
142
351
|
Selections enable cross-filtering between multiple visualizations. You can get or create a named selection from the store:
|
|
@@ -1,32 +1,63 @@
|
|
|
1
|
+
import type { ReactElement } from 'react';
|
|
2
|
+
import { ChartBuilderActions } from './chart-builders/ChartBuilderActions';
|
|
3
|
+
import { ChartBuilderContent } from './chart-builders/ChartBuilderContent';
|
|
4
|
+
import { ChartBuilderDialog, ChartBuilderDialogContent, ChartBuilderTrigger } from './chart-builders/ChartBuilderDialog';
|
|
5
|
+
import { ChartBuilderRoot, type ChartBuilderRootProps } from './chart-builders/ChartBuilderRoot';
|
|
6
|
+
import { ChartBuilderFields } from './chart-builders/ChartBuilderFields';
|
|
7
|
+
import { ChartBuilderTypeGrid } from './chart-builders/ChartBuilderTypeGrid';
|
|
8
|
+
import { FieldSelectorInput } from './chart-builders/FieldSelectorInput';
|
|
1
9
|
/**
|
|
2
10
|
* Compound component for building Mosaic charts from templates.
|
|
3
11
|
*
|
|
4
|
-
* Use
|
|
5
|
-
*
|
|
12
|
+
* Use `<MosaicChartBuilder>` as the root; it provides context and wraps a
|
|
13
|
+
* Radix Dialog.
|
|
6
14
|
*
|
|
7
|
-
* @example
|
|
15
|
+
* @example Compound usage (recommended)
|
|
8
16
|
* ```tsx
|
|
9
|
-
* <MosaicChartBuilder
|
|
17
|
+
* <MosaicChartBuilder
|
|
10
18
|
* tableName="my_table"
|
|
11
19
|
* columns={columns}
|
|
12
20
|
* onCreateChart={handleCreate}
|
|
13
|
-
*
|
|
21
|
+
* >
|
|
22
|
+
* <MosaicChartBuilder.Trigger />
|
|
23
|
+
* <MosaicChartBuilder.Dialog />
|
|
24
|
+
* </MosaicChartBuilder>
|
|
14
25
|
* ```
|
|
15
26
|
*
|
|
16
|
-
* @example
|
|
27
|
+
* @example Custom trigger button
|
|
17
28
|
* ```tsx
|
|
18
|
-
* <MosaicChartBuilder
|
|
19
|
-
*
|
|
20
|
-
*
|
|
29
|
+
* <MosaicChartBuilder
|
|
30
|
+
* tableName="my_table"
|
|
31
|
+
* columns={columns}
|
|
32
|
+
* onCreateChart={handleCreate}
|
|
33
|
+
* >
|
|
34
|
+
* <MosaicChartBuilder.Trigger variant="ghost" size="icon">
|
|
35
|
+
* <PlusIcon />
|
|
36
|
+
* </MosaicChartBuilder.Trigger>
|
|
37
|
+
* <MosaicChartBuilder.Dialog />
|
|
38
|
+
* </MosaicChartBuilder>
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* @example Inline builder (no dialog)
|
|
42
|
+
* ```tsx
|
|
43
|
+
* <MosaicChartBuilder.Content
|
|
21
44
|
* tableName="my_table"
|
|
22
45
|
* columns={columns}
|
|
23
46
|
* onCreateChart={handleCreate}
|
|
24
47
|
* />
|
|
25
48
|
* ```
|
|
26
49
|
*/
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
50
|
+
type MosaicChartBuilderCompoundComponent = ((props: ChartBuilderRootProps) => ReactElement) & {
|
|
51
|
+
Root: typeof ChartBuilderRoot;
|
|
52
|
+
Trigger: typeof ChartBuilderTrigger;
|
|
53
|
+
Dialog: typeof ChartBuilderDialogContent;
|
|
54
|
+
Content: typeof ChartBuilderContent;
|
|
55
|
+
TypeGrid: typeof ChartBuilderTypeGrid;
|
|
56
|
+
Fields: typeof ChartBuilderFields;
|
|
57
|
+
Actions: typeof ChartBuilderActions;
|
|
58
|
+
FieldSelector: typeof FieldSelectorInput;
|
|
59
|
+
LegacyDialog: typeof ChartBuilderDialog;
|
|
31
60
|
};
|
|
61
|
+
export declare const MosaicChartBuilder: MosaicChartBuilderCompoundComponent;
|
|
62
|
+
export {};
|
|
32
63
|
//# sourceMappingURL=MosaicChartBuilder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MosaicChartBuilder.d.ts","sourceRoot":"","sources":["../src/MosaicChartBuilder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MosaicChartBuilder.d.ts","sourceRoot":"","sources":["../src/MosaicChartBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,OAAO,CAAC;AACxC,OAAO,EAAC,mBAAmB,EAAC,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAC,mBAAmB,EAAC,MAAM,sCAAsC,CAAC;AACzE,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,mBAAmB,EACpB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,gBAAgB,EAChB,KAAK,qBAAqB,EAC3B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAC,kBAAkB,EAAC,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAC,oBAAoB,EAAC,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAC,kBAAkB,EAAC,MAAM,qCAAqC,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,KAAK,mCAAmC,GAAG,CAAC,CAC1C,KAAK,EAAE,qBAAqB,KACzB,YAAY,CAAC,GAAG;IACnB,IAAI,EAAE,OAAO,gBAAgB,CAAC;IAC9B,OAAO,EAAE,OAAO,mBAAmB,CAAC;IACpC,MAAM,EAAE,OAAO,yBAAyB,CAAC;IACzC,OAAO,EAAE,OAAO,mBAAmB,CAAC;IACpC,QAAQ,EAAE,OAAO,oBAAoB,CAAC;IACtC,MAAM,EAAE,OAAO,kBAAkB,CAAC;IAClC,OAAO,EAAE,OAAO,mBAAmB,CAAC;IACpC,aAAa,EAAE,OAAO,kBAAkB,CAAC;IACzC,YAAY,EAAE,OAAO,kBAAkB,CAAC;CACzC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,mCAsB9B,CAAC"}
|
|
@@ -1,35 +1,27 @@
|
|
|
1
|
+
import { ChartBuilderActions } from './chart-builders/ChartBuilderActions';
|
|
1
2
|
import { ChartBuilderContent } from './chart-builders/ChartBuilderContent';
|
|
2
|
-
import { ChartBuilderDialog } from './chart-builders/ChartBuilderDialog';
|
|
3
|
+
import { ChartBuilderDialog, ChartBuilderDialogContent, ChartBuilderTrigger, } from './chart-builders/ChartBuilderDialog';
|
|
4
|
+
import { ChartBuilderRoot, } from './chart-builders/ChartBuilderRoot';
|
|
5
|
+
import { ChartBuilderFields } from './chart-builders/ChartBuilderFields';
|
|
6
|
+
import { ChartBuilderTypeGrid } from './chart-builders/ChartBuilderTypeGrid';
|
|
3
7
|
import { FieldSelectorInput } from './chart-builders/FieldSelectorInput';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
* ```tsx
|
|
12
|
-
* <MosaicChartBuilder.Content
|
|
13
|
-
* tableName="my_table"
|
|
14
|
-
* columns={columns}
|
|
15
|
-
* onCreateChart={handleCreate}
|
|
16
|
-
* />
|
|
17
|
-
* ```
|
|
18
|
-
*
|
|
19
|
-
* @example Dialog usage
|
|
20
|
-
* ```tsx
|
|
21
|
-
* <MosaicChartBuilder.Dialog
|
|
22
|
-
* open={isOpen}
|
|
23
|
-
* onOpenChange={setOpen}
|
|
24
|
-
* tableName="my_table"
|
|
25
|
-
* columns={columns}
|
|
26
|
-
* onCreateChart={handleCreate}
|
|
27
|
-
* />
|
|
28
|
-
* ```
|
|
29
|
-
*/
|
|
30
|
-
export const MosaicChartBuilder = {
|
|
8
|
+
export const MosaicChartBuilder = Object.assign(ChartBuilderRoot, {
|
|
9
|
+
Root: ChartBuilderRoot,
|
|
10
|
+
/** Default trigger button; customize via ButtonProps or children. */
|
|
11
|
+
Trigger: ChartBuilderTrigger,
|
|
12
|
+
/** Dialog content pane with chart-builder steps. */
|
|
13
|
+
Dialog: ChartBuilderDialogContent,
|
|
14
|
+
/** Standalone builder UI (no dialog wrapper). */
|
|
31
15
|
Content: ChartBuilderContent,
|
|
32
|
-
|
|
16
|
+
/** Built-in chart-type picker grid. */
|
|
17
|
+
TypeGrid: ChartBuilderTypeGrid,
|
|
18
|
+
/** Field selectors for the currently selected chart type. */
|
|
19
|
+
Fields: ChartBuilderFields,
|
|
20
|
+
/** Back/Create actions for the current chart type selection. */
|
|
21
|
+
Actions: ChartBuilderActions,
|
|
22
|
+
/** Field selector primitive. */
|
|
33
23
|
FieldSelector: FieldSelectorInput,
|
|
34
|
-
|
|
24
|
+
/** Legacy one-shot dialog (backward-compatible). */
|
|
25
|
+
LegacyDialog: ChartBuilderDialog,
|
|
26
|
+
});
|
|
35
27
|
//# sourceMappingURL=MosaicChartBuilder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MosaicChartBuilder.js","sourceRoot":"","sources":["../src/MosaicChartBuilder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MosaicChartBuilder.js","sourceRoot":"","sources":["../src/MosaicChartBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,mBAAmB,EAAC,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAC,mBAAmB,EAAC,MAAM,sCAAsC,CAAC;AACzE,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,gBAAgB,GAEjB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAC,kBAAkB,EAAC,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAC,oBAAoB,EAAC,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAC,kBAAkB,EAAC,MAAM,qCAAqC,CAAC;AA0DvE,MAAM,CAAC,MAAM,kBAAkB,GAC7B,MAAM,CAAC,MAAM,CACX,gBAAkE,EAClE;IACE,IAAI,EAAE,gBAAgB;IACtB,qEAAqE;IACrE,OAAO,EAAE,mBAAmB;IAC5B,oDAAoD;IACpD,MAAM,EAAE,yBAAyB;IACjC,iDAAiD;IACjD,OAAO,EAAE,mBAAmB;IAC5B,uCAAuC;IACvC,QAAQ,EAAE,oBAAoB;IAC9B,6DAA6D;IAC7D,MAAM,EAAE,kBAAkB;IAC1B,gEAAgE;IAChE,OAAO,EAAE,mBAAmB;IAC5B,gCAAgC;IAChC,aAAa,EAAE,kBAAkB;IACjC,oDAAoD;IACpD,YAAY,EAAE,kBAAkB;CACjC,CACF,CAAC","sourcesContent":["import type {ReactElement} from 'react';\nimport {ChartBuilderActions} from './chart-builders/ChartBuilderActions';\nimport {ChartBuilderContent} from './chart-builders/ChartBuilderContent';\nimport {\n ChartBuilderDialog,\n ChartBuilderDialogContent,\n ChartBuilderTrigger,\n} from './chart-builders/ChartBuilderDialog';\nimport {\n ChartBuilderRoot,\n type ChartBuilderRootProps,\n} from './chart-builders/ChartBuilderRoot';\nimport {ChartBuilderFields} from './chart-builders/ChartBuilderFields';\nimport {ChartBuilderTypeGrid} from './chart-builders/ChartBuilderTypeGrid';\nimport {FieldSelectorInput} from './chart-builders/FieldSelectorInput';\n\n/**\n * Compound component for building Mosaic charts from templates.\n *\n * Use `<MosaicChartBuilder>` as the root; it provides context and wraps a\n * Radix Dialog.\n *\n * @example Compound usage (recommended)\n * ```tsx\n * <MosaicChartBuilder\n * tableName=\"my_table\"\n * columns={columns}\n * onCreateChart={handleCreate}\n * >\n * <MosaicChartBuilder.Trigger />\n * <MosaicChartBuilder.Dialog />\n * </MosaicChartBuilder>\n * ```\n *\n * @example Custom trigger button\n * ```tsx\n * <MosaicChartBuilder\n * tableName=\"my_table\"\n * columns={columns}\n * onCreateChart={handleCreate}\n * >\n * <MosaicChartBuilder.Trigger variant=\"ghost\" size=\"icon\">\n * <PlusIcon />\n * </MosaicChartBuilder.Trigger>\n * <MosaicChartBuilder.Dialog />\n * </MosaicChartBuilder>\n * ```\n *\n * @example Inline builder (no dialog)\n * ```tsx\n * <MosaicChartBuilder.Content\n * tableName=\"my_table\"\n * columns={columns}\n * onCreateChart={handleCreate}\n * />\n * ```\n */\n\ntype MosaicChartBuilderCompoundComponent = ((\n props: ChartBuilderRootProps,\n) => ReactElement) & {\n Root: typeof ChartBuilderRoot;\n Trigger: typeof ChartBuilderTrigger;\n Dialog: typeof ChartBuilderDialogContent;\n Content: typeof ChartBuilderContent;\n TypeGrid: typeof ChartBuilderTypeGrid;\n Fields: typeof ChartBuilderFields;\n Actions: typeof ChartBuilderActions;\n FieldSelector: typeof FieldSelectorInput;\n LegacyDialog: typeof ChartBuilderDialog;\n};\n\nexport const MosaicChartBuilder: MosaicChartBuilderCompoundComponent =\n Object.assign(\n ChartBuilderRoot as (props: ChartBuilderRootProps) => ReactElement,\n {\n Root: ChartBuilderRoot,\n /** Default trigger button; customize via ButtonProps or children. */\n Trigger: ChartBuilderTrigger,\n /** Dialog content pane with chart-builder steps. */\n Dialog: ChartBuilderDialogContent,\n /** Standalone builder UI (no dialog wrapper). */\n Content: ChartBuilderContent,\n /** Built-in chart-type picker grid. */\n TypeGrid: ChartBuilderTypeGrid,\n /** Field selectors for the currently selected chart type. */\n Fields: ChartBuilderFields,\n /** Back/Create actions for the current chart type selection. */\n Actions: ChartBuilderActions,\n /** Field selector primitive. */\n FieldSelector: FieldSelectorInput,\n /** Legacy one-shot dialog (backward-compatible). */\n LegacyDialog: ChartBuilderDialog,\n },\n );\n"]}
|
package/dist/MosaicSlice.d.ts
CHANGED
|
@@ -6,6 +6,12 @@ import type { Table as ArrowTable } from 'apache-arrow';
|
|
|
6
6
|
import { z } from 'zod';
|
|
7
7
|
export declare const MosaicSliceConfig: z.ZodObject<{}, z.core.$strip>;
|
|
8
8
|
export type MosaicSliceConfig = z.infer<typeof MosaicSliceConfig>;
|
|
9
|
+
export type MosaicPreAggregateOptions = {
|
|
10
|
+
/** Database schema/namespace for Mosaic pre-aggregate tables. */
|
|
11
|
+
schema?: string;
|
|
12
|
+
/** Enable or disable Mosaic's pre-aggregation optimization. */
|
|
13
|
+
enabled?: boolean;
|
|
14
|
+
};
|
|
9
15
|
export type MosaicClientOptions = {
|
|
10
16
|
/** Unique identifier for this client */
|
|
11
17
|
id?: string;
|
|
@@ -17,6 +23,8 @@ export type MosaicClientOptions = {
|
|
|
17
23
|
query: (filter: unknown) => ReturnType<typeof Query.from>;
|
|
18
24
|
/** Callback when query results are received */
|
|
19
25
|
queryResult?: (result: ArrowTable) => void;
|
|
26
|
+
/** Callback when query execution fails */
|
|
27
|
+
queryError?: (error: Error) => void;
|
|
20
28
|
};
|
|
21
29
|
export type TrackedClient = {
|
|
22
30
|
id: string;
|
|
@@ -24,21 +32,29 @@ export type TrackedClient = {
|
|
|
24
32
|
createdAt: number;
|
|
25
33
|
isLoading: boolean;
|
|
26
34
|
data: unknown | null;
|
|
35
|
+
error?: Error;
|
|
27
36
|
selection?: Selection;
|
|
28
37
|
queryResultCallback?: (result: ArrowTable) => void;
|
|
29
38
|
};
|
|
39
|
+
export type MosaicIdleConnection = {
|
|
40
|
+
status: 'idle';
|
|
41
|
+
};
|
|
42
|
+
export type MosaicLoadingConnection = {
|
|
43
|
+
status: 'loading';
|
|
44
|
+
};
|
|
45
|
+
export type MosaicReadyConnection = {
|
|
46
|
+
status: 'ready';
|
|
47
|
+
connector?: Connector;
|
|
48
|
+
coordinator: Coordinator;
|
|
49
|
+
};
|
|
50
|
+
export type MosaicErrorConnection = {
|
|
51
|
+
status: 'error';
|
|
52
|
+
error: unknown;
|
|
53
|
+
};
|
|
54
|
+
export type MosaicConnection = MosaicIdleConnection | MosaicLoadingConnection | MosaicReadyConnection | MosaicErrorConnection;
|
|
30
55
|
export type MosaicSliceState = {
|
|
31
56
|
mosaic: SliceFunctions & {
|
|
32
|
-
connection:
|
|
33
|
-
status: 'idle' | 'loading';
|
|
34
|
-
} | {
|
|
35
|
-
status: 'ready';
|
|
36
|
-
connector?: Connector;
|
|
37
|
-
coordinator: Coordinator;
|
|
38
|
-
} | {
|
|
39
|
-
status: 'error';
|
|
40
|
-
error: unknown;
|
|
41
|
-
};
|
|
57
|
+
connection: MosaicConnection;
|
|
42
58
|
config: MosaicSliceConfig;
|
|
43
59
|
/** Record of registered clients by id */
|
|
44
60
|
clients: Record<string, TrackedClient>;
|
|
@@ -53,6 +69,7 @@ export type MosaicSliceState = {
|
|
|
53
69
|
ensureClient: (options: MosaicClientOptions & {
|
|
54
70
|
id: string;
|
|
55
71
|
onQueryResult?: (result: ArrowTable) => void;
|
|
72
|
+
onQueryError?: (error: Error) => void;
|
|
56
73
|
}) => void;
|
|
57
74
|
/** Disconnect and remove a client by id */
|
|
58
75
|
destroyClient: (id: string) => void;
|
|
@@ -64,6 +81,7 @@ export declare function createDefaultMosaicConfig(props?: Partial<MosaicSliceCon
|
|
|
64
81
|
export type CreateMosaicSliceProps = {
|
|
65
82
|
config?: Partial<MosaicSliceConfig>;
|
|
66
83
|
coordinator?: Coordinator;
|
|
84
|
+
preagg?: MosaicPreAggregateOptions;
|
|
67
85
|
};
|
|
68
86
|
export declare function createMosaicSlice(props?: CreateMosaicSliceProps): import("zustand").StateCreator<MosaicSliceState>;
|
|
69
87
|
export type DuckDbSliceStateWithMosaic = DuckDbSliceState & MosaicSliceState;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MosaicSlice.d.ts","sourceRoot":"","sources":["../src/MosaicSlice.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EACL,SAAS,EACT,WAAW,
|
|
1
|
+
{"version":3,"file":"MosaicSlice.d.ts","sourceRoot":"","sources":["../src/MosaicSlice.ts"],"names":[],"mappings":"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"}
|
package/dist/MosaicSlice.js
CHANGED
|
@@ -27,17 +27,22 @@ export function createMosaicSlice(props = {}) {
|
|
|
27
27
|
try {
|
|
28
28
|
if (props.coordinator) {
|
|
29
29
|
resolvedCoordinator = props.coordinator;
|
|
30
|
+
applyMosaicPreAggregateOptions(resolvedCoordinator, props.preagg);
|
|
30
31
|
}
|
|
31
32
|
else {
|
|
32
33
|
const dbConnector = await get().db.getConnector();
|
|
33
34
|
resolvedCoordinator = coordinator();
|
|
34
35
|
mosaicConnector = isWasmDuckDbConnector(dbConnector)
|
|
35
36
|
? await wasmConnector({
|
|
36
|
-
//
|
|
37
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
38
|
+
// @ts-ignore - We might be using a different version of duckdb-wasm than mosaic expects
|
|
37
39
|
duckDb: dbConnector.getDb(),
|
|
40
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
41
|
+
// @ts-ignore - same version mismatch
|
|
38
42
|
connection: dbConnector.getConnection(),
|
|
39
43
|
})
|
|
40
44
|
: createDuckDbMosaicConnector(dbConnector);
|
|
45
|
+
applyMosaicPreAggregateOptions(resolvedCoordinator, props.preagg);
|
|
41
46
|
resolvedCoordinator.databaseConnector(mosaicConnector);
|
|
42
47
|
}
|
|
43
48
|
}
|
|
@@ -58,6 +63,11 @@ export function createMosaicSlice(props = {}) {
|
|
|
58
63
|
async destroy() {
|
|
59
64
|
get().mosaic.destroyAllClients();
|
|
60
65
|
},
|
|
66
|
+
setConfig(config) {
|
|
67
|
+
set((state) => produce(state, (draft) => {
|
|
68
|
+
draft.mosaic.config = config;
|
|
69
|
+
}));
|
|
70
|
+
},
|
|
61
71
|
getSelection(name, type = 'crossfilter') {
|
|
62
72
|
const existing = get().mosaic.selections[name];
|
|
63
73
|
if (existing)
|
|
@@ -90,16 +100,39 @@ export function createMosaicSlice(props = {}) {
|
|
|
90
100
|
if (tracked) {
|
|
91
101
|
tracked.data = data;
|
|
92
102
|
tracked.isLoading = false;
|
|
103
|
+
tracked.error = undefined;
|
|
93
104
|
}
|
|
94
105
|
}));
|
|
95
106
|
// Call external callback if provided
|
|
96
107
|
options.queryResult?.(toArrowClientResult(data));
|
|
97
108
|
};
|
|
109
|
+
const wrappedQueryPending = () => {
|
|
110
|
+
set((state) => produce(state, (draft) => {
|
|
111
|
+
const tracked = draft.mosaic.clients[id];
|
|
112
|
+
if (tracked) {
|
|
113
|
+
tracked.isLoading = true;
|
|
114
|
+
tracked.error = undefined;
|
|
115
|
+
}
|
|
116
|
+
}));
|
|
117
|
+
};
|
|
118
|
+
const wrappedQueryError = (error) => {
|
|
119
|
+
set((state) => produce(state, (draft) => {
|
|
120
|
+
const tracked = draft.mosaic.clients[id];
|
|
121
|
+
if (tracked) {
|
|
122
|
+
tracked.isLoading = false;
|
|
123
|
+
tracked.error = error;
|
|
124
|
+
}
|
|
125
|
+
}));
|
|
126
|
+
client.enabled = false;
|
|
127
|
+
options.queryError?.(error);
|
|
128
|
+
};
|
|
98
129
|
const client = makeClient({
|
|
99
130
|
coordinator: connection.coordinator,
|
|
100
131
|
selection,
|
|
101
132
|
query: options.query,
|
|
102
133
|
queryResult: wrappedQueryResult,
|
|
134
|
+
queryPending: wrappedQueryPending,
|
|
135
|
+
queryError: wrappedQueryError,
|
|
103
136
|
});
|
|
104
137
|
set((state) => produce(state, (draft) => {
|
|
105
138
|
draft.mosaic.clients[id] = {
|
|
@@ -108,6 +141,7 @@ export function createMosaicSlice(props = {}) {
|
|
|
108
141
|
createdAt: Date.now(),
|
|
109
142
|
isLoading: true,
|
|
110
143
|
data: null,
|
|
144
|
+
error: undefined,
|
|
111
145
|
selection,
|
|
112
146
|
queryResultCallback: options.queryResult
|
|
113
147
|
? (result) => options.queryResult(toArrowClientResult(result))
|
|
@@ -145,6 +179,7 @@ export function createMosaicSlice(props = {}) {
|
|
|
145
179
|
if (tracked) {
|
|
146
180
|
tracked.data = data;
|
|
147
181
|
tracked.isLoading = false;
|
|
182
|
+
tracked.error = undefined;
|
|
148
183
|
}
|
|
149
184
|
}));
|
|
150
185
|
const arrowData = toArrowClientResult(data);
|
|
@@ -153,11 +188,34 @@ export function createMosaicSlice(props = {}) {
|
|
|
153
188
|
// Also call original queryResult if provided
|
|
154
189
|
options.queryResult?.(arrowData);
|
|
155
190
|
};
|
|
191
|
+
const wrappedQueryPending = () => {
|
|
192
|
+
set((state) => produce(state, (draft) => {
|
|
193
|
+
const tracked = draft.mosaic.clients[options.id];
|
|
194
|
+
if (tracked) {
|
|
195
|
+
tracked.isLoading = true;
|
|
196
|
+
tracked.error = undefined;
|
|
197
|
+
}
|
|
198
|
+
}));
|
|
199
|
+
};
|
|
200
|
+
const wrappedQueryError = (error) => {
|
|
201
|
+
set((state) => produce(state, (draft) => {
|
|
202
|
+
const tracked = draft.mosaic.clients[options.id];
|
|
203
|
+
if (tracked) {
|
|
204
|
+
tracked.isLoading = false;
|
|
205
|
+
tracked.error = error;
|
|
206
|
+
}
|
|
207
|
+
}));
|
|
208
|
+
client.enabled = false;
|
|
209
|
+
options.onQueryError?.(error);
|
|
210
|
+
options.queryError?.(error);
|
|
211
|
+
};
|
|
156
212
|
const client = makeClient({
|
|
157
213
|
coordinator: connection.coordinator,
|
|
158
214
|
selection,
|
|
159
215
|
query: options.query,
|
|
160
216
|
queryResult: wrappedQueryResult,
|
|
217
|
+
queryPending: wrappedQueryPending,
|
|
218
|
+
queryError: wrappedQueryError,
|
|
161
219
|
});
|
|
162
220
|
set((state) => produce(state, (draft) => {
|
|
163
221
|
draft.mosaic.clients[options.id] = {
|
|
@@ -166,6 +224,7 @@ export function createMosaicSlice(props = {}) {
|
|
|
166
224
|
createdAt: Date.now(),
|
|
167
225
|
isLoading: true,
|
|
168
226
|
data: null,
|
|
227
|
+
error: undefined,
|
|
169
228
|
selection,
|
|
170
229
|
queryResultCallback: options.onQueryResult
|
|
171
230
|
? (result) => options.onQueryResult(toArrowClientResult(result))
|
|
@@ -174,24 +233,20 @@ export function createMosaicSlice(props = {}) {
|
|
|
174
233
|
}));
|
|
175
234
|
},
|
|
176
235
|
destroyClient(id) {
|
|
177
|
-
const {
|
|
236
|
+
const { clients } = get().mosaic;
|
|
178
237
|
const tracked = clients[id];
|
|
179
238
|
if (!tracked)
|
|
180
239
|
return;
|
|
181
|
-
|
|
182
|
-
connection.coordinator.disconnect(tracked.client);
|
|
183
|
-
}
|
|
240
|
+
tracked.client.destroy();
|
|
184
241
|
set((state) => produce(state, (draft) => {
|
|
185
242
|
delete draft.mosaic.clients[id];
|
|
186
243
|
}));
|
|
187
244
|
},
|
|
188
245
|
destroyAllClients() {
|
|
189
|
-
const {
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
});
|
|
194
|
-
}
|
|
246
|
+
const { clients } = get().mosaic;
|
|
247
|
+
Object.values(clients).forEach((tracked) => {
|
|
248
|
+
tracked.client.destroy();
|
|
249
|
+
});
|
|
195
250
|
set((state) => produce(state, (draft) => {
|
|
196
251
|
draft.mosaic.clients = {};
|
|
197
252
|
}));
|
|
@@ -199,6 +254,17 @@ export function createMosaicSlice(props = {}) {
|
|
|
199
254
|
},
|
|
200
255
|
}));
|
|
201
256
|
}
|
|
257
|
+
function applyMosaicPreAggregateOptions(mosaicCoordinator, options) {
|
|
258
|
+
if (!options) {
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
if (options.schema !== undefined) {
|
|
262
|
+
mosaicCoordinator.preaggregator.schema = options.schema;
|
|
263
|
+
}
|
|
264
|
+
if (options.enabled !== undefined) {
|
|
265
|
+
mosaicCoordinator.preaggregator.enabled = options.enabled;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
202
268
|
export function useStoreWithMosaic(selector) {
|
|
203
269
|
return useBaseRoomStore((state) => selector(state));
|
|
204
270
|
}
|