@carto/ps-react-ui 4.4.0-chat-ui.5 → 4.4.0-chat-ui.7
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/dist/category-DwaeYjpX.js +656 -0
- package/dist/category-DwaeYjpX.js.map +1 -0
- package/dist/change-column-Cidl_M-4.js +1110 -0
- package/dist/change-column-Cidl_M-4.js.map +1 -0
- package/dist/chat.js +622 -673
- package/dist/chat.js.map +1 -1
- package/dist/components.js.map +1 -1
- package/dist/data-zoom-layout-DVYB8mIx.js +29 -0
- package/dist/data-zoom-layout-DVYB8mIx.js.map +1 -0
- package/dist/download-config-C7hf33ip.js +58 -0
- package/dist/download-config-C7hf33ip.js.map +1 -0
- package/dist/echart-CU0KmClP.js +176 -0
- package/dist/echart-CU0KmClP.js.map +1 -0
- package/dist/exports-Cr43OCul.js.map +1 -1
- package/dist/exports-Cx-f6m6U.js +63 -0
- package/dist/exports-Cx-f6m6U.js.map +1 -0
- package/dist/formatter-B9Bxn1k7.js +6 -0
- package/dist/formatter-B9Bxn1k7.js.map +1 -0
- package/dist/formula-DuC0NQLH.js +79 -0
- package/dist/formula-DuC0NQLH.js.map +1 -0
- package/dist/lasso-tool-BYbxrJ-7.js.map +1 -1
- package/dist/markdown-BD1jcknS.js +8326 -0
- package/dist/markdown-BD1jcknS.js.map +1 -0
- package/dist/option-builders-F-c9ELi1.js +122 -0
- package/dist/option-builders-F-c9ELi1.js.map +1 -0
- package/dist/options-CthfUJDz.js +46 -0
- package/dist/options-CthfUJDz.js.map +1 -0
- package/dist/png-item-CS4z1iSH.js +45 -0
- package/dist/png-item-CS4z1iSH.js.map +1 -0
- package/dist/range-l4fNHLEg.js +213 -0
- package/dist/range-l4fNHLEg.js.map +1 -0
- package/dist/resolve-theme-color-BdojIw0K.js +47 -0
- package/dist/resolve-theme-color-BdojIw0K.js.map +1 -0
- package/dist/row-DZSP99LW.js +34 -0
- package/dist/row-DZSP99LW.js.map +1 -0
- package/dist/series-DLNHDWs0.js +90 -0
- package/dist/series-DLNHDWs0.js.map +1 -0
- package/dist/shared-resize-observer-98b1SK1e.js +17 -0
- package/dist/shared-resize-observer-98b1SK1e.js.map +1 -0
- package/dist/smart-tooltip-D4vwQpFf.js.map +1 -1
- package/dist/spread-CngWB5KF.js +68 -0
- package/dist/spread-CngWB5KF.js.map +1 -0
- package/dist/style-DVnT6HC1.js +131 -0
- package/dist/style-DVnT6HC1.js.map +1 -0
- package/dist/styles-cohnxh9F.js +23 -0
- package/dist/styles-cohnxh9F.js.map +1 -0
- package/dist/table-CQCAnDLb.js +388 -0
- package/dist/table-CQCAnDLb.js.map +1 -0
- package/dist/tooltip-BDnrRKrp.js.map +1 -1
- package/dist/transforms-Cdx4fkU5.js +106 -0
- package/dist/transforms-Cdx4fkU5.js.map +1 -0
- package/dist/types/chat/containers/chat-content.d.ts +2 -2
- package/dist/types/chat/containers/styles.d.ts +10 -27
- package/dist/types/chat/feedback/chat-tool-code-area.d.ts +1 -3
- package/dist/types/chat/index.d.ts +1 -1
- package/dist/types/chat/types.d.ts +35 -3
- package/dist/types/components/basemaps/basemaps.d.ts +20 -0
- package/dist/types/components/geolocation-controls/geolocation-controls.d.ts +11 -0
- package/dist/types/components/lasso-tool/lasso-tool-inline.d.ts +17 -0
- package/dist/types/components/lasso-tool/lasso-tool.d.ts +21 -0
- package/dist/types/components/list-data/list-data.d.ts +16 -0
- package/dist/types/components/measurement-tools/measurement-tools.d.ts +20 -0
- package/dist/types/components/smart-tooltip/smart-tooltip.d.ts +17 -0
- package/dist/types/components/tooltip/tooltip.d.ts +13 -0
- package/dist/types/components/zoom-controls/zoom-controls.d.ts +16 -0
- package/dist/types/hooks/index.d.ts +0 -1
- package/dist/types/hooks/use-widget-ref.d.ts +9 -6
- package/dist/types/widgets/actions/brush-toggle/brush-overlay.d.ts +24 -0
- package/dist/types/widgets/actions/brush-toggle/brush-toggle.d.ts +29 -0
- package/dist/types/widgets/actions/brush-toggle/hit-test.d.ts +19 -0
- package/dist/types/widgets/actions/brush-toggle/hit-test.test.d.ts +1 -0
- package/dist/types/widgets/actions/brush-toggle/style.d.ts +21 -0
- package/dist/types/widgets/actions/brush-toggle/types.d.ts +73 -0
- package/dist/types/widgets/actions/download/download.d.ts +11 -0
- package/dist/types/widgets/actions/download/exports.d.ts +15 -0
- package/dist/types/widgets/actions/fullscreen/fullscreen.d.ts +13 -0
- package/dist/types/widgets/actions/index.d.ts +7 -5
- package/dist/types/widgets/actions/lock-selection/types.d.ts +2 -0
- package/dist/types/widgets/actions/relative-data/relative-data.d.ts +8 -2
- package/dist/types/widgets/actions/relative-data/types.d.ts +2 -0
- package/dist/types/widgets/actions/zoom-toggle/zoom-toggle.d.ts +4 -0
- package/dist/types/widgets/bar/config.d.ts +8 -4
- package/dist/types/widgets/category/category-ui.d.ts +3 -0
- package/dist/types/widgets/category/components/category-bar.d.ts +3 -0
- package/dist/types/widgets/category/components/category-legend.d.ts +3 -0
- package/dist/types/widgets/category/components/category-row-multi.d.ts +5 -1
- package/dist/types/widgets/category/components/category-row-other.d.ts +3 -0
- package/dist/types/widgets/category/components/category-row-single.d.ts +5 -1
- package/dist/types/widgets/category/config.d.ts +11 -0
- package/dist/types/widgets/category/index.d.ts +10 -2
- package/dist/types/widgets/category/style.d.ts +1 -0
- package/dist/types/widgets/category/types.d.ts +1 -0
- package/dist/types/widgets/echart/echart-ui.d.ts +7 -0
- package/dist/types/widgets/echart/echart.d.ts +6 -0
- package/dist/types/widgets/echart/options.d.ts +7 -0
- package/dist/types/widgets/echart/shared-resize-observer.d.ts +12 -0
- package/dist/types/widgets/echart/types.d.ts +5 -1
- package/dist/types/widgets/echart/utils.d.ts +54 -7
- package/dist/types/widgets/echart/utils.test.d.ts +1 -0
- package/dist/types/widgets/error/error.d.ts +10 -0
- package/dist/types/widgets/formula/components/item.d.ts +3 -0
- package/dist/types/widgets/formula/components/prefix.d.ts +3 -0
- package/dist/types/widgets/formula/components/row.d.ts +3 -0
- package/dist/types/widgets/formula/components/series.d.ts +3 -0
- package/dist/types/widgets/formula/components/suffix.d.ts +3 -0
- package/dist/types/widgets/formula/components/value.d.ts +3 -0
- package/dist/types/widgets/formula/config.d.ts +11 -0
- package/dist/types/widgets/formula/config.test.d.ts +1 -0
- package/dist/types/widgets/formula/formula-ui.d.ts +3 -0
- package/dist/types/widgets/histogram/config.d.ts +18 -2
- package/dist/types/widgets/histogram/index.d.ts +2 -1
- package/dist/types/widgets/histogram/types.d.ts +6 -3
- package/dist/types/widgets/loader/loader.d.ts +22 -0
- package/dist/types/widgets/loader/utils.d.ts +26 -3
- package/dist/types/widgets/markdown/config.d.ts +10 -0
- package/dist/types/widgets/markdown/markdown-ui.d.ts +7 -0
- package/dist/types/widgets/markdown/markdown.d.ts +3 -0
- package/dist/types/widgets/no-data/no-data.d.ts +3 -2
- package/dist/types/widgets/no-data/types.d.ts +5 -1
- package/dist/types/widgets/note/note.d.ts +10 -0
- package/dist/types/widgets/pie/config.d.ts +8 -4
- package/dist/types/widgets/range/components/range-item.d.ts +3 -0
- package/dist/types/widgets/range/config.d.ts +5 -0
- package/dist/types/widgets/range/range-ui.d.ts +3 -0
- package/dist/types/widgets/scatterplot/config.d.ts +7 -3
- package/dist/types/widgets/selection-summary/selection-summary.d.ts +11 -0
- package/dist/types/widgets/skeleton-loader/skeleton-loader.d.ts +10 -0
- package/dist/types/widgets/spread/components/max-value.d.ts +3 -0
- package/dist/types/widgets/spread/components/min-value.d.ts +3 -0
- package/dist/types/widgets/spread/components/separator.d.ts +3 -0
- package/dist/types/widgets/spread/config.d.ts +11 -0
- package/dist/types/widgets/spread/spread-ui.d.ts +3 -0
- package/dist/types/widgets/stores/index.d.ts +3 -2
- package/dist/types/widgets/stores/types.d.ts +12 -10
- package/dist/types/widgets/stores/use-widget-selector.d.ts +35 -0
- package/dist/types/widgets/stores/widget-store-branches.test.d.ts +1 -0
- package/dist/types/widgets/stores/widget-store-performance.test.d.ts +1 -0
- package/dist/types/widgets/stores/widget-store.d.ts +48 -27
- package/dist/types/widgets/subheader/subheader.d.ts +11 -0
- package/dist/types/widgets/table/config.d.ts +8 -3
- package/dist/types/widgets/table/config.test.d.ts +1 -0
- package/dist/types/widgets/table/hooks/use-pagination.d.ts +11 -3
- package/dist/types/widgets/table/hooks/use-selection.d.ts +11 -2
- package/dist/types/widgets/table/hooks/use-sort.d.ts +11 -3
- package/dist/types/widgets/table/index.d.ts +6 -2
- package/dist/types/widgets/table/types.d.ts +1 -1
- package/dist/types/widgets/timeseries/config.d.ts +8 -4
- package/dist/types/widgets/utils/chart-config/download-config.d.ts +3 -0
- package/dist/types/widgets/{_shared → utils}/chart-config/index.d.ts +3 -1
- package/dist/types/widgets/{_shared → utils}/chart-config/option-builders.d.ts +41 -9
- package/dist/types/widgets/utils/chart-config/option-builders.test.d.ts +1 -0
- package/dist/types/widgets/utils/formatter.d.ts +2 -0
- package/dist/types/widgets/utils/index.d.ts +7 -0
- package/dist/types/widgets/wrapper/components/actions.d.ts +3 -0
- package/dist/types/widgets/wrapper/components/options.d.ts +3 -0
- package/dist/types/widgets/wrapper/components/title.d.ts +3 -0
- package/dist/types/widgets/wrapper/wrapper-ui.d.ts +14 -0
- package/dist/types/widgets/wrapper/wrapper.d.ts +14 -0
- package/dist/types/widgets-v2/actions/brush-toggle/brush-toggle.d.ts +56 -0
- package/dist/types/widgets-v2/actions/brush-toggle/index.d.ts +3 -0
- package/dist/types/widgets-v2/actions/brush-toggle/labels.d.ts +5 -0
- package/dist/types/widgets-v2/actions/brush-toggle/style.d.ts +12 -0
- package/dist/types/widgets-v2/actions/brush-toggle/transforms.d.ts +11 -0
- package/dist/types/widgets-v2/actions/change-column/change-column-icon.d.ts +2 -0
- package/dist/types/widgets-v2/actions/change-column/change-column.d.ts +29 -0
- package/dist/types/widgets-v2/actions/change-column/index.d.ts +3 -0
- package/dist/types/widgets-v2/actions/change-column/labels.d.ts +5 -0
- package/dist/types/widgets-v2/actions/change-column/sortable-column-item.d.ts +14 -0
- package/dist/types/widgets-v2/actions/change-column/style.d.ts +33 -0
- package/dist/types/widgets-v2/actions/change-column/types.d.ts +10 -0
- package/dist/types/widgets-v2/actions/download/download.d.ts +18 -0
- package/dist/types/widgets-v2/actions/download/exports.d.ts +37 -0
- package/dist/types/widgets-v2/actions/download/icons.d.ts +12 -0
- package/dist/types/widgets-v2/actions/download/index.d.ts +6 -0
- package/dist/types/widgets-v2/actions/download/labels.d.ts +11 -0
- package/dist/types/widgets-v2/actions/download/png-item.d.ts +24 -0
- package/dist/types/widgets-v2/actions/download/style.d.ts +1 -0
- package/dist/types/widgets-v2/actions/download/types.d.ts +35 -0
- package/dist/types/widgets-v2/actions/fullscreen/fullscreen.d.ts +59 -0
- package/dist/types/widgets-v2/actions/fullscreen/index.d.ts +3 -0
- package/dist/types/widgets-v2/actions/fullscreen/labels.d.ts +5 -0
- package/dist/types/widgets-v2/actions/fullscreen/style.d.ts +48 -0
- package/dist/types/widgets-v2/actions/fullscreen/types.d.ts +14 -0
- package/dist/types/widgets-v2/actions/index.d.ts +9 -0
- package/dist/types/widgets-v2/actions/lock-selection/index.d.ts +3 -0
- package/dist/types/widgets-v2/actions/lock-selection/labels.d.ts +6 -0
- package/dist/types/widgets-v2/actions/lock-selection/lock-selection.d.ts +36 -0
- package/dist/types/widgets-v2/actions/lock-selection/style.d.ts +12 -0
- package/dist/types/widgets-v2/actions/lock-selection/transforms.d.ts +6 -0
- package/dist/types/widgets-v2/actions/relative-data/index.d.ts +3 -0
- package/dist/types/widgets-v2/actions/relative-data/labels.d.ts +5 -0
- package/dist/types/widgets-v2/actions/relative-data/relative-data.d.ts +39 -0
- package/dist/types/widgets-v2/actions/relative-data/style.d.ts +12 -0
- package/dist/types/widgets-v2/actions/relative-data/transforms.d.ts +30 -0
- package/dist/types/widgets-v2/actions/relative-data/transforms.test.d.ts +1 -0
- package/dist/types/widgets-v2/actions/searcher/filter.d.ts +6 -0
- package/dist/types/widgets-v2/actions/searcher/index.d.ts +4 -0
- package/dist/types/widgets-v2/actions/searcher/labels.d.ts +7 -0
- package/dist/types/widgets-v2/actions/searcher/searcher-toggle.d.ts +23 -0
- package/dist/types/widgets-v2/actions/searcher/searcher.d.ts +11 -0
- package/dist/types/widgets-v2/actions/searcher/style.d.ts +16 -0
- package/dist/types/widgets-v2/actions/stack-toggle/index.d.ts +3 -0
- package/dist/types/widgets-v2/actions/stack-toggle/labels.d.ts +5 -0
- package/dist/types/widgets-v2/actions/stack-toggle/stack-toggle.d.ts +10 -0
- package/dist/types/widgets-v2/actions/stack-toggle/style.d.ts +12 -0
- package/dist/types/widgets-v2/actions/stack-toggle/transforms.d.ts +13 -0
- package/dist/types/widgets-v2/actions/stack-toggle/transforms.test.d.ts +1 -0
- package/dist/types/widgets-v2/actions/zoom-toggle/index.d.ts +3 -0
- package/dist/types/widgets-v2/actions/zoom-toggle/labels.d.ts +5 -0
- package/dist/types/widgets-v2/actions/zoom-toggle/style.d.ts +12 -0
- package/dist/types/widgets-v2/actions/zoom-toggle/transforms.d.ts +51 -0
- package/dist/types/widgets-v2/actions/zoom-toggle/transforms.test.d.ts +1 -0
- package/dist/types/widgets-v2/actions/zoom-toggle/zoom-toggle.d.ts +35 -0
- package/dist/types/widgets-v2/bar/download.d.ts +24 -0
- package/dist/types/widgets-v2/bar/index.d.ts +4 -0
- package/dist/types/widgets-v2/bar/options.d.ts +43 -0
- package/dist/types/widgets-v2/bar/options.test.d.ts +1 -0
- package/dist/types/widgets-v2/bar/skeleton.d.ts +6 -0
- package/dist/types/widgets-v2/bar/types.d.ts +46 -0
- package/dist/types/widgets-v2/category/category-ui.d.ts +81 -0
- package/dist/types/widgets-v2/category/category.d.ts +48 -0
- package/dist/types/widgets-v2/category/components/category-bar-stacked.d.ts +28 -0
- package/dist/types/widgets-v2/category/components/category-bar.d.ts +23 -0
- package/dist/types/widgets-v2/category/components/category-legend.d.ts +18 -0
- package/dist/types/widgets-v2/category/components/category-row-multi.d.ts +31 -0
- package/dist/types/widgets-v2/category/components/category-row-other.d.ts +13 -0
- package/dist/types/widgets-v2/category/components/category-row-single.d.ts +28 -0
- package/dist/types/widgets-v2/category/components/category-row-stacked.d.ts +38 -0
- package/dist/types/widgets-v2/category/download.d.ts +16 -0
- package/dist/types/widgets-v2/category/download.test.d.ts +1 -0
- package/dist/types/widgets-v2/category/index.d.ts +10 -0
- package/dist/types/widgets-v2/category/skeleton.d.ts +11 -0
- package/dist/types/widgets-v2/category/style.d.ts +166 -0
- package/dist/types/widgets-v2/category/types.d.ts +53 -0
- package/dist/types/widgets-v2/echart/echart-ui.d.ts +44 -0
- package/dist/types/widgets-v2/echart/echart.d.ts +75 -0
- package/dist/types/widgets-v2/echart/index.d.ts +4 -0
- package/dist/types/widgets-v2/echart/shared-resize-observer.d.ts +5 -0
- package/dist/types/widgets-v2/echart/shared-resize-observer.test.d.ts +1 -0
- package/dist/types/widgets-v2/echart/style.d.ts +6 -0
- package/dist/types/widgets-v2/echart/use-chart-selection.d.ts +51 -0
- package/dist/types/widgets-v2/formula/delta.d.ts +22 -0
- package/dist/types/widgets-v2/formula/download.d.ts +20 -0
- package/dist/types/widgets-v2/formula/formula-ui.d.ts +20 -0
- package/dist/types/widgets-v2/formula/formula.d.ts +8 -0
- package/dist/types/widgets-v2/formula/index.d.ts +11 -0
- package/dist/types/widgets-v2/formula/note.d.ts +11 -0
- package/dist/types/widgets-v2/formula/prefix.d.ts +12 -0
- package/dist/types/widgets-v2/formula/series.d.ts +16 -0
- package/dist/types/widgets-v2/formula/skeleton.d.ts +4 -0
- package/dist/types/widgets-v2/formula/style.d.ts +29 -0
- package/dist/types/widgets-v2/formula/suffix.d.ts +12 -0
- package/dist/types/widgets-v2/formula/types.d.ts +43 -0
- package/dist/types/widgets-v2/formula/value.d.ts +14 -0
- package/dist/types/widgets-v2/histogram/download.d.ts +17 -0
- package/dist/types/widgets-v2/histogram/download.test.d.ts +1 -0
- package/dist/types/widgets-v2/histogram/index.d.ts +5 -0
- package/dist/types/widgets-v2/histogram/options.d.ts +42 -0
- package/dist/types/widgets-v2/histogram/options.test.d.ts +1 -0
- package/dist/types/widgets-v2/histogram/skeleton.d.ts +9 -0
- package/dist/types/widgets-v2/histogram/transforms.d.ts +17 -0
- package/dist/types/widgets-v2/histogram/transforms.test.d.ts +1 -0
- package/dist/types/widgets-v2/histogram/types.d.ts +51 -0
- package/dist/types/widgets-v2/index.d.ts +108 -0
- package/dist/types/widgets-v2/markdown/download.d.ts +16 -0
- package/dist/types/widgets-v2/markdown/download.test.d.ts +1 -0
- package/dist/types/widgets-v2/markdown/index.d.ts +6 -0
- package/dist/types/widgets-v2/markdown/markdown-content.d.ts +34 -0
- package/dist/types/widgets-v2/markdown/markdown-ui.d.ts +12 -0
- package/dist/types/widgets-v2/markdown/markdown.d.ts +6 -0
- package/dist/types/widgets-v2/markdown/skeleton.d.ts +4 -0
- package/dist/types/widgets-v2/markdown/style.d.ts +61 -0
- package/dist/types/widgets-v2/markdown/types.d.ts +4 -0
- package/dist/types/widgets-v2/note/labels.d.ts +5 -0
- package/dist/types/widgets-v2/note/style.d.ts +26 -0
- package/dist/types/widgets-v2/note/widget-note.d.ts +46 -0
- package/dist/types/widgets-v2/pie/download.d.ts +17 -0
- package/dist/types/widgets-v2/pie/download.test.d.ts +1 -0
- package/dist/types/widgets-v2/pie/index.d.ts +4 -0
- package/dist/types/widgets-v2/pie/options.d.ts +35 -0
- package/dist/types/widgets-v2/pie/options.test.d.ts +1 -0
- package/dist/types/widgets-v2/pie/skeleton.d.ts +4 -0
- package/dist/types/widgets-v2/pie/types.d.ts +57 -0
- package/dist/types/widgets-v2/provider/widget-provider.d.ts +32 -0
- package/dist/types/widgets-v2/range/index.d.ts +4 -0
- package/dist/types/widgets-v2/range/range-ui.d.ts +27 -0
- package/dist/types/widgets-v2/range/range.d.ts +24 -0
- package/dist/types/widgets-v2/range/skeleton.d.ts +9 -0
- package/dist/types/widgets-v2/range/style.d.ts +40 -0
- package/dist/types/widgets-v2/range/types.d.ts +37 -0
- package/dist/types/widgets-v2/scatterplot/download.d.ts +16 -0
- package/dist/types/widgets-v2/scatterplot/download.test.d.ts +1 -0
- package/dist/types/widgets-v2/scatterplot/index.d.ts +5 -0
- package/dist/types/widgets-v2/scatterplot/options.d.ts +42 -0
- package/dist/types/widgets-v2/scatterplot/options.test.d.ts +1 -0
- package/dist/types/widgets-v2/scatterplot/skeleton.d.ts +12 -0
- package/dist/types/widgets-v2/scatterplot/transforms.d.ts +17 -0
- package/dist/types/widgets-v2/scatterplot/transforms.test.d.ts +1 -0
- package/dist/types/widgets-v2/scatterplot/types.d.ts +54 -0
- package/dist/types/widgets-v2/selection-summary/labels.d.ts +6 -0
- package/dist/types/widgets-v2/selection-summary/selection-summary.d.ts +22 -0
- package/dist/types/widgets-v2/selection-summary/style.d.ts +23 -0
- package/dist/types/widgets-v2/spread/download.d.ts +15 -0
- package/dist/types/widgets-v2/spread/download.test.d.ts +1 -0
- package/dist/types/widgets-v2/spread/index.d.ts +6 -0
- package/dist/types/widgets-v2/spread/separator.d.ts +7 -0
- package/dist/types/widgets-v2/spread/skeleton.d.ts +9 -0
- package/dist/types/widgets-v2/spread/spread-ui.d.ts +18 -0
- package/dist/types/widgets-v2/spread/spread.d.ts +5 -0
- package/dist/types/widgets-v2/spread/types.d.ts +25 -0
- package/dist/types/widgets-v2/state/labels.d.ts +7 -0
- package/dist/types/widgets-v2/state/labels.test.d.ts +1 -0
- package/dist/types/widgets-v2/state/style.d.ts +19 -0
- package/dist/types/widgets-v2/state/widget-state.d.ts +19 -0
- package/dist/types/widgets-v2/stores/index.d.ts +8 -0
- package/dist/types/widgets-v2/stores/pipeline-middleware.d.ts +5 -0
- package/dist/types/widgets-v2/stores/pipeline-middleware.test.d.ts +1 -0
- package/dist/types/widgets-v2/stores/transforms.d.ts +4 -0
- package/dist/types/widgets-v2/stores/transforms.test.d.ts +1 -0
- package/dist/types/widgets-v2/stores/types.d.ts +55 -0
- package/dist/types/widgets-v2/stores/use-echart-instance.d.ts +15 -0
- package/dist/types/widgets-v2/stores/use-transform-enabled.d.ts +17 -0
- package/dist/types/widgets-v2/stores/use-transform.d.ts +12 -0
- package/dist/types/widgets-v2/stores/widget-context.d.ts +2 -0
- package/dist/types/widgets-v2/stores/widget-store-registry.d.ts +74 -0
- package/dist/types/widgets-v2/stores/widget-store-registry.test.d.ts +1 -0
- package/dist/types/widgets-v2/subheader/style.d.ts +10 -0
- package/dist/types/widgets-v2/subheader/subheader.d.ts +11 -0
- package/dist/types/widgets-v2/table/download.d.ts +18 -0
- package/dist/types/widgets-v2/table/download.test.d.ts +1 -0
- package/dist/types/widgets-v2/table/helpers.d.ts +32 -0
- package/dist/types/widgets-v2/table/helpers.test.d.ts +1 -0
- package/dist/types/widgets-v2/table/index.d.ts +7 -0
- package/dist/types/widgets-v2/table/labels.d.ts +22 -0
- package/dist/types/widgets-v2/table/skeleton.d.ts +22 -0
- package/dist/types/widgets-v2/table/style.d.ts +40 -0
- package/dist/types/widgets-v2/table/table-ui.d.ts +44 -0
- package/dist/types/widgets-v2/table/table.d.ts +50 -0
- package/dist/types/widgets-v2/table/types.d.ts +48 -0
- package/dist/types/widgets-v2/test-utils.d.ts +52 -0
- package/dist/types/widgets-v2/timeseries/download.d.ts +17 -0
- package/dist/types/widgets-v2/timeseries/download.test.d.ts +1 -0
- package/dist/types/widgets-v2/timeseries/index.d.ts +4 -0
- package/dist/types/widgets-v2/timeseries/options.d.ts +39 -0
- package/dist/types/widgets-v2/timeseries/options.test.d.ts +1 -0
- package/dist/types/widgets-v2/timeseries/skeleton.d.ts +8 -0
- package/dist/types/widgets-v2/timeseries/types.d.ts +60 -0
- package/dist/types/widgets-v2/toolbox/labels.d.ts +5 -0
- package/dist/types/widgets-v2/toolbox/style.d.ts +30 -0
- package/dist/types/widgets-v2/toolbox/toolbox.d.ts +49 -0
- package/dist/types/widgets-v2/types.d.ts +25 -0
- package/dist/types/widgets-v2/utils/data-zoom-layout.d.ts +11 -0
- package/dist/types/widgets-v2/utils/index.d.ts +3 -0
- package/dist/types/widgets-v2/utils/merge-options.d.ts +12 -0
- package/dist/types/widgets-v2/utils/merge-options.test.d.ts +1 -0
- package/dist/types/widgets-v2/utils/resolve-theme-color.d.ts +18 -0
- package/dist/types/widgets-v2/utils/resolve-theme-color.test.d.ts +1 -0
- package/dist/types/widgets-v2/wrapper/index.d.ts +4 -0
- package/dist/types/widgets-v2/wrapper/labels.d.ts +6 -0
- package/dist/types/widgets-v2/wrapper/style.d.ts +111 -0
- package/dist/types/widgets-v2/wrapper/widget-actions.d.ts +22 -0
- package/dist/types/widgets-v2/wrapper/widget-content.d.ts +12 -0
- package/dist/types/widgets-v2/wrapper/widget-wrapper.d.ts +51 -0
- package/dist/use-transform-DXPN3nY7.js +110 -0
- package/dist/use-transform-DXPN3nY7.js.map +1 -0
- package/dist/use-widget-ref-Ddr_SlJJ.js +22 -0
- package/dist/use-widget-ref-Ddr_SlJJ.js.map +1 -0
- package/dist/use-widget-selector-DFl2hW0R.js +12 -0
- package/dist/use-widget-selector-DFl2hW0R.js.map +1 -0
- package/dist/{utils-idmvq0Oa.js → utils-BOhInag6.js} +95 -70
- package/dist/utils-BOhInag6.js.map +1 -0
- package/dist/widget-context-DTGO0Yta.js +13 -0
- package/dist/widget-context-DTGO0Yta.js.map +1 -0
- package/dist/widget-store-Bw5zRUGg.js +261 -0
- package/dist/widget-store-Bw5zRUGg.js.map +1 -0
- package/dist/widget-store-registry-_W4Z4xp-.js +178 -0
- package/dist/widget-store-registry-_W4Z4xp-.js.map +1 -0
- package/dist/widgets/actions.js +1120 -760
- package/dist/widgets/actions.js.map +1 -1
- package/dist/widgets/bar.js +87 -97
- package/dist/widgets/bar.js.map +1 -1
- package/dist/widgets/category.js +247 -236
- package/dist/widgets/category.js.map +1 -1
- package/dist/widgets/echart.js +100 -99
- package/dist/widgets/echart.js.map +1 -1
- package/dist/widgets/error.js +37 -2
- package/dist/widgets/error.js.map +1 -1
- package/dist/widgets/formula.js +78 -67
- package/dist/widgets/formula.js.map +1 -1
- package/dist/widgets/histogram.js +116 -92
- package/dist/widgets/histogram.js.map +1 -1
- package/dist/widgets/loader.js +53 -60
- package/dist/widgets/loader.js.map +1 -1
- package/dist/widgets/markdown.js +55 -53
- package/dist/widgets/markdown.js.map +1 -1
- package/dist/widgets/no-data.js +58 -2
- package/dist/widgets/no-data.js.map +1 -1
- package/dist/widgets/note.js +121 -2
- package/dist/widgets/note.js.map +1 -1
- package/dist/widgets/pie.js +148 -112
- package/dist/widgets/pie.js.map +1 -1
- package/dist/widgets/range.js +147 -144
- package/dist/widgets/range.js.map +1 -1
- package/dist/widgets/scatterplot.js +52 -65
- package/dist/widgets/scatterplot.js.map +1 -1
- package/dist/widgets/selection-summary.js.map +1 -1
- package/dist/widgets/skeleton-loader.js +18 -17
- package/dist/widgets/skeleton-loader.js.map +1 -1
- package/dist/widgets/spread.js +108 -90
- package/dist/widgets/spread.js.map +1 -1
- package/dist/widgets/stores.js +5 -2
- package/dist/widgets/stores.js.map +1 -1
- package/dist/widgets/subheader.js +29 -29
- package/dist/widgets/subheader.js.map +1 -1
- package/dist/widgets/table.js +429 -440
- package/dist/widgets/table.js.map +1 -1
- package/dist/widgets/timeseries.js +56 -69
- package/dist/widgets/timeseries.js.map +1 -1
- package/dist/widgets/toolbar-actions.js +50 -50
- package/dist/widgets/utils.js +34 -0
- package/dist/widgets/utils.js.map +1 -0
- package/dist/widgets/wrapper.js +156 -158
- package/dist/widgets/wrapper.js.map +1 -1
- package/dist/widgets-v2/actions.js +43 -0
- package/dist/widgets-v2/actions.js.map +1 -0
- package/dist/widgets-v2/bar.js +331 -0
- package/dist/widgets-v2/bar.js.map +1 -0
- package/dist/widgets-v2/category.js +105 -0
- package/dist/widgets-v2/category.js.map +1 -0
- package/dist/widgets-v2/echart.js +57 -0
- package/dist/widgets-v2/echart.js.map +1 -0
- package/dist/widgets-v2/formula.js +75 -0
- package/dist/widgets-v2/formula.js.map +1 -0
- package/dist/widgets-v2/histogram.js +354 -0
- package/dist/widgets-v2/histogram.js.map +1 -0
- package/dist/widgets-v2/markdown.js +69 -0
- package/dist/widgets-v2/markdown.js.map +1 -0
- package/dist/widgets-v2/pie.js +388 -0
- package/dist/widgets-v2/pie.js.map +1 -0
- package/dist/widgets-v2/range.js +52 -0
- package/dist/widgets-v2/range.js.map +1 -0
- package/dist/widgets-v2/scatterplot.js +412 -0
- package/dist/widgets-v2/scatterplot.js.map +1 -0
- package/dist/widgets-v2/spread.js +73 -0
- package/dist/widgets-v2/spread.js.map +1 -0
- package/dist/widgets-v2/stores.js +42 -0
- package/dist/widgets-v2/stores.js.map +1 -0
- package/dist/widgets-v2/table.js +79 -0
- package/dist/widgets-v2/table.js.map +1 -0
- package/dist/widgets-v2/timeseries.js +359 -0
- package/dist/widgets-v2/timeseries.js.map +1 -0
- package/dist/widgets-v2/utils.js +8 -0
- package/dist/widgets-v2/utils.js.map +1 -0
- package/dist/widgets-v2.js +954 -0
- package/dist/widgets-v2.js.map +1 -0
- package/package.json +84 -13
- package/src/chat/containers/chat-content.test.tsx +260 -6
- package/src/chat/containers/chat-content.tsx +137 -27
- package/src/chat/containers/chat-starter.tsx +2 -2
- package/src/chat/containers/styles.ts +16 -36
- package/src/chat/feedback/chat-tool-code-area.tsx +1 -1
- package/src/chat/feedback/chat-tool-group.tsx +1 -1
- package/src/chat/feedback/chat-tool-trace.tsx +6 -1
- package/src/chat/index.ts +1 -1
- package/src/chat/types.ts +36 -4
- package/src/components/basemaps/basemaps.tsx +20 -0
- package/src/components/geolocation-controls/geolocation-controls.tsx +11 -0
- package/src/components/lasso-tool/chip.test.tsx +176 -0
- package/src/components/lasso-tool/lasso-tool-inline.test.tsx +171 -0
- package/src/components/lasso-tool/lasso-tool-inline.tsx +17 -0
- package/src/components/lasso-tool/lasso-tool.test.tsx +198 -0
- package/src/components/lasso-tool/lasso-tool.tsx +21 -0
- package/src/components/list-data/list-data.test.tsx +73 -0
- package/src/components/list-data/list-data.tsx +16 -0
- package/src/components/measurement-tools/measurement-tools.tsx +20 -0
- package/src/components/no-data-alert/no-data-alert.test.tsx +38 -0
- package/src/components/responsive-drawer/responsive-drawer.test.tsx +68 -0
- package/src/components/smart-tooltip/smart-tooltip.tsx +17 -0
- package/src/components/tooltip/tooltip.tsx +13 -0
- package/src/components/zoom-controls/zoom-controls.tsx +16 -0
- package/src/hooks/index.ts +0 -1
- package/src/hooks/use-widget-ref.ts +10 -10
- package/src/widgets/README.md +13 -13
- package/src/widgets/actions/brush-toggle/brush-overlay.test.tsx +465 -0
- package/src/widgets/actions/brush-toggle/brush-overlay.tsx +408 -0
- package/src/widgets/actions/brush-toggle/brush-toggle.test.tsx +208 -0
- package/src/widgets/actions/brush-toggle/brush-toggle.tsx +133 -0
- package/src/widgets/actions/brush-toggle/hit-test.test.ts +65 -0
- package/src/widgets/actions/brush-toggle/hit-test.ts +45 -0
- package/src/widgets/actions/brush-toggle/style.ts +46 -0
- package/src/widgets/actions/brush-toggle/types.ts +78 -0
- package/src/widgets/actions/change-column/change-column-dnd.test.tsx +193 -0
- package/src/widgets/actions/change-column/change-column.test.tsx +1 -1
- package/src/widgets/actions/change-column/change-column.tsx +15 -15
- package/src/widgets/actions/change-column/sortable-column-item.test.tsx +124 -0
- package/src/widgets/actions/change-column/sortable-column-item.tsx +3 -1
- package/src/widgets/actions/download/download.test.tsx +1 -1
- package/src/widgets/actions/download/download.tsx +15 -3
- package/src/widgets/actions/download/exports.tsx +15 -0
- package/src/widgets/actions/fullscreen/fullscreen.tsx +20 -11
- package/src/widgets/actions/index.ts +21 -2
- package/src/widgets/actions/lock-selection/lock-selection.test.tsx +14 -0
- package/src/widgets/actions/lock-selection/lock-selection.tsx +26 -31
- package/src/widgets/actions/lock-selection/types.ts +2 -0
- package/src/widgets/actions/relative-data/relative-data.test.tsx +276 -1
- package/src/widgets/actions/relative-data/relative-data.tsx +113 -54
- package/src/widgets/actions/relative-data/types.ts +2 -0
- package/src/widgets/actions/searcher/searcher-toggle.tsx +11 -12
- package/src/widgets/actions/searcher/searcher.tsx +39 -42
- package/src/widgets/actions/stack-toggle/stack-toggle.test.tsx +4 -4
- package/src/widgets/actions/stack-toggle/stack-toggle.tsx +24 -32
- package/src/widgets/actions/zoom-toggle/zoom-toggle.test.tsx +322 -0
- package/src/widgets/actions/zoom-toggle/zoom-toggle.tsx +62 -80
- package/src/widgets/bar/config.ts +39 -34
- package/src/widgets/bar/style.ts +1 -1
- package/src/widgets/category/category-ui.tsx +41 -34
- package/src/widgets/category/components/category-bar.tsx +3 -0
- package/src/widgets/category/components/category-legend.tsx +3 -0
- package/src/widgets/category/components/category-row-multi.tsx +9 -2
- package/src/widgets/category/components/category-row-other.tsx +3 -0
- package/src/widgets/category/components/category-row-single.tsx +8 -1
- package/src/widgets/category/components/category-rows.test.tsx +213 -0
- package/src/widgets/category/config.ts +11 -0
- package/src/widgets/category/index.ts +13 -14
- package/src/widgets/category/style.ts +1 -0
- package/src/widgets/category/types.ts +1 -0
- package/src/widgets/echart/echart-ui.test.tsx +20 -16
- package/src/widgets/echart/echart-ui.tsx +18 -14
- package/src/widgets/echart/echart.tsx +19 -27
- package/src/widgets/echart/options.ts +8 -4
- package/src/widgets/echart/shared-resize-observer.ts +45 -0
- package/src/widgets/echart/types.ts +5 -1
- package/src/widgets/echart/utils.test.ts +277 -0
- package/src/widgets/echart/utils.ts +94 -21
- package/src/widgets/error/error.tsx +17 -9
- package/src/widgets/formula/components/item.tsx +3 -0
- package/src/widgets/formula/components/prefix.tsx +7 -6
- package/src/widgets/formula/components/row.tsx +7 -4
- package/src/widgets/formula/components/series.tsx +7 -6
- package/src/widgets/formula/components/suffix.tsx +7 -6
- package/src/widgets/formula/components/value.tsx +13 -18
- package/src/widgets/formula/config.test.ts +37 -0
- package/src/widgets/formula/config.ts +11 -0
- package/src/widgets/formula/formula-ui.tsx +4 -1
- package/src/widgets/histogram/config.ts +99 -24
- package/src/widgets/histogram/index.ts +6 -1
- package/src/widgets/histogram/style.ts +1 -1
- package/src/widgets/histogram/types.ts +9 -3
- package/src/widgets/loader/loader.tsx +53 -44
- package/src/widgets/loader/utils.ts +26 -3
- package/src/widgets/markdown/config.ts +10 -0
- package/src/widgets/markdown/markdown-ui.tsx +7 -0
- package/src/widgets/markdown/markdown.tsx +7 -7
- package/src/widgets/no-data/no-data.test.tsx +90 -40
- package/src/widgets/no-data/no-data.tsx +12 -13
- package/src/widgets/no-data/types.ts +5 -1
- package/src/widgets/note/note.tsx +10 -0
- package/src/widgets/pie/config.ts +102 -33
- package/src/widgets/pie/style.ts +1 -1
- package/src/widgets/range/components/range-item.test.tsx +243 -0
- package/src/widgets/range/components/range-item.tsx +25 -20
- package/src/widgets/range/config.ts +5 -0
- package/src/widgets/range/range-ui.tsx +3 -0
- package/src/widgets/scatterplot/config.ts +21 -23
- package/src/widgets/scatterplot/style.ts +1 -1
- package/src/widgets/selection-summary/selection-summary.tsx +11 -0
- package/src/widgets/skeleton-loader/skeleton-loader.tsx +12 -5
- package/src/widgets/spread/components/max-value.tsx +18 -18
- package/src/widgets/spread/components/min-value.tsx +18 -18
- package/src/widgets/spread/components/separator.tsx +3 -0
- package/src/widgets/spread/config.ts +11 -0
- package/src/widgets/spread/spread-ui.tsx +4 -1
- package/src/widgets/stores/index.ts +4 -1
- package/src/widgets/stores/types.ts +12 -18
- package/src/widgets/stores/use-widget-selector.ts +47 -0
- package/src/widgets/stores/widget-store-branches.test.ts +275 -0
- package/src/widgets/stores/widget-store-performance.test.ts +750 -0
- package/src/widgets/stores/widget-store.test.ts +213 -13
- package/src/widgets/stores/widget-store.ts +240 -65
- package/src/widgets/subheader/subheader.tsx +22 -3
- package/src/widgets/table/config.test.ts +65 -0
- package/src/widgets/table/config.ts +8 -4
- package/src/widgets/table/hooks/use-pagination.ts +39 -55
- package/src/widgets/table/hooks/use-selection.ts +31 -26
- package/src/widgets/table/hooks/use-sort.ts +33 -42
- package/src/widgets/table/index.ts +6 -4
- package/src/widgets/table/table-ui.tsx +1 -1
- package/src/widgets/table/types.ts +1 -1
- package/src/widgets/timeseries/config.ts +34 -33
- package/src/widgets/timeseries/style.ts +1 -1
- package/src/widgets/utils/chart-config/download-config.ts +22 -0
- package/src/widgets/{_shared → utils}/chart-config/index.ts +6 -0
- package/src/widgets/utils/chart-config/option-builders.test.ts +332 -0
- package/src/widgets/{_shared → utils}/chart-config/option-builders.ts +79 -13
- package/src/widgets/utils/formatter.ts +2 -0
- package/src/widgets/utils/index.ts +26 -0
- package/src/widgets/wrapper/components/actions.tsx +3 -0
- package/src/widgets/wrapper/components/options.tsx +3 -0
- package/src/widgets/wrapper/components/title.tsx +3 -0
- package/src/widgets/wrapper/wrapper-ui.tsx +26 -13
- package/src/widgets/wrapper/wrapper.tsx +18 -6
- package/src/widgets-v2/PERFORMANCE.md +189 -0
- package/src/widgets-v2/actions/brush-toggle/brush-toggle.test.tsx +180 -0
- package/src/widgets-v2/actions/brush-toggle/brush-toggle.tsx +154 -0
- package/src/widgets-v2/actions/brush-toggle/index.ts +3 -0
- package/src/widgets-v2/actions/brush-toggle/labels.ts +9 -0
- package/src/widgets-v2/actions/brush-toggle/style.ts +11 -0
- package/src/widgets-v2/actions/brush-toggle/transforms.test.ts +47 -0
- package/src/widgets-v2/actions/brush-toggle/transforms.ts +31 -0
- package/src/widgets-v2/actions/change-column/change-column-icon.tsx +14 -0
- package/src/widgets-v2/actions/change-column/change-column.test.tsx +59 -0
- package/src/widgets-v2/actions/change-column/change-column.tsx +180 -0
- package/src/widgets-v2/actions/change-column/index.ts +7 -0
- package/src/widgets-v2/actions/change-column/labels.ts +9 -0
- package/src/widgets-v2/actions/change-column/sortable-column-item.tsx +56 -0
- package/src/widgets-v2/actions/change-column/style.ts +32 -0
- package/src/widgets-v2/actions/change-column/types.ts +11 -0
- package/src/widgets-v2/actions/download/download.test.tsx +327 -0
- package/src/widgets-v2/actions/download/download.tsx +144 -0
- package/src/widgets-v2/actions/download/exports.test.tsx +198 -0
- package/src/widgets-v2/actions/download/exports.ts +115 -0
- package/src/widgets-v2/actions/download/icons.tsx +26 -0
- package/src/widgets-v2/actions/download/index.ts +13 -0
- package/src/widgets-v2/actions/download/labels.ts +16 -0
- package/src/widgets-v2/actions/download/png-item.test.tsx +72 -0
- package/src/widgets-v2/actions/download/png-item.tsx +52 -0
- package/src/widgets-v2/actions/download/style.ts +3 -0
- package/src/widgets-v2/actions/download/types.ts +32 -0
- package/src/widgets-v2/actions/fullscreen/fullscreen.test.tsx +150 -0
- package/src/widgets-v2/actions/fullscreen/fullscreen.tsx +230 -0
- package/src/widgets-v2/actions/fullscreen/index.ts +7 -0
- package/src/widgets-v2/actions/fullscreen/labels.ts +9 -0
- package/src/widgets-v2/actions/fullscreen/style.ts +59 -0
- package/src/widgets-v2/actions/fullscreen/types.ts +15 -0
- package/src/widgets-v2/actions/index.ts +82 -0
- package/src/widgets-v2/actions/lock-selection/index.ts +10 -0
- package/src/widgets-v2/actions/lock-selection/labels.ts +11 -0
- package/src/widgets-v2/actions/lock-selection/lock-selection.test.tsx +187 -0
- package/src/widgets-v2/actions/lock-selection/lock-selection.tsx +130 -0
- package/src/widgets-v2/actions/lock-selection/style.ts +11 -0
- package/src/widgets-v2/actions/lock-selection/transforms.ts +27 -0
- package/src/widgets-v2/actions/relative-data/index.ts +3 -0
- package/src/widgets-v2/actions/relative-data/labels.ts +9 -0
- package/src/widgets-v2/actions/relative-data/relative-data.test.tsx +71 -0
- package/src/widgets-v2/actions/relative-data/relative-data.tsx +107 -0
- package/src/widgets-v2/actions/relative-data/style.ts +11 -0
- package/src/widgets-v2/actions/relative-data/transforms.test.ts +151 -0
- package/src/widgets-v2/actions/relative-data/transforms.ts +70 -0
- package/src/widgets-v2/actions/searcher/filter.ts +28 -0
- package/src/widgets-v2/actions/searcher/index.ts +8 -0
- package/src/widgets-v2/actions/searcher/labels.ts +13 -0
- package/src/widgets-v2/actions/searcher/searcher-toggle.tsx +91 -0
- package/src/widgets-v2/actions/searcher/searcher.test.tsx +92 -0
- package/src/widgets-v2/actions/searcher/searcher.tsx +112 -0
- package/src/widgets-v2/actions/searcher/style.ts +15 -0
- package/src/widgets-v2/actions/stack-toggle/index.ts +3 -0
- package/src/widgets-v2/actions/stack-toggle/labels.ts +9 -0
- package/src/widgets-v2/actions/stack-toggle/stack-toggle.test.tsx +61 -0
- package/src/widgets-v2/actions/stack-toggle/stack-toggle.tsx +54 -0
- package/src/widgets-v2/actions/stack-toggle/style.ts +11 -0
- package/src/widgets-v2/actions/stack-toggle/transforms.test.ts +43 -0
- package/src/widgets-v2/actions/stack-toggle/transforms.ts +25 -0
- package/src/widgets-v2/actions/zoom-toggle/index.ts +9 -0
- package/src/widgets-v2/actions/zoom-toggle/labels.ts +9 -0
- package/src/widgets-v2/actions/zoom-toggle/style.ts +11 -0
- package/src/widgets-v2/actions/zoom-toggle/transforms.test.ts +148 -0
- package/src/widgets-v2/actions/zoom-toggle/transforms.ts +171 -0
- package/src/widgets-v2/actions/zoom-toggle/zoom-toggle.test.tsx +107 -0
- package/src/widgets-v2/actions/zoom-toggle/zoom-toggle.tsx +106 -0
- package/src/widgets-v2/bar/download.test.tsx +91 -0
- package/src/widgets-v2/bar/download.tsx +66 -0
- package/src/widgets-v2/bar/index.ts +10 -0
- package/src/widgets-v2/bar/options.test.ts +334 -0
- package/src/widgets-v2/bar/options.ts +332 -0
- package/src/widgets-v2/bar/skeleton.test.tsx +19 -0
- package/src/widgets-v2/bar/skeleton.tsx +69 -0
- package/src/widgets-v2/bar/types.ts +51 -0
- package/src/widgets-v2/category/category-ui.test.tsx +746 -0
- package/src/widgets-v2/category/category-ui.tsx +389 -0
- package/src/widgets-v2/category/category.relative-data.test.tsx +107 -0
- package/src/widgets-v2/category/category.stack-toggle.test.tsx +85 -0
- package/src/widgets-v2/category/category.test.tsx +305 -0
- package/src/widgets-v2/category/category.tsx +121 -0
- package/src/widgets-v2/category/components/category-bar-stacked.test.tsx +121 -0
- package/src/widgets-v2/category/components/category-bar-stacked.tsx +73 -0
- package/src/widgets-v2/category/components/category-bar.test.tsx +64 -0
- package/src/widgets-v2/category/components/category-bar.tsx +49 -0
- package/src/widgets-v2/category/components/category-legend.test.tsx +51 -0
- package/src/widgets-v2/category/components/category-legend.tsx +39 -0
- package/src/widgets-v2/category/components/category-row-multi.tsx +86 -0
- package/src/widgets-v2/category/components/category-row-other.test.tsx +28 -0
- package/src/widgets-v2/category/components/category-row-other.tsx +33 -0
- package/src/widgets-v2/category/components/category-row-single.tsx +76 -0
- package/src/widgets-v2/category/components/category-row-stacked.test.tsx +244 -0
- package/src/widgets-v2/category/components/category-row-stacked.tsx +99 -0
- package/src/widgets-v2/category/download.test.ts +71 -0
- package/src/widgets-v2/category/download.ts +54 -0
- package/src/widgets-v2/category/index.ts +32 -0
- package/src/widgets-v2/category/skeleton.test.tsx +26 -0
- package/src/widgets-v2/category/skeleton.tsx +74 -0
- package/src/widgets-v2/category/style.ts +290 -0
- package/src/widgets-v2/category/types.ts +59 -0
- package/src/widgets-v2/echart/echart-ui.test.tsx +232 -0
- package/src/widgets-v2/echart/echart-ui.tsx +184 -0
- package/src/widgets-v2/echart/echart.test.tsx +229 -0
- package/src/widgets-v2/echart/echart.tsx +199 -0
- package/src/widgets-v2/echart/index.ts +22 -0
- package/src/widgets-v2/echart/shared-resize-observer.test.ts +91 -0
- package/src/widgets-v2/echart/shared-resize-observer.ts +56 -0
- package/src/widgets-v2/echart/style.ts +8 -0
- package/src/widgets-v2/echart/use-chart-selection.test.tsx +118 -0
- package/src/widgets-v2/echart/use-chart-selection.ts +115 -0
- package/src/widgets-v2/formula/delta.tsx +61 -0
- package/src/widgets-v2/formula/download.test.tsx +65 -0
- package/src/widgets-v2/formula/download.tsx +69 -0
- package/src/widgets-v2/formula/formula-ui.test.tsx +91 -0
- package/src/widgets-v2/formula/formula-ui.tsx +66 -0
- package/src/widgets-v2/formula/formula.test.tsx +50 -0
- package/src/widgets-v2/formula/formula.tsx +34 -0
- package/src/widgets-v2/formula/index.ts +17 -0
- package/src/widgets-v2/formula/note.tsx +25 -0
- package/src/widgets-v2/formula/prefix.tsx +25 -0
- package/src/widgets-v2/formula/series.tsx +67 -0
- package/src/widgets-v2/formula/skeleton.test.tsx +21 -0
- package/src/widgets-v2/formula/skeleton.tsx +27 -0
- package/src/widgets-v2/formula/style.ts +31 -0
- package/src/widgets-v2/formula/subcomponents.test.tsx +107 -0
- package/src/widgets-v2/formula/suffix.tsx +25 -0
- package/src/widgets-v2/formula/types.ts +48 -0
- package/src/widgets-v2/formula/value.tsx +31 -0
- package/src/widgets-v2/histogram/download.test.ts +94 -0
- package/src/widgets-v2/histogram/download.ts +60 -0
- package/src/widgets-v2/histogram/index.ts +10 -0
- package/src/widgets-v2/histogram/options.test.ts +318 -0
- package/src/widgets-v2/histogram/options.ts +338 -0
- package/src/widgets-v2/histogram/skeleton.test.tsx +16 -0
- package/src/widgets-v2/histogram/skeleton.tsx +70 -0
- package/src/widgets-v2/histogram/transforms.test.ts +46 -0
- package/src/widgets-v2/histogram/transforms.ts +30 -0
- package/src/widgets-v2/histogram/types.ts +55 -0
- package/src/widgets-v2/index.ts +204 -0
- package/src/widgets-v2/markdown/download.test.ts +66 -0
- package/src/widgets-v2/markdown/download.ts +53 -0
- package/src/widgets-v2/markdown/index.ts +6 -0
- package/src/widgets-v2/markdown/markdown-content.test.tsx +155 -0
- package/src/widgets-v2/markdown/markdown-content.tsx +72 -0
- package/src/widgets-v2/markdown/markdown-ui.test.tsx +75 -0
- package/src/widgets-v2/markdown/markdown-ui.tsx +55 -0
- package/src/widgets-v2/markdown/markdown.test.tsx +39 -0
- package/src/widgets-v2/markdown/markdown.tsx +17 -0
- package/src/widgets-v2/markdown/skeleton.test.tsx +15 -0
- package/src/widgets-v2/markdown/skeleton.tsx +32 -0
- package/src/widgets-v2/markdown/style.ts +53 -0
- package/src/widgets-v2/markdown/types.ts +4 -0
- package/src/widgets-v2/note/labels.ts +9 -0
- package/src/widgets-v2/note/style.ts +26 -0
- package/src/widgets-v2/note/widget-note.test.tsx +158 -0
- package/src/widgets-v2/note/widget-note.tsx +172 -0
- package/src/widgets-v2/pie/download.test.ts +78 -0
- package/src/widgets-v2/pie/download.ts +55 -0
- package/src/widgets-v2/pie/index.ts +10 -0
- package/src/widgets-v2/pie/options.test.ts +601 -0
- package/src/widgets-v2/pie/options.ts +513 -0
- package/src/widgets-v2/pie/skeleton.test.tsx +17 -0
- package/src/widgets-v2/pie/skeleton.tsx +32 -0
- package/src/widgets-v2/pie/types.ts +62 -0
- package/src/widgets-v2/provider/widget-provider.test.tsx +119 -0
- package/src/widgets-v2/provider/widget-provider.tsx +111 -0
- package/src/widgets-v2/range/index.ts +4 -0
- package/src/widgets-v2/range/range-ui.test.tsx +136 -0
- package/src/widgets-v2/range/range-ui.tsx +278 -0
- package/src/widgets-v2/range/range.test.tsx +68 -0
- package/src/widgets-v2/range/range.tsx +52 -0
- package/src/widgets-v2/range/skeleton.test.tsx +17 -0
- package/src/widgets-v2/range/skeleton.tsx +47 -0
- package/src/widgets-v2/range/style.ts +41 -0
- package/src/widgets-v2/range/types.ts +37 -0
- package/src/widgets-v2/scatterplot/download.test.ts +71 -0
- package/src/widgets-v2/scatterplot/download.ts +54 -0
- package/src/widgets-v2/scatterplot/index.ts +11 -0
- package/src/widgets-v2/scatterplot/options.test.ts +411 -0
- package/src/widgets-v2/scatterplot/options.ts +425 -0
- package/src/widgets-v2/scatterplot/skeleton.test.tsx +17 -0
- package/src/widgets-v2/scatterplot/skeleton.tsx +84 -0
- package/src/widgets-v2/scatterplot/transforms.test.ts +97 -0
- package/src/widgets-v2/scatterplot/transforms.ts +38 -0
- package/src/widgets-v2/scatterplot/types.ts +59 -0
- package/src/widgets-v2/selection-summary/labels.ts +11 -0
- package/src/widgets-v2/selection-summary/selection-summary.test.tsx +53 -0
- package/src/widgets-v2/selection-summary/selection-summary.tsx +62 -0
- package/src/widgets-v2/selection-summary/style.ts +23 -0
- package/src/widgets-v2/spread/download.test.ts +64 -0
- package/src/widgets-v2/spread/download.ts +59 -0
- package/src/widgets-v2/spread/index.ts +6 -0
- package/src/widgets-v2/spread/separator.tsx +11 -0
- package/src/widgets-v2/spread/skeleton.test.tsx +17 -0
- package/src/widgets-v2/spread/skeleton.tsx +38 -0
- package/src/widgets-v2/spread/spread-ui.test.tsx +108 -0
- package/src/widgets-v2/spread/spread-ui.tsx +52 -0
- package/src/widgets-v2/spread/spread.test.tsx +50 -0
- package/src/widgets-v2/spread/spread.tsx +31 -0
- package/src/widgets-v2/spread/types.ts +27 -0
- package/src/widgets-v2/state/labels.test.ts +33 -0
- package/src/widgets-v2/state/labels.ts +20 -0
- package/src/widgets-v2/state/style.ts +25 -0
- package/src/widgets-v2/state/widget-state.test.tsx +294 -0
- package/src/widgets-v2/state/widget-state.tsx +184 -0
- package/src/widgets-v2/stores/index.ts +49 -0
- package/src/widgets-v2/stores/pipeline-middleware.test.ts +187 -0
- package/src/widgets-v2/stores/pipeline-middleware.ts +91 -0
- package/src/widgets-v2/stores/transforms.test.ts +162 -0
- package/src/widgets-v2/stores/transforms.ts +70 -0
- package/src/widgets-v2/stores/types.ts +64 -0
- package/src/widgets-v2/stores/use-echart-instance.test.tsx +91 -0
- package/src/widgets-v2/stores/use-echart-instance.ts +29 -0
- package/src/widgets-v2/stores/use-transform-enabled.test.tsx +127 -0
- package/src/widgets-v2/stores/use-transform-enabled.ts +25 -0
- package/src/widgets-v2/stores/use-transform.test.tsx +262 -0
- package/src/widgets-v2/stores/use-transform.ts +158 -0
- package/src/widgets-v2/stores/widget-context.test.tsx +58 -0
- package/src/widgets-v2/stores/widget-context.ts +15 -0
- package/src/widgets-v2/stores/widget-store-registry.test.ts +292 -0
- package/src/widgets-v2/stores/widget-store-registry.ts +248 -0
- package/src/widgets-v2/subheader/style.ts +12 -0
- package/src/widgets-v2/subheader/subheader.test.tsx +30 -0
- package/src/widgets-v2/subheader/subheader.tsx +16 -0
- package/src/widgets-v2/table/download.test.ts +75 -0
- package/src/widgets-v2/table/download.ts +47 -0
- package/src/widgets-v2/table/helpers.test.ts +214 -0
- package/src/widgets-v2/table/helpers.ts +136 -0
- package/src/widgets-v2/table/index.ts +23 -0
- package/src/widgets-v2/table/labels.tsx +41 -0
- package/src/widgets-v2/table/skeleton.test.tsx +26 -0
- package/src/widgets-v2/table/skeleton.tsx +65 -0
- package/src/widgets-v2/table/style.ts +43 -0
- package/src/widgets-v2/table/table-ui.test.tsx +200 -0
- package/src/widgets-v2/table/table-ui.tsx +364 -0
- package/src/widgets-v2/table/table.test.tsx +119 -0
- package/src/widgets-v2/table/table.tsx +179 -0
- package/src/widgets-v2/table/types.ts +55 -0
- package/src/widgets-v2/test-utils.ts +107 -0
- package/src/widgets-v2/timeseries/download.test.ts +95 -0
- package/src/widgets-v2/timeseries/download.ts +86 -0
- package/src/widgets-v2/timeseries/index.ts +10 -0
- package/src/widgets-v2/timeseries/options.test.ts +394 -0
- package/src/widgets-v2/timeseries/options.ts +348 -0
- package/src/widgets-v2/timeseries/skeleton.test.tsx +13 -0
- package/src/widgets-v2/timeseries/skeleton.tsx +76 -0
- package/src/widgets-v2/timeseries/types.ts +65 -0
- package/src/widgets-v2/toolbox/labels.ts +9 -0
- package/src/widgets-v2/toolbox/style.ts +33 -0
- package/src/widgets-v2/toolbox/toolbox.test.tsx +200 -0
- package/src/widgets-v2/toolbox/toolbox.tsx +309 -0
- package/src/widgets-v2/types.ts +25 -0
- package/src/widgets-v2/utils/data-zoom-layout.ts +26 -0
- package/src/widgets-v2/utils/index.ts +3 -0
- package/src/widgets-v2/utils/merge-options.test.ts +52 -0
- package/src/widgets-v2/utils/merge-options.ts +50 -0
- package/src/widgets-v2/utils/resolve-theme-color.test.ts +43 -0
- package/src/widgets-v2/utils/resolve-theme-color.ts +34 -0
- package/src/widgets-v2/wrapper/index.ts +14 -0
- package/src/widgets-v2/wrapper/labels.ts +11 -0
- package/src/widgets-v2/wrapper/style.ts +134 -0
- package/src/widgets-v2/wrapper/widget-actions.test.tsx +52 -0
- package/src/widgets-v2/wrapper/widget-actions.tsx +43 -0
- package/src/widgets-v2/wrapper/widget-content.test.tsx +27 -0
- package/src/widgets-v2/wrapper/widget-content.tsx +29 -0
- package/src/widgets-v2/wrapper/widget-wrapper.test.tsx +159 -0
- package/src/widgets-v2/wrapper/widget-wrapper.tsx +178 -0
- package/dist/error-CEkRPccv.js +0 -39
- package/dist/error-CEkRPccv.js.map +0 -1
- package/dist/index-BnyeR7Qx.js +0 -6601
- package/dist/index-BnyeR7Qx.js.map +0 -1
- package/dist/no-data-hR3KcJ-_.js +0 -60
- package/dist/no-data-hR3KcJ-_.js.map +0 -1
- package/dist/note-t51drNe0.js +0 -124
- package/dist/note-t51drNe0.js.map +0 -1
- package/dist/options-D9wflre6.js +0 -49
- package/dist/options-D9wflre6.js.map +0 -1
- package/dist/row-DTCV0Ocm.js +0 -35
- package/dist/row-DTCV0Ocm.js.map +0 -1
- package/dist/series-CYNOu2Ju.js +0 -91
- package/dist/series-CYNOu2Ju.js.map +0 -1
- package/dist/styles-CAroD5Rc.js +0 -123
- package/dist/styles-CAroD5Rc.js.map +0 -1
- package/dist/types/hooks/use-debounce.d.ts +0 -19
- package/dist/types/widgets/category/components/index.d.ts +0 -10
- package/dist/types/widgets/index.d.ts +0 -9
- package/dist/types/widgets/table/hooks/index.d.ts +0 -6
- package/dist/use-widget-ref-P-2i0MJG.js +0 -19
- package/dist/use-widget-ref-P-2i0MJG.js.map +0 -1
- package/dist/utils-idmvq0Oa.js.map +0 -1
- package/dist/widget-store-CzDt8oSK.js +0 -163
- package/dist/widget-store-CzDt8oSK.js.map +0 -1
- package/dist/widgets.js +0 -13
- package/dist/widgets.js.map +0 -1
- package/src/hooks/use-debounce.ts +0 -55
- package/src/widgets/_shared/chart-config/option-builders.test.ts +0 -40
- package/src/widgets/category/components/index.ts +0 -14
- package/src/widgets/index.ts +0 -25
- package/src/widgets/table/hooks/index.ts +0 -7
- /package/dist/types/widgets/{_shared → utils}/chart-config/config-factory.d.ts +0 -0
- /package/dist/types/widgets/{_shared → utils}/chart-config/csv-modifiers.d.ts +0 -0
- /package/dist/types/widgets/{_shared → utils}/skeleton/index.d.ts +0 -0
- /package/dist/types/widgets/{_shared → utils}/skeleton/styles.d.ts +0 -0
- /package/dist/types/{widgets/_shared/chart-config/option-builders.test.d.ts → widgets-v2/actions/brush-toggle/transforms.test.d.ts} +0 -0
- /package/src/widgets/{_shared → utils}/chart-config/config-factory.ts +0 -0
- /package/src/widgets/{_shared → utils}/chart-config/csv-modifiers.ts +0 -0
- /package/src/widgets/{_shared → utils}/skeleton/index.ts +0 -0
- /package/src/widgets/{_shared → utils}/skeleton/styles.ts +0 -0
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { Box, IconButton } from '@mui/material'
|
|
2
|
+
import { HighlightAltOutlined } from '@mui/icons-material'
|
|
3
|
+
import { useCallback, useEffect, useRef } from 'react'
|
|
4
|
+
import { widgetStoreActions } from '../../stores/widget-store'
|
|
5
|
+
import type { BrushSelectedItems, BrushState, BrushToggleProps } from './types'
|
|
6
|
+
import { styles } from './style'
|
|
7
|
+
import { Tooltip } from '../../../components'
|
|
8
|
+
import { useWidgetSelector } from '../../stores/use-widget-selector'
|
|
9
|
+
import { BrushOverlay } from './brush-overlay'
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Kept for backwards compatibility. The tool is no longer registered with the
|
|
13
|
+
* widget store — brush state is now owned directly by this component and the
|
|
14
|
+
* associated DOM overlay instead of being driven through the config pipeline.
|
|
15
|
+
* Existing code that looks this constant up in `registeredTools` will simply
|
|
16
|
+
* find no match.
|
|
17
|
+
*/
|
|
18
|
+
export const BRUSH_TOGGLE_TOOL_ID = 'brush-toggle'
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Widget action to toggle brush-style selection on bar and histogram widgets.
|
|
22
|
+
*
|
|
23
|
+
* Renders a toggle button and a portaled overlay rendered inside the chart's
|
|
24
|
+
* `<div>`. The overlay handles all pointer interactions, draws selection
|
|
25
|
+
* rectangles in DOM, and hit-tests against the widget data. All state lives
|
|
26
|
+
* in the widget store — rectangles survive config-pipeline re-renders
|
|
27
|
+
* (`setOption({ notMerge: true })`) automatically.
|
|
28
|
+
*
|
|
29
|
+
* Only intended for bar and histogram widgets (both use `xAxis.type === 'category'`).
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```tsx
|
|
33
|
+
* <BrushToggle
|
|
34
|
+
* id="my-widget"
|
|
35
|
+
* onBrushSelected={(items) => console.log(items)}
|
|
36
|
+
* />
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export function BrushToggle({
|
|
40
|
+
id,
|
|
41
|
+
onBrushSelected,
|
|
42
|
+
multiBrush,
|
|
43
|
+
selections,
|
|
44
|
+
defaultEnabled = false,
|
|
45
|
+
labels,
|
|
46
|
+
Icon,
|
|
47
|
+
IconButtonProps,
|
|
48
|
+
}: BrushToggleProps) {
|
|
49
|
+
// Single subscription for everything this component cares about.
|
|
50
|
+
const { brush, selection } = useWidgetSelector(id, (w) => {
|
|
51
|
+
const s = w as BrushState | undefined
|
|
52
|
+
return {
|
|
53
|
+
brush: s?.brush ?? defaultEnabled,
|
|
54
|
+
selection: s?.brushSelection,
|
|
55
|
+
}
|
|
56
|
+
})
|
|
57
|
+
|
|
58
|
+
// Seed the widget store with `defaultEnabled` on first mount. Guarded so
|
|
59
|
+
// remounts don't stomp whatever the user has toggled to.
|
|
60
|
+
useEffect(() => {
|
|
61
|
+
const current = widgetStoreActions.getWidget<BrushState>(id)?.brush
|
|
62
|
+
if (current === undefined) {
|
|
63
|
+
widgetStoreActions.setWidget(id, { brush: defaultEnabled })
|
|
64
|
+
}
|
|
65
|
+
}, [id, defaultEnabled])
|
|
66
|
+
|
|
67
|
+
const handleToggle = useCallback(() => {
|
|
68
|
+
if (brush) {
|
|
69
|
+
// Disabling: keep rectangles visible so the consumer's selection stays
|
|
70
|
+
// in sync. Re-enabling clears them below (fresh slate each activation).
|
|
71
|
+
widgetStoreActions.setWidget(id, { brush: false })
|
|
72
|
+
} else {
|
|
73
|
+
widgetStoreActions.setWidget(id, {
|
|
74
|
+
brush: true,
|
|
75
|
+
brushRects: [],
|
|
76
|
+
brushSelection: { dataIndex: [], seriesIndex: 0 },
|
|
77
|
+
})
|
|
78
|
+
// Mirror the clear to the consumer so its selection drops with the
|
|
79
|
+
// visual rectangles.
|
|
80
|
+
onBrushSelected?.({ dataIndex: [], seriesIndex: 0 })
|
|
81
|
+
}
|
|
82
|
+
}, [brush, id, onBrushSelected])
|
|
83
|
+
|
|
84
|
+
// Invoke the consumer's callback whenever the overlay writes a new
|
|
85
|
+
// selection to the store. `selection` is a new object reference on each
|
|
86
|
+
// pointerup so a simple reference check is enough.
|
|
87
|
+
const lastSelectionRef = useRef<BrushSelectedItems | undefined>(undefined)
|
|
88
|
+
useEffect(() => {
|
|
89
|
+
if (!selection) return
|
|
90
|
+
if (lastSelectionRef.current === selection) return
|
|
91
|
+
lastSelectionRef.current = selection
|
|
92
|
+
onBrushSelected?.(selection)
|
|
93
|
+
}, [selection, onBrushSelected])
|
|
94
|
+
|
|
95
|
+
// Consumer-driven clear: when `selections` transitions to 0 (e.g. the user
|
|
96
|
+
// presses the clear button in `WidgetSelectionSummary`), drop all drawn
|
|
97
|
+
// rectangles and any stored selection.
|
|
98
|
+
useEffect(() => {
|
|
99
|
+
if (selections !== 0) return
|
|
100
|
+
const state = widgetStoreActions.getWidget<BrushState>(id)
|
|
101
|
+
const hasRects = (state?.brushRects?.length ?? 0) > 0
|
|
102
|
+
const hasSelection = (state?.brushSelection?.dataIndex?.length ?? 0) > 0
|
|
103
|
+
if (!hasRects && !hasSelection) return
|
|
104
|
+
widgetStoreActions.setWidget(id, {
|
|
105
|
+
brushRects: [],
|
|
106
|
+
brushSelection: { dataIndex: [], seriesIndex: 0 },
|
|
107
|
+
})
|
|
108
|
+
}, [selections, id])
|
|
109
|
+
|
|
110
|
+
const enableLabel = labels?.enable ?? 'Enable brush selection'
|
|
111
|
+
const disableLabel = labels?.disable ?? 'Disable brush selection'
|
|
112
|
+
const tooltipLabel = brush ? disableLabel : enableLabel
|
|
113
|
+
|
|
114
|
+
return (
|
|
115
|
+
<>
|
|
116
|
+
<Box sx={styles.container}>
|
|
117
|
+
<Tooltip title={tooltipLabel}>
|
|
118
|
+
<IconButton
|
|
119
|
+
size='small'
|
|
120
|
+
aria-label={labels?.ariaLabel ?? tooltipLabel}
|
|
121
|
+
onClick={handleToggle}
|
|
122
|
+
sx={styles.trigger}
|
|
123
|
+
data-active={brush}
|
|
124
|
+
{...IconButtonProps}
|
|
125
|
+
>
|
|
126
|
+
{Icon ?? <HighlightAltOutlined />}
|
|
127
|
+
</IconButton>
|
|
128
|
+
</Tooltip>
|
|
129
|
+
</Box>
|
|
130
|
+
<BrushOverlay id={id} multiBrush={multiBrush} />
|
|
131
|
+
</>
|
|
132
|
+
)
|
|
133
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { describe, test, expect } from 'vitest'
|
|
2
|
+
import { hitTestCategoryRange, hitTestRects } from './hit-test'
|
|
3
|
+
|
|
4
|
+
describe('hitTestCategoryRange', () => {
|
|
5
|
+
test('returns empty when dataLength is zero', () => {
|
|
6
|
+
expect(hitTestCategoryRange(0, 5, 0)).toEqual([])
|
|
7
|
+
})
|
|
8
|
+
|
|
9
|
+
test('snaps fractional range outward so partial overlaps are included', () => {
|
|
10
|
+
// xStart=1.3, xEnd=3.7 → floor(1.3)=1, ceil(3.7)=4 → [1, 2, 3, 4]
|
|
11
|
+
expect(hitTestCategoryRange(1.3, 3.7, 10)).toEqual([1, 2, 3, 4])
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
test('handles integer endpoints inclusively', () => {
|
|
15
|
+
expect(hitTestCategoryRange(2, 4, 10)).toEqual([2, 3, 4])
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
test('clamps to [0, dataLength - 1]', () => {
|
|
19
|
+
expect(hitTestCategoryRange(-2.5, 12.8, 5)).toEqual([0, 1, 2, 3, 4])
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
test('normalizes reversed inputs (xEnd < xStart)', () => {
|
|
23
|
+
expect(hitTestCategoryRange(3.7, 1.3, 10)).toEqual([1, 2, 3, 4])
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
test('returns empty when range is entirely out of bounds', () => {
|
|
27
|
+
expect(hitTestCategoryRange(10, 12, 5)).toEqual([])
|
|
28
|
+
expect(hitTestCategoryRange(-5, -1, 5)).toEqual([])
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
test('returns adjacent indices for a very narrow fractional range when snapping outward', () => {
|
|
32
|
+
// xStart=2.1, xEnd=2.3 partially overlaps both categories, so floor=2 and ceil=3 → [2, 3]
|
|
33
|
+
expect(hitTestCategoryRange(2.1, 2.3, 10)).toEqual([2, 3])
|
|
34
|
+
})
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
describe('hitTestRects', () => {
|
|
38
|
+
test('returns empty for no rects', () => {
|
|
39
|
+
expect(hitTestRects([], 10)).toEqual([])
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
test('unions and dedups across overlapping rects', () => {
|
|
43
|
+
const rects = [
|
|
44
|
+
{ xStart: 1, xEnd: 3 },
|
|
45
|
+
{ xStart: 2, xEnd: 4 },
|
|
46
|
+
]
|
|
47
|
+
expect(hitTestRects(rects, 10)).toEqual([1, 2, 3, 4])
|
|
48
|
+
})
|
|
49
|
+
|
|
50
|
+
test('returns sorted ascending indices for disjoint rects', () => {
|
|
51
|
+
const rects = [
|
|
52
|
+
{ xStart: 7, xEnd: 8 },
|
|
53
|
+
{ xStart: 1, xEnd: 2 },
|
|
54
|
+
]
|
|
55
|
+
expect(hitTestRects(rects, 10)).toEqual([1, 2, 7, 8])
|
|
56
|
+
})
|
|
57
|
+
|
|
58
|
+
test('drops rects entirely out of bounds', () => {
|
|
59
|
+
const rects = [
|
|
60
|
+
{ xStart: 20, xEnd: 25 },
|
|
61
|
+
{ xStart: 1, xEnd: 2 },
|
|
62
|
+
]
|
|
63
|
+
expect(hitTestRects(rects, 10)).toEqual([1, 2])
|
|
64
|
+
})
|
|
65
|
+
})
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { BrushRect } from './types'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Returns integer dataIndices covered by a brush rectangle on a category axis.
|
|
5
|
+
*
|
|
6
|
+
* `xStart` / `xEnd` come from `instance.convertFromPixel({ xAxisIndex: 0 }, …)`
|
|
7
|
+
* which, for a category axis, returns fractional positions around integer
|
|
8
|
+
* category indices (e.g. `1.3` lands between categories 1 and 2). We snap the
|
|
9
|
+
* range outward (`floor` / `ceil`) so a drag that visually covers any part of
|
|
10
|
+
* a category's bar includes that index.
|
|
11
|
+
*
|
|
12
|
+
* Results are clamped to `[0, dataLength - 1]` and returned in ascending order.
|
|
13
|
+
*/
|
|
14
|
+
export function hitTestCategoryRange(
|
|
15
|
+
xStart: number,
|
|
16
|
+
xEnd: number,
|
|
17
|
+
dataLength: number,
|
|
18
|
+
): number[] {
|
|
19
|
+
if (dataLength <= 0) return []
|
|
20
|
+
const [lo, hi] = xStart <= xEnd ? [xStart, xEnd] : [xEnd, xStart]
|
|
21
|
+
|
|
22
|
+
const start = Math.max(0, Math.floor(lo))
|
|
23
|
+
const end = Math.min(dataLength - 1, Math.ceil(hi))
|
|
24
|
+
if (start > end) return []
|
|
25
|
+
|
|
26
|
+
const indices: number[] = []
|
|
27
|
+
for (let i = start; i <= end; i += 1) indices.push(i)
|
|
28
|
+
return indices
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Union of `hitTestCategoryRange` across multiple rectangles. Used for
|
|
33
|
+
* multi-brush selections where each drawn rectangle contributes to the
|
|
34
|
+
* combined selection.
|
|
35
|
+
*/
|
|
36
|
+
export function hitTestRects(rects: BrushRect[], dataLength: number): number[] {
|
|
37
|
+
if (rects.length === 0) return []
|
|
38
|
+
const seen = new Set<number>()
|
|
39
|
+
for (const rect of rects) {
|
|
40
|
+
for (const i of hitTestCategoryRange(rect.xStart, rect.xEnd, dataLength)) {
|
|
41
|
+
seen.add(i)
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return Array.from(seen).sort((a, b) => a - b)
|
|
45
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { SxProps, Theme } from '@mui/material'
|
|
2
|
+
import type { CSSProperties } from 'react'
|
|
3
|
+
|
|
4
|
+
export const styles = {
|
|
5
|
+
container: {
|
|
6
|
+
display: 'flex',
|
|
7
|
+
alignItems: 'center',
|
|
8
|
+
gap: ({ spacing }) => spacing(0.25),
|
|
9
|
+
},
|
|
10
|
+
trigger: {
|
|
11
|
+
'&[data-active="true"]': {
|
|
12
|
+
background: (theme: Theme) => theme.palette.primary.relatedLight,
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
} satisfies Record<string, SxProps<Theme>>
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Plain CSS objects for the brush overlay — we're outside MUI's sx pipeline
|
|
19
|
+
* here because the rectangles are rendered via a React portal into the chart
|
|
20
|
+
* div (not part of the MUI tree). Colors borrow from the base palette; if
|
|
21
|
+
* theme-aware styling is needed later, move to styled components.
|
|
22
|
+
*/
|
|
23
|
+
export const overlayStyles: Record<string, CSSProperties> = {
|
|
24
|
+
// `top` and `height` are filled in at render time from the chart's plot
|
|
25
|
+
// rect so rectangles don't bleed over the legend / axis labels.
|
|
26
|
+
//
|
|
27
|
+
// Colors track ECharts 6's `backgroundTint` token (used by the default
|
|
28
|
+
// brush) — a barely-visible pale blue-gray translucent fill that washes
|
|
29
|
+
// bars underneath rather than masking them. Border is a hairline dark
|
|
30
|
+
// alpha so the selection edges are just findable, not prominent.
|
|
31
|
+
rect: {
|
|
32
|
+
position: 'absolute',
|
|
33
|
+
background: 'rgba(234, 237, 245, 0.2)',
|
|
34
|
+
border: '1px dashed rgba(0, 0, 0, 0.15)',
|
|
35
|
+
pointerEvents: 'none',
|
|
36
|
+
},
|
|
37
|
+
// Live drag preview — identical to committed rect (no "in-progress" vs
|
|
38
|
+
// "committed" visual distinction; the preview just disappears on
|
|
39
|
+
// `pointerup` as the rect takes its place).
|
|
40
|
+
rectPreview: {
|
|
41
|
+
position: 'absolute',
|
|
42
|
+
background: 'rgba(234, 237, 245, 0.6)',
|
|
43
|
+
border: '1px dashed rgba(0, 0, 0, 0.15)',
|
|
44
|
+
pointerEvents: 'none',
|
|
45
|
+
},
|
|
46
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import type { IconButtonProps } from '@mui/material'
|
|
2
|
+
import type { ReactNode } from 'react'
|
|
3
|
+
import type { BaseWidgetState } from '../../stores/types'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Brush selection result emitted by BrushToggle.
|
|
7
|
+
* Contains raw indices so consumers can resolve data according to their widget type.
|
|
8
|
+
*/
|
|
9
|
+
export interface BrushSelectedItems {
|
|
10
|
+
/** Data indices of the selected items in the dataset */
|
|
11
|
+
dataIndex: number[]
|
|
12
|
+
/** Series index from the brush event (defaults to 0) */
|
|
13
|
+
seriesIndex: number
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* A selection rectangle in x-axis data coords. Stored in the widget store so
|
|
18
|
+
* it survives config-pipeline re-renders (which call `setOption` with
|
|
19
|
+
* `notMerge: true` and wipe any ECharts-side state). The overlay re-projects
|
|
20
|
+
* these to pixel positions on every chart render / resize.
|
|
21
|
+
*
|
|
22
|
+
* Both bar and histogram widgets use `xAxis.type === 'category'`, so the
|
|
23
|
+
* coords are category indices (possibly fractional — `convertFromPixel`
|
|
24
|
+
* returns floats like `1.3` between categories 1 and 2).
|
|
25
|
+
*/
|
|
26
|
+
export interface BrushRect {
|
|
27
|
+
xStart: number
|
|
28
|
+
xEnd: number
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* State stored in widget store for brush functionality.
|
|
33
|
+
*/
|
|
34
|
+
export interface BrushConfig {
|
|
35
|
+
/** Whether brush mode is enabled. */
|
|
36
|
+
brush?: boolean
|
|
37
|
+
/** Persisted selection rectangles in data-axis coords. */
|
|
38
|
+
brushRects?: BrushRect[]
|
|
39
|
+
/** Last selection emitted to the `onBrushSelected` callback. */
|
|
40
|
+
brushSelection?: BrushSelectedItems
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export type BrushState<T = unknown> = BaseWidgetState<T & BrushConfig>
|
|
44
|
+
|
|
45
|
+
export interface BrushToggleProps {
|
|
46
|
+
/** Widget ID to update brush state in the widget store */
|
|
47
|
+
id: string
|
|
48
|
+
/** Callback fired when items are selected via brush */
|
|
49
|
+
onBrushSelected?: (items: BrushSelectedItems) => void
|
|
50
|
+
/** When true, allows multiple brush selection areas. Brush stays active after each selection. */
|
|
51
|
+
multiBrush?: boolean
|
|
52
|
+
/**
|
|
53
|
+
* Initial brush-enabled state. Only applied on first mount if the widget
|
|
54
|
+
* store has no `brush` value yet — subsequent remounts preserve whatever
|
|
55
|
+
* state the user has toggled to.
|
|
56
|
+
*/
|
|
57
|
+
defaultEnabled?: boolean
|
|
58
|
+
/**
|
|
59
|
+
* Current selection count from the consumer (e.g. `selectedItems.length`).
|
|
60
|
+
* When this transitions to `0` (typically when the user presses the clear
|
|
61
|
+
* button in `WidgetSelectionSummary`), BrushToggle clears its persisted
|
|
62
|
+
* brush rectangles and the on-chart selection.
|
|
63
|
+
*/
|
|
64
|
+
selections?: number
|
|
65
|
+
/** Custom labels for the action */
|
|
66
|
+
labels?: {
|
|
67
|
+
/** Tooltip when brush is disabled (button will enable brush) */
|
|
68
|
+
enable?: string
|
|
69
|
+
/** Tooltip when brush is enabled (button will disable brush) */
|
|
70
|
+
disable?: string
|
|
71
|
+
/** Accessibility label */
|
|
72
|
+
ariaLabel?: string
|
|
73
|
+
}
|
|
74
|
+
/** Props passed to the IconButton component */
|
|
75
|
+
IconButtonProps?: IconButtonProps
|
|
76
|
+
/** Custom icon to display for brush toggle */
|
|
77
|
+
Icon?: ReactNode
|
|
78
|
+
}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for ChangeColumn's handleDragEnd + reorderFn branches that
|
|
3
|
+
* require driving the @dnd-kit/core onDragEnd callback. Uses the shared
|
|
4
|
+
* `tests/mocks/dnd-kit` harness so the DnD-kit pointer machinery is
|
|
5
|
+
* replaced with a passthrough that exposes the onDragEnd prop directly.
|
|
6
|
+
*
|
|
7
|
+
* Complements the existing change-column.test.tsx which covers render +
|
|
8
|
+
* menu + tool-registration but doesn't drive drag events.
|
|
9
|
+
*/
|
|
10
|
+
import { describe, test, expect, beforeEach, vi } from 'vitest'
|
|
11
|
+
import { render } from '@testing-library/react'
|
|
12
|
+
import {
|
|
13
|
+
dndKitCoreMock,
|
|
14
|
+
dndKitSortableMock,
|
|
15
|
+
lastDndContextProps,
|
|
16
|
+
resetDndKitMocks,
|
|
17
|
+
} from '../../../../tests/mocks/dnd-kit'
|
|
18
|
+
|
|
19
|
+
vi.mock('@dnd-kit/core', () => dndKitCoreMock())
|
|
20
|
+
vi.mock('@dnd-kit/sortable', () => dndKitSortableMock())
|
|
21
|
+
|
|
22
|
+
import { ChangeColumn, CHANGE_COLUMN_TOOL_ID } from './change-column'
|
|
23
|
+
import { useWidgetStore } from '../../stores/widget-store'
|
|
24
|
+
import type { TableColumn } from '../../table/types'
|
|
25
|
+
|
|
26
|
+
const widgetId = 'change-column-dnd'
|
|
27
|
+
const columns: TableColumn[] = [
|
|
28
|
+
{ id: 'name', label: 'Name' },
|
|
29
|
+
{ id: 'country', label: 'Country' },
|
|
30
|
+
{ id: 'population', label: 'Population' },
|
|
31
|
+
]
|
|
32
|
+
|
|
33
|
+
function seedColumns(extra: Partial<{ columns: TableColumn[] }> = {}) {
|
|
34
|
+
useWidgetStore.getState().setWidget(widgetId, {
|
|
35
|
+
columns,
|
|
36
|
+
...extra,
|
|
37
|
+
})
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
beforeEach(() => {
|
|
41
|
+
useWidgetStore.getState().clearWidgets()
|
|
42
|
+
resetDndKitMocks()
|
|
43
|
+
})
|
|
44
|
+
|
|
45
|
+
describe('handleDragEnd branches', () => {
|
|
46
|
+
test('reorders columns when active and over differ', () => {
|
|
47
|
+
seedColumns()
|
|
48
|
+
render(<ChangeColumn id={widgetId} />)
|
|
49
|
+
|
|
50
|
+
// Drag 'name' (index 0) over 'population' (index 2)
|
|
51
|
+
lastDndContextProps().onDragEnd?.({
|
|
52
|
+
active: { id: 'name' },
|
|
53
|
+
over: { id: 'population' },
|
|
54
|
+
})
|
|
55
|
+
|
|
56
|
+
const widget = useWidgetStore.getState().getWidget(widgetId)
|
|
57
|
+
const result = (widget as unknown as { columns: TableColumn[] }).columns
|
|
58
|
+
expect(result.map((c) => c.id)).toEqual(['country', 'population', 'name'])
|
|
59
|
+
})
|
|
60
|
+
|
|
61
|
+
test('no-op when `over` is missing (drop outside the sortable area)', () => {
|
|
62
|
+
seedColumns()
|
|
63
|
+
render(<ChangeColumn id={widgetId} />)
|
|
64
|
+
const before = useWidgetStore.getState().getWidget(widgetId)
|
|
65
|
+
lastDndContextProps().onDragEnd?.({
|
|
66
|
+
active: { id: 'name' },
|
|
67
|
+
over: null,
|
|
68
|
+
})
|
|
69
|
+
const after = useWidgetStore.getState().getWidget(widgetId)
|
|
70
|
+
// No reorder; column order unchanged
|
|
71
|
+
const beforeIds = (
|
|
72
|
+
before as unknown as { columns: TableColumn[] }
|
|
73
|
+
).columns.map((c) => c.id)
|
|
74
|
+
const afterIds = (
|
|
75
|
+
after as unknown as { columns: TableColumn[] }
|
|
76
|
+
).columns.map((c) => c.id)
|
|
77
|
+
expect(afterIds).toEqual(beforeIds)
|
|
78
|
+
})
|
|
79
|
+
|
|
80
|
+
test('no-op when active.id === over.id (no movement)', () => {
|
|
81
|
+
seedColumns()
|
|
82
|
+
render(<ChangeColumn id={widgetId} />)
|
|
83
|
+
lastDndContextProps().onDragEnd?.({
|
|
84
|
+
active: { id: 'name' },
|
|
85
|
+
over: { id: 'name' },
|
|
86
|
+
})
|
|
87
|
+
const widget = useWidgetStore.getState().getWidget(widgetId)
|
|
88
|
+
const result = (widget as unknown as { columns: TableColumn[] }).columns
|
|
89
|
+
expect(result.map((c) => c.id)).toEqual(['name', 'country', 'population'])
|
|
90
|
+
})
|
|
91
|
+
|
|
92
|
+
test('no-op when widget has no columns (returns early)', () => {
|
|
93
|
+
// No columns seeded but the component renders for the test we still
|
|
94
|
+
// want to set up — minimum 2 columns are required for the menu to open.
|
|
95
|
+
// Render with 2 columns then clear them.
|
|
96
|
+
seedColumns()
|
|
97
|
+
render(<ChangeColumn id={widgetId} />)
|
|
98
|
+
useWidgetStore.getState().setWidget(widgetId, { columns: undefined })
|
|
99
|
+
expect(() =>
|
|
100
|
+
lastDndContextProps().onDragEnd?.({
|
|
101
|
+
active: { id: 'name' },
|
|
102
|
+
over: { id: 'country' },
|
|
103
|
+
}),
|
|
104
|
+
).not.toThrow()
|
|
105
|
+
})
|
|
106
|
+
|
|
107
|
+
test('no-op when active.id is not found in columns (oldIndex === -1)', () => {
|
|
108
|
+
seedColumns()
|
|
109
|
+
render(<ChangeColumn id={widgetId} />)
|
|
110
|
+
lastDndContextProps().onDragEnd?.({
|
|
111
|
+
active: { id: 'unknown-col' },
|
|
112
|
+
over: { id: 'name' },
|
|
113
|
+
})
|
|
114
|
+
const widget = useWidgetStore.getState().getWidget(widgetId)
|
|
115
|
+
const result = (widget as unknown as { columns: TableColumn[] }).columns
|
|
116
|
+
expect(result.map((c) => c.id)).toEqual(['name', 'country', 'population'])
|
|
117
|
+
})
|
|
118
|
+
|
|
119
|
+
test('no-op when over.id is not found in columns (newIndex === -1)', () => {
|
|
120
|
+
seedColumns()
|
|
121
|
+
render(<ChangeColumn id={widgetId} />)
|
|
122
|
+
lastDndContextProps().onDragEnd?.({
|
|
123
|
+
active: { id: 'name' },
|
|
124
|
+
over: { id: 'unknown-col' },
|
|
125
|
+
})
|
|
126
|
+
const widget = useWidgetStore.getState().getWidget(widgetId)
|
|
127
|
+
const result = (widget as unknown as { columns: TableColumn[] }).columns
|
|
128
|
+
expect(result.map((c) => c.id)).toEqual(['name', 'country', 'population'])
|
|
129
|
+
})
|
|
130
|
+
})
|
|
131
|
+
|
|
132
|
+
describe('reorderFn branches', () => {
|
|
133
|
+
test('returns currentConfig when widget has no columns', () => {
|
|
134
|
+
seedColumns()
|
|
135
|
+
render(<ChangeColumn id={widgetId} />)
|
|
136
|
+
const widget = useWidgetStore.getState().getWidget(widgetId)
|
|
137
|
+
const tool = widget?.registeredTools?.find(
|
|
138
|
+
(t) => t.id === CHANGE_COLUMN_TOOL_ID,
|
|
139
|
+
)
|
|
140
|
+
// Clear columns from the widget
|
|
141
|
+
useWidgetStore.getState().setWidget(widgetId, { columns: [] })
|
|
142
|
+
const input = { columns }
|
|
143
|
+
expect(tool?.fn(input)).toBe(input)
|
|
144
|
+
})
|
|
145
|
+
|
|
146
|
+
test('returns currentConfig when config has no columns', () => {
|
|
147
|
+
seedColumns()
|
|
148
|
+
render(<ChangeColumn id={widgetId} />)
|
|
149
|
+
const widget = useWidgetStore.getState().getWidget(widgetId)
|
|
150
|
+
const tool = widget?.registeredTools?.find(
|
|
151
|
+
(t) => t.id === CHANGE_COLUMN_TOOL_ID,
|
|
152
|
+
)
|
|
153
|
+
const input = { columns: [] }
|
|
154
|
+
expect(tool?.fn(input)).toBe(input)
|
|
155
|
+
})
|
|
156
|
+
|
|
157
|
+
test('returns currentConfig when config columns key is undefined', () => {
|
|
158
|
+
seedColumns()
|
|
159
|
+
render(<ChangeColumn id={widgetId} />)
|
|
160
|
+
const widget = useWidgetStore.getState().getWidget(widgetId)
|
|
161
|
+
const tool = widget?.registeredTools?.find(
|
|
162
|
+
(t) => t.id === CHANGE_COLUMN_TOOL_ID,
|
|
163
|
+
)
|
|
164
|
+
const input = { other: 1 }
|
|
165
|
+
expect(tool?.fn(input)).toBe(input)
|
|
166
|
+
})
|
|
167
|
+
|
|
168
|
+
test('drops config columns that have no widget-column counterpart', () => {
|
|
169
|
+
seedColumns({ columns: [{ id: 'name', label: 'Name' }] }) // widget has only 'name'
|
|
170
|
+
render(<ChangeColumn id={widgetId} />)
|
|
171
|
+
const widget = useWidgetStore.getState().getWidget(widgetId)
|
|
172
|
+
const tool = widget?.registeredTools?.find(
|
|
173
|
+
(t) => t.id === CHANGE_COLUMN_TOOL_ID,
|
|
174
|
+
)
|
|
175
|
+
// Config has more columns; the reorder drops the loop's `if (col)` true
|
|
176
|
+
// path for matches and the trailing "append leftovers" loop for extras.
|
|
177
|
+
// With widget=['name'], the reordered result should be ['name'] followed
|
|
178
|
+
// by the remaining config columns in their original order.
|
|
179
|
+
const input = {
|
|
180
|
+
columns: [
|
|
181
|
+
{ id: 'population', label: 'Population' },
|
|
182
|
+
{ id: 'name', label: 'Name' },
|
|
183
|
+
{ id: 'country', label: 'Country' },
|
|
184
|
+
],
|
|
185
|
+
}
|
|
186
|
+
const result = tool?.fn(input) as { columns: TableColumn[] }
|
|
187
|
+
expect(result.columns.map((c) => c.id)).toEqual([
|
|
188
|
+
'name',
|
|
189
|
+
'population',
|
|
190
|
+
'country',
|
|
191
|
+
])
|
|
192
|
+
})
|
|
193
|
+
})
|
|
@@ -217,7 +217,7 @@ describe('ChangeColumn', () => {
|
|
|
217
217
|
|
|
218
218
|
// When config columns match widget columns, fn returns the same reference
|
|
219
219
|
const input = { columns: mockColumns }
|
|
220
|
-
const result = tool?.fn(input
|
|
220
|
+
const result = tool?.fn(input)
|
|
221
221
|
expect(result).toBe(input)
|
|
222
222
|
})
|
|
223
223
|
|
|
@@ -21,14 +21,14 @@ import {
|
|
|
21
21
|
useState,
|
|
22
22
|
type MouseEvent,
|
|
23
23
|
} from 'react'
|
|
24
|
-
import {
|
|
24
|
+
import { widgetStoreActions } from '../../stores/widget-store'
|
|
25
25
|
import type { ChangeColumnProps } from './types'
|
|
26
26
|
import { actionButtonStyles } from '../shared/styles'
|
|
27
27
|
import { Tooltip } from '../../../components'
|
|
28
28
|
import type { TableColumn, TableWidgetState } from '../../table/types'
|
|
29
29
|
import { ChangeColumnIcon } from './change-column-icon'
|
|
30
30
|
import { SortableColumnItem } from './sortable-column-item'
|
|
31
|
-
import {
|
|
31
|
+
import { useWidgetSelector } from '../../stores/use-widget-selector'
|
|
32
32
|
|
|
33
33
|
export const CHANGE_COLUMN_TOOL_ID = 'change-column'
|
|
34
34
|
|
|
@@ -57,12 +57,9 @@ export function ChangeColumn({
|
|
|
57
57
|
MenuProps,
|
|
58
58
|
}: ChangeColumnProps) {
|
|
59
59
|
const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null)
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
const columns = useWidgetStore(
|
|
64
|
-
useShallow((state) => state.getWidget<TableWidgetState>(id)?.columns),
|
|
65
|
-
)
|
|
60
|
+
const { columns } = useWidgetSelector(id, (w) => ({
|
|
61
|
+
columns: (w as TableWidgetState | undefined)?.columns,
|
|
62
|
+
}))
|
|
66
63
|
|
|
67
64
|
/**
|
|
68
65
|
* Config tool function that reorders columns to match the current widget state.
|
|
@@ -72,9 +69,7 @@ export function ChangeColumn({
|
|
|
72
69
|
*/
|
|
73
70
|
const reorderFn = useCallback(
|
|
74
71
|
(currentConfig: unknown): unknown => {
|
|
75
|
-
const widgetState =
|
|
76
|
-
.getState()
|
|
77
|
-
.getWidget<TableWidgetState>(id)
|
|
72
|
+
const widgetState = widgetStoreActions.getWidget<TableWidgetState>(id)
|
|
78
73
|
const currentColumns = widgetState?.columns
|
|
79
74
|
if (!currentColumns || currentColumns.length === 0) return currentConfig
|
|
80
75
|
|
|
@@ -130,15 +125,15 @@ export function ChangeColumn({
|
|
|
130
125
|
|
|
131
126
|
// Register config tool on mount
|
|
132
127
|
useEffect(() => {
|
|
133
|
-
registerTool(id, {
|
|
128
|
+
widgetStoreActions.registerTool(id, {
|
|
134
129
|
id: CHANGE_COLUMN_TOOL_ID,
|
|
135
130
|
type: 'config',
|
|
136
131
|
order: 100,
|
|
137
132
|
enabled: true,
|
|
138
133
|
fn: reorderFn,
|
|
139
134
|
})
|
|
140
|
-
return () => unregisterTool(id, CHANGE_COLUMN_TOOL_ID)
|
|
141
|
-
}, [id,
|
|
135
|
+
return () => widgetStoreActions.unregisterTool(id, CHANGE_COLUMN_TOOL_ID)
|
|
136
|
+
}, [id, reorderFn])
|
|
142
137
|
|
|
143
138
|
const handleToggle = useCallback((event: MouseEvent<HTMLElement>) => {
|
|
144
139
|
event.stopPropagation()
|
|
@@ -156,7 +151,7 @@ export function ChangeColumn({
|
|
|
156
151
|
const newIndex = columns.findIndex((col) => col.id === over.id)
|
|
157
152
|
if (oldIndex !== -1 && newIndex !== -1) {
|
|
158
153
|
const newColumns = arrayMove(columns, oldIndex, newIndex)
|
|
159
|
-
setWidget(id, { columns: newColumns })
|
|
154
|
+
widgetStoreActions.setWidget(id, { columns: newColumns })
|
|
160
155
|
}
|
|
161
156
|
}
|
|
162
157
|
|
|
@@ -201,6 +196,11 @@ export function ChangeColumn({
|
|
|
201
196
|
onClose={handleClose}
|
|
202
197
|
anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}
|
|
203
198
|
transformOrigin={{ vertical: 'top', horizontal: 'right' }}
|
|
199
|
+
slotProps={{
|
|
200
|
+
paper: {
|
|
201
|
+
sx: { overflow: 'hidden' },
|
|
202
|
+
},
|
|
203
|
+
}}
|
|
204
204
|
{...MenuProps}
|
|
205
205
|
>
|
|
206
206
|
<SortableContext
|