@sqlrooms/mosaic 0.29.0-rc.7 → 0.29.0-rc.8
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 +134 -0
- 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/ai.d.ts +9 -4
- package/dist/ai/ai.d.ts.map +1 -1
- package/dist/ai/ai.js +91 -49
- package/dist/ai/ai.js.map +1 -1
- package/dist/ai.d.ts.map +1 -1
- 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 +20 -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/MosaicChartTypeSelector.d.ts.map +1 -1
- package/dist/charts/chart-settings/MosaicChartTypeSelector.js +11 -4
- package/dist/charts/chart-settings/MosaicChartTypeSelector.js.map +1 -1
- package/dist/charts/chart-types/base-types.d.ts +17 -6
- package/dist/charts/chart-types/base-types.d.ts.map +1 -1
- package/dist/charts/chart-types/base-types.js +3 -0
- package/dist/charts/chart-types/base-types.js.map +1 -1
- package/dist/charts/chart-types/box-plot/renderer/BoxPlotClient.d.ts.map +1 -1
- package/dist/charts/chart-types/box-plot/renderer/BoxPlotClient.js +3 -8
- package/dist/charts/chart-types/box-plot/renderer/BoxPlotClient.js.map +1 -1
- 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/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 +65 -34
- package/dist/charts/chart-types/count-plot/spec.js.map +1 -1
- package/dist/charts/chart-types/count-plot/tool.js +1 -1
- package/dist/charts/chart-types/count-plot/tool.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/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 +25 -0
- package/dist/charts/chart-types/errors.d.ts.map +1 -1
- package/dist/charts/chart-types/errors.js +38 -0
- package/dist/charts/chart-types/errors.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 +53 -21
- package/dist/charts/chart-types/heatmap/spec.js.map +1 -1
- package/dist/charts/chart-types/heatmap/tool.js +2 -2
- package/dist/charts/chart-types/heatmap/tool.js.map +1 -1
- 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/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 +50 -27
- package/dist/charts/chart-types/histogram/spec.js.map +1 -1
- package/dist/charts/chart-types/histogram/tool.d.ts +2 -0
- package/dist/charts/chart-types/histogram/tool.d.ts.map +1 -1
- package/dist/charts/chart-types/histogram/tool.js +1 -1
- package/dist/charts/chart-types/histogram/tool.js.map +1 -1
- package/dist/charts/chart-types/index.d.ts +4 -4
- package/dist/charts/chart-types/index.js +4 -4
- 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/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 +97 -65
- package/dist/charts/chart-types/line-chart/spec.js.map +1 -1
- package/dist/charts/chart-types/line-chart/tool.d.ts +2 -0
- package/dist/charts/chart-types/line-chart/tool.d.ts.map +1 -1
- package/dist/charts/chart-types/line-chart/tool.js +1 -1
- 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/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/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 +24 -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 +81 -0
- package/dist/charts/chart-types/scatter-plot/spec.js.map +1 -0
- package/dist/charts/chart-types/{bubble-chart → scatter-plot}/tool.d.ts +3 -3
- package/dist/charts/chart-types/{bubble-chart → scatter-plot}/tool.d.ts.map +1 -1
- package/dist/charts/chart-types/{bubble-chart → scatter-plot}/tool.js +17 -13
- package/dist/charts/chart-types/scatter-plot/tool.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 +2 -2
- 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 +14 -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/Combobox.d.ts +45 -0
- package/dist/components/Combobox.d.ts.map +1 -0
- package/dist/components/Combobox.js +58 -0
- package/dist/components/Combobox.js.map +1 -0
- 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/components/useCombobox.d.ts +23 -0
- package/dist/components/useCombobox.d.ts.map +1 -0
- package/dist/components/useCombobox.js +26 -0
- package/dist/components/useCombobox.js.map +1 -0
- 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/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/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/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 +12 -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/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.map +1 -1
- package/dist/data-table-explorer/DataTableExplorerCategoryClient.js +1 -0
- package/dist/data-table-explorer/DataTableExplorerCategoryClient.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 +22 -7
- 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 +5 -1
- package/dist/data-table-explorer/dataTableExplorerController.d.ts.map +1 -1
- package/dist/data-table-explorer/dataTableExplorerController.js +5 -2
- 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 +30 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerLifecycles.d.ts.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerLifecycles.js +120 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerLifecycles.js.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerQueryState.d.ts +28 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerQueryState.d.ts.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerQueryState.js +40 -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 +6 -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 +12 -275
- package/dist/data-table-explorer/useDataTableExplorer.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 +3 -3
- package/dist/data-table-explorer/worksheet/DataTableBlockRenderer.js.map +1 -1
- package/dist/index.d.ts +8 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/useVgPlotChartRender.d.ts.map +1 -1
- package/dist/useVgPlotChartRender.js +125 -24
- 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/package.json +14 -14
- 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.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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createDataTableExplorerStore.js","sourceRoot":"","sources":["../../src/data-table-explorer/createDataTableExplorerStore.ts"],"names":[],"mappings":"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","sourcesContent":["import {castDraft, produce} from 'immer';\nimport type * as arrow from 'apache-arrow';\nimport type {Dispatch, SetStateAction} from 'react';\nimport {createStore} from 'zustand/vanilla';\nimport type {DataTableExplorerCountState} from './DataTableExplorerCountClient';\nimport type {DataTableExplorerPageState} from './DataTableExplorerPageClient';\nimport type {\n DataTableExplorerPaginationState,\n DataTableExplorerSorting,\n DataTableExplorerSummaryState,\n} from './types';\nimport {\n createEmptySummaryState,\n normalizeDataTableExplorerPagination,\n} from './utils';\n\nfunction resolveSetStateAction<T>(next: SetStateAction<T>, previous: T): T {\n // Preserve React-style setter semantics so hook callers can pass either\n // a concrete value or an updater function to the local dataTableExplorer store.\n return typeof next === 'function'\n ? (next as (value: T) => T)(previous)\n : next;\n}\n\nexport type DataTableExplorerStoreState = {\n filteredCount: DataTableExplorerCountState;\n lastNonEmptyPageTable?: {\n datasetId: string;\n pageTable: arrow.Table;\n };\n page: DataTableExplorerPageState;\n pagination: DataTableExplorerPaginationState;\n schema: {\n error?: Error;\n fields: arrow.Field[];\n isLoading: boolean;\n tableName?: string;\n };\n setFilteredCount: (state: DataTableExplorerCountState) => void;\n setPage: (state: DataTableExplorerPageState) => void;\n setPagination: Dispatch<SetStateAction<DataTableExplorerPaginationState>>;\n setSchemaError: (error?: Error, tableName?: string) => void;\n setSchemaLoading: (isLoading: boolean, tableName?: string) => void;\n setSchemaSuccess: (fields: arrow.Field[], tableName?: string) => void;\n setSorting: Dispatch<SetStateAction<DataTableExplorerSorting>>;\n setSummary: (\n fieldName: string,\n summary: DataTableExplorerSummaryState,\n ) => void;\n setTotalCount: (state: DataTableExplorerCountState) => void;\n sorting: DataTableExplorerSorting;\n summaries: Record<string, DataTableExplorerSummaryState>;\n syncPageSize: (pageSize: number) => void;\n totalCount: DataTableExplorerCountState;\n clearSummaries: () => void;\n initializeSummaries: (fields: arrow.Field[]) => void;\n resetPageIndex: () => void;\n};\n\nexport type DataTableExplorerStore = ReturnType<\n typeof createDataTableExplorerStore\n>;\n\n/**\n * Creates a dataTableExplorer-local vanilla Zustand store that aggregates schema, row,\n * count, and summary state for a single `useDataTableExplorer()` instance.\n */\nexport function createDataTableExplorerStore(options: {\n initialSorting?: DataTableExplorerSorting;\n pageSize: number;\n}) {\n const {initialSorting = [], pageSize} = options;\n\n return createStore<DataTableExplorerStoreState>((set) => ({\n filteredCount: {isLoading: false},\n lastNonEmptyPageTable: undefined,\n page: {isLoading: false},\n pagination: normalizeDataTableExplorerPagination({pageIndex: 0, pageSize}),\n schema: {\n fields: [],\n isLoading: false,\n },\n setFilteredCount: (nextState) => {\n set((state) =>\n produce(state, (draft) => {\n draft.filteredCount = nextState;\n }),\n );\n },\n setPage: (nextState) => {\n set((state) =>\n produce(state, (draft) => {\n draft.page = castDraft(nextState);\n if (\n nextState.datasetId &&\n nextState.pageTable &&\n nextState.pageTable.numRows > 0\n ) {\n draft.lastNonEmptyPageTable = {\n datasetId: nextState.datasetId,\n pageTable: castDraft(nextState.pageTable),\n };\n }\n }),\n );\n },\n setPagination: (next) => {\n set((state) =>\n produce(state, (draft) => {\n draft.pagination = normalizeDataTableExplorerPagination(\n resolveSetStateAction(next, state.pagination),\n );\n }),\n );\n },\n setSchemaError: (error, tableName) => {\n set((state) =>\n produce(state, (draft) => {\n draft.schema.error = error;\n draft.schema.isLoading = false;\n draft.schema.tableName = tableName;\n }),\n );\n },\n setSchemaLoading: (isLoading, tableName) => {\n set((state) =>\n produce(state, (draft) => {\n if (tableName !== undefined && draft.schema.tableName !== tableName) {\n draft.schema.fields = [];\n }\n draft.schema.isLoading = isLoading;\n draft.schema.tableName = tableName;\n if (isLoading) {\n draft.schema.error = undefined;\n }\n }),\n );\n },\n setSchemaSuccess: (fields, tableName) => {\n set((state) =>\n produce(state, (draft) => {\n draft.schema.error = undefined;\n draft.schema.fields = fields;\n draft.schema.isLoading = false;\n draft.schema.tableName = tableName;\n }),\n );\n },\n setSorting: (next) => {\n set((state) =>\n produce(state, (draft) => {\n draft.sorting = resolveSetStateAction(next, state.sorting);\n draft.pagination.pageIndex = 0;\n }),\n );\n },\n setSummary: (fieldName, summary) => {\n set((state) =>\n produce(state, (draft) => {\n draft.summaries[fieldName] = summary;\n }),\n );\n },\n setTotalCount: (nextState) => {\n set((state) =>\n produce(state, (draft) => {\n draft.totalCount = nextState;\n }),\n );\n },\n sorting: initialSorting,\n summaries: {},\n syncPageSize: (nextPageSize) => {\n set((state) =>\n produce(state, (draft) => {\n if (draft.pagination.pageSize === nextPageSize) {\n return;\n }\n draft.pagination = normalizeDataTableExplorerPagination({\n pageIndex: 0,\n pageSize: nextPageSize,\n });\n }),\n );\n },\n totalCount: {isLoading: false},\n clearSummaries: () => {\n set((state) =>\n produce(state, (draft) => {\n draft.summaries = {};\n }),\n );\n },\n initializeSummaries: (fields) => {\n set((state) =>\n produce(state, (draft) => {\n draft.summaries = Object.fromEntries(\n fields.map((field) => [field.name, createEmptySummaryState(field)]),\n );\n }),\n );\n },\n resetPageIndex: () => {\n set((state) =>\n produce(state, (draft) => {\n draft.pagination = normalizeDataTableExplorerPagination({\n ...draft.pagination,\n pageIndex: 0,\n });\n }),\n );\n },\n }));\n}\n"]}
|
|
1
|
+
{"version":3,"file":"createDataTableExplorerStore.js","sourceRoot":"","sources":["../../src/data-table-explorer/createDataTableExplorerStore.ts"],"names":[],"mappings":"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","sourcesContent":["import {castDraft, produce} from 'immer';\nimport type * as arrow from 'apache-arrow';\nimport type {Dispatch, SetStateAction} from 'react';\nimport {createStore} from 'zustand/vanilla';\nimport type {DataTableExplorerCountState} from './DataTableExplorerCountClient';\nimport type {DataTableExplorerPageState} from './DataTableExplorerPageClient';\nimport type {\n DataTableExplorerPaginationState,\n DataTableExplorerSorting,\n DataTableExplorerSummaryState,\n} from './types';\nimport {\n createEmptySummaryState,\n normalizeDataTableExplorerPagination,\n} from './utils';\n\nfunction resolveSetStateAction<T>(next: SetStateAction<T>, previous: T): T {\n // Preserve React-style setter semantics so hook callers can pass either\n // a concrete value or an updater function to the local dataTableExplorer store.\n return typeof next === 'function'\n ? (next as (value: T) => T)(previous)\n : next;\n}\n\nimport type {MosaicClient} from '@uwdata/mosaic-core';\n\nexport type DataTableExplorerStoreState = {\n client: MosaicClient | null;\n filteredCount: DataTableExplorerCountState;\n lastNonEmptyPageTable?: {\n datasetId: string;\n pageTable: arrow.Table;\n };\n page: DataTableExplorerPageState;\n pagination: DataTableExplorerPaginationState;\n schema: {\n error?: Error;\n fields: arrow.Field[];\n isLoading: boolean;\n tableName?: string;\n };\n setClient: (client: MosaicClient | null) => void;\n setFilteredCount: (state: DataTableExplorerCountState) => void;\n setPage: (state: DataTableExplorerPageState) => void;\n setPagination: Dispatch<SetStateAction<DataTableExplorerPaginationState>>;\n setSchemaError: (error?: Error, tableName?: string) => void;\n setSchemaLoading: (isLoading: boolean, tableName?: string) => void;\n setSchemaSuccess: (fields: arrow.Field[], tableName?: string) => void;\n setSorting: Dispatch<SetStateAction<DataTableExplorerSorting>>;\n setSummary: (\n fieldName: string,\n summary: DataTableExplorerSummaryState,\n ) => void;\n setTotalCount: (state: DataTableExplorerCountState) => void;\n sorting: DataTableExplorerSorting;\n summaries: Record<string, DataTableExplorerSummaryState>;\n syncPageSize: (pageSize: number) => void;\n totalCount: DataTableExplorerCountState;\n clearSummaries: () => void;\n initializeSummaries: (fields: arrow.Field[]) => void;\n resetPageIndex: () => void;\n};\n\nexport type DataTableExplorerStore = ReturnType<\n typeof createDataTableExplorerStore\n>;\n\n/**\n * Creates a dataTableExplorer-local vanilla Zustand store that aggregates schema, row,\n * count, and summary state for a single `useDataTableExplorer()` instance.\n */\nexport function createDataTableExplorerStore(options: {\n initialSorting?: DataTableExplorerSorting;\n pageSize: number;\n}) {\n const {initialSorting = [], pageSize} = options;\n\n return createStore<DataTableExplorerStoreState>((set) => ({\n client: null,\n filteredCount: {isLoading: false},\n lastNonEmptyPageTable: undefined,\n page: {isLoading: false},\n pagination: normalizeDataTableExplorerPagination({pageIndex: 0, pageSize}),\n schema: {\n fields: [],\n isLoading: false,\n },\n setClient: (client) => {\n set((state) =>\n produce(state, (draft) => {\n draft.client = client as any;\n }),\n );\n },\n setFilteredCount: (nextState) => {\n set((state) =>\n produce(state, (draft) => {\n draft.filteredCount = nextState;\n }),\n );\n },\n setPage: (nextState) => {\n set((state) =>\n produce(state, (draft) => {\n draft.page = castDraft(nextState);\n if (\n nextState.datasetId &&\n nextState.pageTable &&\n nextState.pageTable.numRows > 0\n ) {\n draft.lastNonEmptyPageTable = {\n datasetId: nextState.datasetId,\n pageTable: castDraft(nextState.pageTable),\n };\n }\n }),\n );\n },\n setPagination: (next) => {\n set((state) =>\n produce(state, (draft) => {\n draft.pagination = normalizeDataTableExplorerPagination(\n resolveSetStateAction(next, state.pagination),\n );\n }),\n );\n },\n setSchemaError: (error, tableName) => {\n set((state) =>\n produce(state, (draft) => {\n draft.schema.error = error;\n draft.schema.isLoading = false;\n draft.schema.tableName = tableName;\n }),\n );\n },\n setSchemaLoading: (isLoading, tableName) => {\n set((state) =>\n produce(state, (draft) => {\n if (tableName !== undefined && draft.schema.tableName !== tableName) {\n draft.schema.fields = [];\n }\n draft.schema.isLoading = isLoading;\n draft.schema.tableName = tableName;\n if (isLoading) {\n draft.schema.error = undefined;\n }\n }),\n );\n },\n setSchemaSuccess: (fields, tableName) => {\n set((state) =>\n produce(state, (draft) => {\n draft.schema.error = undefined;\n draft.schema.fields = fields;\n draft.schema.isLoading = false;\n draft.schema.tableName = tableName;\n }),\n );\n },\n setSorting: (next) => {\n set((state) =>\n produce(state, (draft) => {\n draft.sorting = resolveSetStateAction(next, state.sorting);\n draft.pagination.pageIndex = 0;\n }),\n );\n },\n setSummary: (fieldName, summary) => {\n set((state) =>\n produce(state, (draft) => {\n draft.summaries[fieldName] = summary;\n }),\n );\n },\n setTotalCount: (nextState) => {\n set((state) =>\n produce(state, (draft) => {\n draft.totalCount = nextState;\n }),\n );\n },\n sorting: initialSorting,\n summaries: {},\n syncPageSize: (nextPageSize) => {\n set((state) =>\n produce(state, (draft) => {\n if (draft.pagination.pageSize === nextPageSize) {\n return;\n }\n draft.pagination = normalizeDataTableExplorerPagination({\n pageIndex: 0,\n pageSize: nextPageSize,\n });\n }),\n );\n },\n totalCount: {isLoading: false},\n clearSummaries: () => {\n set((state) =>\n produce(state, (draft) => {\n draft.summaries = {};\n }),\n );\n },\n initializeSummaries: (fields) => {\n set((state) =>\n produce(state, (draft) => {\n draft.summaries = Object.fromEntries(\n fields.map((field) => [field.name, createEmptySummaryState(field)]),\n );\n }),\n );\n },\n resetPageIndex: () => {\n set((state) =>\n produce(state, (draft) => {\n draft.pagination = normalizeDataTableExplorerPagination({\n ...draft.pagination,\n pageIndex: 0,\n });\n }),\n );\n },\n }));\n}\n"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import type { DataTableExplorerPanelRendererProps } from '../../dashboard/MosaicDashboardSlice';
|
|
3
|
+
export declare const MosaicDashboardDataTableExplorerHeaderActions: FC<DataTableExplorerPanelRendererProps>;
|
|
4
|
+
//# sourceMappingURL=MosaicDashboardDataTableExplorerHeaderActions.d.ts.map
|
package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerHeaderActions.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MosaicDashboardDataTableExplorerHeaderActions.d.ts","sourceRoot":"","sources":["../../../src/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerHeaderActions.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,EAAC,MAAM,OAAO,CAAC;AAI9B,OAAO,KAAK,EAAC,mCAAmC,EAAC,MAAM,sCAAsC,CAAC;AAE9F,eAAO,MAAM,6CAA6C,EAAE,EAAE,CAC5D,mCAAmC,CAepC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { usePanelClients } from '../../dashboard/usePanelClients';
|
|
3
|
+
import { usePanelResetFilters } from '../../dashboard/hooks/usePanelResetFilters';
|
|
4
|
+
import { ResetFiltersButton } from '../../dashboard/components/ResetFiltersButton';
|
|
5
|
+
export const MosaicDashboardDataTableExplorerHeaderActions = ({ dashboardId, panel, selectionName }) => {
|
|
6
|
+
const panelClients = usePanelClients(dashboardId, panel.id);
|
|
7
|
+
const { hasActiveFilters, reset } = usePanelResetFilters({
|
|
8
|
+
panelClients,
|
|
9
|
+
selectionName,
|
|
10
|
+
});
|
|
11
|
+
return (_jsx(ResetFiltersButton, { disabled: !hasActiveFilters, onClick: reset, tooltip: "Reset panel filters" }));
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=MosaicDashboardDataTableExplorerHeaderActions.js.map
|
package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerHeaderActions.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MosaicDashboardDataTableExplorerHeaderActions.js","sourceRoot":"","sources":["../../../src/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerHeaderActions.tsx"],"names":[],"mappings":";AACA,OAAO,EAAC,eAAe,EAAC,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAC,oBAAoB,EAAC,MAAM,4CAA4C,CAAC;AAChF,OAAO,EAAC,kBAAkB,EAAC,MAAM,+CAA+C,CAAC;AAGjF,MAAM,CAAC,MAAM,6CAA6C,GAEtD,CAAC,EAAC,WAAW,EAAE,KAAK,EAAE,aAAa,EAAC,EAAE,EAAE;IAC1C,MAAM,YAAY,GAAG,eAAe,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IAC5D,MAAM,EAAC,gBAAgB,EAAE,KAAK,EAAC,GAAG,oBAAoB,CAAC;QACrD,YAAY;QACZ,aAAa;KACd,CAAC,CAAC;IAEH,OAAO,CACL,KAAC,kBAAkB,IACjB,QAAQ,EAAE,CAAC,gBAAgB,EAC3B,OAAO,EAAE,KAAK,EACd,OAAO,EAAC,qBAAqB,GAC7B,CACH,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {type FC} from 'react';\nimport {usePanelClients} from '../../dashboard/usePanelClients';\nimport {usePanelResetFilters} from '../../dashboard/hooks/usePanelResetFilters';\nimport {ResetFiltersButton} from '../../dashboard/components/ResetFiltersButton';\nimport type {DataTableExplorerPanelRendererProps} from '../../dashboard/MosaicDashboardSlice';\n\nexport const MosaicDashboardDataTableExplorerHeaderActions: FC<\n DataTableExplorerPanelRendererProps\n> = ({dashboardId, panel, selectionName}) => {\n const panelClients = usePanelClients(dashboardId, panel.id);\n const {hasActiveFilters, reset} = usePanelResetFilters({\n panelClients,\n selectionName,\n });\n\n return (\n <ResetFiltersButton\n disabled={!hasActiveFilters}\n onClick={reset}\n tooltip=\"Reset panel filters\"\n />\n );\n};\n"]}
|
package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerPanelRenderer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MosaicDashboardDataTableExplorerPanelRenderer.d.ts","sourceRoot":"","sources":["../../../src/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerPanelRenderer.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EACL,KAAK,4BAA4B,EAGlC,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"MosaicDashboardDataTableExplorerPanelRenderer.d.ts","sourceRoot":"","sources":["../../../src/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerPanelRenderer.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EACL,KAAK,4BAA4B,EAGlC,MAAM,sCAAsC,CAAC;AA0F9C,eAAO,MAAM,6CAA6C,EAAE,4BAA4B,CAAC,sBAAsB,CAK5G,CAAC"}
|
|
@@ -3,26 +3,41 @@ import { SpinnerPane } from '@sqlrooms/ui';
|
|
|
3
3
|
import { TablePropertiesIcon } from 'lucide-react';
|
|
4
4
|
import { DataTableExplorer } from '../DataTableExplorer';
|
|
5
5
|
import { useStoreWithMosaicDashboard, } from '../../dashboard/MosaicDashboardSlice';
|
|
6
|
-
import {
|
|
7
|
-
|
|
6
|
+
import { usePanelClientRegistration } from '../../dashboard/usePanelClientRegistration';
|
|
7
|
+
import { useDataTableExplorerPanelClients } from './useDataTableExplorerPanelClients';
|
|
8
|
+
import { useDataTable } from '@sqlrooms/db';
|
|
9
|
+
import { useDataTableExplorer } from '../useDataTableExplorer';
|
|
10
|
+
import { MosaicDashboardDataTableExplorerHeaderActions } from './MosaicDashboardDataTableExplorerHeaderActions';
|
|
11
|
+
const MosaicDashboardDataTableExplorerRendererInner = ({ panel, dashboard, selectionName, selectedTable }) => {
|
|
8
12
|
const connection = useStoreWithMosaicDashboard((state) => state.mosaic.connection);
|
|
9
|
-
const selectedTable = useDataTable(dashboard.selectedTable);
|
|
10
13
|
const pageSize = typeof panel.config.pageSize === 'number'
|
|
11
14
|
? panel.config.pageSize
|
|
12
15
|
: undefined;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
+
const explorer = useDataTableExplorer({
|
|
17
|
+
tableName: selectedTable.table,
|
|
18
|
+
pageSize: pageSize ?? 10,
|
|
19
|
+
selectionName,
|
|
20
|
+
});
|
|
21
|
+
const explorerClients = useDataTableExplorerPanelClients(explorer, selectedTable, connection.status);
|
|
22
|
+
usePanelClientRegistration(dashboard.id, panel.id, explorerClients);
|
|
16
23
|
if (connection.status === 'loading') {
|
|
17
24
|
return _jsx(SpinnerPane, { className: "h-full w-full" });
|
|
18
25
|
}
|
|
19
26
|
if (connection.status !== 'ready') {
|
|
20
27
|
return (_jsx("div", { className: "text-muted-foreground flex h-full items-center justify-center p-4 text-sm", children: "Mosaic connection is not ready." }));
|
|
21
28
|
}
|
|
22
|
-
return (_jsx(DataTableExplorer, {
|
|
29
|
+
return (_jsx(DataTableExplorer.Root, { explorer: explorer, children: _jsxs("div", { className: "flex h-full min-h-0 flex-col", children: [_jsx("div", { className: "min-h-0 flex-1 overflow-auto", children: _jsxs(DataTableExplorer.Table, { children: [_jsx(DataTableExplorer.Header, {}), _jsx(DataTableExplorer.Rows, {})] }) }), _jsx(DataTableExplorer.StatusBar, {})] }) }));
|
|
30
|
+
};
|
|
31
|
+
const MosaicDashboardDataTableExplorerRenderer = ({ panel, dashboard, selectionName }) => {
|
|
32
|
+
const selectedTable = useDataTable(dashboard.selectedTable);
|
|
33
|
+
if (!selectedTable) {
|
|
34
|
+
return (_jsx("div", { className: "text-muted-foreground flex h-full items-center justify-center p-4 text-sm", children: "Data Table Explorer panels require a table source." }));
|
|
35
|
+
}
|
|
36
|
+
return (_jsx(MosaicDashboardDataTableExplorerRendererInner, { panel: panel, dashboard: dashboard, selectionName: selectionName, selectedTable: selectedTable }));
|
|
23
37
|
};
|
|
24
38
|
export const mosaicDashboardDataTableExplorerPanelRenderer = {
|
|
25
39
|
component: MosaicDashboardDataTableExplorerRenderer,
|
|
40
|
+
headerActions: MosaicDashboardDataTableExplorerHeaderActions,
|
|
26
41
|
icon: TablePropertiesIcon,
|
|
27
42
|
};
|
|
28
43
|
//# sourceMappingURL=MosaicDashboardDataTableExplorerPanelRenderer.js.map
|
package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerPanelRenderer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MosaicDashboardDataTableExplorerPanelRenderer.js","sourceRoot":"","sources":["../../../src/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerPanelRenderer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AACzC,OAAO,EAAC,mBAAmB,EAAC,MAAM,cAAc,CAAC;AACjD,OAAO,EAAC,iBAAiB,EAAC,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAGL,2BAA2B,GAC5B,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"MosaicDashboardDataTableExplorerPanelRenderer.js","sourceRoot":"","sources":["../../../src/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerPanelRenderer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AACzC,OAAO,EAAC,mBAAmB,EAAC,MAAM,cAAc,CAAC;AACjD,OAAO,EAAC,iBAAiB,EAAC,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAGL,2BAA2B,GAC5B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAC,0BAA0B,EAAC,MAAM,4CAA4C,CAAC;AACtF,OAAO,EAAC,gCAAgC,EAAC,MAAM,oCAAoC,CAAC;AAEpF,OAAO,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAC,oBAAoB,EAAC,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAC,6CAA6C,EAAC,MAAM,iDAAiD,CAAC;AAQ9G,MAAM,6CAA6C,GAE/C,CAAC,EAAC,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAC,EAAE,EAAE;IACvD,MAAM,UAAU,GAAG,2BAA2B,CAC5C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CACnC,CAAC;IAEF,MAAM,QAAQ,GACZ,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,KAAK,QAAQ;QACvC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ;QACvB,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,QAAQ,GAAG,oBAAoB,CAAC;QACpC,SAAS,EAAE,aAAa,CAAC,KAAK;QAC9B,QAAQ,EAAE,QAAQ,IAAI,EAAE;QACxB,aAAa;KACd,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,gCAAgC,CACtD,QAAQ,EACR,aAAa,EACb,UAAU,CAAC,MAAM,CAClB,CAAC;IAEF,0BAA0B,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;IAEpE,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACpC,OAAO,KAAC,WAAW,IAAC,SAAS,EAAC,eAAe,GAAG,CAAC;IACnD,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAClC,OAAO,CACL,cAAK,SAAS,EAAC,2EAA2E,gDAEpF,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,KAAC,iBAAiB,CAAC,IAAI,IAAC,QAAQ,EAAE,QAAQ,YACxC,eAAK,SAAS,EAAC,8BAA8B,aAC3C,cAAK,SAAS,EAAC,8BAA8B,YAC3C,MAAC,iBAAiB,CAAC,KAAK,eACtB,KAAC,iBAAiB,CAAC,MAAM,KAAG,EAC5B,KAAC,iBAAiB,CAAC,IAAI,KAAG,IACF,GACtB,EACN,KAAC,iBAAiB,CAAC,SAAS,KAAG,IAC3B,GACiB,CAC1B,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,wCAAwC,GAE1C,CAAC,EAAC,KAAK,EAAE,SAAS,EAAE,aAAa,EAAC,EAAE,EAAE;IACxC,MAAM,aAAa,GAAG,YAAY,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAE5D,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,CACL,cAAK,SAAS,EAAC,2EAA2E,mEAEpF,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,KAAC,6CAA6C,IAC5C,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,aAAa,GAC5B,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,6CAA6C,GACxD;IACE,SAAS,EAAE,wCAAwC;IACnD,aAAa,EAAE,6CAA6C;IAC5D,IAAI,EAAE,mBAAmB;CAC1B,CAAC","sourcesContent":["import {SpinnerPane} from '@sqlrooms/ui';\nimport {TablePropertiesIcon} from 'lucide-react';\nimport {DataTableExplorer} from '../DataTableExplorer';\nimport type {DataTableExplorerPanel} from '../../dashboard/dashboard-types';\nimport {\n type MosaicDashboardPanelRenderer,\n type DataTableExplorerPanelRendererProps,\n useStoreWithMosaicDashboard,\n} from '../../dashboard/MosaicDashboardSlice';\nimport {usePanelClientRegistration} from '../../dashboard/usePanelClientRegistration';\nimport {useDataTableExplorerPanelClients} from './useDataTableExplorerPanelClients';\nimport {FC} from 'react';\nimport {useDataTable} from '@sqlrooms/db';\nimport {useDataTableExplorer} from '../useDataTableExplorer';\nimport {MosaicDashboardDataTableExplorerHeaderActions} from './MosaicDashboardDataTableExplorerHeaderActions';\nimport type {DataTable} from '@sqlrooms/db';\n\ntype MosaicDashboardDataTableExplorerRendererInnerProps = Omit<\n DataTableExplorerPanelRendererProps,\n 'dashboardId'\n> & {selectedTable: DataTable};\n\nconst MosaicDashboardDataTableExplorerRendererInner: FC<\n MosaicDashboardDataTableExplorerRendererInnerProps\n> = ({panel, dashboard, selectionName, selectedTable}) => {\n const connection = useStoreWithMosaicDashboard(\n (state) => state.mosaic.connection,\n );\n\n const pageSize =\n typeof panel.config.pageSize === 'number'\n ? panel.config.pageSize\n : undefined;\n\n const explorer = useDataTableExplorer({\n tableName: selectedTable.table,\n pageSize: pageSize ?? 10,\n selectionName,\n });\n\n const explorerClients = useDataTableExplorerPanelClients(\n explorer,\n selectedTable,\n connection.status,\n );\n\n usePanelClientRegistration(dashboard.id, panel.id, explorerClients);\n\n if (connection.status === 'loading') {\n return <SpinnerPane className=\"h-full w-full\" />;\n }\n\n if (connection.status !== 'ready') {\n return (\n <div className=\"text-muted-foreground flex h-full items-center justify-center p-4 text-sm\">\n Mosaic connection is not ready.\n </div>\n );\n }\n\n return (\n <DataTableExplorer.Root explorer={explorer}>\n <div className=\"flex h-full min-h-0 flex-col\">\n <div className=\"min-h-0 flex-1 overflow-auto\">\n <DataTableExplorer.Table>\n <DataTableExplorer.Header />\n <DataTableExplorer.Rows />\n </DataTableExplorer.Table>\n </div>\n <DataTableExplorer.StatusBar />\n </div>\n </DataTableExplorer.Root>\n );\n};\n\nconst MosaicDashboardDataTableExplorerRenderer: FC<\n DataTableExplorerPanelRendererProps\n> = ({panel, dashboard, selectionName}) => {\n const selectedTable = useDataTable(dashboard.selectedTable);\n\n if (!selectedTable) {\n return (\n <div className=\"text-muted-foreground flex h-full items-center justify-center p-4 text-sm\">\n Data Table Explorer panels require a table source.\n </div>\n );\n }\n\n return (\n <MosaicDashboardDataTableExplorerRendererInner\n panel={panel}\n dashboard={dashboard}\n selectionName={selectionName}\n selectedTable={selectedTable}\n />\n );\n};\n\nexport const mosaicDashboardDataTableExplorerPanelRenderer: MosaicDashboardPanelRenderer<DataTableExplorerPanel> =\n {\n component: MosaicDashboardDataTableExplorerRenderer,\n headerActions: MosaicDashboardDataTableExplorerHeaderActions,\n icon: TablePropertiesIcon,\n };\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type MosaicClient } from '@uwdata/mosaic-core';
|
|
2
|
+
import type { UseDataTableExplorerReturn } from '../types';
|
|
3
|
+
import type { ConnectionStatus } from '../../MosaicSlice';
|
|
4
|
+
import { DataTable } from '@sqlrooms/db';
|
|
5
|
+
/**
|
|
6
|
+
* Extracts all Mosaic clients from a DataTableExplorer instance for panel client registration.
|
|
7
|
+
* This includes:
|
|
8
|
+
* - The main count client (tracks filtered row count)
|
|
9
|
+
* - Histogram interactors (for histogram column interactions)
|
|
10
|
+
* - Category clients (for category column interactions)
|
|
11
|
+
*/
|
|
12
|
+
export declare function useDataTableExplorerPanelClients(explorer: UseDataTableExplorerReturn, selectedTable: DataTable | undefined, connectionStatus: ConnectionStatus): MosaicClient[];
|
|
13
|
+
//# sourceMappingURL=useDataTableExplorerPanelClients.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDataTableExplorerPanelClients.d.ts","sourceRoot":"","sources":["../../../src/data-table-explorer/dashboard/useDataTableExplorerPanelClients.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,YAAY,EAAC,MAAM,qBAAqB,CAAC;AAEtD,OAAO,KAAK,EAAC,0BAA0B,EAAC,MAAM,UAAU,CAAC;AACzD,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAEvC;;;;;;GAMG;AACH,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,0BAA0B,EACpC,aAAa,EAAE,SAAS,GAAG,SAAS,EACpC,gBAAgB,EAAE,gBAAgB,GACjC,YAAY,EAAE,CAyBhB"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { useMemo } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Extracts all Mosaic clients from a DataTableExplorer instance for panel client registration.
|
|
4
|
+
* This includes:
|
|
5
|
+
* - The main count client (tracks filtered row count)
|
|
6
|
+
* - Histogram interactors (for histogram column interactions)
|
|
7
|
+
* - Category clients (for category column interactions)
|
|
8
|
+
*/
|
|
9
|
+
export function useDataTableExplorerPanelClients(explorer, selectedTable, connectionStatus) {
|
|
10
|
+
return useMemo(() => {
|
|
11
|
+
if (!selectedTable || connectionStatus !== 'ready') {
|
|
12
|
+
return [];
|
|
13
|
+
}
|
|
14
|
+
const clients = [];
|
|
15
|
+
// Add main count client
|
|
16
|
+
if (explorer.client) {
|
|
17
|
+
clients.push(explorer.client);
|
|
18
|
+
}
|
|
19
|
+
// Add summary clients (histogram interactors and category clients)
|
|
20
|
+
explorer.columns.forEach((col) => {
|
|
21
|
+
const summary = col.summary;
|
|
22
|
+
if (summary.kind === 'histogram' && summary.interactor) {
|
|
23
|
+
clients.push(summary.interactor);
|
|
24
|
+
}
|
|
25
|
+
else if (summary.kind === 'category' && summary.client) {
|
|
26
|
+
clients.push(summary.client);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
return clients;
|
|
30
|
+
}, [connectionStatus, explorer.client, explorer.columns, selectedTable]);
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=useDataTableExplorerPanelClients.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDataTableExplorerPanelClients.js","sourceRoot":"","sources":["../../../src/data-table-explorer/dashboard/useDataTableExplorerPanelClients.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AAK9B;;;;;;GAMG;AACH,MAAM,UAAU,gCAAgC,CAC9C,QAAoC,EACpC,aAAoC,EACpC,gBAAkC;IAElC,OAAO,OAAO,CAAiB,GAAG,EAAE;QAClC,IAAI,CAAC,aAAa,IAAI,gBAAgB,KAAK,OAAO,EAAE,CAAC;YACnD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,OAAO,GAAmB,EAAE,CAAC;QAEnC,wBAAwB;QACxB,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;QAED,mEAAmE;QACnE,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;YAC5B,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACvD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAqC,CAAC,CAAC;YAC9D,CAAC;iBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACzD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC,EAAE,CAAC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;AAC3E,CAAC","sourcesContent":["import {type MosaicClient} from '@uwdata/mosaic-core';\nimport {useMemo} from 'react';\nimport type {UseDataTableExplorerReturn} from '../types';\nimport type {ConnectionStatus} from '../../MosaicSlice';\nimport {DataTable} from '@sqlrooms/db';\n\n/**\n * Extracts all Mosaic clients from a DataTableExplorer instance for panel client registration.\n * This includes:\n * - The main count client (tracks filtered row count)\n * - Histogram interactors (for histogram column interactions)\n * - Category clients (for category column interactions)\n */\nexport function useDataTableExplorerPanelClients(\n explorer: UseDataTableExplorerReturn,\n selectedTable: DataTable | undefined,\n connectionStatus: ConnectionStatus,\n): MosaicClient[] {\n return useMemo<MosaicClient[]>(() => {\n if (!selectedTable || connectionStatus !== 'ready') {\n return [];\n }\n\n const clients: MosaicClient[] = [];\n\n // Add main count client\n if (explorer.client) {\n clients.push(explorer.client);\n }\n\n // Add summary clients (histogram interactors and category clients)\n explorer.columns.forEach((col) => {\n const summary = col.summary;\n if (summary.kind === 'histogram' && summary.interactor) {\n clients.push(summary.interactor as unknown as MosaicClient);\n } else if (summary.kind === 'category' && summary.client) {\n clients.push(summary.client);\n }\n });\n\n return clients;\n }, [connectionStatus, explorer.client, explorer.columns, selectedTable]);\n}\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { MosaicClient, Selection } from '@uwdata/mosaic-core';
|
|
2
2
|
import { queryFieldInfo } from '@uwdata/mosaic-core';
|
|
3
3
|
import type * as arrow from 'apache-arrow';
|
|
4
|
+
import { DataTableExplorerCountClient } from './DataTableExplorerCountClient';
|
|
4
5
|
import type { DataTableExplorerSorting } from './types';
|
|
5
6
|
import type { DataTableExplorerStore } from './createDataTableExplorerStore';
|
|
6
7
|
/**
|
|
@@ -46,7 +47,10 @@ export declare function connectDataTableExplorerCountClient(options: {
|
|
|
46
47
|
store: DataTableExplorerStore;
|
|
47
48
|
tableName: string;
|
|
48
49
|
target: 'filtered' | 'total';
|
|
49
|
-
}):
|
|
50
|
+
}): {
|
|
51
|
+
client: DataTableExplorerCountClient;
|
|
52
|
+
cleanup: () => void;
|
|
53
|
+
};
|
|
50
54
|
/**
|
|
51
55
|
* Connects all per-column summary clients for the active schema and initializes
|
|
52
56
|
* matching empty summary state in the dataTableExplorer store.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataTableExplorerController.d.ts","sourceRoot":"","sources":["../../src/data-table-explorer/dataTableExplorerController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAE,SAAS,EAAC,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"dataTableExplorerController.d.ts","sourceRoot":"","sources":["../../src/data-table-explorer/dataTableExplorerController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAE,SAAS,EAAC,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAK3C,OAAO,EAAC,4BAA4B,EAAC,MAAM,gCAAgC,CAAC;AAO5E,OAAO,KAAK,EAEV,wBAAwB,EACzB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,gCAAgC,CAAC;AAY3E;;;GAGG;AACH,wBAAsB,2BAA2B,CAAC,OAAO,EAAE;IACzD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,KAAK,EAAE,sBAAsB,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;CACnB,iBAqBA;AAED,KAAK,eAAe,GAAG;IACrB,WAAW,EAAE;QACX,OAAO,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;QACxC,UAAU,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;KAC5C,CAAC;CACH,CAAC;AAEF;;;GAGG;AACH,wBAAgB,kCAAkC,CAAC,OAAO,EAAE;IAC1D,UAAU,EAAE,eAAe,CAAC;IAC5B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5C,UAAU,EAAE;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,CAAC;IAClD,OAAO,EAAE,wBAAwB,CAAC;IAClC,KAAK,EAAE,sBAAsB,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;CACnB,cAeA;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CAAC,OAAO,EAAE;IAC3D,UAAU,EAAE,eAAe,CAAC;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,KAAK,EAAE,sBAAsB,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC;CAC9B;;;EAqBA;AAED;;;GAGG;AACH,wBAAgB,sCAAsC,CAAC,OAAO,EAAE;IAC9D,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,eAAe,CAAC;IAC5B,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IACtB,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,sBAAsB,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB,cAwEA"}
|
|
@@ -61,8 +61,11 @@ export function connectDataTableExplorerCountClient(options) {
|
|
|
61
61
|
tableName: options.tableName,
|
|
62
62
|
});
|
|
63
63
|
options.connection.coordinator.connect(client);
|
|
64
|
-
return
|
|
65
|
-
client
|
|
64
|
+
return {
|
|
65
|
+
client,
|
|
66
|
+
cleanup: () => {
|
|
67
|
+
client.destroy();
|
|
68
|
+
},
|
|
66
69
|
};
|
|
67
70
|
}
|
|
68
71
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataTableExplorerController.js","sourceRoot":"","sources":["../../src/data-table-explorer/dataTableExplorerController.ts"],"names":[],"mappings":"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","sourcesContent":["import type {MosaicClient, Selection} from '@uwdata/mosaic-core';\nimport {queryFieldInfo} from '@uwdata/mosaic-core';\nimport type * as arrow from 'apache-arrow';\nimport {\n DataTableExplorerCategoryClient,\n DataTableExplorerCategoryTotalClient,\n} from './DataTableExplorerCategoryClient';\nimport {DataTableExplorerCountClient} from './DataTableExplorerCountClient';\nimport {\n DataTableExplorerHistogramClient,\n DataTableExplorerHistogramTotalClient,\n} from './DataTableExplorerHistogramClient';\nimport {DataTableExplorerPageClient} from './DataTableExplorerPageClient';\nimport {DataTableExplorerUnsupportedSummaryClient} from './DataTableExplorerUnsupportedSummaryClient';\nimport type {\n DataTableExplorerSummaryState,\n DataTableExplorerSorting,\n} from './types';\nimport type {DataTableExplorerStore} from './createDataTableExplorerStore';\nimport {\n fieldInfoToDataTableExplorerField,\n getDataTableExplorerValueType,\n isDataTableExplorerHistogramType,\n isDataTableExplorerUnsupportedSummaryType,\n} from './utils';\n\nfunction toError(error: unknown): Error {\n return error instanceof Error ? error : new Error(String(error));\n}\n\n/**\n * Loads field metadata for the dataTableExplorer table and writes the normalized field\n * definitions into the dataTableExplorer store.\n */\nexport async function loadDataTableExplorerSchema(options: {\n columns?: string[];\n coordinator: Parameters<typeof queryFieldInfo>[0];\n store: DataTableExplorerStore;\n tableName: string;\n}) {\n const {columns, coordinator, store, tableName} = options;\n store.getState().setSchemaLoading(true, tableName);\n\n try {\n const fieldInfo = await queryFieldInfo(\n coordinator,\n columns?.length\n ? columns.map((column) => ({column, table: tableName}))\n : [{column: '*', table: tableName}],\n );\n store\n .getState()\n .setSchemaSuccess(\n fieldInfo.map(fieldInfoToDataTableExplorerField),\n tableName,\n );\n } catch (error: unknown) {\n store.getState().setSchemaSuccess([], tableName);\n store.getState().setSchemaError(toError(error), tableName);\n }\n}\n\ntype ReadyConnection = {\n coordinator: {\n connect: (client: MosaicClient) => void;\n disconnect: (client: MosaicClient) => void;\n };\n};\n\n/**\n * Connects the paged row client for the current dataTableExplorer page and disconnects\n * it when the caller tears down the lifecycle.\n */\nexport function connectDataTableExplorerPageClient(options: {\n connection: ReadyConnection;\n fieldNames: string[];\n filter?: ReturnType<Selection['predicate']>;\n pagination: {pageIndex: number; pageSize: number};\n sorting: DataTableExplorerSorting;\n store: DataTableExplorerStore;\n tableName: string;\n}) {\n const client = new DataTableExplorerPageClient({\n columns: options.fieldNames,\n filter: options.filter,\n onStateChange: (state) => options.store.getState().setPage(state),\n pagination: options.pagination,\n sorting: options.sorting,\n tableName: options.tableName,\n });\n\n options.connection.coordinator.connect(client);\n\n return () => {\n client.destroy();\n };\n}\n\n/**\n * Connects either the filtered or total count client and routes updates into\n * the corresponding store slice.\n */\nexport function connectDataTableExplorerCountClient(options: {\n connection: ReadyConnection;\n filterStable?: boolean;\n selection?: Selection;\n store: DataTableExplorerStore;\n tableName: string;\n target: 'filtered' | 'total';\n}) {\n const setCountState =\n options.target === 'filtered'\n ? options.store.getState().setFilteredCount\n : options.store.getState().setTotalCount;\n\n const client = new DataTableExplorerCountClient({\n filterStable: options.filterStable,\n onStateChange: setCountState,\n selection: options.selection,\n tableName: options.tableName,\n });\n\n options.connection.coordinator.connect(client);\n\n return () => {\n client.destroy();\n };\n}\n\n/**\n * Connects all per-column summary clients for the active schema and initializes\n * matching empty summary state in the dataTableExplorer store.\n */\nexport function connectDataTableExplorerSummaryClients(options: {\n categoryLimit: number;\n connection: ReadyConnection;\n fields: arrow.Field[];\n selection: Selection;\n store: DataTableExplorerStore;\n summaryBins: number;\n tableName: string;\n}) {\n const {\n categoryLimit,\n connection,\n fields,\n selection,\n store,\n summaryBins,\n tableName,\n } = options;\n\n store.getState().initializeSummaries(fields);\n\n const clients: MosaicClient[] = fields.flatMap((field): MosaicClient[] => {\n const update = (summary: DataTableExplorerSummaryState) => {\n store.getState().setSummary(field.name, summary);\n };\n\n if (isDataTableExplorerUnsupportedSummaryType(field.type)) {\n return [\n new DataTableExplorerUnsupportedSummaryClient({\n field,\n onStateChange: update,\n selection,\n tableName,\n }),\n ];\n }\n\n if (isDataTableExplorerHistogramType(field.type)) {\n const summaryClient = new DataTableExplorerHistogramClient({\n field,\n onStateChange: update,\n selection,\n steps: summaryBins,\n tableName,\n valueType:\n getDataTableExplorerValueType(field.type) === 'date'\n ? 'date'\n : 'number',\n });\n\n return [\n summaryClient,\n new DataTableExplorerHistogramTotalClient({\n summaryClient,\n }),\n ];\n }\n\n const summaryClient = new DataTableExplorerCategoryClient({\n categoryLimit,\n field,\n onStateChange: update,\n selection,\n tableName,\n });\n\n return [\n summaryClient,\n new DataTableExplorerCategoryTotalClient({\n summaryClient,\n }),\n ];\n });\n\n clients.forEach((client) => connection.coordinator.connect(client));\n\n return () => {\n clients.forEach((client) => client.destroy());\n store.getState().clearSummaries();\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"dataTableExplorerController.js","sourceRoot":"","sources":["../../src/data-table-explorer/dataTableExplorerController.ts"],"names":[],"mappings":"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","sourcesContent":["import type {MosaicClient, Selection} from '@uwdata/mosaic-core';\nimport {queryFieldInfo} from '@uwdata/mosaic-core';\nimport type * as arrow from 'apache-arrow';\nimport {\n DataTableExplorerCategoryClient,\n DataTableExplorerCategoryTotalClient,\n} from './DataTableExplorerCategoryClient';\nimport {DataTableExplorerCountClient} from './DataTableExplorerCountClient';\nimport {\n DataTableExplorerHistogramClient,\n DataTableExplorerHistogramTotalClient,\n} from './DataTableExplorerHistogramClient';\nimport {DataTableExplorerPageClient} from './DataTableExplorerPageClient';\nimport {DataTableExplorerUnsupportedSummaryClient} from './DataTableExplorerUnsupportedSummaryClient';\nimport type {\n DataTableExplorerSummaryState,\n DataTableExplorerSorting,\n} from './types';\nimport type {DataTableExplorerStore} from './createDataTableExplorerStore';\nimport {\n fieldInfoToDataTableExplorerField,\n getDataTableExplorerValueType,\n isDataTableExplorerHistogramType,\n isDataTableExplorerUnsupportedSummaryType,\n} from './utils';\n\nfunction toError(error: unknown): Error {\n return error instanceof Error ? error : new Error(String(error));\n}\n\n/**\n * Loads field metadata for the dataTableExplorer table and writes the normalized field\n * definitions into the dataTableExplorer store.\n */\nexport async function loadDataTableExplorerSchema(options: {\n columns?: string[];\n coordinator: Parameters<typeof queryFieldInfo>[0];\n store: DataTableExplorerStore;\n tableName: string;\n}) {\n const {columns, coordinator, store, tableName} = options;\n store.getState().setSchemaLoading(true, tableName);\n\n try {\n const fieldInfo = await queryFieldInfo(\n coordinator,\n columns?.length\n ? columns.map((column) => ({column, table: tableName}))\n : [{column: '*', table: tableName}],\n );\n store\n .getState()\n .setSchemaSuccess(\n fieldInfo.map(fieldInfoToDataTableExplorerField),\n tableName,\n );\n } catch (error: unknown) {\n store.getState().setSchemaSuccess([], tableName);\n store.getState().setSchemaError(toError(error), tableName);\n }\n}\n\ntype ReadyConnection = {\n coordinator: {\n connect: (client: MosaicClient) => void;\n disconnect: (client: MosaicClient) => void;\n };\n};\n\n/**\n * Connects the paged row client for the current dataTableExplorer page and disconnects\n * it when the caller tears down the lifecycle.\n */\nexport function connectDataTableExplorerPageClient(options: {\n connection: ReadyConnection;\n fieldNames: string[];\n filter?: ReturnType<Selection['predicate']>;\n pagination: {pageIndex: number; pageSize: number};\n sorting: DataTableExplorerSorting;\n store: DataTableExplorerStore;\n tableName: string;\n}) {\n const client = new DataTableExplorerPageClient({\n columns: options.fieldNames,\n filter: options.filter,\n onStateChange: (state) => options.store.getState().setPage(state),\n pagination: options.pagination,\n sorting: options.sorting,\n tableName: options.tableName,\n });\n\n options.connection.coordinator.connect(client);\n\n return () => {\n client.destroy();\n };\n}\n\n/**\n * Connects either the filtered or total count client and routes updates into\n * the corresponding store slice.\n */\nexport function connectDataTableExplorerCountClient(options: {\n connection: ReadyConnection;\n filterStable?: boolean;\n selection?: Selection;\n store: DataTableExplorerStore;\n tableName: string;\n target: 'filtered' | 'total';\n}) {\n const setCountState =\n options.target === 'filtered'\n ? options.store.getState().setFilteredCount\n : options.store.getState().setTotalCount;\n\n const client = new DataTableExplorerCountClient({\n filterStable: options.filterStable,\n onStateChange: setCountState,\n selection: options.selection,\n tableName: options.tableName,\n });\n\n options.connection.coordinator.connect(client);\n\n return {\n client,\n cleanup: () => {\n client.destroy();\n },\n };\n}\n\n/**\n * Connects all per-column summary clients for the active schema and initializes\n * matching empty summary state in the dataTableExplorer store.\n */\nexport function connectDataTableExplorerSummaryClients(options: {\n categoryLimit: number;\n connection: ReadyConnection;\n fields: arrow.Field[];\n selection: Selection;\n store: DataTableExplorerStore;\n summaryBins: number;\n tableName: string;\n}) {\n const {\n categoryLimit,\n connection,\n fields,\n selection,\n store,\n summaryBins,\n tableName,\n } = options;\n\n store.getState().initializeSummaries(fields);\n\n const clients: MosaicClient[] = fields.flatMap((field): MosaicClient[] => {\n const update = (summary: DataTableExplorerSummaryState) => {\n store.getState().setSummary(field.name, summary);\n };\n\n if (isDataTableExplorerUnsupportedSummaryType(field.type)) {\n return [\n new DataTableExplorerUnsupportedSummaryClient({\n field,\n onStateChange: update,\n selection,\n tableName,\n }),\n ];\n }\n\n if (isDataTableExplorerHistogramType(field.type)) {\n const summaryClient = new DataTableExplorerHistogramClient({\n field,\n onStateChange: update,\n selection,\n steps: summaryBins,\n tableName,\n valueType:\n getDataTableExplorerValueType(field.type) === 'date'\n ? 'date'\n : 'number',\n });\n\n return [\n summaryClient,\n new DataTableExplorerHistogramTotalClient({\n summaryClient,\n }),\n ];\n }\n\n const summaryClient = new DataTableExplorerCategoryClient({\n categoryLimit,\n field,\n onStateChange: update,\n selection,\n tableName,\n });\n\n return [\n summaryClient,\n new DataTableExplorerCategoryTotalClient({\n summaryClient,\n }),\n ];\n });\n\n clients.forEach((client) => connection.coordinator.connect(client));\n\n return () => {\n clients.forEach((client) => client.destroy());\n store.getState().clearSummaries();\n };\n}\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { DataTableExplorerStoreState } from '../createDataTableExplorerStore';
|
|
2
|
+
import type { DataTableExplorerColumnState } from '../types';
|
|
3
|
+
export type UseDataTableExplorerColumnsOptions = {
|
|
4
|
+
fields: DataTableExplorerStoreState['schema']['fields'];
|
|
5
|
+
summaries: DataTableExplorerStoreState['summaries'];
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Maps the schema fields and summary state into the column model consumed by
|
|
9
|
+
* the dataTableExplorer header and summary cells.
|
|
10
|
+
*/
|
|
11
|
+
export declare function useDataTableExplorerColumns({ fields, summaries, }: UseDataTableExplorerColumnsOptions): DataTableExplorerColumnState[];
|
|
12
|
+
//# sourceMappingURL=useDataTableExplorerColumns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDataTableExplorerColumns.d.ts","sourceRoot":"","sources":["../../../src/data-table-explorer/hooks/useDataTableExplorerColumns.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,2BAA2B,EAAC,MAAM,iCAAiC,CAAC;AACjF,OAAO,KAAK,EAAC,4BAA4B,EAAC,MAAM,UAAU,CAAC;AAO3D,MAAM,MAAM,kCAAkC,GAAG;IAC/C,MAAM,EAAE,2BAA2B,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC;IACxD,SAAS,EAAE,2BAA2B,CAAC,WAAW,CAAC,CAAC;CACrD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,EAC1C,MAAM,EACN,SAAS,GACV,EAAE,kCAAkC,GAAG,4BAA4B,EAAE,CAerE"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { useMemo } from 'react';
|
|
2
|
+
import { createEmptySummaryState, isDataTableExplorerHistogramType, isDataTableExplorerUnsupportedSummaryType, } from '../utils';
|
|
3
|
+
/**
|
|
4
|
+
* Maps the schema fields and summary state into the column model consumed by
|
|
5
|
+
* the dataTableExplorer header and summary cells.
|
|
6
|
+
*/
|
|
7
|
+
export function useDataTableExplorerColumns({ fields, summaries, }) {
|
|
8
|
+
return useMemo(() => fields.map((field) => ({
|
|
9
|
+
field,
|
|
10
|
+
kind: isDataTableExplorerUnsupportedSummaryType(field.type)
|
|
11
|
+
? 'unsupported'
|
|
12
|
+
: isDataTableExplorerHistogramType(field.type)
|
|
13
|
+
? 'histogram'
|
|
14
|
+
: 'category',
|
|
15
|
+
name: field.name,
|
|
16
|
+
summary: summaries[field.name] ?? createEmptySummaryState(field),
|
|
17
|
+
})), [fields, summaries]);
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=useDataTableExplorerColumns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDataTableExplorerColumns.js","sourceRoot":"","sources":["../../../src/data-table-explorer/hooks/useDataTableExplorerColumns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AAG9B,OAAO,EACL,uBAAuB,EACvB,gCAAgC,EAChC,yCAAyC,GAC1C,MAAM,UAAU,CAAC;AAOlB;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CAAC,EAC1C,MAAM,EACN,SAAS,GAC0B;IACnC,OAAO,OAAO,CACZ,GAAG,EAAE,CACH,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACrB,KAAK;QACL,IAAI,EAAE,yCAAyC,CAAC,KAAK,CAAC,IAAI,CAAC;YACzD,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,gCAAgC,CAAC,KAAK,CAAC,IAAI,CAAC;gBAC5C,CAAC,CAAC,WAAW;gBACb,CAAC,CAAC,UAAU;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,KAAK,CAAC;KACjE,CAAC,CAAC,EACL,CAAC,MAAM,EAAE,SAAS,CAAC,CACpB,CAAC;AACJ,CAAC","sourcesContent":["import {useMemo} from 'react';\nimport type {DataTableExplorerStoreState} from '../createDataTableExplorerStore';\nimport type {DataTableExplorerColumnState} from '../types';\nimport {\n createEmptySummaryState,\n isDataTableExplorerHistogramType,\n isDataTableExplorerUnsupportedSummaryType,\n} from '../utils';\n\nexport type UseDataTableExplorerColumnsOptions = {\n fields: DataTableExplorerStoreState['schema']['fields'];\n summaries: DataTableExplorerStoreState['summaries'];\n};\n\n/**\n * Maps the schema fields and summary state into the column model consumed by\n * the dataTableExplorer header and summary cells.\n */\nexport function useDataTableExplorerColumns({\n fields,\n summaries,\n}: UseDataTableExplorerColumnsOptions): DataTableExplorerColumnState[] {\n return useMemo<DataTableExplorerColumnState[]>(\n () =>\n fields.map((field) => ({\n field,\n kind: isDataTableExplorerUnsupportedSummaryType(field.type)\n ? 'unsupported'\n : isDataTableExplorerHistogramType(field.type)\n ? 'histogram'\n : 'category',\n name: field.name,\n summary: summaries[field.name] ?? createEmptySummaryState(field),\n })),\n [fields, summaries],\n );\n}\n"]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { MosaicClient, Selection } from '@uwdata/mosaic-core';
|
|
2
|
+
import type { MosaicSliceState } from '../../MosaicSlice';
|
|
3
|
+
import type { DataTableExplorerStore } from '../createDataTableExplorerStore';
|
|
4
|
+
import type { DataTableExplorerPaginationState, DataTableExplorerSorting } from '../types';
|
|
5
|
+
import type { DataTableExplorerStoreState } from '../createDataTableExplorerStore';
|
|
6
|
+
export type UseDataTableExplorerLifecyclesOptions = {
|
|
7
|
+
categoryLimit: number;
|
|
8
|
+
columns?: string[];
|
|
9
|
+
connection: MosaicSliceState['mosaic']['connection'];
|
|
10
|
+
fieldNames: string[];
|
|
11
|
+
fields: DataTableExplorerStoreState['schema']['fields'];
|
|
12
|
+
pageSize: number;
|
|
13
|
+
pagination: DataTableExplorerPaginationState;
|
|
14
|
+
dataTableExplorerStore: DataTableExplorerStore;
|
|
15
|
+
rowFilter: ReturnType<Selection['predicate']>;
|
|
16
|
+
selection: Selection;
|
|
17
|
+
selectionVersion: number;
|
|
18
|
+
sorting: DataTableExplorerSorting;
|
|
19
|
+
summaryBins: number;
|
|
20
|
+
tableName: string;
|
|
21
|
+
};
|
|
22
|
+
export type UseDataTableExplorerLifecyclesReturn = {
|
|
23
|
+
client: MosaicClient | null;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Owns the coordinator-backed schema, row, count, and summary client
|
|
27
|
+
* lifecycles for a dataTableExplorer instance.
|
|
28
|
+
*/
|
|
29
|
+
export declare function useDataTableExplorerLifecycles(options: UseDataTableExplorerLifecyclesOptions): UseDataTableExplorerLifecyclesReturn;
|
|
30
|
+
//# sourceMappingURL=useDataTableExplorerLifecycles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDataTableExplorerLifecycles.d.ts","sourceRoot":"","sources":["../../../src/data-table-explorer/hooks/useDataTableExplorerLifecycles.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,YAAY,EAAE,SAAS,EAAC,MAAM,qBAAqB,CAAC;AACjE,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,iCAAiC,CAAC;AAC5E,OAAO,KAAK,EACV,gCAAgC,EAChC,wBAAwB,EACzB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAC,2BAA2B,EAAC,MAAM,iCAAiC,CAAC;AAQjF,MAAM,MAAM,qCAAqC,GAAG;IAClD,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC;IACrD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,2BAA2B,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC;IACxD,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,gCAAgC,CAAC;IAC7C,sBAAsB,EAAE,sBAAsB,CAAC;IAC/C,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;IAC9C,SAAS,EAAE,SAAS,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,wBAAwB,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,oCAAoC,GAAG;IACjD,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,qCAAqC,GAC7C,oCAAoC,CA8ItC"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { useEffect, useRef } from 'react';
|
|
2
|
+
import { connectDataTableExplorerCountClient, connectDataTableExplorerPageClient, connectDataTableExplorerSummaryClients, loadDataTableExplorerSchema, } from '../dataTableExplorerController';
|
|
3
|
+
/**
|
|
4
|
+
* Owns the coordinator-backed schema, row, count, and summary client
|
|
5
|
+
* lifecycles for a dataTableExplorer instance.
|
|
6
|
+
*/
|
|
7
|
+
export function useDataTableExplorerLifecycles(options) {
|
|
8
|
+
const { categoryLimit, columns, connection, fieldNames, fields, pageSize, pagination, dataTableExplorerStore, rowFilter, selection, selectionVersion, sorting, summaryBins, tableName, } = options;
|
|
9
|
+
const previousTableNameRef = useRef(tableName);
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
dataTableExplorerStore.getState().syncPageSize(pageSize);
|
|
12
|
+
}, [pageSize, dataTableExplorerStore]);
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
if (previousTableNameRef.current === tableName)
|
|
15
|
+
return;
|
|
16
|
+
selection.reset();
|
|
17
|
+
previousTableNameRef.current = tableName;
|
|
18
|
+
}, [selection, tableName]);
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
dataTableExplorerStore.getState().resetPageIndex();
|
|
21
|
+
}, [dataTableExplorerStore, selectionVersion, tableName]);
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
if (connection.status !== 'ready' || !tableName) {
|
|
24
|
+
dataTableExplorerStore.getState().setSchemaSuccess([]);
|
|
25
|
+
dataTableExplorerStore.getState().setSchemaError(undefined);
|
|
26
|
+
dataTableExplorerStore
|
|
27
|
+
.getState()
|
|
28
|
+
.setSchemaLoading(connection.status === 'loading');
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
void loadDataTableExplorerSchema({
|
|
32
|
+
columns,
|
|
33
|
+
coordinator: connection.coordinator,
|
|
34
|
+
store: dataTableExplorerStore,
|
|
35
|
+
tableName,
|
|
36
|
+
});
|
|
37
|
+
}, [columns, connection, dataTableExplorerStore, tableName]);
|
|
38
|
+
useEffect(() => {
|
|
39
|
+
if (connection.status !== 'ready' || !tableName || !fieldNames.length) {
|
|
40
|
+
dataTableExplorerStore.getState().setPage({ isLoading: false });
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
return connectDataTableExplorerPageClient({
|
|
44
|
+
connection,
|
|
45
|
+
fieldNames,
|
|
46
|
+
filter: rowFilter,
|
|
47
|
+
pagination,
|
|
48
|
+
sorting,
|
|
49
|
+
store: dataTableExplorerStore,
|
|
50
|
+
tableName,
|
|
51
|
+
});
|
|
52
|
+
}, [
|
|
53
|
+
connection,
|
|
54
|
+
fieldNames,
|
|
55
|
+
pagination,
|
|
56
|
+
dataTableExplorerStore,
|
|
57
|
+
rowFilter,
|
|
58
|
+
sorting,
|
|
59
|
+
tableName,
|
|
60
|
+
]);
|
|
61
|
+
useEffect(() => {
|
|
62
|
+
if (connection.status !== 'ready' || !tableName) {
|
|
63
|
+
dataTableExplorerStore.getState().setFilteredCount({ isLoading: false });
|
|
64
|
+
dataTableExplorerStore.getState().setClient(null);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
const { client: newClient, cleanup } = connectDataTableExplorerCountClient({
|
|
68
|
+
connection,
|
|
69
|
+
filterStable: true,
|
|
70
|
+
selection,
|
|
71
|
+
store: dataTableExplorerStore,
|
|
72
|
+
tableName,
|
|
73
|
+
target: 'filtered',
|
|
74
|
+
});
|
|
75
|
+
dataTableExplorerStore.getState().setClient(newClient);
|
|
76
|
+
return () => {
|
|
77
|
+
cleanup();
|
|
78
|
+
dataTableExplorerStore.getState().setClient(null);
|
|
79
|
+
};
|
|
80
|
+
}, [connection, dataTableExplorerStore, selection, tableName]);
|
|
81
|
+
useEffect(() => {
|
|
82
|
+
if (connection.status !== 'ready' || !tableName) {
|
|
83
|
+
dataTableExplorerStore.getState().setTotalCount({ isLoading: false });
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
const { cleanup } = connectDataTableExplorerCountClient({
|
|
87
|
+
connection,
|
|
88
|
+
store: dataTableExplorerStore,
|
|
89
|
+
tableName,
|
|
90
|
+
target: 'total',
|
|
91
|
+
});
|
|
92
|
+
return cleanup;
|
|
93
|
+
}, [connection, dataTableExplorerStore, tableName]);
|
|
94
|
+
useEffect(() => {
|
|
95
|
+
if (connection.status !== 'ready' || !fields.length) {
|
|
96
|
+
dataTableExplorerStore.getState().clearSummaries();
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
return connectDataTableExplorerSummaryClients({
|
|
100
|
+
categoryLimit,
|
|
101
|
+
connection,
|
|
102
|
+
fields,
|
|
103
|
+
selection,
|
|
104
|
+
store: dataTableExplorerStore,
|
|
105
|
+
summaryBins,
|
|
106
|
+
tableName,
|
|
107
|
+
});
|
|
108
|
+
}, [
|
|
109
|
+
categoryLimit,
|
|
110
|
+
connection,
|
|
111
|
+
fields,
|
|
112
|
+
dataTableExplorerStore,
|
|
113
|
+
selection,
|
|
114
|
+
summaryBins,
|
|
115
|
+
tableName,
|
|
116
|
+
]);
|
|
117
|
+
// Client is not returned - it's stored in the dataTableExplorerStore
|
|
118
|
+
return { client: null };
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=useDataTableExplorerLifecycles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDataTableExplorerLifecycles.js","sourceRoot":"","sources":["../../../src/data-table-explorer/hooks/useDataTableExplorerLifecycles.ts"],"names":[],"mappings":"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","sourcesContent":["import {useEffect, useRef} from 'react';\nimport type {MosaicClient, Selection} from '@uwdata/mosaic-core';\nimport type {MosaicSliceState} from '../../MosaicSlice';\nimport type {DataTableExplorerStore} from '../createDataTableExplorerStore';\nimport type {\n DataTableExplorerPaginationState,\n DataTableExplorerSorting,\n} from '../types';\nimport type {DataTableExplorerStoreState} from '../createDataTableExplorerStore';\nimport {\n connectDataTableExplorerCountClient,\n connectDataTableExplorerPageClient,\n connectDataTableExplorerSummaryClients,\n loadDataTableExplorerSchema,\n} from '../dataTableExplorerController';\n\nexport type UseDataTableExplorerLifecyclesOptions = {\n categoryLimit: number;\n columns?: string[];\n connection: MosaicSliceState['mosaic']['connection'];\n fieldNames: string[];\n fields: DataTableExplorerStoreState['schema']['fields'];\n pageSize: number;\n pagination: DataTableExplorerPaginationState;\n dataTableExplorerStore: DataTableExplorerStore;\n rowFilter: ReturnType<Selection['predicate']>;\n selection: Selection;\n selectionVersion: number;\n sorting: DataTableExplorerSorting;\n summaryBins: number;\n tableName: string;\n};\n\nexport type UseDataTableExplorerLifecyclesReturn = {\n client: MosaicClient | null;\n};\n\n/**\n * Owns the coordinator-backed schema, row, count, and summary client\n * lifecycles for a dataTableExplorer instance.\n */\nexport function useDataTableExplorerLifecycles(\n options: UseDataTableExplorerLifecyclesOptions,\n): UseDataTableExplorerLifecyclesReturn {\n const {\n categoryLimit,\n columns,\n connection,\n fieldNames,\n fields,\n pageSize,\n pagination,\n dataTableExplorerStore,\n rowFilter,\n selection,\n selectionVersion,\n sorting,\n summaryBins,\n tableName,\n } = options;\n const previousTableNameRef = useRef(tableName);\n\n useEffect(() => {\n dataTableExplorerStore.getState().syncPageSize(pageSize);\n }, [pageSize, dataTableExplorerStore]);\n\n useEffect(() => {\n if (previousTableNameRef.current === tableName) return;\n selection.reset();\n previousTableNameRef.current = tableName;\n }, [selection, tableName]);\n\n useEffect(() => {\n dataTableExplorerStore.getState().resetPageIndex();\n }, [dataTableExplorerStore, selectionVersion, tableName]);\n\n useEffect(() => {\n if (connection.status !== 'ready' || !tableName) {\n dataTableExplorerStore.getState().setSchemaSuccess([]);\n dataTableExplorerStore.getState().setSchemaError(undefined);\n dataTableExplorerStore\n .getState()\n .setSchemaLoading(connection.status === 'loading');\n return;\n }\n\n void loadDataTableExplorerSchema({\n columns,\n coordinator: connection.coordinator,\n store: dataTableExplorerStore,\n tableName,\n });\n }, [columns, connection, dataTableExplorerStore, tableName]);\n\n useEffect(() => {\n if (connection.status !== 'ready' || !tableName || !fieldNames.length) {\n dataTableExplorerStore.getState().setPage({isLoading: false});\n return;\n }\n\n return connectDataTableExplorerPageClient({\n connection,\n fieldNames,\n filter: rowFilter,\n pagination,\n sorting,\n store: dataTableExplorerStore,\n tableName,\n });\n }, [\n connection,\n fieldNames,\n pagination,\n dataTableExplorerStore,\n rowFilter,\n sorting,\n tableName,\n ]);\n\n useEffect(() => {\n if (connection.status !== 'ready' || !tableName) {\n dataTableExplorerStore.getState().setFilteredCount({isLoading: false});\n dataTableExplorerStore.getState().setClient(null);\n return;\n }\n\n const {client: newClient, cleanup} = connectDataTableExplorerCountClient({\n connection,\n filterStable: true,\n selection,\n store: dataTableExplorerStore,\n tableName,\n target: 'filtered',\n });\n dataTableExplorerStore.getState().setClient(newClient);\n\n return () => {\n cleanup();\n dataTableExplorerStore.getState().setClient(null);\n };\n }, [connection, dataTableExplorerStore, selection, tableName]);\n\n useEffect(() => {\n if (connection.status !== 'ready' || !tableName) {\n dataTableExplorerStore.getState().setTotalCount({isLoading: false});\n return;\n }\n\n const {cleanup} = connectDataTableExplorerCountClient({\n connection,\n store: dataTableExplorerStore,\n tableName,\n target: 'total',\n });\n\n return cleanup;\n }, [connection, dataTableExplorerStore, tableName]);\n\n useEffect(() => {\n if (connection.status !== 'ready' || !fields.length) {\n dataTableExplorerStore.getState().clearSummaries();\n return;\n }\n\n return connectDataTableExplorerSummaryClients({\n categoryLimit,\n connection,\n fields,\n selection,\n store: dataTableExplorerStore,\n summaryBins,\n tableName,\n });\n }, [\n categoryLimit,\n connection,\n fields,\n dataTableExplorerStore,\n selection,\n summaryBins,\n tableName,\n ]);\n\n // Client is not returned - it's stored in the dataTableExplorerStore\n return {client: null};\n}\n"]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Selection } from '@uwdata/mosaic-core';
|
|
2
|
+
import type { DataTableExplorerStoreState } from '../createDataTableExplorerStore';
|
|
3
|
+
import type { DataTableExplorerPaginationState, DataTableExplorerSorting } from '../types';
|
|
4
|
+
import { buildDataTableExplorerBaseQuery } from '../utils';
|
|
5
|
+
export type UseDataTableExplorerQueryStateOptions = {
|
|
6
|
+
pagination: DataTableExplorerPaginationState;
|
|
7
|
+
rowSelectionVersion: number;
|
|
8
|
+
schema: DataTableExplorerStoreState['schema'];
|
|
9
|
+
selection: Selection;
|
|
10
|
+
selectionVersion: number;
|
|
11
|
+
sorting: DataTableExplorerSorting;
|
|
12
|
+
tableName: string;
|
|
13
|
+
};
|
|
14
|
+
export type UseDataTableExplorerQueryStateReturn = {
|
|
15
|
+
baseQuery: ReturnType<typeof buildDataTableExplorerBaseQuery>;
|
|
16
|
+
datasetId: string;
|
|
17
|
+
fieldNames: string[];
|
|
18
|
+
fields: DataTableExplorerStoreState['schema']['fields'];
|
|
19
|
+
hasFilters: boolean;
|
|
20
|
+
pageQuery: string;
|
|
21
|
+
rowFilter: ReturnType<Selection['predicate']>;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Derives the dataTableExplorer's field and SQL state from the current schema,
|
|
25
|
+
* selection, sorting, and pagination state.
|
|
26
|
+
*/
|
|
27
|
+
export declare function useDataTableExplorerQueryState({ pagination, rowSelectionVersion, schema, selection, selectionVersion, sorting, tableName, }: UseDataTableExplorerQueryStateOptions): UseDataTableExplorerQueryStateReturn;
|
|
28
|
+
//# sourceMappingURL=useDataTableExplorerQueryState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDataTableExplorerQueryState.d.ts","sourceRoot":"","sources":["../../../src/data-table-explorer/hooks/useDataTableExplorerQueryState.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAC,2BAA2B,EAAC,MAAM,iCAAiC,CAAC;AACjF,OAAO,KAAK,EACV,gCAAgC,EAChC,wBAAwB,EACzB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,+BAA+B,EAEhC,MAAM,UAAU,CAAC;AAElB,MAAM,MAAM,qCAAqC,GAAG;IAClD,UAAU,EAAE,gCAAgC,CAAC;IAC7C,mBAAmB,EAAE,MAAM,CAAC;IAC5B,MAAM,EAAE,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IAC9C,SAAS,EAAE,SAAS,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,wBAAwB,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,oCAAoC,GAAG;IACjD,SAAS,EAAE,UAAU,CAAC,OAAO,+BAA+B,CAAC,CAAC;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,2BAA2B,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC;IACxD,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;CAC/C,CAAC;AAEF;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,EAC7C,UAAU,EACV,mBAAmB,EACnB,MAAM,EACN,SAAS,EACT,gBAAgB,EAChB,OAAO,EACP,SAAS,GACV,EAAE,qCAAqC,GAAG,oCAAoC,CA4C9E"}
|