@sqlrooms/mosaic 0.29.0-rc.7 → 0.29.0-rc.9
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/LICENSE.md +2 -1
- package/README.md +179 -35
- package/dist/MosaicSlice.d.ts +1 -0
- package/dist/MosaicSlice.d.ts.map +1 -1
- package/dist/MosaicSlice.js.map +1 -1
- package/dist/VgPlotChart.d.ts.map +1 -1
- package/dist/VgPlotChart.js +9 -3
- package/dist/VgPlotChart.js.map +1 -1
- package/dist/ai/agentIntent.d.ts +5 -0
- package/dist/ai/agentIntent.d.ts.map +1 -0
- package/dist/ai/agentIntent.js +8 -0
- package/dist/ai/agentIntent.js.map +1 -0
- package/dist/ai/block-document/constants.d.ts +9 -0
- package/dist/ai/block-document/constants.d.ts.map +1 -0
- package/dist/ai/block-document/constants.js +9 -0
- package/dist/ai/block-document/constants.js.map +1 -0
- package/dist/ai/block-document/createAddMosaicDashboardBlockTool.d.ts +48 -0
- package/dist/ai/block-document/createAddMosaicDashboardBlockTool.d.ts.map +1 -0
- package/dist/ai/block-document/createAddMosaicDashboardBlockTool.js +59 -0
- package/dist/ai/block-document/createAddMosaicDashboardBlockTool.js.map +1 -0
- package/dist/ai/block-document/createBlockDocumentChartTools.d.ts +19 -0
- package/dist/ai/block-document/createBlockDocumentChartTools.d.ts.map +1 -0
- package/dist/ai/block-document/createBlockDocumentChartTools.js +37 -0
- package/dist/ai/block-document/createBlockDocumentChartTools.js.map +1 -0
- package/dist/ai/block-document/createBlockDocumentDataTableExplorerTool.d.ts +32 -0
- package/dist/ai/block-document/createBlockDocumentDataTableExplorerTool.d.ts.map +1 -0
- package/dist/ai/block-document/createBlockDocumentDataTableExplorerTool.js +37 -0
- package/dist/ai/block-document/createBlockDocumentDataTableExplorerTool.js.map +1 -0
- package/dist/ai/constants.d.ts +3 -0
- package/dist/ai/constants.d.ts.map +1 -0
- package/dist/ai/constants.js +3 -0
- package/dist/ai/constants.js.map +1 -0
- package/dist/ai/createDataTableExplorerTool.d.ts +69 -0
- package/dist/ai/createDataTableExplorerTool.d.ts.map +1 -0
- package/dist/ai/createDataTableExplorerTool.js +68 -0
- package/dist/ai/createDataTableExplorerTool.js.map +1 -0
- package/dist/ai/dashboard/constants.d.ts +6 -0
- package/dist/ai/dashboard/constants.d.ts.map +1 -0
- package/dist/ai/dashboard/constants.js +6 -0
- package/dist/ai/dashboard/constants.js.map +1 -0
- package/dist/ai/dashboard/createDashboardAgentTool.d.ts +17 -0
- package/dist/ai/dashboard/createDashboardAgentTool.d.ts.map +1 -0
- package/dist/ai/dashboard/createDashboardAgentTool.js +205 -0
- package/dist/ai/dashboard/createDashboardAgentTool.js.map +1 -0
- package/dist/ai/dashboard/createDashboardAiAdapter.d.ts +14 -0
- package/dist/ai/dashboard/createDashboardAiAdapter.d.ts.map +1 -0
- package/dist/ai/dashboard/createDashboardAiAdapter.js +75 -0
- package/dist/ai/dashboard/createDashboardAiAdapter.js.map +1 -0
- package/dist/ai/dashboard/createDashboardAiTools.d.ts +26 -0
- package/dist/ai/dashboard/createDashboardAiTools.d.ts.map +1 -0
- package/dist/ai/dashboard/createDashboardAiTools.js +40 -0
- package/dist/ai/dashboard/createDashboardAiTools.js.map +1 -0
- package/dist/ai/dashboard/createDashboardChartTools.d.ts +27 -0
- package/dist/ai/dashboard/createDashboardChartTools.d.ts.map +1 -0
- package/dist/ai/dashboard/createDashboardChartTools.js +55 -0
- package/dist/ai/dashboard/createDashboardChartTools.js.map +1 -0
- package/dist/ai/dashboard/createDashboardDataTableExplorerTool.d.ts +23 -0
- package/dist/ai/dashboard/createDashboardDataTableExplorerTool.d.ts.map +1 -0
- package/dist/ai/dashboard/createDashboardDataTableExplorerTool.js +29 -0
- package/dist/ai/dashboard/createDashboardDataTableExplorerTool.js.map +1 -0
- package/dist/ai/dashboard/createListDashboardPanelsTool.d.ts +28 -0
- package/dist/ai/dashboard/createListDashboardPanelsTool.d.ts.map +1 -0
- package/dist/ai/dashboard/createListDashboardPanelsTool.js +54 -0
- package/dist/ai/dashboard/createListDashboardPanelsTool.js.map +1 -0
- package/dist/ai/dashboard/dashboard-types.d.ts +59 -0
- package/dist/ai/dashboard/dashboard-types.d.ts.map +1 -0
- package/dist/ai/dashboard/dashboard-types.js +2 -0
- package/dist/ai/dashboard/dashboard-types.js.map +1 -0
- package/dist/ai/database-types.d.ts +12 -0
- package/dist/ai/database-types.d.ts.map +1 -0
- package/dist/ai/database-types.js +2 -0
- package/dist/ai/database-types.js.map +1 -0
- package/dist/ai/errors.d.ts +8 -0
- package/dist/ai/errors.d.ts.map +1 -0
- package/dist/ai/errors.js +11 -0
- package/dist/ai/errors.js.map +1 -0
- package/dist/ai/tool-helpers.d.ts +28 -29
- package/dist/ai/tool-helpers.d.ts.map +1 -1
- package/dist/ai/tool-helpers.js +38 -76
- package/dist/ai/tool-helpers.js.map +1 -1
- package/dist/ai/tool-schemas.d.ts +9 -4
- package/dist/ai/tool-schemas.d.ts.map +1 -1
- package/dist/ai/tool-schemas.js +12 -12
- package/dist/ai/tool-schemas.js.map +1 -1
- package/dist/ai/tool-types.d.ts +19 -1
- package/dist/ai/tool-types.d.ts.map +1 -1
- package/dist/ai/tool-types.js.map +1 -1
- package/dist/ai/types.d.ts +64 -0
- package/dist/ai/types.d.ts.map +1 -0
- package/dist/ai/types.js +2 -0
- package/dist/ai/types.js.map +1 -0
- package/dist/ai.d.ts +16 -2
- package/dist/ai.d.ts.map +1 -1
- package/dist/ai.js +14 -5
- package/dist/ai.js.map +1 -1
- package/dist/charts/MosaicChart.d.ts +3 -1
- package/dist/charts/MosaicChart.d.ts.map +1 -1
- package/dist/charts/MosaicChart.js +2 -2
- package/dist/charts/MosaicChart.js.map +1 -1
- package/dist/charts/MosaicChartError.d.ts +8 -2
- package/dist/charts/MosaicChartError.d.ts.map +1 -1
- package/dist/charts/MosaicChartError.js +29 -3
- package/dist/charts/MosaicChartError.js.map +1 -1
- package/dist/charts/MosaicChartSettingsButton.d.ts +15 -0
- package/dist/charts/MosaicChartSettingsButton.d.ts.map +1 -0
- package/dist/charts/MosaicChartSettingsButton.js +7 -0
- package/dist/charts/MosaicChartSettingsButton.js.map +1 -0
- package/dist/charts/MosaicChartView.d.ts +2 -0
- package/dist/charts/MosaicChartView.d.ts.map +1 -1
- package/dist/charts/MosaicChartView.js +19 -7
- package/dist/charts/MosaicChartView.js.map +1 -1
- package/dist/charts/chart-settings/MosaicChartSettings.d.ts.map +1 -1
- package/dist/charts/chart-settings/MosaicChartSettings.js +3 -3
- package/dist/charts/chart-settings/MosaicChartSettings.js.map +1 -1
- package/dist/charts/chart-settings/MosaicChartSettingsPanel.js +1 -1
- package/dist/charts/chart-settings/MosaicChartSettingsPanel.js.map +1 -1
- package/dist/charts/chart-settings/MosaicChartSpecViewerPanel.d.ts.map +1 -1
- package/dist/charts/chart-settings/MosaicChartSpecViewerPanel.js +2 -1
- package/dist/charts/chart-settings/MosaicChartSpecViewerPanel.js.map +1 -1
- package/dist/charts/chart-settings/MosaicChartTypeSelector.d.ts.map +1 -1
- package/dist/charts/chart-settings/MosaicChartTypeSelector.js +3 -3
- package/dist/charts/chart-settings/MosaicChartTypeSelector.js.map +1 -1
- package/dist/charts/chart-types/base-types.d.ts +40 -25
- package/dist/charts/chart-types/base-types.d.ts.map +1 -1
- package/dist/charts/chart-types/base-types.js +5 -0
- package/dist/charts/chart-types/base-types.js.map +1 -1
- package/dist/charts/chart-types/box-plot/definition.d.ts.map +1 -1
- package/dist/charts/chart-types/box-plot/definition.js +1 -0
- package/dist/charts/chart-types/box-plot/definition.js.map +1 -1
- package/dist/charts/chart-types/box-plot/renderer/BoxPlotClient.d.ts +37 -3
- package/dist/charts/chart-types/box-plot/renderer/BoxPlotClient.d.ts.map +1 -1
- package/dist/charts/chart-types/box-plot/renderer/BoxPlotClient.js +28 -13
- package/dist/charts/chart-types/box-plot/renderer/BoxPlotClient.js.map +1 -1
- package/dist/charts/chart-types/box-plot/renderer/BoxPlotPanelRenderer.js +2 -2
- package/dist/charts/chart-types/box-plot/renderer/BoxPlotPanelRenderer.js.map +1 -1
- package/dist/charts/chart-types/box-plot/renderer/useBoxPlotClient.d.ts +12 -1
- package/dist/charts/chart-types/box-plot/renderer/useBoxPlotClient.d.ts.map +1 -1
- package/dist/charts/chart-types/box-plot/renderer/useBoxPlotClient.js +13 -3
- package/dist/charts/chart-types/box-plot/renderer/useBoxPlotClient.js.map +1 -1
- package/dist/charts/chart-types/box-plot/tool.d.ts +20 -24
- package/dist/charts/chart-types/box-plot/tool.d.ts.map +1 -1
- package/dist/charts/chart-types/box-plot/tool.js +25 -33
- package/dist/charts/chart-types/box-plot/tool.js.map +1 -1
- package/dist/charts/chart-types/box-plot/validation.d.ts +9 -0
- package/dist/charts/chart-types/box-plot/validation.d.ts.map +1 -0
- package/dist/charts/chart-types/box-plot/validation.js +32 -0
- package/dist/charts/chart-types/box-plot/validation.js.map +1 -0
- package/dist/charts/chart-types/chart-config.d.ts +3 -1
- package/dist/charts/chart-types/chart-config.d.ts.map +1 -1
- package/dist/charts/chart-types/chart-config.js +2 -2
- package/dist/charts/chart-types/chart-config.js.map +1 -1
- package/dist/charts/chart-types/column-types.d.ts +8 -0
- package/dist/charts/chart-types/column-types.d.ts.map +1 -0
- package/dist/charts/chart-types/column-types.js +2 -0
- package/dist/charts/chart-types/column-types.js.map +1 -0
- package/dist/charts/chart-types/count-plot/definition.d.ts.map +1 -1
- package/dist/charts/chart-types/count-plot/definition.js +1 -0
- package/dist/charts/chart-types/count-plot/definition.js.map +1 -1
- package/dist/charts/chart-types/count-plot/spec.d.ts +2 -1
- package/dist/charts/chart-types/count-plot/spec.d.ts.map +1 -1
- package/dist/charts/chart-types/count-plot/spec.js +47 -34
- package/dist/charts/chart-types/count-plot/spec.js.map +1 -1
- package/dist/charts/chart-types/count-plot/tool.d.ts +19 -24
- package/dist/charts/chart-types/count-plot/tool.d.ts.map +1 -1
- package/dist/charts/chart-types/count-plot/tool.js +26 -33
- package/dist/charts/chart-types/count-plot/tool.js.map +1 -1
- package/dist/charts/chart-types/count-plot/validation.d.ts +8 -0
- package/dist/charts/chart-types/count-plot/validation.d.ts.map +1 -0
- package/dist/charts/chart-types/count-plot/validation.js +20 -0
- package/dist/charts/chart-types/count-plot/validation.js.map +1 -0
- package/dist/charts/chart-types/createChartInstructions.d.ts +3 -0
- package/dist/charts/chart-types/createChartInstructions.d.ts.map +1 -0
- package/dist/charts/chart-types/createChartInstructions.js +12 -0
- package/dist/charts/chart-types/createChartInstructions.js.map +1 -0
- package/dist/charts/chart-types/createChartTools.d.ts +15 -9
- package/dist/charts/chart-types/createChartTools.d.ts.map +1 -1
- package/dist/charts/chart-types/createChartTools.js +16 -10
- package/dist/charts/chart-types/createChartTools.js.map +1 -1
- package/dist/charts/chart-types/createDefaultChartTypes.js +2 -2
- package/dist/charts/chart-types/createDefaultChartTypes.js.map +1 -1
- package/dist/charts/chart-types/custom-spec/definition.d.ts.map +1 -1
- package/dist/charts/chart-types/custom-spec/definition.js +1 -0
- package/dist/charts/chart-types/custom-spec/definition.js.map +1 -1
- package/dist/charts/chart-types/custom-spec/spec.d.ts +2 -1
- package/dist/charts/chart-types/custom-spec/spec.d.ts.map +1 -1
- package/dist/charts/chart-types/custom-spec/spec.js +16 -12
- package/dist/charts/chart-types/custom-spec/spec.js.map +1 -1
- package/dist/charts/chart-types/errors.d.ts +35 -0
- package/dist/charts/chart-types/errors.d.ts.map +1 -1
- package/dist/charts/chart-types/errors.js +56 -0
- package/dist/charts/chart-types/errors.js.map +1 -1
- package/dist/charts/chart-types/heatmap/definition.d.ts.map +1 -1
- package/dist/charts/chart-types/heatmap/definition.js +1 -0
- package/dist/charts/chart-types/heatmap/definition.js.map +1 -1
- package/dist/charts/chart-types/heatmap/spec.d.ts +2 -1
- package/dist/charts/chart-types/heatmap/spec.d.ts.map +1 -1
- package/dist/charts/chart-types/heatmap/spec.js +21 -21
- package/dist/charts/chart-types/heatmap/spec.js.map +1 -1
- package/dist/charts/chart-types/heatmap/tool.d.ts +20 -24
- package/dist/charts/chart-types/heatmap/tool.d.ts.map +1 -1
- package/dist/charts/chart-types/heatmap/tool.js +27 -37
- package/dist/charts/chart-types/heatmap/tool.js.map +1 -1
- package/dist/charts/chart-types/heatmap/validation.d.ts +9 -0
- package/dist/charts/chart-types/heatmap/validation.d.ts.map +1 -0
- package/dist/charts/chart-types/heatmap/validation.js +34 -0
- package/dist/charts/chart-types/heatmap/validation.js.map +1 -0
- package/dist/charts/chart-types/histogram/HistogramSettings.d.ts.map +1 -1
- package/dist/charts/chart-types/histogram/HistogramSettings.js +3 -1
- package/dist/charts/chart-types/histogram/HistogramSettings.js.map +1 -1
- package/dist/charts/chart-types/histogram/definition.d.ts.map +1 -1
- package/dist/charts/chart-types/histogram/definition.js +1 -0
- package/dist/charts/chart-types/histogram/definition.js.map +1 -1
- package/dist/charts/chart-types/histogram/schema.d.ts +2 -0
- package/dist/charts/chart-types/histogram/schema.d.ts.map +1 -1
- package/dist/charts/chart-types/histogram/schema.js +1 -0
- package/dist/charts/chart-types/histogram/schema.js.map +1 -1
- package/dist/charts/chart-types/histogram/spec.d.ts +2 -1
- package/dist/charts/chart-types/histogram/spec.d.ts.map +1 -1
- package/dist/charts/chart-types/histogram/spec.js +31 -28
- package/dist/charts/chart-types/histogram/spec.js.map +1 -1
- package/dist/charts/chart-types/histogram/tool.d.ts +39 -24
- package/dist/charts/chart-types/histogram/tool.d.ts.map +1 -1
- package/dist/charts/chart-types/histogram/tool.js +39 -33
- package/dist/charts/chart-types/histogram/tool.js.map +1 -1
- package/dist/charts/chart-types/histogram/validation.d.ts +9 -0
- package/dist/charts/chart-types/histogram/validation.d.ts.map +1 -0
- package/dist/charts/chart-types/histogram/validation.js +22 -0
- package/dist/charts/chart-types/histogram/validation.js.map +1 -0
- package/dist/charts/chart-types/index.d.ts +5 -11
- package/dist/charts/chart-types/index.d.ts.map +1 -1
- package/dist/charts/chart-types/index.js +6 -12
- package/dist/charts/chart-types/index.js.map +1 -1
- package/dist/charts/chart-types/line-chart/LineChartSettings.d.ts.map +1 -1
- package/dist/charts/chart-types/line-chart/LineChartSettings.js +4 -13
- package/dist/charts/chart-types/line-chart/LineChartSettings.js.map +1 -1
- package/dist/charts/chart-types/line-chart/LineChartXFieldSelector.d.ts +7 -0
- package/dist/charts/chart-types/line-chart/LineChartXFieldSelector.d.ts.map +1 -0
- package/dist/charts/chart-types/line-chart/LineChartXFieldSelector.js +22 -0
- package/dist/charts/chart-types/line-chart/LineChartXFieldSelector.js.map +1 -0
- package/dist/charts/chart-types/line-chart/LineChartYFieldsSelector.d.ts +7 -0
- package/dist/charts/chart-types/line-chart/LineChartYFieldsSelector.d.ts.map +1 -0
- package/dist/charts/chart-types/line-chart/LineChartYFieldsSelector.js +42 -0
- package/dist/charts/chart-types/line-chart/LineChartYFieldsSelector.js.map +1 -0
- package/dist/charts/chart-types/line-chart/definition.d.ts.map +1 -1
- package/dist/charts/chart-types/line-chart/definition.js +1 -0
- package/dist/charts/chart-types/line-chart/definition.js.map +1 -1
- package/dist/charts/chart-types/line-chart/schema.d.ts +2 -0
- package/dist/charts/chart-types/line-chart/schema.d.ts.map +1 -1
- package/dist/charts/chart-types/line-chart/schema.js +5 -0
- package/dist/charts/chart-types/line-chart/schema.js.map +1 -1
- package/dist/charts/chart-types/line-chart/spec.d.ts +2 -1
- package/dist/charts/chart-types/line-chart/spec.d.ts.map +1 -1
- package/dist/charts/chart-types/line-chart/spec.js +56 -65
- package/dist/charts/chart-types/line-chart/spec.js.map +1 -1
- package/dist/charts/chart-types/line-chart/tool.d.ts +28 -24
- package/dist/charts/chart-types/line-chart/tool.d.ts.map +1 -1
- package/dist/charts/chart-types/line-chart/tool.js +27 -39
- package/dist/charts/chart-types/line-chart/tool.js.map +1 -1
- package/dist/charts/chart-types/line-chart/utils.d.ts +7 -0
- package/dist/charts/chart-types/line-chart/utils.d.ts.map +1 -0
- package/dist/charts/chart-types/line-chart/utils.js +17 -0
- package/dist/charts/chart-types/line-chart/utils.js.map +1 -0
- package/dist/charts/chart-types/line-chart/validation.d.ts +16 -0
- package/dist/charts/chart-types/line-chart/validation.d.ts.map +1 -0
- package/dist/charts/chart-types/line-chart/validation.js +43 -0
- package/dist/charts/chart-types/line-chart/validation.js.map +1 -0
- package/dist/charts/chart-types/mosaicChartTypes.d.ts +4 -2
- package/dist/charts/chart-types/mosaicChartTypes.d.ts.map +1 -1
- package/dist/charts/chart-types/mosaicChartTypes.js +2 -2
- package/dist/charts/chart-types/mosaicChartTypes.js.map +1 -1
- package/dist/charts/chart-types/resolveChartTypes.d.ts +3 -0
- package/dist/charts/chart-types/resolveChartTypes.d.ts.map +1 -0
- package/dist/charts/chart-types/resolveChartTypes.js +8 -0
- package/dist/charts/chart-types/resolveChartTypes.js.map +1 -0
- package/dist/charts/chart-types/scatter-plot/ScatterPlotSettings.d.ts +3 -0
- package/dist/charts/chart-types/scatter-plot/ScatterPlotSettings.d.ts.map +1 -0
- package/dist/charts/chart-types/{bubble-chart/BubbleChartSettings.js → scatter-plot/ScatterPlotSettings.js} +4 -4
- package/dist/charts/chart-types/scatter-plot/ScatterPlotSettings.js.map +1 -0
- package/dist/charts/chart-types/scatter-plot/definition.d.ts +4 -0
- package/dist/charts/chart-types/scatter-plot/definition.d.ts.map +1 -0
- package/dist/charts/chart-types/scatter-plot/definition.js +25 -0
- package/dist/charts/chart-types/scatter-plot/definition.js.map +1 -0
- package/dist/charts/chart-types/{bubble-chart → scatter-plot}/schema.d.ts +5 -5
- package/dist/charts/chart-types/scatter-plot/schema.d.ts.map +1 -0
- package/dist/charts/chart-types/{bubble-chart → scatter-plot}/schema.js +5 -5
- package/dist/charts/chart-types/scatter-plot/schema.js.map +1 -0
- package/dist/charts/chart-types/scatter-plot/spec.d.ts +5 -0
- package/dist/charts/chart-types/scatter-plot/spec.d.ts.map +1 -0
- package/dist/charts/chart-types/scatter-plot/spec.js +37 -0
- package/dist/charts/chart-types/scatter-plot/spec.js.map +1 -0
- package/dist/charts/chart-types/scatter-plot/tool.d.ts +39 -0
- package/dist/charts/chart-types/scatter-plot/tool.d.ts.map +1 -0
- package/dist/charts/chart-types/scatter-plot/tool.js +57 -0
- package/dist/charts/chart-types/scatter-plot/tool.js.map +1 -0
- package/dist/charts/chart-types/scatter-plot/validation.d.ts +13 -0
- package/dist/charts/chart-types/scatter-plot/validation.d.ts.map +1 -0
- package/dist/charts/chart-types/scatter-plot/validation.js +52 -0
- package/dist/charts/chart-types/scatter-plot/validation.js.map +1 -0
- package/dist/charts/chart-types/tool-types.d.ts +43 -0
- package/dist/charts/chart-types/tool-types.d.ts.map +1 -0
- package/dist/charts/chart-types/tool-types.js +2 -0
- package/dist/charts/chart-types/tool-types.js.map +1 -0
- package/dist/charts/chart-types/utils.d.ts +3 -0
- package/dist/charts/chart-types/utils.d.ts.map +1 -0
- package/dist/charts/chart-types/utils.js +4 -0
- package/dist/charts/chart-types/utils.js.map +1 -0
- package/dist/charts/dashboard/MosaicDashboardChartHeaderActions.d.ts.map +1 -1
- package/dist/charts/dashboard/MosaicDashboardChartHeaderActions.js +12 -5
- package/dist/charts/dashboard/MosaicDashboardChartHeaderActions.js.map +1 -1
- package/dist/charts/dashboard/MosaicDashboardChartRenderer.d.ts.map +1 -1
- package/dist/charts/dashboard/MosaicDashboardChartRenderer.js +6 -4
- package/dist/charts/dashboard/MosaicDashboardChartRenderer.js.map +1 -1
- package/dist/charts/useChartDataPolicy.d.ts.map +1 -1
- package/dist/charts/useChartDataPolicy.js +2 -1
- package/dist/charts/useChartDataPolicy.js.map +1 -1
- package/dist/charts/useChartPanelClients.d.ts +8 -0
- package/dist/charts/useChartPanelClients.d.ts.map +1 -0
- package/dist/charts/useChartPanelClients.js +22 -0
- package/dist/charts/useChartPanelClients.js.map +1 -0
- package/dist/charts/useMosaicChartRenderContext.d.ts +2 -3
- package/dist/charts/useMosaicChartRenderContext.d.ts.map +1 -1
- package/dist/charts/useMosaicChartRenderContext.js +15 -15
- package/dist/charts/useMosaicChartRenderContext.js.map +1 -1
- package/dist/charts/worksheet/ChartBlockHeader.d.ts.map +1 -1
- package/dist/charts/worksheet/ChartBlockHeader.js +4 -3
- package/dist/charts/worksheet/ChartBlockHeader.js.map +1 -1
- package/dist/charts/worksheet/ChartBlockRenderer.d.ts.map +1 -1
- package/dist/charts/worksheet/ChartBlockRenderer.js +3 -13
- package/dist/charts/worksheet/ChartBlockRenderer.js.map +1 -1
- package/dist/column-types-utils.d.ts.map +1 -1
- package/dist/column-types-utils.js +12 -4
- package/dist/column-types-utils.js.map +1 -1
- package/dist/components/AggregationSelector.d.ts.map +1 -1
- package/dist/components/AggregationSelector.js +9 -2
- package/dist/components/AggregationSelector.js.map +1 -1
- package/dist/components/BlockCaptionEditor.d.ts +20 -0
- package/dist/components/BlockCaptionEditor.d.ts.map +1 -0
- package/dist/components/BlockCaptionEditor.js +15 -0
- package/dist/components/BlockCaptionEditor.js.map +1 -0
- package/dist/components/ColorSelector.d.ts +12 -0
- package/dist/components/ColorSelector.d.ts.map +1 -0
- package/dist/components/ColorSelector.js +13 -0
- package/dist/components/ColorSelector.js.map +1 -0
- package/dist/components/ColumnSelector.d.ts +1 -0
- package/dist/components/ColumnSelector.d.ts.map +1 -1
- package/dist/components/ColumnSelector.js +2 -2
- package/dist/components/ColumnSelector.js.map +1 -1
- package/dist/components/FieldSelectorInput.d.ts +1 -0
- package/dist/components/FieldSelectorInput.d.ts.map +1 -1
- package/dist/components/FieldSelectorInput.js +4 -9
- package/dist/components/FieldSelectorInput.js.map +1 -1
- package/dist/components/MultiFieldSelector.d.ts +4 -1
- package/dist/components/MultiFieldSelector.d.ts.map +1 -1
- package/dist/components/MultiFieldSelector.js +4 -13
- package/dist/components/MultiFieldSelector.js.map +1 -1
- package/dist/components/TemporalGranularitySelector.d.ts.map +1 -1
- package/dist/components/TemporalGranularitySelector.js +13 -9
- package/dist/components/TemporalGranularitySelector.js.map +1 -1
- package/dist/constants/chart-colors.d.ts +3 -0
- package/dist/constants/chart-colors.d.ts.map +1 -0
- package/dist/constants/chart-colors.js +5 -0
- package/dist/constants/chart-colors.js.map +1 -0
- package/dist/dashboard/DefaultMosaicDashboardBlock.d.ts +2 -1
- package/dist/dashboard/DefaultMosaicDashboardBlock.d.ts.map +1 -1
- package/dist/dashboard/DefaultMosaicDashboardBlock.js +1 -1
- package/dist/dashboard/DefaultMosaicDashboardBlock.js.map +1 -1
- package/dist/dashboard/MosaicDashboardCommands.d.ts +19 -0
- package/dist/dashboard/MosaicDashboardCommands.d.ts.map +1 -0
- package/dist/dashboard/MosaicDashboardCommands.js +226 -0
- package/dist/dashboard/MosaicDashboardCommands.js.map +1 -0
- package/dist/dashboard/MosaicDashboardSlice.d.ts +22 -4
- package/dist/dashboard/MosaicDashboardSlice.d.ts.map +1 -1
- package/dist/dashboard/MosaicDashboardSlice.js +55 -0
- package/dist/dashboard/MosaicDashboardSlice.js.map +1 -1
- package/dist/dashboard/components/ResetFiltersButton.d.ts +14 -0
- package/dist/dashboard/components/ResetFiltersButton.d.ts.map +1 -0
- package/dist/dashboard/components/ResetFiltersButton.js +15 -0
- package/dist/dashboard/components/ResetFiltersButton.js.map +1 -0
- package/dist/dashboard/dashboard-types.d.ts +9 -3
- package/dist/dashboard/dashboard-types.d.ts.map +1 -1
- package/dist/dashboard/dashboard-types.js.map +1 -1
- package/dist/dashboard/hooks/useDashboardResetFilters.d.ts +14 -0
- package/dist/dashboard/hooks/useDashboardResetFilters.d.ts.map +1 -0
- package/dist/dashboard/hooks/useDashboardResetFilters.js +39 -0
- package/dist/dashboard/hooks/useDashboardResetFilters.js.map +1 -0
- package/dist/dashboard/hooks/usePanelResetFilters.d.ts +16 -0
- package/dist/dashboard/hooks/usePanelResetFilters.d.ts.map +1 -0
- package/dist/dashboard/hooks/usePanelResetFilters.js +47 -0
- package/dist/dashboard/hooks/usePanelResetFilters.js.map +1 -0
- package/dist/dashboard/panel/MosaicDashboardPanel.d.ts.map +1 -1
- package/dist/dashboard/panel/MosaicDashboardPanel.js +1 -1
- package/dist/dashboard/panel/MosaicDashboardPanel.js.map +1 -1
- package/dist/dashboard/panel/MosaicDashboardPanelLayout.d.ts.map +1 -1
- package/dist/dashboard/panel/MosaicDashboardPanelLayout.js +3 -3
- package/dist/dashboard/panel/MosaicDashboardPanelLayout.js.map +1 -1
- package/dist/dashboard/panel/MosaicDashboardPanels.d.ts.map +1 -1
- package/dist/dashboard/panel/MosaicDashboardPanels.js +4 -2
- package/dist/dashboard/panel/MosaicDashboardPanels.js.map +1 -1
- package/dist/dashboard/toolbar/MosaicDashboardAddPanelDropdown.d.ts.map +1 -1
- package/dist/dashboard/toolbar/MosaicDashboardAddPanelDropdown.js +3 -3
- package/dist/dashboard/toolbar/MosaicDashboardAddPanelDropdown.js.map +1 -1
- package/dist/dashboard/toolbar/MosaicDashboardDataTableSelector.d.ts +7 -0
- package/dist/dashboard/toolbar/MosaicDashboardDataTableSelector.d.ts.map +1 -0
- package/dist/dashboard/toolbar/MosaicDashboardDataTableSelector.js +18 -0
- package/dist/dashboard/toolbar/MosaicDashboardDataTableSelector.js.map +1 -0
- package/dist/dashboard/toolbar/MosaicDashboardResetFiltersButton.d.ts.map +1 -1
- package/dist/dashboard/toolbar/MosaicDashboardResetFiltersButton.js +4 -32
- package/dist/dashboard/toolbar/MosaicDashboardResetFiltersButton.js.map +1 -1
- package/dist/dashboard/toolbar/MosaicDashboardToolbar.d.ts +2 -2
- package/dist/dashboard/toolbar/MosaicDashboardToolbar.d.ts.map +1 -1
- package/dist/dashboard/toolbar/MosaicDashboardToolbar.js +14 -10
- package/dist/dashboard/toolbar/MosaicDashboardToolbar.js.map +1 -1
- package/dist/dashboard/usePanelClientRegistration.d.ts +7 -0
- package/dist/dashboard/usePanelClientRegistration.d.ts.map +1 -0
- package/dist/dashboard/usePanelClientRegistration.js +30 -0
- package/dist/dashboard/usePanelClientRegistration.js.map +1 -0
- package/dist/dashboard/usePanelClients.d.ts +7 -0
- package/dist/dashboard/usePanelClients.d.ts.map +1 -0
- package/dist/dashboard/usePanelClients.js +13 -0
- package/dist/dashboard/usePanelClients.js.map +1 -0
- package/dist/dashboard/useSelectedOrFirstTable.d.ts +1 -1
- package/dist/dashboard/useSelectedOrFirstTable.d.ts.map +1 -1
- package/dist/dashboard/useSelectedOrFirstTable.js +10 -8
- package/dist/dashboard/useSelectedOrFirstTable.js.map +1 -1
- package/dist/data-table-explorer/DataTableExplorer.d.ts +4 -2
- package/dist/data-table-explorer/DataTableExplorer.d.ts.map +1 -1
- package/dist/data-table-explorer/DataTableExplorer.js +4 -4
- package/dist/data-table-explorer/DataTableExplorer.js.map +1 -1
- package/dist/data-table-explorer/DataTableExplorerCategoryClient.d.ts +3 -2
- package/dist/data-table-explorer/DataTableExplorerCategoryClient.d.ts.map +1 -1
- package/dist/data-table-explorer/DataTableExplorerCategoryClient.js +4 -3
- package/dist/data-table-explorer/DataTableExplorerCategoryClient.js.map +1 -1
- package/dist/data-table-explorer/DataTableExplorerCountClient.d.ts +3 -1
- package/dist/data-table-explorer/DataTableExplorerCountClient.d.ts.map +1 -1
- package/dist/data-table-explorer/DataTableExplorerCountClient.js +3 -3
- package/dist/data-table-explorer/DataTableExplorerCountClient.js.map +1 -1
- package/dist/data-table-explorer/DataTableExplorerHistogramClient.d.ts +3 -2
- package/dist/data-table-explorer/DataTableExplorerHistogramClient.d.ts.map +1 -1
- package/dist/data-table-explorer/DataTableExplorerHistogramClient.js +4 -4
- package/dist/data-table-explorer/DataTableExplorerHistogramClient.js.map +1 -1
- package/dist/data-table-explorer/DataTableExplorerPageClient.d.ts +3 -1
- package/dist/data-table-explorer/DataTableExplorerPageClient.d.ts.map +1 -1
- package/dist/data-table-explorer/DataTableExplorerPageClient.js +3 -1
- package/dist/data-table-explorer/DataTableExplorerPageClient.js.map +1 -1
- package/dist/data-table-explorer/DataTableExplorerUnsupportedSummaryClient.d.ts +3 -2
- package/dist/data-table-explorer/DataTableExplorerUnsupportedSummaryClient.d.ts.map +1 -1
- package/dist/data-table-explorer/DataTableExplorerUnsupportedSummaryClient.js +3 -3
- package/dist/data-table-explorer/DataTableExplorerUnsupportedSummaryClient.js.map +1 -1
- package/dist/data-table-explorer/createDataTableExplorerStore.d.ts +3 -0
- package/dist/data-table-explorer/createDataTableExplorerStore.d.ts.map +1 -1
- package/dist/data-table-explorer/createDataTableExplorerStore.js +6 -0
- package/dist/data-table-explorer/createDataTableExplorerStore.js.map +1 -1
- package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerHeaderActions.d.ts +4 -0
- package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerHeaderActions.d.ts.map +1 -0
- package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerHeaderActions.js +13 -0
- package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerHeaderActions.js.map +1 -0
- package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerPanelRenderer.d.ts.map +1 -1
- package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerPanelRenderer.js +26 -8
- package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerPanelRenderer.js.map +1 -1
- package/dist/data-table-explorer/dashboard/useDataTableExplorerPanelClients.d.ts +13 -0
- package/dist/data-table-explorer/dashboard/useDataTableExplorerPanelClients.d.ts.map +1 -0
- package/dist/data-table-explorer/dashboard/useDataTableExplorerPanelClients.js +32 -0
- package/dist/data-table-explorer/dashboard/useDataTableExplorerPanelClients.js.map +1 -0
- package/dist/data-table-explorer/dataTableExplorerController.d.ts +63 -3
- package/dist/data-table-explorer/dataTableExplorerController.d.ts.map +1 -1
- package/dist/data-table-explorer/dataTableExplorerController.js +73 -10
- package/dist/data-table-explorer/dataTableExplorerController.js.map +1 -1
- package/dist/data-table-explorer/hooks/useDataTableExplorerColumns.d.ts +12 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerColumns.d.ts.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerColumns.js +19 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerColumns.js.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerLifecycles.d.ts +52 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerLifecycles.d.ts.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerLifecycles.js +153 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerLifecycles.js.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerQueryState.d.ts +42 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerQueryState.d.ts.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerQueryState.js +43 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerQueryState.js.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerSelection.d.ts +13 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerSelection.d.ts.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerSelection.js +40 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerSelection.js.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerStatus.d.ts +18 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerStatus.d.ts.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerStatus.js +23 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerStatus.js.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerStoreState.d.ts +27 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerStoreState.d.ts.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerStoreState.js +28 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerStoreState.js.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerVisiblePage.d.ts +15 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerVisiblePage.d.ts.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerVisiblePage.js +21 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerVisiblePage.js.map +1 -0
- package/dist/data-table-explorer/types.d.ts +16 -3
- package/dist/data-table-explorer/types.d.ts.map +1 -1
- package/dist/data-table-explorer/types.js.map +1 -1
- package/dist/data-table-explorer/useDataTableExplorer.d.ts.map +1 -1
- package/dist/data-table-explorer/useDataTableExplorer.js +20 -279
- package/dist/data-table-explorer/useDataTableExplorer.js.map +1 -1
- package/dist/data-table-explorer/utils.d.ts +64 -6
- package/dist/data-table-explorer/utils.d.ts.map +1 -1
- package/dist/data-table-explorer/utils.js +58 -0
- package/dist/data-table-explorer/utils.js.map +1 -1
- package/dist/data-table-explorer/worksheet/DataTableBlockHeader.d.ts +1 -0
- package/dist/data-table-explorer/worksheet/DataTableBlockHeader.d.ts.map +1 -1
- package/dist/data-table-explorer/worksheet/DataTableBlockHeader.js +4 -2
- package/dist/data-table-explorer/worksheet/DataTableBlockHeader.js.map +1 -1
- package/dist/data-table-explorer/worksheet/DataTableBlockRenderer.d.ts.map +1 -1
- package/dist/data-table-explorer/worksheet/DataTableBlockRenderer.js +4 -4
- package/dist/data-table-explorer/worksheet/DataTableBlockRenderer.js.map +1 -1
- package/dist/index.d.ts +55 -31
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +86 -26
- package/dist/index.js.map +1 -1
- package/dist/mosaicTableReference.d.ts +59 -0
- package/dist/mosaicTableReference.d.ts.map +1 -0
- package/dist/mosaicTableReference.js +68 -0
- package/dist/mosaicTableReference.js.map +1 -0
- package/dist/useVgPlotChartRender.d.ts.map +1 -1
- package/dist/useVgPlotChartRender.js +151 -25
- package/dist/useVgPlotChartRender.js.map +1 -1
- package/dist/useVgPlotChartRetention.d.ts +11 -0
- package/dist/useVgPlotChartRetention.d.ts.map +1 -1
- package/dist/useVgPlotChartRetention.js.map +1 -1
- package/dist/utils/table-lookup.d.ts +7 -0
- package/dist/utils/table-lookup.d.ts.map +1 -0
- package/dist/utils/table-lookup.js +10 -0
- package/dist/utils/table-lookup.js.map +1 -0
- package/package.json +14 -14
- package/dist/ai/ai.d.ts +0 -103
- package/dist/ai/ai.d.ts.map +0 -1
- package/dist/ai/ai.js +0 -419
- package/dist/ai/ai.js.map +0 -1
- package/dist/ai/data-table-explorer-tool.d.ts +0 -40
- package/dist/ai/data-table-explorer-tool.d.ts.map +0 -1
- package/dist/ai/data-table-explorer-tool.js +0 -75
- package/dist/ai/data-table-explorer-tool.js.map +0 -1
- package/dist/ai/list-panels-tool.d.ts +0 -35
- package/dist/ai/list-panels-tool.d.ts.map +0 -1
- package/dist/ai/list-panels-tool.js +0 -66
- package/dist/ai/list-panels-tool.js.map +0 -1
- package/dist/ai/remove-panel-tool.d.ts +0 -31
- package/dist/ai/remove-panel-tool.d.ts.map +0 -1
- package/dist/ai/remove-panel-tool.js +0 -55
- package/dist/ai/remove-panel-tool.js.map +0 -1
- package/dist/ai/tool-validation.d.ts +0 -3
- package/dist/ai/tool-validation.d.ts.map +0 -1
- package/dist/ai/tool-validation.js +0 -11
- package/dist/ai/tool-validation.js.map +0 -1
- package/dist/charts/chart-types/bubble-chart/BubbleChartSettings.d.ts +0 -3
- package/dist/charts/chart-types/bubble-chart/BubbleChartSettings.d.ts.map +0 -1
- package/dist/charts/chart-types/bubble-chart/BubbleChartSettings.js.map +0 -1
- package/dist/charts/chart-types/bubble-chart/definition.d.ts +0 -4
- package/dist/charts/chart-types/bubble-chart/definition.d.ts.map +0 -1
- package/dist/charts/chart-types/bubble-chart/definition.js +0 -24
- package/dist/charts/chart-types/bubble-chart/definition.js.map +0 -1
- package/dist/charts/chart-types/bubble-chart/schema.d.ts.map +0 -1
- package/dist/charts/chart-types/bubble-chart/schema.js.map +0 -1
- package/dist/charts/chart-types/bubble-chart/spec.d.ts +0 -4
- package/dist/charts/chart-types/bubble-chart/spec.d.ts.map +0 -1
- package/dist/charts/chart-types/bubble-chart/spec.js +0 -31
- package/dist/charts/chart-types/bubble-chart/spec.js.map +0 -1
- package/dist/charts/chart-types/bubble-chart/tool.d.ts +0 -42
- package/dist/charts/chart-types/bubble-chart/tool.d.ts.map +0 -1
- package/dist/charts/chart-types/bubble-chart/tool.js +0 -66
- package/dist/charts/chart-types/bubble-chart/tool.js.map +0 -1
- package/dist/hooks/useDataTable.d.ts +0 -3
- package/dist/hooks/useDataTable.d.ts.map +0 -1
- package/dist/hooks/useDataTable.js +0 -28
- package/dist/hooks/useDataTable.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { FieldInfo } from '@uwdata/mosaic-core';
|
|
2
2
|
import { Query } from '@uwdata/mosaic-sql';
|
|
3
3
|
import * as arrow from 'apache-arrow';
|
|
4
|
-
import type { DataTableExplorerBin, DataTableExplorerCategoryBucket, DataTableExplorerPaginationState, DataTableExplorerSorting, DataTableExplorerSummaryState } from './types';
|
|
4
|
+
import type { DataTableExplorerBin, DataTableExplorerCategoryBucket, DataTableExplorerPaginationState, DataTableExplorerSqlTableReference, DataTableExplorerSorting, DataTableExplorerSummaryState } from './types';
|
|
5
5
|
export type CategoryCountRow = {
|
|
6
6
|
bucketKind: 'null' | 'unique' | 'value';
|
|
7
7
|
total: number;
|
|
@@ -11,28 +11,86 @@ type QueryWhereInput = Parameters<ReturnType<typeof Query.from>['where']>[0];
|
|
|
11
11
|
export declare function isDataTableExplorerHistogramType(type: arrow.DataType): boolean;
|
|
12
12
|
export declare function isDataTableExplorerUnsupportedSummaryType(type: arrow.DataType): boolean;
|
|
13
13
|
export declare function getDataTableExplorerValueType(type: arrow.DataType): 'date' | 'number' | 'string';
|
|
14
|
-
|
|
14
|
+
/**
|
|
15
|
+
* Builds a one-row schema probe query for a dataTableExplorer table.
|
|
16
|
+
*
|
|
17
|
+
* @param tableName Table reference to query. Pass a TableRefNode when the table
|
|
18
|
+
* reference is qualified or contains dotted identifier parts.
|
|
19
|
+
* @param columns Optional list of columns to include; when omitted, the query
|
|
20
|
+
* selects all columns.
|
|
21
|
+
* @returns Mosaic query used to infer Arrow field metadata from the table.
|
|
22
|
+
*/
|
|
23
|
+
export declare function buildSchemaQuery(tableName: DataTableExplorerSqlTableReference, columns?: string[]): ReturnType<typeof Query.from>;
|
|
15
24
|
export declare function fieldInfoToDataTableExplorerField(info: FieldInfo): arrow.Field;
|
|
25
|
+
/**
|
|
26
|
+
* Builds the base dataTableExplorer query before pagination is applied.
|
|
27
|
+
*
|
|
28
|
+
* @param args.columns Optional selected column names; when omitted, all columns
|
|
29
|
+
* are selected.
|
|
30
|
+
* @param args.filter Optional Mosaic where clause or clause array.
|
|
31
|
+
* @param args.sorting Optional sort descriptors applied in order.
|
|
32
|
+
* @param args.tableName Table reference to query. This accepts
|
|
33
|
+
* DataTableExplorerSqlTableReference so callers can pass TableRefNode values
|
|
34
|
+
* that preserve qualified identifier boundaries.
|
|
35
|
+
* @returns Mosaic query with projection, filtering, and sorting applied.
|
|
36
|
+
*/
|
|
16
37
|
export declare function buildDataTableExplorerBaseQuery(args: {
|
|
17
38
|
columns?: string[];
|
|
18
39
|
filter?: QueryWhereInput;
|
|
19
40
|
sorting?: DataTableExplorerSorting;
|
|
20
|
-
tableName:
|
|
41
|
+
tableName: DataTableExplorerSqlTableReference;
|
|
21
42
|
}): import("@uwdata/mosaic-sql").SelectQuery;
|
|
43
|
+
/**
|
|
44
|
+
* Applies normalized dataTableExplorer pagination to a base query.
|
|
45
|
+
*
|
|
46
|
+
* @param baseQuery Query returned by buildDataTableExplorerBaseQuery.
|
|
47
|
+
* @param pagination Requested page index and page size.
|
|
48
|
+
* @returns A cloned Mosaic query with limit and offset applied.
|
|
49
|
+
*/
|
|
22
50
|
export declare function buildDataTableExplorerPageQuery(baseQuery: ReturnType<typeof buildDataTableExplorerBaseQuery>, pagination: DataTableExplorerPaginationState): import("@uwdata/mosaic-sql").SelectQuery;
|
|
23
51
|
export declare function normalizeDataTableExplorerPagination(pagination: Partial<DataTableExplorerPaginationState> | undefined): DataTableExplorerPaginationState;
|
|
52
|
+
/**
|
|
53
|
+
* Builds a row-count query for a dataTableExplorer table.
|
|
54
|
+
*
|
|
55
|
+
* @param args.filter Optional Mosaic where clause or clause array.
|
|
56
|
+
* @param args.tableName Table reference to query. Pass a TableRefNode for
|
|
57
|
+
* qualified references that should not be reparsed from a string.
|
|
58
|
+
* @returns Mosaic query that returns a single count column.
|
|
59
|
+
*/
|
|
24
60
|
export declare function buildCountQuery(args: {
|
|
25
61
|
filter?: QueryWhereInput;
|
|
26
|
-
tableName:
|
|
62
|
+
tableName: DataTableExplorerSqlTableReference;
|
|
27
63
|
}): import("@uwdata/mosaic-sql").SelectQuery;
|
|
64
|
+
/**
|
|
65
|
+
* Builds a distinct-value count query for one dataTableExplorer field.
|
|
66
|
+
*
|
|
67
|
+
* @param args.filter Optional Mosaic where clause or clause array.
|
|
68
|
+
* @param args.fieldName Field whose distinct non-null values should be counted.
|
|
69
|
+
* @param args.tableName Table reference to query. Pass a TableRefNode for
|
|
70
|
+
* qualified references that should not be reparsed from a string.
|
|
71
|
+
* @returns Mosaic query that returns a single distinct count column.
|
|
72
|
+
*/
|
|
28
73
|
export declare function buildDistinctCountQuery(args: {
|
|
29
74
|
filter?: QueryWhereInput;
|
|
30
75
|
fieldName: string;
|
|
31
|
-
tableName:
|
|
76
|
+
tableName: DataTableExplorerSqlTableReference;
|
|
32
77
|
}): import("@uwdata/mosaic-sql").SelectQuery;
|
|
33
78
|
export declare function readCountData(data: unknown): number | undefined;
|
|
34
79
|
export declare function rowsFromQueryResult<T>(data: unknown): T[];
|
|
35
|
-
|
|
80
|
+
/**
|
|
81
|
+
* Builds the category summary query used by dataTableExplorer categorical
|
|
82
|
+
* columns.
|
|
83
|
+
*
|
|
84
|
+
* @param tableName Table reference to query. This accepts
|
|
85
|
+
* DataTableExplorerSqlTableReference so callers can use TableRefNode when
|
|
86
|
+
* identifier boundaries must be preserved.
|
|
87
|
+
* @param fieldName Field to summarize into value, null, unique, and overflow
|
|
88
|
+
* buckets.
|
|
89
|
+
* @param filter Optional Mosaic where clause or clause array.
|
|
90
|
+
* @returns Mosaic query that produces bucket kind, typed value, and total count
|
|
91
|
+
* rows for category summaries.
|
|
92
|
+
*/
|
|
93
|
+
export declare function buildCategorySummaryQuery(tableName: DataTableExplorerSqlTableReference, fieldName: string, filter?: QueryWhereInput): import("@uwdata/mosaic-sql").SelectQuery;
|
|
36
94
|
export declare function splitHistogramBins(rows: Array<{
|
|
37
95
|
x1: DataTableExplorerBin['x0'] | null;
|
|
38
96
|
x2: DataTableExplorerBin['x1'] | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/data-table-explorer/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAA2B,KAAK,EAAW,MAAM,oBAAoB,CAAC;AAC7E,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,EACV,oBAAoB,EACpB,+BAA+B,EAC/B,gCAAgC,EAChC,wBAAwB,EACxB,6BAA6B,EAC9B,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,KAAK,eAAe,GAAG,UAAU,CAAC,UAAU,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7E,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,KAAK,CAAC,QAAQ,GACnB,OAAO,CAQT;AAED,wBAAgB,yCAAyC,CACvD,IAAI,EAAE,KAAK,CAAC,QAAQ,GACnB,OAAO,CAKT;AAED,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,KAAK,CAAC,QAAQ,GACnB,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAY9B;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/data-table-explorer/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,15 @@ export function getDataTableExplorerValueType(type) {
|
|
|
22
22
|
}
|
|
23
23
|
return 'string';
|
|
24
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Builds a one-row schema probe query for a dataTableExplorer table.
|
|
27
|
+
*
|
|
28
|
+
* @param tableName Table reference to query. Pass a TableRefNode when the table
|
|
29
|
+
* reference is qualified or contains dotted identifier parts.
|
|
30
|
+
* @param columns Optional list of columns to include; when omitted, the query
|
|
31
|
+
* selects all columns.
|
|
32
|
+
* @returns Mosaic query used to infer Arrow field metadata from the table.
|
|
33
|
+
*/
|
|
25
34
|
export function buildSchemaQuery(tableName, columns) {
|
|
26
35
|
return Query.from(tableName)
|
|
27
36
|
.select(columns?.length ? columns.map((name) => column(name)) : ['*'])
|
|
@@ -62,6 +71,18 @@ function createDataTableExplorerArrowType(sqlType) {
|
|
|
62
71
|
export function fieldInfoToDataTableExplorerField(info) {
|
|
63
72
|
return new arrow.Field(info.column, createDataTableExplorerArrowType(info.sqlType), info.nullable);
|
|
64
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* Builds the base dataTableExplorer query before pagination is applied.
|
|
76
|
+
*
|
|
77
|
+
* @param args.columns Optional selected column names; when omitted, all columns
|
|
78
|
+
* are selected.
|
|
79
|
+
* @param args.filter Optional Mosaic where clause or clause array.
|
|
80
|
+
* @param args.sorting Optional sort descriptors applied in order.
|
|
81
|
+
* @param args.tableName Table reference to query. This accepts
|
|
82
|
+
* DataTableExplorerSqlTableReference so callers can pass TableRefNode values
|
|
83
|
+
* that preserve qualified identifier boundaries.
|
|
84
|
+
* @returns Mosaic query with projection, filtering, and sorting applied.
|
|
85
|
+
*/
|
|
65
86
|
export function buildDataTableExplorerBaseQuery(args) {
|
|
66
87
|
const { columns, filter, sorting, tableName } = args;
|
|
67
88
|
const query = Query.from(tableName)
|
|
@@ -72,6 +93,13 @@ export function buildDataTableExplorerBaseQuery(args) {
|
|
|
72
93
|
}
|
|
73
94
|
return query;
|
|
74
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* Applies normalized dataTableExplorer pagination to a base query.
|
|
98
|
+
*
|
|
99
|
+
* @param baseQuery Query returned by buildDataTableExplorerBaseQuery.
|
|
100
|
+
* @param pagination Requested page index and page size.
|
|
101
|
+
* @returns A cloned Mosaic query with limit and offset applied.
|
|
102
|
+
*/
|
|
75
103
|
export function buildDataTableExplorerPageQuery(baseQuery, pagination) {
|
|
76
104
|
const { pageIndex, pageSize } = normalizeDataTableExplorerPagination(pagination);
|
|
77
105
|
return baseQuery
|
|
@@ -84,11 +112,28 @@ export function normalizeDataTableExplorerPagination(pagination) {
|
|
|
84
112
|
const pageIndex = Math.max(0, Math.trunc(Number(pagination?.pageIndex) || 0));
|
|
85
113
|
return { pageIndex, pageSize };
|
|
86
114
|
}
|
|
115
|
+
/**
|
|
116
|
+
* Builds a row-count query for a dataTableExplorer table.
|
|
117
|
+
*
|
|
118
|
+
* @param args.filter Optional Mosaic where clause or clause array.
|
|
119
|
+
* @param args.tableName Table reference to query. Pass a TableRefNode for
|
|
120
|
+
* qualified references that should not be reparsed from a string.
|
|
121
|
+
* @returns Mosaic query that returns a single count column.
|
|
122
|
+
*/
|
|
87
123
|
export function buildCountQuery(args) {
|
|
88
124
|
return Query.from(args.tableName)
|
|
89
125
|
.select({ count: count() })
|
|
90
126
|
.where(args.filter ?? []);
|
|
91
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* Builds a distinct-value count query for one dataTableExplorer field.
|
|
130
|
+
*
|
|
131
|
+
* @param args.filter Optional Mosaic where clause or clause array.
|
|
132
|
+
* @param args.fieldName Field whose distinct non-null values should be counted.
|
|
133
|
+
* @param args.tableName Table reference to query. Pass a TableRefNode for
|
|
134
|
+
* qualified references that should not be reparsed from a string.
|
|
135
|
+
* @returns Mosaic query that returns a single distinct count column.
|
|
136
|
+
*/
|
|
92
137
|
export function buildDistinctCountQuery(args) {
|
|
93
138
|
return Query.from(args.tableName)
|
|
94
139
|
.select({
|
|
@@ -117,6 +162,19 @@ export function rowsFromQueryResult(data) {
|
|
|
117
162
|
}
|
|
118
163
|
return Array.from(data.toArray());
|
|
119
164
|
}
|
|
165
|
+
/**
|
|
166
|
+
* Builds the category summary query used by dataTableExplorer categorical
|
|
167
|
+
* columns.
|
|
168
|
+
*
|
|
169
|
+
* @param tableName Table reference to query. This accepts
|
|
170
|
+
* DataTableExplorerSqlTableReference so callers can use TableRefNode when
|
|
171
|
+
* identifier boundaries must be preserved.
|
|
172
|
+
* @param fieldName Field to summarize into value, null, unique, and overflow
|
|
173
|
+
* buckets.
|
|
174
|
+
* @param filter Optional Mosaic where clause or clause array.
|
|
175
|
+
* @returns Mosaic query that produces bucket kind, typed value, and total count
|
|
176
|
+
* rows for category summaries.
|
|
177
|
+
*/
|
|
120
178
|
export function buildCategorySummaryQuery(tableName, fieldName, filter) {
|
|
121
179
|
const col = column(fieldName);
|
|
122
180
|
const counts = Query.from({ source: tableName })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/data-table-explorer/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import type {FieldInfo} from '@uwdata/mosaic-core';\nimport {asc, column, count, desc, Query, sql, sum} from '@uwdata/mosaic-sql';\nimport * as arrow from 'apache-arrow';\nimport type {\n DataTableExplorerBin,\n DataTableExplorerCategoryBucket,\n DataTableExplorerPaginationState,\n DataTableExplorerSorting,\n DataTableExplorerSummaryState,\n} from './types';\n\nexport type CategoryCountRow = {\n bucketKind: 'null' | 'unique' | 'value';\n total: number;\n typedValue: unknown;\n};\n\ntype QueryWhereInput = Parameters<ReturnType<typeof Query.from>['where']>[0];\n\nexport function isDataTableExplorerHistogramType(\n type: arrow.DataType,\n): boolean {\n return (\n arrow.DataType.isDate(type) ||\n arrow.DataType.isTimestamp(type) ||\n arrow.DataType.isDecimal(type) ||\n arrow.DataType.isFloat(type) ||\n arrow.DataType.isInt(type)\n );\n}\n\nexport function isDataTableExplorerUnsupportedSummaryType(\n type: arrow.DataType,\n): boolean {\n return (\n arrow.DataType.isBinary(type) ||\n type.toString().toLowerCase().includes('geometry')\n );\n}\n\nexport function getDataTableExplorerValueType(\n type: arrow.DataType,\n): 'date' | 'number' | 'string' {\n if (arrow.DataType.isDate(type) || arrow.DataType.isTimestamp(type)) {\n return 'date';\n }\n if (\n arrow.DataType.isDecimal(type) ||\n arrow.DataType.isFloat(type) ||\n arrow.DataType.isInt(type)\n ) {\n return 'number';\n }\n return 'string';\n}\n\nexport function buildSchemaQuery(\n tableName: string,\n columns?: string[],\n): ReturnType<typeof Query.from> {\n return Query.from(tableName)\n .select(columns?.length ? columns.map((name) => column(name)) : ['*'])\n .limit(1);\n}\n\nfunction createDataTableExplorerArrowType(sqlType: string): arrow.DataType {\n const type = sqlType.toLowerCase();\n\n if (/^bool(ean)?/.test(type)) {\n return new arrow.Bool();\n }\n\n if (/^date$/.test(type)) {\n return new arrow.DateDay();\n }\n\n if (/^time$|^timestamp|^timestamptz/.test(type)) {\n return new arrow.TimestampMillisecond();\n }\n\n if (\n /^(tinyint|smallint|integer|bigint|hugeint|utinyint|usmallint|uinteger|ubigint|uhugeint)/.test(\n type,\n )\n ) {\n return new arrow.Int64();\n }\n\n if (/^(decimal|numeric)/.test(type)) {\n return new arrow.Decimal(38, 9);\n }\n\n if (/^(double|float|real)/.test(type)) {\n return new arrow.Float64();\n }\n\n if (/^(blob|bytea|binary|varbinary)/.test(type)) {\n return new arrow.Binary();\n }\n\n if (/^geometry/.test(type)) {\n return {\n toString() {\n return sqlType;\n },\n } as arrow.DataType;\n }\n\n return new arrow.Utf8();\n}\n\nexport function fieldInfoToDataTableExplorerField(\n info: FieldInfo,\n): arrow.Field {\n return new arrow.Field(\n info.column,\n createDataTableExplorerArrowType(info.sqlType),\n info.nullable,\n );\n}\n\nexport function buildDataTableExplorerBaseQuery(args: {\n columns?: string[];\n filter?: QueryWhereInput;\n sorting?: DataTableExplorerSorting;\n tableName: string;\n}) {\n const {columns, filter, sorting, tableName} = args;\n const query = Query.from(tableName)\n .select(columns?.length ? columns.map((name) => column(name)) : ['*'])\n .where(filter ?? []);\n\n if (sorting?.length) {\n query.orderby(\n sorting.map((entry) => (entry.desc ? desc(entry.id) : asc(entry.id))),\n );\n }\n\n return query;\n}\n\nexport function buildDataTableExplorerPageQuery(\n baseQuery: ReturnType<typeof buildDataTableExplorerBaseQuery>,\n pagination: DataTableExplorerPaginationState,\n) {\n const {pageIndex, pageSize} =\n normalizeDataTableExplorerPagination(pagination);\n\n return baseQuery\n .clone()\n .limit(pageSize)\n .offset(pageIndex * pageSize);\n}\n\nexport function normalizeDataTableExplorerPagination(\n pagination: Partial<DataTableExplorerPaginationState> | undefined,\n): DataTableExplorerPaginationState {\n const pageSize = Math.min(\n 1000,\n Math.max(1, Math.trunc(Number(pagination?.pageSize) || 0) || 100),\n );\n const pageIndex = Math.max(0, Math.trunc(Number(pagination?.pageIndex) || 0));\n\n return {pageIndex, pageSize};\n}\n\nexport function buildCountQuery(args: {\n filter?: QueryWhereInput;\n tableName: string;\n}) {\n return Query.from(args.tableName)\n .select({count: count()})\n .where(args.filter ?? []);\n}\n\nexport function buildDistinctCountQuery(args: {\n filter?: QueryWhereInput;\n fieldName: string;\n tableName: string;\n}) {\n return Query.from(args.tableName)\n .select({\n count: count(column(args.fieldName)).distinct(),\n })\n .where(args.filter ?? []);\n}\n\nexport function readCountData(data: unknown): number | undefined {\n if (!data || typeof data !== 'object') {\n return undefined;\n }\n\n if ('toArray' in data && typeof data.toArray === 'function') {\n return (data.toArray() as Array<{count?: number}>)[0]?.count;\n }\n\n if ('get' in data && typeof data.get === 'function') {\n return (data.get(0) as {count?: number} | undefined)?.count;\n }\n\n return undefined;\n}\n\nexport function rowsFromQueryResult<T>(data: unknown): T[] {\n if (\n !data ||\n typeof data !== 'object' ||\n !('toArray' in data) ||\n typeof (data as {toArray?: unknown}).toArray !== 'function'\n ) {\n return [];\n }\n\n return Array.from((data as {toArray(): T[]}).toArray());\n}\n\nexport function buildCategorySummaryQuery(\n tableName: string,\n fieldName: string,\n filter?: QueryWhereInput,\n) {\n const col = column(fieldName);\n const counts = Query.from({source: tableName})\n .select({\n bucket_kind: sql`CASE\n WHEN ${col} IS NULL THEN 'null'\n ELSE 'value'\n END`,\n typed_value: col,\n count: count(),\n })\n .groupby([\n sql`CASE\n WHEN ${col} IS NULL THEN 'null'\n ELSE 'value'\n END`,\n col,\n ])\n .where(filter ?? []);\n\n return Query.with({counts})\n .select({\n bucketKind: sql`CASE\n WHEN \"count\" = 1 AND \"bucket_kind\" = 'value' THEN 'unique'\n ELSE \"bucket_kind\"\n END`,\n typedValue: sql`CASE\n WHEN \"count\" = 1 AND \"bucket_kind\" = 'value' THEN NULL\n ELSE \"typed_value\"\n END`,\n total: sum('count'),\n })\n .from('counts')\n .groupby([\n sql`CASE\n WHEN \"count\" = 1 AND \"bucket_kind\" = 'value' THEN 'unique'\n ELSE \"bucket_kind\"\n END`,\n sql`CASE\n WHEN \"count\" = 1 AND \"bucket_kind\" = 'value' THEN NULL\n ELSE \"typed_value\"\n END`,\n ]);\n}\n\nexport function splitHistogramBins(\n rows: Array<{\n x1: DataTableExplorerBin['x0'] | null;\n x2: DataTableExplorerBin['x1'] | null;\n y: number;\n }>,\n) {\n let nullCount = 0;\n const bins: DataTableExplorerBin[] = [];\n\n for (const row of rows) {\n if (row.x1 == null || row.x2 == null) {\n nullCount += row.y;\n continue;\n }\n\n bins.push({\n x0: row.x1,\n x1: row.x2,\n length: row.y,\n });\n }\n\n bins.sort((left, right) => {\n const leftValue = left.x0 instanceof Date ? left.x0.getTime() : left.x0;\n const rightValue = right.x0 instanceof Date ? right.x0.getTime() : right.x0;\n return leftValue - rightValue;\n });\n\n return {bins, nullCount};\n}\n\nexport function buildCategoryBuckets(\n filteredRows: CategoryCountRow[],\n totalRows: CategoryCountRow[],\n categoryLimit: number,\n selectedKey?: string,\n) {\n const totalByKey = new Map(\n totalRows.map((row) => [serializeCategoryBucketKey(row), row.total]),\n );\n const filteredByKey = new Map(\n filteredRows.map((row) => [serializeCategoryBucketKey(row), row.total]),\n );\n\n const baseRows = totalRows\n .filter((row) => row.bucketKind === 'value')\n .slice()\n .sort(\n (left: CategoryCountRow, right: CategoryCountRow) =>\n right.total - left.total,\n );\n\n const visibleRows = baseRows.slice(0, categoryLimit);\n const overflowRows = baseRows.slice(categoryLimit);\n const buckets: DataTableExplorerCategoryBucket[] = visibleRows.map((row) => ({\n filteredCount: filteredByKey.get(serializeCategoryBucketKey(row)) ?? 0,\n key: serializeCategoryBucketKey(row),\n kind: 'value',\n label: String(row.typedValue),\n selectable: true,\n totalCount: row.total,\n }));\n\n const overflowTotalCount = overflowRows.reduce(\n (acc: number, row: CategoryCountRow) => acc + row.total,\n 0,\n );\n const overflowFilteredCount = overflowRows.reduce(\n (acc: number, row: CategoryCountRow) =>\n acc + (filteredByKey.get(serializeCategoryBucketKey(row)) ?? 0),\n 0,\n );\n if (overflowTotalCount > 0) {\n buckets.push({\n filteredCount: overflowFilteredCount,\n key: serializeCategoryBucketKey({\n bucketKind: 'unique',\n typedValue: '__sqlrooms_overflow__',\n }),\n kind: 'overflow',\n label: `${overflowRows.length} more`,\n selectable: false,\n totalCount: overflowTotalCount,\n });\n }\n\n const uniqueKey = serializeCategoryBucketKey({\n bucketKind: 'unique',\n typedValue: null,\n });\n const uniqueTotalCount = totalByKey.get(uniqueKey) ?? 0;\n if (uniqueTotalCount > 0) {\n buckets.push({\n filteredCount: filteredByKey.get(uniqueKey) ?? 0,\n key: uniqueKey,\n kind: 'unique',\n label: 'unique',\n selectable: false,\n totalCount: uniqueTotalCount,\n });\n }\n\n const nullKey = serializeCategoryBucketKey({\n bucketKind: 'null',\n typedValue: null,\n });\n const nullTotalCount = totalByKey.get(nullKey) ?? 0;\n if (nullTotalCount > 0) {\n buckets.push({\n filteredCount: filteredByKey.get(nullKey) ?? 0,\n key: nullKey,\n kind: 'null',\n label: 'null',\n selectable: true,\n totalCount: nullTotalCount,\n });\n }\n\n return {\n bucketCount: filteredRows.length,\n buckets,\n selectedKey,\n };\n}\n\nexport function isSelectableCategoryKey(key: string) {\n const parsedKey = parseCategoryBucketKey(key);\n return (\n parsedKey?.bucketKind !== 'unique' &&\n parsedKey?.typedValue !== '__sqlrooms_overflow__'\n );\n}\n\nexport function categoryKeyToSelectionValue(key?: string) {\n if (key === undefined) return undefined;\n const parsedKey = parseCategoryBucketKey(key);\n if (!parsedKey || parsedKey.bucketKind === 'unique') {\n return undefined;\n }\n return parsedKey.bucketKind === 'null' ? null : parsedKey.typedValue;\n}\n\nfunction normalizeCategoryBucketValue(value: unknown): unknown {\n if (value instanceof Date) {\n return {\n type: 'date',\n value: value.toISOString(),\n };\n }\n if (typeof value === 'bigint') {\n return {\n type: 'bigint',\n value: value.toString(),\n };\n }\n return value;\n}\n\nfunction denormalizeCategoryBucketValue(value: unknown): unknown {\n if (!value || typeof value !== 'object') {\n return value;\n }\n\n if (\n 'type' in value &&\n 'value' in value &&\n value.type === 'date' &&\n typeof value.value === 'string'\n ) {\n return new Date(value.value);\n }\n\n if (\n 'type' in value &&\n 'value' in value &&\n value.type === 'bigint' &&\n typeof value.value === 'string'\n ) {\n return BigInt(value.value);\n }\n\n return value;\n}\n\nexport function serializeCategoryBucketKey(row: {\n bucketKind: CategoryCountRow['bucketKind'];\n typedValue: unknown;\n}) {\n return JSON.stringify([\n row.bucketKind,\n normalizeCategoryBucketValue(row.typedValue),\n ]);\n}\n\nexport function parseCategoryBucketKey(key: string):\n | {\n bucketKind: CategoryCountRow['bucketKind'];\n typedValue: unknown;\n }\n | undefined {\n try {\n const parsed = JSON.parse(key) as [CategoryCountRow['bucketKind'], unknown];\n if (!Array.isArray(parsed) || parsed.length !== 2) {\n return undefined;\n }\n\n return {\n bucketKind: parsed[0],\n typedValue: denormalizeCategoryBucketValue(parsed[1]),\n };\n } catch {\n return undefined;\n }\n}\n\nexport function createEmptySummaryState(\n field: arrow.Field,\n): DataTableExplorerSummaryState {\n if (isDataTableExplorerUnsupportedSummaryType(field.type)) {\n return {\n isLoading: false,\n kind: 'unsupported',\n label: 'No summary',\n };\n }\n\n return isDataTableExplorerHistogramType(field.type)\n ? {\n filteredBins: [],\n filteredNullCount: 0,\n interactor: null,\n isLoading: true,\n kind: 'histogram',\n totalBins: [],\n totalNullCount: 0,\n valueType:\n getDataTableExplorerValueType(field.type) === 'date'\n ? 'date'\n : 'number',\n }\n : {\n bucketCount: 0,\n buckets: [],\n isLoading: true,\n kind: 'category',\n toggleValue: () => {},\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/data-table-explorer/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import type {FieldInfo} from '@uwdata/mosaic-core';\nimport {asc, column, count, desc, Query, sql, sum} from '@uwdata/mosaic-sql';\nimport * as arrow from 'apache-arrow';\nimport type {\n DataTableExplorerBin,\n DataTableExplorerCategoryBucket,\n DataTableExplorerPaginationState,\n DataTableExplorerSqlTableReference,\n DataTableExplorerSorting,\n DataTableExplorerSummaryState,\n} from './types';\n\nexport type CategoryCountRow = {\n bucketKind: 'null' | 'unique' | 'value';\n total: number;\n typedValue: unknown;\n};\n\ntype QueryWhereInput = Parameters<ReturnType<typeof Query.from>['where']>[0];\n\nexport function isDataTableExplorerHistogramType(\n type: arrow.DataType,\n): boolean {\n return (\n arrow.DataType.isDate(type) ||\n arrow.DataType.isTimestamp(type) ||\n arrow.DataType.isDecimal(type) ||\n arrow.DataType.isFloat(type) ||\n arrow.DataType.isInt(type)\n );\n}\n\nexport function isDataTableExplorerUnsupportedSummaryType(\n type: arrow.DataType,\n): boolean {\n return (\n arrow.DataType.isBinary(type) ||\n type.toString().toLowerCase().includes('geometry')\n );\n}\n\nexport function getDataTableExplorerValueType(\n type: arrow.DataType,\n): 'date' | 'number' | 'string' {\n if (arrow.DataType.isDate(type) || arrow.DataType.isTimestamp(type)) {\n return 'date';\n }\n if (\n arrow.DataType.isDecimal(type) ||\n arrow.DataType.isFloat(type) ||\n arrow.DataType.isInt(type)\n ) {\n return 'number';\n }\n return 'string';\n}\n\n/**\n * Builds a one-row schema probe query for a dataTableExplorer table.\n *\n * @param tableName Table reference to query. Pass a TableRefNode when the table\n * reference is qualified or contains dotted identifier parts.\n * @param columns Optional list of columns to include; when omitted, the query\n * selects all columns.\n * @returns Mosaic query used to infer Arrow field metadata from the table.\n */\nexport function buildSchemaQuery(\n tableName: DataTableExplorerSqlTableReference,\n columns?: string[],\n): ReturnType<typeof Query.from> {\n return Query.from(tableName)\n .select(columns?.length ? columns.map((name) => column(name)) : ['*'])\n .limit(1);\n}\n\nfunction createDataTableExplorerArrowType(sqlType: string): arrow.DataType {\n const type = sqlType.toLowerCase();\n\n if (/^bool(ean)?/.test(type)) {\n return new arrow.Bool();\n }\n\n if (/^date$/.test(type)) {\n return new arrow.DateDay();\n }\n\n if (/^time$|^timestamp|^timestamptz/.test(type)) {\n return new arrow.TimestampMillisecond();\n }\n\n if (\n /^(tinyint|smallint|integer|bigint|hugeint|utinyint|usmallint|uinteger|ubigint|uhugeint)/.test(\n type,\n )\n ) {\n return new arrow.Int64();\n }\n\n if (/^(decimal|numeric)/.test(type)) {\n return new arrow.Decimal(38, 9);\n }\n\n if (/^(double|float|real)/.test(type)) {\n return new arrow.Float64();\n }\n\n if (/^(blob|bytea|binary|varbinary)/.test(type)) {\n return new arrow.Binary();\n }\n\n if (/^geometry/.test(type)) {\n return {\n toString() {\n return sqlType;\n },\n } as arrow.DataType;\n }\n\n return new arrow.Utf8();\n}\n\nexport function fieldInfoToDataTableExplorerField(\n info: FieldInfo,\n): arrow.Field {\n return new arrow.Field(\n info.column,\n createDataTableExplorerArrowType(info.sqlType),\n info.nullable,\n );\n}\n\n/**\n * Builds the base dataTableExplorer query before pagination is applied.\n *\n * @param args.columns Optional selected column names; when omitted, all columns\n * are selected.\n * @param args.filter Optional Mosaic where clause or clause array.\n * @param args.sorting Optional sort descriptors applied in order.\n * @param args.tableName Table reference to query. This accepts\n * DataTableExplorerSqlTableReference so callers can pass TableRefNode values\n * that preserve qualified identifier boundaries.\n * @returns Mosaic query with projection, filtering, and sorting applied.\n */\nexport function buildDataTableExplorerBaseQuery(args: {\n columns?: string[];\n filter?: QueryWhereInput;\n sorting?: DataTableExplorerSorting;\n tableName: DataTableExplorerSqlTableReference;\n}) {\n const {columns, filter, sorting, tableName} = args;\n const query = Query.from(tableName)\n .select(columns?.length ? columns.map((name) => column(name)) : ['*'])\n .where(filter ?? []);\n\n if (sorting?.length) {\n query.orderby(\n sorting.map((entry) => (entry.desc ? desc(entry.id) : asc(entry.id))),\n );\n }\n\n return query;\n}\n\n/**\n * Applies normalized dataTableExplorer pagination to a base query.\n *\n * @param baseQuery Query returned by buildDataTableExplorerBaseQuery.\n * @param pagination Requested page index and page size.\n * @returns A cloned Mosaic query with limit and offset applied.\n */\nexport function buildDataTableExplorerPageQuery(\n baseQuery: ReturnType<typeof buildDataTableExplorerBaseQuery>,\n pagination: DataTableExplorerPaginationState,\n) {\n const {pageIndex, pageSize} =\n normalizeDataTableExplorerPagination(pagination);\n\n return baseQuery\n .clone()\n .limit(pageSize)\n .offset(pageIndex * pageSize);\n}\n\nexport function normalizeDataTableExplorerPagination(\n pagination: Partial<DataTableExplorerPaginationState> | undefined,\n): DataTableExplorerPaginationState {\n const pageSize = Math.min(\n 1000,\n Math.max(1, Math.trunc(Number(pagination?.pageSize) || 0) || 100),\n );\n const pageIndex = Math.max(0, Math.trunc(Number(pagination?.pageIndex) || 0));\n\n return {pageIndex, pageSize};\n}\n\n/**\n * Builds a row-count query for a dataTableExplorer table.\n *\n * @param args.filter Optional Mosaic where clause or clause array.\n * @param args.tableName Table reference to query. Pass a TableRefNode for\n * qualified references that should not be reparsed from a string.\n * @returns Mosaic query that returns a single count column.\n */\nexport function buildCountQuery(args: {\n filter?: QueryWhereInput;\n tableName: DataTableExplorerSqlTableReference;\n}) {\n return Query.from(args.tableName)\n .select({count: count()})\n .where(args.filter ?? []);\n}\n\n/**\n * Builds a distinct-value count query for one dataTableExplorer field.\n *\n * @param args.filter Optional Mosaic where clause or clause array.\n * @param args.fieldName Field whose distinct non-null values should be counted.\n * @param args.tableName Table reference to query. Pass a TableRefNode for\n * qualified references that should not be reparsed from a string.\n * @returns Mosaic query that returns a single distinct count column.\n */\nexport function buildDistinctCountQuery(args: {\n filter?: QueryWhereInput;\n fieldName: string;\n tableName: DataTableExplorerSqlTableReference;\n}) {\n return Query.from(args.tableName)\n .select({\n count: count(column(args.fieldName)).distinct(),\n })\n .where(args.filter ?? []);\n}\n\nexport function readCountData(data: unknown): number | undefined {\n if (!data || typeof data !== 'object') {\n return undefined;\n }\n\n if ('toArray' in data && typeof data.toArray === 'function') {\n return (data.toArray() as Array<{count?: number}>)[0]?.count;\n }\n\n if ('get' in data && typeof data.get === 'function') {\n return (data.get(0) as {count?: number} | undefined)?.count;\n }\n\n return undefined;\n}\n\nexport function rowsFromQueryResult<T>(data: unknown): T[] {\n if (\n !data ||\n typeof data !== 'object' ||\n !('toArray' in data) ||\n typeof (data as {toArray?: unknown}).toArray !== 'function'\n ) {\n return [];\n }\n\n return Array.from((data as {toArray(): T[]}).toArray());\n}\n\n/**\n * Builds the category summary query used by dataTableExplorer categorical\n * columns.\n *\n * @param tableName Table reference to query. This accepts\n * DataTableExplorerSqlTableReference so callers can use TableRefNode when\n * identifier boundaries must be preserved.\n * @param fieldName Field to summarize into value, null, unique, and overflow\n * buckets.\n * @param filter Optional Mosaic where clause or clause array.\n * @returns Mosaic query that produces bucket kind, typed value, and total count\n * rows for category summaries.\n */\nexport function buildCategorySummaryQuery(\n tableName: DataTableExplorerSqlTableReference,\n fieldName: string,\n filter?: QueryWhereInput,\n) {\n const col = column(fieldName);\n const counts = Query.from({source: tableName})\n .select({\n bucket_kind: sql`CASE\n WHEN ${col} IS NULL THEN 'null'\n ELSE 'value'\n END`,\n typed_value: col,\n count: count(),\n })\n .groupby([\n sql`CASE\n WHEN ${col} IS NULL THEN 'null'\n ELSE 'value'\n END`,\n col,\n ])\n .where(filter ?? []);\n\n return Query.with({counts})\n .select({\n bucketKind: sql`CASE\n WHEN \"count\" = 1 AND \"bucket_kind\" = 'value' THEN 'unique'\n ELSE \"bucket_kind\"\n END`,\n typedValue: sql`CASE\n WHEN \"count\" = 1 AND \"bucket_kind\" = 'value' THEN NULL\n ELSE \"typed_value\"\n END`,\n total: sum('count'),\n })\n .from('counts')\n .groupby([\n sql`CASE\n WHEN \"count\" = 1 AND \"bucket_kind\" = 'value' THEN 'unique'\n ELSE \"bucket_kind\"\n END`,\n sql`CASE\n WHEN \"count\" = 1 AND \"bucket_kind\" = 'value' THEN NULL\n ELSE \"typed_value\"\n END`,\n ]);\n}\n\nexport function splitHistogramBins(\n rows: Array<{\n x1: DataTableExplorerBin['x0'] | null;\n x2: DataTableExplorerBin['x1'] | null;\n y: number;\n }>,\n) {\n let nullCount = 0;\n const bins: DataTableExplorerBin[] = [];\n\n for (const row of rows) {\n if (row.x1 == null || row.x2 == null) {\n nullCount += row.y;\n continue;\n }\n\n bins.push({\n x0: row.x1,\n x1: row.x2,\n length: row.y,\n });\n }\n\n bins.sort((left, right) => {\n const leftValue = left.x0 instanceof Date ? left.x0.getTime() : left.x0;\n const rightValue = right.x0 instanceof Date ? right.x0.getTime() : right.x0;\n return leftValue - rightValue;\n });\n\n return {bins, nullCount};\n}\n\nexport function buildCategoryBuckets(\n filteredRows: CategoryCountRow[],\n totalRows: CategoryCountRow[],\n categoryLimit: number,\n selectedKey?: string,\n) {\n const totalByKey = new Map(\n totalRows.map((row) => [serializeCategoryBucketKey(row), row.total]),\n );\n const filteredByKey = new Map(\n filteredRows.map((row) => [serializeCategoryBucketKey(row), row.total]),\n );\n\n const baseRows = totalRows\n .filter((row) => row.bucketKind === 'value')\n .slice()\n .sort(\n (left: CategoryCountRow, right: CategoryCountRow) =>\n right.total - left.total,\n );\n\n const visibleRows = baseRows.slice(0, categoryLimit);\n const overflowRows = baseRows.slice(categoryLimit);\n const buckets: DataTableExplorerCategoryBucket[] = visibleRows.map((row) => ({\n filteredCount: filteredByKey.get(serializeCategoryBucketKey(row)) ?? 0,\n key: serializeCategoryBucketKey(row),\n kind: 'value',\n label: String(row.typedValue),\n selectable: true,\n totalCount: row.total,\n }));\n\n const overflowTotalCount = overflowRows.reduce(\n (acc: number, row: CategoryCountRow) => acc + row.total,\n 0,\n );\n const overflowFilteredCount = overflowRows.reduce(\n (acc: number, row: CategoryCountRow) =>\n acc + (filteredByKey.get(serializeCategoryBucketKey(row)) ?? 0),\n 0,\n );\n if (overflowTotalCount > 0) {\n buckets.push({\n filteredCount: overflowFilteredCount,\n key: serializeCategoryBucketKey({\n bucketKind: 'unique',\n typedValue: '__sqlrooms_overflow__',\n }),\n kind: 'overflow',\n label: `${overflowRows.length} more`,\n selectable: false,\n totalCount: overflowTotalCount,\n });\n }\n\n const uniqueKey = serializeCategoryBucketKey({\n bucketKind: 'unique',\n typedValue: null,\n });\n const uniqueTotalCount = totalByKey.get(uniqueKey) ?? 0;\n if (uniqueTotalCount > 0) {\n buckets.push({\n filteredCount: filteredByKey.get(uniqueKey) ?? 0,\n key: uniqueKey,\n kind: 'unique',\n label: 'unique',\n selectable: false,\n totalCount: uniqueTotalCount,\n });\n }\n\n const nullKey = serializeCategoryBucketKey({\n bucketKind: 'null',\n typedValue: null,\n });\n const nullTotalCount = totalByKey.get(nullKey) ?? 0;\n if (nullTotalCount > 0) {\n buckets.push({\n filteredCount: filteredByKey.get(nullKey) ?? 0,\n key: nullKey,\n kind: 'null',\n label: 'null',\n selectable: true,\n totalCount: nullTotalCount,\n });\n }\n\n return {\n bucketCount: filteredRows.length,\n buckets,\n selectedKey,\n };\n}\n\nexport function isSelectableCategoryKey(key: string) {\n const parsedKey = parseCategoryBucketKey(key);\n return (\n parsedKey?.bucketKind !== 'unique' &&\n parsedKey?.typedValue !== '__sqlrooms_overflow__'\n );\n}\n\nexport function categoryKeyToSelectionValue(key?: string) {\n if (key === undefined) return undefined;\n const parsedKey = parseCategoryBucketKey(key);\n if (!parsedKey || parsedKey.bucketKind === 'unique') {\n return undefined;\n }\n return parsedKey.bucketKind === 'null' ? null : parsedKey.typedValue;\n}\n\nfunction normalizeCategoryBucketValue(value: unknown): unknown {\n if (value instanceof Date) {\n return {\n type: 'date',\n value: value.toISOString(),\n };\n }\n if (typeof value === 'bigint') {\n return {\n type: 'bigint',\n value: value.toString(),\n };\n }\n return value;\n}\n\nfunction denormalizeCategoryBucketValue(value: unknown): unknown {\n if (!value || typeof value !== 'object') {\n return value;\n }\n\n if (\n 'type' in value &&\n 'value' in value &&\n value.type === 'date' &&\n typeof value.value === 'string'\n ) {\n return new Date(value.value);\n }\n\n if (\n 'type' in value &&\n 'value' in value &&\n value.type === 'bigint' &&\n typeof value.value === 'string'\n ) {\n return BigInt(value.value);\n }\n\n return value;\n}\n\nexport function serializeCategoryBucketKey(row: {\n bucketKind: CategoryCountRow['bucketKind'];\n typedValue: unknown;\n}) {\n return JSON.stringify([\n row.bucketKind,\n normalizeCategoryBucketValue(row.typedValue),\n ]);\n}\n\nexport function parseCategoryBucketKey(key: string):\n | {\n bucketKind: CategoryCountRow['bucketKind'];\n typedValue: unknown;\n }\n | undefined {\n try {\n const parsed = JSON.parse(key) as [CategoryCountRow['bucketKind'], unknown];\n if (!Array.isArray(parsed) || parsed.length !== 2) {\n return undefined;\n }\n\n return {\n bucketKind: parsed[0],\n typedValue: denormalizeCategoryBucketValue(parsed[1]),\n };\n } catch {\n return undefined;\n }\n}\n\nexport function createEmptySummaryState(\n field: arrow.Field,\n): DataTableExplorerSummaryState {\n if (isDataTableExplorerUnsupportedSummaryType(field.type)) {\n return {\n isLoading: false,\n kind: 'unsupported',\n label: 'No summary',\n };\n }\n\n return isDataTableExplorerHistogramType(field.type)\n ? {\n filteredBins: [],\n filteredNullCount: 0,\n interactor: null,\n isLoading: true,\n kind: 'histogram',\n totalBins: [],\n totalNullCount: 0,\n valueType:\n getDataTableExplorerValueType(field.type) === 'date'\n ? 'date'\n : 'number',\n }\n : {\n bucketCount: 0,\n buckets: [],\n isLoading: true,\n kind: 'category',\n toggleValue: () => {},\n };\n}\n"]}
|
|
@@ -2,6 +2,7 @@ import type { DataTable } from '@sqlrooms/db';
|
|
|
2
2
|
import { FC } from 'react';
|
|
3
3
|
export type DataTableBlockHeaderProps = {
|
|
4
4
|
caption?: string;
|
|
5
|
+
onCaptionChange?: (caption: string | undefined) => void;
|
|
5
6
|
onTableChange: (table: DataTable) => void;
|
|
6
7
|
readOnly?: boolean;
|
|
7
8
|
tables: DataTable[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTableBlockHeader.d.ts","sourceRoot":"","sources":["../../../src/data-table-explorer/worksheet/DataTableBlockHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"DataTableBlockHeader.d.ts","sourceRoot":"","sources":["../../../src/data-table-explorer/worksheet/DataTableBlockHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAC,EAAE,EAAC,MAAM,OAAO,CAAC;AAIzB,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IACxD,aAAa,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,aAAa,EAAE,SAAS,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,EAAE,CAAC,yBAAyB,CA6B9D,CAAC"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { EditableText } from '@sqlrooms/ui';
|
|
2
3
|
import { DataTableSelector } from '../../components/DataTableSelector';
|
|
3
4
|
import { DataTableExplorer } from '../DataTableExplorer';
|
|
4
|
-
export const DataTableBlockHeader = ({ caption, onTableChange, readOnly, selectedTable, tables, }) => {
|
|
5
|
-
|
|
5
|
+
export const DataTableBlockHeader = ({ caption, onCaptionChange, onTableChange, readOnly, selectedTable, tables, }) => {
|
|
6
|
+
const tableName = selectedTable.table.table;
|
|
7
|
+
return (_jsxs("div", { className: "border-border flex shrink-0 items-center gap-2 border-b px-3 py-2", children: [_jsx(EditableText, { className: "min-w-0 flex-1 text-sm font-medium", value: caption ?? '', placeholder: tableName || 'Table caption', isReadOnly: readOnly, onChange: (value) => onCaptionChange?.(value || undefined) }), _jsx(DataTableSelector, { className: "w-48", disabled: readOnly || !onTableChange, onChange: onTableChange, tables: tables, value: selectedTable }), _jsx(DataTableExplorer.ResetButton, {})] }));
|
|
6
8
|
};
|
|
7
9
|
//# sourceMappingURL=DataTableBlockHeader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTableBlockHeader.js","sourceRoot":"","sources":["../../../src/data-table-explorer/worksheet/DataTableBlockHeader.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"DataTableBlockHeader.js","sourceRoot":"","sources":["../../../src/data-table-explorer/worksheet/DataTableBlockHeader.tsx"],"names":[],"mappings":";AACA,OAAO,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAC,iBAAiB,EAAC,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAC,iBAAiB,EAAC,MAAM,sBAAsB,CAAC;AAWvD,MAAM,CAAC,MAAM,oBAAoB,GAAkC,CAAC,EAClE,OAAO,EACP,eAAe,EACf,aAAa,EACb,QAAQ,EACR,aAAa,EACb,MAAM,GACP,EAAE,EAAE;IACH,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC;IAE5C,OAAO,CACL,eAAK,SAAS,EAAC,mEAAmE,aAChF,KAAC,YAAY,IACX,SAAS,EAAC,oCAAoC,EAC9C,KAAK,EAAE,OAAO,IAAI,EAAE,EACpB,WAAW,EAAE,SAAS,IAAI,eAAe,EACzC,UAAU,EAAE,QAAQ,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,EAAE,CAAC,KAAK,IAAI,SAAS,CAAC,GAC1D,EACF,KAAC,iBAAiB,IAChB,SAAS,EAAC,MAAM,EAChB,QAAQ,EAAE,QAAQ,IAAI,CAAC,aAAa,EACpC,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,aAAa,GACpB,EACF,KAAC,iBAAiB,CAAC,WAAW,KAAG,IAC7B,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import type {DataTable} from '@sqlrooms/db';\nimport {EditableText} from '@sqlrooms/ui';\nimport {FC} from 'react';\nimport {DataTableSelector} from '../../components/DataTableSelector';\nimport {DataTableExplorer} from '../DataTableExplorer';\n\nexport type DataTableBlockHeaderProps = {\n caption?: string;\n onCaptionChange?: (caption: string | undefined) => void;\n onTableChange: (table: DataTable) => void;\n readOnly?: boolean;\n tables: DataTable[];\n selectedTable: DataTable;\n};\n\nexport const DataTableBlockHeader: FC<DataTableBlockHeaderProps> = ({\n caption,\n onCaptionChange,\n onTableChange,\n readOnly,\n selectedTable,\n tables,\n}) => {\n const tableName = selectedTable.table.table;\n\n return (\n <div className=\"border-border flex shrink-0 items-center gap-2 border-b px-3 py-2\">\n <EditableText\n className=\"min-w-0 flex-1 text-sm font-medium\"\n value={caption ?? ''}\n placeholder={tableName || 'Table caption'}\n isReadOnly={readOnly}\n onChange={(value) => onCaptionChange?.(value || undefined)}\n />\n <DataTableSelector\n className=\"w-48\"\n disabled={readOnly || !onTableChange}\n onChange={onTableChange}\n tables={tables}\n value={selectedTable}\n />\n <DataTableExplorer.ResetButton />\n </div>\n );\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTableBlockRenderer.d.ts","sourceRoot":"","sources":["../../../src/data-table-explorer/worksheet/DataTableBlockRenderer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,uCAAuC,EAAC,MAAM,qBAAqB,CAAC;AAEjF,OAAO,EAAC,EAAE,EAAc,MAAM,OAAO,CAAC;AAQtC,eAAO,MAAM,sBAAsB,EAAE,EAAE,CACrC,uCAAuC,
|
|
1
|
+
{"version":3,"file":"DataTableBlockRenderer.d.ts","sourceRoot":"","sources":["../../../src/data-table-explorer/worksheet/DataTableBlockRenderer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,uCAAuC,EAAC,MAAM,qBAAqB,CAAC;AAEjF,OAAO,EAAC,EAAE,EAAc,MAAM,OAAO,CAAC;AAQtC,eAAO,MAAM,sBAAsB,EAAE,EAAE,CACrC,uCAAuC,CA4FxC,CAAC"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { SpinnerPane } from '@sqlrooms/ui';
|
|
2
|
+
import { ScrollArea, ScrollBar, SpinnerPane } from '@sqlrooms/ui';
|
|
3
3
|
import { useCallback } from 'react';
|
|
4
4
|
import { useStoreWithMosaic } from '../../MosaicSlice';
|
|
5
5
|
import { DataTableSelectorEmptyState } from '../../components/DataTableSelector';
|
|
6
|
-
import { useDataTable } from '
|
|
6
|
+
import { useDataTable } from '@sqlrooms/db';
|
|
7
7
|
import { useTablesWithColumns } from '../../hooks/useTablesWithColumns';
|
|
8
8
|
import { DataTableExplorer } from '../DataTableExplorer';
|
|
9
9
|
import { DataTableBlockHeader } from './DataTableBlockHeader';
|
|
10
|
-
export const DataTableBlockRenderer = ({ blockId, blockInstanceId, blockType, caption, documentId, onTitleChange, readOnly, title, }) => {
|
|
10
|
+
export const DataTableBlockRenderer = ({ blockId, blockInstanceId, blockType, caption, documentId, onCaptionChange, onTitleChange, readOnly, title, }) => {
|
|
11
11
|
const connection = useStoreWithMosaic((state) => state.mosaic.connection);
|
|
12
12
|
const tables = useTablesWithColumns();
|
|
13
13
|
const selectedTable = useDataTable(title);
|
|
@@ -30,6 +30,6 @@ export const DataTableBlockRenderer = ({ blockId, blockInstanceId, blockType, ca
|
|
|
30
30
|
if (connection.status !== 'ready') {
|
|
31
31
|
return (_jsx("div", { className: "flex h-full min-h-0 flex-col", children: _jsx("div", { className: "text-muted-foreground flex min-h-0 flex-1 items-center justify-center p-4 text-sm", children: "Mosaic connection is not ready." }) }));
|
|
32
32
|
}
|
|
33
|
-
return (_jsx(DataTableExplorer, { pageSize: 25, selectionName: selectionName, tableName: selectedTable, children: _jsxs("div", { className: "flex h-full min-h-0 flex-col", children: [_jsx(DataTableBlockHeader, { caption: caption, selectedTable: selectedTable, readOnly: readOnly, tables: tables, onTableChange: handleTableChange }),
|
|
33
|
+
return (_jsx(DataTableExplorer, { pageSize: 25, selectionName: selectionName, tableName: selectedTable.table, children: _jsxs("div", { className: "flex h-full min-h-0 flex-col", children: [_jsx(DataTableBlockHeader, { caption: caption, onCaptionChange: onCaptionChange, selectedTable: selectedTable, readOnly: readOnly, tables: tables, onTableChange: handleTableChange }), _jsxs(ScrollArea, { className: "min-h-0 flex-1", children: [_jsxs(DataTableExplorer.Table, { children: [_jsx(DataTableExplorer.Header, {}), _jsx(DataTableExplorer.Rows, {})] }), _jsx(ScrollBar, { orientation: "horizontal" })] }), _jsx(DataTableExplorer.StatusBar, {})] }) }));
|
|
34
34
|
};
|
|
35
35
|
//# sourceMappingURL=DataTableBlockRenderer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTableBlockRenderer.js","sourceRoot":"","sources":["../../../src/data-table-explorer/worksheet/DataTableBlockRenderer.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"DataTableBlockRenderer.js","sourceRoot":"","sources":["../../../src/data-table-explorer/worksheet/DataTableBlockRenderer.tsx"],"names":[],"mappings":"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","sourcesContent":["import type {DataTable} from '@sqlrooms/db';\nimport type {BlockDocumentStatefulBlockRendererProps} from '@sqlrooms/documents';\nimport {ScrollArea, ScrollBar, SpinnerPane} from '@sqlrooms/ui';\nimport {FC, useCallback} from 'react';\nimport {useStoreWithMosaic} from '../../MosaicSlice';\nimport {DataTableSelectorEmptyState} from '../../components/DataTableSelector';\nimport {useDataTable} from '@sqlrooms/db';\nimport {useTablesWithColumns} from '../../hooks/useTablesWithColumns';\nimport {DataTableExplorer} from '../DataTableExplorer';\nimport {DataTableBlockHeader} from './DataTableBlockHeader';\n\nexport const DataTableBlockRenderer: FC<\n BlockDocumentStatefulBlockRendererProps\n> = ({\n blockId,\n blockInstanceId,\n blockType,\n caption,\n documentId,\n onCaptionChange,\n onTitleChange,\n readOnly,\n title,\n}) => {\n const connection = useStoreWithMosaic((state) => state.mosaic.connection);\n\n const tables = useTablesWithColumns();\n const selectedTable = useDataTable(title);\n\n const selectionName = `block-document:${documentId}:data-table:${blockId}:brush`;\n const selection = useStoreWithMosaic(\n (state) => state.mosaic.selections[selectionName],\n );\n const getSelection = useStoreWithMosaic((state) => state.mosaic.getSelection);\n const handleTableChange = useCallback(\n (table: DataTable) => {\n (selection ?? getSelection(selectionName, 'crossfilter')).reset();\n onTitleChange?.(table.table.toString());\n },\n [getSelection, onTitleChange, selection, selectionName],\n );\n\n if (!blockInstanceId || blockType !== 'data-table') {\n return (\n <div className=\"text-muted-foreground p-4 text-sm\">\n Unsupported stateful block type: {blockType || 'Unconfigured'}\n </div>\n );\n }\n\n if (!selectedTable) {\n return (\n <DataTableSelectorEmptyState\n disabled={readOnly || !onTitleChange}\n onChange={handleTableChange}\n tables={tables}\n />\n );\n }\n\n if (connection.status === 'loading') {\n return (\n <div className=\"flex h-full min-h-0 flex-col\">\n <SpinnerPane className=\"min-h-0 flex-1\" />\n </div>\n );\n }\n\n if (connection.status !== 'ready') {\n return (\n <div className=\"flex h-full min-h-0 flex-col\">\n <div className=\"text-muted-foreground flex min-h-0 flex-1 items-center justify-center p-4 text-sm\">\n Mosaic connection is not ready.\n </div>\n </div>\n );\n }\n\n return (\n <DataTableExplorer\n pageSize={25}\n selectionName={selectionName}\n tableName={selectedTable.table}\n >\n <div className=\"flex h-full min-h-0 flex-col\">\n <DataTableBlockHeader\n caption={caption}\n onCaptionChange={onCaptionChange}\n selectedTable={selectedTable}\n readOnly={readOnly}\n tables={tables}\n onTableChange={handleTableChange}\n />\n <ScrollArea className=\"min-h-0 flex-1\">\n <DataTableExplorer.Table>\n <DataTableExplorer.Header />\n <DataTableExplorer.Rows />\n </DataTableExplorer.Table>\n <ScrollBar orientation=\"horizontal\" />\n </ScrollArea>\n <DataTableExplorer.StatusBar />\n </div>\n </DataTableExplorer>\n );\n};\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,31 +7,44 @@ export { astToDOM, astToESM, parseSpec } from '@uwdata/mosaic-spec';
|
|
|
7
7
|
export type { Spec } from '@uwdata/mosaic-spec';
|
|
8
8
|
export { asc, column, desc, Query, sql } from '@uwdata/mosaic-sql';
|
|
9
9
|
export * as vg from '@uwdata/vgplot';
|
|
10
|
+
export { createDefaultMosaicConfig, createMosaicSlice, MosaicSliceConfig, type CreateMosaicSliceProps, type MosaicClientOptions, type MosaicPreAggregateOptions, type MosaicSliceState, type TrackedClient, } from './MosaicSlice';
|
|
11
|
+
export { useMosaicClient, type UseMosaicClientOptions } from './useMosaicClient';
|
|
10
12
|
export { MosaicDashboard, MosaicDashboardRoot, type MosaicDashboardProps, type MosaicDashboardRootProps, } from './dashboard/MosaicDashboard';
|
|
11
13
|
export { createMosaicDashboardBlockDefinition, type CreateMosaicDashboardBlockDefinitionOptions, type MosaicDashboardBlockRenderProps, } from './dashboard/createMosaicDashboardBlockDefinition';
|
|
12
14
|
export { DefaultMosaicDashboardBlock } from './dashboard/DefaultMosaicDashboardBlock';
|
|
13
15
|
export { useMosaicDashboardContext } from './dashboard/MosaicDashboardContext';
|
|
14
16
|
export { MosaicDashboardPanelErrorBoundary } from './dashboard/panel/MosaicDashboardPanelErrorBoundary';
|
|
17
|
+
export { MosaicDashboardPanelLayout } from './dashboard/panel/MosaicDashboardPanelLayout';
|
|
15
18
|
export { createDefaultMosaicDashboardPanelRenderers } from './dashboard/createDefaultMosaicDashboardPanelRenderers';
|
|
16
19
|
export { defaultAddPanelActions } from './dashboard/defaultPanelActions';
|
|
20
|
+
export { DataTableSelector, DataTableSelectorEmptyState, type DataTableSelectorProps, } from './components/DataTableSelector';
|
|
17
21
|
export { useSelectedOrFirstTable } from './dashboard/useSelectedOrFirstTable';
|
|
18
22
|
export { useTablesWithColumns } from './hooks/useTablesWithColumns';
|
|
19
|
-
export {
|
|
23
|
+
export { usePanelClientRegistration } from './dashboard/usePanelClientRegistration';
|
|
24
|
+
export { usePanelClients } from './dashboard/usePanelClients';
|
|
25
|
+
export { usePanelResetFilters, type UsePanelResetFiltersOptions, type UsePanelResetFiltersReturn, } from './dashboard/hooks/usePanelResetFilters';
|
|
26
|
+
export { useDashboardResetFilters, type UseDashboardResetFiltersOptions, type UseDashboardResetFiltersReturn, } from './dashboard/hooks/useDashboardResetFilters';
|
|
27
|
+
export { ResetFiltersButton, type ResetFiltersButtonProps, } from './dashboard/components/ResetFiltersButton';
|
|
20
28
|
export { addDataTableExplorerPanelAction } from './data-table-explorer/addDataTableExplorerPanelAction';
|
|
21
29
|
export { addChartPanelAction } from './charts/addChartPanelAction';
|
|
30
|
+
export { createMosaicDashboardCommands, MOSAIC_DASHBOARD_COMMAND_IDS, } from './dashboard/MosaicDashboardCommands';
|
|
22
31
|
export { createMosaicDashboardDataTableExplorerPanelConfig, createMosaicDashboardChartPanelConfig, createDefaultMosaicDashboardConfig, createMosaicDashboardSlice, getMosaicDashboardDockId, getMosaicDashboardGridId, getMosaicDashboardPanelId, getMosaicDashboardSelectionName, isChartPanelConfig, MOSAIC_DASHBOARD_PANEL, MosaicDashboardSliceConfig, useStoreWithMosaicDashboard, } from './dashboard/MosaicDashboardSlice';
|
|
23
32
|
export { MOSAIC_DASHBOARD_DATA_TABLE_EXPLORER_PANEL_TYPE, MOSAIC_DASHBOARD_CHART_PANEL_TYPE, MOSAIC_DASHBOARD_CHART_PANEL_TYPE as MOSAIC_DASHBOARD_VGPLOT_PANEL_TYPE, MosaicDashboardEntry, MosaicDashboardPanelConfig, } from './dashboard/dashboard-types';
|
|
24
33
|
export type { MosaicDashboardAddPanelAction, MosaicDashboardAddPanelActionContext, OnStartDashboard, } from './dashboard/action-types';
|
|
25
34
|
export type { CreateMosaicDashboardSliceProps, MosaicDashboardPanelRenderer, MosaicDashboardPanelRendererProps, MosaicDashboardSliceConfig as MosaicDashboardSliceConfigType, MosaicDashboardSliceState, MosaicDashboardStoreState, } from './dashboard/MosaicDashboardSlice';
|
|
26
35
|
export type { MosaicDashboardEntry as MosaicDashboardEntryType, MosaicDashboardPanelConfig as MosaicDashboardPanelConfigType, ChartPanelConfig, } from './dashboard/dashboard-types';
|
|
27
36
|
export type { MosaicDashboardLayoutType, MosaicDashboardPanelSource, DataTableExplorerPanelConfig, } from './dashboard/core-types';
|
|
28
|
-
export { createMosaicColorLegendPlot, MosaicColorLegend, type MosaicColorLegendProps, } from './MosaicColorLegend';
|
|
29
|
-
export { createDefaultMosaicConfig, createMosaicSlice, MosaicSliceConfig, type CreateMosaicSliceProps, type MosaicClientOptions, type MosaicPreAggregateOptions, type MosaicSliceState, type TrackedClient, } from './MosaicSlice';
|
|
30
|
-
export { DataPointLimitError } from './DataPointLimitError';
|
|
31
37
|
export { MosaicChartView, type MosaicChartViewProps, } from './charts/MosaicChartView';
|
|
38
|
+
export { MosaicChart } from './charts/MosaicChart';
|
|
39
|
+
export { MosaicSpecChart } from './MosaicChart';
|
|
40
|
+
export { VgPlotChart } from './VgPlotChart';
|
|
32
41
|
export { MosaicChartSettingsPanel, type MosaicChartSettingsPanelProps, } from './charts/MosaicChartSettingsPanel';
|
|
42
|
+
export { createMosaicColorLegendPlot, MosaicColorLegend, type MosaicColorLegendProps, } from './MosaicColorLegend';
|
|
43
|
+
export { ResponsivePlot, type PlotSize, type ResponsivePlotProps, } from './ResponsivePlot';
|
|
33
44
|
export { useBrushSelectionParams } from './charts/useBrushSelectionParams';
|
|
34
45
|
export { useChartRetainer, useChartRetainerByKey, } from './charts/useChartRetainer';
|
|
46
|
+
export { useParseChartConfig } from './charts/useParseChartConfig';
|
|
47
|
+
export { DataPointLimitError } from './DataPointLimitError';
|
|
35
48
|
export { DEFAULT_CHART_MAX_DATA_POINTS, assertChartDataPolicy, createChartRuntimeIssueFromError, getQueryResultRowCount, resolveChartDataPolicy, type ChartDataPolicy, type ChartDataPolicyOverride, type ChartDataPolicyContext, type ChartRuntimeIssue, type ChartRuntimeIssueContext, type ChartRuntimeIssueReporter, } from './chart-runtime';
|
|
36
49
|
export { DataTableExplorer, type DataTableExplorerCompoundHeaderProps, type DataTableExplorerCompoundResetButtonProps, type DataTableExplorerCompoundRowsProps, type DataTableExplorerCompoundStatusBarProps, type DataTableExplorerCompoundTableProps, type DataTableExplorerProps, type DataTableExplorerRootProps, } from './data-table-explorer/DataTableExplorer';
|
|
37
50
|
export { DataTableBlockRenderer } from './data-table-explorer/worksheet/DataTableBlockRenderer';
|
|
@@ -39,24 +52,9 @@ export { DataTableExplorerHeader, type DataTableExplorerHeaderProps, } from './d
|
|
|
39
52
|
export { DataTableExplorerRows, type DataTableExplorerRowsProps, } from './data-table-explorer/DataTableExplorerRows';
|
|
40
53
|
export { DataTableExplorerStatusBar, type DataTableExplorerStatusBarProps, } from './data-table-explorer/DataTableExplorerStatusBar';
|
|
41
54
|
export { useDataTableExplorer } from './data-table-explorer/useDataTableExplorer';
|
|
42
|
-
export { ResponsivePlot, type PlotSize, type ResponsivePlotProps, } from './ResponsivePlot';
|
|
43
|
-
export { useMosaicClient, type UseMosaicClientOptions } from './useMosaicClient';
|
|
44
|
-
export { VgPlotChart } from './VgPlotChart';
|
|
45
|
-
export { DASHBOARD_AI_INSTRUCTIONS, MAP_TOOL_KEY, createDashboardAgentTool, createDashboardAiTools, } from './ai/ai';
|
|
46
|
-
export type { CreateDashboardAgentToolOptions, CreateDashboardAiToolsOptions, DashboardAgentResult, DashboardAgentRunResult, DashboardAgentToolCall, DashboardAiAdapter, DashboardAiStore, DashboardAiTable, CreateDashboardToolDepsOptions, } from './ai/ai';
|
|
47
|
-
export { MosaicSpecChart } from './MosaicChart';
|
|
48
|
-
export { MosaicChartBuilder } from './MosaicChartBuilder';
|
|
49
|
-
export { useMosaicEditorContext } from './editor/MosaicEditorContext';
|
|
50
|
-
export { getCachedMosaicSchema, loadMosaicSchema, preloadMosaicSchema, } from './editor/mosaicSchema';
|
|
51
|
-
export { useMosaicChartEditor } from './editor/useMosaicChartEditor';
|
|
52
|
-
export type { MosaicChartContainerProps } from './editor/MosaicChartContainer';
|
|
53
|
-
export type { MosaicChartDisplayProps } from './editor/MosaicChartDisplay';
|
|
54
|
-
export type { MosaicChartEditorActionsProps } from './editor/MosaicChartEditorActions';
|
|
55
|
-
export type { MosaicCodeMirrorEditorProps } from './editor/MosaicCodeMirrorEditor';
|
|
56
|
-
export type { MosaicSpecEditorPanelProps } from './editor/MosaicSpecEditorPanel';
|
|
57
|
-
export type { MosaicEditorActions, MosaicEditorContextValue, MosaicEditorState, OnMosaicSpecChange, UseMosaicChartEditorOptions, UseMosaicChartEditorReturn, } from './editor/types';
|
|
58
55
|
export { getDataTableExplorerTableWidth, DATA_TABLE_EXPLORER_DEFAULT_COLUMN_WIDTH_PX, DATA_TABLE_EXPLORER_ROW_NUMBER_COLUMN_WIDTH_PX, DATA_TABLE_EXPLORER_UNSUPPORTED_COLUMN_WIDTH_PX, } from './data-table-explorer/layout';
|
|
59
|
-
export type { DataTableExplorerCategoryBucket, DataTableExplorerCategorySummary, DataTableExplorerColumnKind, DataTableExplorerColumnState, DataTableExplorerHistogramSummary, DataTableExplorerOptions, DataTableExplorerPaginationState, DataTableExplorerSorting, DataTableExplorerSummaryState, UseDataTableExplorerReturn, } from './data-table-explorer/types';
|
|
56
|
+
export type { DataTableExplorerCategoryBucket, DataTableExplorerCategorySummary, DataTableExplorerColumnKind, DataTableExplorerColumnState, DataTableExplorerHistogramSummary, DataTableExplorerOptions, DataTableExplorerPaginationState, DataTableExplorerSorting, DataTableExplorerSummaryState, DataTableExplorerTableReference, UseDataTableExplorerReturn, } from './data-table-explorer/types';
|
|
57
|
+
export { MosaicChartBuilder } from './MosaicChartBuilder';
|
|
60
58
|
export type { ChartBuilderActionsProps } from './chart-builders/ChartBuilderActions';
|
|
61
59
|
export { ChartBuilderActions } from './chart-builders/ChartBuilderActions';
|
|
62
60
|
export type { ChartBuilderContentProps } from './chart-builders/ChartBuilderContent';
|
|
@@ -69,23 +67,49 @@ export type { ChartBuilderRootProps } from './chart-builders/ChartBuilderRoot';
|
|
|
69
67
|
export { ChartBuilderRoot } from './chart-builders/ChartBuilderRoot';
|
|
70
68
|
export type { ChartBuilderFieldsProps } from './chart-builders/ChartBuilderFields';
|
|
71
69
|
export { ChartBuilderFields } from './chart-builders/ChartBuilderFields';
|
|
70
|
+
export type { ChartBuilderTypeGridProps } from './chart-builders/ChartBuilderTypeGrid';
|
|
71
|
+
export { ChartBuilderTypeGrid } from './chart-builders/ChartBuilderTypeGrid';
|
|
72
72
|
export { Field } from './components/Field';
|
|
73
73
|
export { TableSelector } from './components/TableSelector';
|
|
74
74
|
export { ColumnSelector } from './components/ColumnSelector';
|
|
75
75
|
export { MultiFieldSelector } from './components/MultiFieldSelector';
|
|
76
76
|
export { ColumnsProvider, useColumnsContext, type ColumnsContextValue, } from './components/ColumnsContext';
|
|
77
|
-
export type {
|
|
78
|
-
export { ChartBuilderTypeGrid } from './chart-builders/ChartBuilderTypeGrid';
|
|
77
|
+
export type { FieldSelectorInputProps } from './components/FieldSelectorInput';
|
|
79
78
|
export { buildChartTitleForSpec } from './chart-builders/chartSpecTitle';
|
|
80
|
-
export { boxPlotChartType, bubbleChartChartType, countPlotChartType, createDefaultChartTypes, customSpecChartType, heatmapChartType, histogramChartType, isSpecChartType, isComponentChartType, lineChartChartType, mosaicChartTypes, ChartConfig, HistogramChartSettings, LineChartSettings, CountPlotChartSettings, BubbleChartSettings, HeatmapChartSettings, BoxPlotChartSettings, BaseChartToolParameters, validateColumnExists, HistogramToolParameters, LineChartToolParameters, CountPlotToolParameters, HeatmapToolParameters, BubbleChartToolParameters, BoxPlotToolParameters, createHistogramAiTool, createLineChartAiTool, createCountPlotAiTool, createHeatmapAiTool, createBubbleChartAiTool, createBoxPlotAiTool, createChartTools, createDataTableExplorerTool, createListPanelsTool, createRemovePanelTool, DataTableExplorerToolParameters, ListPanelsToolParameters, RemovePanelToolParameters, } from './charts/chart-types';
|
|
81
|
-
export type { ChartSettings, ChartType, ChartToolExecutionContext, DashboardToolDeps, ResolvedChartResources, CreateChartParams, CreateChartResult, HistogramToolParams, LineChartToolParams, CountPlotToolParams, HeatmapToolParams, BubbleChartToolParams, BoxPlotToolParams, DataTableExplorerToolParams, ListPanelsToolParams, RemovePanelToolParams, } from './charts/chart-types';
|
|
82
79
|
export { buildChartTypeTitle, canCreateChartFromType, } from './chart-builders/chartTypeUtils';
|
|
83
|
-
export {
|
|
84
|
-
export type { FieldSelectorInputProps } from './components/FieldSelectorInput';
|
|
80
|
+
export { boxPlotChartType, scatterPlotChartType, countPlotChartType, createDefaultChartTypes, customSpecChartType, heatmapChartType, histogramChartType, isSpecChartType, isComponentChartType, lineChartChartType, mosaicChartTypes, ChartConfig, HistogramChartSettings, LineChartSettings, CountPlotChartSettings, ScatterPlotChartSettings, HeatmapChartSettings, BoxPlotChartSettings, } from './charts/chart-types';
|
|
85
81
|
export type { ChartBuilderColumn, ChartBuilderDashboardPanelOutput, ChartBuilderField, ChartSpec, ChartTypeDefinition, } from './charts/chart-types/base-types';
|
|
86
|
-
export {
|
|
87
|
-
export {
|
|
88
|
-
export {
|
|
82
|
+
export type { ChartSettings, ChartType, ChartToolExecutionContext, ChartToolParams, DashboardToolDeps, } from './charts/chart-types';
|
|
83
|
+
export type { ResolvedChartResources, CreateChartParams, CreateChartResult, } from './ai/tool-types';
|
|
84
|
+
export { NUMERIC_COLUMN_TYPES, QUANTITATIVE_COLUMN_TYPES, TEMPORAL_COLUMN_TYPES, } from './column-types-utils';
|
|
85
|
+
export { BaseChartToolInput } from './ai/tool-schemas';
|
|
86
|
+
export { HistogramToolInput, LineChartToolInput, CountPlotToolInput, HeatmapToolInput, ScatterPlotToolInput, BoxPlotToolInput, } from './charts/chart-types';
|
|
87
|
+
export { createHistogramAiTool, createLineChartAiTool, createCountPlotAiTool, createHeatmapAiTool, createScatterPlotAiTool, createBoxPlotAiTool, createChartTools, } from './charts/chart-types';
|
|
88
|
+
export { createDataTableExplorerTool, DataTableExplorerToolInput, } from './ai/createDataTableExplorerTool';
|
|
89
|
+
export { MAP_TOOL_KEY } from './ai/constants';
|
|
90
|
+
export { createDashboardAiTools, type CreateDashboardAiToolsOptions, } from './ai/dashboard/createDashboardAiTools';
|
|
91
|
+
export type { ExtraDashboardAiToolsFactory, ExtraDashboardAiToolsParams, } from './ai/dashboard/dashboard-types';
|
|
92
|
+
export { createDashboardAgentTool } from './ai/dashboard/createDashboardAgentTool';
|
|
93
|
+
export { BLOCK_DOCUMENT_CHART_TOOL_PREFIX, KnownMosaicBlockDocumentTools, } from './ai/block-document/constants';
|
|
94
|
+
export { createAddMosaicDashboardBlockTool, type CreateAddMosaicDashboardBlockToolOptions, } from './ai/block-document/createAddMosaicDashboardBlockTool';
|
|
95
|
+
export { createBlockDocumentChartTools, type CreateBlockDocumentChartToolsParams, } from './ai/block-document/createBlockDocumentChartTools';
|
|
96
|
+
export { createBlockDocumentDataTableExplorerTool, type CreateBlockDocumentDataTableExplorerToolParams, } from './ai/block-document/createBlockDocumentDataTableExplorerTool';
|
|
97
|
+
export type { AiStore, BaseAgentToolOptions, AgentToolCall, AgentRunResult, } from './ai/types';
|
|
98
|
+
export type { DatabaseAiAdapter } from './ai/database-types';
|
|
99
|
+
export type { CreateDashboardAgentToolOptions, DashboardAgentResult, DashboardAiAdapter, } from './ai/dashboard/dashboard-types';
|
|
100
|
+
export { ensurePanel, ensureTable, ensureNoOverride } from './ai/tool-helpers';
|
|
101
|
+
export { AiAgentError } from './ai/errors';
|
|
102
|
+
export type { ToolOutput } from './ai/tool-types';
|
|
89
103
|
export { ChartBlockRenderer } from './charts/worksheet/ChartBlockRenderer';
|
|
90
|
-
export {
|
|
104
|
+
export { MosaicCodeMirrorEditor } from './editor/MosaicCodeMirrorEditor';
|
|
105
|
+
export { useMosaicEditorContext } from './editor/MosaicEditorContext';
|
|
106
|
+
export { getCachedMosaicSchema, loadMosaicSchema, preloadMosaicSchema, } from './editor/mosaicSchema';
|
|
107
|
+
export { useMosaicChartEditor } from './editor/useMosaicChartEditor';
|
|
108
|
+
export type { MosaicChartContainerProps } from './editor/MosaicChartContainer';
|
|
109
|
+
export type { MosaicChartDisplayProps } from './editor/MosaicChartDisplay';
|
|
110
|
+
export type { MosaicChartEditorActionsProps } from './editor/MosaicChartEditorActions';
|
|
111
|
+
export type { MosaicCodeMirrorEditorProps } from './editor/MosaicCodeMirrorEditor';
|
|
112
|
+
export type { MosaicSpecEditorPanelProps } from './editor/MosaicSpecEditorPanel';
|
|
113
|
+
export type { MosaicEditorActions, MosaicEditorContextValue, MosaicEditorState, OnMosaicSpecChange, UseMosaicChartEditorOptions, UseMosaicChartEditorReturn, } from './editor/types';
|
|
114
|
+
export { getTableReference } from './utils/table-lookup';
|
|
91
115
|
//# sourceMappingURL=index.d.ts.map
|