@carto/ps-react-ui 4.4.0-chat-ui.6 → 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 +621 -672
- 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 +9 -26
- 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 +82 -11
- 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 +9 -30
- 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,261 @@
|
|
|
1
|
+
import { create as P } from "zustand";
|
|
2
|
+
const p = /* @__PURE__ */ new Map(), w = /* @__PURE__ */ new Map(), u = P()((T, b) => ({
|
|
3
|
+
// State
|
|
4
|
+
widgets: {},
|
|
5
|
+
// Actions
|
|
6
|
+
/** Merges partial state into the widget entry. Creates the widget if it doesn't exist. */
|
|
7
|
+
setWidget: (e, t) => {
|
|
8
|
+
T((o) => {
|
|
9
|
+
const s = o.widgets[e] ?? {};
|
|
10
|
+
return {
|
|
11
|
+
widgets: {
|
|
12
|
+
...o.widgets,
|
|
13
|
+
[e]: {
|
|
14
|
+
...s,
|
|
15
|
+
...t,
|
|
16
|
+
id: e
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
});
|
|
21
|
+
},
|
|
22
|
+
removeWidget: (e) => T((t) => {
|
|
23
|
+
const o = {
|
|
24
|
+
...t.widgets
|
|
25
|
+
};
|
|
26
|
+
return delete o[e], {
|
|
27
|
+
widgets: o
|
|
28
|
+
};
|
|
29
|
+
}),
|
|
30
|
+
clearWidgets: () => T({
|
|
31
|
+
widgets: {}
|
|
32
|
+
}),
|
|
33
|
+
getWidget: (e) => b().widgets[e],
|
|
34
|
+
/**
|
|
35
|
+
* Registers a transformation tool for a widget's data or config pipeline.
|
|
36
|
+
*
|
|
37
|
+
* **No-op optimization:** When a tool with the same `id` already exists and its
|
|
38
|
+
* structural properties (`order`, `enabled`, `type`, `disables`) are unchanged,
|
|
39
|
+
* only `fn` is updated via direct mutation — no store update is triggered. This
|
|
40
|
+
* allows action components to include all reactive dependencies in their
|
|
41
|
+
* `useEffect` arrays without causing WidgetLoader pipeline cascades.
|
|
42
|
+
*/
|
|
43
|
+
registerTool: (e, t) => {
|
|
44
|
+
const s = b().widgets[e]?.registeredTools?.find((n) => n.id === t.id);
|
|
45
|
+
if (s?.order === t.order && s.enabled === t.enabled && s.type === t.type && s.disables === t.disables) {
|
|
46
|
+
s.fn = t.fn;
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
T((n) => {
|
|
50
|
+
const g = n.widgets[e] ?? {}, f = (g.registeredTools ?? []).filter((l) => l.id !== t.id);
|
|
51
|
+
return {
|
|
52
|
+
widgets: {
|
|
53
|
+
...n.widgets,
|
|
54
|
+
[e]: {
|
|
55
|
+
...g,
|
|
56
|
+
id: e,
|
|
57
|
+
registeredTools: [...f, t]
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
});
|
|
62
|
+
},
|
|
63
|
+
unregisterTool: (e, t) => T((o) => {
|
|
64
|
+
const s = o.widgets[e];
|
|
65
|
+
if (!s) return o;
|
|
66
|
+
const g = (s.registeredTools ?? []).filter((d) => d.id !== t);
|
|
67
|
+
return {
|
|
68
|
+
widgets: {
|
|
69
|
+
...o.widgets,
|
|
70
|
+
[e]: {
|
|
71
|
+
...s,
|
|
72
|
+
registeredTools: g
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
}),
|
|
77
|
+
/**
|
|
78
|
+
* Triggers pipeline re-execution by creating a new `registeredTools` reference.
|
|
79
|
+
* This is a lightweight operation that only bumps the array reference without
|
|
80
|
+
* modifying any tool.
|
|
81
|
+
*/
|
|
82
|
+
triggerToolPipeline: (e) => T((t) => {
|
|
83
|
+
const o = t.widgets[e];
|
|
84
|
+
return o ? {
|
|
85
|
+
widgets: {
|
|
86
|
+
...t.widgets,
|
|
87
|
+
[e]: {
|
|
88
|
+
...o,
|
|
89
|
+
registeredTools: [...o.registeredTools ?? []]
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
} : t;
|
|
93
|
+
}),
|
|
94
|
+
/**
|
|
95
|
+
* Updates a tool's enabled state.
|
|
96
|
+
*
|
|
97
|
+
* **No-op optimization:** Skips the store update if the tool already has the
|
|
98
|
+
* requested enabled value.
|
|
99
|
+
*/
|
|
100
|
+
setToolEnabled: (e, t, o) => {
|
|
101
|
+
const s = b().widgets[e];
|
|
102
|
+
s && s.registeredTools?.find((g) => g.id === t)?.enabled === o || T((n) => {
|
|
103
|
+
const g = n.widgets[e];
|
|
104
|
+
if (!g) return n;
|
|
105
|
+
const f = (g.registeredTools ?? []).map((l) => l.id === t ? {
|
|
106
|
+
...l,
|
|
107
|
+
enabled: o
|
|
108
|
+
} : l);
|
|
109
|
+
return {
|
|
110
|
+
widgets: {
|
|
111
|
+
...n.widgets,
|
|
112
|
+
[e]: {
|
|
113
|
+
...g,
|
|
114
|
+
registeredTools: f
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
});
|
|
119
|
+
},
|
|
120
|
+
/**
|
|
121
|
+
* Executes the data transformation pipeline for a widget.
|
|
122
|
+
*
|
|
123
|
+
* Filters to enabled data-type tools (respecting `disables`), sorts by `order`,
|
|
124
|
+
* and chains their `fn` calls. Supports async tools.
|
|
125
|
+
*
|
|
126
|
+
* **Cancellation:** Newer executions for the same widget automatically cancel
|
|
127
|
+
* in-progress ones via a version counter.
|
|
128
|
+
*
|
|
129
|
+
* **No-op optimization:** Skips the final `set()` if the transformed data is
|
|
130
|
+
* referentially identical (`Object.is`) to what's already in the store.
|
|
131
|
+
*/
|
|
132
|
+
executeToolPipeline: async (e, t) => {
|
|
133
|
+
const o = b().widgets[e];
|
|
134
|
+
if (!o) return;
|
|
135
|
+
const s = (p.get(e) ?? 0) + 1;
|
|
136
|
+
p.set(e, s);
|
|
137
|
+
const n = o, g = /* @__PURE__ */ new Set();
|
|
138
|
+
for (const i of n.registeredTools ?? [])
|
|
139
|
+
i.enabled && i.disables && i.disables.forEach((c) => g.add(c));
|
|
140
|
+
const d = [...n.registeredTools ?? []].filter((i) => (i.type ?? "data") === "data" && i.enabled && !g.has(i.id)).sort((i, c) => i.order - c.order);
|
|
141
|
+
let f = t;
|
|
142
|
+
for (const i of d) {
|
|
143
|
+
if (p.get(e) !== s)
|
|
144
|
+
return;
|
|
145
|
+
try {
|
|
146
|
+
f = await i.fn(f);
|
|
147
|
+
} catch (c) {
|
|
148
|
+
console.error(`Tool ${i.id} failed for widget ${e}:`, c);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
const l = b().widgets[e];
|
|
152
|
+
if (l && Object.is(l.data, f) && Object.is(l.sourceData, t)) {
|
|
153
|
+
p.get(e) === s && p.delete(e);
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
T((i) => {
|
|
157
|
+
const c = i.widgets[e];
|
|
158
|
+
return c ? {
|
|
159
|
+
widgets: {
|
|
160
|
+
...i.widgets,
|
|
161
|
+
[e]: {
|
|
162
|
+
...c,
|
|
163
|
+
sourceData: t,
|
|
164
|
+
data: f
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
} : i;
|
|
168
|
+
}), p.get(e) === s && p.delete(e);
|
|
169
|
+
},
|
|
170
|
+
/**
|
|
171
|
+
* Executes the config transformation pipeline for a widget.
|
|
172
|
+
*
|
|
173
|
+
* Filters to enabled config-type tools (respecting `disables`), sorts by `order`,
|
|
174
|
+
* and chains their `fn` calls. The transformed config is spread into the widget state.
|
|
175
|
+
*
|
|
176
|
+
* **Cancellation:** Newer executions for the same widget automatically cancel
|
|
177
|
+
* in-progress ones via a version counter.
|
|
178
|
+
*
|
|
179
|
+
* **No-op optimization:** Skips the final `set()` when the config object is unchanged
|
|
180
|
+
* and all its properties already match what's in the store.
|
|
181
|
+
*/
|
|
182
|
+
executeConfigPipeline: async (e, t) => {
|
|
183
|
+
const o = b().widgets[e];
|
|
184
|
+
if (!o) return;
|
|
185
|
+
const s = (w.get(e) ?? 0) + 1;
|
|
186
|
+
w.set(e, s);
|
|
187
|
+
const n = /* @__PURE__ */ new Set();
|
|
188
|
+
for (const r of o.registeredTools ?? [])
|
|
189
|
+
r.enabled && r.disables && r.disables.forEach((a) => n.add(a));
|
|
190
|
+
const g = [...o.registeredTools ?? []].filter((r) => r.type === "config" && r.enabled && !n.has(r.id)).sort((r, a) => r.order - a.order);
|
|
191
|
+
let d = t;
|
|
192
|
+
for (const r of g) {
|
|
193
|
+
if (w.get(e) !== s)
|
|
194
|
+
return;
|
|
195
|
+
try {
|
|
196
|
+
d = await r.fn(d);
|
|
197
|
+
} catch (a) {
|
|
198
|
+
console.error(`Config tool ${r.id} failed for widget ${e}:`, a);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
const f = t, l = d, i = b().widgets[e], c = i?._lastConfig, W = {};
|
|
202
|
+
for (const r of Object.keys(l)) {
|
|
203
|
+
const a = !Object.is(l[r], f[r]), S = !c || !(r in c), C = !S && Object.is(i[r], c[r]);
|
|
204
|
+
(a || S || C) && (W[r] = l[r]);
|
|
205
|
+
}
|
|
206
|
+
const h = Object.keys(W).some((r) => !Object.is(i?.[r], W[r])), y = !Object.is(d, c);
|
|
207
|
+
if (!h && !y) {
|
|
208
|
+
w.get(e) === s && w.delete(e);
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
T((r) => {
|
|
212
|
+
const a = r.widgets[e];
|
|
213
|
+
return a ? {
|
|
214
|
+
widgets: {
|
|
215
|
+
...r.widgets,
|
|
216
|
+
[e]: {
|
|
217
|
+
...a,
|
|
218
|
+
...W,
|
|
219
|
+
_lastConfig: d
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
} : r;
|
|
223
|
+
}), w.get(e) === s && w.delete(e);
|
|
224
|
+
}
|
|
225
|
+
})), x = {
|
|
226
|
+
get setWidget() {
|
|
227
|
+
return u.getState().setWidget;
|
|
228
|
+
},
|
|
229
|
+
get removeWidget() {
|
|
230
|
+
return u.getState().removeWidget;
|
|
231
|
+
},
|
|
232
|
+
get clearWidgets() {
|
|
233
|
+
return u.getState().clearWidgets;
|
|
234
|
+
},
|
|
235
|
+
get getWidget() {
|
|
236
|
+
return u.getState().getWidget;
|
|
237
|
+
},
|
|
238
|
+
get registerTool() {
|
|
239
|
+
return u.getState().registerTool;
|
|
240
|
+
},
|
|
241
|
+
get unregisterTool() {
|
|
242
|
+
return u.getState().unregisterTool;
|
|
243
|
+
},
|
|
244
|
+
get setToolEnabled() {
|
|
245
|
+
return u.getState().setToolEnabled;
|
|
246
|
+
},
|
|
247
|
+
get triggerToolPipeline() {
|
|
248
|
+
return u.getState().triggerToolPipeline;
|
|
249
|
+
},
|
|
250
|
+
get executeToolPipeline() {
|
|
251
|
+
return u.getState().executeToolPipeline;
|
|
252
|
+
},
|
|
253
|
+
get executeConfigPipeline() {
|
|
254
|
+
return u.getState().executeConfigPipeline;
|
|
255
|
+
}
|
|
256
|
+
};
|
|
257
|
+
export {
|
|
258
|
+
u,
|
|
259
|
+
x as w
|
|
260
|
+
};
|
|
261
|
+
//# sourceMappingURL=widget-store-Bw5zRUGg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widget-store-Bw5zRUGg.js","sources":["../src/widgets/stores/widget-store.ts"],"sourcesContent":["import { create } from 'zustand'\nimport type {\n WidgetState,\n WidgetStore,\n ToolRegistration,\n WidgetStoreActions,\n} from './types'\n\n// Track active pipeline executions for cancellation\nconst activePipelines = new Map<string, number>()\nconst activeConfigPipelines = new Map<string, number>()\n\n/**\n * Zustand store for managing widget state across the application.\n *\n * Provides centralized state management for all widget UI components, including\n * data/config transformation pipelines via registered tools.\n *\n * **Performance optimizations:**\n * - `registerTool` skips the store update when structural properties (order, enabled,\n * type, disables) haven't changed — only `fn` is updated via direct mutation,\n * avoiding a new `registeredTools` array reference and WidgetLoader pipeline cascades.\n * - `setToolEnabled` skips the store update when the enabled state is already the\n * requested value.\n * - `executeToolPipeline` / `executeConfigPipeline` skip the final `set()` when\n * the transformed data/config is referentially identical to what's already in the store.\n * - Both pipelines support cancellation — newer executions for the same widget\n * automatically cancel in-progress ones.\n *\n * @example Reading widget state (prefer useWidgetSelector for performance)\n * ```tsx\n * import { useWidgetSelector } from '@carto/ps-react-ui/widgets'\n *\n * function MyWidget({ id }: { id: string }) {\n * const { title, data } = useWidgetSelector(id, (w) => ({\n * title: w?.title,\n * data: w?.data,\n * }))\n * return <div>{title}: {JSON.stringify(data)}</div>\n * }\n * ```\n *\n * @example Writing widget state\n * ```tsx\n * import { widgetStoreActions } from '@carto/ps-react-ui/widgets'\n *\n * const { setWidget } = widgetStoreActions\n * setWidget('my-widget', { type: 'formula', isLoading: false, data: { value: 1000 } })\n * ```\n */\nexport const useWidgetStore = create<WidgetStore>()((set, get) => ({\n // State\n widgets: {},\n\n // Actions\n\n /** Merges partial state into the widget entry. Creates the widget if it doesn't exist. */\n setWidget: (id, widget) => {\n set((state) => {\n const prev = state.widgets[id] ?? ({} as WidgetStore['widgets'][string])\n return {\n widgets: {\n ...state.widgets,\n [id]: {\n ...prev,\n ...widget,\n id,\n },\n },\n }\n })\n },\n\n removeWidget: (id) =>\n set((state) => {\n const widgets = { ...state.widgets }\n\n delete widgets[id]\n\n return { widgets }\n }),\n\n clearWidgets: () =>\n set({\n widgets: {},\n }),\n\n getWidget: <T extends WidgetState>(id: string) => {\n return get().widgets[id] as T | undefined\n },\n\n /**\n * Registers a transformation tool for a widget's data or config pipeline.\n *\n * **No-op optimization:** When a tool with the same `id` already exists and its\n * structural properties (`order`, `enabled`, `type`, `disables`) are unchanged,\n * only `fn` is updated via direct mutation — no store update is triggered. This\n * allows action components to include all reactive dependencies in their\n * `useEffect` arrays without causing WidgetLoader pipeline cascades.\n */\n registerTool: (widgetId: string, tool: ToolRegistration) => {\n const current = get().widgets[widgetId]\n const existingTool = current?.registeredTools?.find(\n (t: ToolRegistration) => t.id === tool.id,\n )\n\n // No-op: structural properties unchanged — update fn via direct mutation.\n // Safe because fn is only consumed imperatively during pipeline execution.\n if (\n existingTool?.order === tool.order &&\n existingTool.enabled === tool.enabled &&\n existingTool.type === tool.type &&\n existingTool.disables === tool.disables\n ) {\n existingTool.fn = tool.fn\n return\n }\n\n set((state) => {\n const widget = state.widgets[widgetId] ?? ({} as WidgetState)\n const registeredTools = widget.registeredTools ?? []\n\n // Remove existing tool with same id if present\n const filteredTools = registeredTools.filter(\n (t: ToolRegistration) => t.id !== tool.id,\n )\n\n return {\n widgets: {\n ...state.widgets,\n [widgetId]: {\n ...widget,\n id: widgetId,\n registeredTools: [...filteredTools, tool],\n },\n },\n }\n })\n },\n\n unregisterTool: (widgetId: string, toolId: string) =>\n set((state) => {\n const current = state.widgets[widgetId]\n if (!current) return state\n\n const registeredTools = current.registeredTools ?? []\n const filteredTools = registeredTools.filter(\n (t: ToolRegistration) => t.id !== toolId,\n )\n\n return {\n widgets: {\n ...state.widgets,\n [widgetId]: {\n ...current,\n registeredTools: filteredTools,\n },\n },\n }\n }),\n\n /**\n * Triggers pipeline re-execution by creating a new `registeredTools` reference.\n * This is a lightweight operation that only bumps the array reference without\n * modifying any tool.\n */\n triggerToolPipeline: (widgetId: string) =>\n set((state) => {\n const widget = state.widgets[widgetId]\n if (!widget) return state\n\n return {\n widgets: {\n ...state.widgets,\n [widgetId]: {\n ...widget,\n registeredTools: [...(widget.registeredTools ?? [])],\n },\n },\n }\n }),\n\n /**\n * Updates a tool's enabled state.\n *\n * **No-op optimization:** Skips the store update if the tool already has the\n * requested enabled value.\n */\n setToolEnabled: (widgetId: string, toolId: string, enabled: boolean) => {\n const current = get().widgets[widgetId]\n if (current) {\n const tool = current.registeredTools?.find(\n (t: ToolRegistration) => t.id === toolId,\n )\n if (tool?.enabled === enabled) return\n }\n\n set((state) => {\n const widget = state.widgets[widgetId]\n if (!widget) return state\n\n const registeredTools = widget.registeredTools ?? []\n const updatedTools = registeredTools.map((tool: ToolRegistration) =>\n tool.id === toolId ? { ...tool, enabled } : tool,\n )\n\n return {\n widgets: {\n ...state.widgets,\n [widgetId]: {\n ...widget,\n registeredTools: updatedTools,\n },\n },\n }\n })\n },\n\n /**\n * Executes the data transformation pipeline for a widget.\n *\n * Filters to enabled data-type tools (respecting `disables`), sorts by `order`,\n * and chains their `fn` calls. Supports async tools.\n *\n * **Cancellation:** Newer executions for the same widget automatically cancel\n * in-progress ones via a version counter.\n *\n * **No-op optimization:** Skips the final `set()` if the transformed data is\n * referentially identical (`Object.is`) to what's already in the store.\n */\n executeToolPipeline: async (widgetId: string, sourceData: unknown) => {\n const widget = get().widgets[widgetId]\n if (!widget) return\n\n // Cancel any in-progress pipeline for this widget\n const currentExecution = (activePipelines.get(widgetId) ?? 0) + 1\n activePipelines.set(widgetId, currentExecution)\n\n const widgetWithTools = widget\n\n // Build set of tool IDs that should be disabled\n const disabledToolIds = new Set<string>()\n for (const tool of widgetWithTools.registeredTools ?? []) {\n if (tool.enabled && tool.disables) {\n tool.disables.forEach((id) => disabledToolIds.add(id))\n }\n }\n\n // Sort tools by order and filter enabled data-only tools, excluding disabled tools\n const sortedTools = [...(widgetWithTools.registeredTools ?? [])]\n .filter(\n (tool) =>\n (tool.type ?? 'data') === 'data' &&\n tool.enabled &&\n !disabledToolIds.has(tool.id),\n )\n .sort((a, b) => a.order - b.order)\n\n // Execute pipeline - handle both sync and async tools\n let transformedData = sourceData\n for (const tool of sortedTools) {\n // Check if this execution was cancelled\n if (activePipelines.get(widgetId) !== currentExecution) {\n return\n }\n\n try {\n // Call tool function (may return Promise or direct value)\n transformedData = await tool.fn(transformedData)\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(`Tool ${tool.id} failed for widget ${widgetId}:`, error)\n // Continue with current data to prevent one tool from breaking all\n }\n }\n\n // Skip store update if neither data nor sourceData changed\n const widgetAfter = get().widgets[widgetId]\n if (\n widgetAfter &&\n Object.is(widgetAfter.data, transformedData) &&\n Object.is(widgetAfter.sourceData, sourceData)\n ) {\n if (activePipelines.get(widgetId) === currentExecution) {\n activePipelines.delete(widgetId)\n }\n return\n }\n\n // Single store update with final transformed data\n set((state) => {\n const currentWidget = state.widgets[widgetId]\n if (!currentWidget) return state\n\n return {\n widgets: {\n ...state.widgets,\n [widgetId]: {\n ...currentWidget,\n sourceData,\n data: transformedData,\n },\n },\n }\n })\n\n // Clean up tracking\n if (activePipelines.get(widgetId) === currentExecution) {\n activePipelines.delete(widgetId)\n }\n },\n\n /**\n * Executes the config transformation pipeline for a widget.\n *\n * Filters to enabled config-type tools (respecting `disables`), sorts by `order`,\n * and chains their `fn` calls. The transformed config is spread into the widget state.\n *\n * **Cancellation:** Newer executions for the same widget automatically cancel\n * in-progress ones via a version counter.\n *\n * **No-op optimization:** Skips the final `set()` when the config object is unchanged\n * and all its properties already match what's in the store.\n */\n executeConfigPipeline: async (widgetId: string, baseConfig: object) => {\n const widget = get().widgets[widgetId]\n if (!widget) return\n\n // Cancel any in-progress config pipeline for this widget\n const currentExecution = (activeConfigPipelines.get(widgetId) ?? 0) + 1\n activeConfigPipelines.set(widgetId, currentExecution)\n\n // Build set of tool IDs that should be disabled (cross-type disabling works)\n const disabledToolIds = new Set<string>()\n for (const tool of widget.registeredTools ?? []) {\n if (tool.enabled && tool.disables) {\n tool.disables.forEach((id) => disabledToolIds.add(id))\n }\n }\n\n // Filter to config tools only, sort by order\n const sortedTools = [...(widget.registeredTools ?? [])]\n .filter(\n (tool) =>\n tool.type === 'config' &&\n tool.enabled &&\n !disabledToolIds.has(tool.id),\n )\n .sort((a, b) => a.order - b.order)\n\n // Chain config tools\n let transformedConfig: unknown = baseConfig\n for (const tool of sortedTools) {\n if (activeConfigPipelines.get(widgetId) !== currentExecution) {\n return\n }\n\n try {\n transformedConfig = await tool.fn(transformedConfig)\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\n `Config tool ${tool.id} failed for widget ${widgetId}:`,\n error,\n )\n }\n }\n\n // Build a patch that only includes properties the pipeline should set.\n // A property is applied when:\n // 1. A config tool explicitly changed it (transformedConfig[k] !== baseConfig[k])\n // 2. First pipeline run for this widget (no _lastConfig yet)\n // 3. The widget value still matches what the pipeline last set — meaning the\n // user hasn't modified it via setWidget, so it's safe to overwrite.\n // A property is SKIPPED when the widget value differs from _lastConfig,\n // meaning the user (or a hook) changed it since the last pipeline run.\n const base = baseConfig as Record<string, unknown>\n const result = transformedConfig as Record<string, unknown>\n const widgetNow = get().widgets[widgetId] as unknown as Record<\n string,\n unknown\n >\n const lastConfig = widgetNow?._lastConfig as\n | Record<string, unknown>\n | undefined\n\n const patch: Record<string, unknown> = {}\n for (const key of Object.keys(result)) {\n const toolChanged = !Object.is(result[key], base[key])\n const isFirstRun = !lastConfig || !(key in lastConfig)\n const userUnmodified =\n !isFirstRun && Object.is(widgetNow[key], lastConfig[key])\n\n if (toolChanged || isFirstRun || userUnmodified) {\n patch[key] = result[key]\n }\n }\n\n // Skip store update if every patch value already matches the widget\n const hasChanges = Object.keys(patch).some(\n (k) => !Object.is(widgetNow?.[k], patch[k]),\n )\n const configRefChanged = !Object.is(transformedConfig, lastConfig)\n\n if (!hasChanges && !configRefChanged) {\n if (activeConfigPipelines.get(widgetId) === currentExecution) {\n activeConfigPipelines.delete(widgetId)\n }\n return\n }\n\n // Apply the patch and store the pipeline output for next run's comparison\n set((state) => {\n const currentWidget = state.widgets[widgetId]\n if (!currentWidget) return state\n\n return {\n widgets: {\n ...state.widgets,\n [widgetId]: {\n ...currentWidget,\n ...patch,\n _lastConfig: transformedConfig,\n },\n },\n }\n })\n\n if (activeConfigPipelines.get(widgetId) === currentExecution) {\n activeConfigPipelines.delete(widgetId)\n }\n },\n}))\n\n/**\n * Stable references to store actions, accessible without creating a subscription.\n *\n * Use this instead of `useWidgetStore((state) => state.setWidget)` to avoid\n * unnecessary subscriber evaluations. Actions are stable functions that never\n * change, so subscribing to them wastes cycles on every store update.\n *\n * @example\n * ```tsx\n * import { widgetStoreActions } from '@carto/ps-react-ui/widgets'\n *\n * const { setWidget, registerTool } = widgetStoreActions\n *\n * useEffect(() => {\n * registerTool(id, { id: 'my-tool', order: 10, enabled: true, fn: (d) => d })\n * return () => widgetStoreActions.unregisterTool(id, 'my-tool')\n * }, [id])\n * ```\n */\nexport const widgetStoreActions: WidgetStoreActions = {\n get setWidget() {\n return useWidgetStore.getState().setWidget\n },\n get removeWidget() {\n return useWidgetStore.getState().removeWidget\n },\n get clearWidgets() {\n return useWidgetStore.getState().clearWidgets\n },\n get getWidget() {\n return useWidgetStore.getState().getWidget\n },\n get registerTool() {\n return useWidgetStore.getState().registerTool\n },\n get unregisterTool() {\n return useWidgetStore.getState().unregisterTool\n },\n get setToolEnabled() {\n return useWidgetStore.getState().setToolEnabled\n },\n get triggerToolPipeline() {\n return useWidgetStore.getState().triggerToolPipeline\n },\n get executeToolPipeline() {\n return useWidgetStore.getState().executeToolPipeline\n },\n get executeConfigPipeline() {\n return useWidgetStore.getState().executeConfigPipeline\n },\n} as WidgetStoreActions\n"],"names":["activePipelines","Map","activeConfigPipelines","useWidgetStore","create","set","get","widgets","setWidget","id","widget","state","prev","removeWidget","clearWidgets","getWidget","registerTool","widgetId","tool","existingTool","registeredTools","find","t","order","enabled","type","disables","fn","filteredTools","filter","unregisterTool","toolId","current","triggerToolPipeline","setToolEnabled","updatedTools","map","executeToolPipeline","sourceData","currentExecution","widgetWithTools","disabledToolIds","Set","forEach","add","sortedTools","has","sort","a","b","transformedData","error","console","widgetAfter","Object","is","data","delete","currentWidget","executeConfigPipeline","baseConfig","transformedConfig","base","result","widgetNow","lastConfig","_lastConfig","patch","key","keys","toolChanged","isFirstRun","userUnmodified","hasChanges","some","k","configRefChanged","widgetStoreActions","getState"],"mappings":"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"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { c as I } from "react/compiler-runtime";
|
|
2
|
+
import { useStore as A } from "zustand";
|
|
3
|
+
import { createStore as j } from "zustand/vanilla";
|
|
4
|
+
import { devtools as L } from "zustand/middleware";
|
|
5
|
+
import { useShallow as q } from "zustand/react/shallow";
|
|
6
|
+
function K(e, t, r) {
|
|
7
|
+
const n = /* @__PURE__ */ new Set();
|
|
8
|
+
for (const s of t)
|
|
9
|
+
if (s.enabled && s.disables?.length)
|
|
10
|
+
for (const o of s.disables) n.add(o);
|
|
11
|
+
let a = e;
|
|
12
|
+
for (const s of t)
|
|
13
|
+
if (s.enabled && !n.has(s.id))
|
|
14
|
+
try {
|
|
15
|
+
a = s.fn(a);
|
|
16
|
+
} catch (o) {
|
|
17
|
+
const m = o instanceof Error ? o : new Error(String(o));
|
|
18
|
+
console.warn(`[widgets-v2] Transform "${s.id}" failed:`, m), r?.(s.id, m);
|
|
19
|
+
}
|
|
20
|
+
return a;
|
|
21
|
+
}
|
|
22
|
+
function G(e, t) {
|
|
23
|
+
const r = e.find((o) => o.id === t.id);
|
|
24
|
+
if (r?.order === t.order && r?.enabled === t.enabled && r?.fn === t.fn && r?.type === t.type && M(r?.disables, t.disables) && M(r?.replaceMergeKeys, t.replaceMergeKeys))
|
|
25
|
+
return e;
|
|
26
|
+
const n = e.filter((o) => o.id !== t.id), a = n.findIndex((o) => o.order > t.order), s = n.slice();
|
|
27
|
+
return s.splice(a === -1 ? s.length : a, 0, t), s;
|
|
28
|
+
}
|
|
29
|
+
function H(e, t) {
|
|
30
|
+
return e.some((r) => r.id === t) ? e.filter((r) => r.id !== t) : e;
|
|
31
|
+
}
|
|
32
|
+
function M(e, t) {
|
|
33
|
+
if (e === t) return !0;
|
|
34
|
+
if (!e) return !t?.length;
|
|
35
|
+
if (!t) return !e.length;
|
|
36
|
+
if (e.length !== t.length) return !1;
|
|
37
|
+
for (let r = 0; r < e.length; r++) if (e[r] !== t[r]) return !1;
|
|
38
|
+
return !0;
|
|
39
|
+
}
|
|
40
|
+
const g = /* @__PURE__ */ new WeakSet(), P = ((e) => (t, r, n) => {
|
|
41
|
+
const a = n.setState, s = n, o = (E) => ((b, W) => {
|
|
42
|
+
const d = n.getState(), i = typeof b == "function" ? b(d) : b, u = (D) => Object.prototype.hasOwnProperty.call(i, D), v = u("rawData") && !Object.is(i.rawData, d.rawData), T = u("dataTransforms") && i.dataTransforms !== d.dataTransforms;
|
|
43
|
+
if (!v && !T)
|
|
44
|
+
return u("error") && g.delete(s), E(i, W);
|
|
45
|
+
const h = {
|
|
46
|
+
...i
|
|
47
|
+
};
|
|
48
|
+
let S;
|
|
49
|
+
const F = (D, _) => {
|
|
50
|
+
S === void 0 && (S = _);
|
|
51
|
+
}, k = v ? i.rawData : d.rawData, O = T ? i.dataTransforms : d.dataTransforms;
|
|
52
|
+
return h.data = K(k, O, F), S !== void 0 ? (h.error = S, g.add(s)) : g.has(s) && !u("error") ? (h.error = void 0, g.delete(s)) : u("error") && g.delete(s), E(h, W);
|
|
53
|
+
});
|
|
54
|
+
n.setState = o(a);
|
|
55
|
+
const m = o(t);
|
|
56
|
+
return e(m, r, n);
|
|
57
|
+
}), c = /* @__PURE__ */ new Map(), f = /* @__PURE__ */ new Map(), y = /* @__PURE__ */ new Set(), p = /* @__PURE__ */ new Map(), w = /* @__PURE__ */ new Map(), l = /* @__PURE__ */ new Map(), C = () => {
|
|
58
|
+
try {
|
|
59
|
+
return !1;
|
|
60
|
+
} catch {
|
|
61
|
+
return !1;
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
function $(e) {
|
|
65
|
+
const t = c.get(e);
|
|
66
|
+
if (!t) throw new Error(`[widgets-v2] Widget store "${e}" not found.`);
|
|
67
|
+
return t;
|
|
68
|
+
}
|
|
69
|
+
function J(e) {
|
|
70
|
+
return c.has(e);
|
|
71
|
+
}
|
|
72
|
+
function N(e) {
|
|
73
|
+
c.delete(e);
|
|
74
|
+
}
|
|
75
|
+
function Q(e) {
|
|
76
|
+
const t = c.get(e);
|
|
77
|
+
t && t.setState({
|
|
78
|
+
transformStates: {}
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
function V() {
|
|
82
|
+
c.clear(), f.clear(), y.clear(), p.clear(), w.clear(), l.clear();
|
|
83
|
+
}
|
|
84
|
+
function Y(e, t) {
|
|
85
|
+
t == null ? p.delete(e) : p.set(e, t);
|
|
86
|
+
}
|
|
87
|
+
function Z(e) {
|
|
88
|
+
return p.get(e) ?? null;
|
|
89
|
+
}
|
|
90
|
+
function x() {
|
|
91
|
+
p.clear();
|
|
92
|
+
}
|
|
93
|
+
function ee(e, t) {
|
|
94
|
+
t == null ? w.delete(e) : w.set(e, t), l.get(e)?.forEach((r) => r(t));
|
|
95
|
+
}
|
|
96
|
+
function te(e) {
|
|
97
|
+
return w.get(e) ?? null;
|
|
98
|
+
}
|
|
99
|
+
function re(e, t) {
|
|
100
|
+
let r = l.get(e);
|
|
101
|
+
return r || (r = /* @__PURE__ */ new Set(), l.set(e, r)), r.add(t), () => {
|
|
102
|
+
const n = l.get(e);
|
|
103
|
+
n && (n.delete(t), n.size === 0 && l.delete(e));
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
function ne() {
|
|
107
|
+
w.clear(), l.clear();
|
|
108
|
+
}
|
|
109
|
+
function se() {
|
|
110
|
+
return Array.from(c.keys());
|
|
111
|
+
}
|
|
112
|
+
function oe(e, t) {
|
|
113
|
+
c.set(e, t);
|
|
114
|
+
}
|
|
115
|
+
function ae(e, t) {
|
|
116
|
+
const r = P(() => ({
|
|
117
|
+
rawData: t.data,
|
|
118
|
+
data: t.data,
|
|
119
|
+
dataTransforms: [],
|
|
120
|
+
configTransforms: [],
|
|
121
|
+
transformStates: {},
|
|
122
|
+
isLoading: t.isLoading ?? !1,
|
|
123
|
+
isFetching: t.isFetching ?? !1,
|
|
124
|
+
error: t.error,
|
|
125
|
+
rawFormatter: t.formatter,
|
|
126
|
+
formatter: t.formatter,
|
|
127
|
+
labelFormatter: t.labelFormatter
|
|
128
|
+
}));
|
|
129
|
+
return j()(L(r, {
|
|
130
|
+
name: `widget-${e}`,
|
|
131
|
+
enabled: C()
|
|
132
|
+
}));
|
|
133
|
+
}
|
|
134
|
+
function ce(e, t) {
|
|
135
|
+
c.set(e, t);
|
|
136
|
+
const r = (f.get(e) ?? 0) + 1;
|
|
137
|
+
f.set(e, r), r > 1 && C() && !y.has(e) && (console.warn(`[widgets-v2] Duplicate <Widget.Provider id="${e}"> detected. Multiple providers sharing an id will race on prop sync and corrupt the store. Use unique ids per widget instance.`), y.add(e));
|
|
138
|
+
}
|
|
139
|
+
function ie(e, t) {
|
|
140
|
+
const r = (f.get(e) ?? 1) - 1;
|
|
141
|
+
r <= 0 ? (f.delete(e), t.keepAlive || c.delete(e)) : f.set(e, r);
|
|
142
|
+
}
|
|
143
|
+
function le(e, t) {
|
|
144
|
+
const r = I(2);
|
|
145
|
+
let n;
|
|
146
|
+
return r[0] !== e ? (n = $(e), r[0] = e, r[1] = n) : n = r[1], A(n, t);
|
|
147
|
+
}
|
|
148
|
+
function fe(e, t) {
|
|
149
|
+
const r = I(2);
|
|
150
|
+
let n;
|
|
151
|
+
return r[0] !== e ? (n = $(e), r[0] = e, r[1] = n) : n = r[1], A(n, q(t));
|
|
152
|
+
}
|
|
153
|
+
export {
|
|
154
|
+
se as _,
|
|
155
|
+
K as a,
|
|
156
|
+
ne as b,
|
|
157
|
+
x as c,
|
|
158
|
+
V as d,
|
|
159
|
+
ae as e,
|
|
160
|
+
N as f,
|
|
161
|
+
Z as g,
|
|
162
|
+
te as h,
|
|
163
|
+
$ as i,
|
|
164
|
+
J as j,
|
|
165
|
+
H as k,
|
|
166
|
+
Q as l,
|
|
167
|
+
ee as m,
|
|
168
|
+
oe as n,
|
|
169
|
+
re as o,
|
|
170
|
+
P as p,
|
|
171
|
+
ie as q,
|
|
172
|
+
ce as r,
|
|
173
|
+
Y as s,
|
|
174
|
+
G as t,
|
|
175
|
+
fe as u,
|
|
176
|
+
le as v
|
|
177
|
+
};
|
|
178
|
+
//# sourceMappingURL=widget-store-registry-_W4Z4xp-.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widget-store-registry-_W4Z4xp-.js","sources":["../src/widgets-v2/stores/transforms.ts","../src/widgets-v2/stores/pipeline-middleware.ts","../src/widgets-v2/stores/widget-store-registry.ts"],"sourcesContent":["import type { Transform } from './types'\n\nexport function applyTransforms(\n input: unknown,\n transforms: readonly Transform[],\n onError?: (id: string, error: Error) => void,\n): unknown {\n const disabledIds = new Set<string>()\n for (const t of transforms) {\n if (t.enabled && t.disables?.length) {\n for (const id of t.disables) disabledIds.add(id)\n }\n }\n let acc: unknown = input\n for (const t of transforms) {\n if (!t.enabled) continue\n if (disabledIds.has(t.id)) continue\n try {\n acc = t.fn(acc)\n } catch (e) {\n const err = e instanceof Error ? e : new Error(String(e))\n // eslint-disable-next-line no-console\n console.warn(`[widgets-v2] Transform \"${t.id}\" failed:`, err)\n onError?.(t.id, err)\n }\n }\n return acc\n}\n\nexport function upsertTransform(\n transforms: readonly Transform[],\n next: Transform,\n): readonly Transform[] {\n const existing = transforms.find((t) => t.id === next.id)\n if (\n existing?.order === next.order &&\n existing?.enabled === next.enabled &&\n existing?.fn === next.fn &&\n existing?.type === next.type &&\n sameStringArray(existing?.disables, next.disables) &&\n sameStringArray(existing?.replaceMergeKeys, next.replaceMergeKeys)\n ) {\n return transforms\n }\n const filtered = transforms.filter((t) => t.id !== next.id)\n const idx = filtered.findIndex((t) => t.order > next.order)\n const out = filtered.slice()\n out.splice(idx === -1 ? out.length : idx, 0, next)\n return out\n}\n\nexport function removeTransform(\n transforms: readonly Transform[],\n id: string,\n): readonly Transform[] {\n if (!transforms.some((t) => t.id === id)) return transforms\n return transforms.filter((t) => t.id !== id)\n}\n\nfunction sameStringArray(\n a?: readonly string[],\n b?: readonly string[],\n): boolean {\n if (a === b) return true\n if (!a) return !b?.length\n if (!b) return !a.length\n if (a.length !== b.length) return false\n for (let i = 0; i < a.length; i++) if (a[i] !== b[i]) return false\n return true\n}\n","import type { StateCreator, StoreApi, StoreMutatorIdentifier } from 'zustand'\nimport type { Transform, WidgetState } from './types'\nimport { applyTransforms } from './transforms'\n\ntype PipelineMiddleware = <\n T extends WidgetState,\n Mps extends [StoreMutatorIdentifier, unknown][] = [],\n Mcs extends [StoreMutatorIdentifier, unknown][] = [],\n>(\n config: StateCreator<T, Mps, Mcs>,\n) => StateCreator<T, Mps, Mcs>\n\ntype SetFn<T> = StoreApi<T>['setState']\n\n// Per-store flag: true iff the current `state.error` was authored by the\n// pipeline (a transform threw) rather than by the consumer (Provider's\n// `error` prop or a direct setState). Lets the middleware clear stale\n// pipeline errors on a subsequent clean run without clobbering errors a\n// consumer set out-of-band.\nconst pipelineOwnedError = new WeakSet<StoreApi<WidgetState>>()\n\nexport const pipelineMiddleware: PipelineMiddleware = ((config) =>\n (set, get, api) => {\n const origSetState = api.setState as SetFn<WidgetState>\n const typedApi = api as StoreApi<WidgetState>\n\n const wrap = (delegate: SetFn<WidgetState>): SetFn<WidgetState> =>\n ((partial, replace) => {\n const current = (api.getState as () => WidgetState)()\n const incoming =\n typeof partial === 'function'\n ? (partial as (s: WidgetState) => Partial<WidgetState>)(current)\n : (partial as Partial<WidgetState>)\n\n const has = (key: keyof WidgetState) =>\n Object.prototype.hasOwnProperty.call(incoming, key)\n\n const rawDataChanged =\n has('rawData') && !Object.is(incoming.rawData, current.rawData)\n const dataXfChanged =\n has('dataTransforms') &&\n incoming.dataTransforms !== current.dataTransforms\n\n if (!rawDataChanged && !dataXfChanged) {\n // Consumer-authored writes that don't trigger the pipeline. If the\n // consumer is explicitly touching `error`, the next pipeline run is\n // no longer responsible for it — drop the pipeline-owned marker.\n if (has('error')) pipelineOwnedError.delete(typedApi)\n return delegate(incoming, replace as false)\n }\n\n const augmented: Partial<WidgetState> = { ...incoming }\n let firstError: unknown = undefined\n const onError = (_id: string, err: Error) => {\n if (firstError === undefined) firstError = err\n }\n\n const nextRaw = rawDataChanged ? incoming.rawData : current.rawData\n const nextXf: readonly Transform[] = dataXfChanged\n ? incoming.dataTransforms!\n : current.dataTransforms\n augmented.data = applyTransforms(nextRaw, nextXf, onError)\n\n // Reconcile `error` based on who authored the previous value:\n // - pipeline throw → stamp the new error, mark pipeline-owned.\n // - clean run AND previous error was pipeline-owned → clear it.\n // - clean run AND previous error was consumer-set → leave it.\n // Consumer-authored `error` in `incoming` also wins over the marker\n // (and resets the marker via the early-return branch above).\n if (firstError !== undefined) {\n augmented.error = firstError\n pipelineOwnedError.add(typedApi)\n } else if (pipelineOwnedError.has(typedApi) && !has('error')) {\n augmented.error = undefined\n pipelineOwnedError.delete(typedApi)\n } else if (has('error')) {\n // Consumer set error in the same call that ran the pipeline — honor\n // their write and surrender ownership.\n pipelineOwnedError.delete(typedApi)\n }\n\n return delegate(augmented, replace as false)\n }) as SetFn<WidgetState>\n\n // Wrap both the public setState (used by store.setState() callers) and\n // the inner set passed into the state creator (used by actions inside config).\n api.setState = wrap(origSetState) as typeof api.setState\n const wrappedInnerSet = wrap(set as SetFn<WidgetState>)\n\n return config(wrappedInnerSet as typeof set, get, api)\n }) as PipelineMiddleware\n","import type { ECharts } from 'echarts'\nimport { useStore, type StoreApi } from 'zustand'\nimport { createStore } from 'zustand/vanilla'\nimport { devtools } from 'zustand/middleware'\nimport { useShallow } from 'zustand/react/shallow'\nimport { pipelineMiddleware } from './pipeline-middleware'\nimport type { WidgetInit, WidgetState, WidgetStoreApi } from './types'\n\nconst widgetStores = new Map<string, WidgetStoreApi>()\n\nconst widgetMountCounts = new Map<string, number>()\nconst warnedDuplicates = new Set<string>()\n\n// Per-widget capture-element registry. Held outside the reactive store so\n// publishing the element doesn't trigger any consumer re-renders — these\n// handles are read imperatively by per-widget download configs at click time\n// only. `Widget.State` writes its success-path content wrapper here on mount\n// (auto-cleared on unmount via callback ref), and `create*DownloadConfig`\n// looks it up to feed `html2canvas` for PNG export.\nconst captureEls = new Map<string, HTMLElement>()\n\n// Per-widget live ECharts instance registry. Same imperative-only contract\n// as `captureEls`: published by the `Widget.Echart` bridge on mount /\n// dispose, read at click time by actions that need to dispatch on the live\n// chart (e.g. `ZoomToggle`'s disable handler issuing\n// `setOption({}, { replaceMerge: ['dataZoom'] })` to clear the slider).\n// Held outside the reactive store so publishing never triggers consumer\n// re-renders.\nconst echartInstances = new Map<string, ECharts>()\n\n// Per-id subscribers notified whenever `setEchartInstance` writes a new\n// value. Powers `useEchartInstance(id)` (a `useSyncExternalStore` wrapper)\n// so actions like `BrushToggle` can react when the chart becomes available\n// — required for lifecycle effects that need the instance on mount but\n// arrive in the tree before the `Widget.Echart` bridge has run its init\n// `useEffect`.\ntype EchartInstanceListener = (chart: ECharts | null) => void\nconst echartInstanceSubscribers = new Map<string, Set<EchartInstanceListener>>()\n\nconst isDev = (): boolean => {\n try {\n return Boolean(\n (import.meta as unknown as { env?: { DEV?: boolean } }).env?.DEV,\n )\n } catch {\n return false\n }\n}\n\nexport function getWidgetStore(id: string): WidgetStoreApi {\n const store = widgetStores.get(id)\n if (!store) throw new Error(`[widgets-v2] Widget store \"${id}\" not found.`)\n return store\n}\n\nexport function hasWidgetStore(id: string): boolean {\n return widgetStores.has(id)\n}\n\nexport function deleteWidgetStore(id: string): void {\n widgetStores.delete(id)\n}\n\nexport function resetWidgetStore(id: string): void {\n const store = widgetStores.get(id)\n if (store) store.setState({ transformStates: {} })\n}\n\nexport function clearAllWidgetStores(): void {\n widgetStores.clear()\n widgetMountCounts.clear()\n warnedDuplicates.clear()\n captureEls.clear()\n echartInstances.clear()\n echartInstanceSubscribers.clear()\n}\n\n/**\n * Register or clear the capture element for a widget. Pass `null` to clear.\n * Called by `Widget.State` via a callback ref on its success-path content\n * wrapper. The element is read by per-widget download configs at click time\n * to feed `html2canvas` for PNG export.\n */\nexport function setCaptureEl(id: string, el: HTMLElement | null): void {\n if (el == null) captureEls.delete(id)\n else captureEls.set(id, el)\n}\n\n/**\n * Read the currently registered capture element for a widget. Returns `null`\n * when no `Widget.State` is on its success path (loading / error / empty)\n * or when the widget hasn't mounted.\n */\nexport function getCaptureEl(id: string): HTMLElement | null {\n return captureEls.get(id) ?? null\n}\n\n/** @internal — exposed for tests and debugging only. */\nexport function clearAllCaptureEls(): void {\n captureEls.clear()\n}\n\n/**\n * Register or clear the live ECharts instance for a widget. Pass `null`\n * to clear. Called by the `Widget.Echart` bridge on mount / dispose.\n * Read by actions (e.g. `ZoomToggle`'s disable handler) that need to\n * dispatch on the live chart without going through the pipeline.\n *\n * Notifies subscribers registered via {@link subscribeEchartInstance}\n * after the map mutation, so reactive consumers (the\n * `useEchartInstance` hook) re-render with the new value.\n */\nexport function setEchartInstance(id: string, chart: ECharts | null): void {\n if (chart == null) echartInstances.delete(id)\n else echartInstances.set(id, chart)\n echartInstanceSubscribers.get(id)?.forEach((fn) => fn(chart))\n}\n\n/**\n * Read the currently registered ECharts instance for a widget. Returns\n * `null` when no `Widget.Echart` is mounted, or before the bridge has\n * created the instance.\n */\nexport function getEchartInstance(id: string): ECharts | null {\n return echartInstances.get(id) ?? null\n}\n\n/**\n * Subscribe to changes of the registered ECharts instance for a widget.\n * The listener is called *after* every {@link setEchartInstance} (with\n * the new chart, or `null` when cleared). Returns an unsubscribe\n * function. Used by the `useEchartInstance` hook to drive React effects\n * that need to react to instance arrival / departure (e.g.\n * `BrushToggle`'s `'finished'` re-dispatch loop).\n */\nexport function subscribeEchartInstance(\n id: string,\n listener: EchartInstanceListener,\n): () => void {\n let listeners = echartInstanceSubscribers.get(id)\n if (!listeners) {\n listeners = new Set()\n echartInstanceSubscribers.set(id, listeners)\n }\n listeners.add(listener)\n return () => {\n const set = echartInstanceSubscribers.get(id)\n if (!set) return\n set.delete(listener)\n if (set.size === 0) echartInstanceSubscribers.delete(id)\n }\n}\n\n/** @internal — exposed for tests and debugging only. */\nexport function clearAllEchartInstances(): void {\n echartInstances.clear()\n echartInstanceSubscribers.clear()\n}\n\n/** @internal — exposed for tests and debugging only. */\nexport function __debugListWidgetStores(): string[] {\n return Array.from(widgetStores.keys())\n}\n\n/**\n * Insert or replace a store entry in the registry without refcounting or\n * duplicate-id detection. Used by Provider's lazy `useState` init so the\n * store is reachable from `useWidget(id)` calls in children that render\n * before the Provider's mount effect runs. Refcounting and dev warns happen\n * in {@link registerWidgetStore} during the mount effect.\n *\n * @internal\n */\nexport function setWidgetStoreEntry(id: string, store: WidgetStoreApi): void {\n widgetStores.set(id, store)\n}\n\n/** @internal — used by Provider; not part of the public API. */\nexport function createWidgetStore(\n id: string,\n init: WidgetInit,\n): WidgetStoreApi {\n const builder = pipelineMiddleware<WidgetState>(() => ({\n rawData: init.data,\n data: init.data,\n dataTransforms: [],\n configTransforms: [],\n transformStates: {},\n isLoading: init.isLoading ?? false,\n isFetching: init.isFetching ?? false,\n error: init.error,\n rawFormatter: init.formatter,\n formatter: init.formatter,\n labelFormatter: init.labelFormatter,\n }))\n\n const store = createStore<WidgetState>()(\n devtools(builder, { name: `widget-${id}`, enabled: isDev() }),\n ) as unknown as WidgetStoreApi\n\n return store\n}\n\n/** @internal — registers a Provider mount and tracks/warns on duplicate ids in dev. */\nexport function registerWidgetStore(id: string, store: WidgetStoreApi): void {\n widgetStores.set(id, store)\n const count = (widgetMountCounts.get(id) ?? 0) + 1\n widgetMountCounts.set(id, count)\n if (count > 1 && isDev() && !warnedDuplicates.has(id)) {\n // eslint-disable-next-line no-console\n console.warn(\n `[widgets-v2] Duplicate <Widget.Provider id=\"${id}\"> detected. ` +\n `Multiple providers sharing an id will race on prop sync and corrupt the store. ` +\n `Use unique ids per widget instance.`,\n )\n warnedDuplicates.add(id)\n }\n}\n\n/** @internal — Provider unmount counterpart; on last unmount removes the refcount entry. */\nexport function unregisterWidgetStore(\n id: string,\n options: { keepAlive: boolean },\n): void {\n const count = (widgetMountCounts.get(id) ?? 1) - 1\n if (count <= 0) {\n widgetMountCounts.delete(id)\n if (!options.keepAlive) widgetStores.delete(id)\n } else {\n widgetMountCounts.set(id, count)\n }\n}\n\nexport function useWidget<T, S extends WidgetState = WidgetState>(\n id: string,\n selector: (state: S) => T,\n): T {\n const store = getWidgetStore(id) as unknown as StoreApi<S>\n return useStore(store, selector)\n}\n\nexport function useWidgetShallow<T, S extends WidgetState = WidgetState>(\n id: string,\n selector: (state: S) => T,\n): T {\n const store = getWidgetStore(id) as unknown as StoreApi<S>\n return useStore(store, useShallow(selector))\n}\n"],"names":["applyTransforms","input","transforms","onError","disabledIds","Set","t","enabled","disables","length","id","add","acc","has","fn","e","err","Error","String","console","warn","upsertTransform","next","existing","find","order","type","sameStringArray","replaceMergeKeys","filtered","filter","idx","findIndex","out","slice","splice","removeTransform","some","a","b","i","pipelineOwnedError","WeakSet","pipelineMiddleware","config","set","get","api","origSetState","setState","typedApi","wrap","delegate","partial","replace","current","getState","incoming","key","Object","prototype","hasOwnProperty","call","rawDataChanged","is","rawData","dataXfChanged","dataTransforms","delete","augmented","firstError","_id","undefined","nextRaw","nextXf","data","error","wrappedInnerSet","widgetStores","Map","widgetMountCounts","warnedDuplicates","captureEls","echartInstances","echartInstanceSubscribers","isDev","import","getWidgetStore","store","hasWidgetStore","deleteWidgetStore","resetWidgetStore","transformStates","clearAllWidgetStores","clear","setCaptureEl","el","getCaptureEl","clearAllCaptureEls","setEchartInstance","chart","forEach","getEchartInstance","subscribeEchartInstance","listener","listeners","size","clearAllEchartInstances","__debugListWidgetStores","Array","from","keys","setWidgetStoreEntry","createWidgetStore","init","builder","configTransforms","isLoading","isFetching","rawFormatter","formatter","labelFormatter","createStore","devtools","name","registerWidgetStore","count","unregisterWidgetStore","options","keepAlive","useWidget","selector","$","_c","t0","useStore","useWidgetShallow","useShallow"],"mappings":"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"}
|