@carto/ps-react-ui 4.7.0 → 4.8.0
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/data-zoom-layout-BH0LPwSy.js +28 -0
- package/dist/data-zoom-layout-BH0LPwSy.js.map +1 -0
- package/dist/echart-CU0KmClP.js +176 -0
- package/dist/echart-CU0KmClP.js.map +1 -0
- package/dist/exports-Cx-f6m6U.js +63 -0
- package/dist/exports-Cx-f6m6U.js.map +1 -0
- package/dist/formula-DuC0NQLH.js +79 -0
- package/dist/formula-DuC0NQLH.js.map +1 -0
- package/dist/markdown-BD1jcknS.js +8326 -0
- package/dist/markdown-BD1jcknS.js.map +1 -0
- package/dist/merge-options-DCkkHZIf.js +34 -0
- package/dist/merge-options-DCkkHZIf.js.map +1 -0
- package/dist/{styles-BYTyKQFP.js → option-builders-F-c9ELi1.js} +25 -45
- package/dist/option-builders-F-c9ELi1.js.map +1 -0
- package/dist/png-item-CS4z1iSH.js +45 -0
- package/dist/png-item-CS4z1iSH.js.map +1 -0
- package/dist/range-DsqTjSpg.js +186 -0
- package/dist/range-DsqTjSpg.js.map +1 -0
- package/dist/spread-CTuIXZSM.js +67 -0
- package/dist/spread-CTuIXZSM.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-HIpXuq4G.js +390 -0
- package/dist/table-HIpXuq4G.js.map +1 -0
- package/dist/transforms-Cdx4fkU5.js +106 -0
- package/dist/transforms-Cdx4fkU5.js.map +1 -0
- package/dist/types/widgets/echart/utils.test.d.ts +1 -0
- package/dist/types/widgets/formula/config.test.d.ts +1 -0
- package/dist/types/widgets/stores/widget-store-branches.test.d.ts +1 -0
- package/dist/types/widgets/table/config.test.d.ts +1 -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/brush-toggle/transforms.test.d.ts +1 -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 +41 -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 +49 -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 +40 -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 +47 -0
- package/dist/types/widgets-v2/index.d.ts +107 -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 +50 -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 +19 -0
- package/dist/types/widgets-v2/range/range.d.ts +19 -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 +50 -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 +44 -0
- package/dist/types/widgets-v2/table/table-ui.d.ts +38 -0
- package/dist/types/widgets-v2/table/table.d.ts +50 -0
- package/dist/types/widgets-v2/table/types.d.ts +37 -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 +56 -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/utils/data-zoom-layout.d.ts +11 -0
- package/dist/types/widgets-v2/utils/index.d.ts +2 -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/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/widget-context-DTGO0Yta.js +13 -0
- package/dist/widget-context-DTGO0Yta.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 +688 -668
- package/dist/widgets/actions.js.map +1 -1
- package/dist/widgets/bar.js +14 -13
- package/dist/widgets/bar.js.map +1 -1
- package/dist/widgets/histogram.js +38 -37
- package/dist/widgets/histogram.js.map +1 -1
- package/dist/widgets/pie.js +19 -18
- package/dist/widgets/pie.js.map +1 -1
- package/dist/widgets/scatterplot.js +8 -7
- package/dist/widgets/scatterplot.js.map +1 -1
- package/dist/widgets/timeseries.js +11 -10
- package/dist/widgets/timeseries.js.map +1 -1
- package/dist/widgets/utils.js +8 -7
- package/dist/widgets/utils.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 +327 -0
- package/dist/widgets-v2/bar.js.map +1 -0
- package/dist/widgets-v2/category.js +104 -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 +74 -0
- package/dist/widgets-v2/formula.js.map +1 -0
- package/dist/widgets-v2/histogram.js +350 -0
- package/dist/widgets-v2/histogram.js.map +1 -0
- package/dist/widgets-v2/markdown.js +68 -0
- package/dist/widgets-v2/markdown.js.map +1 -0
- package/dist/widgets-v2/pie.js +381 -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 +405 -0
- package/dist/widgets-v2/scatterplot.js.map +1 -0
- package/dist/widgets-v2/spread.js +72 -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 +78 -0
- package/dist/widgets-v2/table.js.map +1 -0
- package/dist/widgets-v2/timeseries.js +352 -0
- package/dist/widgets-v2/timeseries.js.map +1 -0
- package/dist/widgets-v2/utils.js +7 -0
- package/dist/widgets-v2/utils.js.map +1 -0
- package/dist/widgets-v2.js +953 -0
- package/dist/widgets-v2.js.map +1 -0
- package/package.json +73 -5
- 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.test.tsx +198 -0
- package/src/components/list-data/list-data.test.tsx +73 -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/widgets/actions/brush-toggle/brush-overlay.test.tsx +465 -0
- package/src/widgets/actions/brush-toggle/brush-overlay.tsx +24 -2
- package/src/widgets/actions/brush-toggle/brush-toggle.test.tsx +208 -0
- package/src/widgets/actions/change-column/change-column-dnd.test.tsx +193 -0
- package/src/widgets/actions/change-column/sortable-column-item.test.tsx +124 -0
- package/src/widgets/actions/zoom-toggle/zoom-toggle.test.tsx +322 -0
- package/src/widgets/category/components/category-rows.test.tsx +213 -0
- package/src/widgets/echart/utils.test.ts +277 -0
- package/src/widgets/formula/config.test.ts +37 -0
- package/src/widgets/histogram/config.ts +1 -3
- package/src/widgets/range/components/range-item.test.tsx +243 -0
- package/src/widgets/stores/widget-store-branches.test.ts +275 -0
- package/src/widgets/table/config.test.ts +65 -0
- package/src/widgets/utils/chart-config/option-builders.test.ts +188 -0
- 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 +317 -0
- package/src/widgets-v2/bar/options.ts +326 -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 +46 -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 +54 -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 +44 -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 +304 -0
- package/src/widgets-v2/histogram/options.ts +337 -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 +51 -0
- package/src/widgets-v2/index.ts +201 -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 +585 -0
- package/src/widgets-v2/pie/options.ts +509 -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 +55 -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 +130 -0
- package/src/widgets-v2/range/range-ui.tsx +211 -0
- package/src/widgets-v2/range/range.test.tsx +68 -0
- package/src/widgets-v2/range/range.tsx +46 -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 +399 -0
- package/src/widgets-v2/scatterplot/options.ts +421 -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 +55 -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 +46 -0
- package/src/widgets-v2/table/table-ui.test.tsx +200 -0
- package/src/widgets-v2/table/table-ui.tsx +331 -0
- package/src/widgets-v2/table/table.test.tsx +119 -0
- package/src/widgets-v2/table/table.tsx +174 -0
- package/src/widgets-v2/table/types.ts +44 -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 +379 -0
- package/src/widgets-v2/timeseries/options.ts +341 -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 +61 -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/utils/data-zoom-layout.ts +26 -0
- package/src/widgets-v2/utils/index.ts +2 -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/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/styles-BYTyKQFP.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-HIpXuq4G.js","sources":["../src/widgets-v2/table/labels.tsx","../src/widgets-v2/table/types.ts","../src/widgets-v2/table/style.ts","../src/widgets-v2/table/table-ui.tsx","../src/widgets-v2/table/helpers.ts","../src/widgets-v2/table/table.tsx"],"sourcesContent":["import { Box, type SxProps, type Theme } from '@mui/material'\nimport type { ReactNode } from 'react'\n\nexport interface TableLabels {\n selectAll: string\n selectRow: (rowId: string | number) => string\n rowsPerPage: string\n /**\n * Renders the displayed-rows summary in the pagination footer. Returns\n * a `ReactNode` so the default can emphasise the active range\n * (`from-to`) with a bolder weight while keeping the trailing\n * ` of total` muted. Override to localise wording or restyle.\n */\n paginationOf: (from: number, to: number, total: number) => ReactNode\n /** aria-label for the first-page pagination button. */\n firstPage: string\n /** aria-label for the previous-page pagination button. */\n previousPage: string\n /** aria-label for the next-page pagination button. */\n nextPage: string\n /** aria-label for the last-page pagination button. */\n lastPage: string\n}\n\nconst boldRange: SxProps<Theme> = { fontWeight: 600, color: 'text.primary' }\n\nexport const DEFAULT_TABLE_LABELS: TableLabels = {\n selectAll: 'Select all rows',\n selectRow: (id) => `Select row ${id}`,\n rowsPerPage: 'Rows per page:',\n paginationOf: (from, to, total) => (\n <>\n <Box component='span' sx={boldRange}>{`${from}–${to}`}</Box>\n {` of ${total}`}\n </>\n ),\n firstPage: 'First page',\n previousPage: 'Previous page',\n nextPage: 'Next page',\n lastPage: 'Last page',\n}\n","import type { ReactNode } from 'react'\nimport type { WidgetState } from '../stores'\n\n/** Single row of tabular data. Must have an `id` for selection / keying. */\nexport interface TableRow extends Record<string, unknown> {\n id: string | number\n}\n\nexport type TableWidgetData = readonly TableRow[]\n\nexport type TableSortDirection = 'asc' | 'desc'\n\nexport interface TableSortState {\n columnId: string | null\n direction: TableSortDirection\n}\n\nexport interface TableColumn {\n /** Unique column identifier; matches the field name on each row. */\n id: string\n /** Header label. */\n label: ReactNode\n align?: 'left' | 'center' | 'right'\n width?: number | string\n sortable?: boolean\n /** Custom cell renderer. Falls back to a string-cast of the raw value. */\n formatter?: (value: unknown, row: TableRow) => ReactNode\n}\n\n/**\n * State extension carrying Table-specific UI state on the per-widget store.\n * Per R12: widget-specific UI state lives in widget-specific extensions of\n * `WidgetState`, not on the base type.\n */\nexport interface TableWidgetState extends WidgetState {\n /** Optional reordered column list driven by ChangeColumn. Falls back to props. */\n columnOrder?: readonly string[]\n sort?: TableSortState\n page: number\n pageSize: number\n}\n\nexport const DEFAULT_TABLE_PAGE_SIZE = 10\nexport const DEFAULT_TABLE_PAGE_SIZE_OPTIONS = [10, 25, 50, 100] as const\n","import type { SxProps, Theme } from '@mui/material'\n\nexport const styles = {\n container: {\n width: '100%',\n overflowX: 'auto',\n },\n /**\n * Minimum table width so columns don't collapse to unreadable widths on\n * narrow widget shells. Mirrors v1.\n */\n table: {\n minWidth: 650,\n },\n headerCell: {\n fontWeight: 600,\n backgroundColor: 'background.paper',\n },\n /**\n * Strip the bottom border from the last body row so the body flushes\n * against the pagination border instead of doubling it up. Mirrors v1.\n */\n row: {\n '&:last-child td, &:last-child th': {\n border: 0,\n },\n },\n rowClickable: {\n cursor: 'pointer',\n },\n pagination: {\n borderTop: '1px solid',\n borderColor: 'divider',\n },\n paginationActions: {\n display: 'flex',\n alignItems: 'center',\n gap: 0.25,\n ml: 1,\n },\n empty: {\n textAlign: 'center',\n color: 'text.secondary',\n py: 3,\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { useMemo } from 'react'\nimport {\n Box,\n Checkbox,\n IconButton,\n Table as MuiTable,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TablePagination,\n TableRow as MuiTableRow,\n TableSortLabel,\n type TableProps as MuiTableProps,\n} from '@mui/material'\nimport type { TablePaginationActionsProps } from '@mui/material/TablePagination/TablePaginationActions'\nimport FirstPageIcon from '@mui/icons-material/FirstPage'\nimport KeyboardArrowLeft from '@mui/icons-material/KeyboardArrowLeft'\nimport KeyboardArrowRight from '@mui/icons-material/KeyboardArrowRight'\nimport LastPageIcon from '@mui/icons-material/LastPage'\nimport { DEFAULT_TABLE_LABELS, type TableLabels } from './labels'\nimport {\n DEFAULT_TABLE_PAGE_SIZE_OPTIONS,\n type TableColumn,\n type TableRow,\n type TableSortDirection,\n type TableSortState,\n} from './types'\nimport { styles } from './style'\n\nexport interface TableUIProps<T extends TableRow = TableRow> {\n columns: readonly TableColumn[]\n /** Already-paginated, already-sorted rows for the current view. */\n rows: readonly T[]\n /** Total row count (across all pages). Required for pagination footer. */\n total: number\n page: number\n pageSize: number\n pageSizeOptions?: readonly number[]\n sort?: TableSortState\n /** Selected row ids. Destination-owned. */\n selection?: readonly (string | number)[]\n selectable?: boolean\n onSortChange?: (next: TableSortState) => void\n onPageChange?: (page: number) => void\n onPageSizeChange?: (pageSize: number) => void\n onSelectionChange?: (next: readonly (string | number)[]) => void\n onRowClick?: (row: T) => void\n onRowHover?: (row: T | null) => void\n labels?: Partial<TableLabels>\n /** Row rendered when `rows` is empty for the current page. */\n emptyContent?: React.ReactNode\n /**\n * Forwarded to MUI's `<Table size>` — `'small'` for compact rows,\n * `'medium'` for the default density. Leave `undefined` (the default)\n * to let MUI's own default kick in.\n */\n size?: MuiTableProps['size']\n}\n\n/**\n * Pure renderer for a paginated, sortable, optionally-selectable table.\n * Has no widget-store coupling — `<Table>` (the bridge) reads from the store\n * and feeds this UI with already-projected data.\n */\nexport function TableUI<T extends TableRow = TableRow>({\n columns,\n rows,\n total,\n page,\n pageSize,\n pageSizeOptions = DEFAULT_TABLE_PAGE_SIZE_OPTIONS,\n sort,\n selection,\n selectable = false,\n onSortChange,\n onPageChange,\n onPageSizeChange,\n onSelectionChange,\n onRowClick,\n onRowHover,\n labels,\n emptyContent,\n size,\n}: TableUIProps<T>) {\n const _labels = useMemo(\n () => ({ ...DEFAULT_TABLE_LABELS, ...labels }),\n [labels],\n )\n // Auto-hide the pagination footer when every row already fits in the\n // smallest available page size — the Rows-per-page selector + prev /\n // next buttons would just be inert noise. Consumers force the footer\n // on by passing a smaller `pageSizeOptions[0]` than `total`.\n const minPageSize = Math.min(...pageSizeOptions)\n const showPagination = total > minPageSize\n // Own the `ActionsComponent` slot ourselves so the Meridian theme's\n // `theme.components.MuiTablePagination.defaultProps.ActionsComponent`\n // (which depends on `react-intl`) doesn't leak into the library. The\n // MUI / Meridian style overrides for `MuiIconButton` /\n // `MuiTablePagination` still apply.\n const PaginationActions = useMemo(\n () => makePaginationActions(_labels),\n [_labels],\n )\n const selectionSet = useMemo(\n () => new Set<string | number>(selection ?? []),\n [selection],\n )\n const pageRowIds = useMemo(() => rows.map((r) => r.id), [rows])\n const allOnPageSelected =\n pageRowIds.length > 0 && pageRowIds.every((id) => selectionSet.has(id))\n const someOnPageSelected =\n !allOnPageSelected && pageRowIds.some((id) => selectionSet.has(id))\n\n const handleSort = (columnId: string) => {\n if (!onSortChange) return\n const sameCol = sort?.columnId === columnId\n const nextDir: TableSortDirection =\n sameCol && sort?.direction === 'asc' ? 'desc' : 'asc'\n onSortChange({ columnId, direction: nextDir })\n }\n\n const handleSelectAllOnPage = () => {\n if (!onSelectionChange) return\n if (allOnPageSelected) {\n onSelectionChange(\n (selection ?? []).filter((id) => !pageRowIds.includes(id)),\n )\n } else {\n const merged = new Set<string | number>(selection ?? [])\n for (const id of pageRowIds) merged.add(id)\n onSelectionChange([...merged])\n }\n }\n\n const handleSelectRow = (rowId: string | number) => {\n if (!onSelectionChange) return\n const next = new Set<string | number>(selection ?? [])\n if (next.has(rowId)) next.delete(rowId)\n else next.add(rowId)\n onSelectionChange([...next])\n }\n\n return (\n <Box sx={styles.container}>\n <TableContainer>\n <MuiTable stickyHeader size={size} sx={styles.table}>\n <TableHead>\n <MuiTableRow>\n {selectable ? (\n <TableCell padding='checkbox' sx={styles.headerCell}>\n <Checkbox\n checked={allOnPageSelected}\n indeterminate={someOnPageSelected}\n onChange={handleSelectAllOnPage}\n inputProps={{ 'aria-label': _labels.selectAll }}\n />\n </TableCell>\n ) : null}\n {columns.map((column) => {\n const isSorted = sort?.columnId === column.id\n const direction = isSorted ? sort?.direction : undefined\n return (\n <TableCell\n key={column.id}\n align={column.align}\n sortDirection={direction}\n sx={styles.headerCell}\n style={\n column.width != null ? { width: column.width } : undefined\n }\n >\n {column.sortable && onSortChange ? (\n <TableSortLabel\n active={isSorted}\n direction={direction ?? 'asc'}\n onClick={() => handleSort(column.id)}\n >\n {column.label}\n </TableSortLabel>\n ) : (\n column.label\n )}\n </TableCell>\n )\n })}\n </MuiTableRow>\n </TableHead>\n <TableBody>\n {rows.length === 0 ? (\n <MuiTableRow>\n <TableCell\n colSpan={columns.length + (selectable ? 1 : 0)}\n sx={styles.empty}\n >\n {emptyContent ?? null}\n </TableCell>\n </MuiTableRow>\n ) : (\n rows.map((row) => {\n const isSelected = selectionSet.has(row.id)\n return (\n <MuiTableRow\n key={row.id}\n hover\n selected={isSelected}\n onClick={() => onRowClick?.(row)}\n onMouseEnter={() => onRowHover?.(row)}\n onMouseLeave={() => onRowHover?.(null)}\n sx={{\n ...styles.row,\n ...(onRowClick ? styles.rowClickable : null),\n }}\n >\n {selectable ? (\n <TableCell padding='checkbox'>\n <Checkbox\n checked={isSelected}\n onClick={(e) => {\n e.stopPropagation()\n handleSelectRow(row.id)\n }}\n inputProps={{\n 'aria-label': _labels.selectRow(row.id),\n }}\n />\n </TableCell>\n ) : null}\n {columns.map((column) => (\n <TableCell key={column.id} align={column.align}>\n {column.formatter\n ? column.formatter(row[column.id], row)\n : stringifyCell(row[column.id])}\n </TableCell>\n ))}\n </MuiTableRow>\n )\n })\n )}\n </TableBody>\n </MuiTable>\n </TableContainer>\n {showPagination ? (\n <TablePagination\n component='div'\n count={total}\n page={page}\n rowsPerPage={pageSize}\n rowsPerPageOptions={[...pageSizeOptions]}\n onPageChange={(_, next) => onPageChange?.(next)}\n onRowsPerPageChange={(e) => {\n const next = parseInt(e.target.value, 10)\n onPageSizeChange?.(next)\n }}\n labelRowsPerPage={_labels.rowsPerPage}\n labelDisplayedRows={({ from, to, count }) =>\n _labels.paginationOf(from, to, count)\n }\n ActionsComponent={PaginationActions}\n sx={styles.pagination}\n />\n ) : null}\n </Box>\n )\n}\n\nfunction stringifyCell(value: unknown): React.ReactNode {\n if (value == null) return ''\n if (typeof value === 'string' || typeof value === 'number') return value\n if (typeof value === 'boolean') return String(value)\n if (Array.isArray(value) || typeof value === 'object') {\n return JSON.stringify(value)\n }\n return ''\n}\n\n/**\n * Build the `ActionsComponent` used by `<TablePagination>` — four MUI\n * `IconButton`s for first / previous / next / last. We provide this\n * ourselves so the Meridian theme's `defaultProps.ActionsComponent`\n * (which depends on `react-intl`) is bypassed at the call site without\n * disturbing the rest of the Meridian theme. The factory closes over\n * the merged label set so aria-labels stay consistent with the rest\n * of the table's i18n surface.\n */\nfunction makePaginationActions(labels: TableLabels) {\n return function PaginationActions({\n count,\n page,\n rowsPerPage,\n onPageChange,\n }: TablePaginationActionsProps) {\n const lastPage = Math.max(0, Math.ceil(count / rowsPerPage) - 1)\n return (\n <Box sx={styles.paginationActions}>\n <IconButton\n size='small'\n onClick={(e) => onPageChange(e, 0)}\n disabled={page === 0}\n aria-label={labels.firstPage}\n >\n <FirstPageIcon fontSize='small' />\n </IconButton>\n <IconButton\n size='small'\n onClick={(e) => onPageChange(e, page - 1)}\n disabled={page === 0}\n aria-label={labels.previousPage}\n >\n <KeyboardArrowLeft fontSize='small' />\n </IconButton>\n <IconButton\n size='small'\n onClick={(e) => onPageChange(e, page + 1)}\n disabled={page >= lastPage}\n aria-label={labels.nextPage}\n >\n <KeyboardArrowRight fontSize='small' />\n </IconButton>\n <IconButton\n size='small'\n onClick={(e) => onPageChange(e, lastPage)}\n disabled={page >= lastPage}\n aria-label={labels.lastPage}\n >\n <LastPageIcon fontSize='small' />\n </IconButton>\n </Box>\n )\n }\n}\n","import type {\n TableColumn,\n TableRow,\n TableSortDirection,\n TableWidgetData,\n} from './types'\n\n/**\n * Compares two values with a consistent ordering across primitive types.\n * Strings use locale comparison; numbers subtract; booleans rank false < true;\n * objects/arrays compare by JSON serialization. Null/undefined sort to the end\n * regardless of direction.\n */\nexport function compareValues(\n a: unknown,\n b: unknown,\n direction: TableSortDirection,\n): number {\n if (a == null && b == null) return 0\n if (a == null) return 1\n if (b == null) return -1\n let cmp = 0\n if (typeof a === 'string' && typeof b === 'string') {\n cmp = a.localeCompare(b)\n } else if (typeof a === 'number' && typeof b === 'number') {\n cmp = a - b\n } else if (typeof a === 'boolean' && typeof b === 'boolean') {\n cmp = a === b ? 0 : a ? 1 : -1\n } else if (typeof a === 'object' || typeof b === 'object') {\n cmp = JSON.stringify(a).localeCompare(JSON.stringify(b))\n }\n return direction === 'asc' ? cmp : -cmp\n}\n\n/** Returns a new array sorted by the named column. Does not mutate the input. */\nexport function sortRows<T extends TableRow>(\n rows: readonly T[],\n columnId: string,\n direction: TableSortDirection,\n): T[] {\n return [...rows].sort((a, b) =>\n compareValues(a[columnId], b[columnId], direction),\n )\n}\n\n/** Returns the slice for the requested page. Out-of-range pages return []. */\nexport function paginateRows<T>(\n rows: readonly T[],\n page: number,\n pageSize: number,\n): T[] {\n if (pageSize <= 0) return rows.slice()\n const start = page * pageSize\n return rows.slice(start, start + pageSize)\n}\n\n/**\n * Resolves the effective column list. When the widget store has a\n * `columnOrder` set (e.g. ChangeColumn was used), the column array is\n * reordered to match. Unknown ids in the order are skipped; columns not\n * present in the order keep their original relative position at the end.\n */\nexport function resolveColumns(\n columns: readonly TableColumn[],\n columnOrder: readonly string[] | undefined,\n): readonly TableColumn[] {\n if (!columnOrder || columnOrder.length === 0) return columns\n const byId = new Map(columns.map((c) => [c.id, c]))\n const ordered: TableColumn[] = []\n const seen = new Set<string>()\n for (const id of columnOrder) {\n const c = byId.get(id)\n if (c && !seen.has(id)) {\n ordered.push(c)\n seen.add(id)\n }\n }\n for (const c of columns) {\n if (!seen.has(c.id)) ordered.push(c)\n }\n return ordered\n}\n\n/** Applies sort and pagination to the input data. Pure. */\nexport function deriveVisibleRows<T extends TableRow>(\n rows: readonly T[],\n options: {\n sort?: { columnId: string | null; direction: TableSortDirection }\n page: number\n pageSize: number\n },\n): { sorted: readonly T[]; visible: T[] } {\n const sorted =\n options.sort?.columnId != null\n ? sortRows(rows, options.sort.columnId, options.sort.direction)\n : rows\n const visible = paginateRows(sorted, options.page, options.pageSize)\n return { sorted, visible }\n}\n\nexport function tableDataToCsv(\n data: TableWidgetData,\n columns: readonly TableColumn[],\n): string {\n const head = columns.map((c) => csvEscape(stringifyHeader(c.label))).join(',')\n const lines = [head]\n for (const row of data) {\n const cells = columns.map((c) => csvEscape(stringifyCell(row[c.id])))\n lines.push(cells.join(','))\n }\n return lines.join('\\n')\n}\n\nfunction csvEscape(value: string): string {\n if (/[\",\\n\\r]/.test(value)) {\n return `\"${value.replace(/\"/g, '\"\"')}\"`\n }\n return value\n}\n\nfunction stringifyHeader(label: unknown): string {\n if (typeof label === 'string') return label\n if (typeof label === 'number' || typeof label === 'boolean')\n return String(label)\n return ''\n}\n\nfunction stringifyCell(value: unknown): string {\n if (value == null) return ''\n if (typeof value === 'string') return value\n if (typeof value === 'number' || typeof value === 'boolean')\n return String(value)\n if (Array.isArray(value) || typeof value === 'object')\n return JSON.stringify(value)\n return ''\n}\n","import { useCallback, useMemo } from 'react'\nimport {\n getWidgetStore,\n useWidget,\n useWidgetId,\n useWidgetShallow,\n} from '../stores'\nimport { TableUI, type TableUIProps } from './table-ui'\nimport {\n DEFAULT_TABLE_PAGE_SIZE,\n type TableColumn,\n type TableRow,\n type TableSortState,\n type TableWidgetState,\n} from './types'\nimport { deriveVisibleRows, resolveColumns } from './helpers'\n\nexport interface TableProps<T extends TableRow = TableRow> extends Pick<\n TableUIProps<T>,\n 'pageSizeOptions' | 'selectable' | 'labels' | 'emptyContent' | 'size'\n> {\n /**\n * Column definitions. Order can be overridden by ChangeColumn via the\n * `columnOrder` field on the extended widget state.\n */\n columns: readonly TableColumn[]\n /**\n * When set, render only the first `visibleColumns` entries **after**\n * applying the user's `columnOrder` from the store. Useful for showing\n * a compact projection while letting consumers (e.g. `Widget.ChangeColumn`)\n * see the full column list. When omitted, every column renders.\n */\n visibleColumns?: number\n /** Initial page size (only on first mount; afterwards lives on the store). */\n initialPageSize?: number\n /** Selected row ids (destination-owned). */\n selection?: readonly (string | number)[]\n onSelectionChange?: (next: readonly (string | number)[]) => void\n onRowClick?: (row: T) => void\n onRowHover?: (row: T | null) => void\n /**\n * When `true`, the bridge stops sorting and paginating locally and\n * renders `data` as-is — the consumer is then responsible for\n * refetching the slice that matches the active `page` / `pageSize` /\n * `sort` from the outbound callbacks below. `total` is required in\n * this mode (the server already knows the full row count; the\n * widget can't infer it from a partial page).\n */\n remote?: boolean\n /**\n * Server-reported total row count. Required when `remote === true`;\n * ignored in local mode (where the bridge derives total from the\n * sorted result of `deriveVisibleRows`).\n */\n total?: number\n /** Fires after the store-level sort write so the consumer can refetch. */\n onSortChange?: (next: TableSortState) => void\n /** Fires after the store-level page write so the consumer can refetch. */\n onPageChange?: (page: number) => void\n /** Fires after the store-level pageSize write so the consumer can refetch. */\n onPageSizeChange?: (pageSize: number) => void\n}\n\n/**\n * Bridge component — reads the widget store's `data`, applies sort + pagination\n * locally, and feeds `<TableUI />`. Sort, page, and pageSize live on the\n * extended widget state ({@link TableWidgetState}).\n */\nexport function Table<T extends TableRow = TableRow>({\n columns,\n visibleColumns,\n initialPageSize = DEFAULT_TABLE_PAGE_SIZE,\n selection,\n onSelectionChange,\n onRowClick,\n onRowHover,\n remote = false,\n total: remoteTotal,\n onSortChange,\n onPageChange,\n onPageSizeChange,\n ...uiProps\n}: TableProps<T>) {\n const id = useWidgetId()\n const data = useWidget(id, (s) => s.data as readonly T[] | undefined)\n const ui = useWidgetShallow<\n {\n sort: TableSortState | undefined\n page: number\n pageSize: number\n columnOrder: readonly string[] | undefined\n },\n TableWidgetState\n >(id, (s) => ({\n sort: s.sort,\n page: s.page ?? 0,\n pageSize: s.pageSize ?? initialPageSize,\n columnOrder: s.columnOrder,\n }))\n\n const orderedColumns = useMemo(() => {\n const reordered = resolveColumns(columns, ui.columnOrder)\n return visibleColumns == null\n ? reordered\n : reordered.slice(0, visibleColumns)\n }, [columns, ui.columnOrder, visibleColumns])\n\n // In remote mode the consumer already paginated / sorted server-side,\n // so pass `data` and `total` straight through. Local mode keeps the\n // bridge-driven sort + slice via `deriveVisibleRows`.\n const { rows, totalRows } = useMemo(() => {\n if (remote) {\n return {\n rows: data ?? [],\n totalRows: remoteTotal ?? 0,\n }\n }\n const { sorted, visible } = deriveVisibleRows(data ?? [], {\n sort: ui.sort,\n page: ui.page,\n pageSize: ui.pageSize,\n })\n return { rows: visible, totalRows: sorted.length }\n }, [remote, data, remoteTotal, ui.sort, ui.page, ui.pageSize])\n\n const handleSortChange = useCallback(\n (next: TableSortState) => {\n getWidgetStore(id).setState({\n sort: next,\n page: 0,\n } as Partial<TableWidgetState>)\n onSortChange?.(next)\n },\n [id, onSortChange],\n )\n\n const handlePageChange = useCallback(\n (page: number) => {\n getWidgetStore(id).setState({ page } as Partial<TableWidgetState>)\n onPageChange?.(page)\n },\n [id, onPageChange],\n )\n\n const handlePageSizeChange = useCallback(\n (pageSize: number) => {\n getWidgetStore(id).setState({\n pageSize,\n page: 0,\n } as Partial<TableWidgetState>)\n onPageSizeChange?.(pageSize)\n },\n [id, onPageSizeChange],\n )\n\n return (\n <TableUI\n {...uiProps}\n columns={orderedColumns}\n rows={rows}\n total={totalRows}\n page={ui.page}\n pageSize={ui.pageSize}\n sort={ui.sort}\n selection={selection}\n onSortChange={handleSortChange}\n onPageChange={handlePageChange}\n onPageSizeChange={handlePageSizeChange}\n onSelectionChange={onSelectionChange}\n onRowClick={onRowClick}\n onRowHover={onRowHover}\n />\n )\n}\n"],"names":["boldRange","fontWeight","color","DEFAULT_TABLE_LABELS","selectAll","selectRow","id","rowsPerPage","paginationOf","from","to","total","jsxs","Fragment","jsx","Box","firstPage","previousPage","nextPage","lastPage","DEFAULT_TABLE_PAGE_SIZE","DEFAULT_TABLE_PAGE_SIZE_OPTIONS","styles","container","width","overflowX","table","minWidth","headerCell","backgroundColor","row","border","rowClickable","cursor","pagination","borderTop","borderColor","paginationActions","display","alignItems","gap","ml","empty","textAlign","py","TableUI","t0","$","_c","columns","rows","page","pageSize","pageSizeOptions","t1","sort","selection","selectable","t2","onSortChange","onPageChange","onPageSizeChange","onSelectionChange","onRowClick","onRowHover","labels","emptyContent","size","undefined","t3","_labels","minPageSize","Math","min","showPagination","t4","makePaginationActions","PaginationActions","t5","t6","Set","selectionSet","t7","map","_temp","pageRowIds","t8","length","every","has","allOnPageSelected","t9","some","id_0","someOnPageSelected","t10","columnId","direction","nextDir","handleSort","t11","filter","id_1","includes","merged","id_2","add","handleSelectAllOnPage","t12","rowId","next","delete","handleSelectRow","t13","TableCell","Checkbox","t14","t15","column","isSorted","align","sortable","TableSortLabel","label","TableHead","MuiTableRow","t16","isSelected","e","stopPropagation","column_0","formatter","stringifyCell","t17","TableBody","t18","TableContainer","MuiTable","t19","TablePagination","_","next_0","e_0","next_1","parseInt","target","value","t20","count","r","String","Array","isArray","JSON","stringify","max","ceil","IconButton","FirstPageIcon","KeyboardArrowLeft","KeyboardArrowRight","LastPageIcon","compareValues","a","b","cmp","localeCompare","sortRows","paginateRows","slice","start","resolveColumns","columnOrder","byId","Map","c","ordered","seen","get","push","deriveVisibleRows","options","sorted","visible","tableDataToCsv","data","lines","csvEscape","stringifyHeader","join","cells","test","replace","Table","remoteTotal","uiProps","visibleColumns","initialPageSize","remote","useWidgetId","useWidget","s_0","s","ui","useWidgetShallow","reordered","orderedColumns","bb0","totalRows","getWidgetStore","setState","handleSortChange","handlePageChange","handlePageSizeChange"],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
const s = "image://data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOSIgaGVpZ2h0PSIzNiIgdmlld0JveD0iMCAwIDkgMzYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iLTAuNSIgd2lkdGg9IjgiIGhlaWdodD0iMTgiIHJ4PSI0IiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDI3KSIgZmlsbD0id2hpdGUiIHN0cm9rZT0iIzM1OEJFNyIvPgo8cmVjdCB3aWR0aD0iMyIgaGVpZ2h0PSIyIiByeD0iMSIgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMyAyMykiIGZpbGw9IiMzNThCRTciLz4KPHJlY3Qgd2lkdGg9IjMiIGhlaWdodD0iMiIgcng9IjEiIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDMgMTkpIiBmaWxsPSIjMzU4QkU3Ii8+CjxyZWN0IHdpZHRoPSIzIiBoZWlnaHQ9IjIiIHJ4PSIxIiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAzIDE1KSIgZmlsbD0iIzM1OEJFNyIvPgo8L3N2Zz4=";
|
|
2
|
+
function y(e, t = {}) {
|
|
3
|
+
const a = t.axes ?? ["x"], I = a.includes("x"), l = a.includes("y"), d = {
|
|
4
|
+
throttle: 0,
|
|
5
|
+
showDetail: !1,
|
|
6
|
+
brushSelect: !1,
|
|
7
|
+
moveHandleSize: 8,
|
|
8
|
+
handleSize: "100%",
|
|
9
|
+
...n(e)
|
|
10
|
+
};
|
|
11
|
+
return (o) => {
|
|
12
|
+
if (o == null || typeof o != "object") return o;
|
|
13
|
+
const r = o, i = [];
|
|
14
|
+
return I && i.push({
|
|
15
|
+
type: "inside",
|
|
16
|
+
xAxisIndex: [0],
|
|
17
|
+
throttle: 0
|
|
18
|
+
}), l && i.push({
|
|
19
|
+
type: "inside",
|
|
20
|
+
yAxisIndex: [0],
|
|
21
|
+
throttle: 0
|
|
22
|
+
}), I && i.push({
|
|
23
|
+
type: "slider",
|
|
24
|
+
xAxisIndex: [0],
|
|
25
|
+
height: 32,
|
|
26
|
+
bottom: 0,
|
|
27
|
+
handleIcon: s,
|
|
28
|
+
...d
|
|
29
|
+
}), l && i.push({
|
|
30
|
+
type: "slider",
|
|
31
|
+
yAxisIndex: [0],
|
|
32
|
+
width: 32,
|
|
33
|
+
right: 0,
|
|
34
|
+
...d
|
|
35
|
+
}), {
|
|
36
|
+
...r,
|
|
37
|
+
dataZoom: i
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
const g = (e) => e == null || typeof e != "object" ? e : {
|
|
42
|
+
...e,
|
|
43
|
+
dataZoom: [{
|
|
44
|
+
type: "inside"
|
|
45
|
+
}, {
|
|
46
|
+
type: "slider",
|
|
47
|
+
height: 32,
|
|
48
|
+
bottom: 0
|
|
49
|
+
}]
|
|
50
|
+
};
|
|
51
|
+
function n(e) {
|
|
52
|
+
const t = e.palette.secondary?.main ?? "#358BE7";
|
|
53
|
+
return {
|
|
54
|
+
fillerColor: "rgba(53, 139, 231, 0.25)",
|
|
55
|
+
borderColor: "rgba(53, 139, 231, 0.3)",
|
|
56
|
+
borderWidth: 0.5,
|
|
57
|
+
backgroundColor: "transparent",
|
|
58
|
+
borderRadius: 4,
|
|
59
|
+
dataBackground: {
|
|
60
|
+
lineStyle: {
|
|
61
|
+
opacity: 0
|
|
62
|
+
},
|
|
63
|
+
areaStyle: {
|
|
64
|
+
opacity: 1,
|
|
65
|
+
color: t
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
selectedDataBackground: {
|
|
69
|
+
lineStyle: {
|
|
70
|
+
opacity: 0
|
|
71
|
+
},
|
|
72
|
+
areaStyle: {
|
|
73
|
+
opacity: 1,
|
|
74
|
+
color: t
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
handleStyle: {
|
|
78
|
+
color: e.palette.common?.white ?? "#fff",
|
|
79
|
+
borderColor: "rgba(3, 111, 226, 0.08)",
|
|
80
|
+
borderWidth: 1,
|
|
81
|
+
shadowBlur: 3,
|
|
82
|
+
shadowColor: "rgba(0, 0, 0, 0.1)",
|
|
83
|
+
shadowOffsetX: 0,
|
|
84
|
+
shadowOffsetY: 1
|
|
85
|
+
},
|
|
86
|
+
textStyle: {
|
|
87
|
+
color: e.palette.black?.[60] ?? e.palette.text?.primary,
|
|
88
|
+
fontSize: parseInt(e.typography.overlineDelicate?.fontSize ?? "11"),
|
|
89
|
+
fontFamily: e.typography.overlineDelicate?.fontFamily ?? e.typography.caption?.fontFamily
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
const S = {
|
|
94
|
+
/** Slider height in px (matches `createAddZoom` output). */
|
|
95
|
+
sliderHeight: 32,
|
|
96
|
+
/** Vertical gap between chart grid and the slider. */
|
|
97
|
+
sliderGap: 8,
|
|
98
|
+
/** Slider `bottom` when a legend is shown — sits above the legend row. */
|
|
99
|
+
sliderBottomWithLegend: 28
|
|
100
|
+
};
|
|
101
|
+
export {
|
|
102
|
+
S as Z,
|
|
103
|
+
g as a,
|
|
104
|
+
y as c
|
|
105
|
+
};
|
|
106
|
+
//# sourceMappingURL=transforms-Cdx4fkU5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transforms-Cdx4fkU5.js","sources":["../src/widgets-v2/actions/zoom-toggle/transforms.ts"],"sourcesContent":["import type { Theme } from '@mui/material'\n\n/**\n * v1's slider handle — 9×36 SVG with a white pill body, secondary-colored\n * stroke, and three grip lines. Inlined as a data URL so the chart can\n * render it without a network fetch.\n */\nconst SLIDER_HANDLE_ICON =\n 'image://data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOSIgaGVpZ2h0PSIzNiIgdmlld0JveD0iMCAwIDkgMzYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iLTAuNSIgd2lkdGg9IjgiIGhlaWdodD0iMTgiIHJ4PSI0IiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDI3KSIgZmlsbD0id2hpdGUiIHN0cm9rZT0iIzM1OEJFNyIvPgo8cmVjdCB3aWR0aD0iMyIgaGVpZ2h0PSIyIiByeD0iMSIgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMyAyMykiIGZpbGw9IiMzNThCRTciLz4KPHJlY3Qgd2lkdGg9IjMiIGhlaWdodD0iMiIgcng9IjEiIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDMgMTkpIiBmaWxsPSIjMzU4QkU3Ii8+CjxyZWN0IHdpZHRoPSIzIiBoZWlnaHQ9IjIiIHJ4PSIxIiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAzIDE1KSIgZmlsbD0iIzM1OEJFNyIvPgo8L3N2Zz4='\n\nconst SLIDER_HEIGHT = 32\nconst SLIDER_BOTTOM = 0\n\n/** Which chart axis (or axes) zoom applies to. */\nexport type ZoomAxis = 'x' | 'y'\n\nexport interface CreateAddZoomOptions {\n /**\n * Axes to enable zoom on. Default `['x']` (matches bar / histogram /\n * timeseries — horizontal pan/zoom on the category axis). Pass\n * `['x', 'y']` for a scatterplot-style 2D zoom (mouse-wheel scales both\n * axes; a horizontal slider sits at the bottom for x-range and a\n * vertical slider sits on the right for y-range).\n */\n axes?: readonly ZoomAxis[]\n}\n\n/**\n * Theme-bound zoom config transform: adds one inside `dataZoom`\n * (mouse-wheel + drag) per axis plus a styled slider per axis with the\n * v1 chrome (blue-tinted filler, secondary-color data preview, white\n * pill handles, CARTO typography). The x-slider is horizontal at the\n * bottom; the y-slider is vertical on the right.\n *\n * Returned function has stable identity for a given theme + axes\n * combination; pair with `useMemo` at the call site.\n *\n * **No `start` / `end`** are emitted: ECharts defaults to `0–100` on the\n * first `setOption` and then keeps the runtime slider state across\n * subsequent merges (no `replaceMerge` for `dataZoom`). Re-running the\n * transform on data/formatter/RelativeData updates therefore preserves the\n * user's dragged range instead of snapping it back.\n */\nexport function createAddZoom(\n theme: Theme,\n options: CreateAddZoomOptions = {},\n): (option: unknown) => unknown {\n const axes = options.axes ?? ['x']\n const includeX = axes.includes('x')\n const includeY = axes.includes('y')\n const sliderStyles = getZoomSliderStyles(theme)\n const baseSliderProps = {\n throttle: 0,\n showDetail: false,\n brushSelect: false,\n moveHandleSize: 8,\n handleSize: '100%',\n ...sliderStyles,\n }\n return (option: unknown): unknown => {\n if (option == null || typeof option !== 'object') return option\n const cfg = option as Record<string, unknown>\n const dataZoom: object[] = []\n if (includeX) {\n dataZoom.push({ type: 'inside', xAxisIndex: [0], throttle: 0 })\n }\n if (includeY) {\n dataZoom.push({ type: 'inside', yAxisIndex: [0], throttle: 0 })\n }\n if (includeX) {\n dataZoom.push({\n type: 'slider',\n xAxisIndex: [0],\n height: SLIDER_HEIGHT,\n bottom: SLIDER_BOTTOM,\n handleIcon: SLIDER_HANDLE_ICON,\n ...baseSliderProps,\n })\n }\n if (includeY) {\n // Vertical slider — `width` is its thickness, `right` pins it to\n // the right edge. We omit `handleIcon` so ECharts renders its\n // default vertical handle (the inline SVG is shaped for a\n // horizontal slider and looks wrong when rotated).\n dataZoom.push({\n type: 'slider',\n yAxisIndex: [0],\n width: SLIDER_HEIGHT,\n right: SLIDER_BOTTOM,\n ...baseSliderProps,\n })\n }\n return { ...cfg, dataZoom }\n }\n}\n\n/**\n * Back-compat untyped transform — produces the bare `dataZoom` config from\n * the original v2 implementation. Use {@link createAddZoom} when a theme is\n * available so the slider matches the v1 styling.\n *\n * `start` / `end` are intentionally omitted so ECharts preserves the user's\n * runtime range across subsequent `setOption` merges (see {@link createAddZoom}).\n */\nexport const addZoom = (option: unknown): unknown => {\n if (option == null || typeof option !== 'object') return option\n const cfg = option as Record<string, unknown>\n return {\n ...cfg,\n dataZoom: [\n { type: 'inside' },\n {\n type: 'slider',\n height: SLIDER_HEIGHT,\n bottom: SLIDER_BOTTOM,\n },\n ],\n }\n}\n\n/** Style block matching v1's `getEChartZoomSliderStyles`. */\nfunction getZoomSliderStyles(theme: Theme) {\n const secondary = theme.palette.secondary?.main ?? '#358BE7'\n return {\n fillerColor: 'rgba(53, 139, 231, 0.25)',\n borderColor: 'rgba(53, 139, 231, 0.3)',\n borderWidth: 0.5,\n backgroundColor: 'transparent',\n borderRadius: 4,\n dataBackground: {\n lineStyle: { opacity: 0 },\n areaStyle: { opacity: 1, color: secondary },\n },\n selectedDataBackground: {\n lineStyle: { opacity: 0 },\n areaStyle: { opacity: 1, color: secondary },\n },\n handleStyle: {\n color: theme.palette.common?.white ?? '#fff',\n borderColor: 'rgba(3, 111, 226, 0.08)',\n borderWidth: 1,\n shadowBlur: 3,\n shadowColor: 'rgba(0, 0, 0, 0.1)',\n shadowOffsetX: 0,\n shadowOffsetY: 1,\n },\n textStyle: {\n color: theme.palette.black?.[60] ?? theme.palette.text?.primary,\n fontSize: parseInt(\n (theme.typography.overlineDelicate?.fontSize as string | undefined) ??\n '11',\n ),\n fontFamily:\n theme.typography.overlineDelicate?.fontFamily ??\n theme.typography.caption?.fontFamily,\n },\n }\n}\n\n/**\n * Visual layout constants used by the data-fusion mergers (bar, histogram,\n * timeseries) when laying out the slider against the legend / grid.\n */\nexport const ZOOM_LAYOUT = {\n /** Slider height in px (matches `createAddZoom` output). */\n sliderHeight: SLIDER_HEIGHT,\n /** Vertical gap between chart grid and the slider. */\n sliderGap: 8,\n /** Slider `bottom` when a legend is shown — sits above the legend row. */\n sliderBottomWithLegend: 28,\n} as const\n"],"names":["SLIDER_HANDLE_ICON","createAddZoom","theme","options","axes","includeX","includes","includeY","baseSliderProps","throttle","showDetail","brushSelect","moveHandleSize","handleSize","getZoomSliderStyles","sliderStyles","option","cfg","dataZoom","push","type","xAxisIndex","yAxisIndex","height","SLIDER_HEIGHT","bottom","SLIDER_BOTTOM","handleIcon","width","right","addZoom","secondary","palette","main","fillerColor","borderColor","borderWidth","backgroundColor","borderRadius","dataBackground","lineStyle","opacity","areaStyle","color","selectedDataBackground","handleStyle","common","white","shadowBlur","shadowColor","shadowOffsetX","shadowOffsetY","textStyle","black","text","primary","fontSize","parseInt","typography","overlineDelicate","fontFamily","caption","ZOOM_LAYOUT","sliderHeight","sliderGap","sliderBottomWithLegend"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { ComponentType } from 'react';
|
|
2
|
+
import { SvgIconProps } from '@mui/material';
|
|
3
|
+
import { BrushToggleLabels } from './labels';
|
|
4
|
+
export interface BrushToggleProps {
|
|
5
|
+
initialEnabled?: boolean;
|
|
6
|
+
/**
|
|
7
|
+
* ECharts brush type. `'lineX'` (default) selects a range on the
|
|
8
|
+
* x-axis — appropriate for bar / histogram / timeseries. `'rect'`
|
|
9
|
+
* selects a 2-D rectangle — use for scatterplot. Other ECharts
|
|
10
|
+
* brush types (`'lineY'`, `'polygon'`) are also accepted.
|
|
11
|
+
*/
|
|
12
|
+
brushType?: 'lineX' | 'lineY' | 'rect' | 'polygon';
|
|
13
|
+
/**
|
|
14
|
+
* `'multiple'` (default) lets the user draw additional brushes on
|
|
15
|
+
* top of existing ones. `'single'` replaces the previous brush on
|
|
16
|
+
* each new draw.
|
|
17
|
+
*/
|
|
18
|
+
brushMode?: 'multiple' | 'single';
|
|
19
|
+
/**
|
|
20
|
+
* Optional view of the consumer-owned selection. When provided and
|
|
21
|
+
* the array is empty (`[]`), any brush rectangles currently drawn on
|
|
22
|
+
* the chart are wiped — keeps the UI in sync when the parent clears
|
|
23
|
+
* the selection externally (e.g. via `Widget.SelectionSummary`'s
|
|
24
|
+
* `onClear`). Pass the same array that drives `useChartSelection` /
|
|
25
|
+
* the option factory's `selection` input.
|
|
26
|
+
*
|
|
27
|
+
* Leave `undefined` to opt out — the sync effect becomes a no-op.
|
|
28
|
+
*/
|
|
29
|
+
selection?: readonly unknown[] | null;
|
|
30
|
+
labels?: Partial<BrushToggleLabels>;
|
|
31
|
+
icon?: ComponentType<SvgIconProps>;
|
|
32
|
+
iconProps?: SvgIconProps;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Toggle ECharts' brush selection mode. Two-part wiring:
|
|
36
|
+
*
|
|
37
|
+
* 1. The config transform (`addBrush`) installs the `brush`
|
|
38
|
+
* component on the option so brushed items get the
|
|
39
|
+
* `outOfBrush` dim treatment.
|
|
40
|
+
* 2. ECharts only enters "brush cursor" mode when something
|
|
41
|
+
* dispatches `takeGlobalCursor({ key: 'brush', ... })`. This
|
|
42
|
+
* component drives that dispatch via {@link useEchartInstance},
|
|
43
|
+
* reacting when the chart instance becomes available (the
|
|
44
|
+
* `BrushToggle` mounts before `Widget.Echart` in tree order, so
|
|
45
|
+
* on first mount the chart isn't ready yet).
|
|
46
|
+
*
|
|
47
|
+
* 3. ECharts clears the global cursor on every `setOption`, so we
|
|
48
|
+
* re-dispatch on each `'finished'` event — required for
|
|
49
|
+
* `brushMode: 'multiple'` to keep working across selection-driven
|
|
50
|
+
* re-renders, RelativeData toggles, etc.
|
|
51
|
+
*
|
|
52
|
+
* Selection events (`brushSelected` / `brushEnd`) flow through the
|
|
53
|
+
* existing `useChartSelection` wiring at the consumer level — no extra
|
|
54
|
+
* plumbing here.
|
|
55
|
+
*/
|
|
56
|
+
export declare function BrushToggle({ initialEnabled, brushType, brushMode, selection, labels, icon: Icon, iconProps, }: BrushToggleProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Brush config transform: enables ECharts' brush component on the option
|
|
3
|
+
* object. Module-level constant — identity stable across renders.
|
|
4
|
+
*
|
|
5
|
+
* Pairs with `replaceMergeKeys: ['brush']` so the pipeline replaces (not
|
|
6
|
+
* merges) the brush config on every config-pipeline run. v1 needed a
|
|
7
|
+
* mousemove re-dispatch hack to keep the brush state across data updates;
|
|
8
|
+
* v2 keeps brush state continuous via `notMerge: false` + dynamic
|
|
9
|
+
* replaceMerge in the EchartUI layer (D6) — no hack required.
|
|
10
|
+
*/
|
|
11
|
+
export declare const addBrush: (option: unknown) => unknown;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ComponentType, ReactNode } from 'react';
|
|
2
|
+
import { SvgIconProps } from '@mui/material';
|
|
3
|
+
import { ChangeColumnLabels } from './labels';
|
|
4
|
+
export interface ChangeColumnItem {
|
|
5
|
+
id: string;
|
|
6
|
+
label: ReactNode;
|
|
7
|
+
}
|
|
8
|
+
export interface ChangeColumnProps {
|
|
9
|
+
/**
|
|
10
|
+
* Master list of columns (id + label) in their default order. The current
|
|
11
|
+
* effective order is derived by combining this list with the widget's
|
|
12
|
+
* `columnOrder` extension state.
|
|
13
|
+
*/
|
|
14
|
+
columns: readonly ChangeColumnItem[];
|
|
15
|
+
labels?: Partial<ChangeColumnLabels>;
|
|
16
|
+
icon?: ComponentType<SvgIconProps>;
|
|
17
|
+
iconProps?: SvgIconProps;
|
|
18
|
+
dragHandleIcon?: ComponentType<SvgIconProps>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Action that lets users reorder columns via drag-and-drop. The new order is
|
|
22
|
+
* persisted on the widget store as `columnOrder` (an array of ids) on the
|
|
23
|
+
* {@link ChangeColumnWidgetState} extension. `<Table>` (and other column-aware
|
|
24
|
+
* bridges) merge that order with their own `columns` prop via
|
|
25
|
+
* `resolveColumns()` from the table primitives.
|
|
26
|
+
*
|
|
27
|
+
* Returns `null` when there are fewer than two columns to reorder.
|
|
28
|
+
*/
|
|
29
|
+
export declare function ChangeColumn({ columns, labels, icon: Icon, iconProps, dragHandleIcon, }: ChangeColumnProps): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ComponentType, ReactNode } from 'react';
|
|
2
|
+
import { SvgIconProps } from '@mui/material';
|
|
3
|
+
export interface SortableColumnItemProps {
|
|
4
|
+
id: string;
|
|
5
|
+
label: ReactNode;
|
|
6
|
+
dragHandleIcon?: ComponentType<SvgIconProps>;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Draggable menu item used inside ChangeColumn's `<DndContext>`. Wraps a
|
|
10
|
+
* MUI `<MenuItem>` so it inherits keyboard / theming behavior, and exposes
|
|
11
|
+
* the dnd-kit listeners on the whole row so the user can grab anywhere on
|
|
12
|
+
* the row to reorder.
|
|
13
|
+
*/
|
|
14
|
+
export declare function SortableColumnItem({ id, label, dragHandleIcon: HandleIcon, }: SortableColumnItemProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Theme } from '@mui/material';
|
|
2
|
+
export declare const styles: {
|
|
3
|
+
toggle: {
|
|
4
|
+
p: number;
|
|
5
|
+
'& .MuiSvgIcon-root': {
|
|
6
|
+
fontSize: number;
|
|
7
|
+
};
|
|
8
|
+
};
|
|
9
|
+
toggleActive: {
|
|
10
|
+
background: (theme: Theme) => string;
|
|
11
|
+
};
|
|
12
|
+
menuPaper: {
|
|
13
|
+
overflow: "hidden";
|
|
14
|
+
minWidth: number;
|
|
15
|
+
};
|
|
16
|
+
item: {
|
|
17
|
+
cursor: "grab";
|
|
18
|
+
'&:focus-visible': {
|
|
19
|
+
outline: string;
|
|
20
|
+
outlineColor: "primary.main";
|
|
21
|
+
outlineOffset: number;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
itemDragging: {
|
|
25
|
+
opacity: number;
|
|
26
|
+
cursor: "grabbing";
|
|
27
|
+
};
|
|
28
|
+
dragHandle: {
|
|
29
|
+
color: "text.secondary";
|
|
30
|
+
mr: number;
|
|
31
|
+
fontSize: number;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { WidgetState } from '../../stores';
|
|
2
|
+
/**
|
|
3
|
+
* State extension owned by the ChangeColumn action. Stored on the per-widget
|
|
4
|
+
* Zustand store; read by `<Table>` (and any other column-aware bridge) to
|
|
5
|
+
* resolve the effective column order.
|
|
6
|
+
*/
|
|
7
|
+
export interface ChangeColumnWidgetState extends WidgetState {
|
|
8
|
+
/** Ordered list of column ids. Empty / unset means "use props order". */
|
|
9
|
+
columnOrder?: readonly string[];
|
|
10
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ComponentType } from 'react';
|
|
2
|
+
import { SvgIconProps } from '@mui/material';
|
|
3
|
+
import { DownloadItem } from './types';
|
|
4
|
+
import { DownloadLabels } from './labels';
|
|
5
|
+
export interface DownloadProps {
|
|
6
|
+
items: readonly DownloadItem[];
|
|
7
|
+
labels?: Partial<DownloadLabels>;
|
|
8
|
+
icon?: ComponentType<SvgIconProps>;
|
|
9
|
+
iconProps?: SvgIconProps;
|
|
10
|
+
/**
|
|
11
|
+
* Fires when an item's `resolve()` rejects (or any step in the click-through
|
|
12
|
+
* path throws). The error is normalised to a real `Error` first. Surface
|
|
13
|
+
* to your telemetry / toast layer here; the trigger already shows a visual
|
|
14
|
+
* error indicator independently.
|
|
15
|
+
*/
|
|
16
|
+
onError?: (err: Error) => void;
|
|
17
|
+
}
|
|
18
|
+
export declare function Download({ items, labels, icon: Icon, iconProps, onError, }: DownloadProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure download helpers — no React, no DOM lifecycle outside the link click.
|
|
3
|
+
* Component layer in {@link ./download.tsx} orchestrates these.
|
|
4
|
+
*/
|
|
5
|
+
export interface DownloadHandle {
|
|
6
|
+
url: string;
|
|
7
|
+
revoke: () => void;
|
|
8
|
+
}
|
|
9
|
+
export declare function toCsvString(rows: readonly (readonly unknown[])[]): string;
|
|
10
|
+
export declare function downloadToCSV(rows: readonly (readonly unknown[])[]): DownloadHandle;
|
|
11
|
+
export declare function sanitizeFilename(name: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* Triggers a browser download for the given URL by synthesizing an anchor,
|
|
14
|
+
* clicking it, and removing it. Pure DOM — no React. The filename is run
|
|
15
|
+
* through {@link sanitizeFilename} before being assigned to `a.download`.
|
|
16
|
+
*/
|
|
17
|
+
export declare function triggerLinkDownload(args: {
|
|
18
|
+
url: string;
|
|
19
|
+
filename: string;
|
|
20
|
+
}): void;
|
|
21
|
+
export interface DownloadDOMToPNGOptions {
|
|
22
|
+
element: HTMLElement;
|
|
23
|
+
/** html2canvas `scale`. Default 2 — crisp on hi-DPI displays. */
|
|
24
|
+
pixelRatio?: number;
|
|
25
|
+
/**
|
|
26
|
+
* html2canvas `backgroundColor`. Default `null` (transparent) so the PNG
|
|
27
|
+
* inherits whatever surface it lands on when the user pastes it.
|
|
28
|
+
*/
|
|
29
|
+
backgroundColor?: string | null;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Rasterise an HTMLElement to PNG via `html2canvas` and wrap the result in
|
|
33
|
+
* a `DownloadHandle`. The caller is responsible for calling `handle.revoke`
|
|
34
|
+
* after the link click is dispatched. Used by per-widget download configs
|
|
35
|
+
* to power the PNG menu item.
|
|
36
|
+
*/
|
|
37
|
+
export declare function downloadDOMToPNG(opts: DownloadDOMToPNGOptions): Promise<DownloadHandle>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { SvgIconProps } from '@mui/material';
|
|
2
|
+
/**
|
|
3
|
+
* Generic "image" glyph used for the PNG download item. Wraps MUI's
|
|
4
|
+
* `ImageOutlined` so callers can swap it via the per-widget download
|
|
5
|
+
* config's `icon` override without pulling MUI directly.
|
|
6
|
+
*/
|
|
7
|
+
export declare function PNGIcon(props: SvgIconProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
/**
|
|
9
|
+
* "CSV" rectangle with the letters spelled inside — matches v1 visual and is
|
|
10
|
+
* easier to recognise in a download menu than a generic table glyph.
|
|
11
|
+
*/
|
|
12
|
+
export declare function CSVIcon(props: SvgIconProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { Download, type DownloadProps } from './download';
|
|
2
|
+
export { downloadToCSV, downloadDOMToPNG, toCsvString, triggerLinkDownload, type DownloadHandle, type DownloadDOMToPNGOptions, } from './exports';
|
|
3
|
+
export { CSVIcon, PNGIcon } from './icons';
|
|
4
|
+
export { buildPngDownloadItem, type BuildPngDownloadItemArgs } from './png-item';
|
|
5
|
+
export type { DownloadItem } from './types';
|
|
6
|
+
export { DEFAULT_DOWNLOAD_LABELS, type DownloadLabels } from './labels';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface DownloadLabels {
|
|
2
|
+
trigger: string;
|
|
3
|
+
/** Tooltip / aria-label shown on the trigger while a download is in flight. */
|
|
4
|
+
loading: string;
|
|
5
|
+
/**
|
|
6
|
+
* Tooltip / aria-label shown on the trigger after a download failed. Cleared
|
|
7
|
+
* the next time the menu opens.
|
|
8
|
+
*/
|
|
9
|
+
error: string;
|
|
10
|
+
}
|
|
11
|
+
export declare const DEFAULT_DOWNLOAD_LABELS: DownloadLabels;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { DownloadItem } from './types';
|
|
2
|
+
export interface BuildPngDownloadItemArgs {
|
|
3
|
+
/** Base filename (without extension). The item appends `.png`. */
|
|
4
|
+
filename: string;
|
|
5
|
+
/**
|
|
6
|
+
* Reads the capture element to rasterise. Called at click time so the
|
|
7
|
+
* download config doesn't capture a stale reference. Wire it to
|
|
8
|
+
* `() => getCaptureEl(id)` from `widgets-v2/stores`.
|
|
9
|
+
*/
|
|
10
|
+
getCaptureEl: () => HTMLElement | null;
|
|
11
|
+
/** html2canvas `scale`. Default 2. */
|
|
12
|
+
pixelRatio?: number;
|
|
13
|
+
/** html2canvas `backgroundColor`. Default transparent (`null`). */
|
|
14
|
+
backgroundColor?: string | null;
|
|
15
|
+
/** Override the menu label. Default `'PNG'`. */
|
|
16
|
+
label?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Builds the standard PNG `DownloadItem` used by every per-widget download
|
|
20
|
+
* config. Centralised so the menu label, icon, error message, and filename
|
|
21
|
+
* suffix stay consistent across widgets without each `create*DownloadConfig`
|
|
22
|
+
* re-deriving the same shape.
|
|
23
|
+
*/
|
|
24
|
+
export declare function buildPngDownloadItem(args: BuildPngDownloadItemArgs): DownloadItem;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const styles: {};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { ReactElement } from 'react';
|
|
2
|
+
export interface DownloadItem {
|
|
3
|
+
/** Unique key (also used as menu label key). */
|
|
4
|
+
id: string;
|
|
5
|
+
/** Display label in the menu. */
|
|
6
|
+
label: string;
|
|
7
|
+
/**
|
|
8
|
+
* Optional leading icon shown next to the label. Pass a rendered element
|
|
9
|
+
* (e.g. `<DownloadIcon fontSize='small' />`) so consumers can fully
|
|
10
|
+
* control sizing / colour. Rendered inside an MUI `<ListItemIcon>`.
|
|
11
|
+
*/
|
|
12
|
+
icon?: ReactElement;
|
|
13
|
+
/**
|
|
14
|
+
* When `true`, the menu item is rendered but non-clickable (greyed out).
|
|
15
|
+
* Useful for items whose underlying export is unavailable in the current
|
|
16
|
+
* widget state (no rows, missing permission, etc.).
|
|
17
|
+
*/
|
|
18
|
+
disabled?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Override for the resolved filename. When set, `resolve()`'s `filename`
|
|
21
|
+
* is ignored and this value is used instead — handy when the consumer
|
|
22
|
+
* wants to template the filename with widget metadata without having to
|
|
23
|
+
* close over it inside `resolve()`.
|
|
24
|
+
*/
|
|
25
|
+
filename?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Resolves to a Blob URL the trigger will click. Optional `revoke` is
|
|
28
|
+
* called after the click is dispatched.
|
|
29
|
+
*/
|
|
30
|
+
resolve: () => Promise<{
|
|
31
|
+
url: string;
|
|
32
|
+
filename: string;
|
|
33
|
+
revoke?: () => void;
|
|
34
|
+
}>;
|
|
35
|
+
}
|