@sqlrooms/mosaic 0.29.0-rc.1 → 0.29.0-rc.3
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 +161 -2
- package/dist/MosaicChart.d.ts +20 -0
- package/dist/MosaicChart.d.ts.map +1 -0
- package/dist/MosaicChart.js +25 -0
- package/dist/MosaicChart.js.map +1 -0
- package/dist/MosaicChartBuilder.d.ts +67 -0
- package/dist/MosaicChartBuilder.d.ts.map +1 -0
- package/dist/MosaicChartBuilder.js +33 -0
- package/dist/MosaicChartBuilder.js.map +1 -0
- package/dist/MosaicColorLegend.d.ts +18 -0
- package/dist/MosaicColorLegend.d.ts.map +1 -0
- package/dist/MosaicColorLegend.js +117 -0
- package/dist/MosaicColorLegend.js.map +1 -0
- package/dist/MosaicSlice.d.ts +27 -13
- package/dist/MosaicSlice.d.ts.map +1 -1
- package/dist/MosaicSlice.js +140 -42
- 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 +24 -0
- package/dist/VgPlotChart.d.ts.map +1 -1
- package/dist/VgPlotChart.js +127 -21
- package/dist/VgPlotChart.js.map +1 -1
- 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 +28 -0
- package/dist/chart-builders/ChartBuilderActions.js.map +1 -0
- package/dist/chart-builders/ChartBuilderContent.d.ts +28 -0
- package/dist/chart-builders/ChartBuilderContent.d.ts.map +1 -0
- package/dist/chart-builders/ChartBuilderContent.js +28 -0
- package/dist/chart-builders/ChartBuilderContent.js.map +1 -0
- package/dist/chart-builders/ChartBuilderContext.d.ts +16 -0
- package/dist/chart-builders/ChartBuilderContext.d.ts.map +1 -0
- package/dist/chart-builders/ChartBuilderContext.js +15 -0
- package/dist/chart-builders/ChartBuilderContext.js.map +1 -0
- package/dist/chart-builders/ChartBuilderDialog.d.ts +48 -0
- package/dist/chart-builders/ChartBuilderDialog.d.ts.map +1 -0
- package/dist/chart-builders/ChartBuilderDialog.js +30 -0
- package/dist/chart-builders/ChartBuilderDialog.js.map +1 -0
- 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 +25 -0
- package/dist/chart-builders/ChartBuilderFields.js.map +1 -0
- package/dist/chart-builders/ChartBuilderRoot.d.ts +27 -0
- package/dist/chart-builders/ChartBuilderRoot.d.ts.map +1 -0
- package/dist/chart-builders/ChartBuilderRoot.js +61 -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/FieldSelectorInput.d.ts +13 -0
- package/dist/chart-builders/FieldSelectorInput.d.ts.map +1 -0
- package/dist/chart-builders/FieldSelectorInput.js +19 -0
- package/dist/chart-builders/FieldSelectorInput.js.map +1 -0
- package/dist/chart-builders/builders.d.ts +34 -0
- package/dist/chart-builders/builders.d.ts.map +1 -0
- package/dist/chart-builders/builders.js +51 -0
- package/dist/chart-builders/builders.js.map +1 -0
- package/dist/chart-builders/chartSpecTitle.d.ts +6 -0
- package/dist/chart-builders/chartSpecTitle.d.ts.map +1 -0
- package/dist/chart-builders/chartSpecTitle.js +8 -0
- package/dist/chart-builders/chartSpecTitle.js.map +1 -0
- package/dist/chart-builders/chartTypeUtils.d.ts +17 -0
- package/dist/chart-builders/chartTypeUtils.d.ts.map +1 -0
- package/dist/chart-builders/chartTypeUtils.js +55 -0
- package/dist/chart-builders/chartTypeUtils.js.map +1 -0
- package/dist/chart-builders/constants.d.ts +7 -0
- package/dist/chart-builders/constants.d.ts.map +1 -0
- package/dist/chart-builders/constants.js +34 -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-builders/describeChartSpecs.d.ts +9 -0
- package/dist/chart-builders/describeChartSpecs.d.ts.map +1 -0
- package/dist/chart-builders/describeChartSpecs.js +41 -0
- package/dist/chart-builders/describeChartSpecs.js.map +1 -0
- package/dist/chart-builders/hooks/useChartFieldForm.d.ts +13 -0
- package/dist/chart-builders/hooks/useChartFieldForm.d.ts.map +1 -0
- package/dist/chart-builders/hooks/useChartFieldForm.js +12 -0
- package/dist/chart-builders/hooks/useChartFieldForm.js.map +1 -0
- package/dist/chart-builders/types.d.ts +23 -0
- package/dist/chart-builders/types.d.ts.map +1 -0
- package/dist/chart-builders/types.js +17 -0
- package/dist/chart-builders/types.js.map +1 -0
- package/dist/chart-types/base-types.d.ts +54 -0
- package/dist/chart-types/base-types.d.ts.map +1 -0
- package/dist/chart-types/base-types.js +6 -0
- package/dist/chart-types/base-types.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 +45 -0
- package/dist/chart-types/box-plot/definition.js.map +1 -0
- package/dist/chart-types/box-plot/index.d.ts +3 -0
- package/dist/chart-types/box-plot/index.d.ts.map +1 -0
- package/dist/chart-types/box-plot/index.js +3 -0
- package/dist/chart-types/box-plot/index.js.map +1 -0
- package/dist/chart-types/box-plot/schema.d.ts +17 -0
- package/dist/chart-types/box-plot/schema.d.ts.map +1 -0
- package/dist/chart-types/box-plot/schema.js +12 -0
- package/dist/chart-types/box-plot/schema.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 +48 -0
- package/dist/chart-types/bubble-chart/definition.js.map +1 -0
- package/dist/chart-types/bubble-chart/index.d.ts +3 -0
- package/dist/chart-types/bubble-chart/index.d.ts.map +1 -0
- package/dist/chart-types/bubble-chart/index.js +3 -0
- package/dist/chart-types/bubble-chart/index.js.map +1 -0
- package/dist/chart-types/bubble-chart/schema.d.ts +17 -0
- package/dist/chart-types/bubble-chart/schema.d.ts.map +1 -0
- package/dist/chart-types/bubble-chart/schema.js +12 -0
- package/dist/chart-types/bubble-chart/schema.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 +50 -0
- package/dist/chart-types/count-plot/definition.js.map +1 -0
- package/dist/chart-types/count-plot/index.d.ts +3 -0
- package/dist/chart-types/count-plot/index.d.ts.map +1 -0
- package/dist/chart-types/count-plot/index.js +3 -0
- package/dist/chart-types/count-plot/index.js.map +1 -0
- package/dist/chart-types/count-plot/schema.d.ts +15 -0
- package/dist/chart-types/count-plot/schema.d.ts.map +1 -0
- package/dist/chart-types/count-plot/schema.js +11 -0
- package/dist/chart-types/count-plot/schema.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 +28 -0
- package/dist/chart-types/custom-spec/definition.js.map +1 -0
- package/dist/chart-types/custom-spec/index.d.ts +3 -0
- package/dist/chart-types/custom-spec/index.d.ts.map +1 -0
- package/dist/chart-types/custom-spec/index.js +3 -0
- package/dist/chart-types/custom-spec/index.js.map +1 -0
- package/dist/chart-types/custom-spec/schema.d.ts +11 -0
- package/dist/chart-types/custom-spec/schema.d.ts.map +1 -0
- package/dist/chart-types/custom-spec/schema.js +9 -0
- package/dist/chart-types/custom-spec/schema.js.map +1 -0
- package/dist/chart-types/ecdf/definition.d.ts +4 -0
- package/dist/chart-types/ecdf/definition.d.ts.map +1 -0
- package/dist/chart-types/ecdf/definition.js +47 -0
- package/dist/chart-types/ecdf/definition.js.map +1 -0
- package/dist/chart-types/ecdf/index.d.ts +3 -0
- package/dist/chart-types/ecdf/index.d.ts.map +1 -0
- package/dist/chart-types/ecdf/index.js +3 -0
- package/dist/chart-types/ecdf/index.js.map +1 -0
- package/dist/chart-types/ecdf/schema.d.ts +15 -0
- package/dist/chart-types/ecdf/schema.d.ts.map +1 -0
- package/dist/chart-types/ecdf/schema.js +11 -0
- package/dist/chart-types/ecdf/schema.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 +49 -0
- package/dist/chart-types/heatmap/definition.js.map +1 -0
- package/dist/chart-types/heatmap/index.d.ts +3 -0
- package/dist/chart-types/heatmap/index.d.ts.map +1 -0
- package/dist/chart-types/heatmap/index.js +3 -0
- package/dist/chart-types/heatmap/index.js.map +1 -0
- package/dist/chart-types/heatmap/schema.d.ts +17 -0
- package/dist/chart-types/heatmap/schema.d.ts.map +1 -0
- package/dist/chart-types/heatmap/schema.js +12 -0
- package/dist/chart-types/heatmap/schema.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 +49 -0
- package/dist/chart-types/histogram/definition.js.map +1 -0
- package/dist/chart-types/histogram/index.d.ts +3 -0
- package/dist/chart-types/histogram/index.d.ts.map +1 -0
- package/dist/chart-types/histogram/index.js +3 -0
- package/dist/chart-types/histogram/index.js.map +1 -0
- package/dist/chart-types/histogram/schema.d.ts +15 -0
- package/dist/chart-types/histogram/schema.d.ts.map +1 -0
- package/dist/chart-types/histogram/schema.js +11 -0
- package/dist/chart-types/histogram/schema.js.map +1 -0
- package/dist/chart-types/index.d.ts +109 -0
- package/dist/chart-types/index.d.ts.map +1 -0
- package/dist/chart-types/index.js +70 -0
- package/dist/chart-types/index.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 +46 -0
- package/dist/chart-types/line-chart/definition.js.map +1 -0
- package/dist/chart-types/line-chart/index.d.ts +3 -0
- package/dist/chart-types/line-chart/index.d.ts.map +1 -0
- package/dist/chart-types/line-chart/index.js +3 -0
- package/dist/chart-types/line-chart/index.js.map +1 -0
- package/dist/chart-types/line-chart/schema.d.ts +17 -0
- package/dist/chart-types/line-chart/schema.d.ts.map +1 -0
- package/dist/chart-types/line-chart/schema.js +12 -0
- package/dist/chart-types/line-chart/schema.js.map +1 -0
- package/dist/chart-types/registry.d.ts +5 -0
- package/dist/chart-types/registry.d.ts.map +1 -0
- package/dist/chart-types/registry.js +28 -0
- package/dist/chart-types/registry.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 +18 -0
- package/dist/dashboard/MosaicDashboard.d.ts.map +1 -0
- package/dist/dashboard/MosaicDashboard.js +91 -0
- package/dist/dashboard/MosaicDashboard.js.map +1 -0
- package/dist/dashboard/MosaicDashboardContext.d.ts +12 -0
- package/dist/dashboard/MosaicDashboardContext.d.ts.map +1 -0
- package/dist/dashboard/MosaicDashboardContext.js +10 -0
- package/dist/dashboard/MosaicDashboardContext.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 +25 -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 +52 -0
- package/dist/dashboard/MosaicDashboardPanels.js.map +1 -0
- package/dist/dashboard/MosaicDashboardProfilerPanelRenderer.d.ts +3 -0
- package/dist/dashboard/MosaicDashboardProfilerPanelRenderer.d.ts.map +1 -0
- package/dist/dashboard/MosaicDashboardProfilerPanelRenderer.js +32 -0
- package/dist/dashboard/MosaicDashboardProfilerPanelRenderer.js.map +1 -0
- package/dist/dashboard/MosaicDashboardSlice.d.ts +523 -0
- package/dist/dashboard/MosaicDashboardSlice.d.ts.map +1 -0
- package/dist/dashboard/MosaicDashboardSlice.js +615 -0
- package/dist/dashboard/MosaicDashboardSlice.js.map +1 -0
- package/dist/dashboard/MosaicDashboardToolbar.d.ts +3 -0
- package/dist/dashboard/MosaicDashboardToolbar.d.ts.map +1 -0
- package/dist/dashboard/MosaicDashboardToolbar.js +81 -0
- package/dist/dashboard/MosaicDashboardToolbar.js.map +1 -0
- package/dist/dashboard/MosaicDashboardVgPlotHeaderActions.d.ts +4 -0
- package/dist/dashboard/MosaicDashboardVgPlotHeaderActions.d.ts.map +1 -0
- package/dist/dashboard/MosaicDashboardVgPlotHeaderActions.js +29 -0
- package/dist/dashboard/MosaicDashboardVgPlotHeaderActions.js.map +1 -0
- package/dist/dashboard/MosaicDashboardVgPlotPanelRenderer.d.ts +3 -0
- package/dist/dashboard/MosaicDashboardVgPlotPanelRenderer.d.ts.map +1 -0
- package/dist/dashboard/MosaicDashboardVgPlotPanelRenderer.js +68 -0
- package/dist/dashboard/MosaicDashboardVgPlotPanelRenderer.js.map +1 -0
- package/dist/dashboard/VgPlotSpecPopoverEditor.d.ts +8 -0
- package/dist/dashboard/VgPlotSpecPopoverEditor.d.ts.map +1 -0
- package/dist/dashboard/VgPlotSpecPopoverEditor.js +40 -0
- package/dist/dashboard/VgPlotSpecPopoverEditor.js.map +1 -0
- package/dist/dashboard/chart-settings/ChartSettings.d.ts +39 -0
- package/dist/dashboard/chart-settings/ChartSettings.d.ts.map +1 -0
- package/dist/dashboard/chart-settings/ChartSettings.js +90 -0
- package/dist/dashboard/chart-settings/ChartSettings.js.map +1 -0
- package/dist/dashboard/chart-settings/ChartSettingsContext.d.ts +20 -0
- package/dist/dashboard/chart-settings/ChartSettingsContext.d.ts.map +1 -0
- package/dist/dashboard/chart-settings/ChartSettingsContext.js +14 -0
- package/dist/dashboard/chart-settings/ChartSettingsContext.js.map +1 -0
- package/dist/dashboard/chart-settings/ChartSettingsPanel.d.ts +11 -0
- package/dist/dashboard/chart-settings/ChartSettingsPanel.d.ts.map +1 -0
- package/dist/dashboard/chart-settings/ChartSettingsPanel.js +8 -0
- package/dist/dashboard/chart-settings/ChartSettingsPanel.js.map +1 -0
- package/dist/dashboard/chart-settings/ChartTypeSelector.d.ts +11 -0
- package/dist/dashboard/chart-settings/ChartTypeSelector.d.ts.map +1 -0
- package/dist/dashboard/chart-settings/ChartTypeSelector.js +17 -0
- package/dist/dashboard/chart-settings/ChartTypeSelector.js.map +1 -0
- package/dist/dashboard/chart-settings/DynamicChartSettings.d.ts +11 -0
- package/dist/dashboard/chart-settings/DynamicChartSettings.d.ts.map +1 -0
- package/dist/dashboard/chart-settings/DynamicChartSettings.js +19 -0
- package/dist/dashboard/chart-settings/DynamicChartSettings.js.map +1 -0
- package/dist/dashboard/chart-settings/index.d.ts +6 -0
- package/dist/dashboard/chart-settings/index.d.ts.map +1 -0
- package/dist/dashboard/chart-settings/index.js +6 -0
- package/dist/dashboard/chart-settings/index.js.map +1 -0
- package/dist/dashboard/chart-settings/useTableColumns.d.ts +3 -0
- package/dist/dashboard/chart-settings/useTableColumns.d.ts.map +1 -0
- package/dist/dashboard/chart-settings/useTableColumns.js +12 -0
- package/dist/dashboard/chart-settings/useTableColumns.js.map +1 -0
- package/dist/dashboard/defaultPanelRenderers.d.ts +3 -0
- package/dist/dashboard/defaultPanelRenderers.d.ts.map +1 -0
- package/dist/dashboard/defaultPanelRenderers.js +11 -0
- package/dist/dashboard/defaultPanelRenderers.js.map +1 -0
- package/dist/dashboard/generateMosaicChartSpec.d.ts +15 -0
- package/dist/dashboard/generateMosaicChartSpec.d.ts.map +1 -0
- package/dist/dashboard/generateMosaicChartSpec.js +30 -0
- package/dist/dashboard/generateMosaicChartSpec.js.map +1 -0
- package/dist/editor/MosaicChartContainer.d.ts +51 -0
- package/dist/editor/MosaicChartContainer.d.ts.map +1 -0
- package/dist/editor/MosaicChartContainer.js +39 -0
- package/dist/editor/MosaicChartContainer.js.map +1 -0
- package/dist/editor/MosaicChartDisplay.d.ts +18 -0
- package/dist/editor/MosaicChartDisplay.d.ts.map +1 -0
- package/dist/editor/MosaicChartDisplay.js +26 -0
- package/dist/editor/MosaicChartDisplay.js.map +1 -0
- package/dist/editor/MosaicChartEditorActions.d.ts +20 -0
- package/dist/editor/MosaicChartEditorActions.d.ts.map +1 -0
- package/dist/editor/MosaicChartEditorActions.js +18 -0
- package/dist/editor/MosaicChartEditorActions.js.map +1 -0
- package/dist/editor/MosaicCodeMirrorEditor.d.ts +15 -0
- package/dist/editor/MosaicCodeMirrorEditor.d.ts.map +1 -0
- package/dist/editor/MosaicCodeMirrorEditor.js +26 -0
- package/dist/editor/MosaicCodeMirrorEditor.js.map +1 -0
- package/dist/editor/MosaicEditorContext.d.ts +8 -0
- package/dist/editor/MosaicEditorContext.d.ts.map +1 -0
- package/dist/editor/MosaicEditorContext.js +14 -0
- package/dist/editor/MosaicEditorContext.js.map +1 -0
- package/dist/editor/MosaicSpecEditorPanel.d.ts +20 -0
- package/dist/editor/MosaicSpecEditorPanel.d.ts.map +1 -0
- package/dist/editor/MosaicSpecEditorPanel.js +25 -0
- package/dist/editor/MosaicSpecEditorPanel.js.map +1 -0
- package/dist/editor/mosaicSchema.d.ts +20 -0
- package/dist/editor/mosaicSchema.d.ts.map +1 -0
- package/dist/editor/mosaicSchema.js +57 -0
- package/dist/editor/mosaicSchema.js.map +1 -0
- package/dist/editor/types.d.ts +72 -0
- package/dist/editor/types.d.ts.map +1 -0
- package/dist/editor/types.js +2 -0
- package/dist/editor/types.js.map +1 -0
- package/dist/editor/useMosaicChartEditor.d.ts +9 -0
- package/dist/editor/useMosaicChartEditor.d.ts.map +1 -0
- package/dist/editor/useMosaicChartEditor.js +199 -0
- package/dist/editor/useMosaicChartEditor.js.map +1 -0
- package/dist/index.d.ts +53 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +37 -1
- package/dist/index.js.map +1 -1
- package/dist/profiler/MosaicProfiler.d.ts +32 -0
- package/dist/profiler/MosaicProfiler.d.ts.map +1 -0
- package/dist/profiler/MosaicProfiler.js +57 -0
- package/dist/profiler/MosaicProfiler.js.map +1 -0
- package/dist/profiler/MosaicProfilerHeader.d.ts +7 -0
- package/dist/profiler/MosaicProfilerHeader.d.ts.map +1 -0
- package/dist/profiler/MosaicProfilerHeader.js +196 -0
- package/dist/profiler/MosaicProfilerHeader.js.map +1 -0
- package/dist/profiler/MosaicProfilerRows.d.ts +9 -0
- package/dist/profiler/MosaicProfilerRows.d.ts.map +1 -0
- package/dist/profiler/MosaicProfilerRows.js +65 -0
- package/dist/profiler/MosaicProfilerRows.js.map +1 -0
- package/dist/profiler/MosaicProfilerStatusBar.d.ts +9 -0
- package/dist/profiler/MosaicProfilerStatusBar.d.ts.map +1 -0
- package/dist/profiler/MosaicProfilerStatusBar.js +28 -0
- package/dist/profiler/MosaicProfilerStatusBar.js.map +1 -0
- package/dist/profiler/ProfilerCategoryClient.d.ts +50 -0
- package/dist/profiler/ProfilerCategoryClient.d.ts.map +1 -0
- package/dist/profiler/ProfilerCategoryClient.js +121 -0
- package/dist/profiler/ProfilerCategoryClient.js.map +1 -0
- package/dist/profiler/ProfilerCountClient.d.ts +28 -0
- package/dist/profiler/ProfilerCountClient.d.ts.map +1 -0
- package/dist/profiler/ProfilerCountClient.js +51 -0
- package/dist/profiler/ProfilerCountClient.js.map +1 -0
- package/dist/profiler/ProfilerHistogramClient.d.ts +69 -0
- package/dist/profiler/ProfilerHistogramClient.d.ts.map +1 -0
- package/dist/profiler/ProfilerHistogramClient.js +179 -0
- package/dist/profiler/ProfilerHistogramClient.js.map +1 -0
- package/dist/profiler/ProfilerPageClient.d.ts +37 -0
- package/dist/profiler/ProfilerPageClient.d.ts.map +1 -0
- package/dist/profiler/ProfilerPageClient.js +65 -0
- package/dist/profiler/ProfilerPageClient.js.map +1 -0
- package/dist/profiler/ProfilerUnsupportedSummaryClient.d.ts +24 -0
- package/dist/profiler/ProfilerUnsupportedSummaryClient.d.ts.map +1 -0
- package/dist/profiler/ProfilerUnsupportedSummaryClient.js +51 -0
- package/dist/profiler/ProfilerUnsupportedSummaryClient.js.map +1 -0
- package/dist/profiler/createProfilerStore.d.ts +45 -0
- package/dist/profiler/createProfilerStore.d.ts.map +1 -0
- package/dist/profiler/createProfilerStore.js +120 -0
- package/dist/profiler/createProfilerStore.js.map +1 -0
- package/dist/profiler/layout.d.ts +7 -0
- package/dist/profiler/layout.d.ts.map +1 -0
- package/dist/profiler/layout.js +13 -0
- package/dist/profiler/layout.js.map +1 -0
- package/dist/profiler/profilerController.d.ts +64 -0
- package/dist/profiler/profilerController.d.ts.map +1 -0
- package/dist/profiler/profilerController.js +123 -0
- package/dist/profiler/profilerController.js.map +1 -0
- package/dist/profiler/types.d.ts +86 -0
- package/dist/profiler/types.d.ts.map +1 -0
- package/dist/profiler/types.js +2 -0
- package/dist/profiler/types.js.map +1 -0
- package/dist/profiler/useMosaicProfiler.d.ts +7 -0
- package/dist/profiler/useMosaicProfiler.d.ts.map +1 -0
- package/dist/profiler/useMosaicProfiler.js +339 -0
- package/dist/profiler/useMosaicProfiler.js.map +1 -0
- package/dist/profiler/utils.d.ts +61 -0
- package/dist/profiler/utils.d.ts.map +1 -0
- package/dist/profiler/utils.js +347 -0
- package/dist/profiler/utils.js.map +1 -0
- package/dist/tableInterop.d.ts +30 -0
- package/dist/tableInterop.d.ts.map +1 -0
- package/dist/tableInterop.js +85 -0
- package/dist/tableInterop.js.map +1 -0
- package/dist/useMosaicClient.d.ts +5 -15
- package/dist/useMosaicClient.d.ts.map +1 -1
- package/dist/useMosaicClient.js +22 -6
- package/dist/useMosaicClient.js.map +1 -1
- package/package.json +30 -6
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Chart settings compound component for configuring chart types and their parameters.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```tsx
|
|
7
|
+
* <ChartSettings.Root
|
|
8
|
+
* tableName={tableName}
|
|
9
|
+
* config={config}
|
|
10
|
+
* columns={columns}
|
|
11
|
+
* onChange={handleChange}
|
|
12
|
+
* >
|
|
13
|
+
* <ChartSettings.TypeSelector />
|
|
14
|
+
* <ChartSettings.Fields />
|
|
15
|
+
* </ChartSettings.Root>
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
import { useCallback, useMemo } from 'react';
|
|
19
|
+
import { DynamicChartSettings } from './DynamicChartSettings';
|
|
20
|
+
import { ChartTypeSelector } from './ChartTypeSelector';
|
|
21
|
+
import { ChartSettingsProvider, useChartSettingsContext, } from './ChartSettingsContext';
|
|
22
|
+
import { generateMosaicChartSpec } from '../generateMosaicChartSpec';
|
|
23
|
+
import { getChartTypeDefinition } from '../../chart-types/registry';
|
|
24
|
+
import { Button } from '@sqlrooms/ui';
|
|
25
|
+
import { XIcon } from 'lucide-react';
|
|
26
|
+
const ChartSettingsRoot = ({ tableName, config, columns, onChange, children, }) => {
|
|
27
|
+
return (_jsx(ChartSettingsProvider, { tableName: tableName, config: config, columns: columns, onChange: onChange, children: children }));
|
|
28
|
+
};
|
|
29
|
+
const ChartSettingsHeader = ({ children, onClose, }) => {
|
|
30
|
+
return (_jsxs("div", { className: "flex items-center justify-between border-b px-3 py-1.5 text-xs font-medium", children: [children, onClose && (_jsx(Button, { variant: "ghost", size: "icon", className: "h-5 w-5", onClick: onClose, children: _jsx(XIcon, { className: "h-3.5 w-3.5" }) }))] }));
|
|
31
|
+
};
|
|
32
|
+
const ChartSettingsContent = ({ children }) => {
|
|
33
|
+
return _jsx("div", { className: "flex flex-col gap-2 p-2", children: children });
|
|
34
|
+
};
|
|
35
|
+
const ChartSettingsTypeSelector = () => {
|
|
36
|
+
const { config, columns, onChange } = useChartSettingsContext();
|
|
37
|
+
const handleChartTypeChange = (newChartType) => {
|
|
38
|
+
// When changing chart type, clear settings and don't show chart
|
|
39
|
+
// until user selects all required fields
|
|
40
|
+
onChange({
|
|
41
|
+
chartType: newChartType,
|
|
42
|
+
settings: {},
|
|
43
|
+
vgplot: null,
|
|
44
|
+
settingsOpen: config.settingsOpen,
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
return (_jsx(ChartTypeSelector, { value: config.chartType, columns: columns, onChange: handleChartTypeChange }));
|
|
48
|
+
};
|
|
49
|
+
const ChartSettingsFields = () => {
|
|
50
|
+
const { tableName, config, columns, onChange } = useChartSettingsContext();
|
|
51
|
+
const chartTypeDef = getChartTypeDefinition(config.chartType);
|
|
52
|
+
// Memoize columns mapping
|
|
53
|
+
const mappedColumns = useMemo(() => columns.map((col) => ({ name: col.name, type: col.type })), [columns]);
|
|
54
|
+
const handleSettingsChange = useCallback((newSettings) => {
|
|
55
|
+
if (!chartTypeDef)
|
|
56
|
+
return;
|
|
57
|
+
// Check if all required fields are filled
|
|
58
|
+
const allRequiredFieldsFilled = chartTypeDef.fields
|
|
59
|
+
.filter((field) => field.required !== false)
|
|
60
|
+
.every((field) => {
|
|
61
|
+
const value = newSettings[field.key];
|
|
62
|
+
return value !== undefined && value !== null && value !== '';
|
|
63
|
+
});
|
|
64
|
+
// Generate spec
|
|
65
|
+
const vgplot = allRequiredFieldsFilled
|
|
66
|
+
? generateMosaicChartSpec(tableName, config.chartType, newSettings)
|
|
67
|
+
: null;
|
|
68
|
+
onChange({
|
|
69
|
+
...config,
|
|
70
|
+
settings: newSettings,
|
|
71
|
+
vgplot,
|
|
72
|
+
});
|
|
73
|
+
}, [chartTypeDef, config, onChange, tableName]);
|
|
74
|
+
if (!chartTypeDef) {
|
|
75
|
+
console.error(`[ChartSettings] Unknown chart type: ${config.chartType}`);
|
|
76
|
+
return (_jsxs("div", { className: "text-muted-foreground flex h-full items-center justify-center p-4 text-sm", children: ["Unknown chart type: ", config.chartType] }));
|
|
77
|
+
}
|
|
78
|
+
if (columns.length === 0) {
|
|
79
|
+
return (_jsx("div", { className: "text-muted-foreground flex h-full items-center justify-center p-4 text-sm", children: "No columns available" }));
|
|
80
|
+
}
|
|
81
|
+
return (_jsx(DynamicChartSettings, { chartTypeDefinition: chartTypeDef, columns: mappedColumns, values: config.settings, onChange: handleSettingsChange }));
|
|
82
|
+
};
|
|
83
|
+
export const ChartSettings = {
|
|
84
|
+
Root: ChartSettingsRoot,
|
|
85
|
+
Header: ChartSettingsHeader,
|
|
86
|
+
Content: ChartSettingsContent,
|
|
87
|
+
TypeSelector: ChartSettingsTypeSelector,
|
|
88
|
+
Fields: ChartSettingsFields,
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=ChartSettings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartSettings.js","sourceRoot":"","sources":["../../../src/dashboard/chart-settings/ChartSettings.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAkC,WAAW,EAAE,OAAO,EAAC,MAAM,OAAO,CAAC;AAC5E,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,EACL,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAC,uBAAuB,EAAC,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAC,sBAAsB,EAAC,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAC,MAAM,EAAC,MAAM,cAAc,CAAC;AACpC,OAAO,EAAC,KAAK,EAAC,MAAM,cAAc,CAAC;AASnC,MAAM,iBAAiB,GAAkD,CAAC,EACxE,SAAS,EACT,MAAM,EACN,OAAO,EACP,QAAQ,EACR,QAAQ,GACT,EAAE,EAAE;IACH,OAAO,CACL,KAAC,qBAAqB,IACpB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,YAEjB,QAAQ,GACa,CACzB,CAAC;AACJ,CAAC,CAAC;AAMF,MAAM,mBAAmB,GAAiC,CAAC,EACzD,QAAQ,EACR,OAAO,GACR,EAAE,EAAE;IACH,OAAO,CACL,eAAK,SAAS,EAAC,4EAA4E,aACxF,QAAQ,EACR,OAAO,IAAI,CACV,KAAC,MAAM,IACL,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,MAAM,EACX,SAAS,EAAC,SAAS,EACnB,OAAO,EAAE,OAAO,YAEhB,KAAC,KAAK,IAAC,SAAS,EAAC,aAAa,GAAG,GAC1B,CACV,IACG,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAA0B,CAAC,EAAC,QAAQ,EAAC,EAAE,EAAE;IACjE,OAAO,cAAK,SAAS,EAAC,yBAAyB,YAAE,QAAQ,GAAO,CAAC;AACnE,CAAC,CAAC;AAEF,MAAM,yBAAyB,GAAO,GAAG,EAAE;IACzC,MAAM,EAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAC,GAAG,uBAAuB,EAAE,CAAC;IAE9D,MAAM,qBAAqB,GAAG,CAAC,YAA6B,EAAE,EAAE;QAC9D,gEAAgE;QAChE,yCAAyC;QACzC,QAAQ,CAAC;YACP,SAAS,EAAE,YAAY;YACvB,QAAQ,EAAE,EAAE;YACZ,MAAM,EAAE,IAAI;YACZ,YAAY,EAAE,MAAM,CAAC,YAAY;SAClC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,iBAAiB,IAChB,KAAK,EAAE,MAAM,CAAC,SAAS,EACvB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,qBAAqB,GAC/B,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAO,GAAG,EAAE;IACnC,MAAM,EAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAC,GAAG,uBAAuB,EAAE,CAAC;IACzE,MAAM,YAAY,GAAG,sBAAsB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAE9D,0BAA0B;IAC1B,MAAM,aAAa,GAAG,OAAO,CAC3B,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAC,CAAC,CAAC,EAC9D,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,MAAM,oBAAoB,GAAG,WAAW,CACtC,CAAC,WAAoC,EAAE,EAAE;QACvC,IAAI,CAAC,YAAY;YAAE,OAAO;QAE1B,0CAA0C;QAC1C,MAAM,uBAAuB,GAAG,YAAY,CAAC,MAAM;aAChD,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC;aAC3C,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACf,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrC,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEL,gBAAgB;QAChB,MAAM,MAAM,GAAG,uBAAuB;YACpC,CAAC,CAAC,uBAAuB,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC;YACnE,CAAC,CAAC,IAAI,CAAC;QAET,QAAQ,CAAC;YACP,GAAG,MAAM;YACT,QAAQ,EAAE,WAAW;YACrB,MAAM;SACP,CAAC,CAAC;IACL,CAAC,EACD,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAC5C,CAAC;IAEF,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,uCAAuC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QACzE,OAAO,CACL,eAAK,SAAS,EAAC,2EAA2E,qCACnE,MAAM,CAAC,SAAS,IACjC,CACP,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CACL,cAAK,SAAS,EAAC,2EAA2E,qCAEpF,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,KAAC,oBAAoB,IACnB,mBAAmB,EAAE,YAAY,EACjC,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,MAAM,CAAC,QAAQ,EACvB,QAAQ,EAAE,oBAAoB,GAC9B,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,iBAAiB;IACvB,MAAM,EAAE,mBAAmB;IAC3B,OAAO,EAAE,oBAAoB;IAC7B,YAAY,EAAE,yBAAyB;IACvC,MAAM,EAAE,mBAAmB;CAC5B,CAAC","sourcesContent":["/**\n * Chart settings compound component for configuring chart types and their parameters.\n *\n * @example\n * ```tsx\n * <ChartSettings.Root\n * tableName={tableName}\n * config={config}\n * columns={columns}\n * onChange={handleChange}\n * >\n * <ChartSettings.TypeSelector />\n * <ChartSettings.Fields />\n * </ChartSettings.Root>\n * ```\n */\nimport {type FC, type PropsWithChildren, useCallback, useMemo} from 'react';\nimport {DynamicChartSettings} from './DynamicChartSettings';\nimport {ChartTypeSelector} from './ChartTypeSelector';\nimport {\n ChartSettingsProvider,\n useChartSettingsContext,\n} from './ChartSettingsContext';\nimport type {TableColumn} from '@sqlrooms/duckdb';\nimport {type VgPlotChartConfig, type VgPlotChartType} from '../../chart-types';\nimport {generateMosaicChartSpec} from '../generateMosaicChartSpec';\nimport {getChartTypeDefinition} from '../../chart-types/registry';\nimport {Button} from '@sqlrooms/ui';\nimport {XIcon} from 'lucide-react';\n\ninterface ChartSettingsRootProps {\n tableName?: string;\n config: VgPlotChartConfig;\n columns: TableColumn[];\n onChange: (config: VgPlotChartConfig) => void;\n}\n\nconst ChartSettingsRoot: FC<PropsWithChildren<ChartSettingsRootProps>> = ({\n tableName,\n config,\n columns,\n onChange,\n children,\n}) => {\n return (\n <ChartSettingsProvider\n tableName={tableName}\n config={config}\n columns={columns}\n onChange={onChange}\n >\n {children}\n </ChartSettingsProvider>\n );\n};\n\ntype ChartSettingsHeaderProps = PropsWithChildren<{\n onClose?: () => void;\n}>;\n\nconst ChartSettingsHeader: FC<ChartSettingsHeaderProps> = ({\n children,\n onClose,\n}) => {\n return (\n <div className=\"flex items-center justify-between border-b px-3 py-1.5 text-xs font-medium\">\n {children}\n {onClose && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-5 w-5\"\n onClick={onClose}\n >\n <XIcon className=\"h-3.5 w-3.5\" />\n </Button>\n )}\n </div>\n );\n};\n\nconst ChartSettingsContent: FC<PropsWithChildren> = ({children}) => {\n return <div className=\"flex flex-col gap-2 p-2\">{children}</div>;\n};\n\nconst ChartSettingsTypeSelector: FC = () => {\n const {config, columns, onChange} = useChartSettingsContext();\n\n const handleChartTypeChange = (newChartType: VgPlotChartType) => {\n // When changing chart type, clear settings and don't show chart\n // until user selects all required fields\n onChange({\n chartType: newChartType,\n settings: {},\n vgplot: null,\n settingsOpen: config.settingsOpen,\n });\n };\n\n return (\n <ChartTypeSelector\n value={config.chartType}\n columns={columns}\n onChange={handleChartTypeChange}\n />\n );\n};\n\nconst ChartSettingsFields: FC = () => {\n const {tableName, config, columns, onChange} = useChartSettingsContext();\n const chartTypeDef = getChartTypeDefinition(config.chartType);\n\n // Memoize columns mapping\n const mappedColumns = useMemo(\n () => columns.map((col) => ({name: col.name, type: col.type})),\n [columns],\n );\n\n const handleSettingsChange = useCallback(\n (newSettings: Record<string, unknown>) => {\n if (!chartTypeDef) return;\n\n // Check if all required fields are filled\n const allRequiredFieldsFilled = chartTypeDef.fields\n .filter((field) => field.required !== false)\n .every((field) => {\n const value = newSettings[field.key];\n return value !== undefined && value !== null && value !== '';\n });\n\n // Generate spec\n const vgplot = allRequiredFieldsFilled\n ? generateMosaicChartSpec(tableName, config.chartType, newSettings)\n : null;\n\n onChange({\n ...config,\n settings: newSettings,\n vgplot,\n });\n },\n [chartTypeDef, config, onChange, tableName],\n );\n\n if (!chartTypeDef) {\n console.error(`[ChartSettings] Unknown chart type: ${config.chartType}`);\n return (\n <div className=\"text-muted-foreground flex h-full items-center justify-center p-4 text-sm\">\n Unknown chart type: {config.chartType}\n </div>\n );\n }\n\n if (columns.length === 0) {\n return (\n <div className=\"text-muted-foreground flex h-full items-center justify-center p-4 text-sm\">\n No columns available\n </div>\n );\n }\n\n return (\n <DynamicChartSettings\n chartTypeDefinition={chartTypeDef}\n columns={mappedColumns}\n values={config.settings}\n onChange={handleSettingsChange}\n />\n );\n};\n\nexport const ChartSettings = {\n Root: ChartSettingsRoot,\n Header: ChartSettingsHeader,\n Content: ChartSettingsContent,\n TypeSelector: ChartSettingsTypeSelector,\n Fields: ChartSettingsFields,\n};\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import type { TableColumn } from '@sqlrooms/duckdb';
|
|
3
|
+
import type { VgPlotChartConfig } from '../../chart-types';
|
|
4
|
+
interface ChartSettingsContextValue {
|
|
5
|
+
tableName?: string;
|
|
6
|
+
config: VgPlotChartConfig;
|
|
7
|
+
columns: TableColumn[];
|
|
8
|
+
onChange: (config: VgPlotChartConfig) => void;
|
|
9
|
+
}
|
|
10
|
+
export declare function useChartSettingsContext(): ChartSettingsContextValue;
|
|
11
|
+
interface ChartSettingsProviderProps {
|
|
12
|
+
tableName?: string;
|
|
13
|
+
config: VgPlotChartConfig;
|
|
14
|
+
columns: TableColumn[];
|
|
15
|
+
onChange: (config: VgPlotChartConfig) => void;
|
|
16
|
+
children: ReactNode;
|
|
17
|
+
}
|
|
18
|
+
export declare function ChartSettingsProvider({ tableName, config, columns, onChange, children, }: ChartSettingsProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=ChartSettingsContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartSettingsContext.d.ts","sourceRoot":"","sources":["../../../src/dashboard/chart-settings/ChartSettingsContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,SAAS,EAAa,MAAM,OAAO,CAAC;AAChE,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,mBAAmB,CAAC;AAEzD,UAAU,yBAAyB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,QAAQ,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC/C;AAMD,wBAAgB,uBAAuB,8BAQtC;AAED,UAAU,0BAA0B;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,QAAQ,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC9C,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,qBAAqB,CAAC,EACpC,SAAS,EACT,MAAM,EACN,OAAO,EACP,QAAQ,EACR,QAAQ,GACT,EAAE,0BAA0B,2CAQ5B"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useContext } from 'react';
|
|
3
|
+
const ChartSettingsContext = createContext(null);
|
|
4
|
+
export function useChartSettingsContext() {
|
|
5
|
+
const context = useContext(ChartSettingsContext);
|
|
6
|
+
if (!context) {
|
|
7
|
+
throw new Error('ChartSettings compound components must be used within ChartSettings.Root');
|
|
8
|
+
}
|
|
9
|
+
return context;
|
|
10
|
+
}
|
|
11
|
+
export function ChartSettingsProvider({ tableName, config, columns, onChange, children, }) {
|
|
12
|
+
return (_jsx(ChartSettingsContext.Provider, { value: { tableName, config, columns, onChange }, children: children }));
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=ChartSettingsContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartSettingsContext.js","sourceRoot":"","sources":["../../../src/dashboard/chart-settings/ChartSettingsContext.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,aAAa,EAAkB,UAAU,EAAC,MAAM,OAAO,CAAC;AAWhE,MAAM,oBAAoB,GAAG,aAAa,CACxC,IAAI,CACL,CAAC;AAEF,MAAM,UAAU,uBAAuB;IACrC,MAAM,OAAO,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,0EAA0E,CAC3E,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAUD,MAAM,UAAU,qBAAqB,CAAC,EACpC,SAAS,EACT,MAAM,EACN,OAAO,EACP,QAAQ,EACR,QAAQ,GACmB;IAC3B,OAAO,CACL,KAAC,oBAAoB,CAAC,QAAQ,IAC5B,KAAK,EAAE,EAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAC,YAE5C,QAAQ,GACqB,CACjC,CAAC;AACJ,CAAC","sourcesContent":["import {createContext, type ReactNode, useContext} from 'react';\nimport type {TableColumn} from '@sqlrooms/duckdb';\nimport type {VgPlotChartConfig} from '../../chart-types';\n\ninterface ChartSettingsContextValue {\n tableName?: string;\n config: VgPlotChartConfig;\n columns: TableColumn[];\n onChange: (config: VgPlotChartConfig) => void;\n}\n\nconst ChartSettingsContext = createContext<ChartSettingsContextValue | null>(\n null,\n);\n\nexport function useChartSettingsContext() {\n const context = useContext(ChartSettingsContext);\n if (!context) {\n throw new Error(\n 'ChartSettings compound components must be used within ChartSettings.Root',\n );\n }\n return context;\n}\n\ninterface ChartSettingsProviderProps {\n tableName?: string;\n config: VgPlotChartConfig;\n columns: TableColumn[];\n onChange: (config: VgPlotChartConfig) => void;\n children: ReactNode;\n}\n\nexport function ChartSettingsProvider({\n tableName,\n config,\n columns,\n onChange,\n children,\n}: ChartSettingsProviderProps) {\n return (\n <ChartSettingsContext.Provider\n value={{tableName, config, columns, onChange}}\n >\n {children}\n </ChartSettingsContext.Provider>\n );\n}\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { VgPlotChartConfig } from '../../chart-types';
|
|
3
|
+
interface ChartSettingsPanelProps {
|
|
4
|
+
tableName?: string;
|
|
5
|
+
config: VgPlotChartConfig;
|
|
6
|
+
onChange: (settings: VgPlotChartConfig) => void;
|
|
7
|
+
onClose?: () => void;
|
|
8
|
+
}
|
|
9
|
+
export declare const ChartSettingsPanel: FC<ChartSettingsPanelProps>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=ChartSettingsPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartSettingsPanel.d.ts","sourceRoot":"","sources":["../../../src/dashboard/chart-settings/ChartSettingsPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,EAAE,EAAC,MAAM,OAAO,CAAC;AAEzB,OAAO,EAAC,iBAAiB,EAAC,MAAM,mBAAmB,CAAC;AAGpD,UAAU,uBAAuB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,EAAE,CAAC,QAAQ,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAChD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,eAAO,MAAM,kBAAkB,EAAE,EAAE,CAAC,uBAAuB,CAwB1D,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ChartSettings } from './ChartSettings';
|
|
3
|
+
import { useTableColumns } from './useTableColumns';
|
|
4
|
+
export const ChartSettingsPanel = ({ tableName, config, onChange, onClose, }) => {
|
|
5
|
+
const columns = useTableColumns(tableName);
|
|
6
|
+
return (_jsxs(ChartSettings.Root, { tableName: tableName, config: config, columns: columns, onChange: onChange, children: [_jsx(ChartSettings.Header, { onClose: onClose, children: "Chart settings" }), _jsxs(ChartSettings.Content, { children: [_jsx(ChartSettings.TypeSelector, {}), _jsx(ChartSettings.Fields, {})] })] }));
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=ChartSettingsPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartSettingsPanel.js","sourceRoot":"","sources":["../../../src/dashboard/chart-settings/ChartSettingsPanel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AASlD,MAAM,CAAC,MAAM,kBAAkB,GAAgC,CAAC,EAC9D,SAAS,EACT,MAAM,EACN,QAAQ,EACR,OAAO,GACR,EAAE,EAAE;IACH,MAAM,OAAO,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAE3C,OAAO,CACL,MAAC,aAAa,CAAC,IAAI,IACjB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,aAElB,KAAC,aAAa,CAAC,MAAM,IAAC,OAAO,EAAE,OAAO,+BAEf,EACvB,MAAC,aAAa,CAAC,OAAO,eACpB,KAAC,aAAa,CAAC,YAAY,KAAG,EAC9B,KAAC,aAAa,CAAC,MAAM,KAAG,IACF,IACL,CACtB,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {FC} from 'react';\nimport {ChartSettings} from './ChartSettings';\nimport {VgPlotChartConfig} from '../../chart-types';\nimport {useTableColumns} from './useTableColumns';\n\ninterface ChartSettingsPanelProps {\n tableName?: string;\n config: VgPlotChartConfig;\n onChange: (settings: VgPlotChartConfig) => void;\n onClose?: () => void;\n}\n\nexport const ChartSettingsPanel: FC<ChartSettingsPanelProps> = ({\n tableName,\n config,\n onChange,\n onClose,\n}) => {\n const columns = useTableColumns(tableName);\n\n return (\n <ChartSettings.Root\n tableName={tableName}\n config={config}\n columns={columns}\n onChange={onChange}\n >\n <ChartSettings.Header onClose={onClose}>\n Chart settings\n </ChartSettings.Header>\n <ChartSettings.Content>\n <ChartSettings.TypeSelector />\n <ChartSettings.Fields />\n </ChartSettings.Content>\n </ChartSettings.Root>\n );\n};\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import type { TableColumn } from '@sqlrooms/duckdb';
|
|
3
|
+
import { VgPlotChartType } from '../../chart-types';
|
|
4
|
+
interface ChartTypeSelectorProps {
|
|
5
|
+
value: VgPlotChartType;
|
|
6
|
+
columns: TableColumn[];
|
|
7
|
+
onChange: (chartType: VgPlotChartType) => void;
|
|
8
|
+
}
|
|
9
|
+
export declare const ChartTypeSelector: FC<ChartTypeSelectorProps>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=ChartTypeSelector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartTypeSelector.d.ts","sourceRoot":"","sources":["../../../src/dashboard/chart-settings/ChartTypeSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,EAAgB,MAAM,OAAO,CAAC;AAS7C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAGlD,OAAO,EAAC,eAAe,EAA0B,MAAM,mBAAmB,CAAC;AAG3E,UAAU,sBAAsB;IAC9B,KAAK,EAAE,eAAe,CAAC;IACvB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,QAAQ,EAAE,CAAC,SAAS,EAAE,eAAe,KAAK,IAAI,CAAC;CAChD;AAED,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,sBAAsB,CAuDxD,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { memo, useMemo } from 'react';
|
|
3
|
+
import { Label, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@sqlrooms/ui';
|
|
4
|
+
import { isChartTypeAvailable } from '../../chart-builders/chartTypeUtils';
|
|
5
|
+
import { createChartBuilderTemplates } from '../../chart-builders/builders';
|
|
6
|
+
import { createDefaultChartTypes } from '../../chart-types';
|
|
7
|
+
import { useStoreWithMosaicDashboard } from '../MosaicDashboardSlice';
|
|
8
|
+
export const ChartTypeSelector = memo(({ value, columns, onChange }) => {
|
|
9
|
+
const chartTypesFromStore = useStoreWithMosaicDashboard((state) => state.mosaicDashboard.chartTypes);
|
|
10
|
+
const chartTypes = useMemo(() => chartTypesFromStore || createDefaultChartTypes(), [chartTypesFromStore]);
|
|
11
|
+
const templates = useMemo(() => createChartBuilderTemplates(chartTypes), [chartTypes]);
|
|
12
|
+
const availableTemplates = useMemo(() => templates.filter((template) => isChartTypeAvailable(template, columns)), [columns, templates]);
|
|
13
|
+
const selectedTemplate = useMemo(() => availableTemplates.find((template) => template.id === value), [availableTemplates, value]);
|
|
14
|
+
return (_jsxs("div", { className: "space-y-2", children: [_jsx(Label, { className: "text-xs", children: "Chart Type" }), _jsxs(Select, { value: value, onValueChange: onChange, children: [_jsx(SelectTrigger, { className: "h-8 text-xs", children: selectedTemplate ? (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(selectedTemplate.icon, { className: "h-3.5 w-3.5" }), _jsx("span", { children: selectedTemplate.label })] })) : (_jsx(SelectValue, { placeholder: "Select chart type" })) }), _jsx(SelectContent, { className: "text-xs", children: availableTemplates.map((template) => (_jsx(SelectItem, { value: template.id, children: _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(template.icon, { className: "h-3.5 w-3.5" }), _jsx("span", { children: template.label })] }) }, template.id))) })] })] }));
|
|
15
|
+
});
|
|
16
|
+
ChartTypeSelector.displayName = 'ChartTypeSelector';
|
|
17
|
+
//# sourceMappingURL=ChartTypeSelector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartTypeSelector.js","sourceRoot":"","sources":["../../../src/dashboard/chart-settings/ChartTypeSelector.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAU,IAAI,EAAE,OAAO,EAAC,MAAM,OAAO,CAAC;AAC7C,OAAO,EACL,KAAK,EACL,MAAM,EACN,aAAa,EACb,UAAU,EACV,aAAa,EACb,WAAW,GACZ,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAC,oBAAoB,EAAC,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAC,2BAA2B,EAAC,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAkB,uBAAuB,EAAC,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAC,2BAA2B,EAAC,MAAM,yBAAyB,CAAC;AAQpE,MAAM,CAAC,MAAM,iBAAiB,GAA+B,IAAI,CAC/D,CAAC,EAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAC,EAAE,EAAE;IAC7B,MAAM,mBAAmB,GAAG,2BAA2B,CACrD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,UAAU,CAC5C,CAAC;IAEF,MAAM,UAAU,GAAG,OAAO,CACxB,GAAG,EAAE,CAAC,mBAAmB,IAAI,uBAAuB,EAAE,EACtD,CAAC,mBAAmB,CAAC,CACtB,CAAC;IAEF,MAAM,SAAS,GAAG,OAAO,CACvB,GAAG,EAAE,CAAC,2BAA2B,CAAC,UAAU,CAAC,EAC7C,CAAC,UAAU,CAAC,CACb,CAAC;IAEF,MAAM,kBAAkB,GAAG,OAAO,CAChC,GAAG,EAAE,CACH,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,EACzE,CAAC,OAAO,EAAE,SAAS,CAAC,CACrB,CAAC;IAEF,MAAM,gBAAgB,GAAG,OAAO,CAC9B,GAAG,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,KAAK,CAAC,EAClE,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAC5B,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,WAAW,aACxB,KAAC,KAAK,IAAC,SAAS,EAAC,SAAS,2BAAmB,EAC7C,MAAC,MAAM,IAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,aAC3C,KAAC,aAAa,IAAC,SAAS,EAAC,aAAa,YACnC,gBAAgB,CAAC,CAAC,CAAC,CAClB,eAAK,SAAS,EAAC,yBAAyB,aACtC,KAAC,gBAAgB,CAAC,IAAI,IAAC,SAAS,EAAC,aAAa,GAAG,EACjD,yBAAO,gBAAgB,CAAC,KAAK,GAAQ,IACjC,CACP,CAAC,CAAC,CAAC,CACF,KAAC,WAAW,IAAC,WAAW,EAAC,mBAAmB,GAAG,CAChD,GACa,EAChB,KAAC,aAAa,IAAC,SAAS,EAAC,SAAS,YAC/B,kBAAkB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CACpC,KAAC,UAAU,IAAmB,KAAK,EAAE,QAAQ,CAAC,EAAE,YAC9C,eAAK,SAAS,EAAC,yBAAyB,aACtC,KAAC,QAAQ,CAAC,IAAI,IAAC,SAAS,EAAC,aAAa,GAAG,EACzC,yBAAO,QAAQ,CAAC,KAAK,GAAQ,IACzB,IAJS,QAAQ,CAAC,EAAE,CAKf,CACd,CAAC,GACY,IACT,IACL,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,iBAAiB,CAAC,WAAW,GAAG,mBAAmB,CAAC","sourcesContent":["import {type FC, memo, useMemo} from 'react';\nimport {\n Label,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@sqlrooms/ui';\nimport type {TableColumn} from '@sqlrooms/duckdb';\nimport {isChartTypeAvailable} from '../../chart-builders/chartTypeUtils';\nimport {createChartBuilderTemplates} from '../../chart-builders/builders';\nimport {VgPlotChartType, createDefaultChartTypes} from '../../chart-types';\nimport {useStoreWithMosaicDashboard} from '../MosaicDashboardSlice';\n\ninterface ChartTypeSelectorProps {\n value: VgPlotChartType;\n columns: TableColumn[];\n onChange: (chartType: VgPlotChartType) => void;\n}\n\nexport const ChartTypeSelector: FC<ChartTypeSelectorProps> = memo(\n ({value, columns, onChange}) => {\n const chartTypesFromStore = useStoreWithMosaicDashboard(\n (state) => state.mosaicDashboard.chartTypes,\n );\n\n const chartTypes = useMemo(\n () => chartTypesFromStore || createDefaultChartTypes(),\n [chartTypesFromStore],\n );\n\n const templates = useMemo(\n () => createChartBuilderTemplates(chartTypes),\n [chartTypes],\n );\n\n const availableTemplates = useMemo(\n () =>\n templates.filter((template) => isChartTypeAvailable(template, columns)),\n [columns, templates],\n );\n\n const selectedTemplate = useMemo(\n () => availableTemplates.find((template) => template.id === value),\n [availableTemplates, value],\n );\n\n return (\n <div className=\"space-y-2\">\n <Label className=\"text-xs\">Chart Type</Label>\n <Select value={value} onValueChange={onChange}>\n <SelectTrigger className=\"h-8 text-xs\">\n {selectedTemplate ? (\n <div className=\"flex items-center gap-2\">\n <selectedTemplate.icon className=\"h-3.5 w-3.5\" />\n <span>{selectedTemplate.label}</span>\n </div>\n ) : (\n <SelectValue placeholder=\"Select chart type\" />\n )}\n </SelectTrigger>\n <SelectContent className=\"text-xs\">\n {availableTemplates.map((template) => (\n <SelectItem key={template.id} value={template.id}>\n <div className=\"flex items-center gap-2\">\n <template.icon className=\"h-3.5 w-3.5\" />\n <span>{template.label}</span>\n </div>\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n );\n },\n);\n\nChartTypeSelector.displayName = 'ChartTypeSelector';\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import type { ChartTypeDefinition, ChartBuilderColumn } from '../../chart-builders/types';
|
|
3
|
+
interface DynamicChartSettingsProps {
|
|
4
|
+
chartTypeDefinition: ChartTypeDefinition;
|
|
5
|
+
columns: ChartBuilderColumn[];
|
|
6
|
+
values: Record<string, unknown>;
|
|
7
|
+
onChange: (values: Record<string, unknown>) => void;
|
|
8
|
+
}
|
|
9
|
+
export declare const DynamicChartSettings: FC<DynamicChartSettingsProps>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=DynamicChartSettings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DynamicChartSettings.d.ts","sourceRoot":"","sources":["../../../src/dashboard/chart-settings/DynamicChartSettings.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,EAAO,MAAM,OAAO,CAAC;AAGpC,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,4BAA4B,CAAC;AAEpC,UAAU,yBAAyB;IACjC,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CACrD;AAED,eAAO,MAAM,oBAAoB,EAAE,EAAE,CAAC,yBAAyB,CAgC9D,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { memo } from 'react';
|
|
3
|
+
import { useChartFieldForm } from '../../chart-builders/hooks/useChartFieldForm';
|
|
4
|
+
import { FieldSelectorInput } from '../../chart-builders/FieldSelectorInput';
|
|
5
|
+
export const DynamicChartSettings = memo(({ chartTypeDefinition, columns, values, onChange }) => {
|
|
6
|
+
const { fields, handleFieldChange } = useChartFieldForm({
|
|
7
|
+
fields: chartTypeDefinition.fields,
|
|
8
|
+
values,
|
|
9
|
+
onChange: (key, value) => {
|
|
10
|
+
onChange({ ...values, [key]: value });
|
|
11
|
+
},
|
|
12
|
+
});
|
|
13
|
+
if (fields.length === 0) {
|
|
14
|
+
return (_jsx("div", { className: "text-muted-foreground text-sm", children: "No settings available for this chart type" }));
|
|
15
|
+
}
|
|
16
|
+
return (_jsx("div", { className: "space-y-4", children: fields.map((field) => (_jsx(FieldSelectorInput, { field: field, columns: columns, value: values[field.key], onChange: (value) => handleFieldChange(field.key, value) }, field.key))) }));
|
|
17
|
+
});
|
|
18
|
+
DynamicChartSettings.displayName = 'DynamicChartSettings';
|
|
19
|
+
//# sourceMappingURL=DynamicChartSettings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DynamicChartSettings.js","sourceRoot":"","sources":["../../../src/dashboard/chart-settings/DynamicChartSettings.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAU,IAAI,EAAC,MAAM,OAAO,CAAC;AACpC,OAAO,EAAC,iBAAiB,EAAC,MAAM,8CAA8C,CAAC;AAC/E,OAAO,EAAC,kBAAkB,EAAC,MAAM,yCAAyC,CAAC;AAa3E,MAAM,CAAC,MAAM,oBAAoB,GAAkC,IAAI,CACrE,CAAC,EAAC,mBAAmB,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAC,EAAE,EAAE;IACnD,MAAM,EAAC,MAAM,EAAE,iBAAiB,EAAC,GAAG,iBAAiB,CAAC;QACpD,MAAM,EAAE,mBAAmB,CAAC,MAAM;QAClC,MAAM;QACN,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YACvB,QAAQ,CAAC,EAAC,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAC,CAAC,CAAC;QACtC,CAAC;KACF,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CACL,cAAK,SAAS,EAAC,+BAA+B,0DAExC,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,cAAK,SAAS,EAAC,WAAW,YACvB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACrB,KAAC,kBAAkB,IAEjB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAW,EAClC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAJnD,KAAK,CAAC,GAAG,CAKd,CACH,CAAC,GACE,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,oBAAoB,CAAC,WAAW,GAAG,sBAAsB,CAAC","sourcesContent":["import {type FC, memo} from 'react';\nimport {useChartFieldForm} from '../../chart-builders/hooks/useChartFieldForm';\nimport {FieldSelectorInput} from '../../chart-builders/FieldSelectorInput';\nimport type {\n ChartTypeDefinition,\n ChartBuilderColumn,\n} from '../../chart-builders/types';\n\ninterface DynamicChartSettingsProps {\n chartTypeDefinition: ChartTypeDefinition;\n columns: ChartBuilderColumn[];\n values: Record<string, unknown>;\n onChange: (values: Record<string, unknown>) => void;\n}\n\nexport const DynamicChartSettings: FC<DynamicChartSettingsProps> = memo(\n ({chartTypeDefinition, columns, values, onChange}) => {\n const {fields, handleFieldChange} = useChartFieldForm({\n fields: chartTypeDefinition.fields,\n values,\n onChange: (key, value) => {\n onChange({...values, [key]: value});\n },\n });\n\n if (fields.length === 0) {\n return (\n <div className=\"text-muted-foreground text-sm\">\n No settings available for this chart type\n </div>\n );\n }\n\n return (\n <div className=\"space-y-4\">\n {fields.map((field) => (\n <FieldSelectorInput\n key={field.key}\n field={field}\n columns={columns}\n value={values[field.key] as string}\n onChange={(value) => handleFieldChange(field.key, value)}\n />\n ))}\n </div>\n );\n },\n);\n\nDynamicChartSettings.displayName = 'DynamicChartSettings';\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { ChartSettingsPanel } from './ChartSettingsPanel';
|
|
2
|
+
export { ChartSettings } from './ChartSettings';
|
|
3
|
+
export { ChartTypeSelector } from './ChartTypeSelector';
|
|
4
|
+
export { DynamicChartSettings } from './DynamicChartSettings';
|
|
5
|
+
export { useChartSettingsContext } from './ChartSettingsContext';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dashboard/chart-settings/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAC,uBAAuB,EAAC,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { ChartSettingsPanel } from './ChartSettingsPanel';
|
|
2
|
+
export { ChartSettings } from './ChartSettings';
|
|
3
|
+
export { ChartTypeSelector } from './ChartTypeSelector';
|
|
4
|
+
export { DynamicChartSettings } from './DynamicChartSettings';
|
|
5
|
+
export { useChartSettingsContext } from './ChartSettingsContext';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/dashboard/chart-settings/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAC,uBAAuB,EAAC,MAAM,wBAAwB,CAAC","sourcesContent":["export {ChartSettingsPanel} from './ChartSettingsPanel';\nexport {ChartSettings} from './ChartSettings';\nexport {ChartTypeSelector} from './ChartTypeSelector';\nexport {DynamicChartSettings} from './DynamicChartSettings';\nexport {useChartSettingsContext} from './ChartSettingsContext';\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTableColumns.d.ts","sourceRoot":"","sources":["../../../src/dashboard/chart-settings/useTableColumns.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAEzC,wBAAgB,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE,CAQjE"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { useMemo } from 'react';
|
|
2
|
+
import { useStoreWithMosaicDashboard } from '../MosaicDashboardSlice';
|
|
3
|
+
export function useTableColumns(tableName) {
|
|
4
|
+
const tables = useStoreWithMosaicDashboard((state) => state.db.tables);
|
|
5
|
+
return useMemo(() => {
|
|
6
|
+
if (!tableName)
|
|
7
|
+
return [];
|
|
8
|
+
const resolvedTable = tables.find((t) => t.table.table === tableName);
|
|
9
|
+
return resolvedTable?.columns || [];
|
|
10
|
+
}, [tableName, tables]);
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=useTableColumns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTableColumns.js","sourceRoot":"","sources":["../../../src/dashboard/chart-settings/useTableColumns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAC,2BAA2B,EAAC,MAAM,yBAAyB,CAAC;AAGpE,MAAM,UAAU,eAAe,CAAC,SAAkB;IAChD,MAAM,MAAM,GAAG,2BAA2B,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IAEvE,OAAO,OAAO,CAAC,GAAG,EAAE;QAClB,IAAI,CAAC,SAAS;YAAE,OAAO,EAAE,CAAC;QAC1B,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;QACtE,OAAO,aAAa,EAAE,OAAO,IAAI,EAAE,CAAC;IACtC,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;AAC1B,CAAC","sourcesContent":["import {useMemo} from 'react';\nimport {useStoreWithMosaicDashboard} from '../MosaicDashboardSlice';\nimport {TableColumn} from '@sqlrooms/db';\n\nexport function useTableColumns(tableName?: string): TableColumn[] {\n const tables = useStoreWithMosaicDashboard((state) => state.db.tables);\n\n return useMemo(() => {\n if (!tableName) return [];\n const resolvedTable = tables.find((t) => t.table.table === tableName);\n return resolvedTable?.columns || [];\n }, [tableName, tables]);\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaultPanelRenderers.d.ts","sourceRoot":"","sources":["../../src/dashboard/defaultPanelRenderers.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,oBAAoB,EAC1B,MAAM,wBAAwB,CAAC;AAIhC,wBAAgB,0CAA0C,CACxD,cAAc,GAAE,oBAAyB,GACxC,oBAAoB,CAQtB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { MOSAIC_DASHBOARD_PROFILER_PANEL_TYPE, MOSAIC_DASHBOARD_VGPLOT_PANEL_TYPE, } from './MosaicDashboardSlice';
|
|
2
|
+
import { mosaicDashboardProfilerPanelRenderer } from './MosaicDashboardProfilerPanelRenderer';
|
|
3
|
+
import { mosaicDashboardVgPlotPanelRenderer } from './MosaicDashboardVgPlotPanelRenderer';
|
|
4
|
+
export function createDefaultMosaicDashboardPanelRenderers(extraRenderers = {}) {
|
|
5
|
+
return {
|
|
6
|
+
[MOSAIC_DASHBOARD_VGPLOT_PANEL_TYPE]: mosaicDashboardVgPlotPanelRenderer,
|
|
7
|
+
[MOSAIC_DASHBOARD_PROFILER_PANEL_TYPE]: mosaicDashboardProfilerPanelRenderer,
|
|
8
|
+
...extraRenderers,
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=defaultPanelRenderers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaultPanelRenderers.js","sourceRoot":"","sources":["../../src/dashboard/defaultPanelRenderers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oCAAoC,EACpC,kCAAkC,GAGnC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAC,oCAAoC,EAAC,MAAM,wCAAwC,CAAC;AAC5F,OAAO,EAAC,kCAAkC,EAAC,MAAM,sCAAsC,CAAC;AAExF,MAAM,UAAU,0CAA0C,CACxD,iBAAuC,EAAE;IAEzC,OAAO;QACL,CAAC,kCAAkC,CAAC,EAClC,kCAAsD;QACxD,CAAC,oCAAoC,CAAC,EACpC,oCAAwD;QAC1D,GAAG,cAAc;KAClB,CAAC;AACJ,CAAC","sourcesContent":["import {\n MOSAIC_DASHBOARD_PROFILER_PANEL_TYPE,\n MOSAIC_DASHBOARD_VGPLOT_PANEL_TYPE,\n type AnyPanelRenderer,\n type PanelRenderersRecord,\n} from './MosaicDashboardSlice';\nimport {mosaicDashboardProfilerPanelRenderer} from './MosaicDashboardProfilerPanelRenderer';\nimport {mosaicDashboardVgPlotPanelRenderer} from './MosaicDashboardVgPlotPanelRenderer';\n\nexport function createDefaultMosaicDashboardPanelRenderers(\n extraRenderers: PanelRenderersRecord = {},\n): PanelRenderersRecord {\n return {\n [MOSAIC_DASHBOARD_VGPLOT_PANEL_TYPE]:\n mosaicDashboardVgPlotPanelRenderer as AnyPanelRenderer,\n [MOSAIC_DASHBOARD_PROFILER_PANEL_TYPE]:\n mosaicDashboardProfilerPanelRenderer as AnyPanelRenderer,\n ...extraRenderers,\n };\n}\n"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Spec } from '@uwdata/mosaic-spec';
|
|
2
|
+
import { type VgPlotChartSettings, type VgPlotChartType } from '../chart-types';
|
|
3
|
+
/**
|
|
4
|
+
* Generates a Mosaic chart specification from chart settings.
|
|
5
|
+
*
|
|
6
|
+
* @param tableName - The source table name. Returns null if undefined.
|
|
7
|
+
* @param chartType - The type of chart to generate (histogram, line, etc.)
|
|
8
|
+
* @param settings - Chart-specific settings matching the chart type
|
|
9
|
+
* @returns A Mosaic Spec object or null if generation fails
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* const spec = generateMosaicChartSpec('sales', 'histogram', { field: 'amount' });
|
|
13
|
+
*/
|
|
14
|
+
export declare function generateMosaicChartSpec(tableName: string | undefined, chartType: VgPlotChartType, settings: VgPlotChartSettings | Record<string, unknown>): Spec | null;
|
|
15
|
+
//# sourceMappingURL=generateMosaicChartSpec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateMosaicChartSpec.d.ts","sourceRoot":"","sources":["../../src/dashboard/generateMosaicChartSpec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACrB,MAAM,gBAAgB,CAAC;AAExB;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,SAAS,EAAE,eAAe,EAC1B,QAAQ,EAAE,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACtD,IAAI,GAAG,IAAI,CAuBb"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { mosaicChartTypes, } from '../chart-types';
|
|
2
|
+
/**
|
|
3
|
+
* Generates a Mosaic chart specification from chart settings.
|
|
4
|
+
*
|
|
5
|
+
* @param tableName - The source table name. Returns null if undefined.
|
|
6
|
+
* @param chartType - The type of chart to generate (histogram, line, etc.)
|
|
7
|
+
* @param settings - Chart-specific settings matching the chart type
|
|
8
|
+
* @returns A Mosaic Spec object or null if generation fails
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* const spec = generateMosaicChartSpec('sales', 'histogram', { field: 'amount' });
|
|
12
|
+
*/
|
|
13
|
+
export function generateMosaicChartSpec(tableName, chartType, settings) {
|
|
14
|
+
if (!tableName) {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
const chartTypeDef = Object.values(mosaicChartTypes).find(({ id }) => id === chartType);
|
|
18
|
+
if (!chartTypeDef) {
|
|
19
|
+
console.error(`[generateMosaicChartSpec] Unknown chart type: ${chartType}`);
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
try {
|
|
23
|
+
return chartTypeDef.createSpec(tableName, settings);
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
console.error(`[generateMosaicChartSpec] Failed to generate spec for chart type "${chartType}":`, error);
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=generateMosaicChartSpec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateMosaicChartSpec.js","sourceRoot":"","sources":["../../src/dashboard/generateMosaicChartSpec.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,GAGjB,MAAM,gBAAgB,CAAC;AAExB;;;;;;;;;;GAUG;AACH,MAAM,UAAU,uBAAuB,CACrC,SAA6B,EAC7B,SAA0B,EAC1B,QAAuD;IAEvD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CACvD,CAAC,EAAC,EAAE,EAAC,EAAE,EAAE,CAAC,EAAE,KAAK,SAAS,CAC3B,CAAC;IAEF,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,iDAAiD,SAAS,EAAE,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,qEAAqE,SAAS,IAAI,EAClF,KAAK,CACN,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC","sourcesContent":["import type {Spec} from '@uwdata/mosaic-spec';\nimport {\n mosaicChartTypes,\n type VgPlotChartSettings,\n type VgPlotChartType,\n} from '../chart-types';\n\n/**\n * Generates a Mosaic chart specification from chart settings.\n *\n * @param tableName - The source table name. Returns null if undefined.\n * @param chartType - The type of chart to generate (histogram, line, etc.)\n * @param settings - Chart-specific settings matching the chart type\n * @returns A Mosaic Spec object or null if generation fails\n *\n * @example\n * const spec = generateMosaicChartSpec('sales', 'histogram', { field: 'amount' });\n */\nexport function generateMosaicChartSpec(\n tableName: string | undefined,\n chartType: VgPlotChartType,\n settings: VgPlotChartSettings | Record<string, unknown>,\n): Spec | null {\n if (!tableName) {\n return null;\n }\n\n const chartTypeDef = Object.values(mosaicChartTypes).find(\n ({id}) => id === chartType,\n );\n\n if (!chartTypeDef) {\n console.error(`[generateMosaicChartSpec] Unknown chart type: ${chartType}`);\n return null;\n }\n\n try {\n return chartTypeDef.createSpec(tableName, settings);\n } catch (error) {\n console.error(\n `[generateMosaicChartSpec] Failed to generate spec for chart type \"${chartType}\":`,\n error,\n );\n return null;\n }\n}\n"]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Param } from '@uwdata/mosaic-core';
|
|
2
|
+
import { Spec } from '@uwdata/mosaic-spec';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { OnMosaicSpecChange } from './types';
|
|
5
|
+
export interface MosaicChartContainerProps {
|
|
6
|
+
/**
|
|
7
|
+
* Initial Mosaic specification
|
|
8
|
+
*/
|
|
9
|
+
spec: Spec | string;
|
|
10
|
+
/**
|
|
11
|
+
* Pre-defined params/selections for shared cross-filtering
|
|
12
|
+
*/
|
|
13
|
+
params?: Map<string, Param<any>>;
|
|
14
|
+
/**
|
|
15
|
+
* Whether editing is enabled
|
|
16
|
+
* @default true
|
|
17
|
+
*/
|
|
18
|
+
editable?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Callback when spec changes are applied
|
|
21
|
+
*/
|
|
22
|
+
onSpecChange?: OnMosaicSpecChange;
|
|
23
|
+
/**
|
|
24
|
+
* Child components (Chart, SpecEditor, Actions)
|
|
25
|
+
*/
|
|
26
|
+
children: React.ReactNode;
|
|
27
|
+
/**
|
|
28
|
+
* Custom class name for the container
|
|
29
|
+
*/
|
|
30
|
+
className?: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Container component for composable Mosaic chart editing.
|
|
34
|
+
* Provides context for child subcomponents.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```tsx
|
|
38
|
+
* <MosaicChart.Container
|
|
39
|
+
* spec={mySpec}
|
|
40
|
+
* params={paramsMap}
|
|
41
|
+
* editable={true}
|
|
42
|
+
* onSpecChange={(spec) => saveSpec(spec)}
|
|
43
|
+
* >
|
|
44
|
+
* <MosaicChart.Chart />
|
|
45
|
+
* <MosaicChart.SpecEditor />
|
|
46
|
+
* <MosaicChart.Actions />
|
|
47
|
+
* </MosaicChart.Container>
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export declare const MosaicChartContainer: React.FC<MosaicChartContainerProps>;
|
|
51
|
+
//# sourceMappingURL=MosaicChartContainer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MosaicChartContainer.d.ts","sourceRoot":"","sources":["../../src/editor/MosaicChartContainer.tsx"],"names":[],"mappings":"AACA,OAAO,EAAC,KAAK,EAAC,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAC,IAAI,EAAC,MAAM,qBAAqB,CAAC;AACzC,OAAO,KAAgB,MAAM,OAAO,CAAC;AAErC,OAAO,EAA2B,kBAAkB,EAAC,MAAM,SAAS,CAAC;AAGrE,MAAM,WAAW,yBAAyB;IACxC;;OAEG;IACH,IAAI,EAAE,IAAI,GAAG,MAAM,CAAC;IACpB;;OAEG;IACH,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CA8BpE,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from '@sqlrooms/ui';
|
|
3
|
+
import { useMemo } from 'react';
|
|
4
|
+
import { MosaicEditorContext } from './MosaicEditorContext';
|
|
5
|
+
import { useMosaicChartEditor } from './useMosaicChartEditor';
|
|
6
|
+
/**
|
|
7
|
+
* Container component for composable Mosaic chart editing.
|
|
8
|
+
* Provides context for child subcomponents.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```tsx
|
|
12
|
+
* <MosaicChart.Container
|
|
13
|
+
* spec={mySpec}
|
|
14
|
+
* params={paramsMap}
|
|
15
|
+
* editable={true}
|
|
16
|
+
* onSpecChange={(spec) => saveSpec(spec)}
|
|
17
|
+
* >
|
|
18
|
+
* <MosaicChart.Chart />
|
|
19
|
+
* <MosaicChart.SpecEditor />
|
|
20
|
+
* <MosaicChart.Actions />
|
|
21
|
+
* </MosaicChart.Container>
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export const MosaicChartContainer = ({ spec, params, editable = true, onSpecChange, children, className, }) => {
|
|
25
|
+
const { state, actions, canApply, hasChanges } = useMosaicChartEditor({
|
|
26
|
+
initialSpec: spec,
|
|
27
|
+
onSpecChange,
|
|
28
|
+
});
|
|
29
|
+
const contextValue = useMemo(() => ({
|
|
30
|
+
state,
|
|
31
|
+
actions,
|
|
32
|
+
editable,
|
|
33
|
+
params,
|
|
34
|
+
canApply,
|
|
35
|
+
hasChanges,
|
|
36
|
+
}), [state, actions, editable, params, canApply, hasChanges]);
|
|
37
|
+
return (_jsx(MosaicEditorContext.Provider, { value: contextValue, children: _jsx("div", { className: cn('flex flex-col gap-2', className), children: children }) }));
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=MosaicChartContainer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MosaicChartContainer.js","sourceRoot":"","sources":["../../src/editor/MosaicChartContainer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,EAAE,EAAC,MAAM,cAAc,CAAC;AAGhC,OAAc,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AA8B5D;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAwC,CAAC,EACxE,IAAI,EACJ,MAAM,EACN,QAAQ,GAAG,IAAI,EACf,YAAY,EACZ,QAAQ,EACR,SAAS,GACV,EAAE,EAAE;IACH,MAAM,EAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAC,GAAG,oBAAoB,CAAC;QAClE,WAAW,EAAE,IAAI;QACjB,YAAY;KACb,CAAC,CAAC;IAEH,MAAM,YAAY,GAA6B,OAAO,CACpD,GAAG,EAAE,CAAC,CAAC;QACL,KAAK;QACL,OAAO;QACP,QAAQ;QACR,MAAM;QACN,QAAQ;QACR,UAAU;KACX,CAAC,EACF,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,CACzD,CAAC;IAEF,OAAO,CACL,KAAC,mBAAmB,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,YAC/C,cAAK,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC,YAAG,QAAQ,GAAO,GACzC,CAChC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {cn} from '@sqlrooms/ui';\nimport {Param} from '@uwdata/mosaic-core';\nimport {Spec} from '@uwdata/mosaic-spec';\nimport React, {useMemo} from 'react';\nimport {MosaicEditorContext} from './MosaicEditorContext';\nimport {MosaicEditorContextValue, OnMosaicSpecChange} from './types';\nimport {useMosaicChartEditor} from './useMosaicChartEditor';\n\nexport interface MosaicChartContainerProps {\n /**\n * Initial Mosaic specification\n */\n spec: Spec | string;\n /**\n * Pre-defined params/selections for shared cross-filtering\n */\n params?: Map<string, Param<any>>;\n /**\n * Whether editing is enabled\n * @default true\n */\n editable?: boolean;\n /**\n * Callback when spec changes are applied\n */\n onSpecChange?: OnMosaicSpecChange;\n /**\n * Child components (Chart, SpecEditor, Actions)\n */\n children: React.ReactNode;\n /**\n * Custom class name for the container\n */\n className?: string;\n}\n\n/**\n * Container component for composable Mosaic chart editing.\n * Provides context for child subcomponents.\n *\n * @example\n * ```tsx\n * <MosaicChart.Container\n * spec={mySpec}\n * params={paramsMap}\n * editable={true}\n * onSpecChange={(spec) => saveSpec(spec)}\n * >\n * <MosaicChart.Chart />\n * <MosaicChart.SpecEditor />\n * <MosaicChart.Actions />\n * </MosaicChart.Container>\n * ```\n */\nexport const MosaicChartContainer: React.FC<MosaicChartContainerProps> = ({\n spec,\n params,\n editable = true,\n onSpecChange,\n children,\n className,\n}) => {\n const {state, actions, canApply, hasChanges} = useMosaicChartEditor({\n initialSpec: spec,\n onSpecChange,\n });\n\n const contextValue: MosaicEditorContextValue = useMemo(\n () => ({\n state,\n actions,\n editable,\n params,\n canApply,\n hasChanges,\n }),\n [state, actions, editable, params, canApply, hasChanges],\n );\n\n return (\n <MosaicEditorContext.Provider value={contextValue}>\n <div className={cn('flex flex-col gap-2', className)}>{children}</div>\n </MosaicEditorContext.Provider>\n );\n};\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface MosaicChartDisplayProps {
|
|
3
|
+
/**
|
|
4
|
+
* Custom class name for the chart container
|
|
5
|
+
*/
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Chart display subcomponent for MosaicChart.Container.
|
|
10
|
+
* Renders the VgPlotChart with the current spec from editor context.
|
|
11
|
+
*
|
|
12
|
+
* Uses the last valid spec for rendering, so the chart keeps
|
|
13
|
+
* displaying even during typing with invalid JSON.
|
|
14
|
+
*
|
|
15
|
+
* Must be used within a MosaicChart.Container component.
|
|
16
|
+
*/
|
|
17
|
+
export declare const MosaicChartDisplay: React.FC<MosaicChartDisplayProps>;
|
|
18
|
+
//# sourceMappingURL=MosaicChartDisplay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MosaicChartDisplay.d.ts","sourceRoot":"","sources":["../../src/editor/MosaicChartDisplay.tsx"],"names":[],"mappings":"AACA,OAAO,KAAgB,MAAM,OAAO,CAAC;AAIrC,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAoBhE,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from '@sqlrooms/ui';
|
|
3
|
+
import React, { useMemo } from 'react';
|
|
4
|
+
import { VgPlotChart } from '../VgPlotChart';
|
|
5
|
+
import { useMosaicEditorContext } from './MosaicEditorContext';
|
|
6
|
+
const DEFAULT_CHART_HEIGHT = 200;
|
|
7
|
+
/**
|
|
8
|
+
* Chart display subcomponent for MosaicChart.Container.
|
|
9
|
+
* Renders the VgPlotChart with the current spec from editor context.
|
|
10
|
+
*
|
|
11
|
+
* Uses the last valid spec for rendering, so the chart keeps
|
|
12
|
+
* displaying even during typing with invalid JSON.
|
|
13
|
+
*
|
|
14
|
+
* Must be used within a MosaicChart.Container component.
|
|
15
|
+
*/
|
|
16
|
+
export const MosaicChartDisplay = React.memo(({ className }) => {
|
|
17
|
+
const { state, params } = useMosaicEditorContext();
|
|
18
|
+
const spec = useMemo(() => state.parsedSpec ?? state.lastValidSpec, [state.parsedSpec, state.lastValidSpec]);
|
|
19
|
+
const height = useMemo(() => {
|
|
20
|
+
const h = spec && typeof spec === 'object' ? spec.height : null;
|
|
21
|
+
return typeof h === 'number' && h > 0 ? h : DEFAULT_CHART_HEIGHT;
|
|
22
|
+
}, [spec]);
|
|
23
|
+
return (_jsx("div", { className: cn('relative', className), style: { height }, children: _jsx(VgPlotChart, { spec: spec, params: params }) }));
|
|
24
|
+
});
|
|
25
|
+
MosaicChartDisplay.displayName = 'MosaicChartDisplay';
|
|
26
|
+
//# sourceMappingURL=MosaicChartDisplay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MosaicChartDisplay.js","sourceRoot":"","sources":["../../src/editor/MosaicChartDisplay.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,EAAE,EAAC,MAAM,cAAc,CAAC;AAChC,OAAO,KAAK,EAAE,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAC,sBAAsB,EAAC,MAAM,uBAAuB,CAAC;AAS7D,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAEjC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAsC,KAAK,CAAC,IAAI,CAC7E,CAAC,EAAC,SAAS,EAAC,EAAE,EAAE;IACd,MAAM,EAAC,KAAK,EAAE,MAAM,EAAC,GAAG,sBAAsB,EAAE,CAAC;IAEjD,MAAM,IAAI,GAAG,OAAO,CAClB,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,aAAa,EAC7C,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,aAAa,CAAC,CACxC,CAAC;IAEF,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE;QAC1B,MAAM,CAAC,GAAG,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAE,IAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QACzE,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC;IACnE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,OAAO,CACL,cAAK,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,EAAC,MAAM,EAAC,YACxD,KAAC,WAAW,IAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAI,GACvC,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,kBAAkB,CAAC,WAAW,GAAG,oBAAoB,CAAC","sourcesContent":["import {cn} from '@sqlrooms/ui';\nimport React, {useMemo} from 'react';\nimport {VgPlotChart} from '../VgPlotChart';\nimport {useMosaicEditorContext} from './MosaicEditorContext';\n\nexport interface MosaicChartDisplayProps {\n /**\n * Custom class name for the chart container\n */\n className?: string;\n}\n\nconst DEFAULT_CHART_HEIGHT = 200;\n\n/**\n * Chart display subcomponent for MosaicChart.Container.\n * Renders the VgPlotChart with the current spec from editor context.\n *\n * Uses the last valid spec for rendering, so the chart keeps\n * displaying even during typing with invalid JSON.\n *\n * Must be used within a MosaicChart.Container component.\n */\nexport const MosaicChartDisplay: React.FC<MosaicChartDisplayProps> = React.memo(\n ({className}) => {\n const {state, params} = useMosaicEditorContext();\n\n const spec = useMemo(\n () => state.parsedSpec ?? state.lastValidSpec,\n [state.parsedSpec, state.lastValidSpec],\n );\n\n const height = useMemo(() => {\n const h = spec && typeof spec === 'object' ? (spec as any).height : null;\n return typeof h === 'number' && h > 0 ? h : DEFAULT_CHART_HEIGHT;\n }, [spec]);\n\n return (\n <div className={cn('relative', className)} style={{height}}>\n <VgPlotChart spec={spec} params={params} />\n </div>\n );\n },\n);\n\nMosaicChartDisplay.displayName = 'MosaicChartDisplay';\n"]}
|