@sqlrooms/mosaic 0.29.0-rc.2 → 0.29.0-rc.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +209 -0
- package/dist/MosaicChartBuilder.d.ts +44 -13
- package/dist/MosaicChartBuilder.d.ts.map +1 -1
- package/dist/MosaicChartBuilder.js +22 -30
- package/dist/MosaicChartBuilder.js.map +1 -1
- package/dist/MosaicSlice.d.ts +28 -10
- package/dist/MosaicSlice.d.ts.map +1 -1
- package/dist/MosaicSlice.js +77 -11
- package/dist/MosaicSlice.js.map +1 -1
- package/dist/ResponsivePlot.d.ts +23 -0
- package/dist/ResponsivePlot.d.ts.map +1 -0
- package/dist/ResponsivePlot.js +43 -0
- package/dist/ResponsivePlot.js.map +1 -0
- package/dist/VgPlotChart.d.ts +18 -2
- package/dist/VgPlotChart.d.ts.map +1 -1
- package/dist/VgPlotChart.js +112 -26
- package/dist/VgPlotChart.js.map +1 -1
- package/dist/boxplot/BoxPlotClient.d.ts +58 -0
- package/dist/boxplot/BoxPlotClient.d.ts.map +1 -0
- package/dist/boxplot/BoxPlotClient.js +264 -0
- package/dist/boxplot/BoxPlotClient.js.map +1 -0
- package/dist/chart/MosaicDashboardChart.d.ts +14 -0
- package/dist/chart/MosaicDashboardChart.d.ts.map +1 -0
- package/dist/chart/MosaicDashboardChart.js +21 -0
- package/dist/chart/MosaicDashboardChart.js.map +1 -0
- package/dist/chart/MosaicDashboardChartContent.d.ts +16 -0
- package/dist/chart/MosaicDashboardChartContent.d.ts.map +1 -0
- package/dist/chart/MosaicDashboardChartContent.js +18 -0
- package/dist/chart/MosaicDashboardChartContent.js.map +1 -0
- package/dist/chart/MosaicDashboardChartHeaderActions.d.ts +4 -0
- package/dist/chart/MosaicDashboardChartHeaderActions.d.ts.map +1 -0
- package/dist/chart/MosaicDashboardChartHeaderActions.js +16 -0
- package/dist/chart/MosaicDashboardChartHeaderActions.js.map +1 -0
- package/dist/chart/MosaicDashboardChartRenderer.d.ts +3 -0
- package/dist/chart/MosaicDashboardChartRenderer.d.ts.map +1 -0
- package/dist/chart/MosaicDashboardChartRenderer.js +31 -0
- package/dist/chart/MosaicDashboardChartRenderer.js.map +1 -0
- package/dist/chart/MosaicDashboardComponentChart.d.ts +14 -0
- package/dist/chart/MosaicDashboardComponentChart.d.ts.map +1 -0
- package/dist/chart/MosaicDashboardComponentChart.js +11 -0
- package/dist/chart/MosaicDashboardComponentChart.js.map +1 -0
- package/dist/chart/MosaicDashboardVgPlotChart.d.ts +10 -0
- package/dist/chart/MosaicDashboardVgPlotChart.d.ts.map +1 -0
- package/dist/chart/MosaicDashboardVgPlotChart.js +10 -0
- package/dist/chart/MosaicDashboardVgPlotChart.js.map +1 -0
- package/dist/chart/MosaicDashboardVgPlotError.d.ts +8 -0
- package/dist/chart/MosaicDashboardVgPlotError.d.ts.map +1 -0
- package/dist/chart/MosaicDashboardVgPlotError.js +11 -0
- package/dist/chart/MosaicDashboardVgPlotError.js.map +1 -0
- package/dist/chart/chart-settings/ChartSettings.d.ts +44 -0
- package/dist/chart/chart-settings/ChartSettings.d.ts.map +1 -0
- package/dist/chart/chart-settings/ChartSettings.js +71 -0
- package/dist/chart/chart-settings/ChartSettings.js.map +1 -0
- package/dist/chart/chart-settings/ChartSettingsContent.d.ts +13 -0
- package/dist/chart/chart-settings/ChartSettingsContent.d.ts.map +1 -0
- package/dist/chart/chart-settings/ChartSettingsContent.js +18 -0
- package/dist/chart/chart-settings/ChartSettingsContent.js.map +1 -0
- package/dist/chart/chart-settings/ChartSettingsContext.d.ts +27 -0
- package/dist/chart/chart-settings/ChartSettingsContext.d.ts.map +1 -0
- package/dist/chart/chart-settings/ChartSettingsContext.js +35 -0
- package/dist/chart/chart-settings/ChartSettingsContext.js.map +1 -0
- package/dist/chart/chart-settings/ChartSettingsPanel.d.ts +14 -0
- package/dist/chart/chart-settings/ChartSettingsPanel.d.ts.map +1 -0
- package/dist/chart/chart-settings/ChartSettingsPanel.js +17 -0
- package/dist/chart/chart-settings/ChartSettingsPanel.js.map +1 -0
- package/dist/chart/chart-settings/ChartSpecViewerPanel.d.ts +9 -0
- package/dist/chart/chart-settings/ChartSpecViewerPanel.d.ts.map +1 -0
- package/dist/chart/chart-settings/ChartSpecViewerPanel.js +11 -0
- package/dist/chart/chart-settings/ChartSpecViewerPanel.js.map +1 -0
- package/dist/chart/chart-settings/ChartTypeSelector.d.ts +9 -0
- package/dist/chart/chart-settings/ChartTypeSelector.d.ts.map +1 -0
- package/dist/chart/chart-settings/ChartTypeSelector.js +16 -0
- package/dist/chart/chart-settings/ChartTypeSelector.js.map +1 -0
- package/dist/chart/chart-settings/useTableColumns.d.ts +3 -0
- package/dist/chart/chart-settings/useTableColumns.d.ts.map +1 -0
- package/dist/chart/chart-settings/useTableColumns.js +12 -0
- package/dist/chart/chart-settings/useTableColumns.js.map +1 -0
- package/dist/chart/useBrushSelectionParams.d.ts +3 -0
- package/dist/chart/useBrushSelectionParams.d.ts.map +1 -0
- package/dist/chart/useBrushSelectionParams.js +16 -0
- package/dist/chart/useBrushSelectionParams.js.map +1 -0
- package/dist/chart/useChartRetainer.d.ts +3 -0
- package/dist/chart/useChartRetainer.d.ts.map +1 -0
- package/dist/chart/useChartRetainer.js +11 -0
- package/dist/chart/useChartRetainer.js.map +1 -0
- package/dist/chart/useGenerateSpec.d.ts +13 -0
- package/dist/chart/useGenerateSpec.d.ts.map +1 -0
- package/dist/chart/useGenerateSpec.js +32 -0
- package/dist/chart/useGenerateSpec.js.map +1 -0
- package/dist/chart-builders/AggregationSelector.d.ts +11 -0
- package/dist/chart-builders/AggregationSelector.d.ts.map +1 -0
- package/dist/chart-builders/AggregationSelector.js +9 -0
- package/dist/chart-builders/AggregationSelector.js.map +1 -0
- package/dist/chart-builders/ChartBuilderActions.d.ts +6 -0
- package/dist/chart-builders/ChartBuilderActions.d.ts.map +1 -0
- package/dist/chart-builders/ChartBuilderActions.js +36 -0
- package/dist/chart-builders/ChartBuilderActions.js.map +1 -0
- package/dist/chart-builders/ChartBuilderContent.d.ts +12 -12
- package/dist/chart-builders/ChartBuilderContent.d.ts.map +1 -1
- package/dist/chart-builders/ChartBuilderContent.js +21 -52
- package/dist/chart-builders/ChartBuilderContent.js.map +1 -1
- package/dist/chart-builders/ChartBuilderContext.d.ts +8 -4
- package/dist/chart-builders/ChartBuilderContext.d.ts.map +1 -1
- package/dist/chart-builders/ChartBuilderContext.js +5 -0
- package/dist/chart-builders/ChartBuilderContext.js.map +1 -1
- package/dist/chart-builders/ChartBuilderDialog.d.ts +30 -8
- package/dist/chart-builders/ChartBuilderDialog.d.ts.map +1 -1
- package/dist/chart-builders/ChartBuilderDialog.js +25 -10
- package/dist/chart-builders/ChartBuilderDialog.js.map +1 -1
- package/dist/chart-builders/ChartBuilderFields.d.ts +6 -0
- package/dist/chart-builders/ChartBuilderFields.d.ts.map +1 -0
- package/dist/chart-builders/ChartBuilderFields.js +39 -0
- package/dist/chart-builders/ChartBuilderFields.js.map +1 -0
- package/dist/chart-builders/ChartBuilderRoot.d.ts +25 -0
- package/dist/chart-builders/ChartBuilderRoot.d.ts.map +1 -0
- package/dist/chart-builders/ChartBuilderRoot.js +42 -0
- package/dist/chart-builders/ChartBuilderRoot.js.map +1 -0
- package/dist/chart-builders/ChartBuilderTypeGrid.d.ts +7 -0
- package/dist/chart-builders/ChartBuilderTypeGrid.d.ts.map +1 -0
- package/dist/chart-builders/ChartBuilderTypeGrid.js +23 -0
- package/dist/chart-builders/ChartBuilderTypeGrid.js.map +1 -0
- package/dist/chart-builders/ColumnSelector.d.ts +15 -0
- package/dist/chart-builders/ColumnSelector.d.ts.map +1 -0
- package/dist/chart-builders/ColumnSelector.js +31 -0
- package/dist/chart-builders/ColumnSelector.js.map +1 -0
- package/dist/chart-builders/Field.d.ts +11 -0
- package/dist/chart-builders/Field.d.ts.map +1 -0
- package/dist/chart-builders/Field.js +9 -0
- package/dist/chart-builders/Field.js.map +1 -0
- package/dist/chart-builders/FieldSelectorInput.d.ts +2 -1
- package/dist/chart-builders/FieldSelectorInput.d.ts.map +1 -1
- package/dist/chart-builders/FieldSelectorInput.js +5 -5
- package/dist/chart-builders/FieldSelectorInput.js.map +1 -1
- package/dist/chart-builders/MultiFieldSelector.d.ts +14 -0
- package/dist/chart-builders/MultiFieldSelector.d.ts.map +1 -0
- package/dist/chart-builders/MultiFieldSelector.js +53 -0
- package/dist/chart-builders/MultiFieldSelector.js.map +1 -0
- package/dist/chart-builders/TemporalGranularitySelector.d.ts +10 -0
- package/dist/chart-builders/TemporalGranularitySelector.d.ts.map +1 -0
- package/dist/chart-builders/TemporalGranularitySelector.js +37 -0
- package/dist/chart-builders/TemporalGranularitySelector.js.map +1 -0
- package/dist/chart-builders/chartSpecTitle.d.ts +3 -4
- package/dist/chart-builders/chartSpecTitle.d.ts.map +1 -1
- package/dist/chart-builders/chartSpecTitle.js +3 -5
- package/dist/chart-builders/chartSpecTitle.js.map +1 -1
- package/dist/chart-builders/chartTypeUtils.d.ts +13 -0
- package/dist/chart-builders/chartTypeUtils.d.ts.map +1 -0
- package/dist/chart-builders/chartTypeUtils.js +47 -0
- package/dist/chart-builders/chartTypeUtils.js.map +1 -0
- package/dist/chart-builders/constants.d.ts +12 -0
- package/dist/chart-builders/constants.d.ts.map +1 -0
- package/dist/chart-builders/constants.js +47 -0
- package/dist/chart-builders/constants.js.map +1 -0
- package/dist/chart-builders/createChartBuilderStore.d.ts +11 -0
- package/dist/chart-builders/createChartBuilderStore.d.ts.map +1 -0
- package/dist/chart-builders/createChartBuilderStore.js +26 -0
- package/dist/chart-builders/createChartBuilderStore.js.map +1 -0
- package/dist/chart-types/base-types.d.ts +148 -0
- package/dist/chart-types/base-types.d.ts.map +1 -0
- package/dist/chart-types/base-types.js +11 -0
- package/dist/chart-types/base-types.js.map +1 -0
- package/dist/chart-types/box-plot/BoxPlotSettings.d.ts +3 -0
- package/dist/chart-types/box-plot/BoxPlotSettings.d.ts.map +1 -0
- package/dist/chart-types/box-plot/BoxPlotSettings.js +9 -0
- package/dist/chart-types/box-plot/BoxPlotSettings.js.map +1 -0
- package/dist/chart-types/box-plot/definition.d.ts +4 -0
- package/dist/chart-types/box-plot/definition.d.ts.map +1 -0
- package/dist/chart-types/box-plot/definition.js +19 -0
- package/dist/chart-types/box-plot/definition.js.map +1 -0
- package/dist/chart-types/box-plot/renderer/BoxPlotErrorBoundary.d.ts +18 -0
- package/dist/chart-types/box-plot/renderer/BoxPlotErrorBoundary.d.ts.map +1 -0
- package/dist/chart-types/box-plot/renderer/BoxPlotErrorBoundary.js +28 -0
- package/dist/chart-types/box-plot/renderer/BoxPlotErrorBoundary.js.map +1 -0
- package/dist/chart-types/box-plot/renderer/BoxPlotPanelRenderer.d.ts +9 -0
- package/dist/chart-types/box-plot/renderer/BoxPlotPanelRenderer.d.ts.map +1 -0
- package/dist/chart-types/box-plot/renderer/BoxPlotPanelRenderer.js +115 -0
- package/dist/chart-types/box-plot/renderer/BoxPlotPanelRenderer.js.map +1 -0
- package/dist/chart-types/box-plot/renderer/constants.d.ts +24 -0
- package/dist/chart-types/box-plot/renderer/constants.d.ts.map +1 -0
- package/dist/chart-types/box-plot/renderer/constants.js +17 -0
- package/dist/chart-types/box-plot/renderer/constants.js.map +1 -0
- package/dist/chart-types/box-plot/renderer/plot.d.ts +14 -0
- package/dist/chart-types/box-plot/renderer/plot.d.ts.map +1 -0
- package/dist/chart-types/box-plot/renderer/plot.js +91 -0
- package/dist/chart-types/box-plot/renderer/plot.js.map +1 -0
- package/dist/chart-types/box-plot/renderer/useBoxPlotClient.d.ts +14 -0
- package/dist/chart-types/box-plot/renderer/useBoxPlotClient.d.ts.map +1 -0
- package/dist/chart-types/box-plot/renderer/useBoxPlotClient.js +45 -0
- package/dist/chart-types/box-plot/renderer/useBoxPlotClient.js.map +1 -0
- package/dist/chart-types/box-plot/renderer/utils.d.ts +6 -0
- package/dist/chart-types/box-plot/renderer/utils.d.ts.map +1 -0
- package/dist/chart-types/box-plot/renderer/utils.js +34 -0
- package/dist/chart-types/box-plot/renderer/utils.js.map +1 -0
- package/dist/chart-types/box-plot/schema.d.ts +16 -0
- package/dist/chart-types/box-plot/schema.d.ts.map +1 -0
- package/dist/chart-types/box-plot/schema.js +11 -0
- package/dist/chart-types/box-plot/schema.js.map +1 -0
- package/dist/chart-types/box-plot/tool.d.ts +44 -0
- package/dist/chart-types/box-plot/tool.d.ts.map +1 -0
- package/dist/chart-types/box-plot/tool.js +59 -0
- package/dist/chart-types/box-plot/tool.js.map +1 -0
- package/dist/chart-types/bubble-chart/BubbleChartSettings.d.ts +3 -0
- package/dist/chart-types/bubble-chart/BubbleChartSettings.d.ts.map +1 -0
- package/dist/chart-types/bubble-chart/BubbleChartSettings.js +9 -0
- package/dist/chart-types/bubble-chart/BubbleChartSettings.js.map +1 -0
- package/dist/chart-types/bubble-chart/definition.d.ts +4 -0
- package/dist/chart-types/bubble-chart/definition.d.ts.map +1 -0
- package/dist/chart-types/bubble-chart/definition.js +19 -0
- package/dist/chart-types/bubble-chart/definition.js.map +1 -0
- package/dist/chart-types/bubble-chart/schema.d.ts +18 -0
- package/dist/chart-types/bubble-chart/schema.d.ts.map +1 -0
- package/dist/chart-types/bubble-chart/schema.js +15 -0
- package/dist/chart-types/bubble-chart/schema.js.map +1 -0
- package/dist/chart-types/bubble-chart/spec.d.ts +4 -0
- package/dist/chart-types/bubble-chart/spec.d.ts.map +1 -0
- package/dist/chart-types/bubble-chart/spec.js +31 -0
- package/dist/chart-types/bubble-chart/spec.js.map +1 -0
- package/dist/chart-types/bubble-chart/tool.d.ts +46 -0
- package/dist/chart-types/bubble-chart/tool.d.ts.map +1 -0
- package/dist/chart-types/bubble-chart/tool.js +58 -0
- package/dist/chart-types/bubble-chart/tool.js.map +1 -0
- package/dist/chart-types/chart-config.d.ts +92 -0
- package/dist/chart-types/chart-config.d.ts.map +1 -0
- package/dist/chart-types/chart-config.js +47 -0
- package/dist/chart-types/chart-config.js.map +1 -0
- package/dist/chart-types/count-plot/CountPlotSettings.d.ts +3 -0
- package/dist/chart-types/count-plot/CountPlotSettings.d.ts.map +1 -0
- package/dist/chart-types/count-plot/CountPlotSettings.js +9 -0
- package/dist/chart-types/count-plot/CountPlotSettings.js.map +1 -0
- package/dist/chart-types/count-plot/definition.d.ts +4 -0
- package/dist/chart-types/count-plot/definition.d.ts.map +1 -0
- package/dist/chart-types/count-plot/definition.js +19 -0
- package/dist/chart-types/count-plot/definition.js.map +1 -0
- package/dist/chart-types/count-plot/schema.d.ts +14 -0
- package/dist/chart-types/count-plot/schema.d.ts.map +1 -0
- package/dist/chart-types/count-plot/schema.js +13 -0
- package/dist/chart-types/count-plot/schema.js.map +1 -0
- package/dist/chart-types/count-plot/spec.d.ts +4 -0
- package/dist/chart-types/count-plot/spec.d.ts.map +1 -0
- package/dist/chart-types/count-plot/spec.js +49 -0
- package/dist/chart-types/count-plot/spec.js.map +1 -0
- package/dist/chart-types/count-plot/tool.d.ts +42 -0
- package/dist/chart-types/count-plot/tool.d.ts.map +1 -0
- package/dist/chart-types/count-plot/tool.js +55 -0
- package/dist/chart-types/count-plot/tool.js.map +1 -0
- package/dist/chart-types/custom-spec/CustomSpecSettings.d.ts +7 -0
- package/dist/chart-types/custom-spec/CustomSpecSettings.d.ts.map +1 -0
- package/dist/chart-types/custom-spec/CustomSpecSettings.js +30 -0
- package/dist/chart-types/custom-spec/CustomSpecSettings.js.map +1 -0
- package/dist/chart-types/custom-spec/definition.d.ts +4 -0
- package/dist/chart-types/custom-spec/definition.d.ts.map +1 -0
- package/dist/chart-types/custom-spec/definition.js +17 -0
- package/dist/chart-types/custom-spec/definition.js.map +1 -0
- package/dist/chart-types/custom-spec/schema.d.ts +14 -0
- package/dist/chart-types/custom-spec/schema.d.ts.map +1 -0
- package/dist/chart-types/custom-spec/schema.js +10 -0
- package/dist/chart-types/custom-spec/schema.js.map +1 -0
- package/dist/chart-types/custom-spec/spec.d.ts +4 -0
- package/dist/chart-types/custom-spec/spec.d.ts.map +1 -0
- package/dist/chart-types/custom-spec/spec.js +24 -0
- package/dist/chart-types/custom-spec/spec.js.map +1 -0
- package/dist/chart-types/errors.d.ts +23 -0
- package/dist/chart-types/errors.d.ts.map +1 -0
- package/dist/chart-types/errors.js +26 -0
- package/dist/chart-types/errors.js.map +1 -0
- package/dist/chart-types/heatmap/HeatmapSettings.d.ts +3 -0
- package/dist/chart-types/heatmap/HeatmapSettings.d.ts.map +1 -0
- package/dist/chart-types/heatmap/HeatmapSettings.js +9 -0
- package/dist/chart-types/heatmap/HeatmapSettings.js.map +1 -0
- package/dist/chart-types/heatmap/definition.d.ts +4 -0
- package/dist/chart-types/heatmap/definition.d.ts.map +1 -0
- package/dist/chart-types/heatmap/definition.js +19 -0
- package/dist/chart-types/heatmap/definition.js.map +1 -0
- package/dist/chart-types/heatmap/schema.d.ts +16 -0
- package/dist/chart-types/heatmap/schema.d.ts.map +1 -0
- package/dist/chart-types/heatmap/schema.js +11 -0
- package/dist/chart-types/heatmap/schema.js.map +1 -0
- package/dist/chart-types/heatmap/spec.d.ts +4 -0
- package/dist/chart-types/heatmap/spec.d.ts.map +1 -0
- package/dist/chart-types/heatmap/spec.js +32 -0
- package/dist/chart-types/heatmap/spec.js.map +1 -0
- package/dist/chart-types/heatmap/tool.d.ts +44 -0
- package/dist/chart-types/heatmap/tool.d.ts.map +1 -0
- package/dist/chart-types/heatmap/tool.js +59 -0
- package/dist/chart-types/heatmap/tool.js.map +1 -0
- package/dist/chart-types/histogram/HistogramSettings.d.ts +3 -0
- package/dist/chart-types/histogram/HistogramSettings.d.ts.map +1 -0
- package/dist/chart-types/histogram/HistogramSettings.js +9 -0
- package/dist/chart-types/histogram/HistogramSettings.js.map +1 -0
- package/dist/chart-types/histogram/definition.d.ts +4 -0
- package/dist/chart-types/histogram/definition.d.ts.map +1 -0
- package/dist/chart-types/histogram/definition.js +19 -0
- package/dist/chart-types/histogram/definition.js.map +1 -0
- package/dist/chart-types/histogram/schema.d.ts +14 -0
- package/dist/chart-types/histogram/schema.d.ts.map +1 -0
- package/dist/chart-types/histogram/schema.js +13 -0
- package/dist/chart-types/histogram/schema.js.map +1 -0
- package/dist/chart-types/histogram/spec.d.ts +4 -0
- package/dist/chart-types/histogram/spec.d.ts.map +1 -0
- package/dist/chart-types/histogram/spec.js +36 -0
- package/dist/chart-types/histogram/spec.js.map +1 -0
- package/dist/chart-types/histogram/tool.d.ts +42 -0
- package/dist/chart-types/histogram/tool.d.ts.map +1 -0
- package/dist/chart-types/histogram/tool.js +55 -0
- package/dist/chart-types/histogram/tool.js.map +1 -0
- package/dist/chart-types/index.d.ts +115 -0
- package/dist/chart-types/index.d.ts.map +1 -0
- package/dist/chart-types/index.js +100 -0
- package/dist/chart-types/index.js.map +1 -0
- package/dist/chart-types/line-chart/LineChartSettings.d.ts +7 -0
- package/dist/chart-types/line-chart/LineChartSettings.d.ts.map +1 -0
- package/dist/chart-types/line-chart/LineChartSettings.js +22 -0
- package/dist/chart-types/line-chart/LineChartSettings.js.map +1 -0
- package/dist/chart-types/line-chart/definition.d.ts +4 -0
- package/dist/chart-types/line-chart/definition.d.ts.map +1 -0
- package/dist/chart-types/line-chart/definition.js +19 -0
- package/dist/chart-types/line-chart/definition.js.map +1 -0
- package/dist/chart-types/line-chart/schema.d.ts +83 -0
- package/dist/chart-types/line-chart/schema.d.ts.map +1 -0
- package/dist/chart-types/line-chart/schema.js +39 -0
- package/dist/chart-types/line-chart/schema.js.map +1 -0
- package/dist/chart-types/line-chart/spec.d.ts +4 -0
- package/dist/chart-types/line-chart/spec.d.ts.map +1 -0
- package/dist/chart-types/line-chart/spec.js +91 -0
- package/dist/chart-types/line-chart/spec.js.map +1 -0
- package/dist/chart-types/line-chart/tool.d.ts +68 -0
- package/dist/chart-types/line-chart/tool.d.ts.map +1 -0
- package/dist/chart-types/line-chart/tool.js +66 -0
- package/dist/chart-types/line-chart/tool.js.map +1 -0
- package/dist/chart-types/tool-schemas.d.ts +8 -0
- package/dist/chart-types/tool-schemas.d.ts.map +1 -0
- package/dist/chart-types/tool-schemas.js +18 -0
- package/dist/chart-types/tool-schemas.js.map +1 -0
- package/dist/chart-types/tool-types.d.ts +26 -0
- package/dist/chart-types/tool-types.d.ts.map +1 -0
- package/dist/chart-types/tool-types.js +2 -0
- package/dist/chart-types/tool-types.js.map +1 -0
- package/dist/chart-types/tool-validation.d.ts +3 -0
- package/dist/chart-types/tool-validation.d.ts.map +1 -0
- package/dist/chart-types/tool-validation.js +11 -0
- package/dist/chart-types/tool-validation.js.map +1 -0
- package/dist/chart-types/useChartTypeDefinition.d.ts +3 -0
- package/dist/chart-types/useChartTypeDefinition.d.ts.map +1 -0
- package/dist/chart-types/useChartTypeDefinition.js +8 -0
- package/dist/chart-types/useChartTypeDefinition.js.map +1 -0
- package/dist/dashboard/DashboardPanelErrorBoundary.d.ts +17 -0
- package/dist/dashboard/DashboardPanelErrorBoundary.d.ts.map +1 -0
- package/dist/dashboard/DashboardPanelErrorBoundary.js +21 -0
- package/dist/dashboard/DashboardPanelErrorBoundary.js.map +1 -0
- package/dist/dashboard/MosaicDashboard.d.ts +2 -4
- package/dist/dashboard/MosaicDashboard.d.ts.map +1 -1
- package/dist/dashboard/MosaicDashboard.js +38 -19
- package/dist/dashboard/MosaicDashboard.js.map +1 -1
- package/dist/dashboard/MosaicDashboardContext.d.ts +1 -0
- package/dist/dashboard/MosaicDashboardContext.d.ts.map +1 -1
- package/dist/dashboard/MosaicDashboardContext.js.map +1 -1
- package/dist/dashboard/MosaicDashboardEmptyState.d.ts +2 -0
- package/dist/dashboard/MosaicDashboardEmptyState.d.ts.map +1 -0
- package/dist/dashboard/MosaicDashboardEmptyState.js +50 -0
- package/dist/dashboard/MosaicDashboardEmptyState.js.map +1 -0
- package/dist/dashboard/MosaicDashboardPanel.d.ts +3 -0
- package/dist/dashboard/MosaicDashboardPanel.d.ts.map +1 -0
- package/dist/dashboard/MosaicDashboardPanel.js +26 -0
- package/dist/dashboard/MosaicDashboardPanel.js.map +1 -0
- package/dist/dashboard/MosaicDashboardPanelDragOverlay.d.ts +8 -0
- package/dist/dashboard/MosaicDashboardPanelDragOverlay.d.ts.map +1 -0
- package/dist/dashboard/MosaicDashboardPanelDragOverlay.js +17 -0
- package/dist/dashboard/MosaicDashboardPanelDragOverlay.js.map +1 -0
- package/dist/dashboard/MosaicDashboardPanelHeader.d.ts +13 -0
- package/dist/dashboard/MosaicDashboardPanelHeader.d.ts.map +1 -0
- package/dist/dashboard/MosaicDashboardPanelHeader.js +30 -0
- package/dist/dashboard/MosaicDashboardPanelHeader.js.map +1 -0
- package/dist/dashboard/MosaicDashboardPanelLayout.d.ts +10 -0
- package/dist/dashboard/MosaicDashboardPanelLayout.d.ts.map +1 -0
- package/dist/dashboard/MosaicDashboardPanelLayout.js +46 -0
- package/dist/dashboard/MosaicDashboardPanelLayout.js.map +1 -0
- package/dist/dashboard/MosaicDashboardPanels.d.ts +2 -0
- package/dist/dashboard/MosaicDashboardPanels.d.ts.map +1 -0
- package/dist/dashboard/MosaicDashboardPanels.js +53 -0
- package/dist/dashboard/MosaicDashboardPanels.js.map +1 -0
- package/dist/dashboard/MosaicDashboardSlice.d.ts +607 -27
- package/dist/dashboard/MosaicDashboardSlice.d.ts.map +1 -1
- package/dist/dashboard/MosaicDashboardSlice.js +525 -93
- package/dist/dashboard/MosaicDashboardSlice.js.map +1 -1
- package/dist/dashboard/MosaicDashboardToolbar.d.ts.map +1 -1
- package/dist/dashboard/MosaicDashboardToolbar.js +74 -7
- package/dist/dashboard/MosaicDashboardToolbar.js.map +1 -1
- package/dist/dashboard/defaultPanelRenderers.d.ts +3 -0
- package/dist/dashboard/defaultPanelRenderers.d.ts.map +1 -0
- package/dist/dashboard/defaultPanelRenderers.js +13 -0
- package/dist/dashboard/defaultPanelRenderers.js.map +1 -0
- package/dist/dashboard/utils.d.ts +3 -0
- package/dist/dashboard/utils.d.ts.map +1 -0
- package/dist/dashboard/utils.js +16 -0
- package/dist/dashboard/utils.js.map +1 -0
- package/dist/editor/MosaicChartDisplay.d.ts.map +1 -1
- package/dist/editor/MosaicChartDisplay.js +6 -1
- package/dist/editor/MosaicChartDisplay.js.map +1 -1
- package/dist/index.d.ts +28 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -3
- package/dist/index.js.map +1 -1
- package/dist/profiler/MosaicDashboardProfilerPanelRenderer.d.ts +3 -0
- package/dist/profiler/MosaicDashboardProfilerPanelRenderer.d.ts.map +1 -0
- package/dist/profiler/MosaicDashboardProfilerPanelRenderer.js +32 -0
- package/dist/profiler/MosaicDashboardProfilerPanelRenderer.js.map +1 -0
- package/dist/profiler/useMosaicProfiler.d.ts.map +1 -1
- package/dist/profiler/useMosaicProfiler.js.map +1 -1
- package/dist/tableInterop.js.map +1 -1
- package/dist/text/MosaicDashboardTextRenderer.d.ts +3 -0
- package/dist/text/MosaicDashboardTextRenderer.d.ts.map +1 -0
- package/dist/text/MosaicDashboardTextRenderer.js +46 -0
- package/dist/text/MosaicDashboardTextRenderer.js.map +1 -0
- package/dist/useMosaicClient.d.ts +4 -15
- package/dist/useMosaicClient.d.ts.map +1 -1
- package/dist/useMosaicClient.js +10 -4
- package/dist/useMosaicClient.js.map +1 -1
- package/package.json +40 -31
- package/dist/chart-builders/builders.d.ts +0 -7
- package/dist/chart-builders/builders.d.ts.map +0 -1
- package/dist/chart-builders/builders.js +0 -280
- package/dist/chart-builders/builders.js.map +0 -1
- package/dist/chart-builders/createMosaicChartTool.d.ts +0 -45
- package/dist/chart-builders/createMosaicChartTool.d.ts.map +0 -1
- package/dist/chart-builders/createMosaicChartTool.js +0 -109
- package/dist/chart-builders/createMosaicChartTool.js.map +0 -1
- package/dist/chart-builders/describeChartSpecs.d.ts +0 -7
- package/dist/chart-builders/describeChartSpecs.d.ts.map +0 -1
- package/dist/chart-builders/describeChartSpecs.js +0 -38
- package/dist/chart-builders/describeChartSpecs.js.map +0 -1
- package/dist/chart-builders/types.d.ts +0 -40
- package/dist/chart-builders/types.d.ts.map +0 -1
- package/dist/chart-builders/types.js +0 -2
- package/dist/chart-builders/types.js.map +0 -1
- package/dist/dashboard/MosaicDashboardChartPanel.d.ts +0 -3
- package/dist/dashboard/MosaicDashboardChartPanel.d.ts.map +0 -1
- package/dist/dashboard/MosaicDashboardChartPanel.js +0 -49
- package/dist/dashboard/MosaicDashboardChartPanel.js.map +0 -1
- package/dist/dashboard/MosaicDashboardCharts.d.ts +0 -3
- package/dist/dashboard/MosaicDashboardCharts.d.ts.map +0 -1
- package/dist/dashboard/MosaicDashboardCharts.js +0 -45
- package/dist/dashboard/MosaicDashboardCharts.js.map +0 -1
- package/dist/dashboard/MosaicDashboardProfiler.d.ts +0 -3
- package/dist/dashboard/MosaicDashboardProfiler.d.ts.map +0 -1
- package/dist/dashboard/MosaicDashboardProfiler.js +0 -21
- package/dist/dashboard/MosaicDashboardProfiler.js.map +0 -1
- package/dist/dashboard/VgPlotSpecPopoverEditor.d.ts +0 -8
- package/dist/dashboard/VgPlotSpecPopoverEditor.d.ts.map +0 -1
- package/dist/dashboard/VgPlotSpecPopoverEditor.js +0 -40
- package/dist/dashboard/VgPlotSpecPopoverEditor.js.map +0 -1
- package/dist/use-mosaic.d.ts +0 -11
- package/dist/use-mosaic.d.ts.map +0 -1
- package/dist/use-mosaic.js +0 -42
- package/dist/use-mosaic.js.map +0 -1
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { tool } from 'ai';
|
|
2
|
+
import { BubbleChartSettings } from './schema';
|
|
3
|
+
import { BaseChartToolParameters } from '../tool-schemas';
|
|
4
|
+
import { validateColumnExists } from '../tool-validation';
|
|
5
|
+
import { NUMERIC_COLUMN_TYPES } from '../../chart-builders/constants';
|
|
6
|
+
export const BubbleChartToolParameters = BaseChartToolParameters.extend({
|
|
7
|
+
settings: BubbleChartSettings.required(),
|
|
8
|
+
});
|
|
9
|
+
export function createBubbleChartAiTool(deps) {
|
|
10
|
+
return tool({
|
|
11
|
+
description: `Bubble/scatter chart: plots individual points positioned by two numeric columns (x, y), with optional size dimension.
|
|
12
|
+
|
|
13
|
+
Use when: user asks to "plot X vs Y", "show relationship between", "scatter plot", "correlation", "compare two numeric columns".
|
|
14
|
+
Example queries: "plot latitude vs longitude", "show correlation between elevation and temperature", "visualize coordinates sized by population", "plot area vs population density".
|
|
15
|
+
|
|
16
|
+
Required: x and y must be numeric (${NUMERIC_COLUMN_TYPES.join(', ')}).
|
|
17
|
+
Optional: size can encode a third numeric dimension (magnitude, frequency, count).
|
|
18
|
+
|
|
19
|
+
Do NOT use for: distributions (use histogram), categorical counts (use count-plot), trends over time (use line-chart).`,
|
|
20
|
+
inputSchema: BubbleChartToolParameters,
|
|
21
|
+
execute: async (params, context) => {
|
|
22
|
+
try {
|
|
23
|
+
const { artifactId, tableName, columns } = deps.resolveResources(params, context);
|
|
24
|
+
// Validate settings
|
|
25
|
+
validateColumnExists(params.settings.x, NUMERIC_COLUMN_TYPES, columns, 'x');
|
|
26
|
+
validateColumnExists(params.settings.y, NUMERIC_COLUMN_TYPES, columns, 'y');
|
|
27
|
+
const title = params.settings.x && params.settings.y
|
|
28
|
+
? `Bubble chart - ${params.settings.x} vs ${params.settings.y}`
|
|
29
|
+
: 'Bubble chart';
|
|
30
|
+
const result = deps.createChart({
|
|
31
|
+
artifactId,
|
|
32
|
+
tableName,
|
|
33
|
+
config: {
|
|
34
|
+
chartType: 'bubble-chart',
|
|
35
|
+
settings: params.settings,
|
|
36
|
+
},
|
|
37
|
+
title,
|
|
38
|
+
});
|
|
39
|
+
return {
|
|
40
|
+
llmResult: {
|
|
41
|
+
success: true,
|
|
42
|
+
details: `Created bubble chart "${result.title}".`,
|
|
43
|
+
data: result,
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
return {
|
|
49
|
+
llmResult: {
|
|
50
|
+
success: false,
|
|
51
|
+
errorMessage: error instanceof Error ? error.message : String(error),
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/chart-types/bubble-chart/tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,IAAI,CAAC;AAExB,OAAO,EAAC,mBAAmB,EAAC,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAC,uBAAuB,EAAC,MAAM,iBAAiB,CAAC;AAExD,OAAO,EAAC,oBAAoB,EAAC,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AAEpE,MAAM,CAAC,MAAM,yBAAyB,GAAG,uBAAuB,CAAC,MAAM,CAAC;IACtE,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,EAAE;CACzC,CAAC,CAAC;AAIH,MAAM,UAAU,uBAAuB,CAAC,IAAmB;IACzD,OAAO,IAAI,CAAC;QACV,WAAW,EAAE;;;;;qCAKoB,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;;;uHAGmD;QACnH,WAAW,EAAE,yBAAyB;QACtC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;YACjC,IAAI,CAAC;gBACH,MAAM,EAAC,UAAU,EAAE,SAAS,EAAE,OAAO,EAAC,GAAG,IAAI,CAAC,gBAAgB,CAC5D,MAAM,EACN,OAAO,CACR,CAAC;gBAEF,oBAAoB;gBACpB,oBAAoB,CAClB,MAAM,CAAC,QAAQ,CAAC,CAAC,EACjB,oBAAoB,EACpB,OAAO,EACP,GAAG,CACJ,CAAC;gBAEF,oBAAoB,CAClB,MAAM,CAAC,QAAQ,CAAC,CAAC,EACjB,oBAAoB,EACpB,OAAO,EACP,GAAG,CACJ,CAAC;gBAEF,MAAM,KAAK,GACT,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;oBACpC,CAAC,CAAC,kBAAkB,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE;oBAC/D,CAAC,CAAC,cAAc,CAAC;gBAErB,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;oBAC9B,UAAU;oBACV,SAAS;oBACT,MAAM,EAAE;wBACN,SAAS,EAAE,cAAc;wBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;qBAC1B;oBACD,KAAK;iBACN,CAAC,CAAC;gBAEH,OAAO;oBACL,SAAS,EAAE;wBACT,OAAO,EAAE,IAAI;wBACb,OAAO,EAAE,yBAAyB,MAAM,CAAC,KAAK,IAAI;wBAClD,IAAI,EAAE,MAAM;qBACb;iBACF,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO;oBACL,SAAS,EAAE;wBACT,OAAO,EAAE,KAAK;wBACd,YAAY,EACV,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;qBACzD;iBACF,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC","sourcesContent":["import {tool} from 'ai';\nimport {z} from 'zod';\nimport {BubbleChartSettings} from './schema';\nimport {BaseChartToolParameters} from '../tool-schemas';\nimport {type ChartToolDeps} from '../base-types';\nimport {validateColumnExists} from '../tool-validation';\nimport {NUMERIC_COLUMN_TYPES} from '../../chart-builders/constants';\n\nexport const BubbleChartToolParameters = BaseChartToolParameters.extend({\n settings: BubbleChartSettings.required(),\n});\n\nexport type BubbleChartToolParams = z.infer<typeof BubbleChartToolParameters>;\n\nexport function createBubbleChartAiTool(deps: ChartToolDeps) {\n return tool({\n description: `Bubble/scatter chart: plots individual points positioned by two numeric columns (x, y), with optional size dimension.\n\nUse when: user asks to \"plot X vs Y\", \"show relationship between\", \"scatter plot\", \"correlation\", \"compare two numeric columns\".\nExample queries: \"plot latitude vs longitude\", \"show correlation between elevation and temperature\", \"visualize coordinates sized by population\", \"plot area vs population density\".\n\nRequired: x and y must be numeric (${NUMERIC_COLUMN_TYPES.join(', ')}).\nOptional: size can encode a third numeric dimension (magnitude, frequency, count).\n\nDo NOT use for: distributions (use histogram), categorical counts (use count-plot), trends over time (use line-chart).`,\n inputSchema: BubbleChartToolParameters,\n execute: async (params, context) => {\n try {\n const {artifactId, tableName, columns} = deps.resolveResources(\n params,\n context,\n );\n\n // Validate settings\n validateColumnExists(\n params.settings.x,\n NUMERIC_COLUMN_TYPES,\n columns,\n 'x',\n );\n\n validateColumnExists(\n params.settings.y,\n NUMERIC_COLUMN_TYPES,\n columns,\n 'y',\n );\n\n const title =\n params.settings.x && params.settings.y\n ? `Bubble chart - ${params.settings.x} vs ${params.settings.y}`\n : 'Bubble chart';\n\n const result = deps.createChart({\n artifactId,\n tableName,\n config: {\n chartType: 'bubble-chart',\n settings: params.settings,\n },\n title,\n });\n\n return {\n llmResult: {\n success: true,\n details: `Created bubble chart \"${result.title}\".`,\n data: result,\n },\n };\n } catch (error) {\n return {\n llmResult: {\n success: false,\n errorMessage:\n error instanceof Error ? error.message : String(error),\n },\n };\n }\n },\n });\n}\n"]}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Central ChartConfig discriminated union.
|
|
3
|
+
* Separated from index.ts to avoid circular dependencies with Settings components.
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
export declare const CustomChartSettings: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
7
|
+
export type CustomChartSettings = z.infer<typeof CustomChartSettings>;
|
|
8
|
+
export declare const CustomChartConfig: z.ZodObject<{
|
|
9
|
+
chartType: z.ZodString;
|
|
10
|
+
settings: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
11
|
+
settingsOpen: z.ZodOptional<z.ZodBoolean>;
|
|
12
|
+
}, z.core.$strip>;
|
|
13
|
+
export type CustomChartConfig = z.infer<typeof CustomChartConfig>;
|
|
14
|
+
/**
|
|
15
|
+
* Discriminated union of all chart configuration types.
|
|
16
|
+
* This schema is used for runtime validation and type inference.
|
|
17
|
+
*/
|
|
18
|
+
export declare const ChartConfig: z.ZodUnion<[z.ZodDiscriminatedUnion<readonly [z.ZodObject<{
|
|
19
|
+
chartType: z.ZodLiteral<"histogram">;
|
|
20
|
+
settings: z.ZodObject<{
|
|
21
|
+
field: z.ZodOptional<z.ZodString>;
|
|
22
|
+
}, z.core.$strip>;
|
|
23
|
+
settingsOpen: z.ZodOptional<z.ZodBoolean>;
|
|
24
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
25
|
+
chartType: z.ZodLiteral<"count-plot">;
|
|
26
|
+
settings: z.ZodObject<{
|
|
27
|
+
field: z.ZodOptional<z.ZodString>;
|
|
28
|
+
}, z.core.$strip>;
|
|
29
|
+
settingsOpen: z.ZodOptional<z.ZodBoolean>;
|
|
30
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
31
|
+
chartType: z.ZodLiteral<"line-chart">;
|
|
32
|
+
settings: z.ZodObject<{
|
|
33
|
+
x: z.ZodOptional<z.ZodString>;
|
|
34
|
+
xInterval: z.ZodOptional<z.ZodEnum<{
|
|
35
|
+
second: "second";
|
|
36
|
+
minute: "minute";
|
|
37
|
+
hour: "hour";
|
|
38
|
+
day: "day";
|
|
39
|
+
week: "week";
|
|
40
|
+
month: "month";
|
|
41
|
+
quarter: "quarter";
|
|
42
|
+
year: "year";
|
|
43
|
+
}>>;
|
|
44
|
+
yFields: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
45
|
+
field: z.ZodString;
|
|
46
|
+
color: z.ZodOptional<z.ZodString>;
|
|
47
|
+
aggregate: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
|
|
48
|
+
sum: "sum";
|
|
49
|
+
max: "max";
|
|
50
|
+
min: "min";
|
|
51
|
+
avg: "avg";
|
|
52
|
+
}>>>;
|
|
53
|
+
}, z.core.$strip>>>;
|
|
54
|
+
}, z.core.$strip>;
|
|
55
|
+
settingsOpen: z.ZodOptional<z.ZodBoolean>;
|
|
56
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
57
|
+
chartType: z.ZodLiteral<"bubble-chart">;
|
|
58
|
+
settings: z.ZodObject<{
|
|
59
|
+
x: z.ZodOptional<z.ZodString>;
|
|
60
|
+
y: z.ZodOptional<z.ZodString>;
|
|
61
|
+
size: z.ZodOptional<z.ZodString>;
|
|
62
|
+
}, z.core.$strip>;
|
|
63
|
+
settingsOpen: z.ZodOptional<z.ZodBoolean>;
|
|
64
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
65
|
+
chartType: z.ZodLiteral<"heatmap">;
|
|
66
|
+
settings: z.ZodObject<{
|
|
67
|
+
x: z.ZodOptional<z.ZodString>;
|
|
68
|
+
y: z.ZodOptional<z.ZodString>;
|
|
69
|
+
}, z.core.$strip>;
|
|
70
|
+
settingsOpen: z.ZodOptional<z.ZodBoolean>;
|
|
71
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
72
|
+
chartType: z.ZodLiteral<"box-plot">;
|
|
73
|
+
settings: z.ZodObject<{
|
|
74
|
+
x: z.ZodString;
|
|
75
|
+
y: z.ZodString;
|
|
76
|
+
}, z.core.$strip>;
|
|
77
|
+
settingsOpen: z.ZodOptional<z.ZodBoolean>;
|
|
78
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
79
|
+
chartType: z.ZodLiteral<"custom-spec">;
|
|
80
|
+
settingsOpen: z.ZodOptional<z.ZodBoolean>;
|
|
81
|
+
settings: z.ZodObject<{
|
|
82
|
+
vgPlotSpec: z.ZodOptional<z.ZodUnknown>;
|
|
83
|
+
}, z.core.$strip>;
|
|
84
|
+
}, z.core.$strip>], "chartType">, z.ZodObject<{
|
|
85
|
+
chartType: z.ZodString;
|
|
86
|
+
settings: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
87
|
+
settingsOpen: z.ZodOptional<z.ZodBoolean>;
|
|
88
|
+
}, z.core.$strip>]>;
|
|
89
|
+
export type ChartConfig = z.infer<typeof ChartConfig>;
|
|
90
|
+
export type ChartSettings = ChartConfig['settings'];
|
|
91
|
+
export type ChartType = ChartConfig['chartType'];
|
|
92
|
+
//# sourceMappingURL=chart-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart-config.d.ts","sourceRoot":"","sources":["../../src/chart-types/chart-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAWtB,eAAO,MAAM,mBAAmB,wCAAoC,CAAC;AAErE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAsBtE,eAAO,MAAM,iBAAiB;;;;iBAM5B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE;;;GAGG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAEA,CAAC;AAEzB,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AACpD,MAAM,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Central ChartConfig discriminated union.
|
|
3
|
+
* Separated from index.ts to avoid circular dependencies with Settings components.
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
// Import only the Zod schemas (no Settings components)
|
|
7
|
+
import { HistogramChartConfig } from './histogram/schema';
|
|
8
|
+
import { CountPlotChartConfig } from './count-plot/schema';
|
|
9
|
+
import { LineChartConfig } from './line-chart/schema';
|
|
10
|
+
import { BubbleChartConfig } from './bubble-chart/schema';
|
|
11
|
+
import { HeatmapChartConfig } from './heatmap/schema';
|
|
12
|
+
import { BoxPlotChartConfig } from './box-plot/schema';
|
|
13
|
+
import { CustomSpecChartConfig } from './custom-spec/schema';
|
|
14
|
+
export const CustomChartSettings = z.record(z.string(), z.unknown());
|
|
15
|
+
const KNOWN_CHART_CONFIGS = [
|
|
16
|
+
HistogramChartConfig,
|
|
17
|
+
CountPlotChartConfig,
|
|
18
|
+
LineChartConfig,
|
|
19
|
+
BubbleChartConfig,
|
|
20
|
+
HeatmapChartConfig,
|
|
21
|
+
BoxPlotChartConfig,
|
|
22
|
+
CustomSpecChartConfig,
|
|
23
|
+
];
|
|
24
|
+
const KNOWN_CHART_TYPES = [
|
|
25
|
+
HistogramChartConfig,
|
|
26
|
+
CountPlotChartConfig,
|
|
27
|
+
LineChartConfig,
|
|
28
|
+
BubbleChartConfig,
|
|
29
|
+
HeatmapChartConfig,
|
|
30
|
+
BoxPlotChartConfig,
|
|
31
|
+
CustomSpecChartConfig,
|
|
32
|
+
].map((config) => config.shape.chartType.value);
|
|
33
|
+
export const CustomChartConfig = z.object({
|
|
34
|
+
chartType: z.string().refine((val) => !KNOWN_CHART_TYPES.includes(val), {
|
|
35
|
+
message: 'Custom chart type cannot use reserved chart type names',
|
|
36
|
+
}),
|
|
37
|
+
settings: CustomChartSettings,
|
|
38
|
+
settingsOpen: z.boolean().optional(),
|
|
39
|
+
});
|
|
40
|
+
/**
|
|
41
|
+
* Discriminated union of all chart configuration types.
|
|
42
|
+
* This schema is used for runtime validation and type inference.
|
|
43
|
+
*/
|
|
44
|
+
export const ChartConfig = z
|
|
45
|
+
.discriminatedUnion('chartType', KNOWN_CHART_CONFIGS)
|
|
46
|
+
.or(CustomChartConfig);
|
|
47
|
+
//# sourceMappingURL=chart-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart-config.js","sourceRoot":"","sources":["../../src/chart-types/chart-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,uDAAuD;AACvD,OAAO,EAAC,oBAAoB,EAAC,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAC,oBAAoB,EAAC,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAC,kBAAkB,EAAC,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAC,qBAAqB,EAAC,MAAM,sBAAsB,CAAC;AAE3D,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAIrE,MAAM,mBAAmB,GAAG;IAC1B,oBAAoB;IACpB,oBAAoB;IACpB,eAAe;IACf,iBAAiB;IACjB,kBAAkB;IAClB,kBAAkB;IAClB,qBAAqB;CACb,CAAC;AAEX,MAAM,iBAAiB,GAAa;IAClC,oBAAoB;IACpB,oBAAoB;IACpB,eAAe;IACf,iBAAiB;IACjB,kBAAkB;IAClB,kBAAkB;IAClB,qBAAqB;CACtB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAEhD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QACtE,OAAO,EAAE,wDAAwD;KAClE,CAAC;IACF,QAAQ,EAAE,mBAAmB;IAC7B,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC;AAIH;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC;KACzB,kBAAkB,CAAC,WAAW,EAAE,mBAAmB,CAAC;KACpD,EAAE,CAAC,iBAAiB,CAAC,CAAC","sourcesContent":["/**\n * Central ChartConfig discriminated union.\n * Separated from index.ts to avoid circular dependencies with Settings components.\n */\n\nimport {z} from 'zod';\n\n// Import only the Zod schemas (no Settings components)\nimport {HistogramChartConfig} from './histogram/schema';\nimport {CountPlotChartConfig} from './count-plot/schema';\nimport {LineChartConfig} from './line-chart/schema';\nimport {BubbleChartConfig} from './bubble-chart/schema';\nimport {HeatmapChartConfig} from './heatmap/schema';\nimport {BoxPlotChartConfig} from './box-plot/schema';\nimport {CustomSpecChartConfig} from './custom-spec/schema';\n\nexport const CustomChartSettings = z.record(z.string(), z.unknown());\n\nexport type CustomChartSettings = z.infer<typeof CustomChartSettings>;\n\nconst KNOWN_CHART_CONFIGS = [\n HistogramChartConfig,\n CountPlotChartConfig,\n LineChartConfig,\n BubbleChartConfig,\n HeatmapChartConfig,\n BoxPlotChartConfig,\n CustomSpecChartConfig,\n] as const;\n\nconst KNOWN_CHART_TYPES: string[] = [\n HistogramChartConfig,\n CountPlotChartConfig,\n LineChartConfig,\n BubbleChartConfig,\n HeatmapChartConfig,\n BoxPlotChartConfig,\n CustomSpecChartConfig,\n].map((config) => config.shape.chartType.value);\n\nexport const CustomChartConfig = z.object({\n chartType: z.string().refine((val) => !KNOWN_CHART_TYPES.includes(val), {\n message: 'Custom chart type cannot use reserved chart type names',\n }),\n settings: CustomChartSettings,\n settingsOpen: z.boolean().optional(),\n});\n\nexport type CustomChartConfig = z.infer<typeof CustomChartConfig>;\n\n/**\n * Discriminated union of all chart configuration types.\n * This schema is used for runtime validation and type inference.\n */\nexport const ChartConfig = z\n .discriminatedUnion('chartType', KNOWN_CHART_CONFIGS)\n .or(CustomChartConfig);\n\nexport type ChartConfig = z.infer<typeof ChartConfig>;\n\nexport type ChartSettings = ChartConfig['settings'];\nexport type ChartType = ChartConfig['chartType'];\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CountPlotSettings.d.ts","sourceRoot":"","sources":["../../../src/chart-types/count-plot/CountPlotSettings.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,EAAC,MAAM,OAAO,CAAC;AAK9B,eAAO,MAAM,0BAA0B,EAAE,EAaxC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Field } from '../../chart-builders/Field';
|
|
3
|
+
import { ColumnSelector } from '../../chart-builders/ColumnSelector';
|
|
4
|
+
import { useChartSettingsContext } from '../../chart/chart-settings/ChartSettingsContext';
|
|
5
|
+
export const CountPlotSettingsComponent = () => {
|
|
6
|
+
const { onChangeConfig, config } = useChartSettingsContext('count-plot');
|
|
7
|
+
return (_jsx("div", { className: "space-y-4", children: _jsx(Field, { label: "Field", required: true, children: _jsx(ColumnSelector.Categorical, { value: config.settings.field, onChange: (field) => onChangeConfig('field', field) }) }) }));
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=CountPlotSettings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CountPlotSettings.js","sourceRoot":"","sources":["../../../src/chart-types/count-plot/CountPlotSettings.tsx"],"names":[],"mappings":";AACA,OAAO,EAAC,KAAK,EAAC,MAAM,4BAA4B,CAAC;AACjD,OAAO,EAAC,cAAc,EAAC,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAC,uBAAuB,EAAC,MAAM,iDAAiD,CAAC;AAExF,MAAM,CAAC,MAAM,0BAA0B,GAAO,GAAG,EAAE;IACjD,MAAM,EAAC,cAAc,EAAE,MAAM,EAAC,GAAG,uBAAuB,CAAC,YAAY,CAAC,CAAC;IAEvE,OAAO,CACL,cAAK,SAAS,EAAC,WAAW,YACxB,KAAC,KAAK,IAAC,KAAK,EAAC,OAAO,EAAC,QAAQ,kBAC3B,KAAC,cAAc,CAAC,WAAW,IACzB,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,EAC5B,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,GACnD,GACI,GACJ,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {type FC} from 'react';\nimport {Field} from '../../chart-builders/Field';\nimport {ColumnSelector} from '../../chart-builders/ColumnSelector';\nimport {useChartSettingsContext} from '../../chart/chart-settings/ChartSettingsContext';\n\nexport const CountPlotSettingsComponent: FC = () => {\n const {onChangeConfig, config} = useChartSettingsContext('count-plot');\n\n return (\n <div className=\"space-y-4\">\n <Field label=\"Field\" required>\n <ColumnSelector.Categorical\n value={config.settings.field}\n onChange={(field) => onChangeConfig('field', field)}\n />\n </Field>\n </div>\n );\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../../src/chart-types/count-plot/definition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAC,oBAAoB,EAAyB,MAAM,UAAU,CAAC;AAStE,eAAO,MAAM,kBAAkB,EAAE,uBAAuB,CAAC,oBAAoB,CAW1E,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { CountPlotChartSettings } from './schema';
|
|
2
|
+
import { titleFromDescription } from '../../chart-builders/chartTypeUtils';
|
|
3
|
+
import { CountPlotSettingsComponent } from './CountPlotSettings';
|
|
4
|
+
import { createCountPlotAiTool } from './tool';
|
|
5
|
+
import { BarChartHorizontal } from 'lucide-react';
|
|
6
|
+
import { createCountPlotSpec } from './spec';
|
|
7
|
+
const DESCRIPTION = 'Create a count plot of a field';
|
|
8
|
+
export const countPlotChartType = {
|
|
9
|
+
id: 'count-plot',
|
|
10
|
+
label: 'Count Plot',
|
|
11
|
+
description: DESCRIPTION,
|
|
12
|
+
icon: BarChartHorizontal,
|
|
13
|
+
schema: CountPlotChartSettings,
|
|
14
|
+
settingsComponent: CountPlotSettingsComponent,
|
|
15
|
+
buildTitle: titleFromDescription(DESCRIPTION),
|
|
16
|
+
createTool: createCountPlotAiTool,
|
|
17
|
+
createSpec: createCountPlotSpec,
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=definition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition.js","sourceRoot":"","sources":["../../../src/chart-types/count-plot/definition.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,sBAAsB,EAAC,MAAM,UAAU,CAAC;AACtE,OAAO,EAAC,oBAAoB,EAAC,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAC,0BAA0B,EAAC,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAC,qBAAqB,EAAC,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAC,kBAAkB,EAAC,MAAM,cAAc,CAAC;AAChD,OAAO,EAAC,mBAAmB,EAAC,MAAM,QAAQ,CAAC;AAE3C,MAAM,WAAW,GAAG,gCAAgC,CAAC;AAErD,MAAM,CAAC,MAAM,kBAAkB,GAC7B;IACE,EAAE,EAAE,YAAY;IAChB,KAAK,EAAE,YAAY;IACnB,WAAW,EAAE,WAAW;IACxB,IAAI,EAAE,kBAAkB;IACxB,MAAM,EAAE,sBAAsB;IAC9B,iBAAiB,EAAE,0BAA0B;IAC7C,UAAU,EAAE,oBAAoB,CAAC,WAAW,CAAC;IAC7C,UAAU,EAAE,qBAAqB;IACjC,UAAU,EAAE,mBAAmB;CAChC,CAAC","sourcesContent":["import type {SpecChartTypeDefinition} from '../base-types';\nimport {CountPlotChartConfig, CountPlotChartSettings} from './schema';\nimport {titleFromDescription} from '../../chart-builders/chartTypeUtils';\nimport {CountPlotSettingsComponent} from './CountPlotSettings';\nimport {createCountPlotAiTool} from './tool';\nimport {BarChartHorizontal} from 'lucide-react';\nimport {createCountPlotSpec} from './spec';\n\nconst DESCRIPTION = 'Create a count plot of a field';\n\nexport const countPlotChartType: SpecChartTypeDefinition<CountPlotChartConfig> =\n {\n id: 'count-plot',\n label: 'Count Plot',\n description: DESCRIPTION,\n icon: BarChartHorizontal,\n schema: CountPlotChartSettings,\n settingsComponent: CountPlotSettingsComponent,\n buildTitle: titleFromDescription(DESCRIPTION),\n createTool: createCountPlotAiTool,\n createSpec: createCountPlotSpec,\n };\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const CountPlotChartSettings: z.ZodObject<{
|
|
3
|
+
field: z.ZodOptional<z.ZodString>;
|
|
4
|
+
}, z.core.$strip>;
|
|
5
|
+
export type CountPlotChartSettings = z.infer<typeof CountPlotChartSettings>;
|
|
6
|
+
export declare const CountPlotChartConfig: z.ZodObject<{
|
|
7
|
+
chartType: z.ZodLiteral<"count-plot">;
|
|
8
|
+
settings: z.ZodObject<{
|
|
9
|
+
field: z.ZodOptional<z.ZodString>;
|
|
10
|
+
}, z.core.$strip>;
|
|
11
|
+
settingsOpen: z.ZodOptional<z.ZodBoolean>;
|
|
12
|
+
}, z.core.$strip>;
|
|
13
|
+
export type CountPlotChartConfig = z.infer<typeof CountPlotChartConfig>;
|
|
14
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/chart-types/count-plot/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,eAAO,MAAM,sBAAsB;;iBAKjC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAE5E,eAAO,MAAM,oBAAoB;;;;;;iBAI/B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const CountPlotChartSettings = z.object({
|
|
3
|
+
field: z
|
|
4
|
+
.string()
|
|
5
|
+
.optional()
|
|
6
|
+
.describe('Categorical column to count frequency of values'),
|
|
7
|
+
});
|
|
8
|
+
export const CountPlotChartConfig = z.object({
|
|
9
|
+
chartType: z.literal('count-plot'),
|
|
10
|
+
settings: CountPlotChartSettings,
|
|
11
|
+
settingsOpen: z.boolean().optional(),
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/chart-types/count-plot/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,iDAAiD,CAAC;CAC/D,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;IAClC,QAAQ,EAAE,sBAAsB;IAChC,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC","sourcesContent":["import {z} from 'zod';\n\nexport const CountPlotChartSettings = z.object({\n field: z\n .string()\n .optional()\n .describe('Categorical column to count frequency of values'),\n});\n\nexport type CountPlotChartSettings = z.infer<typeof CountPlotChartSettings>;\n\nexport const CountPlotChartConfig = z.object({\n chartType: z.literal('count-plot'),\n settings: CountPlotChartSettings,\n settingsOpen: z.boolean().optional(),\n});\n\nexport type CountPlotChartConfig = z.infer<typeof CountPlotChartConfig>;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../../../src/chart-types/count-plot/spec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAC,sBAAsB,EAAC,MAAM,UAAU,CAAC;AAMhD,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,EAAC,KAAK,EAAC,EAAE,sBAAsB,GAC9B,IAAI,CA6CN"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { SpecGenerationError } from '../errors';
|
|
2
|
+
const BG_COLOR = 'var(--color-chart-overlay)';
|
|
3
|
+
const FG_COLOR = 'var(--color-chart-1)';
|
|
4
|
+
export function createCountPlotSpec(tableName, { field }) {
|
|
5
|
+
if (!field) {
|
|
6
|
+
throw new SpecGenerationError('Field is required for count plot');
|
|
7
|
+
}
|
|
8
|
+
// Count plot shows categorical frequency as horizontal bars
|
|
9
|
+
// Categories on Y-axis, counts on X-axis
|
|
10
|
+
return {
|
|
11
|
+
plot: [
|
|
12
|
+
{
|
|
13
|
+
mark: 'barX',
|
|
14
|
+
data: { from: tableName },
|
|
15
|
+
x: { count: null },
|
|
16
|
+
y: { column: field, sort: { x: 'sum', order: 'desc', limit: 100 } },
|
|
17
|
+
fill: BG_COLOR,
|
|
18
|
+
inset: 0.5,
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
mark: 'barX',
|
|
22
|
+
data: { from: tableName, filterBy: '$brush' },
|
|
23
|
+
x: { count: null },
|
|
24
|
+
y: { column: field, sort: { x: 'sum', order: 'desc', limit: 100 } },
|
|
25
|
+
fill: FG_COLOR,
|
|
26
|
+
inset: 0.5,
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
mark: 'text',
|
|
30
|
+
data: { from: tableName, filterBy: '$brush' },
|
|
31
|
+
x: { count: null },
|
|
32
|
+
y: { column: field, sort: { x: 'sum', order: 'desc', limit: 100 } },
|
|
33
|
+
text: { count: null },
|
|
34
|
+
dx: 5,
|
|
35
|
+
textAnchor: 'start',
|
|
36
|
+
fill: 'currentColor',
|
|
37
|
+
fontSize: 11,
|
|
38
|
+
},
|
|
39
|
+
{ select: 'intervalY', as: '$brush' },
|
|
40
|
+
],
|
|
41
|
+
xLabel: 'Count',
|
|
42
|
+
yLabel: field,
|
|
43
|
+
height: 400,
|
|
44
|
+
width: 380,
|
|
45
|
+
margins: { left: 50, right: 50, top: 20, bottom: 50 },
|
|
46
|
+
params: { brush: { select: 'crossfilter' } },
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../../../src/chart-types/count-plot/spec.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,mBAAmB,EAAC,MAAM,WAAW,CAAC;AAE9C,MAAM,QAAQ,GAAG,4BAA4B,CAAC;AAC9C,MAAM,QAAQ,GAAG,sBAAsB,CAAC;AAExC,MAAM,UAAU,mBAAmB,CACjC,SAAiB,EACjB,EAAC,KAAK,EAAyB;IAE/B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,mBAAmB,CAAC,kCAAkC,CAAC,CAAC;IACpE,CAAC;IAED,4DAA4D;IAC5D,yCAAyC;IACzC,OAAO;QACL,IAAI,EAAE;YACJ;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,EAAC,IAAI,EAAE,SAAS,EAAC;gBACvB,CAAC,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC;gBAChB,CAAC,EAAE,EAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAC,EAAC;gBAC/D,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,GAAG;aACX;YACD;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,EAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAC;gBAC3C,CAAC,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC;gBAChB,CAAC,EAAE,EAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAC,EAAC;gBAC/D,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,GAAG;aACX;YACD;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,EAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAC;gBAC3C,CAAC,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC;gBAChB,CAAC,EAAE,EAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAC,EAAC;gBAC/D,IAAI,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC;gBACnB,EAAE,EAAE,CAAC;gBACL,UAAU,EAAE,OAAO;gBACnB,IAAI,EAAE,cAAc;gBACpB,QAAQ,EAAE,EAAE;aACb;YACD,EAAC,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAC;SACpC;QACD,MAAM,EAAE,OAAO;QACf,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,GAAG;QACX,KAAK,EAAE,GAAG;QACV,OAAO,EAAE,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAC;QACnD,MAAM,EAAE,EAAC,KAAK,EAAE,EAAC,MAAM,EAAE,aAAa,EAAC,EAAC;KACjC,CAAC;AACZ,CAAC","sourcesContent":["import type {Spec} from '@uwdata/mosaic-spec';\nimport {CountPlotChartSettings} from './schema';\nimport {SpecGenerationError} from '../errors';\n\nconst BG_COLOR = 'var(--color-chart-overlay)';\nconst FG_COLOR = 'var(--color-chart-1)';\n\nexport function createCountPlotSpec(\n tableName: string,\n {field}: CountPlotChartSettings,\n): Spec {\n if (!field) {\n throw new SpecGenerationError('Field is required for count plot');\n }\n\n // Count plot shows categorical frequency as horizontal bars\n // Categories on Y-axis, counts on X-axis\n return {\n plot: [\n {\n mark: 'barX',\n data: {from: tableName},\n x: {count: null},\n y: {column: field, sort: {x: 'sum', order: 'desc', limit: 100}},\n fill: BG_COLOR,\n inset: 0.5,\n },\n {\n mark: 'barX',\n data: {from: tableName, filterBy: '$brush'},\n x: {count: null},\n y: {column: field, sort: {x: 'sum', order: 'desc', limit: 100}},\n fill: FG_COLOR,\n inset: 0.5,\n },\n {\n mark: 'text',\n data: {from: tableName, filterBy: '$brush'},\n x: {count: null},\n y: {column: field, sort: {x: 'sum', order: 'desc', limit: 100}},\n text: {count: null},\n dx: 5,\n textAnchor: 'start',\n fill: 'currentColor',\n fontSize: 11,\n },\n {select: 'intervalY', as: '$brush'},\n ],\n xLabel: 'Count',\n yLabel: field,\n height: 400,\n width: 380,\n margins: {left: 50, right: 50, top: 20, bottom: 50},\n params: {brush: {select: 'crossfilter'}},\n } as Spec;\n}\n"]}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { type ChartToolDeps } from '../base-types';
|
|
3
|
+
export declare const CountPlotToolParameters: z.ZodObject<{
|
|
4
|
+
artifactId: z.ZodOptional<z.ZodString>;
|
|
5
|
+
tableName: z.ZodOptional<z.ZodString>;
|
|
6
|
+
createArtifactIfMissing: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
7
|
+
reasoning: z.ZodString;
|
|
8
|
+
settings: z.ZodObject<{
|
|
9
|
+
field: z.ZodNonOptional<z.ZodOptional<z.ZodString>>;
|
|
10
|
+
}, z.core.$strip>;
|
|
11
|
+
}, z.core.$strip>;
|
|
12
|
+
export type CountPlotToolParams = z.infer<typeof CountPlotToolParameters>;
|
|
13
|
+
export declare function createCountPlotAiTool(deps: ChartToolDeps): import("ai").Tool<{
|
|
14
|
+
createArtifactIfMissing: boolean;
|
|
15
|
+
reasoning: string;
|
|
16
|
+
settings: {
|
|
17
|
+
field: string;
|
|
18
|
+
};
|
|
19
|
+
artifactId?: string | undefined;
|
|
20
|
+
tableName?: string | undefined;
|
|
21
|
+
}, {
|
|
22
|
+
llmResult: {
|
|
23
|
+
success: boolean;
|
|
24
|
+
details: string;
|
|
25
|
+
data: {
|
|
26
|
+
panelId: string;
|
|
27
|
+
artifactId: string;
|
|
28
|
+
tableName: string;
|
|
29
|
+
title: string;
|
|
30
|
+
config: any;
|
|
31
|
+
};
|
|
32
|
+
errorMessage?: undefined;
|
|
33
|
+
};
|
|
34
|
+
} | {
|
|
35
|
+
llmResult: {
|
|
36
|
+
success: boolean;
|
|
37
|
+
errorMessage: string;
|
|
38
|
+
details?: undefined;
|
|
39
|
+
data?: undefined;
|
|
40
|
+
};
|
|
41
|
+
}>;
|
|
42
|
+
//# sourceMappingURL=tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../../src/chart-types/count-plot/tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAGtB,OAAO,EAAC,KAAK,aAAa,EAAC,MAAM,eAAe,CAAC;AAIjD,eAAO,MAAM,uBAAuB;;;;;;;;iBAElC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAE1E,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDxD"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { tool } from 'ai';
|
|
2
|
+
import { CountPlotChartSettings } from './schema';
|
|
3
|
+
import { BaseChartToolParameters } from '../tool-schemas';
|
|
4
|
+
import { validateColumnExists } from '../tool-validation';
|
|
5
|
+
import { CATEGORICAL_COLUMN_TYPES } from '../../chart-builders/constants';
|
|
6
|
+
export const CountPlotToolParameters = BaseChartToolParameters.extend({
|
|
7
|
+
settings: CountPlotChartSettings.required(),
|
|
8
|
+
});
|
|
9
|
+
export function createCountPlotAiTool(deps) {
|
|
10
|
+
return tool({
|
|
11
|
+
description: `Count plot: horizontal bar chart showing frequency of categorical/text values. Counts how many times each unique value appears.
|
|
12
|
+
|
|
13
|
+
Use when: user asks to "count", "frequency of", "how many", "breakdown by category", "distribution of [text/category column]".
|
|
14
|
+
Example queries: "count by land use type", "how many features per administrative region", "frequency of terrain types", "breakdown by zone classification", "count parcels by ownership type".
|
|
15
|
+
|
|
16
|
+
Required: field must be categorical/text (${CATEGORICAL_COLUMN_TYPES.join(', ')}).
|
|
17
|
+
|
|
18
|
+
CRITICAL: Only for categorical data (text, categories, enums).
|
|
19
|
+
Do NOT use for: numeric distributions (use histogram), relationships between columns (use bubble-chart), time series (use line-chart).`,
|
|
20
|
+
inputSchema: CountPlotToolParameters,
|
|
21
|
+
execute: async (params, context) => {
|
|
22
|
+
try {
|
|
23
|
+
const { artifactId, tableName, columns } = deps.resolveResources(params, context);
|
|
24
|
+
// Validate settings - expect categorical columns
|
|
25
|
+
validateColumnExists(params.settings.field, CATEGORICAL_COLUMN_TYPES, columns, 'field');
|
|
26
|
+
const title = `Count plot of ${params.settings.field}`;
|
|
27
|
+
const result = deps.createChart({
|
|
28
|
+
artifactId,
|
|
29
|
+
tableName,
|
|
30
|
+
config: {
|
|
31
|
+
chartType: 'count-plot',
|
|
32
|
+
settings: params.settings,
|
|
33
|
+
},
|
|
34
|
+
title,
|
|
35
|
+
});
|
|
36
|
+
return {
|
|
37
|
+
llmResult: {
|
|
38
|
+
success: true,
|
|
39
|
+
details: `Created count plot "${result.title}".`,
|
|
40
|
+
data: result,
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
return {
|
|
46
|
+
llmResult: {
|
|
47
|
+
success: false,
|
|
48
|
+
errorMessage: error instanceof Error ? error.message : String(error),
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/chart-types/count-plot/tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,IAAI,CAAC;AAExB,OAAO,EAAC,sBAAsB,EAAC,MAAM,UAAU,CAAC;AAChD,OAAO,EAAC,uBAAuB,EAAC,MAAM,iBAAiB,CAAC;AAExD,OAAO,EAAC,oBAAoB,EAAC,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAC,wBAAwB,EAAC,MAAM,gCAAgC,CAAC;AAExE,MAAM,CAAC,MAAM,uBAAuB,GAAG,uBAAuB,CAAC,MAAM,CAAC;IACpE,QAAQ,EAAE,sBAAsB,CAAC,QAAQ,EAAE;CAC5C,CAAC,CAAC;AAIH,MAAM,UAAU,qBAAqB,CAAC,IAAmB;IACvD,OAAO,IAAI,CAAC;QACV,WAAW,EAAE;;;;;4CAK2B,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;;;uIAGwD;QACnI,WAAW,EAAE,uBAAuB;QACpC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;YACjC,IAAI,CAAC;gBACH,MAAM,EAAC,UAAU,EAAE,SAAS,EAAE,OAAO,EAAC,GAAG,IAAI,CAAC,gBAAgB,CAC5D,MAAM,EACN,OAAO,CACR,CAAC;gBAEF,iDAAiD;gBACjD,oBAAoB,CAClB,MAAM,CAAC,QAAQ,CAAC,KAAK,EACrB,wBAAwB,EACxB,OAAO,EACP,OAAO,CACR,CAAC;gBAEF,MAAM,KAAK,GAAG,iBAAiB,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAEvD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;oBAC9B,UAAU;oBACV,SAAS;oBACT,MAAM,EAAE;wBACN,SAAS,EAAE,YAAY;wBACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;qBAC1B;oBACD,KAAK;iBACN,CAAC,CAAC;gBAEH,OAAO;oBACL,SAAS,EAAE;wBACT,OAAO,EAAE,IAAI;wBACb,OAAO,EAAE,uBAAuB,MAAM,CAAC,KAAK,IAAI;wBAChD,IAAI,EAAE,MAAM;qBACb;iBACF,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO;oBACL,SAAS,EAAE;wBACT,OAAO,EAAE,KAAK;wBACd,YAAY,EACV,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;qBACzD;iBACF,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC","sourcesContent":["import {tool} from 'ai';\nimport {z} from 'zod';\nimport {CountPlotChartSettings} from './schema';\nimport {BaseChartToolParameters} from '../tool-schemas';\nimport {type ChartToolDeps} from '../base-types';\nimport {validateColumnExists} from '../tool-validation';\nimport {CATEGORICAL_COLUMN_TYPES} from '../../chart-builders/constants';\n\nexport const CountPlotToolParameters = BaseChartToolParameters.extend({\n settings: CountPlotChartSettings.required(),\n});\n\nexport type CountPlotToolParams = z.infer<typeof CountPlotToolParameters>;\n\nexport function createCountPlotAiTool(deps: ChartToolDeps) {\n return tool({\n description: `Count plot: horizontal bar chart showing frequency of categorical/text values. Counts how many times each unique value appears.\n\nUse when: user asks to \"count\", \"frequency of\", \"how many\", \"breakdown by category\", \"distribution of [text/category column]\".\nExample queries: \"count by land use type\", \"how many features per administrative region\", \"frequency of terrain types\", \"breakdown by zone classification\", \"count parcels by ownership type\".\n\nRequired: field must be categorical/text (${CATEGORICAL_COLUMN_TYPES.join(', ')}).\n\nCRITICAL: Only for categorical data (text, categories, enums).\nDo NOT use for: numeric distributions (use histogram), relationships between columns (use bubble-chart), time series (use line-chart).`,\n inputSchema: CountPlotToolParameters,\n execute: async (params, context) => {\n try {\n const {artifactId, tableName, columns} = deps.resolveResources(\n params,\n context,\n );\n\n // Validate settings - expect categorical columns\n validateColumnExists(\n params.settings.field,\n CATEGORICAL_COLUMN_TYPES,\n columns,\n 'field',\n );\n\n const title = `Count plot of ${params.settings.field}`;\n\n const result = deps.createChart({\n artifactId,\n tableName,\n config: {\n chartType: 'count-plot',\n settings: params.settings,\n },\n title,\n });\n\n return {\n llmResult: {\n success: true,\n details: `Created count plot \"${result.title}\".`,\n data: result,\n },\n };\n } catch (error) {\n return {\n llmResult: {\n success: false,\n errorMessage:\n error instanceof Error ? error.message : String(error),\n },\n };\n }\n },\n });\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomSpecSettings.d.ts","sourceRoot":"","sources":["../../../src/chart-types/custom-spec/CustomSpecSettings.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,EAAuB,MAAM,OAAO,CAAC;AAKpD;;;GAGG;AACH,eAAO,MAAM,2BAA2B,EAAE,EA6CzC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useMemo } from 'react';
|
|
3
|
+
import { useChartSettingsContext } from '../../chart/chart-settings/ChartSettingsContext';
|
|
4
|
+
import { MosaicCodeMirrorEditor } from '../../editor/MosaicCodeMirrorEditor';
|
|
5
|
+
import { Field } from '../../chart-builders/Field';
|
|
6
|
+
/**
|
|
7
|
+
* Settings component for custom spec chart type.
|
|
8
|
+
* Shows a full editor for the vgplot spec.
|
|
9
|
+
*/
|
|
10
|
+
export const CustomSpecSettingsComponent = () => {
|
|
11
|
+
const { config, onChangeConfig } = useChartSettingsContext('custom-spec');
|
|
12
|
+
const vgplotValue = config.settings.vgPlotSpec;
|
|
13
|
+
const serializedValue = useMemo(() => vgplotValue
|
|
14
|
+
? JSON.stringify(vgplotValue, null, 2)
|
|
15
|
+
: JSON.stringify({ plot: [] }, null, 2), [vgplotValue]);
|
|
16
|
+
const handleChange = useCallback((nextValue) => {
|
|
17
|
+
if (!nextValue) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
try {
|
|
21
|
+
const parsed = JSON.parse(nextValue);
|
|
22
|
+
onChangeConfig('vgPlotSpec', parsed);
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
// Invalid JSON - ignore
|
|
26
|
+
}
|
|
27
|
+
}, [onChangeConfig]);
|
|
28
|
+
return (_jsx("div", { className: "flex h-full flex-col", children: _jsx("div", { className: "flex-1 overflow-hidden", children: _jsx(Field, { label: "Spec", required: true, children: _jsx("div", { className: "border-input overflow-hidden rounded-md border", children: _jsx(MosaicCodeMirrorEditor, { value: serializedValue, onChange: handleChange, className: "h-full", enableSchemaValidation: true }) }) }) }) }));
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=CustomSpecSettings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomSpecSettings.js","sourceRoot":"","sources":["../../../src/chart-types/custom-spec/CustomSpecSettings.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAU,WAAW,EAAE,OAAO,EAAC,MAAM,OAAO,CAAC;AACpD,OAAO,EAAC,uBAAuB,EAAC,MAAM,iDAAiD,CAAC;AACxF,OAAO,EAAC,sBAAsB,EAAC,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAC,KAAK,EAAC,MAAM,4BAA4B,CAAC;AAEjD;;;GAGG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAO,GAAG,EAAE;IAClD,MAAM,EAAC,MAAM,EAAE,cAAc,EAAC,GAAG,uBAAuB,CAAC,aAAa,CAAC,CAAC;IAExE,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;IAE/C,MAAM,eAAe,GAAG,OAAO,CAC7B,GAAG,EAAE,CACH,WAAW;QACT,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAC,IAAI,EAAE,EAAE,EAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EACzC,CAAC,WAAW,CAAC,CACd,CAAC;IAEF,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,SAA6B,EAAE,EAAE;QAChC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACrC,cAAc,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;IACH,CAAC,EACD,CAAC,cAAc,CAAC,CACjB,CAAC;IAEF,OAAO,CACL,cAAK,SAAS,EAAC,sBAAsB,YACnC,cAAK,SAAS,EAAC,wBAAwB,YACrC,KAAC,KAAK,IAAC,KAAK,EAAC,MAAM,EAAC,QAAQ,kBAC1B,cAAK,SAAS,EAAC,gDAAgD,YAC7D,KAAC,sBAAsB,IACrB,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAC,QAAQ,EAClB,sBAAsB,SACtB,GACE,GACA,GACJ,GACF,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {type FC, useCallback, useMemo} from 'react';\nimport {useChartSettingsContext} from '../../chart/chart-settings/ChartSettingsContext';\nimport {MosaicCodeMirrorEditor} from '../../editor/MosaicCodeMirrorEditor';\nimport {Field} from '../../chart-builders/Field';\n\n/**\n * Settings component for custom spec chart type.\n * Shows a full editor for the vgplot spec.\n */\nexport const CustomSpecSettingsComponent: FC = () => {\n const {config, onChangeConfig} = useChartSettingsContext('custom-spec');\n\n const vgplotValue = config.settings.vgPlotSpec;\n\n const serializedValue = useMemo(\n () =>\n vgplotValue\n ? JSON.stringify(vgplotValue, null, 2)\n : JSON.stringify({plot: []}, null, 2),\n [vgplotValue],\n );\n\n const handleChange = useCallback(\n (nextValue: string | undefined) => {\n if (!nextValue) {\n return;\n }\n\n try {\n const parsed = JSON.parse(nextValue);\n onChangeConfig('vgPlotSpec', parsed);\n } catch {\n // Invalid JSON - ignore\n }\n },\n [onChangeConfig],\n );\n\n return (\n <div className=\"flex h-full flex-col\">\n <div className=\"flex-1 overflow-hidden\">\n <Field label=\"Spec\" required>\n <div className=\"border-input overflow-hidden rounded-md border\">\n <MosaicCodeMirrorEditor\n value={serializedValue}\n onChange={handleChange}\n className=\"h-full\"\n enableSchemaValidation\n />\n </div>\n </Field>\n </div>\n </div>\n );\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../../src/chart-types/custom-spec/definition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAC,qBAAqB,EAA0B,MAAM,UAAU,CAAC;AAQxE,eAAO,MAAM,mBAAmB,EAAE,uBAAuB,CAAC,qBAAqB,CAU5E,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { CustomSpecChartSettings } from './schema';
|
|
2
|
+
import { titleFromDescription } from '../../chart-builders/chartTypeUtils';
|
|
3
|
+
import { CustomSpecSettingsComponent } from './CustomSpecSettings';
|
|
4
|
+
import { Code } from 'lucide-react';
|
|
5
|
+
import { createCustomSpec } from './spec';
|
|
6
|
+
const DESCRIPTION = 'Create a chart with custom spec';
|
|
7
|
+
export const customSpecChartType = {
|
|
8
|
+
id: 'custom-spec',
|
|
9
|
+
label: 'Custom Spec',
|
|
10
|
+
description: DESCRIPTION,
|
|
11
|
+
icon: Code,
|
|
12
|
+
schema: CustomSpecChartSettings,
|
|
13
|
+
settingsComponent: CustomSpecSettingsComponent,
|
|
14
|
+
buildTitle: titleFromDescription(DESCRIPTION),
|
|
15
|
+
createSpec: createCustomSpec,
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=definition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition.js","sourceRoot":"","sources":["../../../src/chart-types/custom-spec/definition.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,uBAAuB,EAAC,MAAM,UAAU,CAAC;AACxE,OAAO,EAAC,oBAAoB,EAAC,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAC,2BAA2B,EAAC,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAC,IAAI,EAAC,MAAM,cAAc,CAAC;AAClC,OAAO,EAAC,gBAAgB,EAAC,MAAM,QAAQ,CAAC;AAExC,MAAM,WAAW,GAAG,iCAAiC,CAAC;AAEtD,MAAM,CAAC,MAAM,mBAAmB,GAC9B;IACE,EAAE,EAAE,aAAa;IACjB,KAAK,EAAE,aAAa;IACpB,WAAW,EAAE,WAAW;IACxB,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,uBAAuB;IAC/B,iBAAiB,EAAE,2BAA2B;IAC9C,UAAU,EAAE,oBAAoB,CAAC,WAAW,CAAC;IAC7C,UAAU,EAAE,gBAAgB;CAC7B,CAAC","sourcesContent":["import type {SpecChartTypeDefinition} from '../base-types';\nimport {CustomSpecChartConfig, CustomSpecChartSettings} from './schema';\nimport {titleFromDescription} from '../../chart-builders/chartTypeUtils';\nimport {CustomSpecSettingsComponent} from './CustomSpecSettings';\nimport {Code} from 'lucide-react';\nimport {createCustomSpec} from './spec';\n\nconst DESCRIPTION = 'Create a chart with custom spec';\n\nexport const customSpecChartType: SpecChartTypeDefinition<CustomSpecChartConfig> =\n {\n id: 'custom-spec',\n label: 'Custom Spec',\n description: DESCRIPTION,\n icon: Code,\n schema: CustomSpecChartSettings,\n settingsComponent: CustomSpecSettingsComponent,\n buildTitle: titleFromDescription(DESCRIPTION),\n createSpec: createCustomSpec,\n };\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const CustomSpecChartSettings: z.ZodObject<{
|
|
3
|
+
vgPlotSpec: z.ZodOptional<z.ZodUnknown>;
|
|
4
|
+
}, z.core.$strip>;
|
|
5
|
+
export type CustomSpecChartSettings = z.infer<typeof CustomSpecChartSettings>;
|
|
6
|
+
export declare const CustomSpecChartConfig: z.ZodObject<{
|
|
7
|
+
chartType: z.ZodLiteral<"custom-spec">;
|
|
8
|
+
settingsOpen: z.ZodOptional<z.ZodBoolean>;
|
|
9
|
+
settings: z.ZodObject<{
|
|
10
|
+
vgPlotSpec: z.ZodOptional<z.ZodUnknown>;
|
|
11
|
+
}, z.core.$strip>;
|
|
12
|
+
}, z.core.$strip>;
|
|
13
|
+
export type CustomSpecChartConfig = z.infer<typeof CustomSpecChartConfig>;
|
|
14
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/chart-types/custom-spec/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,eAAO,MAAM,uBAAuB;;iBAElC,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAE9E,eAAO,MAAM,qBAAqB;;;;;;iBAIhC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
|