@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 @@
|
|
|
1
|
+
{"version":3,"file":"ChartBuilderRoot.js","sourceRoot":"","sources":["../../src/chart-builders/ChartBuilderRoot.tsx"],"names":[],"mappings":"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","sourcesContent":["import {Dialog} from '@sqlrooms/ui';\nimport type {Spec} from '@uwdata/mosaic-spec';\nimport React, {\n PropsWithChildren,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport type {VgPlotChartConfig} from '../chart-types';\nimport {\n createChartBuilderTemplates,\n createDefaultChartBuilders,\n} from './builders';\nimport {ChartBuilderContext} from './ChartBuilderContext';\nimport {createChartBuilderStore} from './createChartBuilderStore';\nimport {getAvailableChartTypes} from './chartTypeUtils';\nimport type {\n ChartBuilderColumn,\n ChartBuilderTemplate,\n ChartTypeDefinition,\n} from './types';\n\nexport type ChartBuilderRootProps = PropsWithChildren<{\n /** Table name to use in generated specs */\n tableName: string;\n /** Available columns for field selectors */\n columns: ChartBuilderColumn[];\n /** Callback when a chart spec is created */\n onCreateChart: (title: string, metadata: VgPlotChartConfig) => void;\n /** Preferred shared chart-type customization surface */\n chartTypes?: ChartTypeDefinition[];\n /** Backward-compatible UI template customization surface */\n builders?: ChartBuilderTemplate[];\n /** Controlled open state */\n open?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n}>;\n\n/**\n * Compound-component root that provides shared chart-builder state via context\n * and renders a Radix `Dialog`.\n *\n * Supports both controlled (`open`/`onOpenChange`) and uncontrolled usage.\n */\nexport const ChartBuilderRoot: React.FC<ChartBuilderRootProps> = ({\n tableName,\n columns,\n onCreateChart,\n chartTypes,\n builders,\n open,\n onOpenChange,\n children,\n}) => {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(false);\n const [store] = useState(() => createChartBuilderStore());\n const isControlled = open !== undefined;\n const resolvedOpen = isControlled ? open : uncontrolledOpen;\n\n const resolvedOnOpenChange = useMemo(\n () => (isControlled ? (onOpenChange ?? (() => {})) : setUncontrolledOpen),\n [isControlled, onOpenChange],\n );\n\n const resolvedTemplates = useMemo(() => {\n if (chartTypes) {\n return createChartBuilderTemplates(chartTypes);\n }\n if (builders) {\n return builders;\n }\n return createDefaultChartBuilders();\n }, [builders, chartTypes]);\n\n const availableChartTypes = useMemo(\n () => getAvailableChartTypes(resolvedTemplates, columns),\n [columns, resolvedTemplates],\n );\n const availableTemplates = useMemo(\n () =>\n resolvedTemplates.filter((template) =>\n availableChartTypes.some((chartType) => chartType.id === template.id),\n ),\n [availableChartTypes, resolvedTemplates],\n );\n\n useEffect(() => {\n const {selectedTemplateId, reset} = store.getState();\n if (\n selectedTemplateId &&\n !availableTemplates.some((template) => template.id === selectedTemplateId)\n ) {\n reset();\n }\n }, [availableTemplates, store]);\n\n const handleCreateChart: (title: string, config: VgPlotChartConfig) => void =\n useCallback(\n (title: string, config: VgPlotChartConfig) => {\n onCreateChart(title, config);\n resolvedOnOpenChange(false);\n },\n [onCreateChart, resolvedOnOpenChange],\n );\n\n const ctx = useMemo(\n () => ({\n tableName,\n columns,\n onCreateChart: handleCreateChart,\n templates: resolvedTemplates,\n availableChartTypes,\n availableTemplates,\n store,\n }),\n [\n availableChartTypes,\n availableTemplates,\n columns,\n handleCreateChart,\n resolvedTemplates,\n store,\n tableName,\n ],\n );\n\n return (\n <ChartBuilderContext.Provider value={ctx}>\n <Dialog open={resolvedOpen} onOpenChange={resolvedOnOpenChange}>\n {children}\n </Dialog>\n </ChartBuilderContext.Provider>\n );\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartBuilderTypeGrid.d.ts","sourceRoot":"","sources":["../../src/chart-builders/ChartBuilderTypeGrid.tsx"],"names":[],"mappings":"AACA,OAAO,KAAgB,MAAM,OAAO,CAAC;AAMrC,MAAM,WAAW,yBAAyB;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CA2DpE,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from '@sqlrooms/ui';
|
|
3
|
+
import { useMemo } from 'react';
|
|
4
|
+
import { useChartBuilderContext, useChartBuilderStore, } from './ChartBuilderContext';
|
|
5
|
+
export const ChartBuilderTypeGrid = ({ className, showWhenSelected = false, }) => {
|
|
6
|
+
const { availableTemplates } = useChartBuilderContext();
|
|
7
|
+
const selectedTemplateId = useChartBuilderStore((state) => state.selectedTemplateId);
|
|
8
|
+
const selectTemplate = useChartBuilderStore((state) => state.selectTemplate);
|
|
9
|
+
const shouldRender = showWhenSelected || !selectedTemplateId;
|
|
10
|
+
const availableCount = availableTemplates.length;
|
|
11
|
+
const selectedTemplate = useMemo(() => availableTemplates.find((template) => template.id === selectedTemplateId), [availableTemplates, selectedTemplateId]);
|
|
12
|
+
if (!shouldRender)
|
|
13
|
+
return null;
|
|
14
|
+
if (availableCount === 0) {
|
|
15
|
+
return (_jsx("p", { className: cn('text-muted-foreground py-4 text-sm', className), children: "No built-in chart types are available for the current table schema." }));
|
|
16
|
+
}
|
|
17
|
+
return (_jsx("div", { className: cn('grid grid-cols-2 gap-2 py-2', className), children: availableTemplates.map((template) => {
|
|
18
|
+
const Icon = template.icon;
|
|
19
|
+
const isSelected = selectedTemplate?.id === template.id;
|
|
20
|
+
return (_jsxs("button", { type: "button", className: cn('flex items-start gap-3 rounded-md border p-3 text-left transition-colors', 'hover:bg-accent hover:text-accent-foreground', isSelected && 'border-primary bg-accent text-accent-foreground'), onClick: () => selectTemplate(template.id), children: [_jsx(Icon, { className: "mt-0.5 h-5 w-5 shrink-0 opacity-70" }), _jsxs("span", { className: "min-w-0", children: [_jsx("span", { className: "block text-sm font-medium", children: template.label ?? template.description }), _jsx("span", { className: "text-muted-foreground block text-xs", children: template.description })] })] }, template.id));
|
|
21
|
+
}) }));
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=ChartBuilderTypeGrid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartBuilderTypeGrid.js","sourceRoot":"","sources":["../../src/chart-builders/ChartBuilderTypeGrid.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,EAAE,EAAC,MAAM,cAAc,CAAC;AAChC,OAAc,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,EACL,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAO/B,MAAM,CAAC,MAAM,oBAAoB,GAAwC,CAAC,EACxE,SAAS,EACT,gBAAgB,GAAG,KAAK,GACzB,EAAE,EAAE;IACH,MAAM,EAAC,kBAAkB,EAAC,GAAG,sBAAsB,EAAE,CAAC;IACtD,MAAM,kBAAkB,GAAG,oBAAoB,CAC7C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,kBAAkB,CACpC,CAAC;IACF,MAAM,cAAc,GAAG,oBAAoB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAE7E,MAAM,YAAY,GAAG,gBAAgB,IAAI,CAAC,kBAAkB,CAAC;IAC7D,MAAM,cAAc,GAAG,kBAAkB,CAAC,MAAM,CAAC;IACjD,MAAM,gBAAgB,GAAG,OAAO,CAC9B,GAAG,EAAE,CACH,kBAAkB,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,kBAAkB,CAAC,EAC3E,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CACzC,CAAC;IAEF,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAE/B,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CACL,YAAG,SAAS,EAAE,EAAE,CAAC,oCAAoC,EAAE,SAAS,CAAC,oFAE7D,CACL,CAAC;IACJ,CAAC;IAED,OAAO,CACL,cAAK,SAAS,EAAE,EAAE,CAAC,6BAA6B,EAAE,SAAS,CAAC,YACzD,kBAAkB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YACnC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC3B,MAAM,UAAU,GAAG,gBAAgB,EAAE,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC;YAExD,OAAO,CACL,kBAEE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,EAAE,CACX,0EAA0E,EAC1E,8CAA8C,EAC9C,UAAU,IAAI,iDAAiD,CAChE,EACD,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,aAE1C,KAAC,IAAI,IAAC,SAAS,EAAC,oCAAoC,GAAG,EACvD,gBAAM,SAAS,EAAC,SAAS,aACvB,eAAM,SAAS,EAAC,2BAA2B,YACxC,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,WAAW,GAClC,EACP,eAAM,SAAS,EAAC,qCAAqC,YAClD,QAAQ,CAAC,WAAW,GAChB,IACF,KAjBF,QAAQ,CAAC,EAAE,CAkBT,CACV,CAAC;QACJ,CAAC,CAAC,GACE,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {cn} from '@sqlrooms/ui';\nimport React, {useMemo} from 'react';\nimport {\n useChartBuilderContext,\n useChartBuilderStore,\n} from './ChartBuilderContext';\n\nexport interface ChartBuilderTypeGridProps {\n className?: string;\n showWhenSelected?: boolean;\n}\n\nexport const ChartBuilderTypeGrid: React.FC<ChartBuilderTypeGridProps> = ({\n className,\n showWhenSelected = false,\n}) => {\n const {availableTemplates} = useChartBuilderContext();\n const selectedTemplateId = useChartBuilderStore(\n (state) => state.selectedTemplateId,\n );\n const selectTemplate = useChartBuilderStore((state) => state.selectTemplate);\n\n const shouldRender = showWhenSelected || !selectedTemplateId;\n const availableCount = availableTemplates.length;\n const selectedTemplate = useMemo(\n () =>\n availableTemplates.find((template) => template.id === selectedTemplateId),\n [availableTemplates, selectedTemplateId],\n );\n\n if (!shouldRender) return null;\n\n if (availableCount === 0) {\n return (\n <p className={cn('text-muted-foreground py-4 text-sm', className)}>\n No built-in chart types are available for the current table schema.\n </p>\n );\n }\n\n return (\n <div className={cn('grid grid-cols-2 gap-2 py-2', className)}>\n {availableTemplates.map((template) => {\n const Icon = template.icon;\n const isSelected = selectedTemplate?.id === template.id;\n\n return (\n <button\n key={template.id}\n type=\"button\"\n className={cn(\n 'flex items-start gap-3 rounded-md border p-3 text-left transition-colors',\n 'hover:bg-accent hover:text-accent-foreground',\n isSelected && 'border-primary bg-accent text-accent-foreground',\n )}\n onClick={() => selectTemplate(template.id)}\n >\n <Icon className=\"mt-0.5 h-5 w-5 shrink-0 opacity-70\" />\n <span className=\"min-w-0\">\n <span className=\"block text-sm font-medium\">\n {template.label ?? template.description}\n </span>\n <span className=\"text-muted-foreground block text-xs\">\n {template.description}\n </span>\n </span>\n </button>\n );\n })}\n </div>\n );\n};\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ChartBuilderColumn, ChartBuilderField } from './types';
|
|
3
|
+
export interface FieldSelectorInputProps {
|
|
4
|
+
field: ChartBuilderField;
|
|
5
|
+
columns: ChartBuilderColumn[];
|
|
6
|
+
value: string | undefined;
|
|
7
|
+
onChange: (value: string) => void;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* A searchable dropdown selector for choosing a table column for a chart builder field.
|
|
11
|
+
*/
|
|
12
|
+
export declare const FieldSelectorInput: React.FC<FieldSelectorInputProps>;
|
|
13
|
+
//# sourceMappingURL=FieldSelectorInput.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FieldSelectorInput.d.ts","sourceRoot":"","sources":["../../src/chart-builders/FieldSelectorInput.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAiB,MAAM,OAAO,CAAC;AACtC,OAAO,EAAC,kBAAkB,EAAE,iBAAiB,EAAC,MAAM,SAAS,CAAC;AAE9D,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,iBAAiB,CAAC;IACzB,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAkFhE,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Button, cn, Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, Popover, PopoverContent, PopoverTrigger, } from '@sqlrooms/ui';
|
|
3
|
+
import { Check, ChevronsUpDown } from 'lucide-react';
|
|
4
|
+
import { useState } from 'react';
|
|
5
|
+
/**
|
|
6
|
+
* A searchable dropdown selector for choosing a table column for a chart builder field.
|
|
7
|
+
*/
|
|
8
|
+
export const FieldSelectorInput = ({ field, columns, value, onChange, }) => {
|
|
9
|
+
const [open, setOpen] = useState(false);
|
|
10
|
+
const filteredColumns = field.types
|
|
11
|
+
? columns.filter((col) => field.types.some((t) => col.type.toUpperCase() === t.toUpperCase()))
|
|
12
|
+
: columns;
|
|
13
|
+
const selectedColumn = filteredColumns.find((col) => col.name === value);
|
|
14
|
+
return (_jsxs("div", { className: "flex flex-col gap-1", children: [_jsxs("label", { className: "text-xs font-medium", children: [field.label, field.required && _jsx("span", { className: "text-destructive ml-1", children: "*" })] }), _jsxs(Popover, { open: open, onOpenChange: setOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs(Button, { variant: "outline", role: "combobox", "aria-expanded": open, className: "h-8 w-full justify-between text-xs font-normal", children: [selectedColumn ? (_jsxs("span", { className: "flex items-center gap-2 truncate", children: [_jsx("span", { className: "truncate", children: selectedColumn.name }), _jsx("span", { className: "text-muted-foreground text-[10px]", children: selectedColumn.type })] })) : (_jsxs("span", { className: "text-muted-foreground", children: ["Select ", field.label.toLowerCase(), "..."] })), _jsx(ChevronsUpDown, { className: "ml-2 h-3.5 w-3.5 shrink-0 opacity-50" })] }) }), _jsx(PopoverContent, { className: "w-[--radix-popover-trigger-width] p-0 text-xs", children: _jsxs(Command, { children: [_jsx(CommandInput, { placeholder: `Search columns...`, className: "text-xs" }), _jsxs(CommandList, { children: [_jsx(CommandEmpty, { children: "No matching column." }), _jsx(CommandGroup, { children: filteredColumns.map((col) => (_jsxs(CommandItem, { value: col.name, onSelect: (currentValue) => {
|
|
15
|
+
onChange(currentValue);
|
|
16
|
+
setOpen(false);
|
|
17
|
+
}, children: [_jsx(Check, { className: cn('mr-2 h-3.5 w-3.5 shrink-0', value === col.name ? 'opacity-100' : 'opacity-0') }), _jsx("span", { className: "truncate", children: col.name }), _jsx("span", { className: "text-muted-foreground ml-auto text-[10px]", children: col.type })] }, col.name))) })] })] }) })] })] }));
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=FieldSelectorInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FieldSelectorInput.js","sourceRoot":"","sources":["../../src/chart-builders/FieldSelectorInput.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Button,\n cn,\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from '@sqlrooms/ui';\nimport {Check, ChevronsUpDown} from 'lucide-react';\nimport React, {useState} from 'react';\nimport {ChartBuilderColumn, ChartBuilderField} from './types';\n\nexport interface FieldSelectorInputProps {\n field: ChartBuilderField;\n columns: ChartBuilderColumn[];\n value: string | undefined;\n onChange: (value: string) => void;\n}\n\n/**\n * A searchable dropdown selector for choosing a table column for a chart builder field.\n */\nexport const FieldSelectorInput: React.FC<FieldSelectorInputProps> = ({\n field,\n columns,\n value,\n onChange,\n}) => {\n const [open, setOpen] = useState(false);\n\n const filteredColumns = field.types\n ? columns.filter((col) =>\n field.types!.some((t) => col.type.toUpperCase() === t.toUpperCase()),\n )\n : columns;\n\n const selectedColumn = filteredColumns.find((col) => col.name === value);\n\n return (\n <div className=\"flex flex-col gap-1\">\n <label className=\"text-xs font-medium\">\n {field.label}\n {field.required && <span className=\"text-destructive ml-1\">*</span>}\n </label>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n className=\"h-8 w-full justify-between text-xs font-normal\"\n >\n {selectedColumn ? (\n <span className=\"flex items-center gap-2 truncate\">\n <span className=\"truncate\">{selectedColumn.name}</span>\n <span className=\"text-muted-foreground text-[10px]\">\n {selectedColumn.type}\n </span>\n </span>\n ) : (\n <span className=\"text-muted-foreground\">\n Select {field.label.toLowerCase()}...\n </span>\n )}\n <ChevronsUpDown className=\"ml-2 h-3.5 w-3.5 shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-[--radix-popover-trigger-width] p-0 text-xs\">\n <Command>\n <CommandInput\n placeholder={`Search columns...`}\n className=\"text-xs\"\n />\n <CommandList>\n <CommandEmpty>No matching column.</CommandEmpty>\n <CommandGroup>\n {filteredColumns.map((col) => (\n <CommandItem\n key={col.name}\n value={col.name}\n onSelect={(currentValue) => {\n onChange(currentValue);\n setOpen(false);\n }}\n >\n <Check\n className={cn(\n 'mr-2 h-3.5 w-3.5 shrink-0',\n value === col.name ? 'opacity-100' : 'opacity-0',\n )}\n />\n <span className=\"truncate\">{col.name}</span>\n <span className=\"text-muted-foreground ml-auto text-[10px]\">\n {col.type}\n </span>\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </div>\n );\n};\n"]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { ComponentType } from 'react';
|
|
2
|
+
import type { ChartBuilderTemplate, ChartTypeDefinition } from './types';
|
|
3
|
+
export declare function createChartBuilderTemplate(chartType: ChartTypeDefinition, icon?: ComponentType<{
|
|
4
|
+
className?: string;
|
|
5
|
+
}>): ChartBuilderTemplate;
|
|
6
|
+
export declare function createChartBuilderTemplates(chartTypes: ChartTypeDefinition[]): ChartBuilderTemplate[];
|
|
7
|
+
export declare const countPlotBuilder: ChartBuilderTemplate;
|
|
8
|
+
export declare const histogramBuilder: ChartBuilderTemplate;
|
|
9
|
+
export declare const lineChartBuilder: ChartBuilderTemplate;
|
|
10
|
+
export declare const ecdfBuilder: ChartBuilderTemplate;
|
|
11
|
+
export declare const heatmapBuilder: ChartBuilderTemplate;
|
|
12
|
+
export declare const boxPlotBuilder: ChartBuilderTemplate;
|
|
13
|
+
export declare const bubbleChartBuilder: ChartBuilderTemplate;
|
|
14
|
+
export declare const customSpecBuilder: ChartBuilderTemplate;
|
|
15
|
+
/**
|
|
16
|
+
* Creates the default set of chart builders.
|
|
17
|
+
* Call this to get a fresh array that you can extend or filter.
|
|
18
|
+
*/
|
|
19
|
+
export declare function createDefaultChartBuilders(): ChartBuilderTemplate[];
|
|
20
|
+
/**
|
|
21
|
+
* Named built-in chart templates for cherry-picking and
|
|
22
|
+
* {@link MosaicChartBuilder.chartBuilders}.
|
|
23
|
+
*/
|
|
24
|
+
export declare const mosaicChartBuilders: {
|
|
25
|
+
readonly countPlot: ChartBuilderTemplate;
|
|
26
|
+
readonly histogram: ChartBuilderTemplate;
|
|
27
|
+
readonly lineChart: ChartBuilderTemplate;
|
|
28
|
+
readonly ecdf: ChartBuilderTemplate;
|
|
29
|
+
readonly heatmap: ChartBuilderTemplate;
|
|
30
|
+
readonly boxPlot: ChartBuilderTemplate;
|
|
31
|
+
readonly bubbleChart: ChartBuilderTemplate;
|
|
32
|
+
readonly customSpec: ChartBuilderTemplate;
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=builders.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../src/chart-builders/builders.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,OAAO,CAAC;AACzC,OAAO,KAAK,EAAC,oBAAoB,EAAE,mBAAmB,EAAC,MAAM,SAAS,CAAC;AA4BvE,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,mBAAmB,EAC9B,IAAI,GAAE,aAAa,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAC,CAAuB,GAC9D,oBAAoB,CAKtB;AAED,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,mBAAmB,EAAE,GAChC,oBAAoB,EAAE,CAOxB;AAED,eAAO,MAAM,gBAAgB,sBAG5B,CAAC;AACF,eAAO,MAAM,gBAAgB,sBAG5B,CAAC;AACF,eAAO,MAAM,gBAAgB,sBAG5B,CAAC;AACF,eAAO,MAAM,WAAW,sBAGvB,CAAC;AACF,eAAO,MAAM,cAAc,sBAG1B,CAAC;AACF,eAAO,MAAM,cAAc,sBAG1B,CAAC;AACF,eAAO,MAAM,kBAAkB,sBAG9B,CAAC;AACF,eAAO,MAAM,iBAAiB,sBAG7B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,oBAAoB,EAAE,CAEnE;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;CAStB,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { AlignHorizontalDistributeCenter, BarChart3, BarChartHorizontal, Workflow as BubblesIcon, ChartNoAxesCombined, Code, Grid3X3, LineChart, TrendingUp, } from 'lucide-react';
|
|
2
|
+
import { boxPlotChartType, bubbleChartChartType, countPlotChartType, createDefaultChartTypes, customSpecChartType, ecdfChartType, heatmapChartType, histogramChartType, lineChartChartType, } from '../chart-types';
|
|
3
|
+
const defaultChartTypeIcons = {
|
|
4
|
+
'count-plot': BarChartHorizontal,
|
|
5
|
+
histogram: BarChart3,
|
|
6
|
+
'line-chart': LineChart,
|
|
7
|
+
ecdf: TrendingUp,
|
|
8
|
+
heatmap: Grid3X3,
|
|
9
|
+
'box-plot': AlignHorizontalDistributeCenter,
|
|
10
|
+
'bubble-chart': BubblesIcon,
|
|
11
|
+
'custom-spec': Code,
|
|
12
|
+
};
|
|
13
|
+
export function createChartBuilderTemplate(chartType, icon = ChartNoAxesCombined) {
|
|
14
|
+
return {
|
|
15
|
+
...chartType,
|
|
16
|
+
icon,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export function createChartBuilderTemplates(chartTypes) {
|
|
20
|
+
return chartTypes.map((chartType) => createChartBuilderTemplate(chartType, defaultChartTypeIcons[chartType.id] ?? ChartNoAxesCombined));
|
|
21
|
+
}
|
|
22
|
+
export const countPlotBuilder = createChartBuilderTemplate(countPlotChartType, BarChartHorizontal);
|
|
23
|
+
export const histogramBuilder = createChartBuilderTemplate(histogramChartType, BarChart3);
|
|
24
|
+
export const lineChartBuilder = createChartBuilderTemplate(lineChartChartType, LineChart);
|
|
25
|
+
export const ecdfBuilder = createChartBuilderTemplate(ecdfChartType, TrendingUp);
|
|
26
|
+
export const heatmapBuilder = createChartBuilderTemplate(heatmapChartType, Grid3X3);
|
|
27
|
+
export const boxPlotBuilder = createChartBuilderTemplate(boxPlotChartType, AlignHorizontalDistributeCenter);
|
|
28
|
+
export const bubbleChartBuilder = createChartBuilderTemplate(bubbleChartChartType, BubblesIcon);
|
|
29
|
+
export const customSpecBuilder = createChartBuilderTemplate(customSpecChartType, Code);
|
|
30
|
+
/**
|
|
31
|
+
* Creates the default set of chart builders.
|
|
32
|
+
* Call this to get a fresh array that you can extend or filter.
|
|
33
|
+
*/
|
|
34
|
+
export function createDefaultChartBuilders() {
|
|
35
|
+
return createChartBuilderTemplates(createDefaultChartTypes());
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Named built-in chart templates for cherry-picking and
|
|
39
|
+
* {@link MosaicChartBuilder.chartBuilders}.
|
|
40
|
+
*/
|
|
41
|
+
export const mosaicChartBuilders = {
|
|
42
|
+
countPlot: countPlotBuilder,
|
|
43
|
+
histogram: histogramBuilder,
|
|
44
|
+
lineChart: lineChartBuilder,
|
|
45
|
+
ecdf: ecdfBuilder,
|
|
46
|
+
heatmap: heatmapBuilder,
|
|
47
|
+
boxPlot: boxPlotBuilder,
|
|
48
|
+
bubbleChart: bubbleChartBuilder,
|
|
49
|
+
customSpec: customSpecBuilder,
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=builders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builders.js","sourceRoot":"","sources":["../../src/chart-builders/builders.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,SAAS,EACT,kBAAkB,EAClB,QAAQ,IAAI,WAAW,EACvB,mBAAmB,EACnB,IAAI,EACJ,OAAO,EACP,SAAS,EACT,UAAU,GACX,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,GAEnB,MAAM,gBAAgB,CAAC;AAExB,MAAM,qBAAqB,GAGvB;IACF,YAAY,EAAE,kBAAkB;IAChC,SAAS,EAAE,SAAS;IACpB,YAAY,EAAE,SAAS;IACvB,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,+BAA+B;IAC3C,cAAc,EAAE,WAAW;IAC3B,aAAa,EAAE,IAAI;CACpB,CAAC;AAEF,MAAM,UAAU,0BAA0B,CACxC,SAA8B,EAC9B,OAA4C,mBAAmB;IAE/D,OAAO;QACL,GAAG,SAAS;QACZ,IAAI;KACL,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,UAAiC;IAEjC,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAClC,0BAA0B,CACxB,SAAS,EACT,qBAAqB,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,mBAAmB,CAC3D,CACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,0BAA0B,CACxD,kBAAkB,EAClB,kBAAkB,CACnB,CAAC;AACF,MAAM,CAAC,MAAM,gBAAgB,GAAG,0BAA0B,CACxD,kBAAkB,EAClB,SAAS,CACV,CAAC;AACF,MAAM,CAAC,MAAM,gBAAgB,GAAG,0BAA0B,CACxD,kBAAkB,EAClB,SAAS,CACV,CAAC;AACF,MAAM,CAAC,MAAM,WAAW,GAAG,0BAA0B,CACnD,aAAa,EACb,UAAU,CACX,CAAC;AACF,MAAM,CAAC,MAAM,cAAc,GAAG,0BAA0B,CACtD,gBAAgB,EAChB,OAAO,CACR,CAAC;AACF,MAAM,CAAC,MAAM,cAAc,GAAG,0BAA0B,CACtD,gBAAgB,EAChB,+BAA+B,CAChC,CAAC;AACF,MAAM,CAAC,MAAM,kBAAkB,GAAG,0BAA0B,CAC1D,oBAAoB,EACpB,WAAW,CACZ,CAAC;AACF,MAAM,CAAC,MAAM,iBAAiB,GAAG,0BAA0B,CACzD,mBAAmB,EACnB,IAAI,CACL,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,0BAA0B;IACxC,OAAO,2BAA2B,CAAC,uBAAuB,EAAE,CAAC,CAAC;AAChE,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,gBAAgB;IAC3B,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,cAAc;IACvB,OAAO,EAAE,cAAc;IACvB,WAAW,EAAE,kBAAkB;IAC/B,UAAU,EAAE,iBAAiB;CACrB,CAAC","sourcesContent":["import {\n AlignHorizontalDistributeCenter,\n BarChart3,\n BarChartHorizontal,\n Workflow as BubblesIcon,\n ChartNoAxesCombined,\n Code,\n Grid3X3,\n LineChart,\n TrendingUp,\n} from 'lucide-react';\nimport type {ComponentType} from 'react';\nimport type {ChartBuilderTemplate, ChartTypeDefinition} from './types';\nimport {\n boxPlotChartType,\n bubbleChartChartType,\n countPlotChartType,\n createDefaultChartTypes,\n customSpecChartType,\n ecdfChartType,\n heatmapChartType,\n histogramChartType,\n lineChartChartType,\n mosaicChartTypes,\n} from '../chart-types';\n\nconst defaultChartTypeIcons: Record<\n string,\n ComponentType<{className?: string}>\n> = {\n 'count-plot': BarChartHorizontal,\n histogram: BarChart3,\n 'line-chart': LineChart,\n ecdf: TrendingUp,\n heatmap: Grid3X3,\n 'box-plot': AlignHorizontalDistributeCenter,\n 'bubble-chart': BubblesIcon,\n 'custom-spec': Code,\n};\n\nexport function createChartBuilderTemplate(\n chartType: ChartTypeDefinition,\n icon: ComponentType<{className?: string}> = ChartNoAxesCombined,\n): ChartBuilderTemplate {\n return {\n ...chartType,\n icon,\n };\n}\n\nexport function createChartBuilderTemplates(\n chartTypes: ChartTypeDefinition[],\n): ChartBuilderTemplate[] {\n return chartTypes.map((chartType) =>\n createChartBuilderTemplate(\n chartType,\n defaultChartTypeIcons[chartType.id] ?? ChartNoAxesCombined,\n ),\n );\n}\n\nexport const countPlotBuilder = createChartBuilderTemplate(\n countPlotChartType,\n BarChartHorizontal,\n);\nexport const histogramBuilder = createChartBuilderTemplate(\n histogramChartType,\n BarChart3,\n);\nexport const lineChartBuilder = createChartBuilderTemplate(\n lineChartChartType,\n LineChart,\n);\nexport const ecdfBuilder = createChartBuilderTemplate(\n ecdfChartType,\n TrendingUp,\n);\nexport const heatmapBuilder = createChartBuilderTemplate(\n heatmapChartType,\n Grid3X3,\n);\nexport const boxPlotBuilder = createChartBuilderTemplate(\n boxPlotChartType,\n AlignHorizontalDistributeCenter,\n);\nexport const bubbleChartBuilder = createChartBuilderTemplate(\n bubbleChartChartType,\n BubblesIcon,\n);\nexport const customSpecBuilder = createChartBuilderTemplate(\n customSpecChartType,\n Code,\n);\n\n/**\n * Creates the default set of chart builders.\n * Call this to get a fresh array that you can extend or filter.\n */\nexport function createDefaultChartBuilders(): ChartBuilderTemplate[] {\n return createChartBuilderTemplates(createDefaultChartTypes());\n}\n\n/**\n * Named built-in chart templates for cherry-picking and\n * {@link MosaicChartBuilder.chartBuilders}.\n */\nexport const mosaicChartBuilders = {\n countPlot: countPlotBuilder,\n histogram: histogramBuilder,\n lineChart: lineChartBuilder,\n ecdf: ecdfBuilder,\n heatmap: heatmapBuilder,\n boxPlot: boxPlotBuilder,\n bubbleChart: bubbleChartBuilder,\n customSpec: customSpecBuilder,\n} as const;\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ChartTypeDefinition } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Human-readable chart title from a chart type and selected field values.
|
|
4
|
+
*/
|
|
5
|
+
export declare function buildChartTitleForSpec(spec: Pick<ChartTypeDefinition, 'description' | 'buildTitle'>, fieldValues: Record<string, string>): string;
|
|
6
|
+
//# sourceMappingURL=chartSpecTitle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chartSpecTitle.d.ts","sourceRoot":"","sources":["../../src/chart-builders/chartSpecTitle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,SAAS,CAAC;AAGjD;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,IAAI,CAAC,mBAAmB,EAAE,aAAa,GAAG,YAAY,CAAC,EAC7D,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAClC,MAAM,CAER"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { buildChartTypeTitle } from './chartTypeUtils';
|
|
2
|
+
/**
|
|
3
|
+
* Human-readable chart title from a chart type and selected field values.
|
|
4
|
+
*/
|
|
5
|
+
export function buildChartTitleForSpec(spec, fieldValues) {
|
|
6
|
+
return buildChartTypeTitle(spec, fieldValues);
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=chartSpecTitle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chartSpecTitle.js","sourceRoot":"","sources":["../../src/chart-builders/chartSpecTitle.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AAErD;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAA6D,EAC7D,WAAmC;IAEnC,OAAO,mBAAmB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AAChD,CAAC","sourcesContent":["import type {ChartTypeDefinition} from './types';\nimport {buildChartTypeTitle} from './chartTypeUtils';\n\n/**\n * Human-readable chart title from a chart type and selected field values.\n */\nexport function buildChartTitleForSpec(\n spec: Pick<ChartTypeDefinition, 'description' | 'buildTitle'>,\n fieldValues: Record<string, string>,\n): string {\n return buildChartTypeTitle(spec, fieldValues);\n}\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ChartBuilderColumn, ChartBuilderField, ChartTypeDefinition } from './types';
|
|
2
|
+
export { NUMERIC_COLUMN_TYPES, TEMPORAL_COLUMN_TYPES, QUANTITATIVE_COLUMN_TYPES, } from './constants';
|
|
3
|
+
/**
|
|
4
|
+
* Build a default chart title from description and field values
|
|
5
|
+
*/
|
|
6
|
+
export declare function buildDefaultChartTitle(description: string, fieldValues: Record<string, string>): string;
|
|
7
|
+
/**
|
|
8
|
+
* Create a title builder function from a description string
|
|
9
|
+
*/
|
|
10
|
+
export declare function titleFromDescription(description: string): (fieldValues: Record<string, string>) => string;
|
|
11
|
+
export declare function columnMatchesFieldTypes(column: ChartBuilderColumn, field: Pick<ChartBuilderField, 'types'>): boolean;
|
|
12
|
+
export declare function getCompatibleColumns(columns: ChartBuilderColumn[], field: Pick<ChartBuilderField, 'types'>): ChartBuilderColumn[];
|
|
13
|
+
export declare function isChartTypeAvailable(chartType: ChartTypeDefinition, columns: ChartBuilderColumn[]): boolean;
|
|
14
|
+
export declare function getAvailableChartTypes(chartTypes: ChartTypeDefinition[], columns: ChartBuilderColumn[]): ChartTypeDefinition[];
|
|
15
|
+
export declare function buildChartTypeTitle(chartType: Pick<ChartTypeDefinition, 'description' | 'buildTitle'>, fieldValues: Record<string, string>): string;
|
|
16
|
+
export declare function canCreateChartFromType(chartType: ChartTypeDefinition | null | undefined, fieldValues: Record<string, string>, columns: ChartBuilderColumn[]): boolean;
|
|
17
|
+
//# sourceMappingURL=chartTypeUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chartTypeUtils.d.ts","sourceRoot":"","sources":["../../src/chart-builders/chartTypeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAClC,MAAM,CAOR;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,IAC9C,aAAa,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,YAE5C;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,kBAAkB,EAC1B,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,GACtC,OAAO,CAKT;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,kBAAkB,EAAE,EAC7B,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,GACtC,kBAAkB,EAAE,CAEtB;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,mBAAmB,EAC9B,OAAO,EAAE,kBAAkB,EAAE,GAC5B,OAAO,CAQT;AAED,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,mBAAmB,EAAE,EACjC,OAAO,EAAE,kBAAkB,EAAE,GAC5B,mBAAmB,EAAE,CAIvB;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE,aAAa,GAAG,YAAY,CAAC,EAClE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAClC,MAAM,CAIR;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,mBAAmB,GAAG,IAAI,GAAG,SAAS,EACjD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,OAAO,EAAE,kBAAkB,EAAE,GAC5B,OAAO,CAWT"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export { NUMERIC_COLUMN_TYPES, TEMPORAL_COLUMN_TYPES, QUANTITATIVE_COLUMN_TYPES, } from './constants';
|
|
2
|
+
/**
|
|
3
|
+
* Build a default chart title from description and field values
|
|
4
|
+
*/
|
|
5
|
+
export function buildDefaultChartTitle(description, fieldValues) {
|
|
6
|
+
const baseTitle = description.replace(/^Create (a |an )?/, '');
|
|
7
|
+
const selectedFields = Object.values(fieldValues).filter(Boolean);
|
|
8
|
+
return selectedFields.length > 0
|
|
9
|
+
? `${baseTitle} - ${selectedFields.join(', ')}`
|
|
10
|
+
: baseTitle;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Create a title builder function from a description string
|
|
14
|
+
*/
|
|
15
|
+
export function titleFromDescription(description) {
|
|
16
|
+
return (fieldValues) => buildDefaultChartTitle(description, fieldValues);
|
|
17
|
+
}
|
|
18
|
+
export function columnMatchesFieldTypes(column, field) {
|
|
19
|
+
if (!field.types?.length)
|
|
20
|
+
return true;
|
|
21
|
+
return field.types.some((type) => column.type.toUpperCase() === type.toUpperCase());
|
|
22
|
+
}
|
|
23
|
+
export function getCompatibleColumns(columns, field) {
|
|
24
|
+
return columns.filter((column) => columnMatchesFieldTypes(column, field));
|
|
25
|
+
}
|
|
26
|
+
export function isChartTypeAvailable(chartType, columns) {
|
|
27
|
+
if (chartType.isAvailable) {
|
|
28
|
+
return chartType.isAvailable(columns);
|
|
29
|
+
}
|
|
30
|
+
return chartType.fields
|
|
31
|
+
.filter((field) => field.required !== false)
|
|
32
|
+
.every((field) => getCompatibleColumns(columns, field).length > 0);
|
|
33
|
+
}
|
|
34
|
+
export function getAvailableChartTypes(chartTypes, columns) {
|
|
35
|
+
return chartTypes.filter((chartType) => isChartTypeAvailable(chartType, columns));
|
|
36
|
+
}
|
|
37
|
+
export function buildChartTypeTitle(chartType, fieldValues) {
|
|
38
|
+
return chartType.buildTitle
|
|
39
|
+
? chartType.buildTitle(fieldValues)
|
|
40
|
+
: buildDefaultChartTitle(chartType.description, fieldValues);
|
|
41
|
+
}
|
|
42
|
+
export function canCreateChartFromType(chartType, fieldValues, columns) {
|
|
43
|
+
if (!chartType)
|
|
44
|
+
return false;
|
|
45
|
+
return chartType.fields
|
|
46
|
+
.filter((field) => field.required !== false)
|
|
47
|
+
.every((field) => {
|
|
48
|
+
const value = fieldValues[field.key];
|
|
49
|
+
if (!value)
|
|
50
|
+
return false;
|
|
51
|
+
const column = columns.find((candidate) => candidate.name === value);
|
|
52
|
+
return Boolean(column && columnMatchesFieldTypes(column, field));
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=chartTypeUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chartTypeUtils.js","sourceRoot":"","sources":["../../src/chart-builders/chartTypeUtils.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n ChartBuilderColumn,\n ChartBuilderField,\n ChartTypeDefinition,\n} from './types';\n\nexport {\n NUMERIC_COLUMN_TYPES,\n TEMPORAL_COLUMN_TYPES,\n QUANTITATIVE_COLUMN_TYPES,\n} from './constants';\n\n/**\n * Build a default chart title from description and field values\n */\nexport function buildDefaultChartTitle(\n description: string,\n fieldValues: Record<string, string>,\n): string {\n const baseTitle = description.replace(/^Create (a |an )?/, '');\n const selectedFields = Object.values(fieldValues).filter(Boolean);\n\n return selectedFields.length > 0\n ? `${baseTitle} - ${selectedFields.join(', ')}`\n : baseTitle;\n}\n\n/**\n * Create a title builder function from a description string\n */\nexport function titleFromDescription(description: string) {\n return (fieldValues: Record<string, string>) =>\n buildDefaultChartTitle(description, fieldValues);\n}\n\nexport function columnMatchesFieldTypes(\n column: ChartBuilderColumn,\n field: Pick<ChartBuilderField, 'types'>,\n): boolean {\n if (!field.types?.length) return true;\n return field.types.some(\n (type) => column.type.toUpperCase() === type.toUpperCase(),\n );\n}\n\nexport function getCompatibleColumns(\n columns: ChartBuilderColumn[],\n field: Pick<ChartBuilderField, 'types'>,\n): ChartBuilderColumn[] {\n return columns.filter((column) => columnMatchesFieldTypes(column, field));\n}\n\nexport function isChartTypeAvailable(\n chartType: ChartTypeDefinition,\n columns: ChartBuilderColumn[],\n): boolean {\n if (chartType.isAvailable) {\n return chartType.isAvailable(columns);\n }\n\n return chartType.fields\n .filter((field) => field.required !== false)\n .every((field) => getCompatibleColumns(columns, field).length > 0);\n}\n\nexport function getAvailableChartTypes(\n chartTypes: ChartTypeDefinition[],\n columns: ChartBuilderColumn[],\n): ChartTypeDefinition[] {\n return chartTypes.filter((chartType) =>\n isChartTypeAvailable(chartType, columns),\n );\n}\n\nexport function buildChartTypeTitle(\n chartType: Pick<ChartTypeDefinition, 'description' | 'buildTitle'>,\n fieldValues: Record<string, string>,\n): string {\n return chartType.buildTitle\n ? chartType.buildTitle(fieldValues)\n : buildDefaultChartTitle(chartType.description, fieldValues);\n}\n\nexport function canCreateChartFromType(\n chartType: ChartTypeDefinition | null | undefined,\n fieldValues: Record<string, string>,\n columns: ChartBuilderColumn[],\n): boolean {\n if (!chartType) return false;\n\n return chartType.fields\n .filter((field) => field.required !== false)\n .every((field) => {\n const value = fieldValues[field.key];\n if (!value) return false;\n const column = columns.find((candidate) => candidate.name === value);\n return Boolean(column && columnMatchesFieldTypes(column, field));\n });\n}\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Column type constants for chart field type filtering
|
|
3
|
+
*/
|
|
4
|
+
export declare const NUMERIC_COLUMN_TYPES: string[];
|
|
5
|
+
export declare const TEMPORAL_COLUMN_TYPES: string[];
|
|
6
|
+
export declare const QUANTITATIVE_COLUMN_TYPES: string[];
|
|
7
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/chart-builders/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,oBAAoB,UAgBhC,CAAC;AAEF,eAAO,MAAM,qBAAqB,UAQjC,CAAC;AAEF,eAAO,MAAM,yBAAyB,UAGrC,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Column type constants for chart field type filtering
|
|
3
|
+
*/
|
|
4
|
+
export const NUMERIC_COLUMN_TYPES = [
|
|
5
|
+
'BIGINT',
|
|
6
|
+
'BIT',
|
|
7
|
+
'DECIMAL',
|
|
8
|
+
'DOUBLE',
|
|
9
|
+
'FLOAT',
|
|
10
|
+
'HUGEINT',
|
|
11
|
+
'INTEGER',
|
|
12
|
+
'REAL',
|
|
13
|
+
'SMALLINT',
|
|
14
|
+
'TINYINT',
|
|
15
|
+
'UBIGINT',
|
|
16
|
+
'UHUGEINT',
|
|
17
|
+
'UINTEGER',
|
|
18
|
+
'USMALLINT',
|
|
19
|
+
'UTINYINT',
|
|
20
|
+
];
|
|
21
|
+
export const TEMPORAL_COLUMN_TYPES = [
|
|
22
|
+
'DATE',
|
|
23
|
+
'TIME',
|
|
24
|
+
'TIMESTAMP',
|
|
25
|
+
'TIMESTAMP_MS',
|
|
26
|
+
'TIMESTAMP_NS',
|
|
27
|
+
'TIMESTAMP_S',
|
|
28
|
+
'TIMESTAMPTZ',
|
|
29
|
+
];
|
|
30
|
+
export const QUANTITATIVE_COLUMN_TYPES = [
|
|
31
|
+
...NUMERIC_COLUMN_TYPES,
|
|
32
|
+
...TEMPORAL_COLUMN_TYPES,
|
|
33
|
+
];
|
|
34
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/chart-builders/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,QAAQ;IACR,KAAK;IACL,SAAS;IACT,QAAQ;IACR,OAAO;IACP,SAAS;IACT,SAAS;IACT,MAAM;IACN,UAAU;IACV,SAAS;IACT,SAAS;IACT,UAAU;IACV,UAAU;IACV,WAAW;IACX,UAAU;CACX,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,MAAM;IACN,MAAM;IACN,WAAW;IACX,cAAc;IACd,cAAc;IACd,aAAa;IACb,aAAa;CACd,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,GAAG,oBAAoB;IACvB,GAAG,qBAAqB;CACzB,CAAC","sourcesContent":["/**\n * Column type constants for chart field type filtering\n */\n\nexport const NUMERIC_COLUMN_TYPES = [\n 'BIGINT',\n 'BIT',\n 'DECIMAL',\n 'DOUBLE',\n 'FLOAT',\n 'HUGEINT',\n 'INTEGER',\n 'REAL',\n 'SMALLINT',\n 'TINYINT',\n 'UBIGINT',\n 'UHUGEINT',\n 'UINTEGER',\n 'USMALLINT',\n 'UTINYINT',\n];\n\nexport const TEMPORAL_COLUMN_TYPES = [\n 'DATE',\n 'TIME',\n 'TIMESTAMP',\n 'TIMESTAMP_MS',\n 'TIMESTAMP_NS',\n 'TIMESTAMP_S',\n 'TIMESTAMPTZ',\n];\n\nexport const QUANTITATIVE_COLUMN_TYPES = [\n ...NUMERIC_COLUMN_TYPES,\n ...TEMPORAL_COLUMN_TYPES,\n];\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { VgPlotChartType } from '../chart-types';
|
|
2
|
+
export type ChartBuilderStoreState = {
|
|
3
|
+
selectedTemplateId?: VgPlotChartType;
|
|
4
|
+
fieldValues: Record<string, string>;
|
|
5
|
+
reset: () => void;
|
|
6
|
+
selectTemplate: (templateId: VgPlotChartType) => void;
|
|
7
|
+
setFieldValue: (fieldKey: string, value: string) => void;
|
|
8
|
+
};
|
|
9
|
+
export type ChartBuilderStore = ReturnType<typeof createChartBuilderStore>;
|
|
10
|
+
export declare function createChartBuilderStore(): import("zustand").StoreApi<ChartBuilderStoreState>;
|
|
11
|
+
//# sourceMappingURL=createChartBuilderStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createChartBuilderStore.d.ts","sourceRoot":"","sources":["../../src/chart-builders/createChartBuilderStore.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAE/C,MAAM,MAAM,sBAAsB,GAAG;IACnC,kBAAkB,CAAC,EAAE,eAAe,CAAC;IACrC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,cAAc,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,IAAI,CAAC;IACtD,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1D,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAE3E,wBAAgB,uBAAuB,uDA4BtC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { produce } from 'immer';
|
|
2
|
+
import { createStore } from 'zustand/vanilla';
|
|
3
|
+
export function createChartBuilderStore() {
|
|
4
|
+
return createStore((set) => ({
|
|
5
|
+
selectedTemplateId: undefined,
|
|
6
|
+
fieldValues: {},
|
|
7
|
+
reset: () => {
|
|
8
|
+
set((state) => produce(state, (draft) => {
|
|
9
|
+
draft.selectedTemplateId = undefined;
|
|
10
|
+
draft.fieldValues = {};
|
|
11
|
+
}));
|
|
12
|
+
},
|
|
13
|
+
selectTemplate: (templateId) => {
|
|
14
|
+
set((state) => produce(state, (draft) => {
|
|
15
|
+
draft.selectedTemplateId = templateId;
|
|
16
|
+
draft.fieldValues = {};
|
|
17
|
+
}));
|
|
18
|
+
},
|
|
19
|
+
setFieldValue: (fieldKey, value) => {
|
|
20
|
+
set((state) => produce(state, (draft) => {
|
|
21
|
+
draft.fieldValues[fieldKey] = value;
|
|
22
|
+
}));
|
|
23
|
+
},
|
|
24
|
+
}));
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=createChartBuilderStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createChartBuilderStore.js","sourceRoot":"","sources":["../../src/chart-builders/createChartBuilderStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAa5C,MAAM,UAAU,uBAAuB;IACrC,OAAO,WAAW,CAAyB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACnD,kBAAkB,EAAE,SAAS;QAC7B,WAAW,EAAE,EAAE;QACf,KAAK,EAAE,GAAG,EAAE;YACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACZ,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;gBACvB,KAAK,CAAC,kBAAkB,GAAG,SAAS,CAAC;gBACrC,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC;YACzB,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;QACD,cAAc,EAAE,CAAC,UAAU,EAAE,EAAE;YAC7B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACZ,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;gBACvB,KAAK,CAAC,kBAAkB,GAAG,UAAU,CAAC;gBACtC,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC;YACzB,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;QACD,aAAa,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;YACjC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACZ,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;gBACvB,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;YACtC,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;KACF,CAAC,CAAC,CAAC;AACN,CAAC","sourcesContent":["import {produce} from 'immer';\nimport {createStore} from 'zustand/vanilla';\nimport {VgPlotChartType} from '../chart-types';\n\nexport type ChartBuilderStoreState = {\n selectedTemplateId?: VgPlotChartType;\n fieldValues: Record<string, string>;\n reset: () => void;\n selectTemplate: (templateId: VgPlotChartType) => void;\n setFieldValue: (fieldKey: string, value: string) => void;\n};\n\nexport type ChartBuilderStore = ReturnType<typeof createChartBuilderStore>;\n\nexport function createChartBuilderStore() {\n return createStore<ChartBuilderStoreState>((set) => ({\n selectedTemplateId: undefined,\n fieldValues: {},\n reset: () => {\n set((state) =>\n produce(state, (draft) => {\n draft.selectedTemplateId = undefined;\n draft.fieldValues = {};\n }),\n );\n },\n selectTemplate: (templateId) => {\n set((state) =>\n produce(state, (draft) => {\n draft.selectedTemplateId = templateId;\n draft.fieldValues = {};\n }),\n );\n },\n setFieldValue: (fieldKey, value) => {\n set((state) =>\n produce(state, (draft) => {\n draft.fieldValues[fieldKey] = value;\n }),\n );\n },\n }));\n}\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ChartBuilderColumn, ChartTypeDefinition } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Serialize chart types and column metadata into a string suitable for LLM
|
|
4
|
+
* system prompts (e.g. alongside dashboard authoring instructions).
|
|
5
|
+
*/
|
|
6
|
+
export declare function describeChartTypes(chartTypes: ChartTypeDefinition[], tableName: string, columns: ChartBuilderColumn[]): string;
|
|
7
|
+
/** Backward-compatible alias for earlier helper APIs. */
|
|
8
|
+
export declare const describeChartSpecs: typeof describeChartTypes;
|
|
9
|
+
//# sourceMappingURL=describeChartSpecs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"describeChartSpecs.d.ts","sourceRoot":"","sources":["../../src/chart-builders/describeChartSpecs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAElB,mBAAmB,EACpB,MAAM,SAAS,CAAC;AA2BjB;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,mBAAmB,EAAE,EACjC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,kBAAkB,EAAE,GAC5B,MAAM,CAeR;AAED,yDAAyD;AACzD,eAAO,MAAM,kBAAkB,2BAAqB,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
function formatFieldConstraints(field) {
|
|
2
|
+
const parts = [];
|
|
3
|
+
if (field.types?.length) {
|
|
4
|
+
parts.push(`columns typed ${field.types.join(' | ')}`);
|
|
5
|
+
}
|
|
6
|
+
else {
|
|
7
|
+
parts.push('any column');
|
|
8
|
+
}
|
|
9
|
+
if (field.required === false) {
|
|
10
|
+
parts.push('optional');
|
|
11
|
+
}
|
|
12
|
+
return parts.join(', ');
|
|
13
|
+
}
|
|
14
|
+
function formatFieldsBlock(chartType) {
|
|
15
|
+
if (chartType.fields.length === 0) {
|
|
16
|
+
return ' Fields: none (template spec only; edit manually after creation)';
|
|
17
|
+
}
|
|
18
|
+
const lines = chartType.fields.map((f) => {
|
|
19
|
+
const req = f.required !== false ? 'required' : 'optional';
|
|
20
|
+
const suffix = f.description ? `; ${f.description}` : '';
|
|
21
|
+
return ` - ${f.key} (${f.label}): ${req}; ${formatFieldConstraints(f)}${suffix}`;
|
|
22
|
+
});
|
|
23
|
+
return ` Fields:\n${lines.join('\n')}`;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Serialize chart types and column metadata into a string suitable for LLM
|
|
27
|
+
* system prompts (e.g. alongside dashboard authoring instructions).
|
|
28
|
+
*/
|
|
29
|
+
export function describeChartTypes(chartTypes, tableName, columns) {
|
|
30
|
+
const header = `Available chart templates for table "${tableName}":`;
|
|
31
|
+
const body = chartTypes
|
|
32
|
+
.map((chartType) => `- ${chartType.id}: ${chartType.label ?? chartType.description}\n Summary: ${chartType.aiDescription ?? chartType.description}\n${formatFieldsBlock(chartType)}`)
|
|
33
|
+
.join('\n');
|
|
34
|
+
const colLine = columns.length > 0
|
|
35
|
+
? columns.map((c) => `${c.name} (${c.type})`).join(', ')
|
|
36
|
+
: '(no columns provided)';
|
|
37
|
+
return `${header}\n${body}\n\nAvailable columns: ${colLine}`;
|
|
38
|
+
}
|
|
39
|
+
/** Backward-compatible alias for earlier helper APIs. */
|
|
40
|
+
export const describeChartSpecs = describeChartTypes;
|
|
41
|
+
//# sourceMappingURL=describeChartSpecs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"describeChartSpecs.js","sourceRoot":"","sources":["../../src/chart-builders/describeChartSpecs.ts"],"names":[],"mappings":"AAMA,SAAS,sBAAsB,CAAC,KAAwB;IACtD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,iBAAiB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3B,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,iBAAiB,CAAC,SAA8B;IACvD,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,mEAAmE,CAAC;IAC7E,CAAC;IACD,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACvC,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;QAC3D,MAAM,MAAM,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,OAAO,SAAS,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,GAAG,KAAK,sBAAsB,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC;IACtF,CAAC,CAAC,CAAC;IACH,OAAO,cAAc,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC1C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,UAAiC,EACjC,SAAiB,EACjB,OAA6B;IAE7B,MAAM,MAAM,GAAG,wCAAwC,SAAS,IAAI,CAAC;IACrE,MAAM,IAAI,GAAG,UAAU;SACpB,GAAG,CACF,CAAC,SAAS,EAAE,EAAE,CACZ,KAAK,SAAS,CAAC,EAAE,KAAK,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,WAAW,gBAAgB,SAAS,CAAC,aAAa,IAAI,SAAS,CAAC,WAAW,KAAK,iBAAiB,CAAC,SAAS,CAAC,EAAE,CACpK;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,OAAO,GACX,OAAO,CAAC,MAAM,GAAG,CAAC;QAChB,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACxD,CAAC,CAAC,uBAAuB,CAAC;IAE9B,OAAO,GAAG,MAAM,KAAK,IAAI,0BAA0B,OAAO,EAAE,CAAC;AAC/D,CAAC;AAED,yDAAyD;AACzD,MAAM,CAAC,MAAM,kBAAkB,GAAG,kBAAkB,CAAC","sourcesContent":["import type {\n ChartBuilderColumn,\n ChartBuilderField,\n ChartTypeDefinition,\n} from './types';\n\nfunction formatFieldConstraints(field: ChartBuilderField): string {\n const parts: string[] = [];\n if (field.types?.length) {\n parts.push(`columns typed ${field.types.join(' | ')}`);\n } else {\n parts.push('any column');\n }\n if (field.required === false) {\n parts.push('optional');\n }\n return parts.join(', ');\n}\n\nfunction formatFieldsBlock(chartType: ChartTypeDefinition): string {\n if (chartType.fields.length === 0) {\n return ' Fields: none (template spec only; edit manually after creation)';\n }\n const lines = chartType.fields.map((f) => {\n const req = f.required !== false ? 'required' : 'optional';\n const suffix = f.description ? `; ${f.description}` : '';\n return ` - ${f.key} (${f.label}): ${req}; ${formatFieldConstraints(f)}${suffix}`;\n });\n return ` Fields:\\n${lines.join('\\n')}`;\n}\n\n/**\n * Serialize chart types and column metadata into a string suitable for LLM\n * system prompts (e.g. alongside dashboard authoring instructions).\n */\nexport function describeChartTypes(\n chartTypes: ChartTypeDefinition[],\n tableName: string,\n columns: ChartBuilderColumn[],\n): string {\n const header = `Available chart templates for table \"${tableName}\":`;\n const body = chartTypes\n .map(\n (chartType) =>\n `- ${chartType.id}: ${chartType.label ?? chartType.description}\\n Summary: ${chartType.aiDescription ?? chartType.description}\\n${formatFieldsBlock(chartType)}`,\n )\n .join('\\n');\n\n const colLine =\n columns.length > 0\n ? columns.map((c) => `${c.name} (${c.type})`).join(', ')\n : '(no columns provided)';\n\n return `${header}\\n${body}\\n\\nAvailable columns: ${colLine}`;\n}\n\n/** Backward-compatible alias for earlier helper APIs. */\nexport const describeChartSpecs = describeChartTypes;\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ChartBuilderField } from '../types';
|
|
2
|
+
interface UseChartFieldFormProps {
|
|
3
|
+
fields: ChartBuilderField[];
|
|
4
|
+
values: Record<string, unknown>;
|
|
5
|
+
onChange: (key: string, value: unknown) => void;
|
|
6
|
+
}
|
|
7
|
+
export declare function useChartFieldForm({ fields, values, onChange, }: UseChartFieldFormProps): {
|
|
8
|
+
fields: ChartBuilderField[];
|
|
9
|
+
values: Record<string, unknown>;
|
|
10
|
+
handleFieldChange: (fieldKey: string, value: unknown) => void;
|
|
11
|
+
};
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=useChartFieldForm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useChartFieldForm.d.ts","sourceRoot":"","sources":["../../../src/chart-builders/hooks/useChartFieldForm.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,UAAU,CAAC;AAEhD,UAAU,sBAAsB;IAC9B,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACjD;AAED,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,MAAM,EACN,QAAQ,GACT,EAAE,sBAAsB;;;kCAEV,MAAM,SAAS,OAAO;EAWpC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { useCallback } from 'react';
|
|
2
|
+
export function useChartFieldForm({ fields, values, onChange, }) {
|
|
3
|
+
const handleFieldChange = useCallback((fieldKey, value) => {
|
|
4
|
+
onChange(fieldKey, value);
|
|
5
|
+
}, [onChange]);
|
|
6
|
+
return {
|
|
7
|
+
fields,
|
|
8
|
+
values,
|
|
9
|
+
handleFieldChange,
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=useChartFieldForm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useChartFieldForm.js","sourceRoot":"","sources":["../../../src/chart-builders/hooks/useChartFieldForm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,OAAO,CAAC;AASlC,MAAM,UAAU,iBAAiB,CAAC,EAChC,MAAM,EACN,MAAM,EACN,QAAQ,GACe;IACvB,MAAM,iBAAiB,GAAG,WAAW,CACnC,CAAC,QAAgB,EAAE,KAAc,EAAE,EAAE;QACnC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC5B,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,OAAO;QACL,MAAM;QACN,MAAM;QACN,iBAAiB;KAClB,CAAC;AACJ,CAAC","sourcesContent":["import {useCallback} from 'react';\nimport type {ChartBuilderField} from '../types';\n\ninterface UseChartFieldFormProps {\n fields: ChartBuilderField[];\n values: Record<string, unknown>;\n onChange: (key: string, value: unknown) => void;\n}\n\nexport function useChartFieldForm({\n fields,\n values,\n onChange,\n}: UseChartFieldFormProps) {\n const handleFieldChange = useCallback(\n (fieldKey: string, value: unknown) => {\n onChange(fieldKey, value);\n },\n [onChange],\n );\n\n return {\n fields,\n values,\n handleFieldChange,\n };\n}\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ComponentType } from 'react';
|
|
2
|
+
import type { ChartTypeDefinition, ChartBuilderField, ChartBuilderColumn } from '../chart-types/base-types';
|
|
3
|
+
export type { ChartTypeDefinition, ChartBuilderField, ChartBuilderColumn };
|
|
4
|
+
/**
|
|
5
|
+
* Describes a chart builder template that generates Mosaic JSON specs
|
|
6
|
+
* (includes an icon for the chart-type grid).
|
|
7
|
+
*/
|
|
8
|
+
export interface ChartBuilderTemplate extends ChartTypeDefinition {
|
|
9
|
+
/** Icon component */
|
|
10
|
+
icon: ComponentType<{
|
|
11
|
+
className?: string;
|
|
12
|
+
}>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Backward-compatible alias for earlier chart-builder helper APIs.
|
|
16
|
+
* Prefer {@link ChartTypeDefinition} for new code.
|
|
17
|
+
*/
|
|
18
|
+
export type ChartSpec = ChartTypeDefinition;
|
|
19
|
+
/** Strip UI-only fields from a template for non-UI chart-type contexts. */
|
|
20
|
+
export declare function toChartTypeDefinition(template: ChartBuilderTemplate): ChartTypeDefinition;
|
|
21
|
+
/** Backward-compatible alias for earlier helper APIs. */
|
|
22
|
+
export declare const toChartSpec: typeof toChartTypeDefinition;
|
|
23
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/chart-builders/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,OAAO,CAAC;AACzC,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,2BAA2B,CAAC;AAGnC,YAAY,EAAC,mBAAmB,EAAE,iBAAiB,EAAE,kBAAkB,EAAC,CAAC;AAEzE;;;GAGG;AACH,MAAM,WAAW,oBAAqB,SAAQ,mBAAmB;IAC/D,qBAAqB;IACrB,IAAI,EAAE,aAAa,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;CAC3C;AAED;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,mBAAmB,CAAC;AAE5C,2EAA2E;AAC3E,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,oBAAoB,GAC7B,mBAAmB,CAqBrB;AAED,yDAAyD;AACzD,eAAO,MAAM,WAAW,8BAAwB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** Strip UI-only fields from a template for non-UI chart-type contexts. */
|
|
2
|
+
export function toChartTypeDefinition(template) {
|
|
3
|
+
const { id, label, description, fields, createSpec, buildTitle, isAvailable, aiDescription, } = template;
|
|
4
|
+
return {
|
|
5
|
+
id,
|
|
6
|
+
label,
|
|
7
|
+
description,
|
|
8
|
+
fields,
|
|
9
|
+
createSpec,
|
|
10
|
+
buildTitle,
|
|
11
|
+
isAvailable,
|
|
12
|
+
aiDescription,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
/** Backward-compatible alias for earlier helper APIs. */
|
|
16
|
+
export const toChartSpec = toChartTypeDefinition;
|
|
17
|
+
//# sourceMappingURL=types.js.map
|