@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/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,OAAO,EACP,WAAW,EACX,UAAU,EACV,KAAK,EACL,SAAS,GACV,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAC,MAAM,qBAAqB,CAAC;AAElE,OAAO,EAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAC,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EACjB,iBAAiB,GAKlB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,cAAc,GAOf,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,oBAAoB,GAErB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,kBAAkB,GAEnB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,uBAAuB,GAExB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAC,iBAAiB,EAAC,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAC,eAAe,EAA8B,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EACL,2BAA2B,EAC3B,iBAAiB,GAElB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAE1C,sBAAsB;AACtB,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AAExD,2BAA2B;AAC3B,OAAO,EAAC,sBAAsB,EAAC,MAAM,8BAA8B,CAAC;AACpE,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,oBAAoB,EAAC,MAAM,+BAA+B,CAAC;AAgBnE,OAAO,EACL,qBAAqB,EACrB,gCAAgC,EAChC,mCAAmC,EACnC,oCAAoC,GACrC,MAAM,mBAAmB,CAAC;AAc3B,oCAAoC;AACpC,OAAO,EAAC,0BAA0B,EAAC,MAAM,2BAA2B,CAAC","sourcesContent":["/**\n * {@include ../README.md}\n * @packageDocumentation\n */\nexport {\n isParam,\n isSelection,\n makeClient,\n Param,\n Selection,\n} from '@uwdata/mosaic-core';\nexport {astToDOM, astToESM, parseSpec} from '@uwdata/mosaic-spec';\nexport type {Spec} from '@uwdata/mosaic-spec';\nexport {asc, column, desc, Query, sql} from '@uwdata/mosaic-sql';\nexport * as vg from '@uwdata/vgplot';\nexport {\n createDefaultMosaicConfig,\n createMosaicSlice,\n MosaicSliceConfig,\n type CreateMosaicSliceProps,\n type MosaicClientOptions,\n type MosaicSliceState,\n type TrackedClient,\n} from './MosaicSlice';\nexport {\n MosaicProfiler,\n type MosaicProfilerCompoundHeaderProps,\n type MosaicProfilerCompoundRowsProps,\n type MosaicProfilerCompoundStatusBarProps,\n type MosaicProfilerCompoundTableProps,\n type MosaicProfilerProps,\n type MosaicProfilerRootProps,\n} from './profiler/MosaicProfiler';\nexport {\n MosaicProfilerHeader,\n type MosaicProfilerHeaderProps,\n} from './profiler/MosaicProfilerHeader';\nexport {\n MosaicProfilerRows,\n type MosaicProfilerRowsProps,\n} from './profiler/MosaicProfilerRows';\nexport {\n MosaicProfilerStatusBar,\n type MosaicProfilerStatusBarProps,\n} from './profiler/MosaicProfilerStatusBar';\nexport {useMosaicProfiler} from './profiler/useMosaicProfiler';\nexport {useMosaicClient, type UseMosaicClientOptions} from './useMosaicClient';\nexport {\n createMosaicColorLegendPlot,\n MosaicColorLegend,\n type MosaicColorLegendProps,\n} from './MosaicColorLegend';\nexport {VgPlotChart} from './VgPlotChart';\n\n// Compound components\nexport {MosaicChart} from './MosaicChart';\nexport {MosaicChartBuilder} from './MosaicChartBuilder';\n\n// Editor hooks and context\nexport {useMosaicEditorContext} from './editor/MosaicEditorContext';\nexport {\n getCachedMosaicSchema,\n loadMosaicSchema,\n preloadMosaicSchema,\n} from './editor/mosaicSchema';\nexport {useMosaicChartEditor} from './editor/useMosaicChartEditor';\n\n// Editor types\nexport type {MosaicChartContainerProps} from './editor/MosaicChartContainer';\nexport type {MosaicChartDisplayProps} from './editor/MosaicChartDisplay';\nexport type {MosaicChartEditorActionsProps} from './editor/MosaicChartEditorActions';\nexport type {MosaicCodeMirrorEditorProps} from './editor/MosaicCodeMirrorEditor';\nexport type {MosaicSpecEditorPanelProps} from './editor/MosaicSpecEditorPanel';\nexport type {\n MosaicEditorActions,\n MosaicEditorContextValue,\n MosaicEditorState,\n OnMosaicSpecChange,\n UseMosaicChartEditorOptions,\n UseMosaicChartEditorReturn,\n} from './editor/types';\nexport {\n getProfilerTableWidth,\n PROFILER_DEFAULT_COLUMN_WIDTH_PX,\n PROFILER_ROW_NUMBER_COLUMN_WIDTH_PX,\n PROFILER_UNSUPPORTED_COLUMN_WIDTH_PX,\n} from './profiler/layout';\nexport type {\n MosaicProfilerCategoryBucket,\n MosaicProfilerCategorySummary,\n MosaicProfilerColumnKind,\n MosaicProfilerColumnState,\n MosaicProfilerHistogramSummary,\n MosaicProfilerOptions,\n MosaicProfilerPaginationState,\n MosaicProfilerSorting,\n MosaicProfilerSummaryState,\n UseMosaicProfilerReturn,\n} from './profiler/types';\n\n// Chart builder types and utilities\nexport {createDefaultChartBuilders} from './chart-builders/builders';\nexport type {ChartBuilderContentProps} from './chart-builders/ChartBuilderContent';\nexport type {ChartBuilderDialogProps} from './chart-builders/ChartBuilderDialog';\nexport type {FieldSelectorInputProps} from './chart-builders/FieldSelectorInput';\nexport type {\n ChartBuilderColumn,\n ChartBuilderField,\n ChartBuilderTemplate,\n} from './chart-builders/types';\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * {@include ../README.md}\n * @packageDocumentation\n */\nexport {\n isParam,\n isSelection,\n makeClient,\n Param,\n Selection,\n} from '@uwdata/mosaic-core';\nexport {astToDOM, astToESM, parseSpec} from '@uwdata/mosaic-spec';\nexport type {Spec} from '@uwdata/mosaic-spec';\nexport {asc, column, desc, Query, sql} from '@uwdata/mosaic-sql';\nexport * as vg from '@uwdata/vgplot';\nexport {\n MosaicDashboard,\n MosaicDashboardRoot,\n type MosaicDashboardProps,\n type MosaicDashboardRootProps,\n} from './dashboard/MosaicDashboard';\nexport {useMosaicDashboardContext} from './dashboard/MosaicDashboardContext';\nexport {DashboardPanelErrorBoundary} from './dashboard/DashboardPanelErrorBoundary';\nexport {createDefaultMosaicDashboardPanelRenderers} from './dashboard/defaultPanelRenderers';\nexport {\n createMosaicDashboardPanelConfig,\n createMosaicDashboardProfilerPanelConfig,\n createMosaicDashboardChartPanelConfig,\n createMosaicDashboardTextPanelConfig,\n createDefaultMosaicDashboardConfig,\n createMosaicDashboardSlice,\n getMosaicDashboardDockId,\n getMosaicDashboardGridId,\n getMosaicDashboardPanelId,\n getMosaicDashboardSelectionName,\n isChartPanelConfig,\n panelHasSource,\n MOSAIC_DASHBOARD_PANEL,\n MOSAIC_DASHBOARD_PROFILER_PANEL_TYPE,\n MOSAIC_DASHBOARD_CHART_PANEL_TYPE,\n MOSAIC_DASHBOARD_CHART_PANEL_TYPE as MOSAIC_DASHBOARD_VGPLOT_PANEL_TYPE,\n MOSAIC_DASHBOARD_TEXT_PANEL_TYPE,\n MosaicDashboardEntry,\n MosaicDashboardLayoutType,\n MosaicDashboardPanelConfig,\n MosaicDashboardPanelSource,\n MosaicDashboardSliceConfig,\n resolveMosaicDashboardPanelSource,\n useStoreWithMosaicDashboard,\n} from './dashboard/MosaicDashboardSlice';\nexport type {\n MosaicDashboardAddPanelAction,\n MosaicDashboardAddPanelActionContext,\n CreateMosaicDashboardSliceProps,\n MosaicDashboardEntry as MosaicDashboardEntryType,\n MosaicDashboardPanelConfig as MosaicDashboardPanelConfigType,\n MosaicDashboardPanelRenderer,\n MosaicDashboardPanelRendererProps,\n MosaicDashboardPanelSource as MosaicDashboardPanelSourceType,\n MosaicDashboardSliceConfig as MosaicDashboardSliceConfigType,\n MosaicDashboardSliceState,\n MosaicDashboardStoreState,\n ChartPanelConfig,\n TextPanel,\n TextPanelConfig,\n} from './dashboard/MosaicDashboardSlice';\nexport {\n createMosaicColorLegendPlot,\n MosaicColorLegend,\n type MosaicColorLegendProps,\n} from './MosaicColorLegend';\nexport {\n createDefaultMosaicConfig,\n createMosaicSlice,\n MosaicSliceConfig,\n type CreateMosaicSliceProps,\n type MosaicClientOptions,\n type MosaicPreAggregateOptions,\n type MosaicSliceState,\n type TrackedClient,\n} from './MosaicSlice';\nexport {\n MosaicProfiler,\n type MosaicProfilerCompoundHeaderProps,\n type MosaicProfilerCompoundRowsProps,\n type MosaicProfilerCompoundStatusBarProps,\n type MosaicProfilerCompoundTableProps,\n type MosaicProfilerProps,\n type MosaicProfilerRootProps,\n} from './profiler/MosaicProfiler';\nexport {\n MosaicProfilerHeader,\n type MosaicProfilerHeaderProps,\n} from './profiler/MosaicProfilerHeader';\nexport {\n MosaicProfilerRows,\n type MosaicProfilerRowsProps,\n} from './profiler/MosaicProfilerRows';\nexport {\n MosaicProfilerStatusBar,\n type MosaicProfilerStatusBarProps,\n} from './profiler/MosaicProfilerStatusBar';\nexport {useMosaicProfiler} from './profiler/useMosaicProfiler';\nexport {\n ResponsivePlot,\n type PlotSize,\n type ResponsivePlotProps,\n} from './ResponsivePlot';\nexport {useMosaicClient, type UseMosaicClientOptions} from './useMosaicClient';\nexport {VgPlotChart} from './VgPlotChart';\n\n// Compound components\nexport {MosaicChart} from './MosaicChart';\nexport {MosaicChartBuilder} from './MosaicChartBuilder';\n\n// Editor hooks and context\nexport {useMosaicEditorContext} from './editor/MosaicEditorContext';\nexport {\n getCachedMosaicSchema,\n loadMosaicSchema,\n preloadMosaicSchema,\n} from './editor/mosaicSchema';\nexport {useMosaicChartEditor} from './editor/useMosaicChartEditor';\n\n// Editor types\nexport type {MosaicChartContainerProps} from './editor/MosaicChartContainer';\nexport type {MosaicChartDisplayProps} from './editor/MosaicChartDisplay';\nexport type {MosaicChartEditorActionsProps} from './editor/MosaicChartEditorActions';\nexport type {MosaicCodeMirrorEditorProps} from './editor/MosaicCodeMirrorEditor';\nexport type {MosaicSpecEditorPanelProps} from './editor/MosaicSpecEditorPanel';\nexport type {\n MosaicEditorActions,\n MosaicEditorContextValue,\n MosaicEditorState,\n OnMosaicSpecChange,\n UseMosaicChartEditorOptions,\n UseMosaicChartEditorReturn,\n} from './editor/types';\nexport {\n getProfilerTableWidth,\n PROFILER_DEFAULT_COLUMN_WIDTH_PX,\n PROFILER_ROW_NUMBER_COLUMN_WIDTH_PX,\n PROFILER_UNSUPPORTED_COLUMN_WIDTH_PX,\n} from './profiler/layout';\nexport type {\n MosaicProfilerCategoryBucket,\n MosaicProfilerCategorySummary,\n MosaicProfilerColumnKind,\n MosaicProfilerColumnState,\n MosaicProfilerHistogramSummary,\n MosaicProfilerOptions,\n MosaicProfilerPaginationState,\n MosaicProfilerSorting,\n MosaicProfilerSummaryState,\n UseMosaicProfilerReturn,\n} from './profiler/types';\n\n// Chart builder components\nexport type {ChartBuilderActionsProps} from './chart-builders/ChartBuilderActions';\nexport {ChartBuilderActions} from './chart-builders/ChartBuilderActions';\nexport type {ChartBuilderContentProps} from './chart-builders/ChartBuilderContent';\nexport {ChartBuilderContent} from './chart-builders/ChartBuilderContent';\nexport {\n useChartBuilderContext,\n useChartBuilderStore,\n} from './chart-builders/ChartBuilderContext';\nexport type {ChartBuilderContextValue} from './chart-builders/ChartBuilderContext';\nexport type {\n ChartBuilderDialogContentProps,\n ChartBuilderDialogProps,\n ChartBuilderTriggerProps,\n} from './chart-builders/ChartBuilderDialog';\nexport {\n ChartBuilderDialogContent,\n ChartBuilderTrigger,\n} from './chart-builders/ChartBuilderDialog';\nexport type {ChartBuilderRootProps} from './chart-builders/ChartBuilderRoot';\nexport {ChartBuilderRoot} from './chart-builders/ChartBuilderRoot';\nexport type {ChartBuilderFieldsProps} from './chart-builders/ChartBuilderFields';\nexport {ChartBuilderFields} from './chart-builders/ChartBuilderFields';\nexport type {ChartBuilderTypeGridProps} from './chart-builders/ChartBuilderTypeGrid';\nexport {ChartBuilderTypeGrid} from './chart-builders/ChartBuilderTypeGrid';\nexport {buildChartTitleForSpec} from './chart-builders/chartSpecTitle';\nexport {\n boxPlotChartType,\n bubbleChartChartType,\n countPlotChartType,\n createDefaultChartTypes,\n customSpecChartType,\n heatmapChartType,\n histogramChartType,\n isSpecChartType,\n isComponentChartType,\n lineChartChartType,\n mosaicChartTypes,\n ChartConfig,\n HistogramChartSettings,\n LineChartSettings,\n CountPlotChartSettings,\n BubbleChartSettings,\n HeatmapChartSettings,\n BoxPlotChartSettings,\n // Tool helpers, parameters, and AI tool creators\n BaseChartToolParameters,\n validateColumnExists,\n HistogramToolParameters,\n LineChartToolParameters,\n CountPlotToolParameters,\n HeatmapToolParameters,\n BubbleChartToolParameters,\n BoxPlotToolParameters,\n createHistogramAiTool,\n createLineChartAiTool,\n createCountPlotAiTool,\n createHeatmapAiTool,\n createBubbleChartAiTool,\n createBoxPlotAiTool,\n createChartTools,\n} from './chart-types';\nexport type {\n ChartSettings,\n ChartType,\n ChartToolDeps,\n ChartToolExecutionContext,\n ResolvedChartResources,\n CreateChartParams,\n CreateChartResult,\n HistogramToolParams,\n LineChartToolParams,\n CountPlotToolParams,\n HeatmapToolParams,\n BubbleChartToolParams,\n BoxPlotToolParams,\n} from './chart-types';\nexport {\n buildChartTypeTitle,\n canCreateChartFromType,\n NUMERIC_COLUMN_TYPES,\n QUANTITATIVE_COLUMN_TYPES,\n TEMPORAL_COLUMN_TYPES,\n} from './chart-builders/chartTypeUtils';\nexport type {FieldSelectorInputProps} from './chart-builders/FieldSelectorInput';\nexport type {\n ChartBuilderColumn,\n ChartBuilderDashboardPanelOutput,\n ChartBuilderField,\n ChartSpec,\n ChartTypeDefinition,\n} from './chart-types/base-types';\nexport {MosaicCodeMirrorEditor} from './editor/MosaicCodeMirrorEditor';\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { type MosaicDashboardPanelRenderer, ProfilerPanel } from '../dashboard/MosaicDashboardSlice';
|
|
2
|
+
export declare const mosaicDashboardProfilerPanelRenderer: MosaicDashboardPanelRenderer<ProfilerPanel>;
|
|
3
|
+
//# sourceMappingURL=MosaicDashboardProfilerPanelRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MosaicDashboardProfilerPanelRenderer.d.ts","sourceRoot":"","sources":["../../src/profiler/MosaicDashboardProfilerPanelRenderer.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,4BAA4B,EACjC,aAAa,EAGd,MAAM,mCAAmC,CAAC;AAyD3C,eAAO,MAAM,oCAAoC,EAAE,4BAA4B,CAAC,aAAa,CAI1F,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { SpinnerPane } from '@sqlrooms/ui';
|
|
3
|
+
import { TablePropertiesIcon } from 'lucide-react';
|
|
4
|
+
import { MosaicProfiler } from './MosaicProfiler';
|
|
5
|
+
import { useStoreWithMosaicDashboard, } from '../dashboard/MosaicDashboardSlice';
|
|
6
|
+
function MosaicDashboardProfilerRenderer({ panel, resolvedSource, selectionName, }) {
|
|
7
|
+
const connection = useStoreWithMosaicDashboard((state) => state.mosaic.connection);
|
|
8
|
+
const tableName = resolvedSource?.tableName;
|
|
9
|
+
const pageSize = typeof panel.config.pageSize === 'number'
|
|
10
|
+
? panel.config.pageSize
|
|
11
|
+
: undefined;
|
|
12
|
+
if (!tableName) {
|
|
13
|
+
return (_jsx("div", { className: "text-muted-foreground flex h-full items-center justify-center p-4 text-sm", children: "Profiler panels require a table source." }));
|
|
14
|
+
}
|
|
15
|
+
if (connection.status === 'loading') {
|
|
16
|
+
return _jsx(SpinnerPane, { className: "h-full w-full" });
|
|
17
|
+
}
|
|
18
|
+
if (connection.status !== 'ready') {
|
|
19
|
+
return (_jsx("div", { className: "text-muted-foreground flex h-full items-center justify-center p-4 text-sm", children: "Mosaic connection is not ready." }));
|
|
20
|
+
}
|
|
21
|
+
const profilerProps = {
|
|
22
|
+
tableName,
|
|
23
|
+
pageSize: pageSize ?? 10,
|
|
24
|
+
selectionName,
|
|
25
|
+
};
|
|
26
|
+
return (_jsx(MosaicProfiler, { ...profilerProps, children: _jsxs("div", { className: "flex h-full min-h-0 flex-col", children: [_jsx("div", { className: "min-h-0 flex-1 overflow-auto", children: _jsxs(MosaicProfiler.Table, { children: [_jsx(MosaicProfiler.Header, {}), _jsx(MosaicProfiler.Rows, {})] }) }), _jsx(MosaicProfiler.StatusBar, {})] }) }));
|
|
27
|
+
}
|
|
28
|
+
export const mosaicDashboardProfilerPanelRenderer = {
|
|
29
|
+
component: MosaicDashboardProfilerRenderer,
|
|
30
|
+
icon: TablePropertiesIcon,
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=MosaicDashboardProfilerPanelRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MosaicDashboardProfilerPanelRenderer.js","sourceRoot":"","sources":["../../src/profiler/MosaicDashboardProfilerPanelRenderer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AACzC,OAAO,EAAC,mBAAmB,EAAC,MAAM,cAAc,CAAC;AACjD,OAAO,EAAC,cAAc,EAA2B,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAIL,2BAA2B,GAC5B,MAAM,mCAAmC,CAAC;AAE3C,SAAS,+BAA+B,CAAC,EACvC,KAAK,EACL,cAAc,EACd,aAAa,GACc;IAC3B,MAAM,UAAU,GAAG,2BAA2B,CAC5C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CACnC,CAAC;IACF,MAAM,SAAS,GAAG,cAAc,EAAE,SAAS,CAAC;IAC5C,MAAM,QAAQ,GACZ,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,KAAK,QAAQ;QACvC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ;QACvB,CAAC,CAAC,SAAS,CAAC;IAEhB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CACL,cAAK,SAAS,EAAC,2EAA2E,wDAEpF,CACP,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACpC,OAAO,KAAC,WAAW,IAAC,SAAS,EAAC,eAAe,GAAG,CAAC;IACnD,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAClC,OAAO,CACL,cAAK,SAAS,EAAC,2EAA2E,gDAEpF,CACP,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG;QACpB,SAAS;QACT,QAAQ,EAAE,QAAQ,IAAI,EAAE;QACxB,aAAa;KACgB,CAAC;IAEhC,OAAO,CACL,KAAC,cAAc,OAAK,aAAa,YAC/B,eAAK,SAAS,EAAC,8BAA8B,aAC3C,cAAK,SAAS,EAAC,8BAA8B,YAC3C,MAAC,cAAc,CAAC,KAAK,eACnB,KAAC,cAAc,CAAC,MAAM,KAAG,EACzB,KAAC,cAAc,CAAC,IAAI,KAAG,IACF,GACnB,EACN,KAAC,cAAc,CAAC,SAAS,KAAG,IACxB,GACS,CAClB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,oCAAoC,GAC/C;IACE,SAAS,EAAE,+BAA+B;IAC1C,IAAI,EAAE,mBAAmB;CAC1B,CAAC","sourcesContent":["import {SpinnerPane} from '@sqlrooms/ui';\nimport {TablePropertiesIcon} from 'lucide-react';\nimport {MosaicProfiler, type MosaicProfilerProps} from './MosaicProfiler';\nimport {\n type MosaicDashboardPanelRenderer,\n ProfilerPanel,\n type ProfilerPanelRendererProps,\n useStoreWithMosaicDashboard,\n} from '../dashboard/MosaicDashboardSlice';\n\nfunction MosaicDashboardProfilerRenderer({\n panel,\n resolvedSource,\n selectionName,\n}: ProfilerPanelRendererProps) {\n const connection = useStoreWithMosaicDashboard(\n (state) => state.mosaic.connection,\n );\n const tableName = resolvedSource?.tableName;\n const pageSize =\n typeof panel.config.pageSize === 'number'\n ? panel.config.pageSize\n : undefined;\n\n if (!tableName) {\n return (\n <div className=\"text-muted-foreground flex h-full items-center justify-center p-4 text-sm\">\n Profiler panels require a table source.\n </div>\n );\n }\n\n if (connection.status === 'loading') {\n return <SpinnerPane className=\"h-full w-full\" />;\n }\n\n if (connection.status !== 'ready') {\n return (\n <div className=\"text-muted-foreground flex h-full items-center justify-center p-4 text-sm\">\n Mosaic connection is not ready.\n </div>\n );\n }\n\n const profilerProps = {\n tableName,\n pageSize: pageSize ?? 10,\n selectionName,\n } satisfies MosaicProfilerProps;\n\n return (\n <MosaicProfiler {...profilerProps}>\n <div className=\"flex h-full min-h-0 flex-col\">\n <div className=\"min-h-0 flex-1 overflow-auto\">\n <MosaicProfiler.Table>\n <MosaicProfiler.Header />\n <MosaicProfiler.Rows />\n </MosaicProfiler.Table>\n </div>\n <MosaicProfiler.StatusBar />\n </div>\n </MosaicProfiler>\n );\n}\n\nexport const mosaicDashboardProfilerPanelRenderer: MosaicDashboardPanelRenderer<ProfilerPanel> =\n {\n component: MosaicDashboardProfilerRenderer,\n icon: TablePropertiesIcon,\n };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMosaicProfiler.d.ts","sourceRoot":"","sources":["../../src/profiler/useMosaicProfiler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useMosaicProfiler.d.ts","sourceRoot":"","sources":["../../src/profiler/useMosaicProfiler.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAEV,qBAAqB,EAGrB,uBAAuB,EACxB,MAAM,SAAS,CAAC;AAuajB;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,qBAAqB,GAC7B,uBAAuB,CAqGzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMosaicProfiler.js","sourceRoot":"","sources":["../../src/profiler/useMosaicProfiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AACzC,OAAO,EACL,SAAS,IAAI,eAAe,GAE7B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,SAAS,EACT,OAAO,EACP,QAAQ,GAGT,MAAM,OAAO,CAAC;AACf,OAAO,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAC;AACjC,OAAO,EAAwB,kBAAkB,EAAC,MAAM,gBAAgB,CAAC;AAQzE,OAAO,EACL,mBAAmB,GAGpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,6BAA6B,EAC7B,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,gCAAgC,GACjC,MAAM,SAAS,CAAC;AA+BjB;;;GAGG;AACH,SAAS,mBAAmB,CAAC,SAAoB;IAC/C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE1C,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC5D,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAClD,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACpE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,SAAS,oBAAoB,CAC3B,OAAmE;IAEnE,MAAM,EAAC,SAAS,EAAE,iBAAiB,EAAE,aAAa,EAAC,GAAG,OAAO,CAAC;IAC9D,MAAM,sBAAsB,GAAG,OAAO,CACpC,GAAG,EAAE,CAAC,mBAAmB,QAAQ,EAAE,EAAE,EACrC,EAAE,CACH,CAAC;IACF,MAAM,YAAY,GAAG,aAAa,IAAI,sBAAsB,CAAC;IAC7D,MAAM,iBAAiB,GAAG,kBAAkB,CAC1C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CACjD,CAAC;IACF,MAAM,YAAY,GAAG,kBAAkB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAC9E,MAAM,CAAC,iBAAiB,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,CAAC;IAE1E,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,iBAAiB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC7C,YAAY,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC,EAAE,CAAC,iBAAiB,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC,CAAC;IAEvE,MAAM,SAAS,GACb,iBAAiB,IAAI,iBAAiB,IAAI,iBAAiB,CAAC;IAE9D,OAAO;QACL,SAAS;QACT,gBAAgB,EAAE,mBAAmB,CAAC,SAAS,CAAC;KACjD,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAAC,OAG9B;IACC,MAAM,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CACpC,mBAAmB,CAAC;QAClB,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CAAC,CACH,CAAC;IAEF,OAAO;QACL,aAAa,EAAE,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC;QACtE,qBAAqB,EAAE,QAAQ,CAC7B,aAAa,EACb,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,qBAAqB,CACvC;QACD,IAAI,EAAE,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;QACpD,UAAU,EAAE,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;QAChE,aAAa;QACb,MAAM,EAAE,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;QACxD,aAAa,EAAE,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC;QACtE,UAAU,EAAE,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;QAChE,OAAO,EAAE,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;QAC1D,SAAS,EAAE,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;QAC9D,UAAU,EAAE,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;KACjE,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAAC,OAQ9B;IACC,MAAM,EACJ,UAAU,EACV,mBAAmB,EACnB,MAAM,EACN,SAAS,EACT,gBAAgB,EAChB,OAAO,EACP,SAAS,GACV,GAAG,OAAO,CAAC;IACZ,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9E,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE;QAC1B,KAAK,gBAAgB,CAAC;QACtB,OAAO,SAAS,CAAC,SAAS,EAAE,CAAC;IAC/B,CAAC,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE;QAC7B,KAAK,mBAAmB,CAAC;QACzB,OAAO,SAAS,CAAC,SAAS,EAAE,CAAC;IAC/B,CAAC,EAAE,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,OAAO,CACvB,GAAG,EAAE,CACH,sBAAsB,CAAC;QACrB,OAAO,EAAE,UAAU;QACnB,MAAM;QACN,OAAO;QACP,SAAS;KACV,CAAC,EACJ,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CACzC,CAAC;IACF,MAAM,aAAa,GAAG,OAAO,CAC3B,GAAG,EAAE,CACH,sBAAsB,CAAC;QACrB,OAAO,EAAE,UAAU;QACnB,MAAM,EAAE,SAAS;QACjB,OAAO;QACP,SAAS;KACV,CAAC,EACJ,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAC5C,CAAC;IAEF,OAAO;QACL,SAAS;QACT,SAAS,EAAE,CAAC,SAAS,EAAE,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;QACpD,UAAU;QACV,MAAM;QACN,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QACvE,SAAS,EAAE,sBAAsB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,QAAQ,EAAE;QACvE,SAAS;KACV,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAAC,OAe9B;IACC,MAAM,EACJ,aAAa,EACb,OAAO,EACP,UAAU,EACV,UAAU,EACV,MAAM,EACN,QAAQ,EACR,UAAU,EACV,aAAa,EACb,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,OAAO,EACP,WAAW,EACX,SAAS,GACV,GAAG,OAAO,CAAC;IAEZ,SAAS,CAAC,GAAG,EAAE;QACb,aAAa,CAAC,QAAQ,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;IAE9B,SAAS,CAAC,GAAG,EAAE;QACb,aAAa,CAAC,QAAQ,EAAE,CAAC,cAAc,EAAE,CAAC;IAC5C,CAAC,EAAE,CAAC,aAAa,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC,CAAC;IAEjD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,UAAU,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;YAChD,aAAa,CAAC,QAAQ,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;YAC9C,aAAa,CAAC,QAAQ,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YACnD,aAAa;iBACV,QAAQ,EAAE;iBACV,gBAAgB,CAAC,UAAU,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;YACrD,OAAO;QACT,CAAC;QAED,KAAK,kBAAkB,CAAC;YACtB,OAAO;YACP,WAAW,EAAE,UAAU,CAAC,WAAW;YACnC,KAAK,EAAE,aAAa;YACpB,SAAS;SACV,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC;IAEpD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,UAAU,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACtE,aAAa,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;YACrD,OAAO;QACT,CAAC;QAED,OAAO,yBAAyB,CAAC;YAC/B,UAAU;YACV,UAAU;YACV,MAAM,EAAE,SAAS;YACjB,UAAU;YACV,OAAO;YACP,KAAK,EAAE,aAAa;YACpB,SAAS;SACV,CAAC,CAAC;IACL,CAAC,EAAE;QACD,UAAU;QACV,UAAU;QACV,UAAU;QACV,aAAa;QACb,SAAS;QACT,OAAO;QACP,SAAS;KACV,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,UAAU,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;YAChD,aAAa,CAAC,QAAQ,EAAE,CAAC,gBAAgB,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;YAC9D,OAAO;QACT,CAAC;QAED,OAAO,0BAA0B,CAAC;YAChC,UAAU;YACV,YAAY,EAAE,IAAI;YAClB,SAAS;YACT,KAAK,EAAE,aAAa;YACpB,SAAS;YACT,MAAM,EAAE,UAAU;SACnB,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IAEtD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,UAAU,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;YAChD,aAAa,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;YAC3D,OAAO;QACT,CAAC;QAED,OAAO,0BAA0B,CAAC;YAChC,UAAU;YACV,KAAK,EAAE,aAAa;YACpB,SAAS;YACT,MAAM,EAAE,OAAO;SAChB,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC;IAE3C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,UAAU,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACpD,aAAa,CAAC,QAAQ,EAAE,CAAC,cAAc,EAAE,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,OAAO,6BAA6B,CAAC;YACnC,aAAa;YACb,UAAU;YACV,MAAM;YACN,SAAS;YACT,KAAK,EAAE,aAAa;YACpB,WAAW;YACX,SAAS;SACV,CAAC,CAAC;IACL,CAAC,EAAE;QACD,aAAa;QACb,UAAU;QACV,MAAM;QACN,aAAa;QACb,SAAS;QACT,WAAW;QACX,SAAS;KACV,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CAAC,OAG3B;IACC,MAAM,EAAC,MAAM,EAAE,SAAS,EAAC,GAAG,OAAO,CAAC;IAEpC,OAAO,OAAO,CACZ,GAAG,EAAE,CACH,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACrB,KAAK;QACL,IAAI,EAAE,gCAAgC,CAAC,KAAK,CAAC,IAAI,CAAC;YAChD,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC;gBACnC,CAAC,CAAC,WAAW;gBACb,CAAC,CAAC,UAAU;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,KAAK,CAAC;KACjE,CAAC,CAAC,EACL,CAAC,MAAM,EAAE,SAAS,CAAC,CACpB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,OAO1B;IACC,MAAM,EAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAC,GAAG,OAAO,CAAC;IAC7E,MAAM,+BAA+B,GACnC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAErE,OAAO;QACL,SAAS,EACP,MAAM,CAAC,SAAS;YAChB,IAAI,CAAC,SAAS;YACd,aAAa,CAAC,SAAS;YACvB,UAAU,CAAC,SAAS;YACpB,+BAA+B;YAC/B,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;QAC/D,UAAU,EACR,MAAM,CAAC,KAAK;YACZ,IAAI,CAAC,KAAK;YACV,aAAa,CAAC,KAAK;YACnB,UAAU,CAAC,KAAK;YAChB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK;KACnE,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,2BAA2B,CAAC,OAMpC;IACC,MAAM,EACJ,qBAAqB,EACrB,IAAI,EACJ,aAAa,EACb,mBAAmB,EACnB,gBAAgB,GACjB,GAAG,OAAO,CAAC;IACZ,MAAM,iBAAiB,GAAG,gBAAgB,KAAK,mBAAmB,CAAC;IACnE,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC;IACtE,MAAM,wBAAwB,GAC5B,CAAC,CAAC,qBAAqB;QACvB,qBAAqB,CAAC,SAAS,KAAK,aAAa,CAAC;IACpD,MAAM,kBAAkB,GACtB,CAAC,IAAI,CAAC,SAAS;QACf,CAAC,iBAAiB;QAClB,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC;IACpD,MAAM,eAAe,GAAG,WAAW,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IAE7D,IAAI,cAAc,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,OAAO,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,SAAS,CAAC;AAC5E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAA8B;IAE9B,MAAM,EACJ,aAAa,GAAG,EAAE,EAClB,OAAO,EACP,cAAc,GAAG,EAAE,EACnB,QAAQ,GAAG,GAAG,EACd,SAAS,EAAE,iBAAiB,EAC5B,aAAa,EACb,WAAW,GAAG,EAAE,EAChB,SAAS,GACV,GAAG,OAAO,CAAC;IAEZ,MAAM,UAAU,GAAG,kBAAkB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC1E,MAAM,EAAC,SAAS,EAAE,gBAAgB,EAAC,GAAG,oBAAoB,CAAC;QACzD,SAAS,EAAE,iBAAiB;QAC5B,aAAa;KACd,CAAC,CAAC;IACH,MAAM,mBAAmB,GAAG,WAAW,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IAC/D,MAAM,EACJ,aAAa,EACb,qBAAqB,EACrB,IAAI,EACJ,UAAU,EACV,aAAa,EACb,MAAM,EACN,aAAa,EACb,UAAU,EACV,OAAO,EACP,SAAS,EACT,UAAU,GACX,GAAG,qBAAqB,CAAC;QACxB,cAAc;QACd,QAAQ;KACT,CAAC,CAAC;IACH,MAAM,EACJ,SAAS,EACT,SAAS,EACT,UAAU,EACV,MAAM,EACN,UAAU,EACV,SAAS,EACT,SAAS,GACV,GAAG,qBAAqB,CAAC;QACxB,UAAU;QACV,mBAAmB;QACnB,MAAM;QACN,SAAS;QACT,gBAAgB;QAChB,OAAO;QACP,SAAS;KACV,CAAC,CAAC;IACH,qBAAqB,CAAC;QACpB,aAAa;QACb,OAAO;QACP,UAAU;QACV,UAAU;QACV,MAAM;QACN,QAAQ;QACR,UAAU;QACV,aAAa;QACb,SAAS;QACT,SAAS;QACT,gBAAgB;QAChB,OAAO;QACP,WAAW;QACX,SAAS;KACV,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,EAAC,MAAM,EAAE,SAAS,EAAC,CAAC,CAAC;IAChE,MAAM,EAAC,SAAS,EAAE,UAAU,EAAC,GAAG,iBAAiB,CAAC;QAChD,MAAM;QACN,aAAa;QACb,IAAI;QACJ,MAAM;QACN,SAAS;QACT,UAAU;KACX,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,2BAA2B,CAAC;QAC9C,qBAAqB;QACrB,IAAI;QACJ,aAAa,EAAE,SAAS;QACxB,mBAAmB;QACnB,gBAAgB;KACjB,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,eAAe;QACxB,gBAAgB,EAAE,aAAa,CAAC,KAAK;QACrC,UAAU;QACV,SAAS;QACT,SAAS;QACT,SAAS,EAAE,WAAW;QACtB,UAAU;QACV,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE;QAC9B,SAAS;QACT,aAAa;QACb,UAAU;QACV,OAAO;QACP,GAAG,EAAE,SAAS,CAAC,QAAQ,EAAE;QACzB,UAAU;QACV,aAAa,EAAE,UAAU,CAAC,KAAK;KAChC,CAAC;AACJ,CAAC","sourcesContent":["import {createId} from '@paralleldrive/cuid2';\nimport {useDebounce} from '@sqlrooms/ui';\nimport {\n Selection as MosaicSelection,\n type Selection,\n} from '@uwdata/mosaic-core';\nimport {\n useEffect,\n useMemo,\n useState,\n type Dispatch,\n type SetStateAction,\n} from 'react';\nimport {useStore} from 'zustand';\nimport {type MosaicSliceState, useStoreWithMosaic} from '../MosaicSlice';\nimport type {\n MosaicProfilerColumnState,\n MosaicProfilerOptions,\n MosaicProfilerPaginationState,\n MosaicProfilerSorting,\n UseMosaicProfilerReturn,\n} from './types';\nimport {\n createProfilerStore,\n type ProfilerStore,\n type ProfilerStoreState,\n} from './createProfilerStore';\nimport {\n connectProfilerCountClient,\n connectProfilerPageClient,\n connectProfilerSummaryClients,\n loadProfilerSchema,\n} from './profilerController';\nimport {\n buildProfilerBaseQuery,\n buildProfilerPageQuery,\n createEmptySummaryState,\n isProfilerHistogramType,\n isProfilerUnsupportedSummaryType,\n} from './utils';\n\ntype ProfilerSelectionState = {\n selection: Selection;\n selectionVersion: number;\n};\n\ntype ProfilerStoreSlice = {\n filteredCount: ProfilerStoreState['filteredCount'];\n lastNonEmptyPageTable: ProfilerStoreState['lastNonEmptyPageTable'];\n page: ProfilerStoreState['page'];\n pagination: MosaicProfilerPaginationState;\n profilerStore: ProfilerStore;\n schema: ProfilerStoreState['schema'];\n setPagination: Dispatch<SetStateAction<MosaicProfilerPaginationState>>;\n setSorting: Dispatch<SetStateAction<MosaicProfilerSorting>>;\n sorting: MosaicProfilerSorting;\n summaries: ProfilerStoreState['summaries'];\n totalCount: ProfilerStoreState['totalCount'];\n};\n\ntype ProfilerQueryState = {\n baseQuery: ReturnType<typeof buildProfilerBaseQuery>;\n datasetId: string;\n fieldNames: string[];\n fields: ProfilerStoreState['schema']['fields'];\n hasFilters: boolean;\n pageQuery: string;\n rowFilter: ReturnType<Selection['predicate']>;\n};\n\n/**\n * Tracks Mosaic selection updates as a monotonically increasing version so\n * memoized queries and lifecycle effects can respond to crossfilter changes.\n */\nfunction useSelectionVersion(selection: Selection) {\n const [version, setVersion] = useState(0);\n\n useEffect(() => {\n const handleChange = () => setVersion((value) => value + 1);\n selection.addEventListener('value', handleChange);\n return () => selection.removeEventListener('value', handleChange);\n }, [selection]);\n\n return version;\n}\n\n/**\n * Resolves the profiler selection, creating a crossfilter selection when the\n * caller does not supply one, and exposes a version that changes with it.\n */\nfunction useProfilerSelection(\n options: Pick<MosaicProfilerOptions, 'selection' | 'selectionName'>,\n): ProfilerSelectionState {\n const {selection: providedSelection, selectionName} = options;\n const generatedSelectionName = useMemo(\n () => `mosaic-profiler-${createId()}`,\n [],\n );\n const selectionKey = selectionName ?? generatedSelectionName;\n const existingSelection = useStoreWithMosaic(\n (state) => state.mosaic.selections[selectionKey],\n );\n const getSelection = useStoreWithMosaic((state) => state.mosaic.getSelection);\n const [fallbackSelection] = useState(() => MosaicSelection.crossfilter());\n\n useEffect(() => {\n if (!providedSelection && !existingSelection) {\n getSelection(selectionKey, 'crossfilter');\n }\n }, [existingSelection, getSelection, providedSelection, selectionKey]);\n\n const selection =\n providedSelection ?? existingSelection ?? fallbackSelection;\n\n return {\n selection,\n selectionVersion: useSelectionVersion(selection),\n };\n}\n\n/**\n * Creates the per-profiler local store and subscribes to the raw state slices\n * that the public profiler hook exposes.\n */\nfunction useProfilerStoreState(options: {\n initialSorting: MosaicProfilerSorting;\n pageSize: number;\n}): ProfilerStoreSlice {\n const [profilerStore] = useState(() =>\n createProfilerStore({\n initialSorting: options.initialSorting,\n pageSize: options.pageSize,\n }),\n );\n\n return {\n filteredCount: useStore(profilerStore, (state) => state.filteredCount),\n lastNonEmptyPageTable: useStore(\n profilerStore,\n (state) => state.lastNonEmptyPageTable,\n ),\n page: useStore(profilerStore, (state) => state.page),\n pagination: useStore(profilerStore, (state) => state.pagination),\n profilerStore,\n schema: useStore(profilerStore, (state) => state.schema),\n setPagination: useStore(profilerStore, (state) => state.setPagination),\n setSorting: useStore(profilerStore, (state) => state.setSorting),\n sorting: useStore(profilerStore, (state) => state.sorting),\n summaries: useStore(profilerStore, (state) => state.summaries),\n totalCount: useStore(profilerStore, (state) => state.totalCount),\n };\n}\n\n/**\n * Derives the profiler's field and SQL state from the current schema,\n * selection, sorting, and pagination state.\n */\nfunction useProfilerQueryState(options: {\n pagination: MosaicProfilerPaginationState;\n rowSelectionVersion: number;\n schema: ProfilerStoreState['schema'];\n selection: Selection;\n selectionVersion: number;\n sorting: MosaicProfilerSorting;\n tableName: string;\n}): ProfilerQueryState {\n const {\n pagination,\n rowSelectionVersion,\n schema,\n selection,\n selectionVersion,\n sorting,\n tableName,\n } = options;\n const fields = schema.fields;\n const fieldNames = useMemo(() => fields.map((field) => field.name), [fields]);\n const filter = useMemo(() => {\n void selectionVersion;\n return selection.predicate();\n }, [selection, selectionVersion]);\n const rowFilter = useMemo(() => {\n void rowSelectionVersion;\n return selection.predicate();\n }, [rowSelectionVersion, selection]);\n const baseQuery = useMemo(\n () =>\n buildProfilerBaseQuery({\n columns: fieldNames,\n filter,\n sorting,\n tableName,\n }),\n [fieldNames, filter, sorting, tableName],\n );\n const pageBaseQuery = useMemo(\n () =>\n buildProfilerBaseQuery({\n columns: fieldNames,\n filter: rowFilter,\n sorting,\n tableName,\n }),\n [fieldNames, rowFilter, sorting, tableName],\n );\n\n return {\n baseQuery,\n datasetId: [tableName, ...fieldNames].join('\\u0001'),\n fieldNames,\n fields,\n hasFilters: Array.isArray(filter) ? filter.length > 0 : Boolean(filter),\n pageQuery: buildProfilerPageQuery(pageBaseQuery, pagination).toString(),\n rowFilter,\n };\n}\n\n/**\n * Owns the coordinator-backed schema, row, count, and summary client\n * lifecycles for a profiler instance.\n */\nfunction useProfilerLifecycles(options: {\n categoryLimit: number;\n columns?: string[];\n connection: MosaicSliceState['mosaic']['connection'];\n fieldNames: string[];\n fields: ProfilerStoreState['schema']['fields'];\n pageSize: number;\n pagination: MosaicProfilerPaginationState;\n profilerStore: ProfilerStore;\n rowFilter: ReturnType<Selection['predicate']>;\n selection: Selection;\n selectionVersion: number;\n sorting: MosaicProfilerSorting;\n summaryBins: number;\n tableName: string;\n}) {\n const {\n categoryLimit,\n columns,\n connection,\n fieldNames,\n fields,\n pageSize,\n pagination,\n profilerStore,\n rowFilter,\n selection,\n selectionVersion,\n sorting,\n summaryBins,\n tableName,\n } = options;\n\n useEffect(() => {\n profilerStore.getState().syncPageSize(pageSize);\n }, [pageSize, profilerStore]);\n\n useEffect(() => {\n profilerStore.getState().resetPageIndex();\n }, [profilerStore, selectionVersion, tableName]);\n\n useEffect(() => {\n if (connection.status !== 'ready' || !tableName) {\n profilerStore.getState().setSchemaSuccess([]);\n profilerStore.getState().setSchemaError(undefined);\n profilerStore\n .getState()\n .setSchemaLoading(connection.status === 'loading');\n return;\n }\n\n void loadProfilerSchema({\n columns,\n coordinator: connection.coordinator,\n store: profilerStore,\n tableName,\n });\n }, [columns, connection, profilerStore, tableName]);\n\n useEffect(() => {\n if (connection.status !== 'ready' || !tableName || !fieldNames.length) {\n profilerStore.getState().setPage({isLoading: false});\n return;\n }\n\n return connectProfilerPageClient({\n connection,\n fieldNames,\n filter: rowFilter,\n pagination,\n sorting,\n store: profilerStore,\n tableName,\n });\n }, [\n connection,\n fieldNames,\n pagination,\n profilerStore,\n rowFilter,\n sorting,\n tableName,\n ]);\n\n useEffect(() => {\n if (connection.status !== 'ready' || !tableName) {\n profilerStore.getState().setFilteredCount({isLoading: false});\n return;\n }\n\n return connectProfilerCountClient({\n connection,\n filterStable: true,\n selection,\n store: profilerStore,\n tableName,\n target: 'filtered',\n });\n }, [connection, profilerStore, selection, tableName]);\n\n useEffect(() => {\n if (connection.status !== 'ready' || !tableName) {\n profilerStore.getState().setTotalCount({isLoading: false});\n return;\n }\n\n return connectProfilerCountClient({\n connection,\n store: profilerStore,\n tableName,\n target: 'total',\n });\n }, [connection, profilerStore, tableName]);\n\n useEffect(() => {\n if (connection.status !== 'ready' || !fields.length) {\n profilerStore.getState().clearSummaries();\n return;\n }\n\n return connectProfilerSummaryClients({\n categoryLimit,\n connection,\n fields,\n selection,\n store: profilerStore,\n summaryBins,\n tableName,\n });\n }, [\n categoryLimit,\n connection,\n fields,\n profilerStore,\n selection,\n summaryBins,\n tableName,\n ]);\n}\n\n/**\n * Maps the schema fields and summary state into the column model consumed by\n * the profiler header and summary cells.\n */\nfunction useProfilerColumns(options: {\n fields: ProfilerStoreState['schema']['fields'];\n summaries: ProfilerStoreState['summaries'];\n}) {\n const {fields, summaries} = options;\n\n return useMemo<MosaicProfilerColumnState[]>(\n () =>\n fields.map((field) => ({\n field,\n kind: isProfilerUnsupportedSummaryType(field.type)\n ? 'unsupported'\n : isProfilerHistogramType(field.type)\n ? 'histogram'\n : 'category',\n name: field.name,\n summary: summaries[field.name] ?? createEmptySummaryState(field),\n })),\n [fields, summaries],\n );\n}\n\n/**\n * Collapses the aggregated profiler client state into the loading and error\n * signals exposed from the public hook.\n */\nfunction useProfilerStatus(options: {\n filteredCount: ProfilerStoreState['filteredCount'];\n fields: ProfilerStoreState['schema']['fields'];\n page: ProfilerStoreState['page'];\n schema: ProfilerStoreState['schema'];\n summaries: ProfilerStoreState['summaries'];\n totalCount: ProfilerStoreState['totalCount'];\n}) {\n const {fields, filteredCount, page, schema, summaries, totalCount} = options;\n const hasPendingSummaryInitialization =\n fields.length > 0 && Object.keys(summaries).length < fields.length;\n\n return {\n isLoading:\n schema.isLoading ||\n page.isLoading ||\n filteredCount.isLoading ||\n totalCount.isLoading ||\n hasPendingSummaryInitialization ||\n Object.values(summaries).some((summary) => summary.isLoading),\n tableError:\n schema.error ??\n page.error ??\n filteredCount.error ??\n totalCount.error ??\n Object.values(summaries).find((summary) => summary.error)?.error,\n };\n}\n\n/**\n * Keeps the last non-empty page result visible while live brushing has moved\n * ahead of the deferred row query, avoiding transient \"No rows\" flashes.\n */\nfunction useProfilerVisiblePageState(options: {\n lastNonEmptyPageTable: ProfilerStoreState['lastNonEmptyPageTable'];\n pageDatasetId: string;\n page: ProfilerStoreState['page'];\n rowSelectionVersion: number;\n selectionVersion: number;\n}) {\n const {\n lastNonEmptyPageTable,\n page,\n pageDatasetId,\n rowSelectionVersion,\n selectionVersion,\n } = options;\n const isRowDisplayStale = selectionVersion !== rowSelectionVersion;\n const hasCurrentRows = !!page.pageTable && page.pageTable.numRows > 0;\n const canReuseLastNonEmptyPage =\n !!lastNonEmptyPageTable &&\n lastNonEmptyPageTable.datasetId === pageDatasetId;\n const canShowStableEmpty =\n !page.isLoading &&\n !isRowDisplayStale &&\n (!page.pageTable || page.pageTable.numRows === 0);\n const showStableEmpty = useDebounce(canShowStableEmpty, 120);\n\n if (hasCurrentRows || !canReuseLastNonEmptyPage) {\n return page.pageTable;\n }\n\n return showStableEmpty ? page.pageTable : lastNonEmptyPageTable.pageTable;\n}\n\n/**\n * Aggregates Mosaic-backed schema, rows, counts, and summaries into the stable\n * public profiler API consumed by the React table UI.\n */\nexport function useMosaicProfiler(\n options: MosaicProfilerOptions,\n): UseMosaicProfilerReturn {\n const {\n categoryLimit = 20,\n columns,\n initialSorting = [],\n pageSize = 100,\n selection: providedSelection,\n selectionName,\n summaryBins = 18,\n tableName,\n } = options;\n\n const connection = useStoreWithMosaic((state) => state.mosaic.connection);\n const {selection, selectionVersion} = useProfilerSelection({\n selection: providedSelection,\n selectionName,\n });\n const rowSelectionVersion = useDebounce(selectionVersion, 100);\n const {\n filteredCount,\n lastNonEmptyPageTable,\n page,\n pagination,\n profilerStore,\n schema,\n setPagination,\n setSorting,\n sorting,\n summaries,\n totalCount,\n } = useProfilerStoreState({\n initialSorting,\n pageSize,\n });\n const {\n baseQuery,\n datasetId,\n fieldNames,\n fields,\n hasFilters,\n pageQuery,\n rowFilter,\n } = useProfilerQueryState({\n pagination,\n rowSelectionVersion,\n schema,\n selection,\n selectionVersion,\n sorting,\n tableName,\n });\n useProfilerLifecycles({\n categoryLimit,\n columns,\n connection,\n fieldNames,\n fields,\n pageSize,\n pagination,\n profilerStore,\n rowFilter,\n selection,\n selectionVersion,\n sorting,\n summaryBins,\n tableName,\n });\n const profilerColumns = useProfilerColumns({fields, summaries});\n const {isLoading, tableError} = useProfilerStatus({\n fields,\n filteredCount,\n page,\n schema,\n summaries,\n totalCount,\n });\n const visiblePage = useProfilerVisiblePageState({\n lastNonEmptyPageTable,\n page,\n pageDatasetId: datasetId,\n rowSelectionVersion,\n selectionVersion,\n });\n\n return {\n columns: profilerColumns,\n filteredRowCount: filteredCount.count,\n hasFilters,\n isLoading,\n pageQuery,\n pageTable: visiblePage,\n pagination,\n reset: () => selection.reset(),\n selection,\n setPagination,\n setSorting,\n sorting,\n sql: baseQuery.toString(),\n tableError,\n totalRowCount: totalCount.count,\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"useMosaicProfiler.js","sourceRoot":"","sources":["../../src/profiler/useMosaicProfiler.ts"],"names":[],"mappings":"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","sourcesContent":["import {createId} from '@paralleldrive/cuid2';\nimport {useDebounce} from '@sqlrooms/ui';\nimport {\n Selection as MosaicSelection,\n type Selection,\n} from '@uwdata/mosaic-core';\nimport {\n useEffect,\n useMemo,\n useState,\n type Dispatch,\n type SetStateAction,\n} from 'react';\nimport {useStore} from 'zustand';\nimport {useStoreWithMosaic, type MosaicSliceState} from '../MosaicSlice';\nimport {\n createProfilerStore,\n type ProfilerStore,\n type ProfilerStoreState,\n} from './createProfilerStore';\nimport {\n connectProfilerCountClient,\n connectProfilerPageClient,\n connectProfilerSummaryClients,\n loadProfilerSchema,\n} from './profilerController';\nimport type {\n MosaicProfilerColumnState,\n MosaicProfilerOptions,\n MosaicProfilerPaginationState,\n MosaicProfilerSorting,\n UseMosaicProfilerReturn,\n} from './types';\nimport {\n buildProfilerBaseQuery,\n buildProfilerPageQuery,\n createEmptySummaryState,\n isProfilerHistogramType,\n isProfilerUnsupportedSummaryType,\n} from './utils';\n\ntype ProfilerSelectionState = {\n selection: Selection;\n selectionVersion: number;\n};\n\ntype ProfilerStoreSlice = {\n filteredCount: ProfilerStoreState['filteredCount'];\n lastNonEmptyPageTable: ProfilerStoreState['lastNonEmptyPageTable'];\n page: ProfilerStoreState['page'];\n pagination: MosaicProfilerPaginationState;\n profilerStore: ProfilerStore;\n schema: ProfilerStoreState['schema'];\n setPagination: Dispatch<SetStateAction<MosaicProfilerPaginationState>>;\n setSorting: Dispatch<SetStateAction<MosaicProfilerSorting>>;\n sorting: MosaicProfilerSorting;\n summaries: ProfilerStoreState['summaries'];\n totalCount: ProfilerStoreState['totalCount'];\n};\n\ntype ProfilerQueryState = {\n baseQuery: ReturnType<typeof buildProfilerBaseQuery>;\n datasetId: string;\n fieldNames: string[];\n fields: ProfilerStoreState['schema']['fields'];\n hasFilters: boolean;\n pageQuery: string;\n rowFilter: ReturnType<Selection['predicate']>;\n};\n\n/**\n * Tracks Mosaic selection updates as a monotonically increasing version so\n * memoized queries and lifecycle effects can respond to crossfilter changes.\n */\nfunction useSelectionVersion(selection: Selection) {\n const [version, setVersion] = useState(0);\n\n useEffect(() => {\n const handleChange = () => setVersion((value) => value + 1);\n selection.addEventListener('value', handleChange);\n return () => selection.removeEventListener('value', handleChange);\n }, [selection]);\n\n return version;\n}\n\n/**\n * Resolves the profiler selection, creating a crossfilter selection when the\n * caller does not supply one, and exposes a version that changes with it.\n */\nfunction useProfilerSelection(\n options: Pick<MosaicProfilerOptions, 'selection' | 'selectionName'>,\n): ProfilerSelectionState {\n const {selection: providedSelection, selectionName} = options;\n const generatedSelectionName = useMemo(\n () => `mosaic-profiler-${createId()}`,\n [],\n );\n const selectionKey = selectionName ?? generatedSelectionName;\n const existingSelection = useStoreWithMosaic(\n (state) => state.mosaic.selections[selectionKey],\n );\n const getSelection = useStoreWithMosaic((state) => state.mosaic.getSelection);\n const [fallbackSelection] = useState(() => MosaicSelection.crossfilter());\n\n useEffect(() => {\n if (!providedSelection && !existingSelection) {\n getSelection(selectionKey, 'crossfilter');\n }\n }, [existingSelection, getSelection, providedSelection, selectionKey]);\n\n const selection = providedSelection ?? existingSelection ?? fallbackSelection;\n\n return {\n selection,\n selectionVersion: useSelectionVersion(selection),\n };\n}\n\n/**\n * Creates the per-profiler local store and subscribes to the raw state slices\n * that the public profiler hook exposes.\n */\nfunction useProfilerStoreState(options: {\n initialSorting: MosaicProfilerSorting;\n pageSize: number;\n}): ProfilerStoreSlice {\n const [profilerStore] = useState(() =>\n createProfilerStore({\n initialSorting: options.initialSorting,\n pageSize: options.pageSize,\n }),\n );\n\n return {\n filteredCount: useStore(profilerStore, (state) => state.filteredCount),\n lastNonEmptyPageTable: useStore(\n profilerStore,\n (state) => state.lastNonEmptyPageTable,\n ),\n page: useStore(profilerStore, (state) => state.page),\n pagination: useStore(profilerStore, (state) => state.pagination),\n profilerStore,\n schema: useStore(profilerStore, (state) => state.schema),\n setPagination: useStore(profilerStore, (state) => state.setPagination),\n setSorting: useStore(profilerStore, (state) => state.setSorting),\n sorting: useStore(profilerStore, (state) => state.sorting),\n summaries: useStore(profilerStore, (state) => state.summaries),\n totalCount: useStore(profilerStore, (state) => state.totalCount),\n };\n}\n\n/**\n * Derives the profiler's field and SQL state from the current schema,\n * selection, sorting, and pagination state.\n */\nfunction useProfilerQueryState(options: {\n pagination: MosaicProfilerPaginationState;\n rowSelectionVersion: number;\n schema: ProfilerStoreState['schema'];\n selection: Selection;\n selectionVersion: number;\n sorting: MosaicProfilerSorting;\n tableName: string;\n}): ProfilerQueryState {\n const {\n pagination,\n rowSelectionVersion,\n schema,\n selection,\n selectionVersion,\n sorting,\n tableName,\n } = options;\n const fields = schema.fields;\n const fieldNames = useMemo(() => fields.map((field) => field.name), [fields]);\n const filter = useMemo(() => {\n void selectionVersion;\n return selection.predicate();\n }, [selection, selectionVersion]);\n const rowFilter = useMemo(() => {\n void rowSelectionVersion;\n return selection.predicate();\n }, [rowSelectionVersion, selection]);\n const baseQuery = useMemo(\n () =>\n buildProfilerBaseQuery({\n columns: fieldNames,\n filter,\n sorting,\n tableName,\n }),\n [fieldNames, filter, sorting, tableName],\n );\n const pageBaseQuery = useMemo(\n () =>\n buildProfilerBaseQuery({\n columns: fieldNames,\n filter: rowFilter,\n sorting,\n tableName,\n }),\n [fieldNames, rowFilter, sorting, tableName],\n );\n\n return {\n baseQuery,\n datasetId: [tableName, ...fieldNames].join('\\u0001'),\n fieldNames,\n fields,\n hasFilters: Array.isArray(filter) ? filter.length > 0 : Boolean(filter),\n pageQuery: buildProfilerPageQuery(pageBaseQuery, pagination).toString(),\n rowFilter,\n };\n}\n\n/**\n * Owns the coordinator-backed schema, row, count, and summary client\n * lifecycles for a profiler instance.\n */\nfunction useProfilerLifecycles(options: {\n categoryLimit: number;\n columns?: string[];\n connection: MosaicSliceState['mosaic']['connection'];\n fieldNames: string[];\n fields: ProfilerStoreState['schema']['fields'];\n pageSize: number;\n pagination: MosaicProfilerPaginationState;\n profilerStore: ProfilerStore;\n rowFilter: ReturnType<Selection['predicate']>;\n selection: Selection;\n selectionVersion: number;\n sorting: MosaicProfilerSorting;\n summaryBins: number;\n tableName: string;\n}) {\n const {\n categoryLimit,\n columns,\n connection,\n fieldNames,\n fields,\n pageSize,\n pagination,\n profilerStore,\n rowFilter,\n selection,\n selectionVersion,\n sorting,\n summaryBins,\n tableName,\n } = options;\n\n useEffect(() => {\n profilerStore.getState().syncPageSize(pageSize);\n }, [pageSize, profilerStore]);\n\n useEffect(() => {\n profilerStore.getState().resetPageIndex();\n }, [profilerStore, selectionVersion, tableName]);\n\n useEffect(() => {\n if (connection.status !== 'ready' || !tableName) {\n profilerStore.getState().setSchemaSuccess([]);\n profilerStore.getState().setSchemaError(undefined);\n profilerStore\n .getState()\n .setSchemaLoading(connection.status === 'loading');\n return;\n }\n\n void loadProfilerSchema({\n columns,\n coordinator: connection.coordinator,\n store: profilerStore,\n tableName,\n });\n }, [columns, connection, profilerStore, tableName]);\n\n useEffect(() => {\n if (connection.status !== 'ready' || !tableName || !fieldNames.length) {\n profilerStore.getState().setPage({isLoading: false});\n return;\n }\n\n return connectProfilerPageClient({\n connection,\n fieldNames,\n filter: rowFilter,\n pagination,\n sorting,\n store: profilerStore,\n tableName,\n });\n }, [\n connection,\n fieldNames,\n pagination,\n profilerStore,\n rowFilter,\n sorting,\n tableName,\n ]);\n\n useEffect(() => {\n if (connection.status !== 'ready' || !tableName) {\n profilerStore.getState().setFilteredCount({isLoading: false});\n return;\n }\n\n return connectProfilerCountClient({\n connection,\n filterStable: true,\n selection,\n store: profilerStore,\n tableName,\n target: 'filtered',\n });\n }, [connection, profilerStore, selection, tableName]);\n\n useEffect(() => {\n if (connection.status !== 'ready' || !tableName) {\n profilerStore.getState().setTotalCount({isLoading: false});\n return;\n }\n\n return connectProfilerCountClient({\n connection,\n store: profilerStore,\n tableName,\n target: 'total',\n });\n }, [connection, profilerStore, tableName]);\n\n useEffect(() => {\n if (connection.status !== 'ready' || !fields.length) {\n profilerStore.getState().clearSummaries();\n return;\n }\n\n return connectProfilerSummaryClients({\n categoryLimit,\n connection,\n fields,\n selection,\n store: profilerStore,\n summaryBins,\n tableName,\n });\n }, [\n categoryLimit,\n connection,\n fields,\n profilerStore,\n selection,\n summaryBins,\n tableName,\n ]);\n}\n\n/**\n * Maps the schema fields and summary state into the column model consumed by\n * the profiler header and summary cells.\n */\nfunction useProfilerColumns(options: {\n fields: ProfilerStoreState['schema']['fields'];\n summaries: ProfilerStoreState['summaries'];\n}) {\n const {fields, summaries} = options;\n\n return useMemo<MosaicProfilerColumnState[]>(\n () =>\n fields.map((field) => ({\n field,\n kind: isProfilerUnsupportedSummaryType(field.type)\n ? 'unsupported'\n : isProfilerHistogramType(field.type)\n ? 'histogram'\n : 'category',\n name: field.name,\n summary: summaries[field.name] ?? createEmptySummaryState(field),\n })),\n [fields, summaries],\n );\n}\n\n/**\n * Collapses the aggregated profiler client state into the loading and error\n * signals exposed from the public hook.\n */\nfunction useProfilerStatus(options: {\n filteredCount: ProfilerStoreState['filteredCount'];\n fields: ProfilerStoreState['schema']['fields'];\n page: ProfilerStoreState['page'];\n schema: ProfilerStoreState['schema'];\n summaries: ProfilerStoreState['summaries'];\n totalCount: ProfilerStoreState['totalCount'];\n}) {\n const {fields, filteredCount, page, schema, summaries, totalCount} = options;\n const hasPendingSummaryInitialization =\n fields.length > 0 && Object.keys(summaries).length < fields.length;\n\n return {\n isLoading:\n schema.isLoading ||\n page.isLoading ||\n filteredCount.isLoading ||\n totalCount.isLoading ||\n hasPendingSummaryInitialization ||\n Object.values(summaries).some((summary) => summary.isLoading),\n tableError:\n schema.error ??\n page.error ??\n filteredCount.error ??\n totalCount.error ??\n Object.values(summaries).find((summary) => summary.error)?.error,\n };\n}\n\n/**\n * Keeps the last non-empty page result visible while live brushing has moved\n * ahead of the deferred row query, avoiding transient \"No rows\" flashes.\n */\nfunction useProfilerVisiblePageState(options: {\n lastNonEmptyPageTable: ProfilerStoreState['lastNonEmptyPageTable'];\n pageDatasetId: string;\n page: ProfilerStoreState['page'];\n rowSelectionVersion: number;\n selectionVersion: number;\n}) {\n const {\n lastNonEmptyPageTable,\n page,\n pageDatasetId,\n rowSelectionVersion,\n selectionVersion,\n } = options;\n const isRowDisplayStale = selectionVersion !== rowSelectionVersion;\n const hasCurrentRows = !!page.pageTable && page.pageTable.numRows > 0;\n const canReuseLastNonEmptyPage =\n !!lastNonEmptyPageTable &&\n lastNonEmptyPageTable.datasetId === pageDatasetId;\n const canShowStableEmpty =\n !page.isLoading &&\n !isRowDisplayStale &&\n (!page.pageTable || page.pageTable.numRows === 0);\n const showStableEmpty = useDebounce(canShowStableEmpty, 120);\n\n if (hasCurrentRows || !canReuseLastNonEmptyPage) {\n return page.pageTable;\n }\n\n return showStableEmpty ? page.pageTable : lastNonEmptyPageTable.pageTable;\n}\n\n/**\n * Aggregates Mosaic-backed schema, rows, counts, and summaries into the stable\n * public profiler API consumed by the React table UI.\n */\nexport function useMosaicProfiler(\n options: MosaicProfilerOptions,\n): UseMosaicProfilerReturn {\n const {\n categoryLimit = 20,\n columns,\n initialSorting = [],\n pageSize = 100,\n selection: providedSelection,\n selectionName,\n summaryBins = 18,\n tableName,\n } = options;\n\n const connection = useStoreWithMosaic((state) => state.mosaic.connection);\n const {selection, selectionVersion} = useProfilerSelection({\n selection: providedSelection,\n selectionName,\n });\n const rowSelectionVersion = useDebounce(selectionVersion, 100);\n const {\n filteredCount,\n lastNonEmptyPageTable,\n page,\n pagination,\n profilerStore,\n schema,\n setPagination,\n setSorting,\n sorting,\n summaries,\n totalCount,\n } = useProfilerStoreState({\n initialSorting,\n pageSize,\n });\n const {\n baseQuery,\n datasetId,\n fieldNames,\n fields,\n hasFilters,\n pageQuery,\n rowFilter,\n } = useProfilerQueryState({\n pagination,\n rowSelectionVersion,\n schema,\n selection,\n selectionVersion,\n sorting,\n tableName,\n });\n useProfilerLifecycles({\n categoryLimit,\n columns,\n connection,\n fieldNames,\n fields,\n pageSize,\n pagination,\n profilerStore,\n rowFilter,\n selection,\n selectionVersion,\n sorting,\n summaryBins,\n tableName,\n });\n const profilerColumns = useProfilerColumns({fields, summaries});\n const {isLoading, tableError} = useProfilerStatus({\n fields,\n filteredCount,\n page,\n schema,\n summaries,\n totalCount,\n });\n const visiblePage = useProfilerVisiblePageState({\n lastNonEmptyPageTable,\n page,\n pageDatasetId: datasetId,\n rowSelectionVersion,\n selectionVersion,\n });\n\n return {\n columns: profilerColumns,\n filteredRowCount: filteredCount.count,\n hasFilters,\n isLoading,\n pageQuery,\n pageTable: visiblePage,\n pagination,\n reset: () => selection.reset(),\n selection,\n setPagination,\n setSorting,\n sorting,\n sql: baseQuery.toString(),\n tableError,\n totalRowCount: totalCount.count,\n };\n}\n"]}
|
package/dist/tableInterop.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tableInterop.js","sourceRoot":"","sources":["../src/tableInterop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EACL,UAAU,IAAI,gBAAgB,GAE/B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAC,YAAY,EAAE,UAAU,EAA2B,MAAM,cAAc,CAAC;AAEhF,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;AAQnE,SAAS,kBAAkB,CACzB,KAAQ,EACR,OAGC;IAED,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,EAAC,QAAQ,EAAE,gBAAgB,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,EAAC,GAAG,OAAO,CAAC;IAC9E,IAAI,UAAkC,CAAC;IAEvC,MAAM,OAAO,GAAiB;QAC5B,QAAQ;QACR,aAAa,EAAE,GAAG,EAAE;YAClB,UAAU,KAAK,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAC1C,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,cAAc,EAAE,GAAG,EAAE,CAAC,KAAK;KAC5B,CAAC;IAEF,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE;QAC1C,KAAK,EAAE,OAAO;QACd,UAAU,EAAE,KAAK;QACjB,YAAY,EAAE,KAAK;QACnB,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAQ,KAA0C,CAAC,aAAa,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,KAAc;IAEd,OAAO,eAAe,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC;AACjD,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,OAAO,CACZ,KAAK;QACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,CAAC,OAAO,CAAE,KAA6B,CAAC,OAAO,CAAC,CACtD,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,CACZ,KAAK;QACL,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAQ,KAA+B,CAAC,SAAS,KAAK,UAAU;QAChE,OAAQ,KAA8B,CAAC,QAAQ,KAAK,UAAU,CAC/D,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,+BAA+B,CAC7C,UAAsB;IAEtB,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAClD,MAAM,aAAa,GACjB,OAAO,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvE,OAAO,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;QAC7C,QAAQ;QACR,gBAAgB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,YAAY,CAAC,KAAK,CAAC;KAC3E,
|
|
1
|
+
{"version":3,"file":"tableInterop.js","sourceRoot":"","sources":["../src/tableInterop.ts"],"names":[],"mappings":"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","sourcesContent":["import {decodeIPC} from '@uwdata/mosaic-core';\nimport {\n tableToIPC as mosaicTableToIPC,\n type Table as MosaicTable,\n} from '@uwdata/flechette';\nimport {tableFromIPC, tableToIPC, type Table as ArrowTable} from 'apache-arrow';\n\nconst TABLE_INTEROP = Symbol.for('@sqlrooms/mosaic-table-interop');\n\ntype TableInterop = {\n ipcBytes: Uint8Array;\n getArrowTable: () => ArrowTable;\n getMosaicTable: () => object;\n};\n\nfunction attachTableInterop<T extends object>(\n table: T,\n options: {\n ipcBytes: Uint8Array;\n decodeArrowTable?: (ipcBytes: Uint8Array) => ArrowTable;\n },\n): T {\n if (getTableInterop(table)) {\n return table;\n }\n\n const {ipcBytes, decodeArrowTable = (bytes) => tableFromIPC(bytes)} = options;\n let arrowTable: ArrowTable | undefined;\n\n const interop: TableInterop = {\n ipcBytes,\n getArrowTable: () => {\n arrowTable ??= decodeArrowTable(ipcBytes);\n return arrowTable;\n },\n getMosaicTable: () => table,\n };\n\n Object.defineProperty(table, TABLE_INTEROP, {\n value: interop,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n\n return table;\n}\n\nexport function getTableInterop(value: unknown): TableInterop | undefined {\n if (!value || typeof value !== 'object') {\n return undefined;\n }\n\n return (value as {[TABLE_INTEROP]?: TableInterop})[TABLE_INTEROP];\n}\n\nexport function getArrowTableFromInterop(\n value: unknown,\n): ArrowTable | undefined {\n return getTableInterop(value)?.getArrowTable();\n}\n\nfunction isArrowTable(value: unknown): value is ArrowTable {\n return Boolean(\n value &&\n typeof value === 'object' &&\n Array.isArray((value as {batches?: unknown}).batches),\n );\n}\n\nfunction isMosaicTable(value: unknown): value is MosaicTable {\n return Boolean(\n value &&\n typeof value === 'object' &&\n typeof (value as {toColumns?: unknown}).toColumns === 'function' &&\n typeof (value as {getChild?: unknown}).getChild === 'function',\n );\n}\n\n/**\n * Convert an Apache Arrow table into the Mosaic-native table shape while\n * attaching Mosaic-internal IPC-backed interop metadata.\n *\n * Mosaic core expects Flechette tables, while SQLRooms public client APIs\n * expose Apache Arrow. IPC remains the durable bridge. The original Arrow\n * table is referenced weakly so Arrow-native callers can often reuse it\n * without forcing Mosaic-only consumers to retain both table runtimes.\n */\nexport function createMosaicTableFromArrowTable(\n arrowTable: ArrowTable,\n): MosaicTable {\n const ipcBytes = tableToIPC(arrowTable, 'stream');\n const arrowTableRef =\n typeof WeakRef === 'undefined' ? undefined : new WeakRef(arrowTable);\n\n return attachTableInterop(decodeIPC(ipcBytes), {\n ipcBytes,\n decodeArrowTable: (bytes) => arrowTableRef?.deref() ?? tableFromIPC(bytes),\n }) as unknown as MosaicTable;\n}\n\n/**\n * Convert a raw Mosaic client result to the Apache Arrow shape exposed by\n * SQLRooms public hooks.\n *\n * Results produced by {@link createMosaicTableFromArrowTable} use the\n * interop fast path. Plain third-party Flechette tables are still accepted as\n * a compatibility fallback, but that path has to re-encode through IPC.\n */\nexport function toArrowClientResult(value: unknown): ArrowTable {\n if (isArrowTable(value)) {\n return value;\n }\n\n const interopArrowTable = getArrowTableFromInterop(value);\n if (interopArrowTable) {\n return interopArrowTable;\n }\n\n if (isMosaicTable(value)) {\n return tableFromIPC(mosaicTableToIPC(value, {format: 'stream'}));\n }\n\n throw new Error(\n 'useMosaicClient expected a Mosaic table result that can be converted to Apache Arrow.',\n );\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MosaicDashboardTextRenderer.d.ts","sourceRoot":"","sources":["../../src/text/MosaicDashboardTextRenderer.tsx"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,4BAA4B,EACjC,KAAK,SAAS,EAGf,MAAM,mCAAmC,CAAC;AAmF3C,eAAO,MAAM,2BAA2B,EAAE,4BAA4B,CAAC,SAAS,CAK7E,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { MarkdownDocumentEditor } from '@sqlrooms/documents';
|
|
3
|
+
import { Button } from '@sqlrooms/ui';
|
|
4
|
+
import { ALargeSmallIcon, FileTextIcon } from 'lucide-react';
|
|
5
|
+
import { useCallback } from 'react';
|
|
6
|
+
import { useStoreWithMosaicDashboard, } from '../dashboard/MosaicDashboardSlice';
|
|
7
|
+
const MosaicDashboardTextRenderer = ({ dashboardId, panel, }) => {
|
|
8
|
+
const updatePanel = useStoreWithMosaicDashboard((state) => state.mosaicDashboard.updatePanel);
|
|
9
|
+
const toolbarOpen = panel.config.toolbarOpen ?? true;
|
|
10
|
+
const handleChange = useCallback((value) => {
|
|
11
|
+
updatePanel(dashboardId, panel.id, {
|
|
12
|
+
config: {
|
|
13
|
+
...panel.config,
|
|
14
|
+
content: value,
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
}, [dashboardId, panel.id, panel.config, updatePanel]);
|
|
18
|
+
const handleSourcePanelOpenChange = useCallback((open) => {
|
|
19
|
+
updatePanel(dashboardId, panel.id, {
|
|
20
|
+
config: {
|
|
21
|
+
...panel.config,
|
|
22
|
+
sourcePanelOpen: open,
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
}, [dashboardId, panel.id, panel.config, updatePanel]);
|
|
26
|
+
return (_jsx("div", { className: "flex h-full min-h-0 flex-col", children: _jsxs(MarkdownDocumentEditor, { value: panel.config.content, onChange: handleChange, sourcePanelOpen: panel.config.sourcePanelOpen, onSourcePanelOpenChange: handleSourcePanelOpenChange, children: [toolbarOpen ? _jsx(MarkdownDocumentEditor.Toolbar, {}) : null, _jsx(MarkdownDocumentEditor.Content, {})] }) }));
|
|
27
|
+
};
|
|
28
|
+
const TextPanelHeaderActions = ({ dashboardId, panel, }) => {
|
|
29
|
+
const updatePanel = useStoreWithMosaicDashboard((state) => state.mosaicDashboard.updatePanel);
|
|
30
|
+
const toolbarOpen = panel.config.toolbarOpen ?? true;
|
|
31
|
+
const handleToggleToolbar = useCallback(() => {
|
|
32
|
+
updatePanel(dashboardId, panel.id, {
|
|
33
|
+
config: {
|
|
34
|
+
...panel.config,
|
|
35
|
+
toolbarOpen: !toolbarOpen,
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
}, [dashboardId, panel.id, panel.config, toolbarOpen, updatePanel]);
|
|
39
|
+
return (_jsx(Button, { variant: toolbarOpen ? 'secondary' : 'ghost', size: "icon", className: "h-6 w-6", "aria-label": "Toggle formatting toolbar", onClick: handleToggleToolbar, children: _jsx(ALargeSmallIcon, { className: "h-3.5 w-3.5" }) }));
|
|
40
|
+
};
|
|
41
|
+
export const mosaicDashboardTextRenderer = {
|
|
42
|
+
component: MosaicDashboardTextRenderer,
|
|
43
|
+
icon: FileTextIcon,
|
|
44
|
+
headerActions: TextPanelHeaderActions,
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=MosaicDashboardTextRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MosaicDashboardTextRenderer.js","sourceRoot":"","sources":["../../src/text/MosaicDashboardTextRenderer.tsx"],"names":[],"mappings":"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","sourcesContent":["import {MarkdownDocumentEditor} from '@sqlrooms/documents';\nimport {Button} from '@sqlrooms/ui';\nimport {ALargeSmallIcon, FileTextIcon} from 'lucide-react';\nimport {type FC, useCallback} from 'react';\nimport {\n type MosaicDashboardPanelRenderer,\n type TextPanel,\n type TextPanelRendererProps,\n useStoreWithMosaicDashboard,\n} from '../dashboard/MosaicDashboardSlice';\n\nconst MosaicDashboardTextRenderer: FC<TextPanelRendererProps> = ({\n dashboardId,\n panel,\n}) => {\n const updatePanel = useStoreWithMosaicDashboard(\n (state) => state.mosaicDashboard.updatePanel,\n );\n\n const toolbarOpen = panel.config.toolbarOpen ?? true;\n\n const handleChange = useCallback(\n (value: string) => {\n updatePanel(dashboardId, panel.id, {\n config: {\n ...panel.config,\n content: value,\n },\n });\n },\n [dashboardId, panel.id, panel.config, updatePanel],\n );\n\n const handleSourcePanelOpenChange = useCallback(\n (open: boolean) => {\n updatePanel(dashboardId, panel.id, {\n config: {\n ...panel.config,\n sourcePanelOpen: open,\n },\n });\n },\n [dashboardId, panel.id, panel.config, updatePanel],\n );\n\n return (\n <div className=\"flex h-full min-h-0 flex-col\">\n <MarkdownDocumentEditor\n value={panel.config.content}\n onChange={handleChange}\n sourcePanelOpen={panel.config.sourcePanelOpen}\n onSourcePanelOpenChange={handleSourcePanelOpenChange}\n >\n {toolbarOpen ? <MarkdownDocumentEditor.Toolbar /> : null}\n <MarkdownDocumentEditor.Content />\n </MarkdownDocumentEditor>\n </div>\n );\n};\n\nconst TextPanelHeaderActions: FC<TextPanelRendererProps> = ({\n dashboardId,\n panel,\n}) => {\n const updatePanel = useStoreWithMosaicDashboard(\n (state) => state.mosaicDashboard.updatePanel,\n );\n\n const toolbarOpen = panel.config.toolbarOpen ?? true;\n\n const handleToggleToolbar = useCallback(() => {\n updatePanel(dashboardId, panel.id, {\n config: {\n ...panel.config,\n toolbarOpen: !toolbarOpen,\n },\n });\n }, [dashboardId, panel.id, panel.config, toolbarOpen, updatePanel]);\n\n return (\n <Button\n variant={toolbarOpen ? 'secondary' : 'ghost'}\n size=\"icon\"\n className=\"h-6 w-6\"\n aria-label=\"Toggle formatting toolbar\"\n onClick={handleToggleToolbar}\n >\n <ALargeSmallIcon className=\"h-3.5 w-3.5\" />\n </Button>\n );\n};\n\nexport const mosaicDashboardTextRenderer: MosaicDashboardPanelRenderer<TextPanel> =\n {\n component: MosaicDashboardTextRenderer,\n icon: FileTextIcon,\n headerActions: TextPanelHeaderActions,\n };\n"]}
|
|
@@ -1,23 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import type { Table as ArrowTable } from 'apache-arrow';
|
|
4
|
-
export type UseMosaicClientOptions = {
|
|
5
|
-
/** Unique id for this client (auto-generated if not provided) */
|
|
6
|
-
id?: string;
|
|
7
|
-
/** Selection name for cross-filtering (will create if doesn't exist) */
|
|
8
|
-
selectionName?: string;
|
|
9
|
-
/** Or pass a Selection directly */
|
|
10
|
-
selection?: Selection;
|
|
11
|
-
/** Query builder - receives current filter predicate */
|
|
12
|
-
query: (filter: unknown) => ReturnType<typeof Query.from>;
|
|
13
|
-
/** Callback when query results are received */
|
|
14
|
-
queryResult?: (result: ArrowTable) => void;
|
|
1
|
+
import { type MosaicClientOptions } from './MosaicSlice';
|
|
2
|
+
export type UseMosaicClientOptions = MosaicClientOptions & {
|
|
15
3
|
/** Whether to automatically connect when mosaic is ready */
|
|
16
4
|
enabled?: boolean;
|
|
17
5
|
};
|
|
18
6
|
export declare function useMosaicClient(options: UseMosaicClientOptions): {
|
|
19
|
-
data:
|
|
7
|
+
data: import("apache-arrow").Table<any> | null;
|
|
20
8
|
isLoading: boolean;
|
|
9
|
+
error: Error | undefined;
|
|
21
10
|
client: import("@uwdata/mosaic-core").MosaicClient | null;
|
|
22
11
|
};
|
|
23
12
|
//# sourceMappingURL=useMosaicClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMosaicClient.d.ts","sourceRoot":"","sources":["../src/useMosaicClient.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useMosaicClient.d.ts","sourceRoot":"","sources":["../src/useMosaicClient.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,KAAK,mBAAmB,EAAqB,MAAM,eAAe,CAAC;AAG3E,MAAM,MAAM,sBAAsB,GAAG,mBAAmB,GAAG;IACzD,4DAA4D;IAC5D,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,wBAAgB,eAAe,CAAC,OAAO,EAAE,sBAAsB;;;;;EA+E9D"}
|
package/dist/useMosaicClient.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { useEffect, useMemo, useRef } from 'react';
|
|
2
1
|
import { createId } from '@paralleldrive/cuid2';
|
|
2
|
+
import { useEffect, useMemo, useRef } from 'react';
|
|
3
3
|
import { useStoreWithMosaic } from './MosaicSlice';
|
|
4
4
|
import { toArrowClientResult } from './tableInterop';
|
|
5
5
|
export function useMosaicClient(options) {
|
|
6
|
-
const { id: providedId, selectionName, selection: directSelection, query, queryResult, enabled = true, } = options;
|
|
6
|
+
const { id: providedId, selectionName, selection: directSelection, query, queryResult, queryError, enabled = true, } = options;
|
|
7
7
|
// Use stable id - generate once if not provided
|
|
8
8
|
const stableId = useMemo(() => providedId ?? createId(), [providedId]);
|
|
9
9
|
const connectionStatus = useStoreWithMosaic((s) => s.mosaic.connection.status);
|
|
@@ -14,10 +14,12 @@ export function useMosaicClient(options) {
|
|
|
14
14
|
// Keep query and queryResult in refs so they can be accessed in effect
|
|
15
15
|
const queryRef = useRef(query);
|
|
16
16
|
const queryResultRef = useRef(queryResult);
|
|
17
|
+
const queryErrorRef = useRef(queryError);
|
|
17
18
|
useEffect(() => {
|
|
18
19
|
queryRef.current = query;
|
|
19
20
|
queryResultRef.current = queryResult;
|
|
20
|
-
|
|
21
|
+
queryErrorRef.current = queryError;
|
|
22
|
+
}, [query, queryError, queryResult]);
|
|
21
23
|
const clientData = clientState?.data;
|
|
22
24
|
const arrowData = useMemo(() => {
|
|
23
25
|
if (!clientData) {
|
|
@@ -35,7 +37,10 @@ export function useMosaicClient(options) {
|
|
|
35
37
|
selection: directSelection,
|
|
36
38
|
query: queryRef.current,
|
|
37
39
|
onQueryResult: (result) => {
|
|
38
|
-
queryResultRef.current?.(result);
|
|
40
|
+
queryResultRef.current?.(toArrowClientResult(result));
|
|
41
|
+
},
|
|
42
|
+
onQueryError: (error) => {
|
|
43
|
+
queryErrorRef.current?.(error);
|
|
39
44
|
},
|
|
40
45
|
});
|
|
41
46
|
return () => {
|
|
@@ -53,6 +58,7 @@ export function useMosaicClient(options) {
|
|
|
53
58
|
return {
|
|
54
59
|
data: arrowData,
|
|
55
60
|
isLoading: clientState?.isLoading ?? connectionStatus !== 'ready',
|
|
61
|
+
error: clientState?.error,
|
|
56
62
|
client: clientState?.client ?? null,
|
|
57
63
|
};
|
|
58
64
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMosaicClient.js","sourceRoot":"","sources":["../src/useMosaicClient.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useMosaicClient.js","sourceRoot":"","sources":["../src/useMosaicClient.ts"],"names":[],"mappings":"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","sourcesContent":["import {createId} from '@paralleldrive/cuid2';\nimport {useEffect, useMemo, useRef} from 'react';\nimport {type MosaicClientOptions, useStoreWithMosaic} from './MosaicSlice';\nimport {toArrowClientResult} from './tableInterop';\n\nexport type UseMosaicClientOptions = MosaicClientOptions & {\n /** Whether to automatically connect when mosaic is ready */\n enabled?: boolean;\n};\n\nexport function useMosaicClient(options: UseMosaicClientOptions) {\n const {\n id: providedId,\n selectionName,\n selection: directSelection,\n query,\n queryResult,\n queryError,\n enabled = true,\n } = options;\n\n // Use stable id - generate once if not provided\n const stableId = useMemo(() => providedId ?? createId(), [providedId]);\n\n const connectionStatus = useStoreWithMosaic(\n (s) => s.mosaic.connection.status,\n );\n const ensureClient = useStoreWithMosaic((s) => s.mosaic.ensureClient);\n const destroyClient = useStoreWithMosaic((s) => s.mosaic.destroyClient);\n\n // Select the raw Mosaic client state; public hook data is normalized below.\n const clientState = useStoreWithMosaic((s) => s.mosaic.clients[stableId]);\n\n // Keep query and queryResult in refs so they can be accessed in effect\n const queryRef = useRef(query);\n const queryResultRef = useRef(queryResult);\n const queryErrorRef = useRef(queryError);\n\n useEffect(() => {\n queryRef.current = query;\n queryResultRef.current = queryResult;\n queryErrorRef.current = queryError;\n }, [query, queryError, queryResult]);\n\n const clientData = clientState?.data;\n const arrowData = useMemo(() => {\n if (!clientData) {\n return null;\n }\n return toArrowClientResult(clientData);\n }, [clientData]);\n\n useEffect(() => {\n if (!enabled || connectionStatus !== 'ready') {\n return;\n }\n\n ensureClient({\n id: stableId,\n selectionName,\n selection: directSelection,\n query: queryRef.current,\n onQueryResult: (result) => {\n queryResultRef.current?.(toArrowClientResult(result));\n },\n onQueryError: (error) => {\n queryErrorRef.current?.(error);\n },\n });\n\n return () => {\n destroyClient(stableId);\n };\n }, [\n enabled,\n connectionStatus,\n stableId,\n selectionName,\n directSelection,\n ensureClient,\n destroyClient,\n ]);\n\n return {\n data: arrowData,\n isLoading: clientState?.isLoading ?? connectionStatus !== 'ready',\n error: clientState?.error,\n client: clientState?.client ?? null,\n };\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,62 +1,71 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sqlrooms/mosaic",
|
|
3
|
-
"version": "0.29.0-rc.
|
|
4
|
-
"main": "dist/index.js",
|
|
5
|
-
"types": "dist/index.d.ts",
|
|
6
|
-
"module": "dist/index.js",
|
|
7
|
-
"type": "module",
|
|
8
|
-
"sideEffects": false,
|
|
9
|
-
"engines": {
|
|
10
|
-
"node": ">=22"
|
|
11
|
-
},
|
|
12
|
-
"author": "SQLRooms Contributors",
|
|
13
|
-
"license": "MIT",
|
|
3
|
+
"version": "0.29.0-rc.4",
|
|
14
4
|
"repository": {
|
|
15
5
|
"type": "git",
|
|
16
6
|
"url": "git+https://github.com/sqlrooms/sqlrooms.git"
|
|
17
7
|
},
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"author": "SQLRooms Contributors",
|
|
10
|
+
"sideEffects": false,
|
|
11
|
+
"type": "module",
|
|
12
|
+
"main": "dist/index.js",
|
|
13
|
+
"module": "dist/index.js",
|
|
14
|
+
"types": "dist/index.d.ts",
|
|
18
15
|
"files": [
|
|
19
16
|
"dist"
|
|
20
17
|
],
|
|
21
|
-
"
|
|
22
|
-
"
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "tsc",
|
|
20
|
+
"dev": "tsc -w",
|
|
21
|
+
"lint": "eslint .",
|
|
22
|
+
"test": "NODE_OPTIONS='--experimental-vm-modules --no-warnings' jest",
|
|
23
|
+
"typecheck": "tsc --noEmit",
|
|
24
|
+
"typedoc": "typedoc"
|
|
23
25
|
},
|
|
24
26
|
"dependencies": {
|
|
27
|
+
"@observablehq/plot": "^0.6.17",
|
|
25
28
|
"@paralleldrive/cuid2": "^3.0.0",
|
|
26
|
-
"@sqlrooms/codemirror": "0.29.0-rc.
|
|
27
|
-
"@sqlrooms/color-scales": "0.29.0-rc.
|
|
28
|
-
"@sqlrooms/data-table": "0.29.0-rc.
|
|
29
|
-
"@sqlrooms/
|
|
30
|
-
"@sqlrooms/
|
|
31
|
-
"@sqlrooms/
|
|
32
|
-
"@sqlrooms/
|
|
29
|
+
"@sqlrooms/codemirror": "0.29.0-rc.4",
|
|
30
|
+
"@sqlrooms/color-scales": "0.29.0-rc.4",
|
|
31
|
+
"@sqlrooms/data-table": "0.29.0-rc.4",
|
|
32
|
+
"@sqlrooms/db": "0.29.0-rc.4",
|
|
33
|
+
"@sqlrooms/documents": "0.29.0-rc.4",
|
|
34
|
+
"@sqlrooms/duckdb": "0.29.0-rc.4",
|
|
35
|
+
"@sqlrooms/layout": "0.29.0-rc.4",
|
|
36
|
+
"@sqlrooms/layout-config": "0.29.0-rc.4",
|
|
37
|
+
"@sqlrooms/room-store": "0.29.0-rc.4",
|
|
38
|
+
"@sqlrooms/ui": "0.29.0-rc.4",
|
|
39
|
+
"@sqlrooms/utils": "0.29.0-rc.4",
|
|
33
40
|
"@uwdata/flechette": "^2.2.6",
|
|
34
41
|
"@uwdata/mosaic-core": "^0.21.0",
|
|
35
42
|
"@uwdata/mosaic-plot": "^0.21.0",
|
|
36
43
|
"@uwdata/mosaic-spec": "^0.21.0",
|
|
37
44
|
"@uwdata/mosaic-sql": "^0.21.0",
|
|
38
45
|
"@uwdata/vgplot": "^0.21.0",
|
|
46
|
+
"ai": "^6.0.159",
|
|
39
47
|
"apache-arrow": "17.0.0",
|
|
40
48
|
"immer": "^11.0.1",
|
|
41
49
|
"lucide-react": "^0.556.0",
|
|
42
50
|
"zod": "^4.1.8",
|
|
43
51
|
"zustand": "^5.0.8"
|
|
44
52
|
},
|
|
53
|
+
"devDependencies": {
|
|
54
|
+
"@jest/globals": "^30.3.0",
|
|
55
|
+
"@testing-library/jest-dom": "^6.9.1",
|
|
56
|
+
"@testing-library/react": "^16.3.2",
|
|
57
|
+
"jsdom": "^29.1.1",
|
|
58
|
+
"ts-jest": "^29.4.4"
|
|
59
|
+
},
|
|
45
60
|
"peerDependencies": {
|
|
46
61
|
"react": ">=18",
|
|
47
62
|
"react-dom": ">=18"
|
|
48
63
|
},
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"ts-jest": "^29.4.4"
|
|
64
|
+
"engines": {
|
|
65
|
+
"node": ">=22"
|
|
52
66
|
},
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
"build": "tsc",
|
|
56
|
-
"test": "NODE_OPTIONS='--experimental-vm-modules --no-warnings' jest",
|
|
57
|
-
"lint": "eslint .",
|
|
58
|
-
"typecheck": "tsc --noEmit",
|
|
59
|
-
"typedoc": "typedoc"
|
|
67
|
+
"publishConfig": {
|
|
68
|
+
"access": "public"
|
|
60
69
|
},
|
|
61
|
-
"gitHead": "
|
|
70
|
+
"gitHead": "8694bab9d3d915a06d28675ad801b21444bcc55f"
|
|
62
71
|
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { ChartBuilderTemplate } from './types';
|
|
2
|
-
/**
|
|
3
|
-
* Creates the default set of chart builders.
|
|
4
|
-
* Call this to get a fresh array that you can extend or filter.
|
|
5
|
-
*/
|
|
6
|
-
export declare function createDefaultChartBuilders(): ChartBuilderTemplate[];
|
|
7
|
-
//# sourceMappingURL=builders.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../src/chart-builders/builders.ts"],"names":[],"mappings":"AAWA,OAAO,EAAC,oBAAoB,EAAC,MAAM,SAAS,CAAC;AAyR7C;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,oBAAoB,EAAE,CAWnE"}
|